diff options
Diffstat (limited to 'node_modules/json5')
| -rw-r--r-- | node_modules/json5/CHANGELOG.md | 362 | ||||
| -rw-r--r-- | node_modules/json5/LICENSE.md | 23 | ||||
| -rw-r--r-- | node_modules/json5/README.md | 234 | ||||
| -rw-r--r-- | node_modules/json5/dist/index.js | 1710 | ||||
| -rw-r--r-- | node_modules/json5/dist/index.min.js | 1 | ||||
| -rw-r--r-- | node_modules/json5/dist/index.min.mjs | 1 | ||||
| -rw-r--r-- | node_modules/json5/dist/index.mjs | 1399 | ||||
| -rwxr-xr-x | node_modules/json5/lib/cli.js | 112 | ||||
| -rw-r--r-- | node_modules/json5/lib/index.d.ts | 4 | ||||
| -rw-r--r-- | node_modules/json5/lib/index.js | 9 | ||||
| -rw-r--r-- | node_modules/json5/lib/parse.d.ts | 15 | ||||
| -rw-r--r-- | node_modules/json5/lib/parse.js | 1087 | ||||
| -rw-r--r-- | node_modules/json5/lib/register.js | 13 | ||||
| -rw-r--r-- | node_modules/json5/lib/require.js | 4 | ||||
| -rw-r--r-- | node_modules/json5/lib/stringify.d.ts | 89 | ||||
| -rw-r--r-- | node_modules/json5/lib/stringify.js | 261 | ||||
| -rw-r--r-- | node_modules/json5/lib/unicode.d.ts | 3 | ||||
| -rw-r--r-- | node_modules/json5/lib/unicode.js | 4 | ||||
| -rw-r--r-- | node_modules/json5/lib/util.d.ts | 5 | ||||
| -rw-r--r-- | node_modules/json5/lib/util.js | 35 | ||||
| -rw-r--r-- | node_modules/json5/package.json | 72 | 
21 files changed, 5443 insertions, 0 deletions
diff --git a/node_modules/json5/CHANGELOG.md b/node_modules/json5/CHANGELOG.md new file mode 100644 index 0000000..5b9aa0d --- /dev/null +++ b/node_modules/json5/CHANGELOG.md @@ -0,0 +1,362 @@ +### Unreleased [[code][c-unreleased], [diff][d-unreleased]] + +[c-unreleased]: https://github.com/json5/json5/tree/master +[d-unreleased]: https://github.com/json5/json5/compare/v2.2.0...HEAD + +### v2.2.0 [[code][c2.2.0], [diff][d2.2.0]] + +[c2.2.0]: https://github.com/json5/json5/tree/v2.2.0 +[d2.2.0]: https://github.com/json5/json5/compare/v2.1.3...v2.2.0 + +- New: Accurate and documented TypeScript declarations are now included. There +  is no need to install `@types/json5`. ([#236], [#244]) + +### v2.1.3 [[code][c2.1.3], [diff][d2.1.3]] + +[c2.1.3]: https://github.com/json5/json5/tree/v2.1.3 +[d2.1.3]: https://github.com/json5/json5/compare/v2.1.2...v2.1.3 + +- Fix: An out of memory bug when parsing numbers has been fixed. ([#228], +  [#229]) + +### v2.1.2 [[code][c2.1.2], [diff][d2.1.2]] + +[c2.1.2]: https://github.com/json5/json5/tree/v2.1.2 +[d2.1.2]: https://github.com/json5/json5/compare/v2.1.1...v2.1.2 + +- Fix: Bump `minimist` to `v1.2.5`. ([#222]) + +### 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 +[#222]: https://github.com/json5/json5/issues/222 +[#228]: https://github.com/json5/json5/issues/228 +[#229]: https://github.com/json5/json5/issues/229 +[#236]: https://github.com/json5/json5/issues/236 +[#244]: https://github.com/json5/json5/issues/244 diff --git a/node_modules/json5/LICENSE.md b/node_modules/json5/LICENSE.md new file mode 100644 index 0000000..2171aca --- /dev/null +++ b/node_modules/json5/LICENSE.md @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2012-2018 Aseem Kishore, and [others]. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[others]: https://github.com/json5/json5/contributors diff --git a/node_modules/json5/README.md b/node_modules/json5/README.md new file mode 100644 index 0000000..6049d02 --- /dev/null +++ b/node_modules/json5/README.md @@ -0,0 +1,234 @@ +# JSON5 – JSON for Humans + +[][Build Status] +[][Coverage +Status] + +The JSON5 Data Interchange Format (JSON5) is a superset of [JSON] that aims to +alleviate some of the limitations of JSON by expanding its syntax to include +some productions from [ECMAScript 5.1]. + +This JavaScript library is the official reference implementation for JSON5 +parsing and serialization libraries. + +[Build Status]: https://travis-ci.com/json5/json5 + +[Coverage Status]: https://coveralls.io/github/json5/json5 + +[JSON]: https://tools.ietf.org/html/rfc7159 + +[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/ + +## Summary of Features +The following ECMAScript 5.1 features, which are not supported in JSON, have +been extended to JSON5. + +### Objects +- Object keys may be an ECMAScript 5.1 _[IdentifierName]_. +- Objects may have a single trailing comma. + +### Arrays +- Arrays may have a single trailing comma. + +### Strings +- Strings may be single quoted. +- Strings may span multiple lines by escaping new line characters. +- Strings may include character escapes. + +### Numbers +- Numbers may be hexadecimal. +- Numbers may have a leading or trailing decimal point. +- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN. +- Numbers may begin with an explicit plus sign. + +### Comments +- Single and multi-line comments are allowed. + +### White Space +- Additional white space characters are allowed. + +[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6 + +[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933 + +## Short Example +```js +{ +  // comments +  unquoted: 'and you can quote me on that', +  singleQuotes: 'I can use "double quotes" here', +  lineBreaks: "Look, Mom! \ +No \\n's!", +  hexadecimal: 0xdecaf, +  leadingDecimalPoint: .8675309, andTrailing: 8675309., +  positiveSign: +1, +  trailingComma: 'in objects', andIn: ['arrays',], +  "backwardsCompatible": "with JSON", +} +``` + +## Specification +For a detailed explanation of the JSON5 format, please read the [official +specification](https://json5.github.io/json5-spec/). + +## Installation +### Node.js +```sh +npm install json5 +``` + +```js +const JSON5 = require('json5') +``` + +### Browsers +```html +<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script> +``` + +This will create a global `JSON5` variable. + +## API +The JSON5 API is compatible with the [JSON API]. + +[JSON API]: +https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON + +### JSON5.parse() +Parses a JSON5 string, constructing the JavaScript value or object described by +the string. An optional reviver function can be provided to perform a +transformation on the resulting object before it is returned. + +#### Syntax +    JSON5.parse(text[, reviver]) + +#### Parameters +- `text`: The string to parse as JSON5. +- `reviver`: If a function, this prescribes how the value originally produced by +  parsing is transformed, before being returned. + +#### Return value +The object corresponding to the given JSON5 text. + +### JSON5.stringify() +Converts a JavaScript value to a JSON5 string, optionally replacing values if a +replacer function is specified, or optionally including only the specified +properties if a replacer array is specified. + +#### Syntax +    JSON5.stringify(value[, replacer[, space]]) +    JSON5.stringify(value[, options]) + +#### Parameters +- `value`: The value to convert to a JSON5 string. +- `replacer`: A function that alters the behavior of the stringification +  process, or an array of String and Number objects that serve as a whitelist +  for selecting/filtering the properties of the value object to be included in +  the JSON5 string. If this value is null or not provided, all properties of the +  object are included in the resulting JSON5 string. +- `space`: A String or Number object that's used to insert white space into the +  output JSON5 string for readability purposes. If this is a Number, it +  indicates the number of space characters to use as white space; this number is +  capped at 10 (if it is greater, the value is just 10). Values less than 1 +  indicate that no space should be used. If this is a String, the string (or the +  first 10 characters of the string, if it's longer than that) is used as white +  space. If this parameter is not provided (or is null), no white space is used. +  If white space is used, trailing commas will be used in objects and arrays. +- `options`: An object with the following properties: +  - `replacer`: Same as the `replacer` parameter. +  - `space`: Same as the `space` parameter. +  - `quote`: A String representing the quote character to use when serializing +    strings. + +#### Return value +A JSON5 string representing the value. + +### Node.js `require()` JSON5 files +When using Node.js, you can `require()` JSON5 files by adding the following +statement. + +```js +require('json5/lib/register') +``` + +Then you can load a JSON5 file with a Node.js `require()` statement. For +example: + +```js +const config = require('./config.json5') +``` + +## CLI +Since JSON is more widely used than JSON5, this package includes a CLI for +converting JSON5 to JSON and for validating the syntax of JSON5 documents. + +### Installation +```sh +npm install --global json5 +``` + +### Usage +```sh +json5 [options] <file> +``` + +If `<file>` is not provided, then STDIN is used. + +#### Options: +- `-s`, `--space`: The number of spaces to indent or `t` for tabs +- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT +- `-v`, `--validate`: Validate JSON5 but do not output JSON +- `-V`, `--version`: Output the version number +- `-h`, `--help`: Output usage information + +## Contributing +### Development +```sh +git clone https://github.com/json5/json5 +cd json5 +npm install +``` + +When contributing code, please write relevant tests and run `npm test` and `npm +run lint` before submitting pull requests. Please use an editor that supports +[EditorConfig](http://editorconfig.org/). + +### Issues +To report bugs or request features regarding the JSON5 data format, please +submit an issue to the [official specification +repository](https://github.com/json5/json5-spec). + +To report bugs or request features regarding the JavaScript implementation of +JSON5, please submit an issue to this repository. + +## License +MIT. See [LICENSE.md](./LICENSE.md) for details. + +## Credits +[Assem Kishore](https://github.com/aseemk) founded this project. + +[Michael Bolin](http://bolinfest.com/) independently arrived at and published +some of these same ideas with awesome explanations and detail. Recommended +reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html) + +[Douglas Crockford](http://www.crockford.com/) of course designed and built +JSON, but his state machine diagrams on the [JSON website](http://json.org/), as +cheesy as it may sound, gave us motivation and confidence that building a new +parser to implement these ideas was within reach! The original +implementation of JSON5 was also modeled directly off of Doug’s open-source +[json_parse.js] parser. We’re grateful for that clean and well-documented +code. + +[json_parse.js]: +https://github.com/douglascrockford/JSON-js/blob/03157639c7a7cddd2e9f032537f346f1a87c0f6d/json_parse.js + +[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific +supporter, contributing multiple patches and ideas. + +[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original +`stringify` method. + +[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely +with ES5, wrote the official JSON5 specification, completely rewrote the +codebase from the ground up, and is actively maintaining this project. diff --git a/node_modules/json5/dist/index.js b/node_modules/json5/dist/index.js new file mode 100644 index 0000000..9f98eb3 --- /dev/null +++ b/node_modules/json5/dist/index.js @@ -0,0 +1,1710 @@ +(function (global, factory) { +	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : +	typeof define === 'function' && define.amd ? define(factory) : +	(global.JSON5 = factory()); +}(this, (function () { 'use strict'; + +	function createCommonjsModule(fn, module) { +		return module = { exports: {} }, fn(module, module.exports), module.exports; +	} + +	var _global = createCommonjsModule(function (module) { +	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +	var global = module.exports = typeof window != 'undefined' && window.Math == Math +	  ? window : typeof self != 'undefined' && self.Math == Math ? self +	  // eslint-disable-next-line no-new-func +	  : Function('return this')(); +	if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef +	}); + +	var _core = createCommonjsModule(function (module) { +	var core = module.exports = { version: '2.6.5' }; +	if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef +	}); +	var _core_1 = _core.version; + +	var _isObject = function (it) { +	  return typeof it === 'object' ? it !== null : typeof it === 'function'; +	}; + +	var _anObject = function (it) { +	  if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); } +	  return it; +	}; + +	var _fails = function (exec) { +	  try { +	    return !!exec(); +	  } catch (e) { +	    return true; +	  } +	}; + +	// Thank's IE8 for his funny defineProperty +	var _descriptors = !_fails(function () { +	  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +	}); + +	var document = _global.document; +	// typeof document.createElement is 'object' in old IE +	var is = _isObject(document) && _isObject(document.createElement); +	var _domCreate = function (it) { +	  return is ? document.createElement(it) : {}; +	}; + +	var _ie8DomDefine = !_descriptors && !_fails(function () { +	  return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; +	}); + +	// 7.1.1 ToPrimitive(input [, PreferredType]) + +	// instead of the ES6 spec version, we didn't implement @@toPrimitive case +	// and the second argument - flag - preferred type is a string +	var _toPrimitive = function (it, S) { +	  if (!_isObject(it)) { return it; } +	  var fn, val; +	  if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } +	  if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; } +	  if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; } +	  throw TypeError("Can't convert object to primitive value"); +	}; + +	var dP = Object.defineProperty; + +	var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { +	  _anObject(O); +	  P = _toPrimitive(P, true); +	  _anObject(Attributes); +	  if (_ie8DomDefine) { try { +	    return dP(O, P, Attributes); +	  } catch (e) { /* empty */ } } +	  if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); } +	  if ('value' in Attributes) { O[P] = Attributes.value; } +	  return O; +	}; + +	var _objectDp = { +		f: f +	}; + +	var _propertyDesc = function (bitmap, value) { +	  return { +	    enumerable: !(bitmap & 1), +	    configurable: !(bitmap & 2), +	    writable: !(bitmap & 4), +	    value: value +	  }; +	}; + +	var _hide = _descriptors ? function (object, key, value) { +	  return _objectDp.f(object, key, _propertyDesc(1, value)); +	} : function (object, key, value) { +	  object[key] = value; +	  return object; +	}; + +	var hasOwnProperty = {}.hasOwnProperty; +	var _has = function (it, key) { +	  return hasOwnProperty.call(it, key); +	}; + +	var id = 0; +	var px = Math.random(); +	var _uid = function (key) { +	  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +	}; + +	var _library = false; + +	var _shared = createCommonjsModule(function (module) { +	var SHARED = '__core-js_shared__'; +	var store = _global[SHARED] || (_global[SHARED] = {}); + +	(module.exports = function (key, value) { +	  return store[key] || (store[key] = value !== undefined ? value : {}); +	})('versions', []).push({ +	  version: _core.version, +	  mode: _library ? 'pure' : 'global', +	  copyright: '© 2019 Denis Pushkarev (zloirock.ru)' +	}); +	}); + +	var _functionToString = _shared('native-function-to-string', Function.toString); + +	var _redefine = createCommonjsModule(function (module) { +	var SRC = _uid('src'); + +	var TO_STRING = 'toString'; +	var TPL = ('' + _functionToString).split(TO_STRING); + +	_core.inspectSource = function (it) { +	  return _functionToString.call(it); +	}; + +	(module.exports = function (O, key, val, safe) { +	  var isFunction = typeof val == 'function'; +	  if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); } +	  if (O[key] === val) { return; } +	  if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); } +	  if (O === _global) { +	    O[key] = val; +	  } else if (!safe) { +	    delete O[key]; +	    _hide(O, key, val); +	  } else if (O[key]) { +	    O[key] = val; +	  } else { +	    _hide(O, key, val); +	  } +	// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +	})(Function.prototype, TO_STRING, function toString() { +	  return typeof this == 'function' && this[SRC] || _functionToString.call(this); +	}); +	}); + +	var _aFunction = function (it) { +	  if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); } +	  return it; +	}; + +	// optional / simple context binding + +	var _ctx = function (fn, that, length) { +	  _aFunction(fn); +	  if (that === undefined) { return fn; } +	  switch (length) { +	    case 1: return function (a) { +	      return fn.call(that, a); +	    }; +	    case 2: return function (a, b) { +	      return fn.call(that, a, b); +	    }; +	    case 3: return function (a, b, c) { +	      return fn.call(that, a, b, c); +	    }; +	  } +	  return function (/* ...args */) { +	    return fn.apply(that, arguments); +	  }; +	}; + +	var PROTOTYPE = 'prototype'; + +	var $export = function (type, name, source) { +	  var IS_FORCED = type & $export.F; +	  var IS_GLOBAL = type & $export.G; +	  var IS_STATIC = type & $export.S; +	  var IS_PROTO = type & $export.P; +	  var IS_BIND = type & $export.B; +	  var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE]; +	  var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); +	  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); +	  var key, own, out, exp; +	  if (IS_GLOBAL) { source = name; } +	  for (key in source) { +	    // contains in native +	    own = !IS_FORCED && target && target[key] !== undefined; +	    // export native or passed +	    out = (own ? target : source)[key]; +	    // bind timers to global for call from export context +	    exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; +	    // extend global +	    if (target) { _redefine(target, key, out, type & $export.U); } +	    // export +	    if (exports[key] != out) { _hide(exports, key, exp); } +	    if (IS_PROTO && expProto[key] != out) { expProto[key] = out; } +	  } +	}; +	_global.core = _core; +	// type bitmap +	$export.F = 1;   // forced +	$export.G = 2;   // global +	$export.S = 4;   // static +	$export.P = 8;   // proto +	$export.B = 16;  // bind +	$export.W = 32;  // wrap +	$export.U = 64;  // safe +	$export.R = 128; // real proto method for `library` +	var _export = $export; + +	// 7.1.4 ToInteger +	var ceil = Math.ceil; +	var floor = Math.floor; +	var _toInteger = function (it) { +	  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +	}; + +	// 7.2.1 RequireObjectCoercible(argument) +	var _defined = function (it) { +	  if (it == undefined) { throw TypeError("Can't call method on  " + it); } +	  return it; +	}; + +	// true  -> String#at +	// false -> String#codePointAt +	var _stringAt = function (TO_STRING) { +	  return function (that, pos) { +	    var s = String(_defined(that)); +	    var i = _toInteger(pos); +	    var l = s.length; +	    var a, b; +	    if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; } +	    a = s.charCodeAt(i); +	    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff +	      ? TO_STRING ? s.charAt(i) : a +	      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; +	  }; +	}; + +	var $at = _stringAt(false); +	_export(_export.P, 'String', { +	  // 21.1.3.3 String.prototype.codePointAt(pos) +	  codePointAt: function codePointAt(pos) { +	    return $at(this, pos); +	  } +	}); + +	var codePointAt = _core.String.codePointAt; + +	var max = Math.max; +	var min = Math.min; +	var _toAbsoluteIndex = function (index, length) { +	  index = _toInteger(index); +	  return index < 0 ? max(index + length, 0) : min(index, length); +	}; + +	var fromCharCode = String.fromCharCode; +	var $fromCodePoint = String.fromCodePoint; + +	// length should be 1, old FF problem +	_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { +	  // 21.1.2.2 String.fromCodePoint(...codePoints) +	  fromCodePoint: function fromCodePoint(x) { +	    var arguments$1 = arguments; +	 // eslint-disable-line no-unused-vars +	    var res = []; +	    var aLen = arguments.length; +	    var i = 0; +	    var code; +	    while (aLen > i) { +	      code = +arguments$1[i++]; +	      if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); } +	      res.push(code < 0x10000 +	        ? fromCharCode(code) +	        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) +	      ); +	    } return res.join(''); +	  } +	}); + +	var fromCodePoint = _core.String.fromCodePoint; + +	// This is a generated file. Do not edit. +	var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; +	var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; +	var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + +	var unicode = { +		Space_Separator: Space_Separator, +		ID_Start: ID_Start, +		ID_Continue: ID_Continue +	}; + +	var util = { +	    isSpaceSeparator: function isSpaceSeparator (c) { +	        return typeof c === 'string' && unicode.Space_Separator.test(c) +	    }, + +	    isIdStartChar: function isIdStartChar (c) { +	        return typeof c === 'string' && ( +	            (c >= 'a' && c <= 'z') || +	        (c >= 'A' && c <= 'Z') || +	        (c === '$') || (c === '_') || +	        unicode.ID_Start.test(c) +	        ) +	    }, + +	    isIdContinueChar: function isIdContinueChar (c) { +	        return typeof c === 'string' && ( +	            (c >= 'a' && c <= 'z') || +	        (c >= 'A' && c <= 'Z') || +	        (c >= '0' && c <= '9') || +	        (c === '$') || (c === '_') || +	        (c === '\u200C') || (c === '\u200D') || +	        unicode.ID_Continue.test(c) +	        ) +	    }, + +	    isDigit: function isDigit (c) { +	        return typeof c === 'string' && /[0-9]/.test(c) +	    }, + +	    isHexDigit: function isHexDigit (c) { +	        return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) +	    }, +	}; + +	var source; +	var parseState; +	var stack; +	var pos; +	var line; +	var column; +	var token; +	var key; +	var root; + +	var parse = function parse (text, reviver) { +	    source = String(text); +	    parseState = 'start'; +	    stack = []; +	    pos = 0; +	    line = 1; +	    column = 0; +	    token = undefined; +	    key = undefined; +	    root = undefined; + +	    do { +	        token = lex(); + +	        // This code is unreachable. +	        // if (!parseStates[parseState]) { +	        //     throw invalidParseState() +	        // } + +	        parseStates[parseState](); +	    } while (token.type !== 'eof') + +	    if (typeof reviver === 'function') { +	        return internalize({'': root}, '', reviver) +	    } + +	    return root +	}; + +	function internalize (holder, name, reviver) { +	    var value = holder[name]; +	    if (value != null && typeof value === 'object') { +	        for (var key in value) { +	            var replacement = internalize(value, key, reviver); +	            if (replacement === undefined) { +	                delete value[key]; +	            } else { +	                value[key] = replacement; +	            } +	        } +	    } + +	    return reviver.call(holder, name, value) +	} + +	var lexState; +	var buffer; +	var doubleQuote; +	var sign; +	var c; + +	function lex () { +	    lexState = 'default'; +	    buffer = ''; +	    doubleQuote = false; +	    sign = 1; + +	    for (;;) { +	        c = peek(); + +	        // This code is unreachable. +	        // if (!lexStates[lexState]) { +	        //     throw invalidLexState(lexState) +	        // } + +	        var token = lexStates[lexState](); +	        if (token) { +	            return token +	        } +	    } +	} + +	function peek () { +	    if (source[pos]) { +	        return String.fromCodePoint(source.codePointAt(pos)) +	    } +	} + +	function read () { +	    var c = peek(); + +	    if (c === '\n') { +	        line++; +	        column = 0; +	    } else if (c) { +	        column += c.length; +	    } else { +	        column++; +	    } + +	    if (c) { +	        pos += c.length; +	    } + +	    return c +	} + +	var lexStates = { +	    default: function default$1 () { +	        switch (c) { +	        case '\t': +	        case '\v': +	        case '\f': +	        case ' ': +	        case '\u00A0': +	        case '\uFEFF': +	        case '\n': +	        case '\r': +	        case '\u2028': +	        case '\u2029': +	            read(); +	            return + +	        case '/': +	            read(); +	            lexState = 'comment'; +	            return + +	        case undefined: +	            read(); +	            return newToken('eof') +	        } + +	        if (util.isSpaceSeparator(c)) { +	            read(); +	            return +	        } + +	        // This code is unreachable. +	        // if (!lexStates[parseState]) { +	        //     throw invalidLexState(parseState) +	        // } + +	        return lexStates[parseState]() +	    }, + +	    comment: function comment () { +	        switch (c) { +	        case '*': +	            read(); +	            lexState = 'multiLineComment'; +	            return + +	        case '/': +	            read(); +	            lexState = 'singleLineComment'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    multiLineComment: function multiLineComment () { +	        switch (c) { +	        case '*': +	            read(); +	            lexState = 'multiLineCommentAsterisk'; +	            return + +	        case undefined: +	            throw invalidChar(read()) +	        } + +	        read(); +	    }, + +	    multiLineCommentAsterisk: function multiLineCommentAsterisk () { +	        switch (c) { +	        case '*': +	            read(); +	            return + +	        case '/': +	            read(); +	            lexState = 'default'; +	            return + +	        case undefined: +	            throw invalidChar(read()) +	        } + +	        read(); +	        lexState = 'multiLineComment'; +	    }, + +	    singleLineComment: function singleLineComment () { +	        switch (c) { +	        case '\n': +	        case '\r': +	        case '\u2028': +	        case '\u2029': +	            read(); +	            lexState = 'default'; +	            return + +	        case undefined: +	            read(); +	            return newToken('eof') +	        } + +	        read(); +	    }, + +	    value: function value () { +	        switch (c) { +	        case '{': +	        case '[': +	            return newToken('punctuator', read()) + +	        case 'n': +	            read(); +	            literal('ull'); +	            return newToken('null', null) + +	        case 't': +	            read(); +	            literal('rue'); +	            return newToken('boolean', true) + +	        case 'f': +	            read(); +	            literal('alse'); +	            return newToken('boolean', false) + +	        case '-': +	        case '+': +	            if (read() === '-') { +	                sign = -1; +	            } + +	            lexState = 'sign'; +	            return + +	        case '.': +	            buffer = read(); +	            lexState = 'decimalPointLeading'; +	            return + +	        case '0': +	            buffer = read(); +	            lexState = 'zero'; +	            return + +	        case '1': +	        case '2': +	        case '3': +	        case '4': +	        case '5': +	        case '6': +	        case '7': +	        case '8': +	        case '9': +	            buffer = read(); +	            lexState = 'decimalInteger'; +	            return + +	        case 'I': +	            read(); +	            literal('nfinity'); +	            return newToken('numeric', Infinity) + +	        case 'N': +	            read(); +	            literal('aN'); +	            return newToken('numeric', NaN) + +	        case '"': +	        case "'": +	            doubleQuote = (read() === '"'); +	            buffer = ''; +	            lexState = 'string'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    identifierNameStartEscape: function identifierNameStartEscape () { +	        if (c !== 'u') { +	            throw invalidChar(read()) +	        } + +	        read(); +	        var u = unicodeEscape(); +	        switch (u) { +	        case '$': +	        case '_': +	            break + +	        default: +	            if (!util.isIdStartChar(u)) { +	                throw invalidIdentifier() +	            } + +	            break +	        } + +	        buffer += u; +	        lexState = 'identifierName'; +	    }, + +	    identifierName: function identifierName () { +	        switch (c) { +	        case '$': +	        case '_': +	        case '\u200C': +	        case '\u200D': +	            buffer += read(); +	            return + +	        case '\\': +	            read(); +	            lexState = 'identifierNameEscape'; +	            return +	        } + +	        if (util.isIdContinueChar(c)) { +	            buffer += read(); +	            return +	        } + +	        return newToken('identifier', buffer) +	    }, + +	    identifierNameEscape: function identifierNameEscape () { +	        if (c !== 'u') { +	            throw invalidChar(read()) +	        } + +	        read(); +	        var u = unicodeEscape(); +	        switch (u) { +	        case '$': +	        case '_': +	        case '\u200C': +	        case '\u200D': +	            break + +	        default: +	            if (!util.isIdContinueChar(u)) { +	                throw invalidIdentifier() +	            } + +	            break +	        } + +	        buffer += u; +	        lexState = 'identifierName'; +	    }, + +	    sign: function sign$1 () { +	        switch (c) { +	        case '.': +	            buffer = read(); +	            lexState = 'decimalPointLeading'; +	            return + +	        case '0': +	            buffer = read(); +	            lexState = 'zero'; +	            return + +	        case '1': +	        case '2': +	        case '3': +	        case '4': +	        case '5': +	        case '6': +	        case '7': +	        case '8': +	        case '9': +	            buffer = read(); +	            lexState = 'decimalInteger'; +	            return + +	        case 'I': +	            read(); +	            literal('nfinity'); +	            return newToken('numeric', sign * Infinity) + +	        case 'N': +	            read(); +	            literal('aN'); +	            return newToken('numeric', NaN) +	        } + +	        throw invalidChar(read()) +	    }, + +	    zero: function zero () { +	        switch (c) { +	        case '.': +	            buffer += read(); +	            lexState = 'decimalPoint'; +	            return + +	        case 'e': +	        case 'E': +	            buffer += read(); +	            lexState = 'decimalExponent'; +	            return + +	        case 'x': +	        case 'X': +	            buffer += read(); +	            lexState = 'hexadecimal'; +	            return +	        } + +	        return newToken('numeric', sign * 0) +	    }, + +	    decimalInteger: function decimalInteger () { +	        switch (c) { +	        case '.': +	            buffer += read(); +	            lexState = 'decimalPoint'; +	            return + +	        case 'e': +	        case 'E': +	            buffer += read(); +	            lexState = 'decimalExponent'; +	            return +	        } + +	        if (util.isDigit(c)) { +	            buffer += read(); +	            return +	        } + +	        return newToken('numeric', sign * Number(buffer)) +	    }, + +	    decimalPointLeading: function decimalPointLeading () { +	        if (util.isDigit(c)) { +	            buffer += read(); +	            lexState = 'decimalFraction'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    decimalPoint: function decimalPoint () { +	        switch (c) { +	        case 'e': +	        case 'E': +	            buffer += read(); +	            lexState = 'decimalExponent'; +	            return +	        } + +	        if (util.isDigit(c)) { +	            buffer += read(); +	            lexState = 'decimalFraction'; +	            return +	        } + +	        return newToken('numeric', sign * Number(buffer)) +	    }, + +	    decimalFraction: function decimalFraction () { +	        switch (c) { +	        case 'e': +	        case 'E': +	            buffer += read(); +	            lexState = 'decimalExponent'; +	            return +	        } + +	        if (util.isDigit(c)) { +	            buffer += read(); +	            return +	        } + +	        return newToken('numeric', sign * Number(buffer)) +	    }, + +	    decimalExponent: function decimalExponent () { +	        switch (c) { +	        case '+': +	        case '-': +	            buffer += read(); +	            lexState = 'decimalExponentSign'; +	            return +	        } + +	        if (util.isDigit(c)) { +	            buffer += read(); +	            lexState = 'decimalExponentInteger'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    decimalExponentSign: function decimalExponentSign () { +	        if (util.isDigit(c)) { +	            buffer += read(); +	            lexState = 'decimalExponentInteger'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    decimalExponentInteger: function decimalExponentInteger () { +	        if (util.isDigit(c)) { +	            buffer += read(); +	            return +	        } + +	        return newToken('numeric', sign * Number(buffer)) +	    }, + +	    hexadecimal: function hexadecimal () { +	        if (util.isHexDigit(c)) { +	            buffer += read(); +	            lexState = 'hexadecimalInteger'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    hexadecimalInteger: function hexadecimalInteger () { +	        if (util.isHexDigit(c)) { +	            buffer += read(); +	            return +	        } + +	        return newToken('numeric', sign * Number(buffer)) +	    }, + +	    string: function string () { +	        switch (c) { +	        case '\\': +	            read(); +	            buffer += escape(); +	            return + +	        case '"': +	            if (doubleQuote) { +	                read(); +	                return newToken('string', buffer) +	            } + +	            buffer += read(); +	            return + +	        case "'": +	            if (!doubleQuote) { +	                read(); +	                return newToken('string', buffer) +	            } + +	            buffer += read(); +	            return + +	        case '\n': +	        case '\r': +	            throw invalidChar(read()) + +	        case '\u2028': +	        case '\u2029': +	            separatorChar(c); +	            break + +	        case undefined: +	            throw invalidChar(read()) +	        } + +	        buffer += read(); +	    }, + +	    start: function start () { +	        switch (c) { +	        case '{': +	        case '[': +	            return newToken('punctuator', read()) + +	        // This code is unreachable since the default lexState handles eof. +	        // case undefined: +	        //     return newToken('eof') +	        } + +	        lexState = 'value'; +	    }, + +	    beforePropertyName: function beforePropertyName () { +	        switch (c) { +	        case '$': +	        case '_': +	            buffer = read(); +	            lexState = 'identifierName'; +	            return + +	        case '\\': +	            read(); +	            lexState = 'identifierNameStartEscape'; +	            return + +	        case '}': +	            return newToken('punctuator', read()) + +	        case '"': +	        case "'": +	            doubleQuote = (read() === '"'); +	            lexState = 'string'; +	            return +	        } + +	        if (util.isIdStartChar(c)) { +	            buffer += read(); +	            lexState = 'identifierName'; +	            return +	        } + +	        throw invalidChar(read()) +	    }, + +	    afterPropertyName: function afterPropertyName () { +	        if (c === ':') { +	            return newToken('punctuator', read()) +	        } + +	        throw invalidChar(read()) +	    }, + +	    beforePropertyValue: function beforePropertyValue () { +	        lexState = 'value'; +	    }, + +	    afterPropertyValue: function afterPropertyValue () { +	        switch (c) { +	        case ',': +	        case '}': +	            return newToken('punctuator', read()) +	        } + +	        throw invalidChar(read()) +	    }, + +	    beforeArrayValue: function beforeArrayValue () { +	        if (c === ']') { +	            return newToken('punctuator', read()) +	        } + +	        lexState = 'value'; +	    }, + +	    afterArrayValue: function afterArrayValue () { +	        switch (c) { +	        case ',': +	        case ']': +	            return newToken('punctuator', read()) +	        } + +	        throw invalidChar(read()) +	    }, + +	    end: function end () { +	        // This code is unreachable since it's handled by the default lexState. +	        // if (c === undefined) { +	        //     read() +	        //     return newToken('eof') +	        // } + +	        throw invalidChar(read()) +	    }, +	}; + +	function newToken (type, value) { +	    return { +	        type: type, +	        value: value, +	        line: line, +	        column: column, +	    } +	} + +	function literal (s) { +	    for (var i = 0, list = s; i < list.length; i += 1) { +	        var c = list[i]; + +	        var p = peek(); + +	        if (p !== c) { +	            throw invalidChar(read()) +	        } + +	        read(); +	    } +	} + +	function escape () { +	    var c = peek(); +	    switch (c) { +	    case 'b': +	        read(); +	        return '\b' + +	    case 'f': +	        read(); +	        return '\f' + +	    case 'n': +	        read(); +	        return '\n' + +	    case 'r': +	        read(); +	        return '\r' + +	    case 't': +	        read(); +	        return '\t' + +	    case 'v': +	        read(); +	        return '\v' + +	    case '0': +	        read(); +	        if (util.isDigit(peek())) { +	            throw invalidChar(read()) +	        } + +	        return '\0' + +	    case 'x': +	        read(); +	        return hexEscape() + +	    case 'u': +	        read(); +	        return unicodeEscape() + +	    case '\n': +	    case '\u2028': +	    case '\u2029': +	        read(); +	        return '' + +	    case '\r': +	        read(); +	        if (peek() === '\n') { +	            read(); +	        } + +	        return '' + +	    case '1': +	    case '2': +	    case '3': +	    case '4': +	    case '5': +	    case '6': +	    case '7': +	    case '8': +	    case '9': +	        throw invalidChar(read()) + +	    case undefined: +	        throw invalidChar(read()) +	    } + +	    return read() +	} + +	function hexEscape () { +	    var buffer = ''; +	    var c = peek(); + +	    if (!util.isHexDigit(c)) { +	        throw invalidChar(read()) +	    } + +	    buffer += read(); + +	    c = peek(); +	    if (!util.isHexDigit(c)) { +	        throw invalidChar(read()) +	    } + +	    buffer += read(); + +	    return String.fromCodePoint(parseInt(buffer, 16)) +	} + +	function unicodeEscape () { +	    var buffer = ''; +	    var count = 4; + +	    while (count-- > 0) { +	        var c = peek(); +	        if (!util.isHexDigit(c)) { +	            throw invalidChar(read()) +	        } + +	        buffer += read(); +	    } + +	    return String.fromCodePoint(parseInt(buffer, 16)) +	} + +	var parseStates = { +	    start: function start () { +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        push(); +	    }, + +	    beforePropertyName: function beforePropertyName () { +	        switch (token.type) { +	        case 'identifier': +	        case 'string': +	            key = token.value; +	            parseState = 'afterPropertyName'; +	            return + +	        case 'punctuator': +	            // This code is unreachable since it's handled by the lexState. +	            // if (token.value !== '}') { +	            //     throw invalidToken() +	            // } + +	            pop(); +	            return + +	        case 'eof': +	            throw invalidEOF() +	        } + +	        // This code is unreachable since it's handled by the lexState. +	        // throw invalidToken() +	    }, + +	    afterPropertyName: function afterPropertyName () { +	        // This code is unreachable since it's handled by the lexState. +	        // if (token.type !== 'punctuator' || token.value !== ':') { +	        //     throw invalidToken() +	        // } + +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        parseState = 'beforePropertyValue'; +	    }, + +	    beforePropertyValue: function beforePropertyValue () { +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        push(); +	    }, + +	    beforeArrayValue: function beforeArrayValue () { +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        if (token.type === 'punctuator' && token.value === ']') { +	            pop(); +	            return +	        } + +	        push(); +	    }, + +	    afterPropertyValue: function afterPropertyValue () { +	        // This code is unreachable since it's handled by the lexState. +	        // if (token.type !== 'punctuator') { +	        //     throw invalidToken() +	        // } + +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        switch (token.value) { +	        case ',': +	            parseState = 'beforePropertyName'; +	            return + +	        case '}': +	            pop(); +	        } + +	        // This code is unreachable since it's handled by the lexState. +	        // throw invalidToken() +	    }, + +	    afterArrayValue: function afterArrayValue () { +	        // This code is unreachable since it's handled by the lexState. +	        // if (token.type !== 'punctuator') { +	        //     throw invalidToken() +	        // } + +	        if (token.type === 'eof') { +	            throw invalidEOF() +	        } + +	        switch (token.value) { +	        case ',': +	            parseState = 'beforeArrayValue'; +	            return + +	        case ']': +	            pop(); +	        } + +	        // This code is unreachable since it's handled by the lexState. +	        // throw invalidToken() +	    }, + +	    end: function end () { +	        // This code is unreachable since it's handled by the lexState. +	        // if (token.type !== 'eof') { +	        //     throw invalidToken() +	        // } +	    }, +	}; + +	function push () { +	    var value; + +	    switch (token.type) { +	    case 'punctuator': +	        switch (token.value) { +	        case '{': +	            value = {}; +	            break + +	        case '[': +	            value = []; +	            break +	        } + +	        break + +	    case 'null': +	    case 'boolean': +	    case 'numeric': +	    case 'string': +	        value = token.value; +	        break + +	    // This code is unreachable. +	    // default: +	    //     throw invalidToken() +	    } + +	    if (root === undefined) { +	        root = value; +	    } else { +	        var parent = stack[stack.length - 1]; +	        if (Array.isArray(parent)) { +	            parent.push(value); +	        } else { +	            parent[key] = value; +	        } +	    } + +	    if (value !== null && typeof value === 'object') { +	        stack.push(value); + +	        if (Array.isArray(value)) { +	            parseState = 'beforeArrayValue'; +	        } else { +	            parseState = 'beforePropertyName'; +	        } +	    } else { +	        var current = stack[stack.length - 1]; +	        if (current == null) { +	            parseState = 'end'; +	        } else if (Array.isArray(current)) { +	            parseState = 'afterArrayValue'; +	        } else { +	            parseState = 'afterPropertyValue'; +	        } +	    } +	} + +	function pop () { +	    stack.pop(); + +	    var current = stack[stack.length - 1]; +	    if (current == null) { +	        parseState = 'end'; +	    } else if (Array.isArray(current)) { +	        parseState = 'afterArrayValue'; +	    } else { +	        parseState = 'afterPropertyValue'; +	    } +	} + +	// This code is unreachable. +	// function invalidParseState () { +	//     return new Error(`JSON5: invalid parse state '${parseState}'`) +	// } + +	// This code is unreachable. +	// function invalidLexState (state) { +	//     return new Error(`JSON5: invalid lex state '${state}'`) +	// } + +	function invalidChar (c) { +	    if (c === undefined) { +	        return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) +	    } + +	    return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column)) +	} + +	function invalidEOF () { +	    return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) +	} + +	// This code is unreachable. +	// function invalidToken () { +	//     if (token.type === 'eof') { +	//         return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +	//     } + +	//     const c = String.fromCodePoint(token.value.codePointAt(0)) +	//     return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +	// } + +	function invalidIdentifier () { +	    column -= 5; +	    return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column)) +	} + +	function separatorChar (c) { +	    console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping")); +	} + +	function formatChar (c) { +	    var replacements = { +	        "'": "\\'", +	        '"': '\\"', +	        '\\': '\\\\', +	        '\b': '\\b', +	        '\f': '\\f', +	        '\n': '\\n', +	        '\r': '\\r', +	        '\t': '\\t', +	        '\v': '\\v', +	        '\0': '\\0', +	        '\u2028': '\\u2028', +	        '\u2029': '\\u2029', +	    }; + +	    if (replacements[c]) { +	        return replacements[c] +	    } + +	    if (c < ' ') { +	        var hexString = c.charCodeAt(0).toString(16); +	        return '\\x' + ('00' + hexString).substring(hexString.length) +	    } + +	    return c +	} + +	function syntaxError (message) { +	    var err = new SyntaxError(message); +	    err.lineNumber = line; +	    err.columnNumber = column; +	    return err +	} + +	var stringify = function stringify (value, replacer, space) { +	    var stack = []; +	    var indent = ''; +	    var propertyList; +	    var replacerFunc; +	    var gap = ''; +	    var quote; + +	    if ( +	        replacer != null && +	        typeof replacer === 'object' && +	        !Array.isArray(replacer) +	    ) { +	        space = replacer.space; +	        quote = replacer.quote; +	        replacer = replacer.replacer; +	    } + +	    if (typeof replacer === 'function') { +	        replacerFunc = replacer; +	    } else if (Array.isArray(replacer)) { +	        propertyList = []; +	        for (var i = 0, list = replacer; i < list.length; i += 1) { +	            var v = list[i]; + +	            var item = (void 0); + +	            if (typeof v === 'string') { +	                item = v; +	            } else if ( +	                typeof v === 'number' || +	                v instanceof String || +	                v instanceof Number +	            ) { +	                item = String(v); +	            } + +	            if (item !== undefined && propertyList.indexOf(item) < 0) { +	                propertyList.push(item); +	            } +	        } +	    } + +	    if (space instanceof Number) { +	        space = Number(space); +	    } else if (space instanceof String) { +	        space = String(space); +	    } + +	    if (typeof space === 'number') { +	        if (space > 0) { +	            space = Math.min(10, Math.floor(space)); +	            gap = '          '.substr(0, space); +	        } +	    } else if (typeof space === 'string') { +	        gap = space.substr(0, 10); +	    } + +	    return serializeProperty('', {'': value}) + +	    function serializeProperty (key, holder) { +	        var value = holder[key]; +	        if (value != null) { +	            if (typeof value.toJSON5 === 'function') { +	                value = value.toJSON5(key); +	            } else if (typeof value.toJSON === 'function') { +	                value = value.toJSON(key); +	            } +	        } + +	        if (replacerFunc) { +	            value = replacerFunc.call(holder, key, value); +	        } + +	        if (value instanceof Number) { +	            value = Number(value); +	        } else if (value instanceof String) { +	            value = String(value); +	        } else if (value instanceof Boolean) { +	            value = value.valueOf(); +	        } + +	        switch (value) { +	        case null: return 'null' +	        case true: return 'true' +	        case false: return 'false' +	        } + +	        if (typeof value === 'string') { +	            return quoteString(value, false) +	        } + +	        if (typeof value === 'number') { +	            return String(value) +	        } + +	        if (typeof value === 'object') { +	            return Array.isArray(value) ? serializeArray(value) : serializeObject(value) +	        } + +	        return undefined +	    } + +	    function quoteString (value) { +	        var quotes = { +	            "'": 0.1, +	            '"': 0.2, +	        }; + +	        var replacements = { +	            "'": "\\'", +	            '"': '\\"', +	            '\\': '\\\\', +	            '\b': '\\b', +	            '\f': '\\f', +	            '\n': '\\n', +	            '\r': '\\r', +	            '\t': '\\t', +	            '\v': '\\v', +	            '\0': '\\0', +	            '\u2028': '\\u2028', +	            '\u2029': '\\u2029', +	        }; + +	        var product = ''; + +	        for (var i = 0; i < value.length; i++) { +	            var c = value[i]; +	            switch (c) { +	            case "'": +	            case '"': +	                quotes[c]++; +	                product += c; +	                continue + +	            case '\0': +	                if (util.isDigit(value[i + 1])) { +	                    product += '\\x00'; +	                    continue +	                } +	            } + +	            if (replacements[c]) { +	                product += replacements[c]; +	                continue +	            } + +	            if (c < ' ') { +	                var hexString = c.charCodeAt(0).toString(16); +	                product += '\\x' + ('00' + hexString).substring(hexString.length); +	                continue +	            } + +	            product += c; +	        } + +	        var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; }); + +	        product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); + +	        return quoteChar + product + quoteChar +	    } + +	    function serializeObject (value) { +	        if (stack.indexOf(value) >= 0) { +	            throw TypeError('Converting circular structure to JSON5') +	        } + +	        stack.push(value); + +	        var stepback = indent; +	        indent = indent + gap; + +	        var keys = propertyList || Object.keys(value); +	        var partial = []; +	        for (var i = 0, list = keys; i < list.length; i += 1) { +	            var key = list[i]; + +	            var propertyString = serializeProperty(key, value); +	            if (propertyString !== undefined) { +	                var member = serializeKey(key) + ':'; +	                if (gap !== '') { +	                    member += ' '; +	                } +	                member += propertyString; +	                partial.push(member); +	            } +	        } + +	        var final; +	        if (partial.length === 0) { +	            final = '{}'; +	        } else { +	            var properties; +	            if (gap === '') { +	                properties = partial.join(','); +	                final = '{' + properties + '}'; +	            } else { +	                var separator = ',\n' + indent; +	                properties = partial.join(separator); +	                final = '{\n' + indent + properties + ',\n' + stepback + '}'; +	            } +	        } + +	        stack.pop(); +	        indent = stepback; +	        return final +	    } + +	    function serializeKey (key) { +	        if (key.length === 0) { +	            return quoteString(key, true) +	        } + +	        var firstChar = String.fromCodePoint(key.codePointAt(0)); +	        if (!util.isIdStartChar(firstChar)) { +	            return quoteString(key, true) +	        } + +	        for (var i = firstChar.length; i < key.length; i++) { +	            if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { +	                return quoteString(key, true) +	            } +	        } + +	        return key +	    } + +	    function serializeArray (value) { +	        if (stack.indexOf(value) >= 0) { +	            throw TypeError('Converting circular structure to JSON5') +	        } + +	        stack.push(value); + +	        var stepback = indent; +	        indent = indent + gap; + +	        var partial = []; +	        for (var i = 0; i < value.length; i++) { +	            var propertyString = serializeProperty(String(i), value); +	            partial.push((propertyString !== undefined) ? propertyString : 'null'); +	        } + +	        var final; +	        if (partial.length === 0) { +	            final = '[]'; +	        } else { +	            if (gap === '') { +	                var properties = partial.join(','); +	                final = '[' + properties + ']'; +	            } else { +	                var separator = ',\n' + indent; +	                var properties$1 = partial.join(separator); +	                final = '[\n' + indent + properties$1 + ',\n' + stepback + ']'; +	            } +	        } + +	        stack.pop(); +	        indent = stepback; +	        return final +	    } +	}; + +	var JSON5 = { +	    parse: parse, +	    stringify: stringify, +	}; + +	var lib = JSON5; + +	var es5 = lib; + +	return es5; + +}))); diff --git a/node_modules/json5/dist/index.min.js b/node_modules/json5/dist/index.min.js new file mode 100644 index 0000000..da63a9d --- /dev/null +++ b/node_modules/json5/dist/index.min.js @@ -0,0 +1 @@ +!function(u,D){"object"==typeof exports&&"undefined"!=typeof module?module.exports=D():"function"==typeof define&&define.amd?define(D):u.JSON5=D()}(this,function(){"use strict";function u(u,D){return u(D={exports:{}},D.exports),D.exports}var D=u(function(u){var D=u.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=D)}),e=u(function(u){var D=u.exports={version:"2.6.5"};"number"==typeof __e&&(__e=D)}),t=(e.version,function(u){return"object"==typeof u?null!==u:"function"==typeof u}),r=function(u){if(!t(u))throw TypeError(u+" is not an object!");return u},F=function(u){try{return!!u()}catch(u){return!0}},n=!F(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),C=D.document,A=t(C)&&t(C.createElement),i=!n&&!F(function(){return 7!=Object.defineProperty((u="div",A?C.createElement(u):{}),"a",{get:function(){return 7}}).a;var u}),E=Object.defineProperty,o={f:n?Object.defineProperty:function(u,D,e){if(r(u),D=function(u,D){if(!t(u))return u;var e,r;if(D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;if("function"==typeof(e=u.valueOf)&&!t(r=e.call(u)))return r;if(!D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;throw TypeError("Can't convert object to primitive value")}(D,!0),r(e),i)try{return E(u,D,e)}catch(u){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(u[D]=e.value),u}},a=n?function(u,D,e){return o.f(u,D,function(u,D){return{enumerable:!(1&u),configurable:!(2&u),writable:!(4&u),value:D}}(1,e))}:function(u,D,e){return u[D]=e,u},c={}.hasOwnProperty,B=function(u,D){return c.call(u,D)},s=0,f=Math.random(),l=u(function(u){var t=D["__core-js_shared__"]||(D["__core-js_shared__"]={});(u.exports=function(u,D){return t[u]||(t[u]=void 0!==D?D:{})})("versions",[]).push({version:e.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})("native-function-to-string",Function.toString),d=u(function(u){var t,r="Symbol(".concat(void 0===(t="src")?"":t,")_",(++s+f).toString(36)),F=(""+l).split("toString");e.inspectSource=function(u){return l.call(u)},(u.exports=function(u,e,t,n){var C="function"==typeof t;C&&(B(t,"name")||a(t,"name",e)),u[e]!==t&&(C&&(B(t,r)||a(t,r,u[e]?""+u[e]:F.join(String(e)))),u===D?u[e]=t:n?u[e]?u[e]=t:a(u,e,t):(delete u[e],a(u,e,t)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[r]||l.call(this)})}),v=function(u,D,e){if(function(u){if("function"!=typeof u)throw TypeError(u+" is not a function!")}(u),void 0===D)return u;switch(e){case 1:return function(e){return u.call(D,e)};case 2:return function(e,t){return u.call(D,e,t)};case 3:return function(e,t,r){return u.call(D,e,t,r)}}return function(){return u.apply(D,arguments)}},p=function(u,t,r){var F,n,C,A,i=u&p.F,E=u&p.G,o=u&p.S,c=u&p.P,B=u&p.B,s=E?D:o?D[t]||(D[t]={}):(D[t]||{}).prototype,f=E?e:e[t]||(e[t]={}),l=f.prototype||(f.prototype={});for(F in E&&(r=t),r)C=((n=!i&&s&&void 0!==s[F])?s:r)[F],A=B&&n?v(C,D):c&&"function"==typeof C?v(Function.call,C):C,s&&d(s,F,C,u&p.U),f[F]!=C&&a(f,F,A),c&&l[F]!=C&&(l[F]=C)};D.core=e,p.F=1,p.G=2,p.S=4,p.P=8,p.B=16,p.W=32,p.U=64,p.R=128;var h,m=p,g=Math.ceil,y=Math.floor,w=function(u){return isNaN(u=+u)?0:(u>0?y:g)(u)},S=(h=!1,function(u,D){var e,t,r=String(function(u){if(null==u)throw TypeError("Can't call method on  "+u);return u}(u)),F=w(D),n=r.length;return F<0||F>=n?h?"":void 0:(e=r.charCodeAt(F))<55296||e>56319||F+1===n||(t=r.charCodeAt(F+1))<56320||t>57343?h?r.charAt(F):e:h?r.slice(F,F+2):t-56320+(e-55296<<10)+65536});m(m.P,"String",{codePointAt:function(u){return S(this,u)}});e.String.codePointAt;var b=Math.max,x=Math.min,N=String.fromCharCode,P=String.fromCodePoint;m(m.S+m.F*(!!P&&1!=P.length),"String",{fromCodePoint:function(u){for(var D,e,t,r=arguments,F=[],n=arguments.length,C=0;n>C;){if(D=+r[C++],t=1114111,((e=w(e=D))<0?b(e+t,0):x(e,t))!==D)throw RangeError(D+" is not a valid code point");F.push(D<65536?N(D):N(55296+((D-=65536)>>10),D%1024+56320))}return F.join("")}});e.String.fromCodePoint;var _,I,O,j,V,J,M,k,L,T,z,H,$,R,G={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},U={isSpaceSeparator:function(u){return"string"==typeof u&&G.Space_Separator.test(u)},isIdStartChar:function(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||G.ID_Start.test(u))},isIdContinueChar:function(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||""===u||""===u||G.ID_Continue.test(u))},isDigit:function(u){return"string"==typeof u&&/[0-9]/.test(u)},isHexDigit:function(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};function Z(){for(T="default",z="",H=!1,$=1;;){R=q();var u=X[T]();if(u)return u}}function q(){if(_[j])return String.fromCodePoint(_.codePointAt(j))}function W(){var u=q();return"\n"===u?(V++,J=0):u?J+=u.length:J++,u&&(j+=u.length),u}var X={default:function(){switch(R){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void W();case"/":return W(),void(T="comment");case void 0:return W(),K("eof")}if(!U.isSpaceSeparator(R))return X[I]();W()},comment:function(){switch(R){case"*":return W(),void(T="multiLineComment");case"/":return W(),void(T="singleLineComment")}throw tu(W())},multiLineComment:function(){switch(R){case"*":return W(),void(T="multiLineCommentAsterisk");case void 0:throw tu(W())}W()},multiLineCommentAsterisk:function(){switch(R){case"*":return void W();case"/":return W(),void(T="default");case void 0:throw tu(W())}W(),T="multiLineComment"},singleLineComment:function(){switch(R){case"\n":case"\r":case"\u2028":case"\u2029":return W(),void(T="default");case void 0:return W(),K("eof")}W()},value:function(){switch(R){case"{":case"[":return K("punctuator",W());case"n":return W(),Q("ull"),K("null",null);case"t":return W(),Q("rue"),K("boolean",!0);case"f":return W(),Q("alse"),K("boolean",!1);case"-":case"+":return"-"===W()&&($=-1),void(T="sign");case".":return z=W(),void(T="decimalPointLeading");case"0":return z=W(),void(T="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return z=W(),void(T="decimalInteger");case"I":return W(),Q("nfinity"),K("numeric",1/0);case"N":return W(),Q("aN"),K("numeric",NaN);case'"':case"'":return H='"'===W(),z="",void(T="string")}throw tu(W())},identifierNameStartEscape:function(){if("u"!==R)throw tu(W());W();var u=Y();switch(u){case"$":case"_":break;default:if(!U.isIdStartChar(u))throw Fu()}z+=u,T="identifierName"},identifierName:function(){switch(R){case"$":case"_":case"":case"":return void(z+=W());case"\\":return W(),void(T="identifierNameEscape")}if(!U.isIdContinueChar(R))return K("identifier",z);z+=W()},identifierNameEscape:function(){if("u"!==R)throw tu(W());W();var u=Y();switch(u){case"$":case"_":case"":case"":break;default:if(!U.isIdContinueChar(u))throw Fu()}z+=u,T="identifierName"},sign:function(){switch(R){case".":return z=W(),void(T="decimalPointLeading");case"0":return z=W(),void(T="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return z=W(),void(T="decimalInteger");case"I":return W(),Q("nfinity"),K("numeric",$*(1/0));case"N":return W(),Q("aN"),K("numeric",NaN)}throw tu(W())},zero:function(){switch(R){case".":return z+=W(),void(T="decimalPoint");case"e":case"E":return z+=W(),void(T="decimalExponent");case"x":case"X":return z+=W(),void(T="hexadecimal")}return K("numeric",0*$)},decimalInteger:function(){switch(R){case".":return z+=W(),void(T="decimalPoint");case"e":case"E":return z+=W(),void(T="decimalExponent")}if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},decimalPointLeading:function(){if(U.isDigit(R))return z+=W(),void(T="decimalFraction");throw tu(W())},decimalPoint:function(){switch(R){case"e":case"E":return z+=W(),void(T="decimalExponent")}return U.isDigit(R)?(z+=W(),void(T="decimalFraction")):K("numeric",$*Number(z))},decimalFraction:function(){switch(R){case"e":case"E":return z+=W(),void(T="decimalExponent")}if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},decimalExponent:function(){switch(R){case"+":case"-":return z+=W(),void(T="decimalExponentSign")}if(U.isDigit(R))return z+=W(),void(T="decimalExponentInteger");throw tu(W())},decimalExponentSign:function(){if(U.isDigit(R))return z+=W(),void(T="decimalExponentInteger");throw tu(W())},decimalExponentInteger:function(){if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},hexadecimal:function(){if(U.isHexDigit(R))return z+=W(),void(T="hexadecimalInteger");throw tu(W())},hexadecimalInteger:function(){if(!U.isHexDigit(R))return K("numeric",$*Number(z));z+=W()},string:function(){switch(R){case"\\":return W(),void(z+=function(){switch(q()){case"b":return W(),"\b";case"f":return W(),"\f";case"n":return W(),"\n";case"r":return W(),"\r";case"t":return W(),"\t";case"v":return W(),"\v";case"0":if(W(),U.isDigit(q()))throw tu(W());return"\0";case"x":return W(),function(){var u="",D=q();if(!U.isHexDigit(D))throw tu(W());if(u+=W(),D=q(),!U.isHexDigit(D))throw tu(W());return u+=W(),String.fromCodePoint(parseInt(u,16))}();case"u":return W(),Y();case"\n":case"\u2028":case"\u2029":return W(),"";case"\r":return W(),"\n"===q()&&W(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw tu(W())}return W()}());case'"':return H?(W(),K("string",z)):void(z+=W());case"'":return H?void(z+=W()):(W(),K("string",z));case"\n":case"\r":throw tu(W());case"\u2028":case"\u2029":!function(u){console.warn("JSON5: '"+nu(u)+"' in strings is not valid ECMAScript; consider escaping")}(R);break;case void 0:throw tu(W())}z+=W()},start:function(){switch(R){case"{":case"[":return K("punctuator",W())}T="value"},beforePropertyName:function(){switch(R){case"$":case"_":return z=W(),void(T="identifierName");case"\\":return W(),void(T="identifierNameStartEscape");case"}":return K("punctuator",W());case'"':case"'":return H='"'===W(),void(T="string")}if(U.isIdStartChar(R))return z+=W(),void(T="identifierName");throw tu(W())},afterPropertyName:function(){if(":"===R)return K("punctuator",W());throw tu(W())},beforePropertyValue:function(){T="value"},afterPropertyValue:function(){switch(R){case",":case"}":return K("punctuator",W())}throw tu(W())},beforeArrayValue:function(){if("]"===R)return K("punctuator",W());T="value"},afterArrayValue:function(){switch(R){case",":case"]":return K("punctuator",W())}throw tu(W())},end:function(){throw tu(W())}};function K(u,D){return{type:u,value:D,line:V,column:J}}function Q(u){for(var D=0,e=u;D<e.length;D+=1){var t=e[D];if(q()!==t)throw tu(W());W()}}function Y(){for(var u="",D=4;D-- >0;){var e=q();if(!U.isHexDigit(e))throw tu(W());u+=W()}return String.fromCodePoint(parseInt(u,16))}var uu={start:function(){if("eof"===M.type)throw ru();Du()},beforePropertyName:function(){switch(M.type){case"identifier":case"string":return k=M.value,void(I="afterPropertyName");case"punctuator":return void eu();case"eof":throw ru()}},afterPropertyName:function(){if("eof"===M.type)throw ru();I="beforePropertyValue"},beforePropertyValue:function(){if("eof"===M.type)throw ru();Du()},beforeArrayValue:function(){if("eof"===M.type)throw ru();"punctuator"!==M.type||"]"!==M.value?Du():eu()},afterPropertyValue:function(){if("eof"===M.type)throw ru();switch(M.value){case",":return void(I="beforePropertyName");case"}":eu()}},afterArrayValue:function(){if("eof"===M.type)throw ru();switch(M.value){case",":return void(I="beforeArrayValue");case"]":eu()}},end:function(){}};function Du(){var u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}if(void 0===L)L=u;else{var D=O[O.length-1];Array.isArray(D)?D.push(u):D[k]=u}if(null!==u&&"object"==typeof u)O.push(u),I=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{var e=O[O.length-1];I=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function eu(){O.pop();var u=O[O.length-1];I=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function tu(u){return Cu(void 0===u?"JSON5: invalid end of input at "+V+":"+J:"JSON5: invalid character '"+nu(u)+"' at "+V+":"+J)}function ru(){return Cu("JSON5: invalid end of input at "+V+":"+J)}function Fu(){return Cu("JSON5: invalid identifier character at "+V+":"+(J-=5))}function nu(u){var D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){var e=u.charCodeAt(0).toString(16);return"\\x"+("00"+e).substring(e.length)}return u}function Cu(u){var D=new SyntaxError(u);return D.lineNumber=V,D.columnNumber=J,D}return{parse:function(u,D){_=String(u),I="start",O=[],j=0,V=1,J=0,M=void 0,k=void 0,L=void 0;do{M=Z(),uu[I]()}while("eof"!==M.type);return"function"==typeof D?function u(D,e,t){var r=D[e];if(null!=r&&"object"==typeof r)for(var F in r){var n=u(r,F,t);void 0===n?delete r[F]:r[F]=n}return t.call(D,e,r)}({"":L},"",D):L},stringify:function(u,D,e){var t,r,F,n=[],C="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,F=D.quote,D=D.replacer),"function"==typeof D)r=D;else if(Array.isArray(D)){t=[];for(var i=0,E=D;i<E.length;i+=1){var o=E[i],a=void 0;"string"==typeof o?a=o:("number"==typeof o||o instanceof String||o instanceof Number)&&(a=String(o)),void 0!==a&&t.indexOf(a)<0&&t.push(a)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A="          ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),c("",{"":u});function c(u,D){var e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),r&&(e=r.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?B(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,t=[],r=0;r<u.length;r++){var F=c(String(r),u);t.push(void 0!==F?F:"null")}if(0===t.length)e="[]";else if(""===A){var i=t.join(",");e="["+i+"]"}else{var E=",\n"+C,o=t.join(E);e="[\n"+C+o+",\n"+D+"]"}return n.pop(),C=D,e}(e):function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,r,F=t||Object.keys(u),i=[],E=0,o=F;E<o.length;E+=1){var a=o[E],B=c(a,u);if(void 0!==B){var f=s(a)+":";""!==A&&(f+=" "),f+=B,i.push(f)}}if(0===i.length)e="{}";else if(""===A)r=i.join(","),e="{"+r+"}";else{var l=",\n"+C;r=i.join(l),e="{\n"+C+r+",\n"+D+"}"}return n.pop(),C=D,e}(e):void 0}function B(u){for(var D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},t="",r=0;r<u.length;r++){var n=u[r];switch(n){case"'":case'"':D[n]++,t+=n;continue;case"\0":if(U.isDigit(u[r+1])){t+="\\x00";continue}}if(e[n])t+=e[n];else if(n<" "){var C=n.charCodeAt(0).toString(16);t+="\\x"+("00"+C).substring(C.length)}else t+=n}var A=F||Object.keys(D).reduce(function(u,e){return D[u]<D[e]?u:e});return A+(t=t.replace(new RegExp(A,"g"),e[A]))+A}function s(u){if(0===u.length)return B(u);var D=String.fromCodePoint(u.codePointAt(0));if(!U.isIdStartChar(D))return B(u);for(var e=D.length;e<u.length;e++)if(!U.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return B(u);return u}}}}); diff --git a/node_modules/json5/dist/index.min.mjs b/node_modules/json5/dist/index.min.mjs new file mode 100644 index 0000000..3ac68cb --- /dev/null +++ b/node_modules/json5/dist/index.min.mjs @@ -0,0 +1 @@ +var Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,unicode={Space_Separator:Space_Separator,ID_Start:ID_Start,ID_Continue:ID_Continue},util={isSpaceSeparator:u=>"string"==typeof u&&unicode.Space_Separator.test(u),isIdStartChar:u=>"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||unicode.ID_Start.test(u)),isIdContinueChar:u=>"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||""===u||""===u||unicode.ID_Continue.test(u)),isDigit:u=>"string"==typeof u&&/[0-9]/.test(u),isHexDigit:u=>"string"==typeof u&&/[0-9A-Fa-f]/.test(u)};let source,parseState,stack,pos,line,column,token,key,root;var parse=function(u,D){source=String(u),parseState="start",stack=[],pos=0,line=1,column=0,token=void 0,key=void 0,root=void 0;do{token=lex(),parseStates[parseState]()}while("eof"!==token.type);return"function"==typeof D?internalize({"":root},"",D):root};function internalize(u,D,e){const r=u[D];if(null!=r&&"object"==typeof r)for(const u in r){const D=internalize(r,u,e);void 0===D?delete r[u]:r[u]=D}return e.call(u,D,r)}let lexState,buffer,doubleQuote,sign,c;function lex(){for(lexState="default",buffer="",doubleQuote=!1,sign=1;;){c=peek();const u=lexStates[lexState]();if(u)return u}}function peek(){if(source[pos])return String.fromCodePoint(source.codePointAt(pos))}function read(){const u=peek();return"\n"===u?(line++,column=0):u?column+=u.length:column++,u&&(pos+=u.length),u}const lexStates={default(){switch(c){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void read();case"/":return read(),void(lexState="comment");case void 0:return read(),newToken("eof")}if(!util.isSpaceSeparator(c))return lexStates[parseState]();read()},comment(){switch(c){case"*":return read(),void(lexState="multiLineComment");case"/":return read(),void(lexState="singleLineComment")}throw invalidChar(read())},multiLineComment(){switch(c){case"*":return read(),void(lexState="multiLineCommentAsterisk");case void 0:throw invalidChar(read())}read()},multiLineCommentAsterisk(){switch(c){case"*":return void read();case"/":return read(),void(lexState="default");case void 0:throw invalidChar(read())}read(),lexState="multiLineComment"},singleLineComment(){switch(c){case"\n":case"\r":case"\u2028":case"\u2029":return read(),void(lexState="default");case void 0:return read(),newToken("eof")}read()},value(){switch(c){case"{":case"[":return newToken("punctuator",read());case"n":return read(),literal("ull"),newToken("null",null);case"t":return read(),literal("rue"),newToken("boolean",!0);case"f":return read(),literal("alse"),newToken("boolean",!1);case"-":case"+":return"-"===read()&&(sign=-1),void(lexState="sign");case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",1/0);case"N":return read(),literal("aN"),newToken("numeric",NaN);case'"':case"'":return doubleQuote='"'===read(),buffer="",void(lexState="string")}throw invalidChar(read())},identifierNameStartEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":break;default:if(!util.isIdStartChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},identifierName(){switch(c){case"$":case"_":case"":case"":return void(buffer+=read());case"\\":return read(),void(lexState="identifierNameEscape")}if(!util.isIdContinueChar(c))return newToken("identifier",buffer);buffer+=read()},identifierNameEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":case"":case"":break;default:if(!util.isIdContinueChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},sign(){switch(c){case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",sign*(1/0));case"N":return read(),literal("aN"),newToken("numeric",NaN)}throw invalidChar(read())},zero(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent");case"x":case"X":return buffer+=read(),void(lexState="hexadecimal")}return newToken("numeric",0*sign)},decimalInteger(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalPointLeading(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalFraction");throw invalidChar(read())},decimalPoint(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}return util.isDigit(c)?(buffer+=read(),void(lexState="decimalFraction")):newToken("numeric",sign*Number(buffer))},decimalFraction(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalExponent(){switch(c){case"+":case"-":return buffer+=read(),void(lexState="decimalExponentSign")}if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentSign(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentInteger(){if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},hexadecimal(){if(util.isHexDigit(c))return buffer+=read(),void(lexState="hexadecimalInteger");throw invalidChar(read())},hexadecimalInteger(){if(!util.isHexDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},string(){switch(c){case"\\":return read(),void(buffer+=escape());case'"':return doubleQuote?(read(),newToken("string",buffer)):void(buffer+=read());case"'":return doubleQuote?void(buffer+=read()):(read(),newToken("string",buffer));case"\n":case"\r":throw invalidChar(read());case"\u2028":case"\u2029":separatorChar(c);break;case void 0:throw invalidChar(read())}buffer+=read()},start(){switch(c){case"{":case"[":return newToken("punctuator",read())}lexState="value"},beforePropertyName(){switch(c){case"$":case"_":return buffer=read(),void(lexState="identifierName");case"\\":return read(),void(lexState="identifierNameStartEscape");case"}":return newToken("punctuator",read());case'"':case"'":return doubleQuote='"'===read(),void(lexState="string")}if(util.isIdStartChar(c))return buffer+=read(),void(lexState="identifierName");throw invalidChar(read())},afterPropertyName(){if(":"===c)return newToken("punctuator",read());throw invalidChar(read())},beforePropertyValue(){lexState="value"},afterPropertyValue(){switch(c){case",":case"}":return newToken("punctuator",read())}throw invalidChar(read())},beforeArrayValue(){if("]"===c)return newToken("punctuator",read());lexState="value"},afterArrayValue(){switch(c){case",":case"]":return newToken("punctuator",read())}throw invalidChar(read())},end(){throw invalidChar(read())}};function newToken(u,D){return{type:u,value:D,line:line,column:column}}function literal(u){for(const D of u){if(peek()!==D)throw invalidChar(read());read()}}function escape(){switch(peek()){case"b":return read(),"\b";case"f":return read(),"\f";case"n":return read(),"\n";case"r":return read(),"\r";case"t":return read(),"\t";case"v":return read(),"\v";case"0":if(read(),util.isDigit(peek()))throw invalidChar(read());return"\0";case"x":return read(),hexEscape();case"u":return read(),unicodeEscape();case"\n":case"\u2028":case"\u2029":return read(),"";case"\r":return read(),"\n"===peek()&&read(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw invalidChar(read())}return read()}function hexEscape(){let u="",D=peek();if(!util.isHexDigit(D))throw invalidChar(read());if(u+=read(),D=peek(),!util.isHexDigit(D))throw invalidChar(read());return u+=read(),String.fromCodePoint(parseInt(u,16))}function unicodeEscape(){let u="",D=4;for(;D-- >0;){const D=peek();if(!util.isHexDigit(D))throw invalidChar(read());u+=read()}return String.fromCodePoint(parseInt(u,16))}const parseStates={start(){if("eof"===token.type)throw invalidEOF();push()},beforePropertyName(){switch(token.type){case"identifier":case"string":return key=token.value,void(parseState="afterPropertyName");case"punctuator":return void pop();case"eof":throw invalidEOF()}},afterPropertyName(){if("eof"===token.type)throw invalidEOF();parseState="beforePropertyValue"},beforePropertyValue(){if("eof"===token.type)throw invalidEOF();push()},beforeArrayValue(){if("eof"===token.type)throw invalidEOF();"punctuator"!==token.type||"]"!==token.value?push():pop()},afterPropertyValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforePropertyName");case"}":pop()}},afterArrayValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforeArrayValue");case"]":pop()}},end(){}};function push(){let u;switch(token.type){case"punctuator":switch(token.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=token.value}if(void 0===root)root=u;else{const D=stack[stack.length-1];Array.isArray(D)?D.push(u):D[key]=u}if(null!==u&&"object"==typeof u)stack.push(u),parseState=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}}function pop(){stack.pop();const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function invalidChar(u){return syntaxError(void 0===u?`JSON5: invalid end of input at ${line}:${column}`:`JSON5: invalid character '${formatChar(u)}' at ${line}:${column}`)}function invalidEOF(){return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)}function invalidIdentifier(){return syntaxError(`JSON5: invalid identifier character at ${line}:${column-=5}`)}function separatorChar(u){console.warn(`JSON5: '${formatChar(u)}' in strings is not valid ECMAScript; consider escaping`)}function formatChar(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return"\\x"+("00"+D).substring(D.length)}return u}function syntaxError(u){const D=new SyntaxError(u);return D.lineNumber=line,D.columnNumber=column,D}var stringify=function(u,D,e){const r=[];let t,F,C,a="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,C=D.quote,D=D.replacer),"function"==typeof D)F=D;else if(Array.isArray(D)){t=[];for(const u of D){let D;"string"==typeof u?D=u:("number"==typeof u||u instanceof String||u instanceof Number)&&(D=String(u)),void 0!==D&&t.indexOf(D)<0&&t.push(D)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A="          ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),E("",{"":u});function E(u,D){let e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),F&&(e=F.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?n(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,t=[];for(let D=0;D<u.length;D++){const e=E(String(D),u);t.push(void 0!==e?e:"null")}if(0===t.length)e="[]";else if(""===A){let u=t.join(",");e="["+u+"]"}else{let u=",\n"+a,r=t.join(u);e="[\n"+a+r+",\n"+D+"]"}return r.pop(),a=D,e}(e):function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,F=t||Object.keys(u),C=[];for(const D of F){const e=E(D,u);if(void 0!==e){let u=i(D)+":";""!==A&&(u+=" "),u+=e,C.push(u)}}if(0===C.length)e="{}";else{let u;if(""===A)u=C.join(","),e="{"+u+"}";else{let r=",\n"+a;u=C.join(r),e="{\n"+a+u+",\n"+D+"}"}}return r.pop(),a=D,e}(e):void 0}function n(u){const D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let r="";for(let t=0;t<u.length;t++){const F=u[t];switch(F){case"'":case'"':D[F]++,r+=F;continue;case"\0":if(util.isDigit(u[t+1])){r+="\\x00";continue}}if(e[F])r+=e[F];else if(F<" "){let u=F.charCodeAt(0).toString(16);r+="\\x"+("00"+u).substring(u.length)}else r+=F}const t=C||Object.keys(D).reduce((u,e)=>D[u]<D[e]?u:e);return t+(r=r.replace(new RegExp(t,"g"),e[t]))+t}function i(u){if(0===u.length)return n(u);const D=String.fromCodePoint(u.codePointAt(0));if(!util.isIdStartChar(D))return n(u);for(let e=D.length;e<u.length;e++)if(!util.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return n(u);return u}};const JSON5={parse:parse,stringify:stringify};var lib=JSON5;export default lib; diff --git a/node_modules/json5/dist/index.mjs b/node_modules/json5/dist/index.mjs new file mode 100644 index 0000000..8fe5073 --- /dev/null +++ b/node_modules/json5/dist/index.mjs @@ -0,0 +1,1399 @@ +// This is a generated file. Do not edit. +var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; +var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; +var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + +var unicode = { +	Space_Separator: Space_Separator, +	ID_Start: ID_Start, +	ID_Continue: ID_Continue +}; + +var util = { +    isSpaceSeparator (c) { +        return typeof c === 'string' && unicode.Space_Separator.test(c) +    }, + +    isIdStartChar (c) { +        return typeof c === 'string' && ( +            (c >= 'a' && c <= 'z') || +        (c >= 'A' && c <= 'Z') || +        (c === '$') || (c === '_') || +        unicode.ID_Start.test(c) +        ) +    }, + +    isIdContinueChar (c) { +        return typeof c === 'string' && ( +            (c >= 'a' && c <= 'z') || +        (c >= 'A' && c <= 'Z') || +        (c >= '0' && c <= '9') || +        (c === '$') || (c === '_') || +        (c === '\u200C') || (c === '\u200D') || +        unicode.ID_Continue.test(c) +        ) +    }, + +    isDigit (c) { +        return typeof c === 'string' && /[0-9]/.test(c) +    }, + +    isHexDigit (c) { +        return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) +    }, +}; + +let source; +let parseState; +let stack; +let pos; +let line; +let column; +let token; +let key; +let root; + +var parse = function parse (text, reviver) { +    source = String(text); +    parseState = 'start'; +    stack = []; +    pos = 0; +    line = 1; +    column = 0; +    token = undefined; +    key = undefined; +    root = undefined; + +    do { +        token = lex(); + +        // This code is unreachable. +        // if (!parseStates[parseState]) { +        //     throw invalidParseState() +        // } + +        parseStates[parseState](); +    } while (token.type !== 'eof') + +    if (typeof reviver === 'function') { +        return internalize({'': root}, '', reviver) +    } + +    return root +}; + +function internalize (holder, name, reviver) { +    const value = holder[name]; +    if (value != null && typeof value === 'object') { +        for (const key in value) { +            const replacement = internalize(value, key, reviver); +            if (replacement === undefined) { +                delete value[key]; +            } else { +                value[key] = replacement; +            } +        } +    } + +    return reviver.call(holder, name, value) +} + +let lexState; +let buffer; +let doubleQuote; +let sign; +let c; + +function lex () { +    lexState = 'default'; +    buffer = ''; +    doubleQuote = false; +    sign = 1; + +    for (;;) { +        c = peek(); + +        // This code is unreachable. +        // if (!lexStates[lexState]) { +        //     throw invalidLexState(lexState) +        // } + +        const token = lexStates[lexState](); +        if (token) { +            return token +        } +    } +} + +function peek () { +    if (source[pos]) { +        return String.fromCodePoint(source.codePointAt(pos)) +    } +} + +function read () { +    const c = peek(); + +    if (c === '\n') { +        line++; +        column = 0; +    } else if (c) { +        column += c.length; +    } else { +        column++; +    } + +    if (c) { +        pos += c.length; +    } + +    return c +} + +const lexStates = { +    default () { +        switch (c) { +        case '\t': +        case '\v': +        case '\f': +        case ' ': +        case '\u00A0': +        case '\uFEFF': +        case '\n': +        case '\r': +        case '\u2028': +        case '\u2029': +            read(); +            return + +        case '/': +            read(); +            lexState = 'comment'; +            return + +        case undefined: +            read(); +            return newToken('eof') +        } + +        if (util.isSpaceSeparator(c)) { +            read(); +            return +        } + +        // This code is unreachable. +        // if (!lexStates[parseState]) { +        //     throw invalidLexState(parseState) +        // } + +        return lexStates[parseState]() +    }, + +    comment () { +        switch (c) { +        case '*': +            read(); +            lexState = 'multiLineComment'; +            return + +        case '/': +            read(); +            lexState = 'singleLineComment'; +            return +        } + +        throw invalidChar(read()) +    }, + +    multiLineComment () { +        switch (c) { +        case '*': +            read(); +            lexState = 'multiLineCommentAsterisk'; +            return + +        case undefined: +            throw invalidChar(read()) +        } + +        read(); +    }, + +    multiLineCommentAsterisk () { +        switch (c) { +        case '*': +            read(); +            return + +        case '/': +            read(); +            lexState = 'default'; +            return + +        case undefined: +            throw invalidChar(read()) +        } + +        read(); +        lexState = 'multiLineComment'; +    }, + +    singleLineComment () { +        switch (c) { +        case '\n': +        case '\r': +        case '\u2028': +        case '\u2029': +            read(); +            lexState = 'default'; +            return + +        case undefined: +            read(); +            return newToken('eof') +        } + +        read(); +    }, + +    value () { +        switch (c) { +        case '{': +        case '[': +            return newToken('punctuator', read()) + +        case 'n': +            read(); +            literal('ull'); +            return newToken('null', null) + +        case 't': +            read(); +            literal('rue'); +            return newToken('boolean', true) + +        case 'f': +            read(); +            literal('alse'); +            return newToken('boolean', false) + +        case '-': +        case '+': +            if (read() === '-') { +                sign = -1; +            } + +            lexState = 'sign'; +            return + +        case '.': +            buffer = read(); +            lexState = 'decimalPointLeading'; +            return + +        case '0': +            buffer = read(); +            lexState = 'zero'; +            return + +        case '1': +        case '2': +        case '3': +        case '4': +        case '5': +        case '6': +        case '7': +        case '8': +        case '9': +            buffer = read(); +            lexState = 'decimalInteger'; +            return + +        case 'I': +            read(); +            literal('nfinity'); +            return newToken('numeric', Infinity) + +        case 'N': +            read(); +            literal('aN'); +            return newToken('numeric', NaN) + +        case '"': +        case "'": +            doubleQuote = (read() === '"'); +            buffer = ''; +            lexState = 'string'; +            return +        } + +        throw invalidChar(read()) +    }, + +    identifierNameStartEscape () { +        if (c !== 'u') { +            throw invalidChar(read()) +        } + +        read(); +        const u = unicodeEscape(); +        switch (u) { +        case '$': +        case '_': +            break + +        default: +            if (!util.isIdStartChar(u)) { +                throw invalidIdentifier() +            } + +            break +        } + +        buffer += u; +        lexState = 'identifierName'; +    }, + +    identifierName () { +        switch (c) { +        case '$': +        case '_': +        case '\u200C': +        case '\u200D': +            buffer += read(); +            return + +        case '\\': +            read(); +            lexState = 'identifierNameEscape'; +            return +        } + +        if (util.isIdContinueChar(c)) { +            buffer += read(); +            return +        } + +        return newToken('identifier', buffer) +    }, + +    identifierNameEscape () { +        if (c !== 'u') { +            throw invalidChar(read()) +        } + +        read(); +        const u = unicodeEscape(); +        switch (u) { +        case '$': +        case '_': +        case '\u200C': +        case '\u200D': +            break + +        default: +            if (!util.isIdContinueChar(u)) { +                throw invalidIdentifier() +            } + +            break +        } + +        buffer += u; +        lexState = 'identifierName'; +    }, + +    sign () { +        switch (c) { +        case '.': +            buffer = read(); +            lexState = 'decimalPointLeading'; +            return + +        case '0': +            buffer = read(); +            lexState = 'zero'; +            return + +        case '1': +        case '2': +        case '3': +        case '4': +        case '5': +        case '6': +        case '7': +        case '8': +        case '9': +            buffer = read(); +            lexState = 'decimalInteger'; +            return + +        case 'I': +            read(); +            literal('nfinity'); +            return newToken('numeric', sign * Infinity) + +        case 'N': +            read(); +            literal('aN'); +            return newToken('numeric', NaN) +        } + +        throw invalidChar(read()) +    }, + +    zero () { +        switch (c) { +        case '.': +            buffer += read(); +            lexState = 'decimalPoint'; +            return + +        case 'e': +        case 'E': +            buffer += read(); +            lexState = 'decimalExponent'; +            return + +        case 'x': +        case 'X': +            buffer += read(); +            lexState = 'hexadecimal'; +            return +        } + +        return newToken('numeric', sign * 0) +    }, + +    decimalInteger () { +        switch (c) { +        case '.': +            buffer += read(); +            lexState = 'decimalPoint'; +            return + +        case 'e': +        case 'E': +            buffer += read(); +            lexState = 'decimalExponent'; +            return +        } + +        if (util.isDigit(c)) { +            buffer += read(); +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalPointLeading () { +        if (util.isDigit(c)) { +            buffer += read(); +            lexState = 'decimalFraction'; +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalPoint () { +        switch (c) { +        case 'e': +        case 'E': +            buffer += read(); +            lexState = 'decimalExponent'; +            return +        } + +        if (util.isDigit(c)) { +            buffer += read(); +            lexState = 'decimalFraction'; +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalFraction () { +        switch (c) { +        case 'e': +        case 'E': +            buffer += read(); +            lexState = 'decimalExponent'; +            return +        } + +        if (util.isDigit(c)) { +            buffer += read(); +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalExponent () { +        switch (c) { +        case '+': +        case '-': +            buffer += read(); +            lexState = 'decimalExponentSign'; +            return +        } + +        if (util.isDigit(c)) { +            buffer += read(); +            lexState = 'decimalExponentInteger'; +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalExponentSign () { +        if (util.isDigit(c)) { +            buffer += read(); +            lexState = 'decimalExponentInteger'; +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalExponentInteger () { +        if (util.isDigit(c)) { +            buffer += read(); +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    hexadecimal () { +        if (util.isHexDigit(c)) { +            buffer += read(); +            lexState = 'hexadecimalInteger'; +            return +        } + +        throw invalidChar(read()) +    }, + +    hexadecimalInteger () { +        if (util.isHexDigit(c)) { +            buffer += read(); +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    string () { +        switch (c) { +        case '\\': +            read(); +            buffer += escape(); +            return + +        case '"': +            if (doubleQuote) { +                read(); +                return newToken('string', buffer) +            } + +            buffer += read(); +            return + +        case "'": +            if (!doubleQuote) { +                read(); +                return newToken('string', buffer) +            } + +            buffer += read(); +            return + +        case '\n': +        case '\r': +            throw invalidChar(read()) + +        case '\u2028': +        case '\u2029': +            separatorChar(c); +            break + +        case undefined: +            throw invalidChar(read()) +        } + +        buffer += read(); +    }, + +    start () { +        switch (c) { +        case '{': +        case '[': +            return newToken('punctuator', read()) + +        // This code is unreachable since the default lexState handles eof. +        // case undefined: +        //     return newToken('eof') +        } + +        lexState = 'value'; +    }, + +    beforePropertyName () { +        switch (c) { +        case '$': +        case '_': +            buffer = read(); +            lexState = 'identifierName'; +            return + +        case '\\': +            read(); +            lexState = 'identifierNameStartEscape'; +            return + +        case '}': +            return newToken('punctuator', read()) + +        case '"': +        case "'": +            doubleQuote = (read() === '"'); +            lexState = 'string'; +            return +        } + +        if (util.isIdStartChar(c)) { +            buffer += read(); +            lexState = 'identifierName'; +            return +        } + +        throw invalidChar(read()) +    }, + +    afterPropertyName () { +        if (c === ':') { +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    beforePropertyValue () { +        lexState = 'value'; +    }, + +    afterPropertyValue () { +        switch (c) { +        case ',': +        case '}': +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    beforeArrayValue () { +        if (c === ']') { +            return newToken('punctuator', read()) +        } + +        lexState = 'value'; +    }, + +    afterArrayValue () { +        switch (c) { +        case ',': +        case ']': +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    end () { +        // This code is unreachable since it's handled by the default lexState. +        // if (c === undefined) { +        //     read() +        //     return newToken('eof') +        // } + +        throw invalidChar(read()) +    }, +}; + +function newToken (type, value) { +    return { +        type, +        value, +        line, +        column, +    } +} + +function literal (s) { +    for (const c of s) { +        const p = peek(); + +        if (p !== c) { +            throw invalidChar(read()) +        } + +        read(); +    } +} + +function escape () { +    const c = peek(); +    switch (c) { +    case 'b': +        read(); +        return '\b' + +    case 'f': +        read(); +        return '\f' + +    case 'n': +        read(); +        return '\n' + +    case 'r': +        read(); +        return '\r' + +    case 't': +        read(); +        return '\t' + +    case 'v': +        read(); +        return '\v' + +    case '0': +        read(); +        if (util.isDigit(peek())) { +            throw invalidChar(read()) +        } + +        return '\0' + +    case 'x': +        read(); +        return hexEscape() + +    case 'u': +        read(); +        return unicodeEscape() + +    case '\n': +    case '\u2028': +    case '\u2029': +        read(); +        return '' + +    case '\r': +        read(); +        if (peek() === '\n') { +            read(); +        } + +        return '' + +    case '1': +    case '2': +    case '3': +    case '4': +    case '5': +    case '6': +    case '7': +    case '8': +    case '9': +        throw invalidChar(read()) + +    case undefined: +        throw invalidChar(read()) +    } + +    return read() +} + +function hexEscape () { +    let buffer = ''; +    let c = peek(); + +    if (!util.isHexDigit(c)) { +        throw invalidChar(read()) +    } + +    buffer += read(); + +    c = peek(); +    if (!util.isHexDigit(c)) { +        throw invalidChar(read()) +    } + +    buffer += read(); + +    return String.fromCodePoint(parseInt(buffer, 16)) +} + +function unicodeEscape () { +    let buffer = ''; +    let count = 4; + +    while (count-- > 0) { +        const c = peek(); +        if (!util.isHexDigit(c)) { +            throw invalidChar(read()) +        } + +        buffer += read(); +    } + +    return String.fromCodePoint(parseInt(buffer, 16)) +} + +const parseStates = { +    start () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        push(); +    }, + +    beforePropertyName () { +        switch (token.type) { +        case 'identifier': +        case 'string': +            key = token.value; +            parseState = 'afterPropertyName'; +            return + +        case 'punctuator': +            // This code is unreachable since it's handled by the lexState. +            // if (token.value !== '}') { +            //     throw invalidToken() +            // } + +            pop(); +            return + +        case 'eof': +            throw invalidEOF() +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    afterPropertyName () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator' || token.value !== ':') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        parseState = 'beforePropertyValue'; +    }, + +    beforePropertyValue () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        push(); +    }, + +    beforeArrayValue () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        if (token.type === 'punctuator' && token.value === ']') { +            pop(); +            return +        } + +        push(); +    }, + +    afterPropertyValue () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        switch (token.value) { +        case ',': +            parseState = 'beforePropertyName'; +            return + +        case '}': +            pop(); +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    afterArrayValue () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        switch (token.value) { +        case ',': +            parseState = 'beforeArrayValue'; +            return + +        case ']': +            pop(); +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    end () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'eof') { +        //     throw invalidToken() +        // } +    }, +}; + +function push () { +    let value; + +    switch (token.type) { +    case 'punctuator': +        switch (token.value) { +        case '{': +            value = {}; +            break + +        case '[': +            value = []; +            break +        } + +        break + +    case 'null': +    case 'boolean': +    case 'numeric': +    case 'string': +        value = token.value; +        break + +    // This code is unreachable. +    // default: +    //     throw invalidToken() +    } + +    if (root === undefined) { +        root = value; +    } else { +        const parent = stack[stack.length - 1]; +        if (Array.isArray(parent)) { +            parent.push(value); +        } else { +            parent[key] = value; +        } +    } + +    if (value !== null && typeof value === 'object') { +        stack.push(value); + +        if (Array.isArray(value)) { +            parseState = 'beforeArrayValue'; +        } else { +            parseState = 'beforePropertyName'; +        } +    } else { +        const current = stack[stack.length - 1]; +        if (current == null) { +            parseState = 'end'; +        } else if (Array.isArray(current)) { +            parseState = 'afterArrayValue'; +        } else { +            parseState = 'afterPropertyValue'; +        } +    } +} + +function pop () { +    stack.pop(); + +    const current = stack[stack.length - 1]; +    if (current == null) { +        parseState = 'end'; +    } else if (Array.isArray(current)) { +        parseState = 'afterArrayValue'; +    } else { +        parseState = 'afterPropertyValue'; +    } +} + +// This code is unreachable. +// function invalidParseState () { +//     return new Error(`JSON5: invalid parse state '${parseState}'`) +// } + +// This code is unreachable. +// function invalidLexState (state) { +//     return new Error(`JSON5: invalid lex state '${state}'`) +// } + +function invalidChar (c) { +    if (c === undefined) { +        return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +    } + +    return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +} + +function invalidEOF () { +    return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +} + +// This code is unreachable. +// function invalidToken () { +//     if (token.type === 'eof') { +//         return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +//     } + +//     const c = String.fromCodePoint(token.value.codePointAt(0)) +//     return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +// } + +function invalidIdentifier () { +    column -= 5; +    return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) +} + +function separatorChar (c) { +    console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`); +} + +function formatChar (c) { +    const replacements = { +        "'": "\\'", +        '"': '\\"', +        '\\': '\\\\', +        '\b': '\\b', +        '\f': '\\f', +        '\n': '\\n', +        '\r': '\\r', +        '\t': '\\t', +        '\v': '\\v', +        '\0': '\\0', +        '\u2028': '\\u2028', +        '\u2029': '\\u2029', +    }; + +    if (replacements[c]) { +        return replacements[c] +    } + +    if (c < ' ') { +        const hexString = c.charCodeAt(0).toString(16); +        return '\\x' + ('00' + hexString).substring(hexString.length) +    } + +    return c +} + +function syntaxError (message) { +    const err = new SyntaxError(message); +    err.lineNumber = line; +    err.columnNumber = column; +    return err +} + +var stringify = function stringify (value, replacer, space) { +    const stack = []; +    let indent = ''; +    let propertyList; +    let replacerFunc; +    let gap = ''; +    let quote; + +    if ( +        replacer != null && +        typeof replacer === 'object' && +        !Array.isArray(replacer) +    ) { +        space = replacer.space; +        quote = replacer.quote; +        replacer = replacer.replacer; +    } + +    if (typeof replacer === 'function') { +        replacerFunc = replacer; +    } else if (Array.isArray(replacer)) { +        propertyList = []; +        for (const v of replacer) { +            let item; + +            if (typeof v === 'string') { +                item = v; +            } else if ( +                typeof v === 'number' || +                v instanceof String || +                v instanceof Number +            ) { +                item = String(v); +            } + +            if (item !== undefined && propertyList.indexOf(item) < 0) { +                propertyList.push(item); +            } +        } +    } + +    if (space instanceof Number) { +        space = Number(space); +    } else if (space instanceof String) { +        space = String(space); +    } + +    if (typeof space === 'number') { +        if (space > 0) { +            space = Math.min(10, Math.floor(space)); +            gap = '          '.substr(0, space); +        } +    } else if (typeof space === 'string') { +        gap = space.substr(0, 10); +    } + +    return serializeProperty('', {'': value}) + +    function serializeProperty (key, holder) { +        let value = holder[key]; +        if (value != null) { +            if (typeof value.toJSON5 === 'function') { +                value = value.toJSON5(key); +            } else if (typeof value.toJSON === 'function') { +                value = value.toJSON(key); +            } +        } + +        if (replacerFunc) { +            value = replacerFunc.call(holder, key, value); +        } + +        if (value instanceof Number) { +            value = Number(value); +        } else if (value instanceof String) { +            value = String(value); +        } else if (value instanceof Boolean) { +            value = value.valueOf(); +        } + +        switch (value) { +        case null: return 'null' +        case true: return 'true' +        case false: return 'false' +        } + +        if (typeof value === 'string') { +            return quoteString(value, false) +        } + +        if (typeof value === 'number') { +            return String(value) +        } + +        if (typeof value === 'object') { +            return Array.isArray(value) ? serializeArray(value) : serializeObject(value) +        } + +        return undefined +    } + +    function quoteString (value) { +        const quotes = { +            "'": 0.1, +            '"': 0.2, +        }; + +        const replacements = { +            "'": "\\'", +            '"': '\\"', +            '\\': '\\\\', +            '\b': '\\b', +            '\f': '\\f', +            '\n': '\\n', +            '\r': '\\r', +            '\t': '\\t', +            '\v': '\\v', +            '\0': '\\0', +            '\u2028': '\\u2028', +            '\u2029': '\\u2029', +        }; + +        let product = ''; + +        for (let i = 0; i < value.length; i++) { +            const c = value[i]; +            switch (c) { +            case "'": +            case '"': +                quotes[c]++; +                product += c; +                continue + +            case '\0': +                if (util.isDigit(value[i + 1])) { +                    product += '\\x00'; +                    continue +                } +            } + +            if (replacements[c]) { +                product += replacements[c]; +                continue +            } + +            if (c < ' ') { +                let hexString = c.charCodeAt(0).toString(16); +                product += '\\x' + ('00' + hexString).substring(hexString.length); +                continue +            } + +            product += c; +        } + +        const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b); + +        product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); + +        return quoteChar + product + quoteChar +    } + +    function serializeObject (value) { +        if (stack.indexOf(value) >= 0) { +            throw TypeError('Converting circular structure to JSON5') +        } + +        stack.push(value); + +        let stepback = indent; +        indent = indent + gap; + +        let keys = propertyList || Object.keys(value); +        let partial = []; +        for (const key of keys) { +            const propertyString = serializeProperty(key, value); +            if (propertyString !== undefined) { +                let member = serializeKey(key) + ':'; +                if (gap !== '') { +                    member += ' '; +                } +                member += propertyString; +                partial.push(member); +            } +        } + +        let final; +        if (partial.length === 0) { +            final = '{}'; +        } else { +            let properties; +            if (gap === '') { +                properties = partial.join(','); +                final = '{' + properties + '}'; +            } else { +                let separator = ',\n' + indent; +                properties = partial.join(separator); +                final = '{\n' + indent + properties + ',\n' + stepback + '}'; +            } +        } + +        stack.pop(); +        indent = stepback; +        return final +    } + +    function serializeKey (key) { +        if (key.length === 0) { +            return quoteString(key, true) +        } + +        const firstChar = String.fromCodePoint(key.codePointAt(0)); +        if (!util.isIdStartChar(firstChar)) { +            return quoteString(key, true) +        } + +        for (let i = firstChar.length; i < key.length; i++) { +            if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { +                return quoteString(key, true) +            } +        } + +        return key +    } + +    function serializeArray (value) { +        if (stack.indexOf(value) >= 0) { +            throw TypeError('Converting circular structure to JSON5') +        } + +        stack.push(value); + +        let stepback = indent; +        indent = indent + gap; + +        let partial = []; +        for (let i = 0; i < value.length; i++) { +            const propertyString = serializeProperty(String(i), value); +            partial.push((propertyString !== undefined) ? propertyString : 'null'); +        } + +        let final; +        if (partial.length === 0) { +            final = '[]'; +        } else { +            if (gap === '') { +                let properties = partial.join(','); +                final = '[' + properties + ']'; +            } else { +                let separator = ',\n' + indent; +                let properties = partial.join(separator); +                final = '[\n' + indent + properties + ',\n' + stepback + ']'; +            } +        } + +        stack.pop(); +        indent = stepback; +        return final +    } +}; + +const JSON5 = { +    parse, +    stringify, +}; + +var lib = JSON5; + +export default lib; diff --git a/node_modules/json5/lib/cli.js b/node_modules/json5/lib/cli.js new file mode 100755 index 0000000..de852f1 --- /dev/null +++ b/node_modules/json5/lib/cli.js @@ -0,0 +1,112 @@ +#!/usr/bin/env node + +const fs = require('fs') +const path = require('path') +const minimist = require('minimist') +const pkg = require('../package.json') +const JSON5 = require('./') + +const argv = minimist(process.argv.slice(2), { +    alias: { +        'convert': 'c', +        'space': 's', +        'validate': 'v', +        'out-file': 'o', +        'version': 'V', +        'help': 'h', +    }, +    boolean: [ +        'convert', +        'validate', +        'version', +        'help', +    ], +    string: [ +        'space', +        'out-file', +    ], +}) + +if (argv.version) { +    version() +} else if (argv.help) { +    usage() +} else { +    const inFilename = argv._[0] + +    let readStream +    if (inFilename) { +        readStream = fs.createReadStream(inFilename) +    } else { +        readStream = process.stdin +    } + +    let json5 = '' +    readStream.on('data', data => { +        json5 += data +    }) + +    readStream.on('end', () => { +        let space +        if (argv.space === 't' || argv.space === 'tab') { +            space = '\t' +        } else { +            space = Number(argv.space) +        } + +        let value +        try { +            value = JSON5.parse(json5) +            if (!argv.validate) { +                const json = JSON.stringify(value, null, space) + +                let writeStream + +                // --convert is for backward compatibility with v0.5.1. If +                // specified with <file> and not --out-file, then a file with +                // the same name but with a .json extension will be written. +                if (argv.convert && inFilename && !argv.o) { +                    const parsedFilename = path.parse(inFilename) +                    const outFilename = path.format( +                        Object.assign( +                            parsedFilename, +                            {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'} +                        ) +                    ) + +                    writeStream = fs.createWriteStream(outFilename) +                } else if (argv.o) { +                    writeStream = fs.createWriteStream(argv.o) +                } else { +                    writeStream = process.stdout +                } + +                writeStream.write(json) +            } +        } catch (err) { +            console.error(err.message) +            process.exit(1) +        } +    }) +} + +function version () { +    console.log(pkg.version) +} + +function usage () { +    console.log( +        ` +  Usage: json5 [options] <file> + +  If <file> is not provided, then STDIN is used. + +  Options: + +    -s, --space              The number of spaces to indent or 't' for tabs +    -o, --out-file [file]    Output to the specified file, otherwise STDOUT +    -v, --validate           Validate JSON5 but do not output JSON +    -V, --version            Output the version number +    -h, --help               Output usage information` +    ) +} diff --git a/node_modules/json5/lib/index.d.ts b/node_modules/json5/lib/index.d.ts new file mode 100644 index 0000000..1c45bca --- /dev/null +++ b/node_modules/json5/lib/index.d.ts @@ -0,0 +1,4 @@ +import parse = require('./parse') +import stringify = require('./stringify') + +export {parse, stringify} diff --git a/node_modules/json5/lib/index.js b/node_modules/json5/lib/index.js new file mode 100644 index 0000000..3679638 --- /dev/null +++ b/node_modules/json5/lib/index.js @@ -0,0 +1,9 @@ +const parse = require('./parse') +const stringify = require('./stringify') + +const JSON5 = { +    parse, +    stringify, +} + +module.exports = JSON5 diff --git a/node_modules/json5/lib/parse.d.ts b/node_modules/json5/lib/parse.d.ts new file mode 100644 index 0000000..8c8d883 --- /dev/null +++ b/node_modules/json5/lib/parse.d.ts @@ -0,0 +1,15 @@ +/** + * Parses a JSON5 string, constructing the JavaScript value or object described + * by the string. + * @template T The type of the return value. + * @param text The string to parse as JSON5. + * @param reviver A function that prescribes how the value originally produced + * by parsing is transformed before being returned. + * @returns The JavaScript value converted from the JSON5 string. + */ +declare function parse<T = any>( +    text: string, +    reviver?: ((this: any, key: string, value: any) => any) | null, +): T + +export = parse diff --git a/node_modules/json5/lib/parse.js b/node_modules/json5/lib/parse.js new file mode 100644 index 0000000..c01646f --- /dev/null +++ b/node_modules/json5/lib/parse.js @@ -0,0 +1,1087 @@ +const util = require('./util') + +let source +let parseState +let stack +let pos +let line +let column +let token +let key +let root + +module.exports = function parse (text, reviver) { +    source = String(text) +    parseState = 'start' +    stack = [] +    pos = 0 +    line = 1 +    column = 0 +    token = undefined +    key = undefined +    root = undefined + +    do { +        token = lex() + +        // This code is unreachable. +        // if (!parseStates[parseState]) { +        //     throw invalidParseState() +        // } + +        parseStates[parseState]() +    } while (token.type !== 'eof') + +    if (typeof reviver === 'function') { +        return internalize({'': root}, '', reviver) +    } + +    return root +} + +function internalize (holder, name, reviver) { +    const value = holder[name] +    if (value != null && typeof value === 'object') { +        for (const key in value) { +            const replacement = internalize(value, key, reviver) +            if (replacement === undefined) { +                delete value[key] +            } else { +                value[key] = replacement +            } +        } +    } + +    return reviver.call(holder, name, value) +} + +let lexState +let buffer +let doubleQuote +let sign +let c + +function lex () { +    lexState = 'default' +    buffer = '' +    doubleQuote = false +    sign = 1 + +    for (;;) { +        c = peek() + +        // This code is unreachable. +        // if (!lexStates[lexState]) { +        //     throw invalidLexState(lexState) +        // } + +        const token = lexStates[lexState]() +        if (token) { +            return token +        } +    } +} + +function peek () { +    if (source[pos]) { +        return String.fromCodePoint(source.codePointAt(pos)) +    } +} + +function read () { +    const c = peek() + +    if (c === '\n') { +        line++ +        column = 0 +    } else if (c) { +        column += c.length +    } else { +        column++ +    } + +    if (c) { +        pos += c.length +    } + +    return c +} + +const lexStates = { +    default () { +        switch (c) { +        case '\t': +        case '\v': +        case '\f': +        case ' ': +        case '\u00A0': +        case '\uFEFF': +        case '\n': +        case '\r': +        case '\u2028': +        case '\u2029': +            read() +            return + +        case '/': +            read() +            lexState = 'comment' +            return + +        case undefined: +            read() +            return newToken('eof') +        } + +        if (util.isSpaceSeparator(c)) { +            read() +            return +        } + +        // This code is unreachable. +        // if (!lexStates[parseState]) { +        //     throw invalidLexState(parseState) +        // } + +        return lexStates[parseState]() +    }, + +    comment () { +        switch (c) { +        case '*': +            read() +            lexState = 'multiLineComment' +            return + +        case '/': +            read() +            lexState = 'singleLineComment' +            return +        } + +        throw invalidChar(read()) +    }, + +    multiLineComment () { +        switch (c) { +        case '*': +            read() +            lexState = 'multiLineCommentAsterisk' +            return + +        case undefined: +            throw invalidChar(read()) +        } + +        read() +    }, + +    multiLineCommentAsterisk () { +        switch (c) { +        case '*': +            read() +            return + +        case '/': +            read() +            lexState = 'default' +            return + +        case undefined: +            throw invalidChar(read()) +        } + +        read() +        lexState = 'multiLineComment' +    }, + +    singleLineComment () { +        switch (c) { +        case '\n': +        case '\r': +        case '\u2028': +        case '\u2029': +            read() +            lexState = 'default' +            return + +        case undefined: +            read() +            return newToken('eof') +        } + +        read() +    }, + +    value () { +        switch (c) { +        case '{': +        case '[': +            return newToken('punctuator', read()) + +        case 'n': +            read() +            literal('ull') +            return newToken('null', null) + +        case 't': +            read() +            literal('rue') +            return newToken('boolean', true) + +        case 'f': +            read() +            literal('alse') +            return newToken('boolean', false) + +        case '-': +        case '+': +            if (read() === '-') { +                sign = -1 +            } + +            lexState = 'sign' +            return + +        case '.': +            buffer = read() +            lexState = 'decimalPointLeading' +            return + +        case '0': +            buffer = read() +            lexState = 'zero' +            return + +        case '1': +        case '2': +        case '3': +        case '4': +        case '5': +        case '6': +        case '7': +        case '8': +        case '9': +            buffer = read() +            lexState = 'decimalInteger' +            return + +        case 'I': +            read() +            literal('nfinity') +            return newToken('numeric', Infinity) + +        case 'N': +            read() +            literal('aN') +            return newToken('numeric', NaN) + +        case '"': +        case "'": +            doubleQuote = (read() === '"') +            buffer = '' +            lexState = 'string' +            return +        } + +        throw invalidChar(read()) +    }, + +    identifierNameStartEscape () { +        if (c !== 'u') { +            throw invalidChar(read()) +        } + +        read() +        const u = unicodeEscape() +        switch (u) { +        case '$': +        case '_': +            break + +        default: +            if (!util.isIdStartChar(u)) { +                throw invalidIdentifier() +            } + +            break +        } + +        buffer += u +        lexState = 'identifierName' +    }, + +    identifierName () { +        switch (c) { +        case '$': +        case '_': +        case '\u200C': +        case '\u200D': +            buffer += read() +            return + +        case '\\': +            read() +            lexState = 'identifierNameEscape' +            return +        } + +        if (util.isIdContinueChar(c)) { +            buffer += read() +            return +        } + +        return newToken('identifier', buffer) +    }, + +    identifierNameEscape () { +        if (c !== 'u') { +            throw invalidChar(read()) +        } + +        read() +        const u = unicodeEscape() +        switch (u) { +        case '$': +        case '_': +        case '\u200C': +        case '\u200D': +            break + +        default: +            if (!util.isIdContinueChar(u)) { +                throw invalidIdentifier() +            } + +            break +        } + +        buffer += u +        lexState = 'identifierName' +    }, + +    sign () { +        switch (c) { +        case '.': +            buffer = read() +            lexState = 'decimalPointLeading' +            return + +        case '0': +            buffer = read() +            lexState = 'zero' +            return + +        case '1': +        case '2': +        case '3': +        case '4': +        case '5': +        case '6': +        case '7': +        case '8': +        case '9': +            buffer = read() +            lexState = 'decimalInteger' +            return + +        case 'I': +            read() +            literal('nfinity') +            return newToken('numeric', sign * Infinity) + +        case 'N': +            read() +            literal('aN') +            return newToken('numeric', NaN) +        } + +        throw invalidChar(read()) +    }, + +    zero () { +        switch (c) { +        case '.': +            buffer += read() +            lexState = 'decimalPoint' +            return + +        case 'e': +        case 'E': +            buffer += read() +            lexState = 'decimalExponent' +            return + +        case 'x': +        case 'X': +            buffer += read() +            lexState = 'hexadecimal' +            return +        } + +        return newToken('numeric', sign * 0) +    }, + +    decimalInteger () { +        switch (c) { +        case '.': +            buffer += read() +            lexState = 'decimalPoint' +            return + +        case 'e': +        case 'E': +            buffer += read() +            lexState = 'decimalExponent' +            return +        } + +        if (util.isDigit(c)) { +            buffer += read() +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalPointLeading () { +        if (util.isDigit(c)) { +            buffer += read() +            lexState = 'decimalFraction' +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalPoint () { +        switch (c) { +        case 'e': +        case 'E': +            buffer += read() +            lexState = 'decimalExponent' +            return +        } + +        if (util.isDigit(c)) { +            buffer += read() +            lexState = 'decimalFraction' +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalFraction () { +        switch (c) { +        case 'e': +        case 'E': +            buffer += read() +            lexState = 'decimalExponent' +            return +        } + +        if (util.isDigit(c)) { +            buffer += read() +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    decimalExponent () { +        switch (c) { +        case '+': +        case '-': +            buffer += read() +            lexState = 'decimalExponentSign' +            return +        } + +        if (util.isDigit(c)) { +            buffer += read() +            lexState = 'decimalExponentInteger' +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalExponentSign () { +        if (util.isDigit(c)) { +            buffer += read() +            lexState = 'decimalExponentInteger' +            return +        } + +        throw invalidChar(read()) +    }, + +    decimalExponentInteger () { +        if (util.isDigit(c)) { +            buffer += read() +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    hexadecimal () { +        if (util.isHexDigit(c)) { +            buffer += read() +            lexState = 'hexadecimalInteger' +            return +        } + +        throw invalidChar(read()) +    }, + +    hexadecimalInteger () { +        if (util.isHexDigit(c)) { +            buffer += read() +            return +        } + +        return newToken('numeric', sign * Number(buffer)) +    }, + +    string () { +        switch (c) { +        case '\\': +            read() +            buffer += escape() +            return + +        case '"': +            if (doubleQuote) { +                read() +                return newToken('string', buffer) +            } + +            buffer += read() +            return + +        case "'": +            if (!doubleQuote) { +                read() +                return newToken('string', buffer) +            } + +            buffer += read() +            return + +        case '\n': +        case '\r': +            throw invalidChar(read()) + +        case '\u2028': +        case '\u2029': +            separatorChar(c) +            break + +        case undefined: +            throw invalidChar(read()) +        } + +        buffer += read() +    }, + +    start () { +        switch (c) { +        case '{': +        case '[': +            return newToken('punctuator', read()) + +        // This code is unreachable since the default lexState handles eof. +        // case undefined: +        //     return newToken('eof') +        } + +        lexState = 'value' +    }, + +    beforePropertyName () { +        switch (c) { +        case '$': +        case '_': +            buffer = read() +            lexState = 'identifierName' +            return + +        case '\\': +            read() +            lexState = 'identifierNameStartEscape' +            return + +        case '}': +            return newToken('punctuator', read()) + +        case '"': +        case "'": +            doubleQuote = (read() === '"') +            lexState = 'string' +            return +        } + +        if (util.isIdStartChar(c)) { +            buffer += read() +            lexState = 'identifierName' +            return +        } + +        throw invalidChar(read()) +    }, + +    afterPropertyName () { +        if (c === ':') { +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    beforePropertyValue () { +        lexState = 'value' +    }, + +    afterPropertyValue () { +        switch (c) { +        case ',': +        case '}': +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    beforeArrayValue () { +        if (c === ']') { +            return newToken('punctuator', read()) +        } + +        lexState = 'value' +    }, + +    afterArrayValue () { +        switch (c) { +        case ',': +        case ']': +            return newToken('punctuator', read()) +        } + +        throw invalidChar(read()) +    }, + +    end () { +        // This code is unreachable since it's handled by the default lexState. +        // if (c === undefined) { +        //     read() +        //     return newToken('eof') +        // } + +        throw invalidChar(read()) +    }, +} + +function newToken (type, value) { +    return { +        type, +        value, +        line, +        column, +    } +} + +function literal (s) { +    for (const c of s) { +        const p = peek() + +        if (p !== c) { +            throw invalidChar(read()) +        } + +        read() +    } +} + +function escape () { +    const c = peek() +    switch (c) { +    case 'b': +        read() +        return '\b' + +    case 'f': +        read() +        return '\f' + +    case 'n': +        read() +        return '\n' + +    case 'r': +        read() +        return '\r' + +    case 't': +        read() +        return '\t' + +    case 'v': +        read() +        return '\v' + +    case '0': +        read() +        if (util.isDigit(peek())) { +            throw invalidChar(read()) +        } + +        return '\0' + +    case 'x': +        read() +        return hexEscape() + +    case 'u': +        read() +        return unicodeEscape() + +    case '\n': +    case '\u2028': +    case '\u2029': +        read() +        return '' + +    case '\r': +        read() +        if (peek() === '\n') { +            read() +        } + +        return '' + +    case '1': +    case '2': +    case '3': +    case '4': +    case '5': +    case '6': +    case '7': +    case '8': +    case '9': +        throw invalidChar(read()) + +    case undefined: +        throw invalidChar(read()) +    } + +    return read() +} + +function hexEscape () { +    let buffer = '' +    let c = peek() + +    if (!util.isHexDigit(c)) { +        throw invalidChar(read()) +    } + +    buffer += read() + +    c = peek() +    if (!util.isHexDigit(c)) { +        throw invalidChar(read()) +    } + +    buffer += read() + +    return String.fromCodePoint(parseInt(buffer, 16)) +} + +function unicodeEscape () { +    let buffer = '' +    let count = 4 + +    while (count-- > 0) { +        const c = peek() +        if (!util.isHexDigit(c)) { +            throw invalidChar(read()) +        } + +        buffer += read() +    } + +    return String.fromCodePoint(parseInt(buffer, 16)) +} + +const parseStates = { +    start () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        push() +    }, + +    beforePropertyName () { +        switch (token.type) { +        case 'identifier': +        case 'string': +            key = token.value +            parseState = 'afterPropertyName' +            return + +        case 'punctuator': +            // This code is unreachable since it's handled by the lexState. +            // if (token.value !== '}') { +            //     throw invalidToken() +            // } + +            pop() +            return + +        case 'eof': +            throw invalidEOF() +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    afterPropertyName () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator' || token.value !== ':') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        parseState = 'beforePropertyValue' +    }, + +    beforePropertyValue () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        push() +    }, + +    beforeArrayValue () { +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        if (token.type === 'punctuator' && token.value === ']') { +            pop() +            return +        } + +        push() +    }, + +    afterPropertyValue () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        switch (token.value) { +        case ',': +            parseState = 'beforePropertyName' +            return + +        case '}': +            pop() +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    afterArrayValue () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'punctuator') { +        //     throw invalidToken() +        // } + +        if (token.type === 'eof') { +            throw invalidEOF() +        } + +        switch (token.value) { +        case ',': +            parseState = 'beforeArrayValue' +            return + +        case ']': +            pop() +        } + +        // This code is unreachable since it's handled by the lexState. +        // throw invalidToken() +    }, + +    end () { +        // This code is unreachable since it's handled by the lexState. +        // if (token.type !== 'eof') { +        //     throw invalidToken() +        // } +    }, +} + +function push () { +    let value + +    switch (token.type) { +    case 'punctuator': +        switch (token.value) { +        case '{': +            value = {} +            break + +        case '[': +            value = [] +            break +        } + +        break + +    case 'null': +    case 'boolean': +    case 'numeric': +    case 'string': +        value = token.value +        break + +    // This code is unreachable. +    // default: +    //     throw invalidToken() +    } + +    if (root === undefined) { +        root = value +    } else { +        const parent = stack[stack.length - 1] +        if (Array.isArray(parent)) { +            parent.push(value) +        } else { +            parent[key] = value +        } +    } + +    if (value !== null && typeof value === 'object') { +        stack.push(value) + +        if (Array.isArray(value)) { +            parseState = 'beforeArrayValue' +        } else { +            parseState = 'beforePropertyName' +        } +    } else { +        const current = stack[stack.length - 1] +        if (current == null) { +            parseState = 'end' +        } else if (Array.isArray(current)) { +            parseState = 'afterArrayValue' +        } else { +            parseState = 'afterPropertyValue' +        } +    } +} + +function pop () { +    stack.pop() + +    const current = stack[stack.length - 1] +    if (current == null) { +        parseState = 'end' +    } else if (Array.isArray(current)) { +        parseState = 'afterArrayValue' +    } else { +        parseState = 'afterPropertyValue' +    } +} + +// This code is unreachable. +// function invalidParseState () { +//     return new Error(`JSON5: invalid parse state '${parseState}'`) +// } + +// This code is unreachable. +// function invalidLexState (state) { +//     return new Error(`JSON5: invalid lex state '${state}'`) +// } + +function invalidChar (c) { +    if (c === undefined) { +        return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +    } + +    return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +} + +function invalidEOF () { +    return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +} + +// This code is unreachable. +// function invalidToken () { +//     if (token.type === 'eof') { +//         return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) +//     } + +//     const c = String.fromCodePoint(token.value.codePointAt(0)) +//     return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) +// } + +function invalidIdentifier () { +    column -= 5 +    return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`) +} + +function separatorChar (c) { +    console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`) +} + +function formatChar (c) { +    const replacements = { +        "'": "\\'", +        '"': '\\"', +        '\\': '\\\\', +        '\b': '\\b', +        '\f': '\\f', +        '\n': '\\n', +        '\r': '\\r', +        '\t': '\\t', +        '\v': '\\v', +        '\0': '\\0', +        '\u2028': '\\u2028', +        '\u2029': '\\u2029', +    } + +    if (replacements[c]) { +        return replacements[c] +    } + +    if (c < ' ') { +        const hexString = c.charCodeAt(0).toString(16) +        return '\\x' + ('00' + hexString).substring(hexString.length) +    } + +    return c +} + +function syntaxError (message) { +    const err = new SyntaxError(message) +    err.lineNumber = line +    err.columnNumber = column +    return err +} diff --git a/node_modules/json5/lib/register.js b/node_modules/json5/lib/register.js new file mode 100644 index 0000000..935cdba --- /dev/null +++ b/node_modules/json5/lib/register.js @@ -0,0 +1,13 @@ +const fs = require('fs') +const JSON5 = require('./') + +// eslint-disable-next-line node/no-deprecated-api +require.extensions['.json5'] = function (module, filename) { +    const content = fs.readFileSync(filename, 'utf8') +    try { +        module.exports = JSON5.parse(content) +    } catch (err) { +        err.message = filename + ': ' + err.message +        throw err +    } +} diff --git a/node_modules/json5/lib/require.js b/node_modules/json5/lib/require.js new file mode 100644 index 0000000..3aa29be --- /dev/null +++ b/node_modules/json5/lib/require.js @@ -0,0 +1,4 @@ +// This file is for backward compatibility with v0.5.1. +require('./register') + +console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.") diff --git a/node_modules/json5/lib/stringify.d.ts b/node_modules/json5/lib/stringify.d.ts new file mode 100644 index 0000000..3c34838 --- /dev/null +++ b/node_modules/json5/lib/stringify.d.ts @@ -0,0 +1,89 @@ +declare type StringifyOptions = { +    /** +     * A function that alters the behavior of the stringification process, or an +     * array of String and Number objects that serve as a allowlist 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. +     */ +    replacer?: +        | ((this: any, key: string, value: any) => any) +        | (string | number)[] +        | null + +    /** +     * 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. +     */ +    space?: string | number | null + +    /** +     * A String representing the quote character to use when serializing +     * strings. +     */ +    quote?: string | null +} + +/** + * Converts a JavaScript value to a JSON5 string. + * @param value The value to convert to a JSON5 string. + * @param replacer A function that alters the behavior of the stringification + * process. If this value is null or not provided, all properties of the object + * are included in the resulting JSON5 string. + * @param 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. + * @returns The JSON5 string converted from the JavaScript value. + */ +declare function stringify( +    value: any, +    replacer?: ((this: any, key: string, value: any) => any) | null, +    space?: string | number | null, +): string + +/** + * Converts a JavaScript value to a JSON5 string. + * @param value The value to convert to a JSON5 string. + * @param replacer An array of String and Number objects that serve as a + * allowlist 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. + * @param 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. + * @returns The JSON5 string converted from the JavaScript value. + */ +declare function stringify( +    value: any, +    replacer: (string | number)[], +    space?: string | number | null, +): string + +/** + * Converts a JavaScript value to a JSON5 string. + * @param value The value to convert to a JSON5 string. + * @param options An object specifying options. + * @returns The JSON5 string converted from the JavaScript value. + */ +declare function stringify(value: any, options: StringifyOptions): string + +export = stringify diff --git a/node_modules/json5/lib/stringify.js b/node_modules/json5/lib/stringify.js new file mode 100644 index 0000000..7cb3b0e --- /dev/null +++ b/node_modules/json5/lib/stringify.js @@ -0,0 +1,261 @@ +const util = require('./util') + +module.exports = function stringify (value, replacer, space) { +    const stack = [] +    let indent = '' +    let propertyList +    let replacerFunc +    let gap = '' +    let quote + +    if ( +        replacer != null && +        typeof replacer === 'object' && +        !Array.isArray(replacer) +    ) { +        space = replacer.space +        quote = replacer.quote +        replacer = replacer.replacer +    } + +    if (typeof replacer === 'function') { +        replacerFunc = replacer +    } else if (Array.isArray(replacer)) { +        propertyList = [] +        for (const v of replacer) { +            let item + +            if (typeof v === 'string') { +                item = v +            } else if ( +                typeof v === 'number' || +                v instanceof String || +                v instanceof Number +            ) { +                item = String(v) +            } + +            if (item !== undefined && propertyList.indexOf(item) < 0) { +                propertyList.push(item) +            } +        } +    } + +    if (space instanceof Number) { +        space = Number(space) +    } else if (space instanceof String) { +        space = String(space) +    } + +    if (typeof space === 'number') { +        if (space > 0) { +            space = Math.min(10, Math.floor(space)) +            gap = '          '.substr(0, space) +        } +    } else if (typeof space === 'string') { +        gap = space.substr(0, 10) +    } + +    return serializeProperty('', {'': value}) + +    function serializeProperty (key, holder) { +        let value = holder[key] +        if (value != null) { +            if (typeof value.toJSON5 === 'function') { +                value = value.toJSON5(key) +            } else if (typeof value.toJSON === 'function') { +                value = value.toJSON(key) +            } +        } + +        if (replacerFunc) { +            value = replacerFunc.call(holder, key, value) +        } + +        if (value instanceof Number) { +            value = Number(value) +        } else if (value instanceof String) { +            value = String(value) +        } else if (value instanceof Boolean) { +            value = value.valueOf() +        } + +        switch (value) { +        case null: return 'null' +        case true: return 'true' +        case false: return 'false' +        } + +        if (typeof value === 'string') { +            return quoteString(value, false) +        } + +        if (typeof value === 'number') { +            return String(value) +        } + +        if (typeof value === 'object') { +            return Array.isArray(value) ? serializeArray(value) : serializeObject(value) +        } + +        return undefined +    } + +    function quoteString (value) { +        const quotes = { +            "'": 0.1, +            '"': 0.2, +        } + +        const replacements = { +            "'": "\\'", +            '"': '\\"', +            '\\': '\\\\', +            '\b': '\\b', +            '\f': '\\f', +            '\n': '\\n', +            '\r': '\\r', +            '\t': '\\t', +            '\v': '\\v', +            '\0': '\\0', +            '\u2028': '\\u2028', +            '\u2029': '\\u2029', +        } + +        let product = '' + +        for (let i = 0; i < value.length; i++) { +            const c = value[i] +            switch (c) { +            case "'": +            case '"': +                quotes[c]++ +                product += c +                continue + +            case '\0': +                if (util.isDigit(value[i + 1])) { +                    product += '\\x00' +                    continue +                } +            } + +            if (replacements[c]) { +                product += replacements[c] +                continue +            } + +            if (c < ' ') { +                let hexString = c.charCodeAt(0).toString(16) +                product += '\\x' + ('00' + hexString).substring(hexString.length) +                continue +            } + +            product += c +        } + +        const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b) + +        product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]) + +        return quoteChar + product + quoteChar +    } + +    function serializeObject (value) { +        if (stack.indexOf(value) >= 0) { +            throw TypeError('Converting circular structure to JSON5') +        } + +        stack.push(value) + +        let stepback = indent +        indent = indent + gap + +        let keys = propertyList || Object.keys(value) +        let partial = [] +        for (const key of keys) { +            const propertyString = serializeProperty(key, value) +            if (propertyString !== undefined) { +                let member = serializeKey(key) + ':' +                if (gap !== '') { +                    member += ' ' +                } +                member += propertyString +                partial.push(member) +            } +        } + +        let final +        if (partial.length === 0) { +            final = '{}' +        } else { +            let properties +            if (gap === '') { +                properties = partial.join(',') +                final = '{' + properties + '}' +            } else { +                let separator = ',\n' + indent +                properties = partial.join(separator) +                final = '{\n' + indent + properties + ',\n' + stepback + '}' +            } +        } + +        stack.pop() +        indent = stepback +        return final +    } + +    function serializeKey (key) { +        if (key.length === 0) { +            return quoteString(key, true) +        } + +        const firstChar = String.fromCodePoint(key.codePointAt(0)) +        if (!util.isIdStartChar(firstChar)) { +            return quoteString(key, true) +        } + +        for (let i = firstChar.length; i < key.length; i++) { +            if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { +                return quoteString(key, true) +            } +        } + +        return key +    } + +    function serializeArray (value) { +        if (stack.indexOf(value) >= 0) { +            throw TypeError('Converting circular structure to JSON5') +        } + +        stack.push(value) + +        let stepback = indent +        indent = indent + gap + +        let partial = [] +        for (let i = 0; i < value.length; i++) { +            const propertyString = serializeProperty(String(i), value) +            partial.push((propertyString !== undefined) ? propertyString : 'null') +        } + +        let final +        if (partial.length === 0) { +            final = '[]' +        } else { +            if (gap === '') { +                let properties = partial.join(',') +                final = '[' + properties + ']' +            } else { +                let separator = ',\n' + indent +                let properties = partial.join(separator) +                final = '[\n' + indent + properties + ',\n' + stepback + ']' +            } +        } + +        stack.pop() +        indent = stepback +        return final +    } +} diff --git a/node_modules/json5/lib/unicode.d.ts b/node_modules/json5/lib/unicode.d.ts new file mode 100644 index 0000000..610f805 --- /dev/null +++ b/node_modules/json5/lib/unicode.d.ts @@ -0,0 +1,3 @@ +export declare const Space_Separator: RegExp +export declare const ID_Start: RegExp +export declare const ID_Continue: RegExp diff --git a/node_modules/json5/lib/unicode.js b/node_modules/json5/lib/unicode.js new file mode 100644 index 0000000..215ccd8 --- /dev/null +++ b/node_modules/json5/lib/unicode.js @@ -0,0 +1,4 @@ +// This is a generated file. Do not edit. +module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/ +module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/ +module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ diff --git a/node_modules/json5/lib/util.d.ts b/node_modules/json5/lib/util.d.ts new file mode 100644 index 0000000..a940cea --- /dev/null +++ b/node_modules/json5/lib/util.d.ts @@ -0,0 +1,5 @@ +export declare function isSpaceSeparator(c?: string): boolean +export declare function isIdStartChar(c?: string): boolean +export declare function isIdContinueChar(c?: string): boolean +export declare function isDigit(c?: string): boolean +export declare function isHexDigit(c?: string): boolean diff --git a/node_modules/json5/lib/util.js b/node_modules/json5/lib/util.js new file mode 100644 index 0000000..40bfe2f --- /dev/null +++ b/node_modules/json5/lib/util.js @@ -0,0 +1,35 @@ +const unicode = require('../lib/unicode') + +module.exports = { +    isSpaceSeparator (c) { +        return typeof c === 'string' && unicode.Space_Separator.test(c) +    }, + +    isIdStartChar (c) { +        return typeof c === 'string' && ( +            (c >= 'a' && c <= 'z') || +        (c >= 'A' && c <= 'Z') || +        (c === '$') || (c === '_') || +        unicode.ID_Start.test(c) +        ) +    }, + +    isIdContinueChar (c) { +        return typeof c === 'string' && ( +            (c >= 'a' && c <= 'z') || +        (c >= 'A' && c <= 'Z') || +        (c >= '0' && c <= '9') || +        (c === '$') || (c === '_') || +        (c === '\u200C') || (c === '\u200D') || +        unicode.ID_Continue.test(c) +        ) +    }, + +    isDigit (c) { +        return typeof c === 'string' && /[0-9]/.test(c) +    }, + +    isHexDigit (c) { +        return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) +    }, +} diff --git a/node_modules/json5/package.json b/node_modules/json5/package.json new file mode 100644 index 0000000..31c43e5 --- /dev/null +++ b/node_modules/json5/package.json @@ -0,0 +1,72 @@ +{ +  "name": "json5", +  "version": "2.2.0", +  "description": "JSON for humans.", +  "main": "lib/index.js", +  "module": "dist/index.mjs", +  "bin": "lib/cli.js", +  "browser": "dist/index.js", +  "types": "lib/index.d.ts", +  "files": [ +    "lib/", +    "dist/" +  ], +  "engines": { +    "node": ">=6" +  }, +  "scripts": { +    "build": "rollup -c", +    "build-package": "node build/package.js", +    "build-unicode": "node build/unicode.js", +    "coverage": "tap --coverage-report html test", +    "lint": "eslint --fix .", +    "prepublishOnly": "npm run production", +    "preversion": "npm run production", +    "production": "npm run lint && npm test && npm run build", +    "test": "tap -Rspec --100 test", +    "version": "npm run build-package && git add package.json5" +  }, +  "repository": { +    "type": "git", +    "url": "git+https://github.com/json5/json5.git" +  }, +  "keywords": [ +    "json", +    "json5", +    "es5", +    "es2015", +    "ecmascript" +  ], +  "author": "Aseem Kishore <aseem.kishore@gmail.com>", +  "contributors": [ +    "Max Nanasy <max.nanasy@gmail.com>", +    "Andrew Eisenberg <andrew@eisenberg.as>", +    "Jordan Tucker <jordanbtucker@gmail.com>" +  ], +  "license": "MIT", +  "bugs": { +    "url": "https://github.com/json5/json5/issues" +  }, +  "homepage": "http://json5.org/", +  "dependencies": { +    "minimist": "^1.2.5" +  }, +  "devDependencies": { +    "core-js": "^2.6.5", +    "eslint": "^5.15.3", +    "eslint-config-standard": "^12.0.0", +    "eslint-plugin-import": "^2.16.0", +    "eslint-plugin-node": "^8.0.1", +    "eslint-plugin-promise": "^4.0.1", +    "eslint-plugin-standard": "^4.0.0", +    "regenerate": "^1.4.0", +    "rollup": "^0.64.1", +    "rollup-plugin-buble": "^0.19.6", +    "rollup-plugin-commonjs": "^9.2.1", +    "rollup-plugin-node-resolve": "^3.4.0", +    "rollup-plugin-terser": "^1.0.1", +    "sinon": "^6.3.5", +    "tap": "^12.6.0", +    "unicode-10.0.0": "^0.7.5" +  } +}  | 
