diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..31d722fa
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,8 @@
+[*]
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[{**/*.cjs, **/*.css,**/*.js,*.json,**/*.less,**/*.md,**/*.mjs,**/*.njk,**/*.scss,**/*.yaml}]
+indent_style = space
+indent_size = 2
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 826ac77e..00000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-scripts/*
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..09cced9d
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,8 @@
+module.exports = {
+  extends: ['@jsdoc', 'plugin:prettier/recommended'],
+  parserOptions: {
+    ecmaVersion: 'latest',
+    sourceType: 'module',
+  },
+  root: true,
+};
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index adfd8881..00000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,316 +0,0 @@
-{
-    "env": {
-        "es6": true,
-        "jasmine": true,
-        "node": true
-    },
-
-    "parserOptions": {
-        "sourceType": "module"
-    },
-
-    "rules": {
-        // Possible errors
-        "for-direction": "error",
-        "getter-return": "error",
-        "no-async-promise-executor": "error",
-        "no-await-in-loop": "error",
-        "no-compare-neg-zero": "error",
-        "no-cond-assign": "error",
-        "no-console": "off",
-        "no-constant-condition": "off",
-        "no-control-regex": "error",
-        "no-debugger": "error",
-        "no-dupe-args": "error",
-        "no-dupe-keys": "error",
-        "no-duplicate-case": "error",
-        "no-empty": "error",
-        "no-empty-character-class": "error",
-        "no-ex-assign": "error",
-        "no-extra-boolean-cast": "error",
-        "no-extra-parens": "off",
-        "no-extra-semi": "error",
-        "no-func-assign": "error",
-        "no-inner-declarations": ["error", "functions"],
-        "no-invalid-regexp": "error",
-        "no-irregular-whitespace": "error",
-        "no-misleading-character-class": "error",
-        "no-obj-calls": "error",
-        "no-prototype-builtins": "error",
-        "no-regex-spaces": "error",
-        "no-sparse-arrays": "error",
-        "no-template-curly-in-string": "error",
-        "no-unexpected-multiline": "error",
-        "no-unreachable": "error",
-        "no-unsafe-finally": "error",
-        "no-unsafe-negation": "error",
-        "require-atomic-updates": "error",
-        "use-isnan": "error",
-        "valid-typeof": "error",
-
-        // Best practices
-        "accessor-pairs": "error",
-        "array-callback-return": "error",
-        "block-scoped-var": "off",
-        "class-methods-use-this": "error",
-        "complexity": "off", // TODO: enable
-        "consistent-return": "error",
-        "curly": ["error", "all"],
-        "default-case": "error",
-        "dot-location": ["error", "property"],
-        "dot-notation": "error",
-        "eqeqeq": ["error", "smart"],
-        "guard-for-in": "error",
-        "max-classes-per-file": "off",
-        "no-alert": "error",
-        "no-caller": "error",
-        "no-case-declarations": "error",
-        "no-div-regex": "error",
-        "no-else-return": "off",
-        "no-empty-function": "error",
-        "no-empty-pattern": "error",
-        "no-eq-null": "error",
-        "no-eval": "error",
-        "no-extend-native": "error",
-        "no-extra-bind": "error",
-        "no-extra-label": "error",
-        "no-fallthrough": "off", // disabled due to bug in ESLint
-        "no-floating-decimal": "error",
-        "no-global-assign": "error",
-        "no-implicit-coercion": "error",
-        "no-implicit-globals": "error",
-        "no-implied-eval": "error",
-        "no-invalid-this": "error",
-        "no-iterator": "error",
-        "no-labels": "error",
-        "no-lone-blocks": "error",
-        "no-loop-func": "error",
-        "no-magic-numbers": "off", // TODO: enable?
-        "no-multi-spaces": "error",
-        "no-multi-str": "error",
-        "no-new": "error",
-        "no-new-func": "error",
-        "no-new-wrappers": "error",
-        "no-octal": "error",
-        "no-octal-escape": "error",
-        "no-param-reassign": "off",
-        "no-proto": "error",
-        "no-redeclare": "error",
-        "no-restricted-properties": "off",
-        "no-return-assign": "error",
-        "no-return-await": "error",
-        "no-script-url": "error",
-        "no-self-assign": "error",
-        "no-self-compare": "error",
-        "no-sequences": "error",
-        "no-throw-literal": "error",
-        "no-unmodified-loop-condition": "error",
-        "no-unused-expressions": "error",
-        "no-unused-labels": "error",
-        "no-useless-call": "error",
-        "no-useless-concat": "error",
-        "no-useless-escape": "error",
-        "no-useless-return": "error",
-        "no-void": "error",
-        "no-warning-comments": "off",
-        "no-with": "error",
-        "prefer-promise-reject-errors": "error",
-        "radix": "error",
-        "require-await": "error",
-        "require-unicode-regexp": "off",
-        "vars-on-top": "off", // TODO: enable
-        "wrap-iife": ["error", "inside"],
-        "yoda": "error",
-
-        // Strict mode
-        "strict": ["error", "global"],
-
-        // Variables
-        "init-declarations": "off",
-        "no-delete-var": "error",
-        "no-label-var": "error",
-        "no-restricted-globals": ["error", "app", "env"],
-        "no-shadow": "error",
-        "no-shadow-restricted-names": "error",
-        "no-undef": "error",
-        "no-undef-init": "error",
-        "no-undefined": "off",
-        "no-unused-vars": "error",
-        "no-use-before-define": "error",
-
-        // Node.js and CommonJS
-        "callback-return": "off",
-        "global-require": "off", // TODO: enable
-        "handle-callback-err": "error",
-        "no-buffer-constructor": "error",
-        "no-mixed-requires": "error",
-        "no-new-require": "error",
-        "no-path-concat": "error",
-        "no-process-env": "error",
-        "no-process-exit": "error",
-        "no-restricted-modules": "off",
-        "no-sync": "off",
-
-        // Stylistic issues
-        "array-bracket-newline": "off",
-        "array-bracket-spacing": ["error", "never"],
-        "array-element-newline": "off",
-        "block-spacing": ["error", "always"],
-        "brace-style": "off", // TODO: enable with "stroustrup" (or "1tbsp" + lots of cleanup)
-        "camelcase": "error",
-        "capitalized-comments": "off",
-        "comma-dangle": "error",
-        "comma-spacing": ["error", {
-            "before": false,
-            "after": true
-        }],
-        "comma-style": ["error", "last"],
-        "computed-property-spacing": ["error", "never"],
-        "consistent-this": ["error", "self"],
-        "eol-last": "error",
-        "func-call-spacing": ["error", "never"],
-        "func-name-matching": ["error", "always"],
-        "func-names": "off",
-        "func-style": "off",
-        "function-paren-newline": "off",
-        "id-blacklist": "off",
-        "id-length": "off",
-        "id-match": "off",
-        "implicit-arrow-linebreak": "off",
-        "indent": ["error", 4, {
-            "SwitchCase": 1
-        }],
-        "jsx-quotes": ["error", "prefer-double"],
-        "key-spacing": ["error", {
-            "beforeColon": false,
-            "afterColon": true
-        }],
-        "keyword-spacing": ["error", {
-            "before": true,
-            "after": true
-        }],
-        "line-comment-position": "off",
-        "linebreak-style": "off",
-        "lines-around-comment": "off",
-        "lines-between-class-members": "off",
-        "max-depth": "off", // TODO: enable
-        "max-len": "off", // TODO: enable
-        "max-lines": "off",
-        "max-lines-per-function": "off",
-        "max-nested-callbacks": "off",
-        "max-params": "off", // TODO: enable
-        "max-statements": "off",
-        "max-statements-per-line": "off",
-        "multiline-comment-style": "off",
-        "multiline-ternary": "off",
-        "new-cap": "error",
-        "new-parens": "error",
-        "newline-per-chained-call": "off", // TODO: enable
-        "no-array-constructor": "error",
-        "no-bitwise": "error",
-        "no-continue": "off",
-        "no-inline-comments": "off",
-        "no-lonely-if": "error",
-        "no-mixed-operators": "error",
-        "no-mixed-spaces-and-tabs": "error",
-        "no-multi-assign": "off",
-        "no-multiple-empty-lines": ["error", {
-            "max": 2
-        }],
-        "no-negated-condition": "off",
-        "no-nested-ternary": "error",
-        "no-new-object": "error",
-        "no-plusplus": "off",
-        "no-restricted-syntax": "off",
-        "no-tabs": "error",
-        "no-ternary": "off",
-        "no-trailing-spaces": "error",
-        "no-underscore-dangle": "off",
-        "no-unneeded-ternary": "error",
-        "no-whitespace-before-property": "error",
-        "nonblock-statement-body-position": "off",
-        "object-curly-newline": "off",
-        "object-curly-spacing": "off",
-        "object-property-newline": "error",
-        "one-var": "off",
-        "one-var-declaration-per-line": "error",
-        "operator-assignment": "off",
-        "operator-linebreak": ["error", "after"],
-        "padded-blocks": ["error", "never"],
-        "padding-line-between-statements": ["error", {
-            "blankLine": "always",
-            "prev": "*",
-            "next": "return"
-        }, {
-            "blankLine": "always",
-            "prev": ["const", "let", "var"],
-            "next": "*"
-        }, {
-            "blankLine": "any",
-            "prev": ["const", "let", "var"],
-            "next": ["const", "let", "var"]
-        }],
-        "prefer-object-spread": "off",
-        "quote-props": "off",
-        "quotes": ["error", "single", "avoid-escape"],
-        "semi": ["error", "always"],
-        "semi-spacing": "error",
-        "semi-style": ["error", "last"],
-        "sort-keys": "off",
-        "sort-vars": "off", // TODO: enable?
-        "space-before-blocks": ["error", "always"],
-        "space-before-function-paren": ["error", "never"],
-        "space-in-parens": "off", // TODO: enable?
-        "space-infix-ops": "error",
-        "space-unary-ops": "error",
-        "spaced-comment": ["error", "always"],
-        "switch-colon-spacing": ["error", {
-            "after": true,
-            "before": false
-        }],
-        "template-tag-spacing": ["error", "never"],
-        "unicode-bom": ["error", "never"],
-        "wrap-regex": "off",
-
-        // ECMAScript 2015
-        "arrow-body-style": ["error", "as-needed"],
-        "arrow-parens": "off",
-        "arrow-spacing": ["error", {
-            "before": true,
-            "after": true
-        }],
-        "constructor-super": "error",
-        "generator-star-spacing": ["error", {
-            "before": true,
-            "after": false
-        }],
-        "no-class-assign": "error",
-        "no-confusing-arrow": "error",
-        "no-const-assign": "error",
-        "no-dupe-class-members": "error",
-        "no-duplicate-imports": ["error", {
-            "includeExports": true
-        }],
-        "no-new-symbol": "error",
-        "no-restricted-imports": "off",
-        "no-this-before-super": "error",
-        "no-useless-computed-key": "error",
-        "no-useless-constructor": "off",
-        "no-useless-rename": "error",
-        "no-var": "off",
-        "object-shorthand": "off",
-        "prefer-arrow-callback": "off",
-        "prefer-const": "off",
-        "prefer-destructuring": "off",
-        "prefer-numeric-literals": "off",
-        "prefer-rest-params": "off",
-        "prefer-spread": "off",
-        "prefer-template": "off",
-        "require-yield": "error",
-        "rest-spread-spacing": ["error", "never"],
-        "sort-imports": "error",
-        "symbol-description": "error",
-        "template-curly-spacing": ["error", "never"],
-        "yield-star-spacing": ["error", "before"]
-    }
-}
diff --git a/.gitignore b/.gitignore
index c2a02d71..ed263ca0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,24 +1,16 @@
-# Logs
-logs
-*.log
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-bower_components
+# npm-managed files
+npm-debug.log
 node_modules
 
+# Development files
+.coverage/
+.parcel-cache/
+.vscode/
+_site/
+coverage/
+
 # Dotfile detritus
 .DS_Store
+
+# Miscellaneous
+tmp/
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 00000000..9b478872
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+  ...require('@jsdoc/prettier-config'),
+};
diff --git a/README.md b/README.md
index 5b587bd2..04a20d3b 100644
--- a/README.md
+++ b/README.md
@@ -1,56 +1,55 @@
-This repository contains the user documentation for [JSDoc 3][jsdoc]. Use this repository to report
+This repository contains the user documentation for [JSDoc][jsdoc]. Use this repository to report
 documentation bugs, and to submit pull requests for improving the docs.
 
 If you just want to read the documentation, please visit [Use JSDoc][use-jsdoc].
 
-
 ## Contributing to the documentation
 
-The HTML docs are generated with [Metalsmith][] and [Gulp][]. If you'd like to contribute to the
-docs, make sure Node.js and npm are installed, then follow these steps:
-
-1. Clone this repository:
-
-        git@github.com:jsdoc3/jsdoc3.github.com.git
+The HTML docs are generated with [Eleventy][eleventy]. If you'd like to contribute to the docs, make
+sure Node.js and npm are installed, then follow these steps:
 
-2. Install Bower and Gulp globally:
+1.  Clone this repository:
 
-        npm install -g gulp
-        npm install -g bower
+    ```
+    git clone https://github.com/jsdoc/jsdoc.github.io
+    ```
 
-3. Install the dependencies:
+2.  Install dependencies:
 
-        npm install
-        bower install
+    ```
+    npm install
+    ```
 
-4. Make your changes in the `content` directory, which contains the source files for the docs.
+3.  Make your changes in the `content` directory, which contains the source files for the docs.
 
     The first few lines of each source file contain [YAML][] front matter, which is metadata in
     [YAML][] format. If you need to use the character `@` or `[` at the start of a YAML value, you
     can escape it with a backslash. For example, write `title: @class` as `title: \@class`.
 
-5. Rebuild the HTML files:
+4.  Rebuild the HTML files, and run a local server so that you can review them:
 
-        gulp
+    ```
+    npm run serve
+    ```
 
-6. Review the updated HTML files, and make sure your changes look okay. In particular, if you edited
-the YAML front matter, make sure your changes are reflected in the generated HTML files.
 
-7. Submit a pull request with your changes.
+5.  Review the updated HTML files on the local server, and make sure your changes look okay. In
+    particular, if you edited the YAML front matter, make sure your changes are reflected in the
+    generated HTML files.
 
+6.  Send a pull request with your changes.
 
 ## Legal stuff
 
-Copyright (c) 2011-2014 by Michael Mathews and the JSDoc 3 documentation [contributors][].
+Copyright 2011 by the [contributors][] to the JSDoc documentation.
 
 This repository is licensed under the [Creative Commons Attribution-ShareAlike 3.0 Unported][cc]
 license. A copy of the license is included in the [`LICENSE` file][license].
 
 [cc]: https://creativecommons.org/licenses/by-sa/3.0/legalcode
 [contributors]: https://github.com/jsdoc/jsdoc.github.io/graphs/contributors
-[Gulp]: https://gulpjs.com/
+[eleventy]: https://www.11ty.dev/
 [jsdoc]: https://github.com/jsdoc/jsdoc
 [license]: https://github.com/jsdoc/jsdoc.github.io/LICENSE
-[Metalsmith]: https://www.metalsmith.io/
 [use-jsdoc]: https://jsdoc.app/
-[YAML]: https://www.yaml.org/spec/1.2/spec.html
+[YAML]: https://yaml.org/spec/1.2.2/
diff --git a/about-block-inline-tags.html b/about-block-inline-tags.html
deleted file mode 100644
index 924714e7..00000000
--- a/about-block-inline-tags.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Overview of block and inline JSDoc tags.">
-  <title>Use JSDoc: Block and inline tags</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Block and inline tags</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>JSDoc supports two different kinds of tags:</p>
-    <ul>
-      <li><strong>Block tags</strong>, which are at the top level of a JSDoc comment.</li>
-      <li><strong>Inline tags</strong>, which are within the text of a block tag or a description.</li>
-    </ul>
-    <p>Block tags usually provide detailed information about your code, such as the parameters that a
-      function accepts. Inline tags usually link to other parts of the documentation, similar to the
-      anchor tag (<code>&lt;a&gt;</code>) in HTML.</p>
-    <p>Block tags always begin with an at sign (<code>@</code>). Each block tag must be followed by a line break,
-      with the exception of the last block tag in a JSDoc comment.</p>
-    <p>Inline tags also begin with an at sign. However, inline tags and their text must be enclosed in
-      curly braces (<code>{</code> and <code>}</code>). The <code>{</code> denotes the start of the inline tag, and the <code>}</code> denotes the end
-      of the inline tag. If your tag&#39;s text includes a closing curly brace (<code>}</code>), you must escape it with
-      a leading backslash (<code>\</code>). You do not need to use a line break after inline tags.</p>
-    <p>Most JSDoc tags are block tags. In general, when this site refers to &quot;JSDoc tags,&quot; we really mean
-      &quot;block tags.&quot;</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, <code>@param</code> is a block tag, and <code>{@link}</code> is an inline tag:</p>
-    <figure>
-      <figcaption>Block and inline tags in JSDoc comments</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Set the shoe's color. Use {@link Shoe#setSize} to set the shoe size.
- *
- * @param {string} color - The shoe's color.
- */
-Shoe.prototype.setColor = function(color) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>You can use inline tags within a description, as shown above, or within a block tag, as shown below:</p>
-    <figure>
-      <figcaption>Inline tag used within a block tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Set the shoe's color.
- *
- * @param {SHOE_COLORS} color - The shoe color. Must be an enumerated
- * value of {@link SHOE_COLORS}.
- */
-Shoe.prototype.setColor = function(color) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>When you use multiple block tags in a JSDoc comment, they must be separated by line breaks:</p>
-    <figure>
-      <figcaption>Multiple block tags separated by line breaks</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Set the color and type of the shoelaces.
- *
- * @param {LACE_COLORS} color - The shoelace color.
- * @param {LACE_TYPES} type - The type of shoelace.
- */
-Shoe.prototype.setLaceType = function(color, type) {
-    // ...
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-commandline.html b/about-commandline.html
deleted file mode 100644
index 1a6b12cd..00000000
--- a/about-commandline.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="About command-line arguments to JSDoc.">
-  <title>Use JSDoc: Command-line arguments to JSDoc</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Command-line arguments to JSDoc</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <p>At its most basic level, JSDoc is used like so:</p>
-    <pre class="prettyprint"><code>/path/to/jsdoc yourSourceCodeFile.js anotherSourceCodeFile.js ...
-</code></pre>
-    <p>where <code>...</code> are paths to other files to generate documentation for.</p>
-    <p>Additionally, one may provide the path to a <a href="http://daringfireball.net/projects/markdown/">Markdown file</a> (ending in &quot;.md&quot;) or a
-      file
-      named &quot;README&quot;, and this will be added to the documentation on the front page. See <a href="about-including-readme.html">these
-        instructions</a>.</p>
-    <p>JSDoc supports a number of command-line options, many of which have both long and short forms.
-      Alternatively, the command-line options may be <a href="about-configuring-jsdoc.html">specified in a configuration file</a>
-      given to JSDoc. The command-line options are:</p>
-    <table>
-      <thead>
-        <tr>
-          <th>Option</th>
-          <th>Description</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><code>-a &lt;value&gt;</code>, <code>--access &lt;value&gt;</code></td>
-          <td>Only display symbols with the given <code>access</code> property: <code>private</code>, <code>protected</code>, <code>public</code>, or
-            <code>undefined</code>, or <code>all</code> for all access levels. By default, all except <code>private</code> symbols are shown.</td>
-        </tr>
-        <tr>
-          <td><code>-c &lt;value&gt;</code>, <code>--configure &lt;value&gt;</code></td>
-          <td>The path to a JSDoc <a href="about-configuring-jsdoc.html">configuration file</a>. Defaults to <code>conf.json</code> or
-            <code>conf.json.EXAMPLE</code> in the directory where JSDoc is installed.</td>
-        </tr>
-        <tr>
-          <td><code>-d &lt;value&gt;</code>, <code>--destination &lt;value&gt;</code></td>
-          <td>The path to the output folder for the generated documentation. For JSDoc&#39;s built-in Haruki template, use <code>console</code> to dump data to
-            the console. Defaults to <code>./out</code>.</td>
-        </tr>
-        <tr>
-          <td><code>--debug</code></td>
-          <td>Log information that can help debug issues in JSDoc itself.</td>
-        </tr>
-        <tr>
-          <td><code>-e &lt;value&gt;</code>, <code>--encoding &lt;value&gt;</code></td>
-          <td>Assume this encoding when reading all source files. Defaults to <code>utf8</code>.</td>
-        </tr>
-        <tr>
-          <td><code>-h</code>, <code>--help</code></td>
-          <td>Display information about JSDoc&#39;s command-line options, then exit.</td>
-        </tr>
-        <tr>
-          <td><code>--match &lt;value&gt;</code></td>
-          <td>Only run tests whose names contain <code>value</code>.</td>
-        </tr>
-        <tr>
-          <td><code>--nocolor</code></td>
-          <td>When running tests, do not use color in the console output. On Windows, this option is enabled by default.</td>
-        </tr>
-        <tr>
-          <td><code>-p</code>, <code>--private</code></td>
-          <td>Include symbols marked with the <a href="tags-private.html"><code>@private</code> tag</a> in the generated documentation. By default, private
-            symbols are not included.</td>
-        </tr>
-        <tr>
-          <td><code>-P</code>, <code>--package</code></td>
-          <td>The <code>package.json</code> file that contains the project name, version, and other details. Defaults to the first <code>package.json</code>
-            file found in the source paths.</td>
-        </tr>
-        <tr>
-          <td><code>--pedantic</code></td>
-          <td>Treat errors as fatal errors, and treat warnings as errors. Defaults to <code>false</code>.</td>
-        </tr>
-        <tr>
-          <td><code>-q &lt;value&gt;</code>, <code>--query &lt;value&gt;</code></td>
-          <td>A query string to parse and store in the global variable <code>env.opts.query</code>. Example: <code>foo=bar&amp;baz=true</code>.</td>
-        </tr>
-        <tr>
-          <td><code>-r</code>, <code>--recurse</code></td>
-          <td>Recurse into subdirectories when scanning for source files and tutorials.</td>
-        </tr>
-        <tr>
-          <td><code>-R</code>, <code>--readme</code></td>
-          <td>The <code>README.md</code> file to include in the generated documentation. Defaults to the first <code>README.md</code> file found in the source
-            paths.</td>
-        </tr>
-        <tr>
-          <td><code>-t &lt;value&gt;</code>, <code>--template &lt;value&gt;</code></td>
-          <td>The path to the template to use for generating output. Defaults to <code>templates/default</code>, JSDoc&#39;s built-in default template.</td>
-        </tr>
-        <tr>
-          <td><code>-T</code>, <code>--test</code></td>
-          <td>Run JSDoc&#39;s test suite, and print the results to the console.</td>
-        </tr>
-        <tr>
-          <td><code>-u &lt;value&gt;</code>, <code>--tutorials &lt;value&gt;</code></td>
-          <td>Directory in which JSDoc should search for tutorials. If omitted, no tutorial pages will be generated. See the <a
-              href="about-tutorials.html">tutorial instructions</a> for more information.</td>
-        </tr>
-        <tr>
-          <td><code>-v</code>, <code>--version</code></td>
-          <td>Displays JSDoc&#39;s version number, then exits.</td>
-        </tr>
-        <tr>
-          <td><code>--verbose</code></td>
-          <td>Log detailed information to the console as JSDoc runs. Defaults to <code>false</code>.</td>
-        </tr>
-        <tr>
-          <td><code>-X</code>, <code>--explain</code></td>
-          <td>Dump all doclets to the console in JSON format, then exit.</td>
-        </tr>
-      </tbody>
-    </table>
-    <h2 id="examples">Examples</h2>
-    <p>Generate documentation for files in the <code>./src</code> directory, using the configuration file
-      <code>/path/to/my/conf.json</code>, and save the output in the <code>./docs</code> directory:</p>
-    <figure>
-      <pre class="prettyprint"><code>/path/to/jsdoc src -r -c /path/to/my/conf.json -d docs
-</code></pre>
-    </figure>
-    <p>Run all JSDoc tests whose names include the word <code>tag</code>, and log information about each test:</p>
-    <figure>
-      <pre class="prettyprint"><code>/path/to/jsdoc -T --match tag --verbose
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="about-configuring-jsdoc.html">Configuring JSDoc with a configuration file</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-configuring-default-template.html b/about-configuring-default-template.html
deleted file mode 100644
index 2b130f37..00000000
--- a/about-configuring-default-template.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to configure the output from JSDoc&#39;s default template.">
-  <title>Use JSDoc: Configuring JSDoc&#39;s default template</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Configuring JSDoc&#39;s default template</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#generating-pretty-printed-source-files">Generating pretty-printed source files</a>
-      </li>
-      <li>
-        <a href="#copying-static-files-to-the-output-directory">Copying static files to the output directory</a>
-      </li>
-      <li>
-        <a href="#showing-the-current-date-in-the-page-footer">Showing the current date in the page footer</a>
-      </li>
-      <li>
-        <a href="#showing-longnames-in-the-navigation-column">Showing longnames in the navigation column</a>
-      </li>
-      <li>
-        <a href="#overriding-the-default-templates-layout-file">Overriding the default template&#39;s layout file</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <p>JSDoc&#39;s default template provides several options that you can use to customize the appearance and
-      content of generated documentation.</p>
-    <p>To use these options, you must <a href="about-configuring-jsdoc.html">create a configuration file</a> for JSDoc and set the
-      appropriate options in the configuration file.</p>
-    <h2 id="generating-pretty-printed-source-files">Generating pretty-printed source files</h2>
-    <p>By default, JSDoc&#39;s default template generates pretty-printed versions of your source files. It also
-      links to these pretty-printed files in the documentation.</p>
-    <p>To disable pretty-printed files, set the option <code>templates.default.outputSourceFiles</code> to <code>false</code>.
-      Using this option also removes links to your source files from the documentation. This option is
-      available in JSDoc 3.3.0 and later.</p>
-    <h2 id="copying-static-files-to-the-output-directory">Copying static files to the output directory</h2>
-    <p>JSDoc&#39;s default template automatically copies a few static files, such as CSS stylesheets, to the
-      output directory. In JSDoc 3.3.0 and later, you can tell the default template to copy additional
-      static files to the output directory. For example, you might want to copy a directory of images to
-      the output directory so you can display these images in your documentation.</p>
-    <p>To copy additional static files to the output directory, use the following options:</p>
-    <ul>
-      <li><code>templates.default.staticFiles.include</code>: An array of paths whose contents should be copied to the
-        output directory. Subdirectories will be copied as well.</li>
-      <li><code>templates.default.staticFiles.exclude</code>: An array of paths that should <em>not</em> be copied to the
-        output directory.</li>
-      <li><code>templates.default.staticFiles.includePattern</code>: A regular expression indicating which files to
-        copy. If this property is not defined, all files will be copied.</li>
-      <li><code>templates.default.staticFiles.excludePattern</code>: A regular expression indicating which files to
-        skip. If this property is not defined, nothing will be skipped.</li>
-    </ul>
-    <figure>
-      <figcaption>Copying a directory of images to the output directory</figcaption>
-      <p>To copy all of the static files in <code>./myproject/static</code> to the output directory:</p>
-      <pre class="prettyprint lang-json"><code>{
-  "templates": {
-    "default": {
-      "staticFiles": {
-        "include": [
-            "./myproject/static"
-        ]
-      }
-    }
-  }
-}
-</code></pre>
-      <p>If your static files directory contains the file <code>./myproject/static/img/screen.png</code>, you can
-        display the image in your docs by using the HTML tag <code>&lt;img src=&quot;img/screen.png&quot;&gt;</code>.</p>
-    </figure>
-    <h2 id="showing-the-current-date-in-the-page-footer">Showing the current date in the page footer</h2>
-    <p>By default, JSDoc&#39;s default template always shows the current date in the footer of the generated
-      documentation. In JSDoc 3.3.0 and later, you can omit the current date by setting the option
-      <code>templates.default.includeDate</code> to <code>false</code>.</p>
-    <h2 id="showing-longnames-in-the-navigation-column">Showing longnames in the navigation column</h2>
-    <p>By default, JSDoc&#39;s default template shows a shortened version of each symbol&#39;s name in the
-      navigation column. For example, the symbol <code>my.namespace.MyClass</code> would be displayed simply as
-      <code>MyClass</code>. To show the complete longname instead, set the option
-      <code>templates.default.useLongnameInNav</code> to <code>true</code>. This option is available in JSDoc 3.4.0 and later.</p>
-    <h2 id="overriding-the-default-templates-layout-file">Overriding the default template&#39;s layout file</h2>
-    <p>The default template uses a file named <code>layout.tmpl</code> to specify the header and footer for each
-      page in the generated documentation. In particular, this file defines which CSS and JavaScript files
-      are loaded for each page. In JSDoc 3.3.0 and later, you can specify your own <code>layout.tmpl</code> file to
-      use, which allows you to load your own custom CSS and JavaScript files in addition to, or instead
-      of, the standard files.</p>
-    <p>To use this feature, set the option <code>templates.default.layoutFile</code> to the path to your customized
-      layout file. Relative paths are resolved against the current working directory; the path to the
-      configuration file; and the JSDoc directory, in that order.</p>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="about-configuring-jsdoc.html">Configuring JSDoc with a configuration file</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-configuring-jsdoc.html b/about-configuring-jsdoc.html
deleted file mode 100644
index 6e4418f6..00000000
--- a/about-configuring-jsdoc.html
+++ /dev/null
@@ -1,359 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to configure JSDoc using a configuration file.">
-  <title>Use JSDoc: Configuring JSDoc with a configuration file</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Configuring JSDoc with a configuration file</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#configuration-file-formats">Configuration file formats</a>
-      </li>
-      <li>
-        <a href="#default-configuration-options">Default configuration options</a>
-      </li>
-      <li>
-        <a href="#configuring-plugins">Configuring plugins</a>
-      </li>
-      <li>
-        <a href="#specifying-recursion-depth">Specifying recursion depth</a>
-      </li>
-      <li>
-        <a href="#specifying-input-files">Specifying input files</a>
-      </li>
-      <li>
-        <a href="#specifying-the-source-type">Specifying the source type</a>
-      </li>
-      <li>
-        <a href="#incorporating-command-line-options-into-the-configuration-file">Incorporating command-line options into the configuration file</a>
-      </li>
-      <li>
-        <a href="#configuring-tags-and-tag-dictionaries">Configuring tags and tag dictionaries</a>
-      </li>
-      <li>
-        <a href="#configuring-templates">Configuring templates</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="configuration-file-formats">Configuration file formats</h2>
-    <p>To customize JSDoc&#39;s behavior, you can provide a configuration file to JSDoc in one of the following
-      formats:</p>
-    <ul>
-      <li>A JSON file. In JSDoc 3.3.0 and later, this file may include comments.</li>
-      <li>A CommonJS module that exports a single configuration object. This format is supported in JSDoc</li>
-    </ul>
-    <p>3.5.0 and later.</p>
-    <p>To run JSDoc with a configuration file, use the <a href="about-commandline.html"><code>-c</code> command-line option</a> (for
-      example, <code>jsdoc -c /path/to/conf.json</code> or <code>jsdoc -c /path/to/conf.js</code>).</p>
-    <p>The following examples show a simple configuration file that enables JSDoc&#39;s <a href="plugins-markdown.html">Markdown
-        plugin</a>. JSDoc&#39;s configuration options are explained in detail in the following sections.</p>
-    <figure>
-      <figcaption>JSON configuration file</figcaption>
-      <pre class="prettyprint lang-js"><code>{
-    "plugins": ["plugins/markdown"]
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>JavaScript configuration file</figcaption>
-      <pre class="prettyprint lang-js"><code>'use strict';
-
-module.exports = {
-    plugins: ['plugins/markdown']
-};
-</code></pre>
-    </figure>
-    <p>For a more comprehensive example of a JSON configuration file, see the file
-      <a href="https://github.com/jsdoc3/jsdoc/blob/master/conf.json.EXAMPLE"><code>conf.json.EXAMPLE</code></a>.</p>
-    <h2 id="default-configuration-options">Default configuration options</h2>
-    <p>If you do not specify a configuration file, JSDoc uses the following configuration options:</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "plugins": [],
-    "recurseDepth": 10,
-    "source": {
-        "includePattern": ".+\\.js(doc|x)?$",
-        "excludePattern": "(^|\\/|\\\\)_"
-    },
-    "sourceType": "module",
-    "tags": {
-        "allowUnknownTags": true,
-        "dictionaries": ["jsdoc","closure"]
-    },
-    "templates": {
-        "cleverLinks": false,
-        "monospaceLinks": false
-    }
-}
-</code></pre>
-    </figure>
-    <p>This means:</p>
-    <ul>
-      <li>No plugins are loaded (<code>plugins</code>).</li>
-      <li>If recursion is enabled with the <a href="about-commandline.html"><code>-r</code> command-line flag</a>, JSDoc will search
-        for files 10 levels deep (<code>recurseDepth</code>).</li>
-      <li>Only files ending in <code>.js</code>, <code>.jsdoc</code>, and <code>.jsx</code> will be processed (<code>source.includePattern</code>).</li>
-      <li>Any file starting with an underscore, or in a directory starting with an underscore, will be
-        ignored (<code>source.excludePattern</code>).</li>
-      <li>JSDoc supports code that uses <a href="howto-es2015-modules.html">ES2015 modules</a> (<code>sourceType</code>).</li>
-      <li>JSDoc allows you to use unrecognized tags (<code>tags.allowUnknownTags</code>).</li>
-      <li>Both standard JSDoc tags and <a
-          href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure Compiler tags</a> are enabled
-        (<code>tags.dictionaries</code>).</li>
-      <li><a href="tags-inline-link.html">Inline <code>{@link}</code> tags</a> are rendered in plain text (<code>templates.cleverLinks</code>,
-        <code>templates.monospaceLinks</code>).</li>
-    </ul>
-    <p>These options and others are explained in the following sections.</p>
-    <h2 id="configuring-plugins">Configuring plugins</h2>
-    <p>To enable plugins, add their paths (relative to the JSDoc folder) into the <code>plugins</code> array.</p>
-    <p>For example, the following JSON configuration file will enable the Markdown plugin, which converts
-      Markdown-formatted text to HTML, and the &quot;summarize&quot; plugin, which autogenerates a summary for each
-      doclet:</p>
-    <figure>
-      <figcaption>JSON configuration file with plugins</figcaption>
-      <pre class="prettyprint"><code>{
-    "plugins": [
-        "plugins/markdown",
-        "plugins/summarize"
-    ]
-}
-</code></pre>
-    </figure>
-    <p>See the <a href="about-plugins.html">plugin reference</a> for further information, and look in <a
-        href="https://github.com/jsdoc3/jsdoc/tree/master/plugins">JSDoc&#39;s <code>plugins</code>
-        directory</a> for the plugins built into JSDoc.</p>
-    <p>You can configure the Markdown plugin by adding a <code>markdown</code> object to your configuration file. See
-      <a href="plugins-markdown.html">Configuring the Markdown Plugin</a> for details.</p>
-    <h2 id="specifying-recursion-depth">Specifying recursion depth</h2>
-    <p>The <code>recurseDepth</code> option controls how many levels deep JSDoc will recursively search for source
-      files and tutorials. This option is available in JSDoc 3.5.0 and later. This option is used only if
-      you also specify the <a href="about-commandline.html"><code>-r</code> command-line flag</a>, which tells JSDoc to recursively
-      search for input files.</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "recurseDepth": 10
-}
-</code></pre>
-    </figure>
-    <h2 id="specifying-input-files">Specifying input files</h2>
-    <p>The <code>source</code> set of options, in combination with paths given to JSDoc on the command line,
-      determines the set of input files that JSDoc uses to generate documentation.</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "source": {
-        "include": [ /* array of paths to files to generate documentation for */ ],
-        "exclude": [ /* array of paths to exclude */ ],
-        "includePattern": ".+\\.js(doc|x)?$",
-        "excludePattern": "(^|\\/|\\\\)_"
-    }
-}
-</code></pre>
-    </figure>
-    <ul>
-      <li><code>source.include</code>: An optional array of paths that contain files for which JSDoc should generate
-        documentation. The paths given to JSDoc on the command line are combined with these paths. You can
-        use the <a href="about-commandline.html"><code>-r</code> command-line option</a> to recurse into subdirectories.</li>
-      <li><code>source.exclude</code>: An optional array of paths that JSDoc should ignore. In JSDoc 3.3.0 and later,
-        this array may include subdirectories of the paths in <code>source.include</code>.</li>
-      <li><code>source.includePattern</code>: An optional string, interpreted as a regular expression. If present, all
-        filenames must match this regular expression to be processed by JSDoc. By default, this option is
-        set to &quot;.+&#92;.js(doc|x)?$&quot;, meaning that only files with the extensions <code>.js</code>, <code>.jsdoc</code>, and
-        <code>.jsx</code> will be processed.</li>
-      <li><code>source.excludePattern</code>: An optional string, interpreted as a regular expression. If present, any
-        file matching this regular expression will be ignored. By default, this option is set so that files
-        beginning with an underscore (or anything under a directory beginning with an underscore) is
-        ignored.</li>
-    </ul>
-    <p>These options are interpreted in the following order:</p>
-    <ol>
-      <li>Start with all paths given on the command line and in <code>source.include</code>.</li>
-      <li>For each file found in Step 1, if the regular expression <code>source.includePattern</code> is present, the
-        filename must match it, or it is ignored.</li>
-      <li>For each file left from Step 2, if the regular expression <code>source.excludePattern</code> is present, any
-        filename matching this regular expression is ignored.</li>
-      <li>For each file left from Step 3, if the file&#39;s path is in <code>source.exclude</code>, it is ignored.</li>
-    </ol>
-    <p>All remaining files after these four steps are processed by JSDoc.</p>
-    <p>As an example, suppose you have the following file structure:</p>
-    <figure>
-      <pre class="prettyprint"><code>myProject/
-|- a.js
-|- b.js
-|- c.js
-|- _private
-|  |- a.js
-|- lib/
-   |- a.js
-   |- ignore.js
-   |- d.txt
-</code></pre>
-    </figure>
-    <p>In addition, suppose your <code>conf.json</code> file looks like this example:</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "source": {
-        "include": ["myProject/a.js", "myProject/lib", "myProject/_private"],
-        "exclude": ["myProject/lib/ignore.js"],
-        "includePattern": ".+\\.js(doc|x)?$",
-        "excludePattern": "(^|\\/|\\\\)_"
-    }
-}
-</code></pre>
-    </figure>
-    <p>If you run <code>jsdoc myProject/c.js -c /path/to/my/conf.json -r</code> from the file containing the
-      <code>myProject</code> folder, JSDoc will generate documentation for the following files:</p>
-    <ul>
-      <li><code>myProject/a.js</code></li>
-      <li><code>myProject/c.js</code></li>
-      <li><code>myProject/lib/a.js</code></li>
-    </ul>
-    <p>Here&#39;s why:</p>
-    <ol>
-      <li>Given <code>source.include</code> and the paths given on the command line, JSDoc starts off with these
-        files:<ul>
-          <li><code>myProject/c.js</code> (from the command line)</li>
-          <li><code>myProject/a.js</code> (from <code>source.include</code>)</li>
-          <li><code>myProject/lib/a.js</code>, <code>myProject/lib/ignore.js</code>, <code>myProject/lib/d.txt</code> (from <code>source.include</code>
-            and using the <code>-r</code> option)</li>
-          <li><code>myProject/_private/a.js</code> (from <code>source.include</code>)</li>
-        </ul>
-      </li>
-      <li>JSDoc applies <code>source.includePattern</code>, leaving us with all of the above files <em>except</em>
-        <code>myProject/lib/d.txt</code>, which does not end in <code>.js</code>, <code>.jsdoc</code>, or <code>.jsx</code>.</li>
-      <li>JSDoc applies <code>source.excludePattern</code>, which removes <code>myProject/_private/a.js</code>.</li>
-      <li>JSDoc applies <code>source.exclude</code>, which removes <code>myProject/lib/ignore.js</code>.</li>
-    </ol>
-    <h2 id="specifying-the-source-type">Specifying the source type</h2>
-    <p>The <code>sourceType</code> option affects how JSDoc parses your JavaScript files. This option is available in
-      JSDoc 3.5.0 and later. This option accepts the following values:</p>
-    <ul>
-      <li><code>module</code> (default): Use this value for most types of JavaScript files.</li>
-      <li><code>script</code>: Use this value if JSDoc logs errors such as <code>Delete of an unqualified identifier in
-          strict mode</code> when it parses your code.</li>
-    </ul>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "sourceType": "module"
-}
-</code></pre>
-    </figure>
-    <h2 id="incorporating-command-line-options-into-the-configuration-file">Incorporating command-line options into the configuration file</h2>
-    <p>You can put many of JSDoc&#39;s <a href="about-commandline.html">command-line options</a> into the configuration file instead of
-      specifying them on the command line. To do this, add the long names of the relevant options into an
-      <code>opts</code> section of the configuration file, with the value set to the option&#39;s value.</p>
-    <figure>
-      <figcaption>JSON configuration file with command-line options</figcaption>
-      <pre class="prettyprint lang-js"><code>{
-    "opts": {
-        "template": "templates/default",  // same as -t templates/default
-        "encoding": "utf8",               // same as -e utf8
-        "destination": "./out/",          // same as -d ./out/
-        "recurse": true,                  // same as -r
-        "tutorials": "path/to/tutorials", // same as -u path/to/tutorials
-    }
-}
-</code></pre>
-    </figure>
-    <p>By using the <code>source.include</code> and <code>opts</code> options, you can put almost all of the arguments to JSDoc
-      in a configuration file, so that the command line reduces to:</p>
-    <pre class="prettyprint"><code>jsdoc -c /path/to/conf.json
-</code></pre>
-    <p>When options are specified on the command line <em>and</em> in the configuration file, the command line
-      takes precedence.</p>
-    <h2 id="configuring-tags-and-tag-dictionaries">Configuring tags and tag dictionaries</h2>
-    <p>The options in <code>tags</code> control which JSDoc tags are allowed and how each tag is interpreted.</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "tags": {
-        "allowUnknownTags": true,
-        "dictionaries": ["jsdoc","closure"]
-    }
-}
-</code></pre>
-    </figure>
-    <p>The <code>tags.allowUnknownTags</code> property affects how JSDoc handles unrecognized tags. If you set this
-      option to <code>false</code>, and JSDoc finds a tag that it does not recognize (for example, <code>@foo</code>), JSDoc
-      logs a warning. By default, this option is set to <code>true</code>. In JSDoc 3.4.1 and later, you can also
-      set this property to an array of tag names that JSDoc should allow (for example, <code>[&quot;foo&quot;,&quot;bar&quot;]</code>).</p>
-    <p>The <code>tags.dictionaries</code> property controls which tags JSDoc recognizes, as well as how JSDoc
-      interprets the tags that it recognizes. In JSDoc 3.3.0 and later, there are two built-in tag
-      dictionaries:</p>
-    <ul>
-      <li><code>jsdoc</code>: Core JSDoc tags.</li>
-      <li><code>closure</code>: <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure
-          Compiler tags</a>.</li>
-    </ul>
-    <p>By default, both dictionaries are enabled. Also, by default, the <code>jsdoc</code> dictionary is listed first;
-      as a result, if the <code>jsdoc</code> dictionary handles a tag differently than the <code>closure</code> dictionary, the
-      <code>jsdoc</code> version of the tag takes precedence.</p>
-    <p>If you are using JSDoc with a Closure Compiler project, and you want to avoid using tags that
-      Closure Compiler does not recognize, change the <code>tags.dictionaries</code> setting to <code>[&quot;closure&quot;]</code>. You
-      can also change this setting to <code>[&quot;closure&quot;,&quot;jsdoc&quot;]</code> if you want to allow core JSDoc tags, but you
-      want to ensure that Closure Compiler-specific tags are interpreted as Closure Compiler would
-      interpret them.</p>
-    <h2 id="configuring-templates">Configuring templates</h2>
-    <p>The options in <code>templates</code> affect the appearance and content of generated documentation. Third-party
-      templates may not implement all of these options. See <a href="about-configuring-default-template.html">Configuring JSDoc&#39;s Default
-        Template</a> for additional options that the default template supports.</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>{
-    "templates": {
-        "cleverLinks": false,
-        "monospaceLinks": false
-    }
-}
-</code></pre>
-    </figure>
-    <p>If <code>templates.monospaceLinks</code> is true, all link text from the <a href="tags-inline-link.html">inline <code>{@link}</code>
-        tag</a> will be rendered in monospace.</p>
-    <p>If <code>templates.cleverLinks</code> is true, <code>{@link asdf}</code> will be rendered in normal font if <code>asdf</code> is a
-      URL, and monospace otherwise. For example, <code>{@link http://github.com}</code> will render in plain text,
-      but <code>{@link MyNamespace.myFunction}</code> will be in monospace.</p>
-    <p>If <code>templates.cleverLinks</code> is true, <code>templates.monospaceLinks</code> is ignored.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-commandline.html">Command-line arguments to JSDoc</a>
-      </li>
-      <li>
-        <a href="about-plugins.html">About JSDoc plugins</a>
-      </li>
-      <li>
-        <a href="plugins-markdown.html">Using the Markdown plugin</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-getting-started.html b/about-getting-started.html
deleted file mode 100644
index 692323be..00000000
--- a/about-getting-started.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="A quick-start to documenting JavaScript with JSDoc.">
-  <title>Use JSDoc: Getting Started with JSDoc 3</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Getting Started with JSDoc 3</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#getting-started">Getting started</a>
-      </li>
-      <li>
-        <a href="#adding-documentation-comments-to-your-code">Adding documentation comments to your code</a>
-      </li>
-      <li>
-        <a href="#generating-a-website">Generating a website</a>
-      </li>
-    </ul>
-    <h2 id="getting-started">Getting started</h2>
-    <p>JSDoc 3 is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor. You
-      add documentation comments directly to your source code, right alongside the code itself. The JSDoc
-      tool will scan your source code and generate an HTML documentation website for you.</p>
-    <h2 id="adding-documentation-comments-to-your-code">Adding documentation comments to your code</h2>
-    <p>JSDoc&#39;s purpose is to document the API of your JavaScript application or library. It is assumed that
-      you will want to document things like modules, namespaces, classes, methods, method parameters, and
-      so on.</p>
-    <p>JSDoc comments should generally be placed immediately before the code being documented. Each comment
-      must start with a <code>/**</code> sequence in order to be recognized by the JSDoc parser. Comments beginning
-      with <code>/*</code>, <code>/***</code>, or more than 3 stars will be ignored. This is a feature to allow you to suppress
-      parsing of comment blocks.</p>
-    <figure>
-      <figcaption>The simplest documentation is just a description</figcaption>
-      <pre class="prettyprint lang-js"><code>/** This is a description of the foo function. */
-function foo() {
-}
-</code></pre>
-    </figure>
-    <p>Adding a description is simple—just type the description you want in the documentation comment.</p>
-    <p>Special &quot;JSDoc tags&quot; can be used to give more information. For example, if the function is a
-      constructor for a class, you can indicate this by adding a <code>@constructor</code> tag.</p>
-    <figure>
-      <figcaption>Use a JSDoc tag to describe your code</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Represents a book.
- * @constructor
- */
-function Book(title, author) {
-}
-</code></pre>
-    </figure>
-    <p>More tags can be used to add more information. See the <a href="index.html#block-tags">home page</a> for a complete list
-      of tags that are recognized by JSDoc 3.</p>
-    <figure>
-      <figcaption>Adding more information with tags</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Represents a book.
- * @constructor
- * @param {string} title - The title of the book.
- * @param {string} author - The author of the book.
- */
-function Book(title, author) {
-}
-</code></pre>
-    </figure>
-    <h2 id="generating-a-website">Generating a website</h2>
-    <p>Once your code is commented, you can use the JSDoc 3 tool to generate an HTML website from your
-      source files.</p>
-    <p>By default, JSDoc uses the built-in &quot;default&quot; template to turn the documentation into HTML. You can
-      edit this template to suit your own needs or create an entirely new template if that is what you
-      prefer.</p>
-    <figure>
-      <figcaption>Running the documentation generator on the command line</figcaption>
-      <pre class="prettyprint"><code>jsdoc book.js
-</code></pre>
-    </figure>
-    <p>This command will create a directory named <code>out/</code> in the current working directory. Within that
-      directory, you will find the generated HTML pages.</p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-including-package.html b/about-including-package.html
deleted file mode 100644
index c5d2cc6d..00000000
--- a/about-including-package.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to show package details in your documentation.">
-  <title>Use JSDoc: Including a Package File</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Including a Package File</h1>
-    <p>Package files contain information that can be useful for your project&#39;s documentation, such as
-      the project&#39;s name and version number. JSDoc can automatically use information from your project&#39;s
-      <code>package.json</code> file when it generates documentation. For example, the default template shows
-      the project&#39;s name and version number in the documentation.</p>
-    <p>There are two ways to incorporate a <code>package.json</code> file into your documentation:</p>
-    <ol>
-      <li>In the source paths to your JavaScript files, include the path to a <code>package.json</code> file. JSDoc
-        will use the first <code>package.json</code> file that it finds in your source paths.</li>
-      <li>Run JSDoc with the <code>-P/--package</code> command-line option, specifying the path to your <code>package.json</code>
-        file. This option is available in JSDoc 3.3.0 and later.</li>
-    </ol>
-    <p>The <code>-P/--package</code> command-line option takes precedence over your source paths. If you use the
-      <code>-P/--package</code> command-line option, JSDoc will ignore any <code>package.json</code> files in your source paths.</p>
-    <p>The <code>package.json</code> file must use <a href="https://docs.npmjs.com/files/package.json">npm&#39;s package format</a>.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Including a package file in your source paths</figcaption>
-      <pre class="prettyprint"><code>jsdoc path/to/js path/to/package/package.json
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the -P/--package option</figcaption>
-      <pre class="prettyprint"><code>jsdoc --package path/to/package/package-docs.json path/to/js
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-including-readme.html b/about-including-readme.html
deleted file mode 100644
index a89e69f8..00000000
--- a/about-including-readme.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to include a README file in your documentation.">
-  <title>Use JSDoc: Including a README File</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Including a README File</h1>
-    <p>There are two ways to incorporate a <code>README</code> file into your documentation:</p>
-    <ol>
-      <li>In the source paths to your JavaScript files, include the path to a Markdown file named
-        <code>README.md</code>. JSDoc will use the first <code>README.md</code> file that it finds in your source paths.</li>
-      <li>Run JSDoc with the <code>-R/--readme</code> command-line option, specifying the path to your <code>README</code> file.
-        This option is available in JSDoc 3.3.0 and later. The <code>README</code> file may have any name and
-        extension, but it must be in Markdown format.</li>
-    </ol>
-    <p>The <code>-R/--readme</code> command-line option takes precedence over your source paths. If you use the
-      <code>-R/--readme</code> command-line option, JSDoc will ignore any <code>README.md</code> files in your source paths.</p>
-    <p>If you are using JSDoc&#39;s default template, the <code>README</code> file&#39;s contents will be rendered in HTML
-      in the generated documentation&#39;s <code>index.html</code> file.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Including a README file in your source paths</figcaption>
-      <pre class="prettyprint"><code>jsdoc path/to/js path/to/readme/README.md
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the -R/--readme option</figcaption>
-      <pre class="prettyprint"><code>jsdoc --readme path/to/readme/README path/to/js
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-inline-tags.html b/about-inline-tags.html
deleted file mode 100644
index c4fa7880..00000000
--- a/about-inline-tags.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html>
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="refresh" content="0; url=about-block-inline-tags.html">
-        <title>Redirecting...</title>
-        <link rel="canonical" href="about-block-inline-tags.html">
-    </head>
-    <body>
-        <h1>Redirecting...</h1>
-        <a href="about-block-inline-tags.html">If you are not redirected, click here.</a>
-        <script type="text/javascript">location='about-block-inline-tags.html'</script>
-    </body>
-</html>
diff --git a/about-license-jsdoc3.html b/about-license-jsdoc3.html
deleted file mode 100644
index 28403418..00000000
--- a/about-license-jsdoc3.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="License information for JSDoc 3.">
-  <title>Use JSDoc: License</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>License</h1>
-    <p>JSDoc 3 is free software, licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. Commercial and
-      non-commercial use are permitted in compliance with the License.</p>
-    <p>In addition, JSDoc 3 includes or depends upon several third-party software packages, either in whole or in part. Each third-party software package is
-      provided under its own license.</p>
-    <p>See <a href="https://github.com/jsdoc3/jsdoc/blob/master/LICENSE.md">LICENSE.md</a> for more details about licensing.</p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-namepaths.html b/about-namepaths.html
deleted file mode 100644
index 5c14bfaa..00000000
--- a/about-namepaths.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="A guide to using namepaths with JSDoc 3.">
-  <title>Use JSDoc: Using namepaths with JSDoc 3</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Using namepaths with JSDoc 3</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#namepaths-in-jsdoc-3">Namepaths in JSDoc 3</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="namepaths-in-jsdoc-3">Namepaths in JSDoc 3</h2>
-    <p>When referring to a JavaScript variable that is elsewhere in your documentation, you must provide a unique identifier that maps to that variable. A
-      namepath provides a way to do so and disambiguate between instance members, static members and inner variables.</p>
-    <figure>
-      <figcaption>Basic Syntax Examples of Namepaths in JSDoc 3</figcaption>
-      <pre class="prettyprint"><code>myFunction
-MyConstructor
-MyConstructor#instanceMember
-MyConstructor.staticMember
-MyConstructor~innerMember // note that JSDoc 2 uses a dash
-</code></pre>
-    </figure>
-    <p>The example below shows: an <em>instance</em> method named &quot;say,&quot; an <em>inner</em> function also named &quot;say,&quot; and a <em>static</em>
-      method also named &quot;say.&quot; These are three distinct methods that all exist independently of one another.</p>
-    <figure>
-      <figcaption>Use a documentation tag to describe your code.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constructor */
-Person = function() {
-    this.say = function() {
-        return "I'm an instance.";
-    }
-
-    function say() {
-        return "I'm inner.";
-    }
-}
-Person.say = function() {
-    return "I'm static.";
-}
-
-var p = new Person();
-p.say();      // I'm an instance.
-Person.say(); // I'm static.
-// there is no way to directly access the inner function from here
-</code></pre>
-    </figure>
-    <p>You would use three different namepath syntaxes to refer to the three different methods:</p>
-    <figure>
-      <figcaption>Use a documentation tag to describe your code.</figcaption>
-      <pre class="prettyprint"><code>Person#say  // the instance method named "say."
-Person.say  // the static method named "say."
-Person~say  // the inner method named "say."
-</code></pre>
-    </figure>
-    <p>You might wonder why there is a syntax to refer to an inner method when that method isn&#39;t directly accessible from outside the function it is defined
-      in. While that is true, and thus the &quot;~&quot; syntax is rarely used, it <em>is</em> possible to return a reference to an inner method from another
-      method inside that container, so it is possible that some object elsewhere in your code might borrow an inner method.</p>
-    <p>Note that if a constructor has an instance member that is also a constructor, you can simply chain the namepaths together to form a longer namepath:</p>
-    <figure>
-      <figcaption>Use a documentation tag to describe your code.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constructor */
-Person = function() {
-    /** @constructor */
-    this.Idea = function() {
-        this.consider = function(){
-            return "hmmm";
-        }
-    }
-}
-
-var p = new Person();
-var i = new p.Idea();
-i.consider();
-</code></pre>
-    </figure>
-    <p>In this case, to refer to the method named &quot;consider,&quot; you would use the following namepath:
-      <code>Person#Idea#consider</code></p>
-    <p>This chaining can be used with any combination of the connecting symbols: <code># . ~</code></p>
-    <figure>
-      <figcaption>Special cases: modules, externals and events.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** A module. Its name is module:foo/bar.
- * @module foo/bar
- */
-/** The built in string object. Its name is external:String.
- * @external String
- */
-/** An event. Its name is module:foo/bar.event:MyEvent.
- * @event module:foo/bar.event:MyEvent
- */
-</code></pre>
-    </figure>
-    <p>There are some special cases with namepaths: <a href="tags-module.html">@module</a> names are prefixed by &quot;module:&quot;, <a
-        href="tags-external.html">@external</a> names are prefixed by &quot;external:&quot;, and <a href="tags-event.html">@event</a> names are prefixed by
-      &quot;event:&quot;.</p>
-    <figure>
-      <figcaption>Namepaths of objects with special characters in the name.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var chat = {
-    /**
-     * Refer to this by {@link chat."#channel"}.
-     * @namespace
-     */
-    "#channel": {
-        /**
-         * Refer to this by {@link chat."#channel".open}.
-         * @type {boolean}
-         * @defaultvalue
-         */
-        open: true,
-        /**
-         * Internal quotes have to be escaped by backslash. This is
-         * {@link chat."#channel"."say-\"hello\""}.
-         */
-        'say-"hello"': function (msg) {}
-    }
-};
-
-/**
- * Now we define an event in our {@link chat."#channel"} namespace.
- * @event chat."#channel"."op:announce-motd"
- */
-</code></pre>
-    </figure>
-    <p>Above is an example of a namespace with &quot;unusual&quot; characters in its member names (the hash character, dashes, even quotes).
-      To refer to these you just need quote the names: chat.&quot;#channel&quot;, chat.&quot;#channel&quot;.&quot;op:announce-motd&quot;, and so on.
-      Internal quotes in names should be escaped with backslashes: chat.&quot;#channel&quot;.&quot;say-&quot;hello&quot;&quot;.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-block-inline-tags.html">Block and inline tags</a>
-      </li>
-      <li>
-        <a href="tags-inline-link.html">{@link}</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-plugins.html b/about-plugins.html
deleted file mode 100644
index c34e5b24..00000000
--- a/about-plugins.html
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to create and use JSDoc plugins.">
-  <title>Use JSDoc: About JSDoc plugins</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>About JSDoc plugins</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#creating-and-enabling-a-plugin">Creating and Enabling a Plugin</a>
-      </li>
-      <li>
-        <a href="#authoring-jsdoc-3-plugins">Authoring JSDoc 3 Plugins</a>
-        <ul>
-          <li>
-            <a href="#event-handlers">Event Handlers</a>
-          </li>
-          <li>
-            <a href="#tag-definitions">Tag Definitions</a>
-          </li>
-          <li>
-            <a href="#node-visitors">Node Visitors</a>
-          </li>
-        </ul>
-      </li>
-      <li>
-        <a href="#reporting-errors">Reporting Errors</a>
-      </li>
-    </ul>
-    <h2 id="creating-and-enabling-a-plugin">Creating and Enabling a Plugin</h2>
-    <p>There are two steps required to create and enable a new JSDoc plugin:</p>
-    <ol>
-      <li>Create a JavaScript module to contain your plugin code.</li>
-      <li>Include that module in the <code>plugins</code> array of <a href="about-configuring-jsdoc.html">JSDoc&#39;s configuration file</a>. You can
-        specify an absolute or relative path. If you use a relative path, JSDoc searches for the plugin in
-        the current working directory; the directory where the configuration file is located; and the JSDoc
-        directory, in that order.</li>
-    </ol>
-    <p>For example, if your plugin is defined in the <code>plugins/shout.js</code> file in the current working
-      directory, you would add the string <code>plugins/shout</code> to the <code>plugins</code> array in your JSDoc
-      configuration file:</p>
-    <figure>
-      <figcaption>Adding a plugin to JSDoc&#39;s configuration file</figcaption>
-      <pre class="prettyprint lang-json"><code>{
-    "plugins": ["plugins/shout"]
-}
-</code></pre>
-    </figure>
-    <p>JSDoc executes plugins in the order that they are listed in the configuration file.</p>
-    <h2 id="authoring-jsdoc-3-plugins">Authoring JSDoc 3 Plugins</h2>
-    <p>JSDoc 3&#39;s plugin system offers extensive control over the parsing process. A plugin can affect the
-      parse results by doing any of the following:</p>
-    <ul>
-      <li>Defining event handlers</li>
-      <li>Defining tags</li>
-      <li>Defining a visitor for abstract syntax tree nodes</li>
-    </ul>
-    <h3 id="event-handlers">Event Handlers</h3>
-    <p>At the highest level, a plugin may register handlers for specific named events that JSDoc fires.
-      JSDoc will pass an event object to the handler. Your plugin module should export a <code>handlers</code> object
-      that contains your handler, like so:</p>
-    <figure>
-      <figcaption>Event-handler plugin for &#39;newDoclet&#39; events</figcaption>
-      <pre class="prettyprint lang-js"><code>exports.handlers = {
-    newDoclet: function(e) {
-        // Do something when we see a new doclet
-    }
-};
-</code></pre>
-    </figure>
-    <p>JSDoc fires events in the same order as the underlying code.</p>
-    <p>An event-handler plugin can stop later plugins from running by setting a <code>stopPropagation</code> property
-      on the event object (<code>e.stopPropagation = true</code>). A plugin can stop the event from firing by setting
-      a <code>preventDefault</code> property (<code>e.preventDefault = true</code>).</p>
-    <h4 id="event-parsebegin">Event: parseBegin</h4>
-    <p>The <code>parseBegin</code> event is fired before JSDoc starts loading and parsing the source files. Your
-      plugin can control which files JSDoc will parse by modifying the event&#39;s contents.</p>
-    <p><strong>Note</strong>: This event is fired in JSDoc 3.2 and later.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>sourcefiles</code>: An array of paths to source files that will be parsed.</li>
-    </ul>
-    <h4 id="event-filebegin">Event: fileBegin</h4>
-    <p>The <code>fileBegin</code> event is fired when the parser is about to parse a file. Your plugin can use this
-      event to trigger per-file initialization if necessary.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>filename</code>: The name of the file.</li>
-    </ul>
-    <h4 id="event-beforeparse">Event: beforeParse</h4>
-    <p>The <code>beforeParse</code> event is fired before parsing has begun. Plugins can use this method to modify the
-      source code that will be parsed. For instance, your plugin could add a JSDoc comment, or it could
-      remove preprocessing tags that are not valid JavaScript.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>filename</code>: The name of the file.</li>
-      <li><code>source</code>: The contents of the file.</li>
-    </ul>
-    <p>Below is an example that adds a virtual comment for a function to the source so that it will get
-      parsed and added to the documentation. This might be done to document methods that will be available
-      to users, but might not appear in the source code being documented, such as methods provided by an
-      external superclass:</p>
-    <figure>
-      <figcaption>Example</figcaption>
-      <pre class="prettyprint lang-js"><code>exports.handlers = {
-    beforeParse: function(e) {
-        var extraDoc = [
-            '/**',
-            ' * Function provided by a superclass.',
-            ' * @name superFunc',
-            ' * @memberof ui.mywidget',
-            ' * @function',
-            ' */'
-        ];
-        e.source += extraDoc.join('\n');
-    }
-};
-</code></pre>
-    </figure>
-    <h4 id="event-jsdoccommentfound">Event: jsdocCommentFound</h4>
-    <p>The <code>jsdocCommentFound</code> event is fired whenever a JSDoc comment is found. The comment may or may not
-      be associated with any code. You might use this event to modify the contents of a comment before it
-      is processed.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>filename</code>: The name of the file.</li>
-      <li><code>comment</code>: The text of the JSDoc comment.</li>
-      <li><code>lineno</code>: The line number on which the comment was found.</li>
-      <li><code>columnno</code>: The column number on which the comment was found. Available in JSDoc 3.5.0 and later.</li>
-    </ul>
-    <h4 id="event-symbolfound">Event: symbolFound</h4>
-    <p>The <code>symbolFound</code> event is fired when the parser comes across a symbol in the code that may need to
-      be documented. For example, the parser fires a <code>symbolFound</code> event for each variable, function, and
-      object literal in a source file.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>filename</code>: The name of the file.</li>
-      <li><code>comment</code>: The text of the comment associated with the symbol, if any.</li>
-      <li><code>id</code>: The unique ID of the symbol.</li>
-      <li><code>lineno</code>: The line number on which the symbol was found.</li>
-      <li><code>columnno</code>: The column number on which the symbol was found. Available in JSDoc 3.5.0 and later.</li>
-      <li><code>range</code>: An array containing the numeric index of the first and last characters in the source file
-        that are associated with the symbol.</li>
-      <li><code>astnode</code>: The symbol&#39;s node from the abstract syntax tree.</li>
-      <li><code>code</code>: Object with detailed information about the code. This object usually contains <code>name</code>,
-        <code>type</code>, and <code>node</code> properties. The object might also have <code>value</code>, <code>paramnames</code>, or <code>funcscope</code>
-        properties depending on the symbol.</li>
-    </ul>
-    <h4 id="event-newdoclet">Event: newDoclet</h4>
-    <p>The <code>newDoclet</code> event is the highest-level event. It is fired when a new doclet has been created.
-      This means that a JSDoc comment or a symbol has been processed, and the actual doclet that will be
-      passed to the template has been created.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>doclet</code>: The new doclet that was created.</li>
-    </ul>
-    <p>The doclet&#39;s properties can vary depending on the comment or symbol that the doclet represents. Some
-      common properties you&#39;re likely to see include:</p>
-    <ul>
-      <li><code>comment</code>: The text of the JSDoc comment, or an empty string if the symbol is undocumented.</li>
-      <li><code>meta</code>: Object that describes how the doclet relates to the source file (for example, the location
-        within the source file).</li>
-      <li><code>description</code>: A description of the symbol being documented.</li>
-      <li><code>kind</code>: The kind of symbol being documented (for example, <code>class</code> or <code>function</code>).</li>
-      <li><code>name</code>: The short name for the symbol (for example, <code>myMethod</code>).</li>
-      <li><code>longname</code>: The fully qualified name, including memberof info (for example, <code>MyClass#myMethod</code>).</li>
-      <li><code>memberof</code>: The module, namespace, or class that this symbol belongs to (for example, <code>MyClass</code>),
-        or an empty string if the symbol does not have a parent.</li>
-      <li><code>scope</code>: The scope of the symbol within its parent (for example, <code>global</code>, <code>static</code>, <code>instance</code>,
-        or <code>inner</code>).</li>
-      <li><code>undocumented</code>: Set to <code>true</code> if the symbol did not have a JSDoc comment.</li>
-      <li><code>defaultvalue</code>: The default value for a symbol.</li>
-      <li><code>type</code>: Object containing details about the symbol&#39;s type.</li>
-      <li><code>params</code>: Object containing the list of parameters to a function.</li>
-      <li><code>tags</code>: Object containing a list of tags that JSDoc did not recognize. Only available if
-        <code>allowUnknownTags</code> is set to <code>true</code> in JSDoc&#39;s configuration file.</li>
-    </ul>
-    <p>To see the doclets that JSDoc generates for your code, run JSDoc with the <a href="about-commandline.html"><code>-X</code> command-line
-        option</a>.</p>
-    <p>Below is an example of a <code>newDoclet</code> handler that shouts the descriptions:</p>
-    <figure>
-      <figcaption>Example</figcaption>
-      <pre class="prettyprint lang-js"><code>exports.handlers = {
-    newDoclet: function(e) {
-        // e.doclet will refer to the newly created doclet
-        // you can read and modify properties of that doclet if you wish
-        if (typeof e.doclet.description === 'string') {
-            e.doclet.description = e.doclet.description.toUpperCase();
-        }
-    }
-};
-</code></pre>
-    </figure>
-    <h4 id="event-filecomplete">Event: fileComplete</h4>
-    <p>The <code>fileComplete</code> event is fired when the parser has finished parsing a file. Your plugin could use
-      this event to trigger per-file cleanup.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>filename</code>: The name of the file.</li>
-      <li><code>source</code>: The contents of the file.</li>
-    </ul>
-    <h4 id="event-parsecomplete">Event: parseComplete</h4>
-    <p>The <code>parseComplete</code> event is fired after JSDoc has parsed all of the specified source files.</p>
-    <p><strong>Note</strong>: This event is fired in JSDoc 3.2 and later.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>sourcefiles</code>: An array of paths to source files that were parsed.</li>
-      <li><code>doclets</code>: An array of doclet objects. See the <a href="#event-newdoclet"><code>newDoclet</code> event</a> for details
-        about the properties that each doclet can contain. Available in JSDoc 3.2.1 and later.</li>
-    </ul>
-    <h4 id="event-processingcomplete">Event: processingComplete</h4>
-    <p>The <code>processingComplete</code> event is fired after JSDoc updates the parse results to reflect inherited
-      and borrowed symbols.</p>
-    <p><strong>Note</strong>: This event is fired in JSDoc 3.2.1 and later.</p>
-    <p>The event object contains the following properties:</p>
-    <ul>
-      <li><code>doclets</code>: An array of doclet objects. See the <a href="#event-newdoclet"><code>newDoclet</code> event</a> for details
-        about the properties that each doclet can contain.</li>
-    </ul>
-    <h3 id="tag-definitions">Tag Definitions</h3>
-    <p>Adding tags to the tag dictionary is a mid-level way to affect documentation generation. Before a
-      <code>newDoclet</code> event is triggered, JSDoc comment blocks are parsed to determine the description and any
-      JSDoc tags that may be present. When a tag is found, if it has been defined in the tag dictionary,
-      it is given a chance to modify the doclet.</p>
-    <p>Plugins can define tags by exporting a <code>defineTags</code> function. That function will be passed a
-      dictionary that can be used to define tags, like so:</p>
-    <figure>
-      <figcaption>Example</figcaption>
-      <pre class="prettyprint lang-js"><code>exports.defineTags = function(dictionary) {
-    // define tags here
-};
-</code></pre>
-    </figure>
-    <h4 id="the-dictionary">The Dictionary</h4>
-    <p>The dictionary provides the following methods:</p>
-    <ul>
-      <li><code>defineTag(title, opts)</code>: Used to define tags. The first parameter is the name of the tag (for
-        example, <code>param</code> or <code>overview</code>). The second is an object containing options for the tag. You can
-        include any of the following options; the default value for each option is <code>false</code>:<ul>
-          <li><code>canHaveType (boolean)</code>: Set to <code>true</code> if the tag text can include a type expression (such as
-            <code>{string}</code> in <code>@param {string} name - Description</code>).</li>
-          <li><code>canHaveName (boolean)</code>: Set to <code>true</code> if the tag text can include a name (such as <code>name</code> in
-            <code>@param {string} name - Description</code>).</li>
-          <li><code>isNamespace (boolean)</code>: Set to <code>true</code> if the tag should be applied to the doclet&#39;s longname
-            as a namespace. For example, the <code>@module</code> tag sets this option to <code>true</code>, and using the tag
-            <code>@module myModuleName</code> results in the longname <code>module:myModuleName</code>.</li>
-          <li><code>mustHaveValue (boolean)</code>: Set to <code>true</code> if the tag must have a value (such as <code>TheName</code> in
-            <code>@name TheName</code>).</li>
-          <li><code>mustNotHaveDescription (boolean)</code>: Set to <code>true</code> if the tag may have a value but must not
-            have a description (such as <code>TheDescription</code> in <code>@tag {typeExpr} TheDescription</code>).</li>
-          <li><code>mustNotHaveValue (boolean)</code>: Set to <code>true</code> if the tag must not have a value.</li>
-          <li><code>onTagged (function)</code>: A callback function executed when the tag is found. The function is
-            passed two parameters: the doclet and the tag object.</li>
-        </ul>
-      </li>
-      <li><code>lookUp(tagName)</code>: Retrieve a tag object by name. Returns the tag object, including its options,
-        or <code>false</code> if the tag is not defined.</li>
-      <li><code>isNamespace(tagName)</code>: Returns <code>true</code> if the tag is applied to a doclet&#39;s longname as a
-        namespace.</li>
-      <li><code>normalise(tagName)</code>: Returns the canonical name of a tag. For example, the <code>@const</code> tag is a
-        synonym for <code>@constant</code>; as a result, if you call <code>normalise(&#39;const&#39;)</code>, it returns the string
-        <code>constant</code>.</li>
-      <li><code>normalize(tagName)</code>: Synonym for <code>normalise</code>. Available in JSDoc 3.3.0 and later.</li>
-    </ul>
-    <p>A tag&#39;s <code>onTagged</code> callback can modify the contents of the doclet or tag.</p>
-    <figure>
-      <figcaption>Defining an onTagged callback</figcaption>
-      <pre class="prettyprint lang-js"><code>dictionary.defineTag('instance', {
-    onTagged: function(doclet, tag) {
-        doclet.scope = "instance";
-    }
-});
-</code></pre>
-    </figure>
-    <p>The <code>defineTag</code> method returns a <code>Tag</code> object, which has a <code>synonym</code> method that can be used to
-      declare a synonym for the tag.</p>
-    <figure>
-      <figcaption>Defining a tag synonym</figcaption>
-      <pre class="prettyprint lang-js"><code>dictionary.defineTag('exception', { /* options for exception tag */ })
-    .synonym('throws');
-</code></pre>
-    </figure>
-    <h3 id="node-visitors">Node Visitors</h3>
-    <p>At the lowest level, plugin authors can process each node in the abstract syntax tree (AST) by
-      defining a node visitor that will visit each node. By using a node-visitor plugin, you can modify
-      comments and trigger parser events for any arbitrary piece of code.</p>
-    <p>Plugins can define a node visitor by exporting an <code>astNodeVisitor</code> object that contains a
-      <code>visitNode</code> function, like so:</p>
-    <figure>
-      <figcaption>Example</figcaption>
-      <pre class="prettyprint lang-js"><code>exports.astNodeVisitor = {
-    visitNode: function(node, e, parser, currentSourceName) {
-        // do all sorts of crazy things here
-    }
-};
-</code></pre>
-    </figure>
-    <p>The function is called on each node with the following parameters:</p>
-    <ul>
-      <li><code>node</code>: The AST node. AST nodes are JavaScript objects that use the format defined by the <a href="https://github.com/estree/estree">ESTree
-          spec</a>. You can use <a href="https://astexplorer.net/">AST Explorer</a> to see the AST that will be created for your
-        source code. As of version 3.5.0, JSDoc uses the current version of the <a href="https://github.com/babel/babylon">Babylon</a> parser
-        with all plugins enabled.</li>
-      <li><code>e</code>: The event. If the node is one that the parser handles, the event object will already be
-        populated with the same things described in the <code>symbolFound</code> event above. Otherwise, it will be an
-        empty object on which to set various properties.</li>
-      <li><code>parser</code>: The JSDoc parser instance.</li>
-      <li><code>currentSourceName</code>: The name of the file being parsed.</li>
-    </ul>
-    <h4 id="making-things-happen">Making things happen</h4>
-    <p>The primary reasons to implement a node visitor are to be able to document things that aren&#39;t
-      normally documented (like function calls that create classes) or to auto generate documentation for
-      code that isn&#39;t documented. For instance, a plugin might look for calls to a <code>_trigger</code> method since
-      it knows that means an event is fired and then generate documentation for the event.</p>
-    <p>To make things happen, the <code>visitNode</code> function should modify properties of the event parameter. In
-      general the goal is to construct a comment and then get an event to fire. After the parser lets all
-      of the node visitors have a look at the node, it looks to see if the event object has a <code>comment</code>
-      property and an <code>event</code> property. If it has both, the event named in the event property is fired.
-      The event is usually <code>symbolFound</code> or <code>jsdocCommentFound</code>, but theoretically, a plugin could define
-      its own events and handle them.</p>
-    <p>As with event-handler plugins, a node-visitor plugin can stop later plugins from running by setting
-      a <code>stopPropagation</code> property on the event object (<code>e.stopPropagation = true</code>). A plugin can stop the
-      event from firing by setting a <code>preventDefault</code> property (<code>e.preventDefault = true</code>).</p>
-    <h2 id="reporting-errors">Reporting Errors</h2>
-    <p>If your plugin needs to report an error, use one of the following methods in the <code>jsdoc/util/logger</code>
-      module:</p>
-    <ul>
-      <li><code>logger.warn</code>: Warn the user about a possible problem.</li>
-      <li><code>logger.error</code>: Report an error from which the plugin can recover.</li>
-      <li><code>logger.fatal</code>: Report an error that should cause JSDoc to stop running.</li>
-    </ul>
-    <p>Using these methods creates a better user experience than simply throwing an error.</p>
-    <p><strong>Note</strong>: Do not use the <code>jsdoc/util/error</code> module to report errors. This module is deprecated and
-      will be removed in a future version of JSDoc.</p>
-    <figure>
-      <figcaption>Reporting a non-fatal error</figcaption>
-      <pre class="prettyprint lang-js"><code>var logger = require('jsdoc/util/logger');
-
-exports.handlers = {
-    newDoclet: function(e) {
-        // Your code here.
-
-        if (somethingBadHappened) {
-            logger.error('Oh, no, something bad happened!');
-        }
-    }
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/about-tutorials.html b/about-tutorials.html
deleted file mode 100644
index cac66d12..00000000
--- a/about-tutorials.html
+++ /dev/null
@@ -1,171 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Adding tutorials to your API documentation.">
-  <title>Use JSDoc: Tutorials</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Tutorials</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#adding-tutorials">Adding tutorials</a>
-      </li>
-      <li>
-        <a href="#configuring-titles-order-and-hierarchy">Configuring titles, order, and hierarchy</a>
-      </li>
-      <li>
-        <a href="#linking-to-tutorials-from-api-documentation">Linking to tutorials from API documentation</a>
-        <ul>
-          <li>
-            <a href="#tutorial-block-tag">@tutorial block tag</a>
-          </li>
-          <li>
-            <a href="#tutorial-inline-tag">{@tutorial} inline tag</a>
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>JSDoc allows you to include tutorials alongside your API documentation. You can use this feature to
-      provide detailed instructions for using your API, such as a &quot;getting started&quot; guide or a
-      step-by-step process for implementing a feature.</p>
-    <h2 id="adding-tutorials">Adding tutorials</h2>
-    <p>To add tutorials to your API documentation, run JSDoc with the <code>--tutorials</code> or <code>-u</code> option, and
-      provide a directory that JSDoc should search for tutorials. For example:</p>
-    <pre class="prettyprint"><code>jsdoc -u path/to/tutorials path/to/js/files
-</code></pre>
-    <p>JSDoc searches the tutorials directory for files with the following extensions:</p>
-    <ul>
-      <li><code>.htm</code></li>
-      <li><code>.html</code></li>
-      <li><code>.markdown</code> (converted from Markdown to HTML)</li>
-      <li><code>.md</code> (converted from Markdown to HTML)</li>
-      <li><code>.xhtml</code></li>
-      <li><code>.xml</code> (treated as HTML)</li>
-    </ul>
-    <p>JSDoc also searches for JSON files that contain information about the titles, ordering, and
-      hierarchy of your tutorials, as discussed in the following section.</p>
-    <p>JSDoc assigns an identifier to each tutorial. The identifier is the filename without its extension.
-      For example, the identifier for <code>/path/to/tutorials/overview.md</code> is <code>overview</code>.</p>
-    <p>In tutorial files, you can use the <a href="tags-inline-link.html"><code>{@link}</code></a> and
-      <a href="tags-inline-tutorial.html"><code>{@tutorial}</code></a> inline tags to link to other parts of the documentation. JSDoc
-      will automatically resolve the links.</p>
-    <h2 id="configuring-titles-order-and-hierarchy">Configuring titles, order, and hierarchy</h2>
-    <p>By default, JSDoc uses the filename as the tutorial&#39;s title, and all tutorials are at the same
-      level. You can use a JSON file to provide a title for each tutorial and indicates how the tutorials
-      should be sorted and grouped in the documentation.</p>
-    <p>The JSON file must use the extension <code>.json</code>. In the JSON file, you can use the tutorial identifiers
-      to provide two properties for each tutorial:</p>
-    <ul>
-      <li><code>title</code>: The title to display in the documentation.</li>
-      <li><code>children</code>: The children of the tutorial.</li>
-    </ul>
-    <p>In JSDoc 3.2.0 and later, you can use the following formats for the JSON file:</p>
-    <ol>
-      <li>
-        <p>A tree of objects, with child tutorials defined in the <code>children</code> property of their parent.
-          For example, if <code>tutorial1</code> has two children, <code>childA</code> and <code>childB</code>, and <code>tutorial2</code> is at the same
-          level as <code>tutorial1</code> and has no children:</p>
-        <pre class="prettyprint lang-json"><code> {
-     "tutorial1": {
-         "title": "Tutorial One",
-         "children": {
-             "childA": {
-                 "title": "Child A"
-             },
-             "childB": {
-                 "title": "Child B"
-             }
-         }
-     },
-     "tutorial2": {
-         "title": "Tutorial Two"
-     }
- }
-</code></pre>
-      </li>
-      <li>
-        <p>A top-level object whose properties are all tutorial objects, with child tutorials listed by name
-          in an array. For example, if <code>tutorial1</code> has two children, <code>childA</code> and <code>childB</code>, and <code>tutorial2</code> is
-          at the same level as <code>tutorial1</code> and has no children:</p>
-        <pre class="prettyprint lang-json"><code> {
-     "tutorial1": {
-         "title": "Tutorial One",
-         "children": ["childA", "childB"]
-     },
-     "tutorial2": {
-         "title": "Tutorial Two"
-     },
-     "childA": {
-         "title": "Child A"
-     },
-     "childB": {
-         "title": "Child B"
-     }
- }
-</code></pre>
-      </li>
-    </ol>
-    <p>You can also provide an individual <code>.json</code> file for each tutorial, using the tutorial identifier as
-      the filename. This method is deprecated and should not be used for new projects.</p>
-    <h2 id="linking-to-tutorials-from-api-documentation">Linking to tutorials from API documentation</h2>
-    <p>There are multiple ways to link to a tutorial from your API documentation:</p>
-    <h3 id="tutorial-block-tag">@tutorial block tag</h3>
-    <p>If you include a <a href="tags-tutorial.html"><code>@tutorial</code> block tag</a> in a JSDoc comment, the generated documentation
-      will include a link to the tutorial you specify.</p>
-    <figure>
-      <figcaption>Using the <code>@tutorial</code> block tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Class representing a socket connection.
- *
- * @class
- * @tutorial socket-tutorial
- */
-function Socket() {}
-</code></pre>
-    </figure>
-    <h3 id="tutorial-inline-tag">{@tutorial} inline tag</h3>
-    <p>You can also use the <a href="tags-inline-tutorial.html"><code>{@tutorial}</code> inline tag</a> to link to a tutorial within the text
-      of another tag. By default, JSDoc will use the tutorial&#39;s title as the link text.</p>
-    <figure>
-      <figcaption>Using the <code>{@tutorial}</code> inline tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Class representing a socket connection. See {@tutorial socket-tutorial}
- * for an overview.
- *
- * @class
- */
-function Socket() {}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/content/en/about-block-inline-tags.md b/content/about-block-inline-tags.md
similarity index 88%
rename from content/en/about-block-inline-tags.md
rename to content/about-block-inline-tags.md
index 32d33852..e0a81812 100644
--- a/content/en/about-block-inline-tags.md
+++ b/content/about-block-inline-tags.md
@@ -1,6 +1,6 @@
 ---
 title: Block and inline tags
-description: Overview of block and inline JSDoc tags.
+tags: gettingStarted
 ---
 
 ## Overview
@@ -30,7 +30,7 @@ Most JSDoc tags are block tags. In general, when this site refers to "JSDoc tags
 
 In the following example, `@param` is a block tag, and `{@link}` is an inline tag:
 
-{% example "Block and inline tags in JSDoc comments" %}
+::: example "Block and inline tags in JSDoc comments"
 
 ```js
 /**
@@ -42,11 +42,11 @@ Shoe.prototype.setColor = function(color) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 You can use inline tags within a description, as shown above, or within a block tag, as shown below:
 
-{% example "Inline tag used within a block tag" %}
+::: example "Inline tag used within a block tag"
 
 ```js
 /**
@@ -59,11 +59,11 @@ Shoe.prototype.setColor = function(color) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 When you use multiple block tags in a JSDoc comment, they must be separated by line breaks:
 
-{% example "Multiple block tags separated by line breaks" %}
+::: example "Multiple block tags separated by line breaks"
 
 ```js
 /**
@@ -76,4 +76,4 @@ Shoe.prototype.setLaceType = function(color, type) {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/about-commandline.md b/content/about-commandline.md
similarity index 90%
rename from content/en/about-commandline.md
rename to content/about-commandline.md
index 7c64f60c..40c4c9a7 100644
--- a/content/en/about-commandline.md
+++ b/content/about-commandline.md
@@ -1,8 +1,8 @@
 ---
 title: Command-line arguments to JSDoc
-description: About command-line arguments to JSDoc.
+tags: gettingStarted
 related:
-    - about-configuring-jsdoc.html
+    - /about-configuring-jsdoc
 ---
 
 At its most basic level, JSDoc is used like so:
@@ -43,11 +43,11 @@ Option|Description
 `-X`, `--explain`|Dump all doclets to the console in JSON format, then exit.
 
 
-[config-file]: about-configuring-jsdoc.html
-[including-readme]: about-including-readme.html
-[md-file]: http://daringfireball.net/projects/markdown/
-[private-tag]: tags-private.html
-[tutorials]: about-tutorials.html
+[config-file]: /about-configuring-jsdoc
+[including-readme]: /about-including-readme
+[md-file]: https://daringfireball.net/projects/markdown/
+[private-tag]: /tags-private
+[tutorials]: /about-tutorials
 
 
 ## Examples
@@ -55,18 +55,18 @@ Option|Description
 Generate documentation for files in the `./src` directory, using the configuration file
 `/path/to/my/conf.json`, and save the output in the `./docs` directory:
 
-{% example %}
+::: example
 
 ```
 /path/to/jsdoc src -r -c /path/to/my/conf.json -d docs
 ```
-{% endexample %}
+:::
 
 Run all JSDoc tests whose names include the word `tag`, and log information about each test:
 
-{% example %}
+::: example
 
 ```
 /path/to/jsdoc -T --match tag --verbose
 ```
-{% endexample %}
+:::
diff --git a/content/en/about-configuring-default-template.md b/content/about-configuring-default-template.md
similarity index 93%
rename from content/en/about-configuring-default-template.md
rename to content/about-configuring-default-template.md
index 6b47f762..107825f6 100644
--- a/content/en/about-configuring-default-template.md
+++ b/content/about-configuring-default-template.md
@@ -1,8 +1,8 @@
 ---
 title: Configuring JSDoc's default template
-description: How to configure the output from JSDoc's default template.
+tags: gettingStarted
 related:
-    - about-configuring-jsdoc.html
+    - /about-configuring-jsdoc
 ---
 
 JSDoc's default template provides several options that you can use to customize the appearance and
@@ -11,7 +11,7 @@ content of generated documentation.
 To use these options, you must [create a configuration file][about-config] for JSDoc and set the
 appropriate options in the configuration file.
 
-[about-config]: about-configuring-jsdoc.html
+[about-config]: /about-configuring-jsdoc
 
 
 ## Generating pretty-printed source files
@@ -42,7 +42,7 @@ copy. If this property is not defined, all files will be copied.
 + `templates.default.staticFiles.excludePattern`: A regular expression indicating which files to
 skip. If this property is not defined, nothing will be skipped.
 
-{% example "Copying a directory of images to the output directory" %}
+::: example "Copying a directory of images to the output directory"
 
 To copy all of the static files in `./myproject/static` to the output directory:
 
@@ -63,7 +63,7 @@ To copy all of the static files in `./myproject/static` to the output directory:
 If your static files directory contains the file `./myproject/static/img/screen.png`, you can
 display the image in your docs by using the HTML tag `<img src="img/screen.png">`.
 
-{% endexample %}
+:::
 
 
 ## Showing the current date in the page footer
diff --git a/content/en/about-configuring-jsdoc.md b/content/about-configuring-jsdoc.md
similarity index 90%
rename from content/en/about-configuring-jsdoc.md
rename to content/about-configuring-jsdoc.md
index b2e195c5..759e5e0e 100644
--- a/content/en/about-configuring-jsdoc.md
+++ b/content/about-configuring-jsdoc.md
@@ -1,10 +1,10 @@
 ---
 title: Configuring JSDoc with a configuration file
-description: How to configure JSDoc using a configuration file.
+tags: gettingStarted
 related:
-    - about-commandline.html
-    - about-plugins.html
-    - plugins-markdown.html
+    - /about-commandline
+    - /about-plugins
+    - /plugins-markdown
 ---
 
 ## Configuration file formats
@@ -22,7 +22,7 @@ example, `jsdoc -c /path/to/conf.json` or `jsdoc -c /path/to/conf.js`).
 The following examples show a simple configuration file that enables JSDoc's [Markdown
 plugin][markdown]. JSDoc's configuration options are explained in detail in the following sections.
 
-{% example "JSON configuration file" %}
+::: example "JSON configuration file"
 
 ```js
 {
@@ -30,9 +30,9 @@ plugin][markdown]. JSDoc's configuration options are explained in detail in the
 }
 ```
 
-{% endexample %}
+:::
 
-{% example "JavaScript configuration file" %}
+::: example "JavaScript configuration file"
 
 ```js
 'use strict';
@@ -42,21 +42,21 @@ module.exports = {
 };
 ```
 
-{% endexample %}
+:::
 
 For a more comprehensive example of a JSON configuration file, see the file
 [`conf.json.EXAMPLE`][conf-json-example].
 
-[about-commandline]: about-commandline.html
+[about-commandline]: /about-commandline
 [conf-json-example]: https://github.com/jsdoc3/jsdoc/blob/master/conf.json.EXAMPLE
-[markdown]: plugins-markdown.html
+[markdown]: /plugins-markdown
 
 
 ## Default configuration options
 
 If you do not specify a configuration file, JSDoc uses the following configuration options:
 
-{% example %}
+::: example
 ```js
 {
     "plugins": [],
@@ -76,7 +76,7 @@ If you do not specify a configuration file, JSDoc uses the following configurati
     }
 }
 ```
-{% endexample %}
+:::
 
 This means:
 
@@ -95,10 +95,10 @@ ignored (`source.excludePattern`).
 
 These options and others are explained in the following sections.
 
-[about-commandline]: about-commandline.html
+[about-commandline]: /about-commandline
 [closure-tags]: https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags
-[es2015-modules]: howto-es2015-modules.html
-[tags-inline-link]: tags-inline-link.html
+[es2015-modules]: /howto-es2015-modules
+[tags-inline-link]: /tags-inline-link
 
 
 ## Configuring plugins
@@ -109,7 +109,7 @@ For example, the following JSON configuration file will enable the Markdown plug
 Markdown-formatted text to HTML, and the "summarize" plugin, which autogenerates a summary for each
 doclet:
 
-{% example "JSON configuration file with plugins" %}
+::: example "JSON configuration file with plugins"
 
 ```
 {
@@ -119,7 +119,7 @@ doclet:
     ]
 }
 ```
-{% endexample %}
+:::
 
 See the [plugin reference][plugins] for further information, and look in [JSDoc's `plugins`
 directory][jsdoc-plugins] for the plugins built into JSDoc.
@@ -128,8 +128,8 @@ You can configure the Markdown plugin by adding a `markdown` object to your conf
 [Configuring the Markdown Plugin][markdown] for details.
 
 [jsdoc-plugins]: https://github.com/jsdoc3/jsdoc/tree/master/plugins
-[markdown]: plugins-markdown.html
-[plugins]: about-plugins.html
+[markdown]: /plugins-markdown
+[plugins]: /about-plugins
 
 
 ## Specifying recursion depth
@@ -139,16 +139,16 @@ files and tutorials. This option is available in JSDoc 3.5.0 and later. This opt
 you also specify the [`-r` command-line flag][about-commandline], which tells JSDoc to recursively
 search for input files.
 
-{% example %}
+::: example
 
 ```js
 {
     "recurseDepth": 10
 }
 ```
-{% endexample %}
+:::
 
-[about-commandline]: about-commandline.html
+[about-commandline]: /about-commandline
 
 
 ## Specifying input files
@@ -156,7 +156,7 @@ search for input files.
 The `source` set of options, in combination with paths given to JSDoc on the command line,
 determines the set of input files that JSDoc uses to generate documentation.
 
-{% example %}
+::: example
 
 ```js
 {
@@ -168,7 +168,7 @@ determines the set of input files that JSDoc uses to generate documentation.
     }
 }
 ```
-{% endexample %}
+:::
 
 + `source.include`: An optional array of paths that contain files for which JSDoc should generate
 documentation. The paths given to JSDoc on the command line are combined with these paths. You can
@@ -197,7 +197,7 @@ All remaining files after these four steps are processed by JSDoc.
 
 As an example, suppose you have the following file structure:
 
-{% example %}
+::: example
 
 ```
 myProject/
@@ -211,11 +211,11 @@ myProject/
    |- ignore.js
    |- d.txt
 ```
-{% endexample %}
+:::
 
 In addition, suppose your `conf.json` file looks like this example:
 
-{% example %}
+::: example
 
 ```js
 {
@@ -227,7 +227,7 @@ In addition, suppose your `conf.json` file looks like this example:
     }
 }
 ```
-{% endexample %}
+:::
 
 If you run `jsdoc myProject/c.js -c /path/to/my/conf.json -r` from the file containing the
 `myProject` folder, JSDoc will generate documentation for the following files:
@@ -250,7 +250,7 @@ files:
 3. JSDoc applies `source.excludePattern`, which removes `myProject/_private/a.js`.
 4. JSDoc applies `source.exclude`, which removes `myProject/lib/ignore.js`.
 
-[about-commandline]: about-commandline.html
+[about-commandline]: /about-commandline
 
 
 ## Specifying the source type
@@ -262,14 +262,14 @@ JSDoc 3.5.0 and later. This option accepts the following values:
 + `script`: Use this value if JSDoc logs errors such as `Delete of an unqualified identifier in
 strict mode` when it parses your code.
 
-{% example %}
+::: example
 
 ```js
 {
     "sourceType": "module"
 }
 ```
-{% endexample %}
+:::
 
 
 ## Incorporating command-line options into the configuration file
@@ -278,9 +278,9 @@ You can put many of JSDoc's [command-line options][options] into the configurati
 specifying them on the command line. To do this, add the long names of the relevant options into an
 `opts` section of the configuration file, with the value set to the option's value.
 
-[options]: about-commandline.html
+[options]: /about-commandline
 
-{% example "JSON configuration file with command-line options" %}
+::: example "JSON configuration file with command-line options"
 
 ```js
 {
@@ -293,7 +293,7 @@ specifying them on the command line. To do this, add the long names of the relev
     }
 }
 ```
-{% endexample %}
+:::
 
 By using the `source.include` and `opts` options, you can put almost all of the arguments to JSDoc
 in a configuration file, so that the command line reduces to:
@@ -310,7 +310,7 @@ takes precedence.
 
 The options in `tags` control which JSDoc tags are allowed and how each tag is interpreted.
 
-{% example %}
+::: example
 
 ```js
 {
@@ -320,7 +320,7 @@ The options in `tags` control which JSDoc tags are allowed and how each tag is i
     }
 }
 ```
-{% endexample %}
+:::
 
 The `tags.allowUnknownTags` property affects how JSDoc handles unrecognized tags. If you set this
 option to `false`, and JSDoc finds a tag that it does not recognize (for example, `@foo`), JSDoc
@@ -353,7 +353,7 @@ The options in `templates` affect the appearance and content of generated docume
 templates may not implement all of these options. See [Configuring JSDoc's Default
 Template][default-template] for additional options that the default template supports.
 
-{% example %}
+::: example
 
 ```js
 {
@@ -363,7 +363,7 @@ Template][default-template] for additional options that the default template sup
     }
 }
 ```
-{% endexample %}
+:::
 
 If `templates.monospaceLinks` is true, all link text from the [inline `{@link}`
 tag][inline-link-tag] will be rendered in monospace.
@@ -374,5 +374,5 @@ but `{@link MyNamespace.myFunction}` will be in monospace.
 
 If `templates.cleverLinks` is true, `templates.monospaceLinks` is ignored.
 
-[default-template]: about-configuring-default-template.html
-[inline-link-tag]: tags-inline-link.html
+[default-template]: /about-configuring-default-template
+[inline-link-tag]: /tags-inline-link
diff --git a/content/en/about-getting-started.md b/content/about-getting-started.md
similarity index 84%
rename from content/en/about-getting-started.md
rename to content/about-getting-started.md
index f534fc6a..121efd83 100644
--- a/content/en/about-getting-started.md
+++ b/content/about-getting-started.md
@@ -1,6 +1,6 @@
 ---
 title: Getting Started with JSDoc 3
-description: A quick-start to documenting JavaScript with JSDoc.
+tags: gettingStarted
 ---
 
 ## Getting started
@@ -20,21 +20,21 @@ must start with a `/**` sequence in order to be recognized by the JSDoc parser.
 with `/*`, `/***`, or more than 3 stars will be ignored. This is a feature to allow you to suppress
 parsing of comment blocks.
 
-{% example "The simplest documentation is just a description" %}
+::: example "The simplest documentation is just a description"
 
 ```js
 /** This is a description of the foo function. */
 function foo() {
 }
 ```
-{% endexample %}
+:::
 
 Adding a description is simple—just type the description you want in the documentation comment.
 
 Special "JSDoc tags" can be used to give more information. For example, if the function is a
 constructor for a class, you can indicate this by adding a `@constructor` tag.
 
-{% example "Use a JSDoc tag to describe your code" %}
+::: example "Use a JSDoc tag to describe your code"
 
 ```js
 /**
@@ -44,12 +44,12 @@ constructor for a class, you can indicate this by adding a `@constructor` tag.
 function Book(title, author) {
 }
 ```
-{% endexample %}
+:::
 
 More tags can be used to add more information. See the [home page][block-tags] for a complete list
 of tags that are recognized by JSDoc 3.
 
-{% example "Adding more information with tags" %}
+::: example "Adding more information with tags"
 
 ```js
 /**
@@ -61,9 +61,9 @@ of tags that are recognized by JSDoc 3.
 function Book(title, author) {
 }
 ```
-{% endexample %}
+:::
 
-[block-tags]: index.html#block-tags
+[block-tags]: /#block-tags
 
 ## Generating a website
 
@@ -74,12 +74,12 @@ By default, JSDoc uses the built-in "default" template to turn the documentation
 edit this template to suit your own needs or create an entirely new template if that is what you
 prefer.
 
-{% example "Running the documentation generator on the command line" %}
+::: example "Running the documentation generator on the command line"
 
 ```
 jsdoc book.js
 ```
-{% endexample %}
+:::
 
 This command will create a directory named `out/` in the current working directory. Within that
 directory, you will find the generated HTML pages.
diff --git a/content/en/about-including-package.md b/content/about-including-package.md
similarity index 81%
rename from content/en/about-including-package.md
rename to content/about-including-package.md
index 8d2dff1f..e973a540 100644
--- a/content/en/about-including-package.md
+++ b/content/about-including-package.md
@@ -1,6 +1,6 @@
 ---
 title: Including a Package File
-description: How to show package details in your documentation.
+tags: gettingStarted
 ---
 
 Package files contain information that can be useful for your project's documentation, such as
@@ -12,7 +12,7 @@ There are two ways to incorporate a `package.json` file into your documentation:
 
 1. In the source paths to your JavaScript files, include the path to a `package.json` file. JSDoc
 will use the first `package.json` file that it finds in your source paths.
-2. Run JSDoc with the `-P/--package` command-line option, specifying the path to your `package.json`
+1. Run JSDoc with the `-P/--package` command-line option, specifying the path to your `package.json`
 file. This option is available in JSDoc 3.3.0 and later.
 
 The `-P/--package` command-line option takes precedence over your source paths. If you use the
@@ -25,16 +25,16 @@ The `package.json` file must use [npm's package format][package-json].
 
 ## Examples
 
-{% example "Including a package file in your source paths" %}
+::: example "Including a package file in your source paths"
 
 ```
 jsdoc path/to/js path/to/package/package.json
 ```
-{% endexample %}
+:::
 
-{% example "Using the -P/--package option" %}
+::: example "Using the -P/--package option"
 
 ```
 jsdoc --package path/to/package/package-docs.json path/to/js
 ```
-{% endexample %}
+:::
diff --git a/content/en/about-including-readme.md b/content/about-including-readme.md
similarity index 77%
rename from content/en/about-including-readme.md
rename to content/about-including-readme.md
index 510bfb99..3e90d227 100644
--- a/content/en/about-including-readme.md
+++ b/content/about-including-readme.md
@@ -1,13 +1,13 @@
 ---
 title: Including a README File
-description: How to include a README file in your documentation.
+tags: gettingStarted
 ---
 
 There are two ways to incorporate a `README` file into your documentation:
 
 1. In the source paths to your JavaScript files, include the path to a Markdown file named
 `README.md`. JSDoc will use the first `README.md` file that it finds in your source paths.
-2. Run JSDoc with the `-R/--readme` command-line option, specifying the path to your `README` file.
+1. Run JSDoc with the `-R/--readme` command-line option, specifying the path to your `README` file.
 This option is available in JSDoc 3.3.0 and later. The `README` file may have any name and
 extension, but it must be in Markdown format.
 
@@ -20,16 +20,16 @@ in the generated documentation's `index.html` file.
 
 ## Examples
 
-{% example "Including a README file in your source paths" %}
+::: example "Including a README file in your source paths"
 
 ```
 jsdoc path/to/js path/to/readme/README.md
 ```
-{% endexample %}
+:::
 
-{% example "Using the -R/--readme option" %}
+::: example "Using the -R/--readme option"
 
 ```
 jsdoc --readme path/to/readme/README path/to/js
 ```
-{% endexample %}
+:::
diff --git a/content/about-license-jsdoc3.md b/content/about-license-jsdoc3.md
new file mode 100644
index 00000000..070f5ebf
--- /dev/null
+++ b/content/about-license-jsdoc3.md
@@ -0,0 +1,15 @@
+---
+title: License
+tags: gettingStarted
+---
+
+JSDoc is free software, licensed under the [Apache License, Version 2.0][apache-license]. Commercial
+and non-commercial use are permitted in compliance with the License.
+
+In addition, JSDoc includes or depends upon several third-party software packages, either in whole
+or in part. Each third-party software package is provided under its own license.
+
+See [`LICENSE.md`][jsdoc-license] for more details about licensing.
+
+[apache-license]: http://www.apache.org/licenses/LICENSE-2.0
+[jsdoc-license]: https://github.com/jsdoc/jsdoc/blob/main/LICENSE.md
diff --git a/content/en/about-namepaths.md b/content/about-namepaths.md
similarity index 82%
rename from content/en/about-namepaths.md
rename to content/about-namepaths.md
index d42b6ade..ed955aff 100644
--- a/content/en/about-namepaths.md
+++ b/content/about-namepaths.md
@@ -1,16 +1,16 @@
 ---
-title: Using namepaths with JSDoc 3
-description: A guide to using namepaths with JSDoc 3.
+title: Using namepaths with JSDoc
+tags: gettingStarted
 related:
-    - about-block-inline-tags.html
-    - tags-inline-link.html
+    - /about-block-inline-tags
+    - /tags-inline-link
 ---
 
-## Namepaths in JSDoc 3
+## Namepaths in JSDoc
 
 When referring to a JavaScript variable that is elsewhere in your documentation, you must provide a unique identifier that maps to that variable. A namepath provides a way to do so and disambiguate between instance members, static members and inner variables.
 
-{% example "Basic Syntax Examples of Namepaths in JSDoc 3" %}
+::: example "Basic Syntax Examples of Namepaths in JSDoc"
 
 ```
 myFunction
@@ -19,11 +19,11 @@ MyConstructor#instanceMember
 MyConstructor.staticMember
 MyConstructor~innerMember // note that JSDoc 2 uses a dash
 ```
-{% endexample %}
+:::
 
 The example below shows: an _instance_ method named "say," an _inner_ function also named "say," and a _static_ method also named "say." These are three distinct methods that all exist independently of one another.
 
-{% example "Use a documentation tag to describe your code." %}
+::: example "Use a documentation tag to describe your code."
 
 ```js
 /** @constructor */
@@ -45,24 +45,24 @@ p.say();      // I'm an instance.
 Person.say(); // I'm static.
 // there is no way to directly access the inner function from here
 ```
-{% endexample %}
+:::
 
 You would use three different namepath syntaxes to refer to the three different methods:
 
-{% example "Use a documentation tag to describe your code." %}
+::: example "Use a documentation tag to describe your code."
 
 ```
 Person#say  // the instance method named "say."
 Person.say  // the static method named "say."
 Person~say  // the inner method named "say."
 ```
-{% endexample %}
+:::
 
 You might wonder why there is a syntax to refer to an inner method when that method isn't directly accessible from outside the function it is defined in. While that is true, and thus the "~" syntax is rarely used, it _is_ possible to return a reference to an inner method from another method inside that container, so it is possible that some object elsewhere in your code might borrow an inner method.
 
 Note that if a constructor has an instance member that is also a constructor, you can simply chain the namepaths together to form a longer namepath:
 
-{% example "Use a documentation tag to describe your code." %}
+::: example "Use a documentation tag to describe your code."
 
 ```js
 /** @constructor */
@@ -79,7 +79,7 @@ var p = new Person();
 var i = new p.Idea();
 i.consider();
 ```
-{% endexample %}
+:::
 
 In this case, to refer to the method named "consider," you would use the following namepath:
 `Person#Idea#consider`
@@ -87,7 +87,7 @@ In this case, to refer to the method named "consider," you would use the followi
 
 This chaining can be used with any combination of the connecting symbols: `# . ~`
 
-{% example "Special cases: modules, externals and events." %}
+::: example "Special cases: modules, externals and events."
 
 ```js
 /** A module. Its name is module:foo/bar.
@@ -100,11 +100,11 @@ This chaining can be used with any combination of the connecting symbols: `# . ~
  * @event module:foo/bar.event:MyEvent
  */
 ```
-{% endexample %}
+:::
 
 There are some special cases with namepaths: [@module][module-tag] names are prefixed by "module:", [@external][external-tag] names are prefixed by "external:", and [@event][event-tag] names are prefixed by "event:".
 
-{% example "Namepaths of objects with special characters in the name." %}
+::: example "Namepaths of objects with special characters in the name."
 
 ```js
 /** @namespace */
@@ -133,12 +133,12 @@ var chat = {
  * @event chat."#channel"."op:announce-motd"
  */
 ```
-{% endexample %}
+:::
 
 Above is an example of a namespace with "unusual" characters in its member names (the hash character, dashes, even quotes).
 To refer to these you just need quote the names: chat."#channel", chat."#channel"."op:announce-motd", and so on.
 Internal quotes in names should be escaped with backslashes: chat."#channel"."say-\"hello\"".
 
-[event-tag]: tags-event.html
-[external-tag]: tags-external.html
-[module-tag]: tags-module.html
+[event-tag]: /tags-event
+[external-tag]: /tags-external
+[module-tag]: /tags-module
diff --git a/content/en/about-plugins.md b/content/about-plugins.md
similarity index 95%
rename from content/en/about-plugins.md
rename to content/about-plugins.md
index 20723f7c..f1f56120 100644
--- a/content/en/about-plugins.md
+++ b/content/about-plugins.md
@@ -1,6 +1,6 @@
 ---
 title: About JSDoc plugins
-description: How to create and use JSDoc plugins.
+tags: gettingStarted
 ---
 
 ## Creating and Enabling a Plugin
@@ -17,18 +17,18 @@ For example, if your plugin is defined in the `plugins/shout.js` file in the cur
 directory, you would add the string `plugins/shout` to the `plugins` array in your JSDoc
 configuration file:
 
-{% example "Adding a plugin to JSDoc's configuration file" %}
+::: example "Adding a plugin to JSDoc's configuration file"
 
 ```json
 {
     "plugins": ["plugins/shout"]
 }
 ```
-{% endexample %}
+:::
 
 JSDoc executes plugins in the order that they are listed in the configuration file.
 
-[config-file]: about-configuring-jsdoc.html
+[config-file]: /about-configuring-jsdoc
 
 
 ## Authoring JSDoc 3 Plugins
@@ -46,7 +46,7 @@ At the highest level, a plugin may register handlers for specific named events t
 JSDoc will pass an event object to the handler. Your plugin module should export a `handlers` object
 that contains your handler, like so:
 
-{% example "Event-handler plugin for 'newDoclet' events" %}
+::: example "Event-handler plugin for 'newDoclet' events"
 
 ```js
 exports.handlers = {
@@ -55,7 +55,7 @@ exports.handlers = {
     }
 };
 ```
-{% endexample %}
+:::
 
 JSDoc fires events in the same order as the underlying code.
 
@@ -99,7 +99,7 @@ parsed and added to the documentation. This might be done to document methods th
 to users, but might not appear in the source code being documented, such as methods provided by an
 external superclass:
 
-{% example "Example" %}
+::: example "Example"
 
 ```js
 exports.handlers = {
@@ -116,7 +116,7 @@ exports.handlers = {
     }
 };
 ```
-{% endexample %}
+:::
 
 #### Event: jsdocCommentFound
 
@@ -189,7 +189,7 @@ option][about-commandline].
 
 Below is an example of a `newDoclet` handler that shouts the descriptions:
 
-{% example "Example" %}
+::: example "Example"
 
 ```js
 exports.handlers = {
@@ -202,9 +202,9 @@ exports.handlers = {
     }
 };
 ```
-{% endexample %}
+:::
 
-[about-commandline]: about-commandline.html
+[about-commandline]: /about-commandline
 
 #### Event: fileComplete
 
@@ -254,14 +254,14 @@ it is given a chance to modify the doclet.
 Plugins can define tags by exporting a `defineTags` function. That function will be passed a
 dictionary that can be used to define tags, like so:
 
-{% example "Example" %}
+::: example "Example"
 
 ```js
 exports.defineTags = function(dictionary) {
     // define tags here
 };
 ```
-{% endexample %}
+:::
 
 #### The Dictionary
 
@@ -295,7 +295,7 @@ synonym for `@constant`; as a result, if you call `normalise('const')`, it retur
 
 A tag's `onTagged` callback can modify the contents of the doclet or tag.
 
-{% example "Defining an onTagged callback" %}
+::: example "Defining an onTagged callback"
 
 ```js
 dictionary.defineTag('instance', {
@@ -304,18 +304,18 @@ dictionary.defineTag('instance', {
     }
 });
 ```
-{% endexample %}
+:::
 
 The `defineTag` method returns a `Tag` object, which has a `synonym` method that can be used to
 declare a synonym for the tag.
 
-{% example "Defining a tag synonym" %}
+::: example "Defining a tag synonym"
 
 ```js
 dictionary.defineTag('exception', { /* options for exception tag */ })
     .synonym('throws');
 ```
-{% endexample %}
+:::
 
 ### Node Visitors
 
@@ -326,7 +326,7 @@ comments and trigger parser events for any arbitrary piece of code.
 Plugins can define a node visitor by exporting an `astNodeVisitor` object that contains a
 `visitNode` function, like so:
 
-{% example "Example" %}
+::: example "Example"
 
 ```js
 exports.astNodeVisitor = {
@@ -335,7 +335,7 @@ exports.astNodeVisitor = {
     }
 };
 ```
-{% endexample %}
+:::
 
 The function is called on each node with the following parameters:
 
@@ -386,7 +386,7 @@ Using these methods creates a better user experience than simply throwing an err
 **Note**: Do not use the `jsdoc/util/error` module to report errors. This module is deprecated and
 will be removed in a future version of JSDoc.
 
-{% example "Reporting a non-fatal error" %}
+::: example "Reporting a non-fatal error"
 
 ```js
 var logger = require('jsdoc/util/logger');
@@ -401,4 +401,4 @@ exports.handlers = {
     }
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/about-tutorials.md b/content/about-tutorials.md
similarity index 91%
rename from content/en/about-tutorials.md
rename to content/about-tutorials.md
index a3743391..981d32ba 100644
--- a/content/en/about-tutorials.md
+++ b/content/about-tutorials.md
@@ -1,6 +1,6 @@
 ---
 title: Tutorials
-description: Adding tutorials to your API documentation.
+tags: gettingStarted
 ---
 
 JSDoc allows you to include tutorials alongside your API documentation. You can use this feature to
@@ -34,8 +34,8 @@ In tutorial files, you can use the [`{@link}`][link-inline-tag] and
 [`{@tutorial}`][tutorial-inline-tag] inline tags to link to other parts of the documentation. JSDoc
 will automatically resolve the links.
 
-[link-inline-tag]: tags-inline-link.html
-[tutorial-inline-tag]: tags-inline-tutorial.html
+[link-inline-tag]: /tags-inline-link
+[tutorial-inline-tag]: /tags-inline-tutorial
 
 
 ## Configuring titles, order, and hierarchy
@@ -110,7 +110,7 @@ There are multiple ways to link to a tutorial from your API documentation:
 If you include a [`@tutorial` block tag][tutorial-block-tag] in a JSDoc comment, the generated documentation
 will include a link to the tutorial you specify.
 
-{% example "Using the `@tutorial` block tag" %}
+::: example "Using the `@tutorial` block tag"
 
 
 ```js
@@ -122,14 +122,14 @@ will include a link to the tutorial you specify.
  */
 function Socket() {}
 ```
-{% endexample %}
+:::
 
 ### {@tutorial} inline tag
 
 You can also use the [`{@tutorial}` inline tag][tutorial-inline-tag] to link to a tutorial within the text
 of another tag. By default, JSDoc will use the tutorial's title as the link text.
 
-{% example "Using the `{@tutorial}` inline tag" %}
+::: example "Using the `{@tutorial}` inline tag"
 
 ```js
 /**
@@ -140,7 +140,7 @@ of another tag. By default, JSDoc will use the tutorial's title as the link text
  */
 function Socket() {}
 ```
-{% endexample %}
+:::
 
-[tutorial-block-tag]: tags-tutorial.html
-[tutorial-inline-tag]: tags-inline-tutorial.html
+[tutorial-block-tag]: /tags-tutorial
+[tutorial-inline-tag]: /tags-inline-tutorial
diff --git a/content/data/redirects.js b/content/data/redirects.js
new file mode 100644
index 00000000..6afa29a1
--- /dev/null
+++ b/content/data/redirects.js
@@ -0,0 +1,5 @@
+const path = require('node:path');
+
+const yamlLoad = require('../../lib/yaml-load');
+
+module.exports = () => yamlLoad(path.join(__dirname, 'redirects.yaml')).redirects;
diff --git a/content/data/redirects.yaml b/content/data/redirects.yaml
new file mode 100644
index 00000000..0a815506
--- /dev/null
+++ b/content/data/redirects.yaml
@@ -0,0 +1,9 @@
+redirects:
+- from: /about-inline-tags
+  to: /about-block-inline-tags
+- from: /tags-constructor
+  to: /tags-class
+- from: /tags-link
+  to: /tags-inline-link
+- from: /tags-method
+  to: /tags-function
diff --git a/content/data/toc.js b/content/data/toc.js
new file mode 100644
index 00000000..eb44b352
--- /dev/null
+++ b/content/data/toc.js
@@ -0,0 +1,5 @@
+const path = require('node:path');
+
+const yamlLoad = require('../../lib/yaml-load');
+
+module.exports = () => yamlLoad(path.join(__dirname, 'toc.yaml')).toc;
diff --git a/content/data/toc.yaml b/content/data/toc.yaml
new file mode 100644
index 00000000..7eb37e19
--- /dev/null
+++ b/content/data/toc.yaml
@@ -0,0 +1,65 @@
+toc:
+- section: Getting started
+  contents:
+  - title: Getting started with JSDoc
+    path: /about-getting-started
+    description: A quick start to documenting JavaScript with JSDoc.
+  - title: Using namepaths with JSDoc
+    path: /about-namepaths
+    description: A guide to using namepaths with JSDoc.
+  - title: Command-line arguments to JSDoc
+    path: /about-commandline
+    description: About command-line arguments to JSDoc.
+  - title: Configuring JSDoc with a configuration file
+    path: /about-configuring-jsdoc
+    description: How to configure JSDoc using a configuration file.
+  - title: Configuring JSDoc's default template
+    path: /about-configuring-default-template
+    description: How to configure the output from JSDoc's default template.
+  - title: Block and inline tags
+    path: /about-block-inline-tags
+    description: Overview of block and inline JSDoc tags.
+  - title: About JSDoc plugins
+    path: /about-plugins
+    description: How to create and use JSDoc plugins.
+  - title: Using the Markdown plugin
+    path: /plugins-markdown
+    description: Enable Markdown support in JSDoc.
+  - title: Tutorials
+    path: /about-tutorials
+    description: Adding tutorials to your API documentation.
+  - title: Including a Package File
+    path: /about-including-package
+    description: How to show package details in your documentation.
+  - title: Including a README File
+    path: /about-including-readme
+    description: How to include a README file in your documentation.
+  - title: License
+    path: /about-license-jsdoc3
+    description: License information for JSDoc.
+- section: JSDoc examples
+  contents:
+  - title: ES 2015 classes
+    path: /howto-es2015-classes
+    description: How to add JSDoc comments to ECMAScript 2015 classes.
+  - title: ES 2015 modules
+    path: /howto-es2015-modules
+    description: How to add JSDoc comments to ECMAScript 2015 modules.
+  - title: CommonJS modules
+    path: /howto-commonjs-modules
+    description: How to add JSDoc comments to CommonJS and Node.js modules.
+  - title: AMD modules
+    path: /howto-amd-modules
+    description: How to add JSDoc comments to AMD and RequireJS modules.
+- section: Block tags
+  generated: blockTags
+- section: Inline tags
+  generated: inlineTags
+- section: Contribute
+  contents:
+  - title: JSDoc project on GitHub
+    path: https://github.com/jsdoc/jsdoc
+    description: Contribute to JSDoc.
+  - title: JSDoc documentation project on GitHub
+    path: https://github.com/jsdoc/jsdoc.github.io
+    description: Contribute to the JSDoc documentation.
diff --git a/content/en/about-license-jsdoc3.md b/content/en/about-license-jsdoc3.md
deleted file mode 100644
index 5ce180a7..00000000
--- a/content/en/about-license-jsdoc3.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: License
-description: License information for JSDoc 3.
----
-
-JSDoc 3 is free software, licensed under the [Apache License, Version 2.0][apache-license]. Commercial and non-commercial use are permitted in compliance with the License.
-
-In addition, JSDoc 3 includes or depends upon several third-party software packages, either in whole or in part. Each third-party software package is provided under its own license.
-
-See [LICENSE.md][jsdoc-license] for more details about licensing.
-
-[apache-license]: http://www.apache.org/licenses/LICENSE-2.0
-[jsdoc-license]: https://github.com/jsdoc3/jsdoc/blob/master/LICENSE.md
diff --git a/content/en/index.md b/content/en/index.md
deleted file mode 100644
index af13460e..00000000
--- a/content/en/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Index
-description: Official documentation for JSDoc 3.
----
-
-{# autogenerated #}
diff --git a/content/en/howto-amd-modules.md b/content/howto-amd-modules.md
similarity index 85%
rename from content/en/howto-amd-modules.md
rename to content/howto-amd-modules.md
index 0d2d2fbf..53f4ea68 100644
--- a/content/en/howto-amd-modules.md
+++ b/content/howto-amd-modules.md
@@ -1,10 +1,9 @@
 ---
 title: AMD Modules
-description: How to add JSDoc comments to AMD and RequireJS modules.
 related:
-    - about-namepaths.html
-    - tags-exports.html
-    - tags-module.html
+    - /about-namepaths
+    - /tags-exports
+    - /tags-module
 ---
 
 ## Overview
@@ -16,10 +15,10 @@ how to document an AMD module for JSDoc, based on the coding conventions that yo
 If you're documenting CommonJS or Node.js modules, see [CommonJS Modules][commonjs-modules] for
 instructions.
 
-[amd-modules]: howto-amd-modules.html
+[amd-modules]: /howto-amd-modules
 [amd-api]: https://github.com/amdjs/amdjs-api/blob/master/AMD.md
-[commonjs-modules]: howto-commonjs-modules.html
-[require-js]: http://requirejs.org/
+[commonjs-modules]: /howto-commonjs-modules
+[require-js]: https://requirejs.org/
 
 
 ## Module identifiers
@@ -50,10 +49,10 @@ Similarly, the namepath for each member of the module will start with `module:`,
 module name. For example, if your `my/pants` module exports a `Jeans` constructor, and `Jeans` has
 an instance method named `hem`, the instance method's longname is `module:my/pants.Jeans#hem`.
 
-[exports-tag]: tags-exports.html
-[module-tag]: tags-module.html
-[namepaths]: about-namepaths.html
-[see-tag]: tags-see.html
+[exports-tag]: /tags-exports
+[module-tag]: /tags-module
+[namepaths]: /about-namepaths
+[see-tag]: /tags-see
 
 
 ## Function that returns an object literal
@@ -62,7 +61,7 @@ If you define your AMD module as a function that returns an object literal, use
 [`@exports` tag][exports-tag] to document the module's name. JSDoc will automatically detect that
 the object's properties are members of the module.
 
-{% example "Function that returns an object literal" %}
+::: example "Function that returns an object literal"
 
 ```js
 define('my/shirt', function() {
@@ -88,9 +87,9 @@ define('my/shirt', function() {
     return shirt;
 });
 ```
-{% endexample %}
+:::
 
-[exports-tag]: tags-exports.html
+[exports-tag]: /tags-exports
 
 
 ## Function that returns another function
@@ -100,7 +99,7 @@ can use a standalone comment with a [`@module` tag][module-tag] to document the
 use an [`@alias` tag][alias-tag] to tell JSDoc that the function uses the same longname as the
 module.
 
-{% example "Function that returns a constructor" %}
+::: example "Function that returns a constructor"
 
 ```js
 /**
@@ -125,10 +124,10 @@ define('my/jacket', function() {
     return Jacket;
 });
 ```
-{% endexample %}
+:::
 
-[alias-tag]: tags-alias.html
-[module-tag]: tags-module.html
+[alias-tag]: /tags-alias
+[module-tag]: /tags-module
 
 
 ## Module declared in a return statement
@@ -137,7 +136,7 @@ If you declare your module object in a function's `return` statement, you can us
 comment with a [`@module` tag][module-tag] to document the module. You can then add an
 [`@alias` tag][alias-tag] to tell JSDoc that the module object has the same longname as the module.
 
-{% example "Module declared in a return statement" %}
+::: example "Module declared in a return statement"
 
 ```js
 /**
@@ -156,10 +155,10 @@ define('my/shirt', function() {
     };
 });
 ```
-{% endexample %}
+:::
 
-[alias-tag]: tags-alias.html
-[module-tag]: tags-module.html
+[alias-tag]: /tags-alias
+[module-tag]: /tags-module
 
 
 ## Module object passed to a function
@@ -168,7 +167,7 @@ If the module object is passed into the function that defines your module, you c
 module by adding an [`@exports` tag][exports-tag] to the function parameter. This pattern is
 supported in JSDoc 3.3.0 and later.
 
-{% example "Module object passed to a function" %}
+::: example "Module object passed to a function"
 
 ```js
 define('my/jacket', function(
@@ -187,9 +186,9 @@ define('my/jacket', function(
     };
 });
 ```
-{% endexample %}
+:::
 
-[exports-tag]: tags-exports.html
+[exports-tag]: /tags-exports
 
 
 ## Multiple modules defined in one file
@@ -197,7 +196,7 @@ define('my/jacket', function(
 If you define more than one AMD module in a single JavaScript file, use the
 [`@exports` tag][exports-tag] to document each module object.
 
-{% example "Multiple AMD modules defined in one file" %}
+::: example "Multiple AMD modules defined in one file"
 
 ```js
 // one module
@@ -245,6 +244,6 @@ define('tag', function() {
     return tag;
 });
 ```
-{% endexample %}
+:::
 
-[exports-tag]: tags-exports.html
+[exports-tag]: /tags-exports
diff --git a/content/en/howto-commonjs-modules.md b/content/howto-commonjs-modules.md
similarity index 85%
rename from content/en/howto-commonjs-modules.md
rename to content/howto-commonjs-modules.md
index f9d6a857..874fb7d6 100644
--- a/content/en/howto-commonjs-modules.md
+++ b/content/howto-commonjs-modules.md
@@ -1,10 +1,9 @@
 ---
 title: CommonJS Modules
-description: How to add JSDoc comments to CommonJS and Node.js modules.
 related:
-    - about-namepaths.html
-    - tags-exports.html
-    - tags-module.html
+    - /about-namepaths
+    - /tags-exports
+    - /tags-module
 ---
 
 ## Overview
@@ -20,9 +19,9 @@ This page explains how to document CommonJS and Node.js modules that use several
 conventions. If you're documenting Asynchronous Module Definition (AMD) modules (also
 known as "RequireJS modules"), see [AMD Modules][amd-modules].
 
-[commonjs-modules]: http://wiki.commonjs.org/wiki/Modules/1.1
-[node-modules]: http://nodejs.org/api/modules.html
-[amd-modules]: howto-amd-modules.html
+[commonjs-modules]: https://wiki.commonjs.org/wiki/Modules/1.1
+[node-modules]: https://nodejs.org/api/modules.html
+[amd-modules]: /howto-amd-modules
 
 
 ## Module identifiers
@@ -52,9 +51,9 @@ Similarly, the namepath for each member of the module will start with `module:`,
 module name. For example, if your `my/pants` module exports a `Jeans` constructor, and `Jeans` has
 an instance method named `hem`, the instance method's longname is `module:my/pants.Jeans#hem`.
 
-[module-tag]: tags-module.html
-[namepaths]: about-namepaths.html
-[see-tag]: tags-see.html
+[module-tag]: /tags-module
+[namepaths]: /about-namepaths
+[see-tag]: /tags-see
 
 
 ## Properties of the 'exports' object
@@ -65,7 +64,7 @@ JSDoc will automatically recognize that the module exports these symbols.
 In the following example, the `my/shirt` module exports the methods `button` and `unbutton`. JSDoc
 will automatically detect that the module exports these methods.
 
-{% example "Methods added to the exports object" %}
+::: example "Methods added to the exports object"
 
 ```js
 /**
@@ -83,7 +82,7 @@ exports.unbutton = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 
 <a name="local-vars"></a>
@@ -93,7 +92,7 @@ In some cases, an exported symbol may be assigned to a local variable before it'
 `exports` object. For example, if your module exports a `wash` method, and the module itself often
 calls the `wash` method, you might write the module as follows:
 
-{% example "Method assigned to a local variable and added to the exports object" %}
+::: example "Method assigned to a local variable and added to the exports object"
 
 ```js
 /**
@@ -106,7 +105,7 @@ var wash = exports.wash = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 In this case, JSDoc will _not_ automatically document `wash` as an exported method, because the
 JSDoc comment appears immediately before the local variable `wash` rather than `exports.wash`. One
@@ -114,7 +113,7 @@ solution is to add an [`@alias` tag][alias-tag] that defines the correct longnam
 this case, the method is a static member of the module `my/shirt`, so the correct longname is
 `module:my/shirt.wash`:
 
-{% example "Longname defined in an @alias tag" %}
+::: example "Longname defined in an @alias tag"
 
 ```js
 /**
@@ -130,12 +129,12 @@ var wash = exports.wash = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 Another solution is to move the method's JSDoc comment so it comes immediately before
 `exports.wash`. This change allows JSDoc to detect that `wash` is exported by the module `my/shirt`:
 
-{% example "JSDoc comment immediately before exports.wash" %}
+::: example "JSDoc comment immediately before exports.wash"
 
 ```js
 /**
@@ -149,9 +148,9 @@ exports.wash = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
-[alias-tag]: tags-alias.html
+[alias-tag]: /tags-alias
 
 
 ## Values assigned to 'module.exports'
@@ -165,7 +164,7 @@ If a module assigns an object literal to `module.exports`. JSDoc automatically r
 module exports only this value. In addition, JSDoc automatically sets the correct longname for each
 property:
 
-{% example "Object literal assigned to module.exports" %}
+::: example "Object literal assigned to module.exports"
 
 ```js
 /**
@@ -195,12 +194,12 @@ module.exports = {
     }
 };
 ```
-{% endexample %}
+:::
 
 You can also use this pattern if you add properties to `module.exports` outside of the object
 literal:
 
-{% example "Assignment to module.exports followed by property definition" %}
+::: example "Assignment to module.exports followed by property definition"
 
 ```js
 /**
@@ -230,14 +229,14 @@ module.exports.darken = function(color, percent) {
     // ..
 };
 ```
-{% endexample %}
+:::
 
 ### Function assigned to 'module.exports'
 
 If you assign a function to `module.exports`, JSDoc will automatically set the correct longname for
 the function:
 
-{% example "Function assigned to 'module.exports'" %}
+::: example "Function assigned to 'module.exports'"
 
 ```js
 /**
@@ -255,11 +254,11 @@ module.exports = function(color1, color2) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 The same pattern works for constructor functions:
 
-{% example "Constructor assigned to 'module.exports'" %}
+::: example "Constructor assigned to 'module.exports'"
 
 ```js
 /**
@@ -272,7 +271,7 @@ module.exports = function ColorMixer() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 ### String, number, or boolean assigned to 'module.exports'
 
@@ -280,7 +279,7 @@ For value types (strings, numbers, and booleans) assigned to `module.exports`, y
 exported value's type by using the [`@type` tag][type-tag] in the same JSDoc comment as the
 `@module` tag:
 
-{% example "String assigned to module.exports" %}
+::: example "String assigned to module.exports"
 
 ```js
 /**
@@ -291,9 +290,9 @@ exported value's type by using the [`@type` tag][type-tag] in the same JSDoc com
 
 module.exports = 'perniciousness';
 ```
-{% endexample %}
+:::
 
-[type-tag]: tags-type.html
+[type-tag]: /tags-type
 
 
 ## Values assigned to 'module.exports' and local variables
@@ -302,7 +301,7 @@ If your module exports symbols that are not directly assigned to `module.exports
 [`@exports` tag][exports-tag] in place of the `@module` tag. The `@exports` tag tells JSDoc that a
 symbol represents the value exported by a module.
 
-{% example "Object literal assigned to a local variable and module.exports" %}
+::: example "Object literal assigned to a local variable and module.exports"
 
 ```js
 /**
@@ -322,10 +321,10 @@ var mixer = module.exports = {
 };
 
 ```
-{% endexample %}
+:::
 
-[alias-tag]: tags-alias.html
-[exports-tag]: tags-exports.html
+[alias-tag]: /tags-alias
+[exports-tag]: /tags-exports
 
 
 ## Properties added to 'this'
@@ -333,7 +332,7 @@ var mixer = module.exports = {
 When a module adds a property to its `this` object, JSDoc 3 automatically recognizes that the new
 property is exported by the module:
 
-{% example "Properties added to a module's 'this' object" %}
+::: example "Properties added to a module's 'this' object"
 
 ```js
 /**
@@ -351,4 +350,4 @@ this.Book = function(title) {
     this.title = title;
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/howto-es2015-classes.md b/content/howto-es2015-classes.md
similarity index 85%
rename from content/en/howto-es2015-classes.md
rename to content/howto-es2015-classes.md
index 1fe2d57f..88f78321 100644
--- a/content/en/howto-es2015-classes.md
+++ b/content/howto-es2015-classes.md
@@ -1,8 +1,7 @@
 ---
 title: ES 2015 Classes
-description: How to add JSDoc comments to ECMAScript 2015 classes.
 related:
-    - tags-augments.html
+    - /tags-augments
 ---
 
 JSDoc 3 makes it easy to document classes that follow the [ECMAScript 2015
@@ -10,7 +9,7 @@ specification][es2015-classes]. You don't need to use tags such as `@class` and
 ES 2015 classes—JSDoc automatically identifies classes and their constructors simply by parsing your
 code. ES 2015 classes are supported in JSDoc 3.4.0 and later.
 
-[es2015-classes]: http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions
+[es2015-classes]: https://262.ecma-international.org/6.0/#sec-class-definitions
 
 
 ## Documenting a simple class
@@ -18,7 +17,7 @@ code. ES 2015 classes are supported in JSDoc 3.4.0 and later.
 The following example shows how to document a simple class with a constructor, two instance methods,
 and one static method:
 
-{% example "Simple ES 2015 class" %}
+::: example "Simple ES 2015 class"
 
 ```js
 /** Class representing a point. */
@@ -59,12 +58,12 @@ class Point {
 }
 ```
 
-{% endexample %}
+:::
 
 You can also document classes that are defined in a class expression, which assigns the class to a
 variable or constant:
 
-{% example "ES 2015 class expression" %}
+::: example "ES 2015 class expression"
 
 ```js
 /** Class representing a point. */
@@ -73,7 +72,7 @@ const Point = class {
 }
 ```
 
-{% endexample %}
+:::
 
 
 ## Extending classes
@@ -83,7 +82,7 @@ class you're extending. You do this with the [`@augments` (or `@extends`) tag][a
 
 For example, to extend the `Point` class shown above:
 
-{% example "Extending an ES 2015 class" %}
+::: example "Extending an ES 2015 class"
 
 ```js
 /**
@@ -111,6 +110,6 @@ class Dot extends Point {
 }
 ```
 
-{% endexample %}
+:::
 
-[augments-tag]: tags-augments.html
+[augments-tag]: /tags-augments
diff --git a/content/en/howto-es2015-modules.md b/content/howto-es2015-modules.md
similarity index 90%
rename from content/en/howto-es2015-modules.md
rename to content/howto-es2015-modules.md
index 274b7839..8ed89bc5 100644
--- a/content/en/howto-es2015-modules.md
+++ b/content/howto-es2015-modules.md
@@ -1,9 +1,8 @@
 ---
 title: ES 2015 Modules
-description: How to add JSDoc comments to ECMAScript 2015 modules.
 related:
-    - about-namepaths.html
-    - tags-module.html
+    - /about-namepaths
+    - /tags-module
 ---
 
 JSDoc 3 makes it possible to document modules that follow the [ECMAScript 2015
@@ -36,9 +35,9 @@ Similarly, the namepath for each member of the module will start with `module:`,
 module name. For example, if your `my/pants` module exports a `Jeans` class, and `Jeans` has an
 instance method named `hem`, the instance method's longname is `module:my/pants.Jeans#hem`.
 
-[module-tag]: tags-module.html
-[namepaths]: about-namepaths.html
-[see-tag]: tags-see.html
+[module-tag]: /tags-module
+[namepaths]: /about-namepaths
+[see-tag]: /tags-see
 
 
 ## Exported values
@@ -48,7 +47,7 @@ In most cases, you can simply add a JSDoc comment to the `export` statement that
 exported value. If you are exporting a value under another name, you can document the exported value
 within its `export` block.
 
-{% example "Documenting values exported by a module" %}
+::: example "Documenting values exported by a module"
 
 ```js
 /** @module color/mixer */
@@ -82,6 +81,6 @@ export {
 }
 ```
 
-{% endexample %}
+:::
 
 [es2015-modules]: http://www.ecma-international.org/ecma-262/6.0/#sec-modules
diff --git a/content/includes/index.njk b/content/includes/index.njk
new file mode 100644
index 00000000..52138d4b
--- /dev/null
+++ b/content/includes/index.njk
@@ -0,0 +1,55 @@
+{%- extends 'layout.njk' -%}
+
+{%- macro formatTag(tagName, tagType) -%}
+  {%- if tagType == 'inlineTag' -%}
+    {@{{ tagName }}}
+  {%- else -%}
+    @{{ tagName }}
+  {%- endif -%}
+{%- endmacro -%}
+
+{%- macro generateSection(tocSection) -%}
+  <dl>
+    {%- for item in collections[tocSection.generated] | sortTags -%}
+      {%- set tagName = item.data.tag -%}
+      <dt>
+        <a href="{{ item.filePathStem }}">{{ formatTag(tagName, tocSection.generated) }}</a>
+        {{ synonyms(item, tocSection.generated) }}
+      </dt>
+      <dd>{{ item.data.description }}</dd>
+    {%- endfor -%}
+  </dl>
+{%- endmacro -%}
+
+{%- macro renderSection(tocSection) -%}
+  <h2 id="{{ tocSection.section | slugify }}">{{ tocSection.section }}</h2>
+  {%- if tocSection.generated -%}
+    {{ generateSection(tocSection) }}
+  {%- else -%}
+    <dl>
+      {%- for item in tocSection.contents -%}
+        <dt><a href="{{ item.path | default('') }}">{{ item.title | default('') }}</a></dt>
+        <dd>{{ item.description | default('') }}</dd>
+      {%- endfor -%}
+    </dl>
+  {%- endif -%}
+{%- endmacro -%}
+
+{%- macro synonyms(item, tagType) -%}
+  {%- if item.data.synonyms -%}
+    {%- set comma = joiner(', ') -%}
+    (synonyms: {% for synonym in item.data.synonyms -%}
+      {{ comma() }}{{ formatTag(synonym, tagType) -}}
+    {%- endfor -%})
+  {%- endif -%}
+{%- endmacro -%}
+
+{%- block content -%}
+  {%- for tocSection in toc -%}
+    {{- renderSection(tocSection) -}}
+  {%- endfor -%}
+
+  <p>
+    <a href="https://github.com/jsdoc/jsdoc" class="github-ribbon">Fork me on GitHub</a>
+  </p>
+{% endblock %}
diff --git a/content/includes/layout.njk b/content/includes/layout.njk
new file mode 100644
index 00000000..1fae0d6c
--- /dev/null
+++ b/content/includes/layout.njk
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
+<html lang="en">
+  <head>
+    {% block meta -%}
+      <meta charset="utf-8">
+      <meta name="generator" content="{{ eleventy.generator }}">
+      {% if keywords -%}
+        <meta name="keywords" content="{{ keywords }}">
+      {%- endif %}
+      {% if description -%}
+        <meta name="description" content="{{ description }}">
+      {%- endif -%}
+    {%- endblock -%}
+
+    <title>Use JSDoc{% if title %}: {{ title }}{% endif %}</title>
+
+    {%- block styles -%}
+      <link rel="stylesheet" href="/styles/usejsdoc.css">
+      <link rel="stylesheet" href="/styles/hljs-tomorrow.css">
+      <link rel="stylesheet" href="/styles/css3-github-ribbon.css">
+    {%- endblock -%}
+  </head>
+
+  <body>
+    <header>
+      <a href="/">@use JSDoc</a>
+    </header>
+
+    <article>
+      {% if title -%}
+        <h1>{{ title }}</h1>
+      {%- endif %}
+
+      {%- block synonyms -%}
+        {%- if synonyms | length -%}
+          <h2 id="synonyms">Synonyms</h2>
+          <ul>
+            {% for synonym in synonyms -%}
+              <li><code>{{ synonym }}</code></li>
+            {%- endfor %}
+          </ul>
+        {%- endif -%}
+      {%- endblock -%}
+
+      {%- block content -%}
+        {{ content | safe }}
+      {%- endblock -%}
+
+      {%- if related | length -%}
+        {%- set relatedLinks = related | relatedList(collections) -%}
+        <h2 id="related-links">Related links</h2>
+        <ul>
+          {%- for relatedLink in relatedLinks -%}
+            <li><a href="{{ relatedLink.path }}">{{ relatedLink.title }}</a></li>
+          {%- endfor -%}
+        </ul>
+      {%- endif -%}
+
+    </article>
+
+    <footer>
+      <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
+      <br>
+      Copyright &#169; 2011 the
+      <a href="https://github.com/jsdoc/jsdoc.github.io/contributors">contributors</a> to the JSDoc
+      documentation.
+      <br>
+      This website is <a href="https://github.com/jsdoc/jsdoc.github.io">open source</a> and is
+      licensed under the
+      <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
+      Attribution-ShareAlike 3.0 Unported License</a>.
+    </footer>
+  </body>
+</html>
diff --git a/content/index.md b/content/index.md
new file mode 100644
index 00000000..05da2e5e
--- /dev/null
+++ b/content/index.md
@@ -0,0 +1,5 @@
+---
+title: Index
+description: Official documentation for JSDoc.
+layout: index.njk
+---
diff --git a/content/en/plugins-markdown.md b/content/plugins-markdown.md
similarity index 84%
rename from content/en/plugins-markdown.md
rename to content/plugins-markdown.md
index b0f26a47..dd3043ef 100644
--- a/content/en/plugins-markdown.md
+++ b/content/plugins-markdown.md
@@ -1,6 +1,6 @@
 ---
 title: Using the Markdown plugin
-description: Enable Markdown support in JSDoc.
+tags: gettingStarted
 ---
 
 ## Overview
@@ -27,15 +27,15 @@ comment)
 + [`@throws`][throws-tag]
 
 [additional-tags]: #additional-tags
-[author-tag]: tags-author.html
-[classdesc-tag]: tags-classdesc.html
-[description-tag]: tags-description.html
-[marked]: https://github.com/chjj/marked
-[param-tag]: tags-param.html
-[property-tag]: tags-property.html
-[returns-tag]: tags-returns.html
-[see-tag]: tags-see.html
-[throws-tag]: tags-throws.html
+[author-tag]: /tags-author
+[classdesc-tag]: /tags-classdesc
+[description-tag]: /tags-description
+[marked]: https://github.com/markedjs/marked
+[param-tag]: /tags-param
+[property-tag]: /tags-property
+[returns-tag]: /tags-returns
+[see-tag]: /tags-see
+[throws-tag]: /tags-throws
 
 
 ## Enabling the Markdown plugin
@@ -43,16 +43,16 @@ comment)
 To enable the Markdown plugin, add the string `plugins/markdown` to the `plugins` array in your
 [JSDoc configuration file][config-file]:
 
-{% example "JSON configuration file that enables the Markdown plugin" %}
+::: example "JSON configuration file that enables the Markdown plugin"
 
 ```json
 {
     "plugins": ["plugins/markdown"]
 }
 ```
-{% endexample %}
+:::
 
-[config-file]: about-configuring-jsdoc.html
+[config-file]: /about-configuring-jsdoc
 
 
 ## Converting Markdown in additional JSDoc tags
@@ -69,7 +69,7 @@ For example, if the `foo` and `bar` tags accept values that are stored in a docl
 properties, you could enable Markdown processing of these tags by adding the following settings to
 your JSDoc configuration file:
 
-{% example "Converting Markdown in 'foo' and 'bar' tags" %}
+::: example "Converting Markdown in 'foo' and 'bar' tags"
 
 ```json
 {
@@ -79,7 +79,7 @@ your JSDoc configuration file:
     }
 }
 ```
-{% endexample %}
+:::
 
 [default-tags]: #default-tags
 
@@ -92,7 +92,7 @@ property contains an array of the default tags that should not be processed for
 
 For example, to exclude the `author` tag from Markdown processing:
 
-{% example "Excluding the 'author' tag from Markdown processing" %}
+::: example "Excluding the 'author' tag from Markdown processing"
 
 ```json
 {
@@ -102,7 +102,7 @@ For example, to exclude the `author` tag from Markdown processing:
     }
 }
 ```
-{% endexample %}
+:::
 
 
 ## Hard-wrapping text at line breaks
diff --git a/content/redirects.njk b/content/redirects.njk
new file mode 100644
index 00000000..c4685294
--- /dev/null
+++ b/content/redirects.njk
@@ -0,0 +1,10 @@
+---
+# https://developers.cloudflare.com/pages/platform/redirects/
+permalink: _redirects
+layout: false
+eleventyExcludeFromCollections: true
+---
+
+{%- for redirect in redirects -%}
+{{ redirect.from }} {{ redirect.to }} 301
+{% endfor -%}
diff --git a/content/en/tags-abstract.md b/content/tags-abstract.md
similarity index 88%
rename from content/en/tags-abstract.md
rename to content/tags-abstract.md
index e6ca5064..75246f6f 100644
--- a/content/en/tags-abstract.md
+++ b/content/tags-abstract.md
@@ -1,5 +1,6 @@
 ---
 tag: abstract
+tags: blockTags
 description: This member must be implemented (or overridden) by the inheritor.
 synonyms:
     - virtual
@@ -12,7 +13,7 @@ inherit the member.
 
 ## Example
 
-{% example "Parent class with abstract method, and child class that implements the method" %}
+::: example "Parent class with abstract method, and child class that implements the method"
 
 ```js
 /**
@@ -45,4 +46,4 @@ Milk.prototype.isSolid = function() {
     return false;
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-access.md b/content/tags-access.md
similarity index 82%
rename from content/en/tags-access.md
rename to content/tags-access.md
index 0cfd4e13..40f254d2 100644
--- a/content/en/tags-access.md
+++ b/content/tags-access.md
@@ -1,14 +1,15 @@
 ---
 tag: access
+tags: blockTags
 description: Specify the access level of this member (private, package-private, public, or protected).
 related:
-    - tags-global.html
-    - tags-instance.html
-    - tags-package.html
-    - tags-private.html
-    - tags-protected.html
-    - tags-public.html
-    - tags-static.html
+    - /tags-global
+    - /tags-instance
+    - /tags-package
+    - /tags-private
+    - /tags-protected
+    - /tags-public
+    - /tags-static
 ---
 
 ## Syntax
@@ -36,15 +37,15 @@ treated as an inner variable with the namepath `Parent~child`. In other words, t
 will have an inner scope, even though the variable is public. To change a doclet's scope, use the
 [`@instance`][instance-tag], [`@static`][static-tag], and [`@global`][global-tag] tags.
 
-[access-option]: about-commandline.html
-[global-tag]: tags-global.html
-[instance-tag]: tags-instance.html
-[static-tag]: tags-static.html
+[access-option]: /about-commandline
+[global-tag]: /tags-global
+[instance-tag]: /tags-instance
+[static-tag]: /tags-static
 
 
 ## Examples
 
-{% example "Using @access as a synonym for other tags" %}
+::: example "Using @access as a synonym for other tags"
 
 ```js
 /** @constructor */
@@ -83,4 +84,4 @@ function OtherThingy() {
 
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-alias.md b/content/tags-alias.md
similarity index 89%
rename from content/en/tags-alias.md
rename to content/tags-alias.md
index fee597f5..4a9f0fe1 100644
--- a/content/en/tags-alias.md
+++ b/content/tags-alias.md
@@ -1,9 +1,10 @@
 ---
 tag: alias
+tags: blockTags
 description: Treat a member as if it had a different name.
 related:
-    - tags-name.html
-    - tags-lends.html
+    - /tags-name
+    - /tags-lends
 ---
 
 ## Syntax
@@ -34,7 +35,7 @@ The @alias tag tells JSDoc to pretend that Member A is actually named Member B.
 JSDoc processes the following code, it recognizes that `foo` is a function, then renames `foo` to
 `bar` in the documentation:
 
-{% example %}
+::: example
 
 ```js
 /**
@@ -43,7 +44,7 @@ JSDoc processes the following code, it recognizes that `foo` is a function, then
  */
 function foo() {}
 ```
-{% endexample %}
+:::
 
 ## Examples
 
@@ -55,7 +56,7 @@ the constructor for the class "trackr.CookieManager". Within the function, JSDoc
 `this` keyword relative to trackr.CookieManager, so the "value" method has the namepath
 "trackr.CookieManager#value".
 
-{% example "Using @alias with an anonymous constructor function" %}
+::: example "Using @alias with an anonymous constructor function"
 
 ```js
 Klass('trackr.CookieManager',
@@ -72,13 +73,13 @@ Klass('trackr.CookieManager',
 
 );
 ```
-{% endexample %}
+:::
 
 You can also use the @alias tag with members that are created within an immediately invoked function
 expression (IIFE). The @alias tag tells JSDoc that these members are exposed outside of the IIFE's
 scope.
 
-{% example "Using @alias for static members of a namespace" %}
+::: example "Using @alias for static members of a namespace"
 
 ```js
 /** @namespace */
@@ -97,12 +98,12 @@ var Apple = {};
     ns.Core = core;
 })(Apple);
 ```
-{% endexample %}
+:::
 
 For members that are defined within an object literal, you can use the @alias tag as an alternative
 to the [@lends][lends-tag] tag.
 
-{% example "Using @alias for an object literal" %}
+::: example "Using @alias for an object literal"
 
 ```js
 // Documenting objectA with @alias
@@ -145,6 +146,6 @@ var objectB = (function() {
     return x;
 })();
 ```
-{% endexample %}
+:::
 
-[lends-tag]: tags-lends.html
+[lends-tag]: /tags-lends
diff --git a/content/en/tags-async.md b/content/tags-async.md
similarity index 90%
rename from content/en/tags-async.md
rename to content/tags-async.md
index 6036efef..852ea30f 100644
--- a/content/en/tags-async.md
+++ b/content/tags-async.md
@@ -1,5 +1,6 @@
 ---
 tag: async
+tags: blockTags
 description: Indicate that a function is asynchronous.
 ---
 
@@ -27,7 +28,7 @@ tell JSDoc that the function is asynchronous.
 
 The following example shows a virtual comment that uses the `@async` tag:
 
-{% example "Virtual comment with @async tag" %}
+::: example "Virtual comment with @async tag"
 
 ```js
 /**
@@ -36,8 +37,8 @@ The following example shows a virtual comment that uses the `@async` tag:
  * @async
  * @function downloadData
  * @param {string} url - The URL to download from.
- * @return {Promise&lt;string>} The data from the URL.
+ * @return {Promise<string>} The data from the URL.
  */
 ```
 
-{% endexample %}
+:::
diff --git a/content/en/tags-augments.md b/content/tags-augments.md
similarity index 90%
rename from content/en/tags-augments.md
rename to content/tags-augments.md
index 63683d13..232a2716 100644
--- a/content/en/tags-augments.md
+++ b/content/tags-augments.md
@@ -1,13 +1,14 @@
 ---
 tag: augments
+tags: blockTags
 description: Indicate that a symbol inherits from, and adds to, a parent symbol.
 synonyms:
     - extends
 related:
-    - tags-borrows.html
-    - tags-class.html
-    - tags-mixes.html
-    - tags-mixin.html
+    - /tags-borrows
+    - /tags-class
+    - /tags-mixes
+    - /tags-mixin
 ---
 
 ## Syntax
@@ -31,7 +32,7 @@ In the following example, the `Duck` class is defined as a subclass of `Animal`.
 have the same properties as `Animal` instances, as well as a `speak` method that is unique to `Duck`
 instances.
 
-{% example "Documenting a class/subclass relationship" %}
+::: example "Documenting a class/subclass relationship"
 
 ```js
 /**
@@ -61,13 +62,13 @@ d.speak(); // Quack!
 d.alive = false;
 d.speak(); // (nothing)
 ```
-{% endexample %}
+:::
 
 In the following example, the `Duck` class inherits from both the `Flyable` and `Bird` classes, both
 of which define a `takeOff` method. Because the documentation for `Duck` lists `@augments Bird`
 last, JSDoc automatically documents `Duck#takeOff` using the comment from `Bird#takeOff`.
 
-{% example "Multiple inheritance with duplicated method names" %}
+::: example "Multiple inheritance with duplicated method names"
 
 ```js
 /**
@@ -113,4 +114,4 @@ Duck.prototype.takeOff = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-author.md b/content/tags-author.md
similarity index 80%
rename from content/en/tags-author.md
rename to content/tags-author.md
index 91d7c8b1..b603df1e 100644
--- a/content/en/tags-author.md
+++ b/content/tags-author.md
@@ -1,9 +1,10 @@
 ---
 tag: author
+tags: blockTags
 description: Identify the author of an item.
 related:
-    - tags-file.html
-    - tags-version.html
+    - /tags-file
+    - /tags-version
 ---
 
 ## Syntax
@@ -20,7 +21,7 @@ address to a `mailto:` link.
 
 ## Examples
 
-{% example "Documenting the author of an item" %}
+::: example "Documenting the author of an item"
 
 ```js
 /**
@@ -28,4 +29,4 @@ address to a `mailto:` link.
  */
 function MyClass() {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-borrows.md b/content/tags-borrows.md
similarity index 89%
rename from content/en/tags-borrows.md
rename to content/tags-borrows.md
index dd25fe0d..d097c9fb 100644
--- a/content/en/tags-borrows.md
+++ b/content/tags-borrows.md
@@ -1,5 +1,6 @@
 ---
 tag: borrows
+tags: blockTags
 description: This object uses something from another object.
 ---
 
@@ -21,7 +22,7 @@ to duplicate the same documentation in two places.
 In this example there exists documentation for the "trstr" function, but "util.trim" is just a
 reference to that same function by a different name.
 
-{% example "Duplicate the documentation for trstr as util.trim" %}
+::: example "Duplicate the documentation for trstr as util.trim"
 
 ```js
 /**
@@ -39,4 +40,4 @@ var util = {
 function trstr(str) {
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-callback.md b/content/tags-callback.md
similarity index 90%
rename from content/en/tags-callback.md
rename to content/tags-callback.md
index 74c24a9e..3fde124d 100644
--- a/content/en/tags-callback.md
+++ b/content/tags-callback.md
@@ -1,9 +1,10 @@
 ---
 tag: callback
+tags: blockTagss
 description: Document a callback function.
 related:
-    - tags-function.html
-    - tags-typedef.html
+    - /tags-function
+    - /tags-typedef
 ---
 
 ## Syntax
@@ -28,7 +29,7 @@ global callback type that is referenced from multiple classes.
 
 ## Examples
 
-{% example "Documenting a class-specific callback" %}
+::: example "Documenting a class-specific callback"
 
 ```js
 /**
@@ -51,9 +52,9 @@ Requester.prototype.send = function(cb) {
  * @param {string} responseMessage
  */
 ```
-{% endexample %}
+:::
 
-{% example "Documenting a global callback" %}
+::: example "Documenting a global callback"
 
 ```js
 /**
@@ -76,4 +77,4 @@ Requester.prototype.send = function(cb) {
  * @param {string} responseMessage
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-class.md b/content/tags-class.md
similarity index 79%
rename from content/en/tags-class.md
rename to content/tags-class.md
index 7899720e..748610f3 100644
--- a/content/en/tags-class.md
+++ b/content/tags-class.md
@@ -1,10 +1,11 @@
 ---
 tag: class
+tags: blockTags
 description: This function is intended to be called with the "new" keyword.
 synonyms:
     - constructor
 related:
-    - tags-constructs.html
+    - /tags-constructs
 ---
 
 ## Syntax
@@ -20,7 +21,7 @@ keyword to return an instance.
 
 ## Examples
 
-{% example "A function that constructs Person instances." %}
+::: example "A function that constructs Person instances."
 
 ```js
 /**
@@ -32,4 +33,4 @@ function Person() {
 
 var p = new Person();
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-classdesc.md b/content/tags-classdesc.md
similarity index 84%
rename from content/en/tags-classdesc.md
rename to content/tags-classdesc.md
index 2cd74d69..110d11d9 100644
--- a/content/en/tags-classdesc.md
+++ b/content/tags-classdesc.md
@@ -1,9 +1,10 @@
 ---
 tag: classdesc
+tags: blockTags
 description: Use the following text to describe the entire class.
 related:
-    - tags-class.html
-    - tags-description.html
+    - /tags-class
+    - /tags-description
 ---
 
 ## Syntax
@@ -22,7 +23,7 @@ versions. As of version 3, the syntax and functionality of the @class tag now ex
 @constructor tag, and the @classdesc tag more explicitly communicates its purpose: to document a
 class's description.
 
-[class-tag]: tags-class.html
+[class-tag]: /tags-class
 
 
 ## Examples
@@ -30,7 +31,7 @@ class's description.
 As shown below, a class has places for two descriptions, one applies to the function itself, while
 the other applies to the class in general.
 
-{% example "A doclet with both a constructor function description and a class description" %}
+::: example "A doclet with both a constructor function description and a class description"
 
 ```js
 /**
@@ -41,4 +42,4 @@ the other applies to the class in general.
 function MyClass() {
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-constant.md b/content/tags-constant.md
similarity index 88%
rename from content/en/tags-constant.md
rename to content/tags-constant.md
index 2dbed596..b8a0c030 100644
--- a/content/en/tags-constant.md
+++ b/content/tags-constant.md
@@ -1,11 +1,12 @@
 ---
 tag: constant
+tags: blockTags
 description: Document an object as a constant.
 synonyms:
     - const
 related:
-    - tags-default.html
-    - tags-type.html
+    - /tags-default
+    - /tags-type
 ---
 
 ## Syntax
@@ -25,7 +26,7 @@ In this example we are documenting a string constant. Note that although the cod
 support constant declarations, the @const documentation can just as effectively be used on `var`
 declarations.
 
-{% example "A string constant representing the color red" %}
+::: example "A string constant representing the color red"
 
 ```js
 /** @constant
@@ -37,7 +38,7 @@ const RED = 'FF0000';
 /** @constant {number} */
 var ONE = 1;
 ```
-{% endexample %}
+:::
 
 Note that the example provides the type in a @type tag. This is optional. Also the optional
 @default tag is used here too, this will automatically add whatever the assigned value is (for
diff --git a/content/en/tags-constructs.md b/content/tags-constructs.md
similarity index 83%
rename from content/en/tags-constructs.md
rename to content/tags-constructs.md
index 75902bc5..c01abe56 100644
--- a/content/en/tags-constructs.md
+++ b/content/tags-constructs.md
@@ -1,8 +1,9 @@
 ---
 tag: constructs
+tags: blockTags
 description: This function member will be the constructor for the previous class.
 related:
-    - tags-lends.html
+    - /tags-lends
 ---
 
 ## Overview
@@ -19,7 +20,7 @@ class.
 
 ## Examples
 
-{% example "Using the @constructs tag with @lends" %}
+::: example "Using the @constructs tag with @lends"
 
 ```js
 var Person = makeClass(
@@ -36,9 +37,9 @@ var Person = makeClass(
     }
 );
 ```
-{% endexample %}
+:::
 
-{% example "Without @lends you must provide the name of the class" %}
+::: example "Without @lends you must provide the name of the class"
 
 ```js
 makeClass('Menu',
@@ -54,4 +55,4 @@ makeClass('Menu',
     }
 );
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-copyright.md b/content/tags-copyright.md
similarity index 87%
rename from content/en/tags-copyright.md
rename to content/tags-copyright.md
index c9323d7a..dc314ad9 100644
--- a/content/en/tags-copyright.md
+++ b/content/tags-copyright.md
@@ -1,8 +1,9 @@
 ---
 tag: copyright
+tags: blockTags
 description: Document some copyright information.
 related:
-    - tags-file.html
+    - /tags-file
 ---
 
 ## Syntax
@@ -15,7 +16,7 @@ related:
 The @copyright tag is used to document copyright information in a file overview comment. Use this
 tag in combination with the [@file tag][file-tag].
 
-[file-tag]: tags-file.html
+[file-tag]: /tags-file
 
 
 ## Examples
diff --git a/content/en/tags-default.md b/content/tags-default.md
similarity index 90%
rename from content/en/tags-default.md
rename to content/tags-default.md
index e23b343d..5c27098b 100644
--- a/content/en/tags-default.md
+++ b/content/tags-default.md
@@ -1,5 +1,6 @@
 ---
 tag: default
+tags: blockTags
 description: Document the default value.
 synonyms:
     - defaultvalue
@@ -23,7 +24,7 @@ string, a number, a boolean or null.
 In this example a constant is documented. The value of the constant is `0xff0000`. By adding the
 @default tag this value is automatically added to the documentation.
 
-{% example "Document the number value of a constant" %}
+::: example "Document the number value of a constant"
 
 ```js
 /**
@@ -32,4 +33,4 @@ In this example a constant is documented. The value of the constant is `0xff0000
  */
 const RED = 0xff0000;
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-deprecated.md b/content/tags-deprecated.md
similarity index 79%
rename from content/en/tags-deprecated.md
rename to content/tags-deprecated.md
index d5756530..13ef4a76 100644
--- a/content/en/tags-deprecated.md
+++ b/content/tags-deprecated.md
@@ -1,5 +1,6 @@
 ---
 tag: deprecated
+tags: blockTags
 description: Document that this is no longer the preferred way.
 ---
 
@@ -17,7 +18,7 @@ The @deprecated tag marks a symbol in your code as being deprecated.
 You can use the @deprecated tag by itself, or include some text that describes more about the
 deprecation.
 
-{% example "Document that the old function has been deprecated since version 2.0" %}
+::: example "Document that the old function has been deprecated since version 2.0"
 
 ```js
 /**
@@ -26,4 +27,4 @@ deprecation.
 function old() {
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-description.md b/content/tags-description.md
similarity index 82%
rename from content/en/tags-description.md
rename to content/tags-description.md
index 683a1f2c..56bb4da3 100644
--- a/content/en/tags-description.md
+++ b/content/tags-description.md
@@ -1,11 +1,12 @@
 ---
 tag: description
+tags: blockTags
 description: Describe a symbol.
 synonyms:
     - desc
 related:
-    - tags-classdesc.html
-    - tags-summary.html
+    - /tags-classdesc
+    - /tags-summary
 ---
 
 ## Syntax
@@ -19,7 +20,7 @@ The @description tag allows you to provide a general description of the symbol y
 The description may include HTML markup. It may also include Markdown formatting if the
 [Markdown plugin][markdown-plugin] is enabled.
 
-[markdown-plugin]: plugins-markdown.html
+[markdown-plugin]: /plugins-markdown
 
 
 ## Examples
@@ -27,7 +28,7 @@ The description may include HTML markup. It may also include Markdown formatting
 If you describe a symbol at the very beginning of a JSDoc comment, before using any block tags, you
 may omit the @description tag.
 
-{% example "Describing a symbol without the @description tag" %}
+::: example "Describing a symbol without the @description tag"
 
 ```js
 /**
@@ -40,11 +41,11 @@ function add(a, b) {
     return a + b;
 }
 ```
-{% endexample %}
+:::
 
 By using the @description tag, you can place the description anywhere in the JSDoc comment.
 
-{% example "Describing a symbol with the @description tag" %}
+::: example "Describing a symbol with the @description tag"
 
 ```js
 /**
@@ -57,6 +58,6 @@ function add(a, b) {
     return a + b;
 }
 ```
-{% endexample %}
+:::
 
 If there's both a description at the beginning of a JSDoc comment and a description provided with the @description tag, the description specified with the @description will override the description at the beginning of the comment.
diff --git a/content/en/tags-enum.md b/content/tags-enum.md
similarity index 91%
rename from content/en/tags-enum.md
rename to content/tags-enum.md
index c066904e..7c4e3187 100644
--- a/content/en/tags-enum.md
+++ b/content/tags-enum.md
@@ -1,8 +1,9 @@
 ---
 tag: enum
+tags: blockTags
 description: Document a collection of related properties.
 related:
-    - tags-property.html
+    - /tags-property
 ---
 
 ## Syntax
@@ -26,7 +27,7 @@ the enum members can have optional descriptions added if you wish. Also you can
 as is shown with "MAYBE" -- by default enum members will be documented with the same type as the
 enum itself.
 
-{% example "A numeric enum, representing three states" %}
+::: example "A numeric enum, representing three states"
 
 ```js
 /**
@@ -42,4 +43,4 @@ var triState = {
     MAYBE: true
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-event.md b/content/tags-event.md
similarity index 90%
rename from content/en/tags-event.md
rename to content/tags-event.md
index b202f1c6..17af1080 100644
--- a/content/en/tags-event.md
+++ b/content/tags-event.md
@@ -1,9 +1,10 @@
 ---
 tag: event
+tags: blockTags
 description: Document an event.
 related:
-    - tags-fires.html
-    - tags-listens.html
+    - /tags-fires
+    - /tags-listens
 ---
 
 ## Syntax
@@ -34,7 +35,7 @@ name occurs.
 The following examples show how to document an event in the `Hurl` class called `snowball`. The
 event contains an object with a single property.
 
-{% example "Documenting a function call as an event" %}
+::: example "Documenting a function call as an event"
 
 ```js
 /**
@@ -55,9 +56,9 @@ Hurl.prototype.snowball = function() {
     });
 };
 ```
-{% endexample %}
+:::
 
-{% example "Using a named doclet to document an event" %}
+::: example "Using a named doclet to document an event"
 
 ```js
 /**
@@ -77,4 +78,4 @@ Hurl.prototype.snowball = function() {
  * @property {boolean} isPacked - Indicates whether the snowball is tightly packed.
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-example.md b/content/tags-example.md
similarity index 88%
rename from content/en/tags-example.md
rename to content/tags-example.md
index fd7e76a5..3fab33eb 100644
--- a/content/en/tags-example.md
+++ b/content/tags-example.md
@@ -1,5 +1,6 @@
 ---
 tag: example
+tags: blockTags
 description: Provide an example of how to use a documented item.
 ---
 
@@ -13,7 +14,7 @@ as highlighted code.
 
 Note that a doclet may have multiple examples.
 
-{% example "Documenting examples" %}
+::: example "Documenting examples"
 
 ```js
 /**
@@ -30,11 +31,11 @@ globalNS.method1 = function (a, b) {
     return b / a;
 };
 ```
-{% endexample %}
+:::
 
 Examples can also be captioned using `<caption></caption>` after the @example tag.
 
-{% example "Documenting examples with a caption" %}
+::: example "Documenting examples with a caption"
 
 ```js
 /**
@@ -48,4 +49,4 @@ globalNS.method1 = function (a, b) {
     return b / a;
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-exports.md b/content/tags-exports.md
similarity index 84%
rename from content/en/tags-exports.md
rename to content/tags-exports.md
index c13b4679..1c384b6e 100644
--- a/content/en/tags-exports.md
+++ b/content/tags-exports.md
@@ -1,10 +1,11 @@
 ---
 tag: exports
+tags: blockTags
 description: Identify the member that is exported by a JavaScript module.
 related:
-    - tags-module.html
-    - howto-commonjs-modules.html
-    - howto-amd-modules.html
+    - /tags-module
+    - /howto-commonjs-modules
+    - /howto-amd-modules
 ---
 
 ## Syntax
@@ -27,7 +28,7 @@ In modules where you are using the special "exports" object, the @exports tag is
 automatically recognizes that this object's members are being exported. Similarly, JSDoc
 automatically recognizes the special "module.exports" property in Node.js modules.
 
-{% example "CommonJS module" %}
+::: example "CommonJS module"
 
 ```js
 /**
@@ -40,9 +41,9 @@ exports.sayHello = function() {
     return 'Hello world';
 };
 ```
-{% endexample %}
+:::
 
-{% example "Node.js module" %}
+::: example "Node.js module"
 
 ```js
 /**
@@ -55,9 +56,9 @@ module.exports = function() {
     return "HELLO WORLD";
 };
 ```
-{% endexample %}
+:::
 
-{% example "AMD module that exports an object literal" %}
+::: example "AMD module that exports an object literal"
 
 ```js
 define(function() {
@@ -76,9 +77,9 @@ define(function() {
     return exports;
 });
 ```
-{% endexample %}
+:::
 
-{% example "AMD module that exports a constructor" %}
+::: example "AMD module that exports a constructor"
 
 ```js
 define(function() {
@@ -103,12 +104,12 @@ define(function() {
     return exports;
 });
 ```
-{% endexample %}
+:::
 
 If your module exports an object named anything other than "exports" or "module.exports", use the
 @exports tag to indicate what is being exported.
 
-{% example "AMD module that exports an object" %}
+::: example "AMD module that exports an object"
 
 ```js
 define(function () {
@@ -127,4 +128,4 @@ define(function () {
     return ns;
 });
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-external.md b/content/tags-external.md
similarity index 88%
rename from content/en/tags-external.md
rename to content/tags-external.md
index 479e5352..e0a061d1 100644
--- a/content/en/tags-external.md
+++ b/content/tags-external.md
@@ -1,5 +1,6 @@
 ---
 tag: external
+tags: blockTags
 description: Identifies an external class, namespace, or module.
 synonyms:
     - host
@@ -25,8 +26,8 @@ The namepath for an external symbol always uses the prefix `external:` (for exam
 outside of your project. See "[Documenting a nested external symbol][nested-external]" for an
 example.
 
-[augments-tag]: tags-augments.html
-[memberof-tag]: tags-memberof.html
+[augments-tag]: /tags-augments
+[memberof-tag]: /tags-memberof
 [nested-external]: #nested-external-symbol
 
 ## Examples
@@ -34,7 +35,7 @@ example.
 The following example shows how to document the built-in `String` object as an external, along with
 the new instance method `external:String#rot13`:
 
-{% example "Documenting methods added to built-in classes" %}
+::: example "Documenting methods added to built-in classes"
 
 ```js
 /**
@@ -51,12 +52,12 @@ the new instance method `external:String#rot13`:
  * console.log( greeting.rot13() ); // uryyb jbeyq
  */
 ```
-{% endexample %}
+:::
 
 The following example documents a new `starfairy` function added to the external namespace
 `"jQuery.fn"`:
 
-{% example "Documenting external namespaces" %}
+::: example "Documenting external namespaces"
 
 ```js
 /**
@@ -70,12 +71,12 @@ The following example documents a new `starfairy` function added to the external
  * @function external:"jQuery.fn".starfairy
  */
 ```
-{% endexample %}
+:::
 
 In the following example, the class `EncryptedRequest` is documented as a subclass of the built-in
 class `XMLHttpRequest`:
 
-{% example "Extending an external." %}
+::: example "Extending an external."
 
 ```js
 /**
@@ -90,9 +91,9 @@ class `XMLHttpRequest`:
  * @extends external:XMLHttpRequest
  */
 ```
-{% endexample %}
+:::
 
-[augments-tag]: tags-augments.html
+[augments-tag]: /tags-augments
 
 <a name="nested-external-symbol"></a>
 You should only add the `@external` tag to the highest-level symbol that is defined outside of your
@@ -100,7 +101,7 @@ project. In the following example, the documentation refers to the external clas
 `security.TLS`. As a result, the `@external` tag is used to document the external namespace
 `external:security`, but _not_ the external class `external:security.TLS`.
 
-{% example "Documenting a nested external symbol" %}
+::: example "Documenting a nested external symbol"
 
 ```js
 /**
@@ -115,4 +116,4 @@ project. In the following example, the documentation refers to the external clas
  * @memberof external:security
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-file.md b/content/tags-file.md
similarity index 79%
rename from content/en/tags-file.md
rename to content/tags-file.md
index bdfad692..a0d8469a 100644
--- a/content/en/tags-file.md
+++ b/content/tags-file.md
@@ -1,12 +1,13 @@
 ---
 tag: file
+tags: blockTags
 description: Describe a file.
 synonyms:
     - fileoverview
     - overview
 related:
-    - tags-author.html
-    - tags-version.html
+    - /tags-author
+    - /tags-version
 ---
 
 ## Overview
@@ -17,7 +18,7 @@ the file.
 
 ## Example
 
-{% example "File description" %}
+::: example "File description"
 
 ```js
 /**
@@ -25,4 +26,4 @@ the file.
  * @author Rowina Sanela <rsanela@example.com>
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-fires.md b/content/tags-fires.md
similarity index 76%
rename from content/en/tags-fires.md
rename to content/tags-fires.md
index af190395..4a1d05a4 100644
--- a/content/en/tags-fires.md
+++ b/content/tags-fires.md
@@ -1,11 +1,12 @@
 ---
 tag: fires
+tags: blockTags
 description: Describe the events this method may fire.
 synonyms:
     - emits
 related:
-    - tags-event.html
-    - tags-listens.html
+    - /tags-event
+    - /tags-listens
 ---
 
 ## Syntax
@@ -18,12 +19,12 @@ related:
 The @fires tag indicates that a method can fire a specified type of event when it is called. Use the
 [@event tag][event-tag] to document the event's content.
 
-[event-tag]: tags-event.html
+[event-tag]: /tags-event
 
 
 ## Examples
 
-{% example "Method that fires a 'drain' event" %}
+::: example "Method that fires a 'drain' event"
 
 ```js
 /**
@@ -35,4 +36,4 @@ Milkshake.prototype.drink = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-function.md b/content/tags-function.md
similarity index 79%
rename from content/en/tags-function.md
rename to content/tags-function.md
index 0231186e..d875a83a 100644
--- a/content/en/tags-function.md
+++ b/content/tags-function.md
@@ -1,5 +1,6 @@
 ---
 tag: function
+tags: blockTags
 description: Describe a function or method.
 synonyms:
     - func
@@ -16,24 +17,24 @@ synonyms:
 This marks an object as being a function, even though it may not appear to be one to the parser. It
 sets the doclet's [@kind][kind-tag] to 'function'.
 
-[kind-tag]: tags-kind.html
+[kind-tag]: /tags-kind
 
 
 ## Examples
 
-{% example "Using @function to mark a function." %}
+::: example "Using @function to mark a function."
 
 ```js
 /** @function */
 var paginate = paginateFactory(pages);
 ```
-{% endexample %}
+:::
 
 Without the @function tag, the `paginate` object would be documented as a generic object (a
 [@member][member-tag]), because it isn't possible to tell from examining the line of code what type
 of value `paginate` will hold when it is run.
 
-{% example "Using @function with a name." %}
+::: example "Using @function with a name."
 
 ```js
 /** @function myFunction */
@@ -42,6 +43,6 @@ of value `paginate` will hold when it is run.
 /** @function
  * @name myFunction */
 ```
-{% endexample %}
+:::
 
-[member-tag]: tags-member.html
+[member-tag]: /tags-member
diff --git a/content/en/tags-generator.md b/content/tags-generator.md
similarity index 93%
rename from content/en/tags-generator.md
rename to content/tags-generator.md
index 2c84d811..5ad2901f 100644
--- a/content/en/tags-generator.md
+++ b/content/tags-generator.md
@@ -1,5 +1,6 @@
 ---
 tag: generator
+tags: blockTags
 description: Indicate that a function is a generator function.
 ---
 
@@ -25,7 +26,7 @@ the function is a generator function.
 
 The following example shows a virtual comment that uses the `@generator` tag:
 
-{% example "Virtual comment with @generator tag" %}
+::: example "Virtual comment with @generator tag"
 
 ```js
 /**
@@ -37,4 +38,4 @@ The following example shows a virtual comment that uses the `@generator` tag:
  */
 ```
 
-{% endexample %}
+:::
diff --git a/content/en/tags-global.md b/content/tags-global.md
similarity index 76%
rename from content/en/tags-global.md
rename to content/tags-global.md
index e4c4bdec..8e9323cd 100644
--- a/content/en/tags-global.md
+++ b/content/tags-global.md
@@ -1,11 +1,12 @@
 ---
 tag: global
+tags: blockTags
 description: Document a global object.
 related:
-    - tags-inner.html
-    - tags-instance.html
-    - tags-memberof.html
-    - tags-static.html
+    - /tags-inner
+    - /tags-instance
+    - /tags-memberof
+    - /tags-static
 ---
 
 ## Overview
@@ -19,7 +20,7 @@ symbols that are defined locally, then assigned to a global symbol.
 
 Use the @global tag to specify that a symbol should be documented as global.
 
-{% example "Document an inner variable as a global" %}
+::: example "Document an inner variable as a global"
 
 ```js
 (function() {
@@ -29,4 +30,4 @@ Use the @global tag to specify that a symbol should be documented as global.
     this.foo = foo;
 }).apply(window);
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-hideconstructor.md b/content/tags-hideconstructor.md
similarity index 91%
rename from content/en/tags-hideconstructor.md
rename to content/tags-hideconstructor.md
index f5e1c697..cb505dce 100644
--- a/content/en/tags-hideconstructor.md
+++ b/content/tags-hideconstructor.md
@@ -1,8 +1,9 @@
 ---
 tag: hideconstructor
+tags: blockTags
 description: Indicate that the constructor should not be displayed.
 related:
-	- tags-class.html
+	- /tags-class
 ---
 
 ## Syntax
@@ -21,12 +22,12 @@ tag][tags-class].
 For ES2015 classes, use this tag in the JSDoc comment for your constructor. If your class does not
 have an explicit constructor, use this tag in the JSDoc comment for the class.
 
-[tags-class]: tags-class.html
+[tags-class]: /tags-class
 
 
 ## Examples
 
-{% example "@hideconstructor tag with pre-ES2015 class" %}
+::: example "@hideconstructor tag with pre-ES2015 class"
 
 ```js
 /**
@@ -68,9 +69,9 @@ var Toaster = (function() {
     };
 })();
 ```
-{% endexample %}
+:::
 
-{% example "@hideconstructor tag with ES2015 class" %}
+::: example "@hideconstructor tag with ES2015 class"
 
 ```js
 /**
@@ -110,4 +111,4 @@ class WaffleIron {
     }
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-ignore.md b/content/tags-ignore.md
similarity index 92%
rename from content/en/tags-ignore.md
rename to content/tags-ignore.md
index c4f741e2..d4ddddaa 100644
--- a/content/en/tags-ignore.md
+++ b/content/tags-ignore.md
@@ -1,5 +1,6 @@
 ---
 tag: ignore
+tags: blockTags
 description: Omit a symbol from the documentation.
 ---
 
@@ -22,7 +23,7 @@ namespaces, but with incomplete names.
 
 In the following example, `Jacket` and `Jacket#color` will not appear in the documentation.
 
-{% example "Class with `@ignore` tag" %}
+::: example "Class with `@ignore` tag"
 
 ```js
 /**
@@ -34,13 +35,13 @@ function Jacket() {
     this.color = null;
 }
 ```
-{% endexample %}
+:::
 
 In the following example, the `Clothes` namespace contains a `Jacket` class. The `@ignore` tag must
 be added to both `Clothes` and `Clothes.Jacket`. `Clothes`, `Clothes.Jacket`, and
 `Clothes.Jacket#color` will not appear in the documentation.
 
-{% example "Namespace with child class" %}
+::: example "Namespace with child class"
 
 ```js
 /**
@@ -58,4 +59,4 @@ var Clothes = {
     }
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-implements.md b/content/tags-implements.md
similarity index 95%
rename from content/en/tags-implements.md
rename to content/tags-implements.md
index bef58712..47cafe48 100644
--- a/content/en/tags-implements.md
+++ b/content/tags-implements.md
@@ -1,9 +1,10 @@
 ---
 tag: implements
+tags: blockTags
 description: This symbol implements an interface.
 version: '>=3.3.0'
 related:
-    - tags-interface.html
+    - /tags-interface
 ---
 
 ## Syntax
@@ -28,7 +29,7 @@ interface's documentation for that symbol.
 In the following example, the `TransparentColor` class implements the `Color` interface and adds
 a `TransparentColor#rgba` method.
 
-{% example "Using the @implements tag" %}
+::: example "Using the @implements tag"
 
 ```js
 /**
@@ -73,4 +74,4 @@ TransparentColor.prototype.rgba = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-inheritdoc.md b/content/tags-inheritdoc.md
similarity index 88%
rename from content/en/tags-inheritdoc.md
rename to content/tags-inheritdoc.md
index 4d3300dd..e76d0627 100644
--- a/content/en/tags-inheritdoc.md
+++ b/content/tags-inheritdoc.md
@@ -1,9 +1,10 @@
 ---
 tag: inheritdoc
+tags: blockTags
 description: Indicate that a symbol should inherit its parent's documentation.
 version: '>=3.3.0'
 related:
-    - tags-override.html
+    - /tags-override
 ---
 
 ## Overview
@@ -17,7 +18,7 @@ not add a JSDoc comment to a symbol, the symbol will inherit documentation from
 The presence of the `@inheritdoc` tag implies the presence of the [`@override` tag][override-tag].
 
 [closure]: https://developers.google.com/closure/compiler/
-[override-tag]: tags-override.html
+[override-tag]: /tags-override
 
 
 ## Examples
@@ -25,7 +26,7 @@ The presence of the `@inheritdoc` tag implies the presence of the [`@override` t
 The following example shows how a class can indicate that it inherits documentation from its
 parent class:
 
-{% example "Class that inherits from a parent class" %}
+::: example "Class that inherits from a parent class"
 
 ```js
 /**
@@ -54,11 +55,11 @@ Socket.prototype.open = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 You can get the same result by omitting the JSDoc comment from `Socket#open`:
 
-{% example "Inheriting documentation without the `@inheritdoc` tag" %}
+::: example "Inheriting documentation without the `@inheritdoc` tag"
 
 ```js
 /**
@@ -86,4 +87,4 @@ Socket.prototype.open = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-inline-link.md b/content/tags-inline-link.md
similarity index 89%
rename from content/en/tags-inline-link.md
rename to content/tags-inline-link.md
index 3a0ab018..63efcb39 100644
--- a/content/en/tags-inline-link.md
+++ b/content/tags-inline-link.md
@@ -1,13 +1,14 @@
 ---
-inlineTag: link
+tag: link
+tags: inlineTags
 description: Link to another item in the documentation.
 version: '>=3.0.0'
 synonyms:
     - linkcode
     - linkplain
 related:
-    - about-configuring-jsdoc.html
-    - about-namepaths.html
+    - /about-configuring-jsdoc
+    - /about-namepaths
 ---
 
 ## Syntax
@@ -27,7 +28,7 @@ provide any link text, JSDoc uses the namepath or URL as the link text.
 If you need to link to a tutorial, use the [`{@tutorial}` inline tag][tutorial-inline-tag] instead
 of the `{@link}` tag.
 
-[tutorial-inline-tag]: tags-inline-tutorial.html
+[tutorial-inline-tag]: /tags-inline-tutorial
 
 
 ## Link formatting
@@ -51,14 +52,14 @@ created with the `{@linkplain}` tag.
 may not recognize the `{@linkcode}` and `{@linkplain}` tags. In addition, other templates may ignore
 the configuration options for link rendering.
 
-[configuring]: about-configuring-jsdoc.html
+[configuring]: /about-configuring-jsdoc
 
 
 ## Examples
 
 The following example shows all of the ways to provide link text for the `{@link}` tag:
 
-{% example "Providing link text" %}
+::: example "Providing link text"
 
 ```js
 /**
@@ -68,27 +69,27 @@ The following example shows all of the ways to provide link text for the `{@link
  */
 function myFunction() {}
 ```
-{% endexample %}
+:::
 
 By default, the example above produces output similar to the following:
 
-{% example "Output for {@link} tags" %}
+::: example "Output for {@link} tags"
 
 ```html
 See &lt;a href="MyClass.html">MyClass&lt;/a> and &lt;a href="MyClass.html#foo">MyClass's foo
 property&lt;/a>. Also, check out &lt;a href="http://www.google.com">Google&lt;/a> and
 &lt;a href="https://github.com">GitHub&lt;/a>.
 ```
-{% endexample %}
+:::
 
 If the configuration property `templates.cleverLinks` were set to `true`, the example above would
 produce the following output:
 
-{% example "Output with clever links enabled" %}
+::: example "Output with clever links enabled"
 
 ```html
 See &lt;a href="MyClass.html">&lt;code>MyClass&lt;/code>&lt;/a> and &lt;a href="MyClass.html#foo">
 &lt;code>MyClass's foo property&lt;/code>&lt;/a>. Also, check out
 &lt;a href="http://www.google.com">Google&lt;/a> and &lt;a href="https://github.com">GitHub&lt;/a>.
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-inline-tutorial.md b/content/tags-inline-tutorial.md
similarity index 88%
rename from content/en/tags-inline-tutorial.md
rename to content/tags-inline-tutorial.md
index fc308a89..2121afd1 100644
--- a/content/en/tags-inline-tutorial.md
+++ b/content/tags-inline-tutorial.md
@@ -1,9 +1,10 @@
 ---
-inlineTag: tutorial
+tag: tutorial
+tags: inlineTags
 description: Link to a tutorial.
 version: '>=3.0.0'
 related:
-    - tags-tutorial.html
+    - /tags-tutorial
 ---
 
 ## Syntax
@@ -23,14 +24,14 @@ If you don't provide any link text, JSDoc uses the tutorial's title as the link
 If you need to link to a namepath or a URL, use the [`{@link}` inline tag][link-inline-tag] instead
 of the `{@tutorial}` tag.
 
-[link-inline-tag]: tags-inline-link.html
+[link-inline-tag]: /tags-inline-link
 
 
 ## Examples
 
 The following example shows all of the ways to provide link text for the `{@tutorial}` tag:
 
-{% example "Providing link text" %}
+::: example "Providing link text"
 
 ```js
 /**
@@ -40,12 +41,12 @@ The following example shows all of the ways to provide link text for the `{@tuto
  */
 function myFunction() {}
 ```
-{% endexample %}
+:::
 
 If all of these tutorials are defined, and the title of the `gettingstarted` tutorial is "Getting
 Started," the example above produces output similar to the following:
 
-{% example "Output for {@link} tags" %}
+::: example "Output for {@link} tags"
 
 ```html
 See &lt;a href="tutorial-gettingstarted.html">Getting Started&lt;/a> and
@@ -53,4 +54,4 @@ See &lt;a href="tutorial-gettingstarted.html">Getting Started&lt;/a> and
 For more information, see &lt;a href="tutorial-create.html">Creating a Widget&lt;/a> and
 &lt;a href="tutorial-destroy.html">Destroying a Widget&lt;/a>.
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-inner.md b/content/tags-inner.md
similarity index 83%
rename from content/en/tags-inner.md
rename to content/tags-inner.md
index ee982161..4ccbeb7f 100644
--- a/content/en/tags-inner.md
+++ b/content/tags-inner.md
@@ -1,10 +1,11 @@
 ---
 tag: inner
+tags: blockTags
 description: Document an inner object.
 related:
-    - tags-global.html
-    - tags-instance.html
-    - tags-static.html
+    - /tags-global
+    - /tags-instance
+    - /tags-static
 ---
 
 ## Overview
@@ -18,7 +19,7 @@ it will remain global).
 
 ## Examples
 
-{% example "Using @inner to make a virtual doclet an inner member" %}
+::: example "Using @inner to make a virtual doclet an inner member"
 
 ```js
 /** @namespace MyNamespace */
@@ -29,12 +30,12 @@ it will remain global).
  * @inner
  */
 ```
-{% endexample %}
+:::
 
 Note that in the above we could have used "@function MyNamespace~myFunction" instead of the
 @memberof and @inner tags.
 
-{% example "Using @inner" %}
+::: example "Using @inner"
 
 ```js
 /** @namespace */
@@ -46,7 +47,7 @@ var MyNamespace = {
     foo: 1
 };
 ```
-{% endexample %}
+:::
 
 In the above example, we use @inner to force a member of a namespace to be documented as an inner
 member (by default, it would be a static member). This means that `foo` now has the longname
diff --git a/content/en/tags-instance.md b/content/tags-instance.md
similarity index 81%
rename from content/en/tags-instance.md
rename to content/tags-instance.md
index 24a4e186..574dad93 100644
--- a/content/en/tags-instance.md
+++ b/content/tags-instance.md
@@ -1,10 +1,11 @@
 ---
 tag: instance
+tags: blockTags
 description: Document an instance member.
 related:
-    - tags-global.html
-    - tags-inner.html
-    - tags-static.html
+    - /tags-global
+    - /tags-inner
+    - /tags-static
 ---
 
 ## Overview
@@ -20,7 +21,7 @@ case it will remain global).
 
 The following example is a longhand way of writing "@function MyNamespace#myFunction":
 
-{% example "Using @instance to make a virtual doclet an instance member" %}
+::: example "Using @instance to make a virtual doclet an instance member"
 
 ```js
 /** @namespace MyNamespace */
@@ -31,12 +32,12 @@ The following example is a longhand way of writing "@function MyNamespace#myFunc
  * @instance
  */
 ```
-{% endexample %}
+:::
 
 More usefully, you can use the @instance tag to override the scope that JSDoc infers. For example,
 you can indicate that a static member is used as an instance member:
 
-{% example "Using @instance to identify an instance member" %}
+::: example "Using @instance to identify an instance member"
 
 ```js
 /** @namespace */
@@ -54,4 +55,4 @@ function fooFactory(fooValue) {
 	return Object.create(BaseObject, props);
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-interface.md b/content/tags-interface.md
similarity index 93%
rename from content/en/tags-interface.md
rename to content/tags-interface.md
index fa3806dc..1eba8116 100644
--- a/content/en/tags-interface.md
+++ b/content/tags-interface.md
@@ -1,9 +1,10 @@
 ---
 tag: interface
+tags: blockTags
 description: This symbol is an interface that others can implement.
 version: '>=3.3.0'
 related:
-    - tags-implements.html
+    - /tags-implements
 ---
 
 ## Syntax
@@ -42,7 +43,7 @@ define an interface][virtual-comments]" for an example.
 In the following example, the `Color` function represents an interface that other classes can
 implement:
 
-{% example "Using the @interface tag" %}
+::: example "Using the @interface tag"
 
 ```js
 /**
@@ -63,12 +64,12 @@ Color.prototype.rgb = function() {
     throw new Error('not implemented');
 };
 ```
-{% endexample %}
+:::
 
 <a name="virtual-comments"></a>
 The following example uses virtual comments, rather than code, to define the `Color` interface:
 
-{% example "Virtual comments that define an interface" %}
+::: example "Virtual comments that define an interface"
 
 ```js
 /**
@@ -87,4 +88,4 @@ The following example uses virtual comments, rather than code, to define the `Co
  * in that order.
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-kind.md b/content/tags-kind.md
similarity index 90%
rename from content/en/tags-kind.md
rename to content/tags-kind.md
index 52a917d7..7639612a 100644
--- a/content/en/tags-kind.md
+++ b/content/tags-kind.md
@@ -1,8 +1,9 @@
 ---
 tag: kind
+tags: blockTags
 description: What kind of symbol is this?
 related:
-    - tags-type.html
+    - /tags-type
 ---
 
 ## Syntax
@@ -36,7 +37,7 @@ doclet. For example, using the @class tag automatically implies "@kind class", a
 
 ## Examples
 
-{% example "Using @kind" %}
+::: example "Using @kind"
 
 ```js
 // The following examples produce the same result:
@@ -53,12 +54,12 @@ const asdf = 1;
  */
 const asdf = 1;
 ```
-{% endexample %}
+:::
 
 In the case of tags with conflicting kinds (for example, using both @module, which sets the kind to
 "module", and "@kind constant" which sets the kind to "constant"), the last tag determines the kind.
 
-{% example "Conflicting @kind statements" %}
+::: example "Conflicting @kind statements"
 
 ```js
 /**
@@ -73,4 +74,4 @@ In the case of tags with conflicting kinds (for example, using both @module, whi
  * @module myModule
  */
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-lends.md b/content/tags-lends.md
similarity index 92%
rename from content/en/tags-lends.md
rename to content/tags-lends.md
index a3a97ef4..200b4ed4 100644
--- a/content/en/tags-lends.md
+++ b/content/tags-lends.md
@@ -1,9 +1,10 @@
 ---
 tag: lends
+tags: blockTags
 description: Document properties on an object literal as if they belonged to a symbol with a given name.
 related:
-    - tags-borrows.html
-    - tags-constructs.html
+    - /tags-borrows
+    - /tags-constructs
 ---
 
 ## Syntax
@@ -24,7 +25,7 @@ In this example, we want to use a helper function to make a class named `Person`
 instance methods named `initialize` and `say`. This is similar to how some popular frameworks
 handle class creation.
 
-{% example "Example class" %}
+::: example "Example class"
 
 ```js
 // We want to document this as being a class
@@ -40,7 +41,7 @@ var Person = makeClass(
     }
 );
 ```
-{% endexample %}
+:::
 
 Without any comments, JSDoc won't recognize that this code creates a `Person` class with two
 methods. To document the methods, we must use a `@lends` tag in a doc comment immediately before the
@@ -49,7 +50,7 @@ being "loaned" to a variable named `Person`. We must also add comments to each o
 
 The following example gets us closer to what we want:
 
-{% example "Documented as static methods" %}
+::: example "Documented as static methods"
 
 ```js
 /** @class */
@@ -74,14 +75,14 @@ var Person = makeClass(
     }
 );
 ```
-{% endexample %}
+:::
 
 Now the functions named `initialize` and `say` will be documented, but they appear as static methods
 of the `Person` class. That is possibly what you meant, but in this case we want `initialize` and
 `say` to belong to the instances of the `Person` class. So we change things slightly by lending the
 methods to the class's prototype:
 
-{% example "Documented as instance methods" %}
+::: example "Documented as instance methods"
 
 ```js
 /** @class */
@@ -106,14 +107,14 @@ var Person = makeClass(
     }
 );
 ```
-{% endexample %}
+:::
 
 One final step: Our class framework uses the loaned `initialize` function to construct `Person`
 instances, but a `Person` instance does not have its own `initialize` method. The solution is to add
 the `@constructs` tag to the loaned function. Remember to remove the `@class` tag as well, or else
 two classes will be documented.
 
-{% example "Documented with a constructor" %}
+::: example "Documented with a constructor"
 
 ```js
 var Person = makeClass(
@@ -138,4 +139,4 @@ var Person = makeClass(
     }
 );
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-license.md b/content/tags-license.md
similarity index 92%
rename from content/en/tags-license.md
rename to content/tags-license.md
index 2631c71d..351e3d16 100644
--- a/content/en/tags-license.md
+++ b/content/tags-license.md
@@ -1,5 +1,6 @@
 ---
 tag: license
+tags: blockTags
 description: Identify the license that applies to this code.
 ---
 
@@ -26,7 +27,7 @@ the license, so that the license text will be included in generated JavaScript f
 
 ## Examples
 
-{% example "A module that is distributed under the Apache License 2.0" %}
+::: example "A module that is distributed under the Apache License 2.0"
 
 ```js
 /**
@@ -35,9 +36,9 @@ the license, so that the license text will be included in generated JavaScript f
  * @license Apache-2.0
  */
 ```
-{% endexample %}
+:::
 
-{% example "A standalone JSDoc comment with the complete MIT license" %}
+::: example "A standalone JSDoc comment with the complete MIT license"
 
 ```js
 /**
@@ -64,4 +65,4 @@ the license, so that the license text will be included in generated JavaScript f
  */
 ```
 
-{% endexample %}
+:::
diff --git a/content/en/tags-listens.md b/content/tags-listens.md
similarity index 88%
rename from content/en/tags-listens.md
rename to content/tags-listens.md
index 1fa36614..7e2fdf83 100644
--- a/content/en/tags-listens.md
+++ b/content/tags-listens.md
@@ -1,9 +1,10 @@
 ---
 tag: listens
+tags: blockTags
 description: List the events that a symbol listens for.
 related:
-    - tags-event.html
-    - tags-fires.html
+    - /tags-event
+    - /tags-fires
 ---
 
 ## Syntax
@@ -14,9 +15,9 @@ related:
 ## Overview
 
 The `@listens` tag indicates that a symbol listens for the specified event. Use the
-[`@event tag`][event-tag] to document the event's content.
+[`@event` tag][event-tag] to document the event's content.
 
-[event-tag]: tags-event.html
+[event-tag]: /tags-event
 
 
 ## Example
@@ -24,7 +25,7 @@ The `@listens` tag indicates that a symbol listens for the specified event. Use
 The following example shows how to document an event named `module:hurler~event:snowball`, as well
 as a method named `module:playground/monitor.reportThrowage` that listens for the event.
 
-{% example "Documenting an event and its listener" %}
+::: example "Documenting an event and its listener"
 
 ```js
 define('hurler', [], function () {
@@ -77,4 +78,4 @@ define('playground/monitor', [], function () {
     return exports;
 });
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-member.md b/content/tags-member.md
similarity index 84%
rename from content/en/tags-member.md
rename to content/tags-member.md
index 48fabc7c..617157b1 100644
--- a/content/en/tags-member.md
+++ b/content/tags-member.md
@@ -1,5 +1,6 @@
 ---
 tag: member
+tags: blockTags
 description: Document a member.
 synonyms:
     - var
@@ -17,7 +18,7 @@ The @member tag identifies any member that does not have a more specialized kind
 
 ## Examples
 
-{% example "Using @member with Data#point" %}
+::: example "Using @member with Data#point"
 
 ```js
 /** @class */
@@ -26,11 +27,11 @@ function Data() {
     this.point = {};
 }
 ```
-{% endexample %}
+:::
 
 Here is an example of using @var, a synonym of @member, to document a (virtual) variable 'foo'.
 
-{% example "Using @var to document a virtual member" %}
+::: example "Using @var to document a virtual member"
 
 ```js
 /**
@@ -38,7 +39,7 @@ Here is an example of using @var, a synonym of @member, to document a (virtual)
  * @var {number} foo
  */
 ```
-{% endexample %}
+:::
 
 The above example is equivalent to the following:
 
diff --git a/content/en/tags-memberof.md b/content/tags-memberof.md
similarity index 91%
rename from content/en/tags-memberof.md
rename to content/tags-memberof.md
index 3a884de2..214cb9fe 100644
--- a/content/en/tags-memberof.md
+++ b/content/tags-memberof.md
@@ -1,8 +1,9 @@
 ---
 tag: memberof
+tags: blockTags
 description: This symbol belongs to a parent symbol.
 related:
-    - tags-name.html
+    - /tags-name
 ---
 
 ## Syntax
@@ -22,8 +23,8 @@ or [@instance][instance-tag] tag.
 The "forced" @memberof tag, @memberof!, forces the object to be documented as belonging to a specific
 parent even if it appears to have a different parent.
 
-[inner-tag]: tags-inner.html
-[instance-tag]: tags-instance.html
+[inner-tag]: /tags-inner
+[instance-tag]: /tags-instance
 
 
 ## Examples
@@ -32,7 +33,7 @@ In the following example, the `hammer` function would normally be documented as
 That's because, in fact, it is a global function, but it is also a member of the `Tools` namespace,
 and that's how you wish to document it. The solution is to add a @memberof tag:
 
-{% example "Using @memberof" %}
+::: example "Using @memberof"
 
 ```js
 /** @namespace */
@@ -44,12 +45,12 @@ var hammer = function() {
 
 Tools.hammer = hammer;
 ```
-{% endexample %}
+:::
 
 For instance members of a class, use the syntax "@memberof ClassName.prototype" or "@memberof
 ClassName#". Alternatively, you can combine "@memberof ClassName" with the "@instance" tag.
 
-{% example "Using @memberof with a class prototype" %}
+::: example "Using @memberof with a class prototype"
 
 ```js
 /** @class Observable */
@@ -83,7 +84,7 @@ create(
     }
 );
 ```
-{% endexample %}
+:::
 
 The following example uses the forced @memberof tag, "@memberof!", to document a property of an
 object (Data#point) that is an instance member of a class (Data).
@@ -93,7 +94,7 @@ longname. We can force the property to be linkable by using "@alias" and "@membe
 that Data#point.y should be documented as a member "point.y" of "Data#", rather than a member "y" of
 "point" of "Data#".
 
-{% example "Using @memberof! for object properties" %}
+::: example "Using @memberof! for object properties"
 
 ```js
 /** @class */
@@ -116,4 +117,4 @@ function Data() {
     };
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-mixes.md b/content/tags-mixes.md
similarity index 86%
rename from content/en/tags-mixes.md
rename to content/tags-mixes.md
index a2023abc..6a005e03 100644
--- a/content/en/tags-mixes.md
+++ b/content/tags-mixes.md
@@ -1,10 +1,11 @@
 ---
 tag: mixes
+tags: blockTags
 description: This object mixes in all the members from another object.
 related:
-    - tags-borrows.html
-    - tags-class.html
-    - tags-mixin.html
+    - /tags-borrows
+    - /tags-class
+    - /tags-mixin
 ---
 
 ## Syntax
@@ -17,14 +18,14 @@ related:
 The @mixes tag indicates that the current object mixes in all the members from `OtherObjectPath`,
 which is a [@mixin][mixin-tag].
 
-[mixin-tag]: tags-mixin.html
+[mixin-tag]: /tags-mixin
 
 
 ## Examples
 
 To start, we document a mixin with the [@mixin][mixin-tag] tag:
 
-{% example "Example of a @mixin" %}
+::: example "Example of a @mixin"
 
 ```js
 /**
@@ -53,13 +54,13 @@ var Eventful = {
     }
 };
 ```
-{% endexample %}
+:::
 
 Now we add a FormButton class and call a "mix" function that mixes all of the Eventful functions
 into FormButton, so that FormButton can also fire events and have listeners. We use the @mixes tag
 to indicate that FormButton mixes the Eventful functions.
 
-{% example "Using the @mixes tag" %}
+::: example "Using the @mixes tag"
 
 ```js
 /**
@@ -74,6 +75,6 @@ FormButton.prototype.press = function() {
 }
 mix(Eventful).into(FormButton.prototype);
 ```
-{% endexample %}
+:::
 
-[mixin-tag]: tags-mixin.html
+[mixin-tag]: /tags-mixin
diff --git a/content/en/tags-mixin.md b/content/tags-mixin.md
similarity index 90%
rename from content/en/tags-mixin.md
rename to content/tags-mixin.md
index 4ee53d16..23c12e5c 100644
--- a/content/en/tags-mixin.md
+++ b/content/tags-mixin.md
@@ -1,10 +1,11 @@
 ---
 tag: mixin
+tags: blockTags
 description: Document a mixin object.
 related:
-    - tags-borrows.html
-    - tags-class.html
-    - tags-mixes.html
+    - /tags-borrows
+    - /tags-class
+    - /tags-mixes
 ---
 
 ## Syntax
@@ -21,7 +22,7 @@ that use the mixin.
 
 ## Examples
 
-{% example "Using @mixin" %}
+::: example "Using @mixin"
 
 ```js
 /**
@@ -50,4 +51,4 @@ var Eventful = {
     }
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-module.md b/content/tags-module.md
similarity index 82%
rename from content/en/tags-module.md
rename to content/tags-module.md
index 8df9576c..3874cea2 100644
--- a/content/en/tags-module.md
+++ b/content/tags-module.md
@@ -1,10 +1,11 @@
 ---
 tag: module
+tags: blockTags
 description: Document a JavaScript module.
 related:
-    - tags-exports.html
-    - howto-commonjs-modules.html
-    - howto-amd-modules.html
+    - /tags-exports
+    - /howto-commonjs-modules
+    - /howto-amd-modules
 ---
 
 ## Syntax
@@ -30,7 +31,7 @@ suppose I have a file `test.js`, located in the `src` directory, that contains t
 `/** @module */`. Here are some scenarios for running JSDoc and the resulting module names for
 test.js:
 
-{% example "Derived module names if none is provided." %}
+::: example "Derived module names if none is provided."
 
 ```
 # from src/
@@ -40,10 +41,10 @@ jsdoc ./test.js   # module name 'test'
 jsdoc src/test.js # module name 'src/test'
 jsdoc -r src/     # module name 'test'
 ```
-{% endexample %}
+:::
 
-[link-tag]: tags-inline-link.html
-[see-tag]: tags-see.html
+[link-tag]: /tags-inline-link
+[see-tag]: /tags-see
 
 
 ## Examples
@@ -52,7 +53,7 @@ The following example shows the namepaths that are used for symbols in a module.
 is a module-private, or "inner," variable--it can be only accessed within the module. The second
 symbol is a static function that is exported by the module.
 
-{% example "Basic @module use" %}
+::: example "Basic @module use"
 
 ```js
 /** @module myModule */
@@ -63,7 +64,7 @@ var foo = 1;
 /** will be module:myModule.bar */
 var bar = function() {};
 ```
-{% endexample %}
+:::
 
 When an exported symbol is defined as a member of `module.exports`, `exports`, or `this`, JSDoc
 infers that the symbol is a static member of the module.
@@ -71,7 +72,7 @@ infers that the symbol is a static member of the module.
 In the following example, the Book class is documented as a static member, "module:bookshelf.Book",
 with one instance member, "module:bookshelf.Book#title".
 
-{% example "Defining exported symbols as a member of 'this'" %}
+::: example "Defining exported symbols as a member of 'this'"
 
 ```js
 /** @module bookshelf */
@@ -81,12 +82,12 @@ this.Book = function (title) {
     this.title = title;
 };
 ```
-{% endexample %}
+:::
 
 In the following example, the two functions have the namepaths "module:color/mixer.blend" and
 "module:color/mixer.darken".
 
-{% example "Defining exported symbols as a member of 'module.exports' or 'exports'" %}
+::: example "Defining exported symbols as a member of 'module.exports' or 'exports'"
 
 ```js
 /** @module color/mixer */
@@ -97,8 +98,8 @@ module.exports = {
 /** Darkens a color. */
 exports.darken = function (color, shade) {};
 ```
-{% endexample %}
+:::
 
 See [Documenting JavaScript Modules][modules] for further examples.
 
-[modules]: howto-commonjs-modules.html
+[modules]: /howto-commonjs-modules
diff --git a/content/en/tags-name.md b/content/tags-name.md
similarity index 90%
rename from content/en/tags-name.md
rename to content/tags-name.md
index f7aa1118..f069aad0 100644
--- a/content/en/tags-name.md
+++ b/content/tags-name.md
@@ -1,9 +1,10 @@
 ---
 tag: name
+tags: blockTags
 description: Document the name of an object.
 related:
-    - about-namepaths.html
-    - tags-alias.html
+    - /about-namepaths
+    - /tags-alias
 ---
 
 ## Syntax
@@ -25,7 +26,7 @@ treat your documentation comment in isolation. In many cases, it is best to use
 [@alias tag][alias-tag] instead, which changes a symbol's name in the documentation but preserves
 other information about the symbol.
 
-[alias-tag]: tags-alias.html
+[alias-tag]: /tags-alias
 
 
 ## Examples
@@ -33,7 +34,7 @@ other information about the symbol.
 The following example shows how to use the @name tag to document a function that JSDoc would not
 normally recognize.
 
-{% example "Using the @name tag" %}
+::: example "Using the @name tag"
 
 ```js
 /**
@@ -44,4 +45,4 @@ normally recognize.
  */
 eval("window.highlightSearchTerm = function(term) {};")
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-namespace.md b/content/tags-namespace.md
similarity index 86%
rename from content/en/tags-namespace.md
rename to content/tags-namespace.md
index 2bacac44..c823dfcb 100644
--- a/content/en/tags-namespace.md
+++ b/content/tags-namespace.md
@@ -1,8 +1,9 @@
 ---
 tag: namespace
+tags: blockTags
 description: Document a namespace object.
 related:
-    - tags-module.html
+    - /tags-module
 ---
 
 ## Syntax
@@ -26,7 +27,7 @@ portion of the namespace that includes unusual characters. See the examples belo
 
 ## Examples
 
-{% example "Using the @namespace tag with an object" %}
+::: example "Using the @namespace tag with an object"
 
 ```js
 /**
@@ -40,9 +41,9 @@ var MyNamespace = {
     bar: 1
 };
 ```
-{% endexample %}
+:::
 
-{% example "Using the @namespace tag for virtual comments" %}
+::: example "Using the @namespace tag for virtual comments"
 
 ```js
 /**
@@ -56,13 +57,13 @@ var MyNamespace = {
  * @memberof MyNamespace
  */
 ```
-{% endexample %}
+:::
 
 If a @namespace includes a symbol whose name has unusual characters, you must enclose the symbol's
 name in double quotes. If the symbol's name already contains one or more double quotes, escape the
 double quotes with a leading backslash (\\).
 
-{% example "Using the @namespace tag with unusual member names" %}
+::: example "Using the @namespace tag with unusual member names"
 
 ```js
 /** @namespace window */
@@ -73,4 +74,4 @@ double quotes with a leading backslash (\\).
  */
 window["!"] = function(msg) { alert(msg); };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-override.md b/content/tags-override.md
similarity index 90%
rename from content/en/tags-override.md
rename to content/tags-override.md
index 0e4218be..05ccb2a9 100644
--- a/content/en/tags-override.md
+++ b/content/tags-override.md
@@ -1,11 +1,12 @@
 ---
 tag: override
+tags: blockTags
 description: Indicate that a symbol overrides its parent.
 dictionaries:
     - closure
 version: '>=3.3.0'
 related:
-    - tags-inheritdoc.html
+    - /tags-inheritdoc
 ---
 
 ## Overview
@@ -20,14 +21,14 @@ the `@override` tag. The presence of the `@inheritdoc` tag implies the presence
 tag.
 
 [closure]: https://developers.google.com/closure/compiler/
-[inheritdoc-tag]: tags-inheritdoc.html
+[inheritdoc-tag]: /tags-inheritdoc
 
 
 ## Example
 
 The following example shows how to indicate that a method overrides a method in its parent class:
 
-{% example "Method that overrides a parent" %}
+::: example "Method that overrides a parent"
 
 ```js
 /**
@@ -59,4 +60,4 @@ Socket.prototype.open = function() {
     // ...
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-package.md b/content/tags-package.md
similarity index 81%
rename from content/en/tags-package.md
rename to content/tags-package.md
index 7727d21c..8df52743 100644
--- a/content/en/tags-package.md
+++ b/content/tags-package.md
@@ -1,14 +1,15 @@
 ---
 tag: package
+tags: blockTags
 description: This symbol is meant to be package-private.
 related:
-    - tags-access.html
-    - tags-global.html
-    - tags-instance.html
-    - tags-private.html
-    - tags-protected.html
-    - tags-public.html
-    - tags-static.html
+    - /tags-access
+    - /tags-global
+    - /tags-instance
+    - /tags-private
+    - /tags-protected
+    - /tags-public
+    - /tags-static
 ---
 
 ## Syntax
@@ -36,7 +37,7 @@ behavior.
 
 The `@package` tag is equivalent to `@access package`.
 
-[access-option]: about-commandline.html
+[access-option]: /about-commandline
 
 
 ## Examples
@@ -44,7 +45,7 @@ The `@package` tag is equivalent to `@access package`.
 In the following example, the instance member `Thingy#_bar` appears in the generated documentation,
 but with an annotation indicating that it is package-private:
 
-{% example "Using the @package tag" %}
+::: example "Using the @package tag"
 
 ```js
 /** @constructor */
@@ -53,4 +54,4 @@ function Thingy() {
     this._bar = 1;
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-param.md b/content/tags-param.md
similarity index 82%
rename from content/en/tags-param.md
rename to content/tags-param.md
index 1d82b3d0..e2565fc0 100644
--- a/content/en/tags-param.md
+++ b/content/tags-param.md
@@ -1,14 +1,15 @@
 ---
 tag: param
+tags: blockTags
 description: Document the parameter to a function.
 synonyms:
     - arg
     - argument
 related:
-    - tags-callback.html
-    - tags-returns.html
-    - tags-type.html
-    - tags-typedef.html
+    - /tags-callback
+    - /tags-returns
+    - /tags-type
+    - /tags-typedef
 ---
 
 ## Overview
@@ -27,8 +28,8 @@ any type; see the [`@type` tag documentation][type-tag] for details.
 If you provide a description, you can make the JSDoc comment more readable by inserting a hyphen
 before the description. Be sure to include a space before and after the hyphen.
 
-[namepath]: about-namepaths.html
-[type-tag]: tags-type.html
+[namepath]: /about-namepaths
+[type-tag]: /tags-type
 
 
 ## Examples
@@ -36,7 +37,7 @@ before the description. Be sure to include a space before and after the hyphen.
 ### Names, types, and descriptions
 The following examples show how to include names, types, and descriptions in a `@param` tag.
 
-{% example "Name only" %}
+::: example "Name only"
 
 ```js
 /**
@@ -46,9 +47,9 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
-{% example "Name and type" %}
+::: example "Name and type"
 
 ```js
 /**
@@ -58,9 +59,9 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
-{% example "Name, type, and description" %}
+::: example "Name, type, and description"
 
 ```js
 /**
@@ -70,12 +71,12 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
 You can add a hyphen before the description to make it more readable. Be sure to include a space
 before and after the hyphen.
 
-{% example "Name, type, and description, with a hyphen before the description" %}
+::: example "Name, type, and description, with a hyphen before the description"
 
 ```js
 /**
@@ -85,14 +86,14 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
 ### Parameters with properties
 If a parameter is expected to have a specific property, you can document that property by providing
 an additional `@param` tag. For example, if an `employee` parameter is expected to have `name` and
 `department` properties, you can document it as follows:
 
-{% example "Documenting a parameter's properties" %}
+::: example "Documenting a parameter's properties"
 
 ```js
 /**
@@ -105,12 +106,12 @@ Project.prototype.assign = function(employee) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 If a parameter is destructured without an explicit name, you can give the object an appropriate one and
 document its properties.
 
-{% example "Documenting a destructuring parameter" %}
+::: example "Documenting a destructuring parameter"
 ```js
 /**
  * Assign the project to an employee.
@@ -122,12 +123,12 @@ Project.prototype.assign = function({ name, department }) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 You can also combine this syntax with JSDoc's syntax for array parameters. For example, if multiple
 employees can be assigned to a project:
 
-{% example "Documenting properties of values in an array" %}
+::: example "Documenting properties of values in an array"
 
 ```js
 /**
@@ -140,12 +141,12 @@ Project.prototype.assign = function(employees) {
     // ...
 };
 ```
-{% endexample %}
+:::
 
 ### Optional parameters and default values
 The following examples show how to indicate that a parameter is optional and has a default value.
 
-{% example "An optional parameter (using JSDoc syntax)" %}
+::: example "An optional parameter (using JSDoc syntax)"
 
 ```js
 /**
@@ -158,9 +159,9 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
-{% example "An optional parameter (using Google Closure Compiler syntax)" %}
+::: example "An optional parameter (using Google Closure Compiler syntax)"
 
 ```js
 /**
@@ -173,9 +174,9 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
-{% example "An optional parameter and default value" %}
+::: example "An optional parameter and default value"
 
 ```js
 /**
@@ -188,14 +189,14 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
 ### Multiple types and repeatable parameters
 The following examples show how to use type expressions to indicate that a parameter can accept
 multiple types (or any type), and that a parameter can be provided more than once. See the
 [`@type` tag documentation][type-tag] for details about the type expressions that JSDoc supports.
 
-{% example "Allows one type OR another type (type union)" %}
+::: example "Allows one type OR another type (type union)"
 
 ```js
 /**
@@ -210,9 +211,9 @@ function sayHello(somebody) {
     alert('Hello ' + somebody);
 }
 ```
-{% endexample %}
+:::
 
-{% example "Allows any type" %}
+::: example "Allows any type"
 
 ```js
 /**
@@ -222,9 +223,9 @@ function sayHello(somebody) {
     console.log('Hello ' + JSON.stringify(somebody));
 }
 ```
-{% endexample %}
+:::
 
-{% example "Allows a parameter to be repeated" %}
+::: example "Allows a parameter to be repeated"
 
 ```js
 /**
@@ -239,13 +240,13 @@ function sum(num) {
     return t;
 }
 ```
-{% endexample %}
+:::
 
 ### Callback functions
 If a parameter accepts a callback function, you can use the [`@callback` tag][callback-tag] to
 define a callback type, then include the callback type in the `@param` tag.
 
-{% example "Parameters that accept a callback" %}
+::: example "Parameters that accept a callback"
 
 ```js
 /**
@@ -264,7 +265,7 @@ function doSomethingAsynchronously(cb) {
     // code
 };
 ```
-{% endexample %}
+:::
 
-[callback-tag]: tags-callback.html
-[type-tag]: tags-type.html
+[callback-tag]: /tags-callback
+[type-tag]: /tags-type
diff --git a/content/en/tags-private.md b/content/tags-private.md
similarity index 83%
rename from content/en/tags-private.md
rename to content/tags-private.md
index 3bc542d6..5b66e87a 100644
--- a/content/en/tags-private.md
+++ b/content/tags-private.md
@@ -1,14 +1,15 @@
 ---
 tag: private
+tags: blockTags
 description: This symbol is meant to be private.
 related:
-    - tags-access.html
-    - tags-global.html
-    - tags-instance.html
-    - tags-package.html
-    - tags-protected.html
-    - tags-public.html
-    - tags-static.html
+    - /tags-access
+    - /tags-global
+    - /tags-instance
+    - /tags-package
+    - /tags-protected
+    - /tags-public
+    - /tags-static
 ---
 
 ## Syntax
@@ -37,7 +38,7 @@ namespace is private, the members' namepath will not include the namespace.
 
 The `@private` tag is equivalent to `@access private`.
 
-[access-option]: about-commandline.html
+[access-option]: /about-commandline
 
 
 ## Examples
@@ -45,7 +46,7 @@ The `@private` tag is equivalent to `@access private`.
 In the following example, `Documents` and `Documents.Newspaper` appear in the generated
 documentation, but not `Documents.Diary`.
 
-{% example "Using the @private tag" %}
+::: example "Using the @private tag"
 
 ```js
 /** @namespace */
@@ -61,4 +62,4 @@ var Documents = {
     Diary: 2
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-property.md b/content/tags-property.md
similarity index 89%
rename from content/en/tags-property.md
rename to content/tags-property.md
index a14b9984..946e3fda 100644
--- a/content/en/tags-property.md
+++ b/content/tags-property.md
@@ -1,11 +1,12 @@
 ---
 tag: property
+tags: blockTags
 description: Document a property of an object.
 synonyms:
     - prop
 related:
-    - tags-enum.html
-    - tags-member.html
+    - /tags-enum
+    - /tags-member
 ---
 
 ## Overview
@@ -28,7 +29,7 @@ the type, name and description.
 In this example we have a namespace named "config." We want all the information about the defaults
 property, including its nested values, to appear on the same page with the documentation for config.
 
-{% example "A namespace with defaults and nested default properties" %}
+::: example "A namespace with defaults and nested default properties"
 
 ```js
 /**
@@ -49,11 +50,11 @@ var config = {
     }
 };
 ```
-{% endexample %}
+:::
 
 The following example shows how to indicate that a property is optional.
 
- {% example "A type definition with required and optional property" %}
+ ::: example "A type definition with required and optional property"
 
  ```
 /**
@@ -63,4 +64,4 @@ The following example shows how to indicate that a property is optional.
  * @property {string} [nickName]
  */
  ```
- {% endexample %}
\ No newline at end of file
+ :::
diff --git a/content/en/tags-protected.md b/content/tags-protected.md
similarity index 80%
rename from content/en/tags-protected.md
rename to content/tags-protected.md
index daf82936..49a3aeb4 100644
--- a/content/en/tags-protected.md
+++ b/content/tags-protected.md
@@ -1,14 +1,15 @@
 ---
 tag: protected
+tags: blockTags
 description: This symbol is meant to be protected.
 related:
-    - tags-access.html
-    - tags-global.html
-    - tags-instance.html
-    - tags-package.html
-    - tags-private.html
-    - tags-public.html
-    - tags-static.html
+    - /tags-access
+    - /tags-global
+    - /tags-instance
+    - /tags-package
+    - /tags-private
+    - /tags-public
+    - /tags-static
 ---
 
 ## Syntax
@@ -35,7 +36,7 @@ behavior.
 
 The `@protected` tag is equivalent to `@access protected`.
 
-[access-option]: about-commandline.html
+[access-option]: /about-commandline
 
 
 ## Examples
@@ -43,7 +44,7 @@ The `@protected` tag is equivalent to `@access protected`.
 In the following example, the instance member `Thingy#_bar` appears in the generated documentation,
 but with an annotation indicating that it is protected:
 
-{% example "Using the @protected tag" %}
+::: example "Using the @protected tag"
 
 ```js
 /** @constructor */
@@ -52,4 +53,4 @@ function Thingy() {
     this._bar = 1;
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-public.md b/content/tags-public.md
similarity index 73%
rename from content/en/tags-public.md
rename to content/tags-public.md
index 814c6ddb..6b5ccc52 100644
--- a/content/en/tags-public.md
+++ b/content/tags-public.md
@@ -1,14 +1,15 @@
 ---
 tag: public
+tags: blockTags
 description: This symbol is meant to be public.
 related:
-    - tags-access.html
-    - tags-global.html
-    - tags-instance.html
-    - tags-package.html
-    - tags-private.html
-    - tags-protected.html
-    - tags-static.html
+    - /tags-access
+    - /tags-global
+    - /tags-instance
+    - /tags-package
+    - /tags-private
+    - /tags-protected
+    - /tags-static
 ---
 
 ## Overview
@@ -23,14 +24,14 @@ In JSDoc 3, the `@public` tag does _not_ affect a symbol's scope. Use the
 [`@instance`][instance-tag], [`@static`][static-tag], and [`@global`][global-tag] tags to change a
 symbol's scope.
 
-[global-tag]: tags-global.html
-[instance-tag]: tags-instance.html
-[static-tag]: tags-static.html
+[global-tag]: /tags-global
+[instance-tag]: /tags-instance
+[static-tag]: /tags-static
 
 
 ## Examples
 
-{% example "Using the @public tag" %}
+::: example "Using the @public tag"
 
 ```js
 /**
@@ -47,4 +48,4 @@ function Thingy() {
     var foo = 0;
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-readonly.md b/content/tags-readonly.md
similarity index 83%
rename from content/en/tags-readonly.md
rename to content/tags-readonly.md
index e9b1bd63..4188915b 100644
--- a/content/en/tags-readonly.md
+++ b/content/tags-readonly.md
@@ -1,5 +1,6 @@
 ---
 tag: readonly
+tags: blockTags
 description: This symbol is meant to be read-only.
 ---
 
@@ -12,7 +13,7 @@ in your code.
 
 ## Examples
 
-{% example "Using the @readonly tag" %}
+::: example "Using the @readonly tag"
 
 ```js
 /**
@@ -22,9 +23,9 @@ in your code.
  */
 const FOO = 1;
 ```
-{% endexample %}
+:::
 
-{% example "Using the @readonly tag with a getter" %}
+::: example "Using the @readonly tag with a getter"
 
 ```js
 /**
@@ -45,4 +46,4 @@ var pieOptions = {
 	}
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-requires.md b/content/tags-requires.md
similarity index 93%
rename from content/en/tags-requires.md
rename to content/tags-requires.md
index 11e27fcc..eb9eeb2c 100644
--- a/content/en/tags-requires.md
+++ b/content/tags-requires.md
@@ -1,5 +1,6 @@
 ---
 tag: requires
+tags: blockTags
 description: This file requires a JavaScript module.
 ---
 
@@ -20,7 +21,7 @@ process.
 
 ## Examples
 
-{% example "Using the @requires tag" %}
+::: example "Using the @requires tag"
 
 ```js
 /**
@@ -32,4 +33,4 @@ process.
  */
 function Widgetizer() {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-returns.md b/content/tags-returns.md
similarity index 80%
rename from content/en/tags-returns.md
rename to content/tags-returns.md
index 116d80d6..f2906335 100644
--- a/content/en/tags-returns.md
+++ b/content/tags-returns.md
@@ -1,11 +1,12 @@
 ---
 tag: returns
+tags: blockTags
 description: Document the return value of a function.
 synonyms:
     - return
 related:
-    - tags-param.html
-    - tags-yields.html
+    - /tags-param
+    - /tags-yields
 ---
 
 ## Syntax
@@ -20,12 +21,12 @@ The `@returns` tag documents the value that a function returns.
 If you are documenting a generator function, use the [`@yields` tag][yields-tag] instead of this
 tag.
 
-[yields-tag]: tags-yields.html
+[yields-tag]: /tags-yields
 
 
 ## Examples
 
-{% example "Return value with a type" %}
+::: example "Return value with a type"
 
 ```js
 /**
@@ -38,9 +39,9 @@ function sum(a, b) {
     return a + b;
 }
 ```
-{% endexample %}
+:::
 
-{% example "Return value with a type and description" %}
+::: example "Return value with a type and description"
 
 ```js
 /**
@@ -53,9 +54,9 @@ function sum(a, b) {
     return a + b;
 }
 ```
-{% endexample %}
+:::
 
-{% example "Return value with multiple types" %}
+::: example "Return value with multiple types"
 
 ```js
 /**
@@ -72,9 +73,9 @@ function sum(a, b, retArr) {
     return a + b;
 }
 ```
-{% endexample %}
+:::
 
-{% example "Returns a promise" %}
+::: example "Returns a promise"
 
 ```js
 /**
@@ -89,4 +90,4 @@ function sumAsync(a, b) {
     });
 }
 ```
-{% endexample %}
\ No newline at end of file
+:::
diff --git a/content/en/tags-see.md b/content/tags-see.md
similarity index 90%
rename from content/en/tags-see.md
rename to content/tags-see.md
index d8553eb0..4727a5a9 100644
--- a/content/en/tags-see.md
+++ b/content/tags-see.md
@@ -1,8 +1,9 @@
 ---
 tag: see
+tags: blockTags
 description: Refer to some other documentation for more information.
 related:
-    - tags-inline-link.html
+    - /tags-inline-link
 ---
 
 ## Syntax
@@ -20,7 +21,7 @@ JSDoc's default template automatically converts the namepath to a link.
 
 ## Examples
 
-{% example "Using the @see tag" %}
+::: example "Using the @see tag"
 
 ```js
 /**
@@ -37,4 +38,4 @@ function foo() {}
  */
 function bar() {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-since.md b/content/tags-since.md
similarity index 81%
rename from content/en/tags-since.md
rename to content/tags-since.md
index 5f9ce38c..10092c9f 100644
--- a/content/en/tags-since.md
+++ b/content/tags-since.md
@@ -1,8 +1,9 @@
 ---
 tag: since
+tags: blockTags
 description: When was this feature added?
 related:
-    - tags-version.html
+    - /tags-version
 ---
 
 ## Syntax
@@ -17,7 +18,7 @@ The @since tag indicates that a class, method, or other symbol was added in a sp
 
 ## Examples
 
-{% example "Using the @since tag" %}
+::: example "Using the @since tag"
 
 ```js
 /**
@@ -26,4 +27,4 @@ The @since tag indicates that a class, method, or other symbol was added in a sp
  */
 function UserRecord() {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-static.md b/content/tags-static.md
similarity index 79%
rename from content/en/tags-static.md
rename to content/tags-static.md
index 087b0e52..1c301078 100644
--- a/content/en/tags-static.md
+++ b/content/tags-static.md
@@ -1,10 +1,11 @@
 ---
 tag: static
+tags: blockTags
 description: Document a static member.
 related:
-    - tags-global.html
-    - tags-inner.html
-    - tags-instance.html
+    - /tags-global
+    - /tags-inner
+    - /tags-instance
 ---
 
 ## Overview
@@ -21,7 +22,7 @@ scope will remain global.
 The following example has the same effect as writing "@function MyNamespace.myFunction" and omitting
 the @memberof and @static tags:
 
-{% example "Using @static in a virtual comment" %}
+::: example "Using @static in a virtual comment"
 
 ```js
 /** @namespace MyNamespace */
@@ -32,11 +33,11 @@ the @memberof and @static tags:
  * @static
  */
 ```
-{% endexample %}
+:::
 
 The following example forces a module's inner member to be documented as a static member:
 
-{% example "Using @static to override the default scope" %}
+::: example "Using @static to override the default scope"
 
 ```js
 /** @module Rollerskate */
@@ -48,4 +49,4 @@ The following example forces a module's inner member to be documented as a stati
  */
 var wheel = 1;
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-summary.md b/content/tags-summary.md
similarity index 89%
rename from content/en/tags-summary.md
rename to content/tags-summary.md
index eaa02c54..e5d67163 100644
--- a/content/en/tags-summary.md
+++ b/content/tags-summary.md
@@ -1,9 +1,10 @@
 ---
 tag: summary
+tags: blockTags
 description: A shorter version of the full description.
 related:
-    - tags-classdesc.html
-    - tags-description.html
+    - /tags-classdesc
+    - /tags-description
 ---
 
 ## Syntax
diff --git a/content/en/tags-this.md b/content/tags-this.md
similarity index 93%
rename from content/en/tags-this.md
rename to content/tags-this.md
index 87a65a57..2358ad01 100644
--- a/content/en/tags-this.md
+++ b/content/tags-this.md
@@ -1,8 +1,9 @@
 ---
 tag: this
+tags: blockTags
 description: What does the 'this' keyword refer to here?
 related:
-    - tags-memberof.html
+    - /tags-memberof
 ---
 
 ## Syntax
diff --git a/content/en/tags-throws.md b/content/tags-throws.md
similarity index 74%
rename from content/en/tags-throws.md
rename to content/tags-throws.md
index 2f6dd26e..09be0c1a 100644
--- a/content/en/tags-throws.md
+++ b/content/tags-throws.md
@@ -1,5 +1,6 @@
 ---
 tag: throws
+tags: blockTags
 description: Describe what errors could be thrown.
 synonyms:
     - exception
@@ -20,7 +21,7 @@ The @throws tag allows you to document an error that a function might throw. You
 
 ## Examples
 
-{% example "Using the @throws tag with a type" %}
+::: example "Using the @throws tag with a type"
 
 ```js
 /**
@@ -28,9 +29,9 @@ The @throws tag allows you to document an error that a function might throw. You
  */
 function foo(x) {}
 ```
-{% endexample %}
+:::
 
-{% example "Using the @throws tag with a description" %}
+::: example "Using the @throws tag with a description"
 
 ```js
 /**
@@ -38,9 +39,9 @@ function foo(x) {}
  */
 function bar(x) {}
 ```
-{% endexample %}
+:::
 
-{% example "Using the @throws tag with a type and description" %}
+::: example "Using the @throws tag with a type and description"
 
 ```js
 /**
@@ -48,4 +49,4 @@ function bar(x) {}
  */
 function baz(x) {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-todo.md b/content/tags-todo.md
similarity index 88%
rename from content/en/tags-todo.md
rename to content/tags-todo.md
index 1a376398..cc18a3f4 100644
--- a/content/en/tags-todo.md
+++ b/content/tags-todo.md
@@ -1,5 +1,6 @@
 ---
 tag: todo
+tags: blockTags
 description: Document tasks to be completed.
 ---
 
@@ -16,7 +17,7 @@ the @todo tag more than once in a single JSDoc comment.
 
 ## Examples
 
-{% example "Using the @todo tag" %}
+::: example "Using the @todo tag"
 
 ```js
 /**
@@ -27,4 +28,4 @@ function foo() {
     // write me
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-tutorial.md b/content/tags-tutorial.md
similarity index 79%
rename from content/en/tags-tutorial.md
rename to content/tags-tutorial.md
index 6436be28..5554d8ec 100644
--- a/content/en/tags-tutorial.md
+++ b/content/tags-tutorial.md
@@ -1,10 +1,11 @@
 ---
 tag: tutorial
+tags: blockTags
 description: Insert a link to an included tutorial file.
 related:
-    - about-tutorials.html
-    - tags-inline-tutorial.html
-    - tags-see.html
+    - /about-tutorials
+    - /tags-inline-tutorial
+    - /tags-see
 ---
 
 ## Syntax
@@ -19,7 +20,7 @@ See the [tutorials overview][tutorials] for instructions on creating tutorials.
 
 You can use the `@tutorial` tag more than once in a single JSDoc comment.
 
-[tutorials]: about-tutorials.html
+[tutorials]: /about-tutorials
 
 
 ## Examples
@@ -27,7 +28,7 @@ You can use the `@tutorial` tag more than once in a single JSDoc comment.
 In the following example, the documentation for `MyClass` will link to the tutorials that have the
 identifiers `tutorial-1` and `tutorial-2`:
 
-{% example "Using the @tutorial tag" %}
+::: example "Using the @tutorial tag"
 
 ```js
 /**
@@ -38,4 +39,4 @@ identifiers `tutorial-1` and `tutorial-2`:
  */
 function MyClass() {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-type.md b/content/tags-type.md
similarity index 62%
rename from content/en/tags-type.md
rename to content/tags-type.md
index 3c6cace4..10f6f07b 100644
--- a/content/en/tags-type.md
+++ b/content/tags-type.md
@@ -1,13 +1,17 @@
 ---
 tag: type
+tags: blockTags
 description: Document the type of an object.
 related:
-    - tags-callback.html
-    - tags-typedef.html
-    - tags-param.html
-    - tags-property.html
+    - /tags-callback
+    - /tags-typedef
+    - /tags-param
+    - /tags-property
 ---
 
+{% set open = '{{' %}
+{% set close = '}}' %}
+
 ## Syntax
 
 `@type {typeName}`
@@ -46,11 +50,16 @@ documented.
 <tr>
  <td>Symbol name (name expression)</td>
  <td>
-{% example %}
-<pre class="prettyprint"><code>{boolean}
+
+::: example
+
+```none
+{boolean}
 {myNamespace.MyClass}
-</code></pre>
-{% endexample %}
+```
+
+:::
+
  </td>
  <td>
   <p>
@@ -65,10 +74,15 @@ documented.
   Multiple types (type union)
  </td>
  <td>
-{% example "This can be a number or a boolean." %}
-<pre class="prettyprint"><code>{(number|boolean)}
-</code></pre>
-{% endexample %}
+
+::: example "This can be a number or a boolean."
+
+```none
+{(number|boolean)}
+```
+
+:::
+
  </td>
  <td>
   <p>
@@ -83,39 +97,51 @@ documented.
   Arrays and objects (type applications and record types)
  </td>
  <td>
-{% example "An array of MyClass instances." %}
-<pre class="prettyprint"><code>{Array.&lt;MyClass&gt;}
+
+::: example "An array of MyClass instances."
+
+```none
+{Array.<MyClass>}
 // or:
 {MyClass[]}
-</code></pre>
-{% endexample %}
+```
+
+:::
+
+::: example "An object with string keys and number values:"
+
+```none
+{Object.<string, number>}
+```
+
+:::
 
-{% example "An object with string keys and number values:" %}
-<pre class="prettyprint"><code>{Object.&lt;string, number&gt;}
-</code></pre>
-{% endexample %}
+::: example "An object called 'myObj' with properties 'a' (a number), 'b' (a string) and 'c' (any type)."
 
-{% example "An object called 'myObj' with properties 'a' (a number), 'b' (a string) and 'c' (any type)." %}
-<pre class="prettyprint"><code>&#123;{a: number, b: string, c}} myObj
+```none
+{{ open }}a: number, b: string, c{{ close }} myObj
 // or:
 {Object} myObj
 {number} myObj.a
 {string} myObj.b
 {*} myObj.c
-</code></pre>
-{% endexample %}
+```
+
+:::
+
  </td>
- <td><p>
-  JSDoc supports Closure Compiler's syntax for defining array and object types.
+ <td>
   <p>
+    JSDoc supports Closure Compiler's syntax for defining array and object types.
+  </p>
   <p>
-  You can also indicate an array by appending <code>[]</code> to the type that is contained in the
-  array. For example, the expression <code>string[]</code> indicates an array of strings.
+    You can also indicate an array by appending <code>[]</code> to the type that is contained in the
+    array. For example, the expression <code>string[]</code> indicates an array of strings.
   </p>
   <p>
-  For objects that have a known set of properties, you can use Closure Compiler's syntax for
-  documenting record types. You can document each property individually, which enables you to
-  provide more detailed information about each property.
+    For objects that have a known set of properties, you can use Closure Compiler's syntax for
+    documenting record types. You can document each property individually, which enables you to
+    provide more detailed information about each property.
   </p>
  </td>
 </tr>
@@ -125,10 +151,15 @@ documented.
   Nullable type
  </td>
  <td>
-{% example "A number or null." %}
-<pre class="prettyprint"><code>{?number}
-</code></pre>
-{% endexample %}
+
+::: example "A number or null."
+
+```none
+{?number}
+```
+
+:::
+
  </td>
  <td>
   <p>
@@ -142,10 +173,15 @@ documented.
   Non-nullable type
  </td>
  <td>
-{% example "A number, but never null." %}
-<pre class="prettyprint"><code>{!number}
-</code></pre>
-{% endexample %}
+
+::: example "A number, but never null."
+
+```none
+{!number}
+```
+
+:::
+
  </td>
  <td>
   <p>
@@ -159,18 +195,26 @@ documented.
   Variable number of that type
  </td>
  <td>
-{% example "This function accepts a variable number of numeric parameters." %}
-<pre class="prettyprint"><code>@param {...number} num
-</code></pre>
-{% endexample %}
+
+::: example "This function accepts a variable number of numeric parameters."
+
+```none
+@param {...number} num
+```
+
+:::
+
  </td>
  <td>
   <p>
   Indicates that the function accepts a variable number of parameters, and specifies a type for the
   parameters. For example:
   </p>
-{% example %}
-<pre class="prettyprint"><code>/**
+
+::: example
+
+```js
+/**
  * Returns the sum of all numbers passed to the function.
  * @param {...number} num A positive or negative number
  */
@@ -181,8 +225,10 @@ function sum(num) {
     }
     return t;
 }
-</code></pre>
-{% endexample %}
+```
+
+:::
+
  </td>
 </tr>
 
@@ -191,17 +237,25 @@ function sum(num) {
   Optional parameter
  </td>
  <td>
-{% example "An optional parameter named foo." %}
-<pre class="prettyprint"><code>@param {number} [foo]
+
+::: example "An optional parameter named foo."
+
+```none
+@param {number} [foo]
 // or:
 @param {number=} foo
-</code></pre>
-{% endexample %}
+```
+
+:::
+
+::: example "An optional parameter foo with default value 1."
+
+```none
+@param {number} [foo=1]
+```
+
+:::
 
-{% example "An optional parameter foo with default value 1." %}
-<pre class="prettyprint"><code>@param {number} [foo=1]
-</code></pre>
-{% endexample %}
  </td>
  <td>
   <p>
@@ -216,20 +270,25 @@ function sum(num) {
   Callbacks
  </td>
  <td>
-{% example %}
-<pre class="prettyprint"><code>/**
+
+::: example
+
+```js
+/**
  * @callback myCallback
  * @param {number} x - ...
  */
 
 /** @type {myCallback} */
 var cb;
-</code></pre>
-{% endexample %}
+```
+
+:::
+
  </td>
  <td>
   <p>
-  Document a callback using the <a href="tags-callback.html">@callback</a> tag. The syntax is
+  Document a callback using the <a href="/tags-callback">@callback</a> tag. The syntax is
   identical to the @typedef tag, except that a callback's type is always "function."
   </p>
  </td>
@@ -240,8 +299,11 @@ var cb;
   Type definitions
  </td>
  <td>
-{% example "Documenting a type with properties 'id', 'name', 'age'." %}
-<pre class="prettyprint"><code>/**
+
+::: example "Documenting a type with properties 'id', 'name', 'age'."
+
+```js
+/**
  * @typedef PropertiesHash
  * @type {object}
  * @property {string} id - an ID.
@@ -251,12 +313,14 @@ var cb;
 
 /** @type {PropertiesHash} */
 var props;
-</code></pre>
-{% endexample %}
+```
+
+:::
+
  </td>
  <td>
   <p>
-  You can document complex types using the <a href="tags-typedef.html">@typedef</a> tag, then refer
+  You can document complex types using the <a href="/tags-typedef">@typedef</a> tag, then refer
   to the type definition elsewhere in your documentation.
   </p>
  </td>
@@ -264,12 +328,12 @@ var props;
 </table>
 
 [closure]: https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#type-expressions
-[param-tag]: tags-param.html
+[param-tag]: /tags-param
 
 
 ## Examples
 
-{% example "Example" %}
+::: example "Example"
 
 ```js
 /** @type {(string|Array.<string>)} */
@@ -277,12 +341,12 @@ var foo;
 /** @type {number} */
 var bar = 1;
 ```
-{% endexample %}
+:::
 
 In many cases, you can include a type expression as part of another tag, rather than including a
 separate @type tag in your JSDoc comment.
 
-{% example "Type expressions can accompany many tags." %}
+::: example "Type expressions can accompany many tags."
 
 ```js
 /**
@@ -296,4 +360,4 @@ var FOO = 1;
 /** @const {number} */
 var FOO = 1;
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-typedef.md b/content/tags-typedef.md
similarity index 85%
rename from content/en/tags-typedef.md
rename to content/tags-typedef.md
index 12dbebc4..6e7e1ccb 100644
--- a/content/en/tags-typedef.md
+++ b/content/tags-typedef.md
@@ -1,10 +1,11 @@
 ---
 tag: typedef
+tags: blockTags
 description: Document a custom type.
 related:
-    - tags-callback.html
-    - tags-param.html
-    - tags-type.html
+    - /tags-callback
+    - /tags-param
+    - /tags-type
 ---
 
 ## Syntax
@@ -20,9 +21,9 @@ repeatedly. These types can then be used within other tags expecting a type, suc
 
 Use the [@callback][callback-tag] tag to document the type of callback functions.
 
-[callback-tag]: tags-callback.html
-[param-tag]: tags-param.html
-[type-tag]: tags-type.html
+[callback-tag]: /tags-callback
+[param-tag]: /tags-param
+[type-tag]: /tags-type
 
 
 ## Examples
@@ -30,7 +31,7 @@ Use the [@callback][callback-tag] tag to document the type of callback functions
 This example defines a union type for parameters that can contain either numbers or strings that
 represent numbers.
 
-{% example "Using the @typedef tag" %}
+::: example "Using the @typedef tag"
 
 ```js
 /**
@@ -45,14 +46,14 @@ represent numbers.
 function setMagicNumber(x) {
 }
 ```
-{% endexample %}
+:::
 
 This example defines a more complex type, an object with several properties, and sets its
 namepath so it will be displayed along with the class that uses the type. Because the type
 definition is not actually exposed by the class, it is customary to document the type definition as
 an inner member.
 
-{% example "Using @typedef to document a complex type for a class" %}
+::: example "Using @typedef to document a complex type for a class"
 
 ```js
 /**
@@ -71,4 +72,4 @@ an inner member.
  */
 function WishGranter(triforce) {}
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-variation.md b/content/tags-variation.md
similarity index 92%
rename from content/en/tags-variation.md
rename to content/tags-variation.md
index abb3b8f2..ac3166de 100644
--- a/content/en/tags-variation.md
+++ b/content/tags-variation.md
@@ -1,9 +1,10 @@
 ---
 tag: variation
+tags: blockTags
 description: Distinguish different objects with the same name.
 related:
-    - tags-alias.html
-    - tags-name.html
+    - /tags-alias
+    - /tags-name
 ---
 
 ## Syntax
@@ -27,8 +28,8 @@ You can provide any value with the @variation tag, as long as the combination of
 longname results in a globally unique version of the longname. As a best practice, use a predictable
 pattern for choosing the values, which will make it easier for you to document your code.
 
-[alias-tag]: tags-alias.html
-[name-tag]: tags-name.html
+[alias-tag]: /tags-alias
+[name-tag]: /tags-name
 
 
 ## Examples
@@ -36,7 +37,7 @@ pattern for choosing the values, which will make it easier for you to document y
 The following example uses the @variation tag to distinguish between the Widget class and the Widget
 namespace.
 
-{% example "Using the @variation tag" %}
+::: example "Using the @variation tag"
 
 ```js
 /**
@@ -67,4 +68,4 @@ Widget.properties = {
     metallic: true
 };
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-version.md b/content/tags-version.md
similarity index 83%
rename from content/en/tags-version.md
rename to content/tags-version.md
index 6a6ddd56..9b5aabdf 100644
--- a/content/en/tags-version.md
+++ b/content/tags-version.md
@@ -1,8 +1,9 @@
 ---
 tag: version
+tags: blockTags
 description: Documents the version number of an item.
 related:
-    - tags-since.html
+    - /tags-since
 ---
 
 ## Overview
@@ -13,7 +14,7 @@ version of the item.
 
 ## Examples
 
-{% example "Using the @version tag" %}
+::: example "Using the @version tag"
 
 ```js
 /**
@@ -26,4 +27,4 @@ function solver(a, b) {
     return b / a;
 }
 ```
-{% endexample %}
+:::
diff --git a/content/en/tags-yields.md b/content/tags-yields.md
similarity index 78%
rename from content/en/tags-yields.md
rename to content/tags-yields.md
index b02d2fed..412de4ff 100644
--- a/content/en/tags-yields.md
+++ b/content/tags-yields.md
@@ -1,10 +1,11 @@
 ---
 tag: yields
+tags: blockTags
 description: Document the value yielded by a generator function.
 synonyms:
 	- yield
 related:
-	- tags-returns.html
+	- /tags-returns
 ---
 
 ## Syntax
@@ -20,12 +21,12 @@ in JSDoc 3.5.0 and later.
 If you are documenting a regular function, use the [`@returns` tag][returns-tag] instead of this
 tag.
 
-[returns-tag]: tags-returns.html
+[returns-tag]: /tags-returns
 
 
 ## Examples
 
-{% example "@yields tag with a type" %}
+::: example "@yields tag with a type"
 
 ```js
 /**
@@ -35,9 +36,9 @@ tag.
  */
 function* fibonacci() {}
 ```
-{% endexample %}
+:::
 
-{% example "@yields tag with a type and description" %}
+::: example "@yields tag with a type and description"
 
 ```js
 /**
@@ -47,4 +48,4 @@ function* fibonacci() {}
  */
 function* fibonacci() {}
 ```
-{% endexample %}
+:::
diff --git a/data/redirects.json b/data/redirects.json
deleted file mode 100644
index cd55ed5d..00000000
--- a/data/redirects.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "about-inline-tags.html": "about-block-inline-tags.html",
-    "tags-constructor.html": "tags-class.html",
-    "tags-link.html": "tags-inline-link.html",
-    "tags-method.html": "tags-function.html"
-}
diff --git a/data/toc.json b/data/toc.json
deleted file mode 100644
index 2d52e8dd..00000000
--- a/data/toc.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-    "gettingStarted": [
-        {
-            "filename": "about-getting-started.html"
-        },
-        {
-            "filename": "about-namepaths.html"
-        },
-        {
-            "filename": "about-commandline.html"
-        },
-        {
-            "filename": "about-configuring-jsdoc.html"
-        },
-        {
-            "filename": "about-configuring-default-template.html"
-        },
-        {
-            "filename": "about-block-inline-tags.html"
-        },
-        {
-            "filename": "about-plugins.html"
-        },
-        {
-            "filename": "plugins-markdown.html"
-        },
-        {
-            "filename": "about-tutorials.html"
-        },
-        {
-            "filename": "about-including-package.html"
-        },
-        {
-            "filename": "about-including-readme.html"
-        },
-        {
-            "filename": "about-license-jsdoc3.html"
-        }
-    ],
-    "examples": [
-        {
-            "filename": "howto-es2015-classes.html"
-        },
-        {
-            "filename": "howto-es2015-modules.html"
-        },
-        {
-            "filename": "howto-commonjs-modules.html"
-        },
-        {
-            "filename": "howto-amd-modules.html"
-        }
-    ],
-    "contribute": [
-        {
-            "link": "https://github.com/jsdoc3/jsdoc",
-            "text": "JSDoc project on GitHub",
-            "description": "Contribute to JSDoc."
-        },
-        {
-            "link": "https://github.com/jsdoc3/jsdoc3.github.com",
-            "text": "Use JSDoc project on GitHub",
-            "description": "Contribute to the JSDoc documentation."
-        }
-    ]
-}
diff --git a/eleventy.config.js b/eleventy.config.js
new file mode 100644
index 00000000..be86c8df
--- /dev/null
+++ b/eleventy.config.js
@@ -0,0 +1,74 @@
+const _ = require('lodash');
+
+const { renderer } = require('./lib/markdown');
+
+function getPageTitles(collections) {
+  const pageTitles = {};
+
+  collections.all.forEach((item) => {
+    let title;
+
+    if (item.data.tag) {
+      if (collections.inlineTags.includes(item)) {
+        title = `{@${item.data.tag}}`;
+      } else {
+        title = `@${item.data.tag}`;
+      }
+    } else if (item.data.title) {
+      title = item.data.title;
+    }
+
+    pageTitles[item.page.filePathStem] = title;
+  });
+
+  return pageTitles;
+}
+
+const memoizedGetPageTitles = _.memoize(getPageTitles);
+
+function sortBy(items, key) {
+  return _.sortBy(items, (item) => _.get(item, key));
+}
+
+module.exports = (eleventyConfig) => {
+  eleventyConfig.addFilter('keys', (value) => Object.keys(value));
+  eleventyConfig.addFilter('relatedList', (related, collections) => {
+    const pageTitles = memoizedGetPageTitles(collections);
+    const relatedList = related.map((path) => {
+      return {
+        title: pageTitles[path],
+        path,
+      };
+    });
+
+    return sortBy(relatedList, 'title');
+  });
+  eleventyConfig.addFilter('sortTags', (value) => {
+    return sortBy(value, 'data.tag');
+  });
+
+  // Use `layout.njk` as the default layout.
+  eleventyConfig.addGlobalData('layout', 'layout.njk');
+  // Use `/foo.html` as the output filename rather than `/foo/index.html`.
+  eleventyConfig.addGlobalData('permalink', () => {
+    return (data) => `${data.page.filePathStem}.${data.page.outputFileExtension}`;
+  });
+
+  eleventyConfig.addPassthroughCopy('./images');
+  eleventyConfig.addPassthroughCopy('./styles');
+
+  eleventyConfig.setLibrary('md', renderer());
+  eleventyConfig.setNunjucksEnvironmentOptions({
+    throwOnUndefined: true,
+  });
+
+  return {
+    dir: {
+      data: 'data',
+      includes: 'includes',
+      input: 'content',
+      output: '_site',
+    },
+    markdownTemplateEngine: 'njk',
+  };
+};
diff --git a/gulpfile.js b/gulpfile.js
deleted file mode 100644
index c5410543..00000000
--- a/gulpfile.js
+++ /dev/null
@@ -1,126 +0,0 @@
-const beautify = require('metalsmith-beautify');
-const connect = require('gulp-connect');
-const gulp = require('gulp');
-const headings = require('metalsmith-headings');
-const markdown = require('metalsmith-markdown');
-const marked = require('marked');
-const Metalsmith = require('metalsmith');
-const minimist = require('minimist');
-const path = require('path');
-const plugins = require('./lib/plugins');
-
-// file extensions to clean up from the destination path
-const CLEANUP_EXTENSIONS = ['html'];
-// location for output files
-const OUTPUT_PATH = '.';
-// location of content files
-const SOURCE_PATH = 'content/en';
-// heading levels to include in the per-page TOC
-const TOC_HEADINGS = ['h2, h3'];
-// location of Swig views
-const VIEW_PATH = path.join(__dirname, 'views');
-
-const knownCliOptions = {
-    string: 'port',
-    default: {
-        port: '7878'
-    }
-};
-const cliOptions = minimist(process.argv.slice(2), knownCliOptions);
-const swigOptions = {
-    basepath: VIEW_PATH,
-    locals: require('./lib/locals')
-};
-const swigViews = {
-    index: 'index.swig',
-    page: 'page.swig',
-    redirect: 'redirect.swig'
-};
-
-// for debugging, because `console` isn't available during a Metalsmith run
-global.log = (...args) => {
-    console.warn.apply(null, args);
-};
-
-function markedFactory() {
-    const renderer = new marked.Renderer();
-
-    renderer.code = (code, language) => {
-        language = language ? (' lang-' + language) : '';
-
-        return `<pre class="prettyprint${language}"><code>${code}\n</code></pre>`;
-    };
-
-    renderer.paragraph = text => {
-        // Swig tags aren't paragraphs
-        if (text.match(/^\s*\{%[^%]+%\}\s*$/)) {
-            return text;
-        }
-
-        return `<p>${text}</p>\n`;
-    };
-
-    return renderer;
-}
-
-exports.html = cb => new Metalsmith(__dirname)
-    // basic options
-    .clean(false)
-    .source(SOURCE_PATH)
-    .destination(OUTPUT_PATH)
-
-    // plugins
-    .use(plugins.removeFiles({
-        target: OUTPUT_PATH,
-        extensions: CLEANUP_EXTENSIONS
-    }))
-    .use(plugins.metadata({
-        destination: OUTPUT_PATH,
-        tocData: require('./data/toc.json')
-    }))
-    .use(markdown({
-        gfm: true,
-        renderer: markedFactory(),
-        smartypants: false,
-        tables: true
-    }))
-    .use(plugins.configureSwig(swigViews, swigOptions))
-    .use(headings({
-        // use a single jQuery selector so we get all the headings in order
-        selectors: [TOC_HEADINGS.join(', ')]
-    }))
-    .use(plugins.buildHeadingTree())
-    .use(plugins.addTemplateName())
-    .use(plugins.addJsdocTagMetadata())
-    .use(plugins.adjustMetadata())
-    .use(plugins.swig(swigOptions))
-    .use(plugins.buildRedirects(require('./data/redirects.json')))
-    .use(plugins.copyStaticFile({
-        source: path.join(require.resolve('code-prettify'), '..', '..', 'loader', 'prettify.js'),
-        destination: path.join(__dirname, 'scripts', 'prettify.js')
-    }))
-    /* eslint-disable camelcase */
-    .use(beautify({
-        css: false,
-        html: {
-            indent_char: ' ',
-            indent_size: 2,
-            // js-beautify ignores the value 0 because it's falsy
-            max_preserve_newlines: 0.1
-        },
-        js: false
-    }))
-
-    // go!
-    .build(cb);
-
-exports.server = () => {
-    connect.server({
-        port: cliOptions.port,
-        root: path.resolve(__dirname, OUTPUT_PATH)
-    });
-};
-
-exports.preview = gulp.series(exports.html, exports.server);
-
-exports.default = exports.html;
diff --git a/howto-amd-modules.html b/howto-amd-modules.html
deleted file mode 100644
index 284f413a..00000000
--- a/howto-amd-modules.html
+++ /dev/null
@@ -1,263 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to add JSDoc comments to AMD and RequireJS modules.">
-  <title>Use JSDoc: AMD Modules</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>AMD Modules</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#module-identifiers">Module identifiers</a>
-      </li>
-      <li>
-        <a href="#function-that-returns-an-object-literal">Function that returns an object literal</a>
-      </li>
-      <li>
-        <a href="#function-that-returns-another-function">Function that returns another function</a>
-      </li>
-      <li>
-        <a href="#module-declared-in-a-return-statement">Module declared in a return statement</a>
-      </li>
-      <li>
-        <a href="#module-object-passed-to-a-function">Module object passed to a function</a>
-      </li>
-      <li>
-        <a href="#multiple-modules-defined-in-one-file">Multiple modules defined in one file</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>JSDoc 3 makes it possible to document modules that use the <a href="https://github.com/amdjs/amdjs-api/blob/master/AMD.md">Asynchronous Module Definition
-        (AMD)
-        API</a>, which is implemented by libraries such as <a href="http://requirejs.org/">RequireJS</a>. This page explains
-      how to document an AMD module for JSDoc, based on the coding conventions that your module uses.</p>
-    <p>If you&#39;re documenting CommonJS or Node.js modules, see <a href="howto-commonjs-modules.html">CommonJS Modules</a> for
-      instructions.</p>
-    <h2 id="module-identifiers">Module identifiers</h2>
-    <p>When you document an AMD module, you&#39;ll use an <a href="tags-exports.html"><code>@exports</code> tag</a> or
-      <a href="tags-module.html"><code>@module</code> tag</a> to document the identifier that&#39;s passed to the <code>require()</code> function.
-      For example, if users load the module by calling <code>require(&#39;my/shirt&#39;, /* callback */)</code>, you&#39;ll write
-      a JSDoc comment that contains the tag <code>@exports my/shirt</code> or <code>@module my/shirt</code>. The examples below
-      can help you decide which of these tags to use.</p>
-    <p>If you use the <code>@exports</code> or <code>@module</code> tag without a value, JSDoc will try to guess the correct
-      module identifier based on the filepath.</p>
-    <p>When you use a JSDoc <a href="about-namepaths.html">namepath</a> to refer to a module from another JSDoc comment, you must
-      add the prefix <code>module:</code>. For example, if you want the documentation for the module <code>my/pants</code> to
-      link to the module <code>my/shirt</code>, you could use the <a href="tags-see.html"><code>@see</code> tag</a> to document <code>my/pants</code> as
-      follows:</p>
-    <pre class="prettyprint lang-js"><code>/**
- * Pants module.
- * @module my/pants
- * @see module:my/shirt
- */
-</code></pre>
-    <p>Similarly, the namepath for each member of the module will start with <code>module:</code>, followed by the
-      module name. For example, if your <code>my/pants</code> module exports a <code>Jeans</code> constructor, and <code>Jeans</code> has
-      an instance method named <code>hem</code>, the instance method&#39;s longname is <code>module:my/pants.Jeans#hem</code>.</p>
-    <h2 id="function-that-returns-an-object-literal">Function that returns an object literal</h2>
-    <p>If you define your AMD module as a function that returns an object literal, use the
-      <a href="tags-exports.html"><code>@exports</code> tag</a> to document the module&#39;s name. JSDoc will automatically detect that
-      the object&#39;s properties are members of the module.</p>
-    <figure>
-      <figcaption>Function that returns an object literal</figcaption>
-      <pre class="prettyprint lang-js"><code>define('my/shirt', function() {
-   /**
-    * A module representing a shirt.
-    * @exports my/shirt
-    */
-    var shirt = {
-        /** The module's `color` property. */
-        color: 'black',
-
-        /**
-         * Create a new Turtleneck.
-         * @class
-         * @param {string} size - The size (`XS`, `S`, `M`, `L`, `XL`, or `XXL`).
-         */
-        Turtleneck: function(size) {
-            /** The class's `size` property. */
-            this.size = size;
-        }
-    };
-
-    return shirt;
-});
-</code></pre>
-    </figure>
-    <h2 id="function-that-returns-another-function">Function that returns another function</h2>
-    <p>If you define your module as a function that exports another function, such as a constructor, you
-      can use a standalone comment with a <a href="tags-module.html"><code>@module</code> tag</a> to document the module. You can then
-      use an <a href="tags-alias.html"><code>@alias</code> tag</a> to tell JSDoc that the function uses the same longname as the
-      module.</p>
-    <figure>
-      <figcaption>Function that returns a constructor</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A module representing a jacket.
- * @module my/jacket
- */
-define('my/jacket', function() {
-    /**
-     * Create a new jacket.
-     * @class
-     * @alias module:my/jacket
-     */
-    var Jacket = function() {
-        // ...
-    };
-
-    /** Zip up the jacket. */
-    Jacket.prototype.zip = function() {
-        // ...
-    };
-
-    return Jacket;
-});
-</code></pre>
-    </figure>
-    <h2 id="module-declared-in-a-return-statement">Module declared in a return statement</h2>
-    <p>If you declare your module object in a function&#39;s <code>return</code> statement, you can use a standalone
-      comment with a <a href="tags-module.html"><code>@module</code> tag</a> to document the module. You can then add an
-      <a href="tags-alias.html"><code>@alias</code> tag</a> to tell JSDoc that the module object has the same longname as the module.</p>
-    <figure>
-      <figcaption>Module declared in a return statement</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Module representing a shirt.
- * @module my/shirt
- */
-
-define('my/shirt', function() {
-    // Do setup work here.
-
-    return /** @alias module:my/shirt */ {
-        /** Color. */
-        color: 'black',
-        /** Size. */
-        size: 'unisize'
-    };
-});
-</code></pre>
-    </figure>
-    <h2 id="module-object-passed-to-a-function">Module object passed to a function</h2>
-    <p>If the module object is passed into the function that defines your module, you can document the
-      module by adding an <a href="tags-exports.html"><code>@exports</code> tag</a> to the function parameter. This pattern is
-      supported in JSDoc 3.3.0 and later.</p>
-    <figure>
-      <figcaption>Module object passed to a function</figcaption>
-      <pre class="prettyprint lang-js"><code>define('my/jacket', function(
-    /**
-     * Utility functions for jackets.
-     * @exports my/jacket
-     */
-    module) {
-
-    /**
-     * Zip up a jacket.
-     * @param {Jacket} jacket - The jacket to zip up.
-     */
-    module.zip = function(jacket) {
-        // ...
-    };
-});
-</code></pre>
-    </figure>
-    <h2 id="multiple-modules-defined-in-one-file">Multiple modules defined in one file</h2>
-    <p>If you define more than one AMD module in a single JavaScript file, use the
-      <a href="tags-exports.html"><code>@exports</code> tag</a> to document each module object.</p>
-    <figure>
-      <figcaption>Multiple AMD modules defined in one file</figcaption>
-      <pre class="prettyprint lang-js"><code>// one module
-define('html/utils', function() {
-    /**
-     * Utility functions to ease working with DOM elements.
-     * @exports html/utils
-     */
-    var utils = {
-        /**
-         * Get the value of a property on an element.
-         * @param {HTMLElement} element - The element.
-         * @param {string} propertyName - The name of the property.
-         * @return {*} The value of the property.
-         */
-        getStyleProperty: function(element, propertyName) { }
-    };
-
-    /**
-     * Determine if an element is in the document head.
-     * @param {HTMLElement} element - The element.
-     * @return {boolean} Set to `true` if the element is in the document head,
-     * `false` otherwise.
-     */
-    utils.isInHead = function(element) { }
-
-    return utils;
-    }
-);
-
-// another module
-define('tag', function() {
-    /** @exports tag */
-    var tag = {
-        /**
-         * Create a new Tag.
-         * @class
-         * @param {string} tagName - The name of the tag.
-         */
-        Tag: function(tagName) {
-            // ...
-        }
-    };
-
-    return tag;
-});
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-namepaths.html">Using namepaths with JSDoc 3</a>
-      </li>
-      <li>
-        <a href="tags-exports.html">@exports</a>
-      </li>
-      <li>
-        <a href="tags-module.html">@module</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/howto-commonjs-modules.html b/howto-commonjs-modules.html
deleted file mode 100644
index 0ae3b70b..00000000
--- a/howto-commonjs-modules.html
+++ /dev/null
@@ -1,361 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to add JSDoc comments to CommonJS and Node.js modules.">
-  <title>Use JSDoc: CommonJS Modules</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>CommonJS Modules</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#module-identifiers">Module identifiers</a>
-      </li>
-      <li>
-        <a href="#properties-of-the-exports-object">Properties of the &#39;exports&#39; object</a>
-      </li>
-      <li>
-        <a href="#values-assigned-to-local-variables">Values assigned to local variables</a>
-      </li>
-      <li>
-        <a href="#values-assigned-to-moduleexports">Values assigned to &#39;module.exports&#39;</a>
-        <ul>
-          <li>
-            <a href="#object-literal-assigned-to-moduleexports">Object literal assigned to &#39;module.exports&#39;</a>
-          </li>
-          <li>
-            <a href="#function-assigned-to-moduleexports">Function assigned to &#39;module.exports&#39;</a>
-          </li>
-          <li>
-            <a href="#string-number-or-boolean-assigned-to-moduleexports">String, number, or boolean assigned to &#39;module.exports&#39;</a>
-          </li>
-        </ul>
-      </li>
-      <li>
-        <a href="#values-assigned-to-moduleexports-and-local-variables">Values assigned to &#39;module.exports&#39; and local variables</a>
-      </li>
-      <li>
-        <a href="#properties-added-to-this">Properties added to &#39;this&#39;</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>To help you document <a href="http://wiki.commonjs.org/wiki/Modules/1.1">CommonJS modules</a>, JSDoc 3 understands many of the
-      conventions used in the CommonJS specification (for example, adding properties to the <code>exports</code>
-      object). In addition, JSDoc recognizes the conventions of <a href="http://nodejs.org/api/modules.html">Node.js modules</a>, which
-      extend the CommonJS standard (for example, assigning a value to <code>module.exports</code>). Depending on the
-      coding conventions you follow, you may need to provide some additional tags to help JSDoc understand
-      your code.</p>
-    <p>This page explains how to document CommonJS and Node.js modules that use several different coding
-      conventions. If you&#39;re documenting Asynchronous Module Definition (AMD) modules (also
-      known as &quot;RequireJS modules&quot;), see <a href="howto-amd-modules.html">AMD Modules</a>.</p>
-    <h2 id="module-identifiers">Module identifiers</h2>
-    <p>In most cases, your CommonJS or Node.js module should include a standalone JSDoc comment that
-      contains a <a href="tags-module.html"><code>@module</code> tag</a>. The <code>@module</code> tag&#39;s value should be the module identifier
-      that&#39;s passed to the <code>require()</code> function. For example, if users load the module by calling
-      <code>require(&#39;my/shirt&#39;)</code>, your JSDoc comment would contain the tag <code>@module my/shirt</code>.</p>
-    <p>If you use the <code>@module</code> tag without a value, JSDoc will try to guess the correct module identifier
-      based on the filepath.</p>
-    <p>When you use a JSDoc <a href="about-namepaths.html">namepath</a> to refer to a module from another JSDoc comment, you must
-      add the prefix <code>module:</code>. For example, if you want the documentation for the module <code>my/pants</code> to
-      link to the module <code>my/shirt</code>, you could use the <a href="tags-see.html"><code>@see</code> tag</a> to document <code>my/pants</code> as
-      follows:</p>
-    <pre class="prettyprint lang-js"><code>/**
- * Pants module.
- * @module my/pants
- * @see module:my/shirt
- */
-</code></pre>
-    <p>Similarly, the namepath for each member of the module will start with <code>module:</code>, followed by the
-      module name. For example, if your <code>my/pants</code> module exports a <code>Jeans</code> constructor, and <code>Jeans</code> has
-      an instance method named <code>hem</code>, the instance method&#39;s longname is <code>module:my/pants.Jeans#hem</code>.</p>
-    <h2 id="properties-of-the-exports-object">Properties of the &#39;exports&#39; object</h2>
-    <p>It&#39;s easiest to document symbols that are directly assigned to a property of the <code>exports</code> object.
-      JSDoc will automatically recognize that the module exports these symbols.</p>
-    <p>In the following example, the <code>my/shirt</code> module exports the methods <code>button</code> and <code>unbutton</code>. JSDoc
-      will automatically detect that the module exports these methods.</p>
-    <figure>
-      <figcaption>Methods added to the exports object</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Shirt module.
- * @module my/shirt
- */
-
-/** Button the shirt. */
-exports.button = function() {
-    // ...
-};
-
-/** Unbutton the shirt. */
-exports.unbutton = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p><a name="local-vars"></a></p>
-    <h2 id="values-assigned-to-local-variables">Values assigned to local variables</h2>
-    <p>In some cases, an exported symbol may be assigned to a local variable before it&#39;s added to the
-      <code>exports</code> object. For example, if your module exports a <code>wash</code> method, and the module itself often
-      calls the <code>wash</code> method, you might write the module as follows:</p>
-    <figure>
-      <figcaption>Method assigned to a local variable and added to the exports object</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Shirt module.
- * @module my/shirt
- */
-
-/** Wash the shirt. */
-var wash = exports.wash = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>In this case, JSDoc will <em>not</em> automatically document <code>wash</code> as an exported method, because the
-      JSDoc comment appears immediately before the local variable <code>wash</code> rather than <code>exports.wash</code>. One
-      solution is to add an <a href="tags-alias.html"><code>@alias</code> tag</a> that defines the correct longname for the method. In
-      this case, the method is a static member of the module <code>my/shirt</code>, so the correct longname is
-      <code>module:my/shirt.wash</code>:</p>
-    <figure>
-      <figcaption>Longname defined in an @alias tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Shirt module.
- * @module my/shirt
- */
-
-/**
- * Wash the shirt.
- * @alias module:my/shirt.wash
- */
-var wash = exports.wash = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>Another solution is to move the method&#39;s JSDoc comment so it comes immediately before
-      <code>exports.wash</code>. This change allows JSDoc to detect that <code>wash</code> is exported by the module <code>my/shirt</code>:</p>
-    <figure>
-      <figcaption>JSDoc comment immediately before exports.wash</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Shirt module.
- * @module my/shirt
- */
-
-var wash =
-/** Wash the shirt. */
-exports.wash = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="values-assigned-to-moduleexports">Values assigned to &#39;module.exports&#39;</h2>
-    <p>In a Node.js module, you can assign a value directly to <code>module.exports</code>. This section explains how
-      to document different types of values when they are assigned to <code>module.exports</code>.</p>
-    <h3 id="object-literal-assigned-to-moduleexports">Object literal assigned to &#39;module.exports&#39;</h3>
-    <p>If a module assigns an object literal to <code>module.exports</code>. JSDoc automatically recognizes that the
-      module exports only this value. In addition, JSDoc automatically sets the correct longname for each
-      property:</p>
-    <figure>
-      <figcaption>Object literal assigned to module.exports</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Color mixer.
- * @module color/mixer
- */
-
-module.exports = {
-    /**
-     * Blend two colors together.
-     * @param {string} color1 - The first color, in hexadecimal format.
-     * @param {string} color2 - The second color, in hexadecimal format.
-     * @return {string} The blended color.
-     */
-    blend: function(color1, color2) {
-        // ...
-    },
-
-    /**
-     * Darken a color by the given percentage.
-     * @param {string} color - The color, in hexadecimal format.
-     * @param {number} percent - The percentage, ranging from 0 to 100.
-     * @return {string} The darkened color.
-     */
-    darken: function(color, percent) {
-        // ..
-    }
-};
-</code></pre>
-    </figure>
-    <p>You can also use this pattern if you add properties to <code>module.exports</code> outside of the object
-      literal:</p>
-    <figure>
-      <figcaption>Assignment to module.exports followed by property definition</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Color mixer.
- * @module color/mixer
- */
-
-module.exports = {
-    /**
-     * Blend two colors together.
-     * @param {string} color1 - The first color, in hexadecimal format.
-     * @param {string} color2 - The second color, in hexadecimal format.
-     * @return {string} The blended color.
-     */
-    blend: function(color1, color2) {
-        // ...
-    }
-};
-
-/**
- * Darken a color by the given percentage.
- * @param {string} color - The color, in hexadecimal format.
- * @param {number} percent - The percentage, ranging from 0 to 100.
- * @return {string} The darkened color.
- */
-module.exports.darken = function(color, percent) {
-    // ..
-};
-</code></pre>
-    </figure>
-    <h3 id="function-assigned-to-moduleexports">Function assigned to &#39;module.exports&#39;</h3>
-    <p>If you assign a function to <code>module.exports</code>, JSDoc will automatically set the correct longname for
-      the function:</p>
-    <figure>
-      <figcaption>Function assigned to &#39;module.exports&#39;</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Color mixer.
- * @module color/mixer
- */
-
-/**
- * Blend two colors together.
- * @param {string} color1 - The first color, in hexadecimal format.
- * @param {string} color2 - The second color, in hexadecimal format.
- * @return {string} The blended color.
- */
-module.exports = function(color1, color2) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>The same pattern works for constructor functions:</p>
-    <figure>
-      <figcaption>Constructor assigned to &#39;module.exports&#39;</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Color mixer.
- * @module color/mixer
- */
-
-/** Create a color mixer. */
-module.exports = function ColorMixer() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h3 id="string-number-or-boolean-assigned-to-moduleexports">String, number, or boolean assigned to &#39;module.exports&#39;</h3>
-    <p>For value types (strings, numbers, and booleans) assigned to <code>module.exports</code>, you must document the
-      exported value&#39;s type by using the <a href="tags-type.html"><code>@type</code> tag</a> in the same JSDoc comment as the
-      <code>@module</code> tag:</p>
-    <figure>
-      <figcaption>String assigned to module.exports</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Module representing the word of the day.
- * @module wotd
- * @type {string}
- */
-
-module.exports = 'perniciousness';
-</code></pre>
-    </figure>
-    <h2 id="values-assigned-to-moduleexports-and-local-variables">Values assigned to &#39;module.exports&#39; and local variables</h2>
-    <p>If your module exports symbols that are not directly assigned to <code>module.exports</code>, you can use the
-      <a href="tags-exports.html"><code>@exports</code> tag</a> in place of the <code>@module</code> tag. The <code>@exports</code> tag tells JSDoc that a
-      symbol represents the value exported by a module.</p>
-    <figure>
-      <figcaption>Object literal assigned to a local variable and module.exports</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Color mixer.
- * @exports color/mixer
- */
-var mixer = module.exports = {
-    /**
-     * Blend two colors together.
-     * @param {string} color1 - The first color, in hexadecimal format.
-     * @param {string} color2 - The second color, in hexadecimal format.
-     * @return {string} The blended color.
-     */
-    blend: function(color1, color2) {
-        // ...
-    }
-};
-
-</code></pre>
-    </figure>
-    <h2 id="properties-added-to-this">Properties added to &#39;this&#39;</h2>
-    <p>When a module adds a property to its <code>this</code> object, JSDoc 3 automatically recognizes that the new
-      property is exported by the module:</p>
-    <figure>
-      <figcaption>Properties added to a module&#39;s &#39;this&#39; object</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Module for bookshelf-related utilities.
- * @module bookshelf
- */
-
-/**
- * Create a new Book.
- * @class
- * @param {string} title - The title of the book.
- */
-this.Book = function(title) {
-    /** The title of the book. */
-    this.title = title;
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-namepaths.html">Using namepaths with JSDoc 3</a>
-      </li>
-      <li>
-        <a href="tags-exports.html">@exports</a>
-      </li>
-      <li>
-        <a href="tags-module.html">@module</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/howto-es2015-classes.html b/howto-es2015-classes.html
deleted file mode 100644
index e5d026a8..00000000
--- a/howto-es2015-classes.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to add JSDoc comments to ECMAScript 2015 classes.">
-  <title>Use JSDoc: ES 2015 Classes</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>ES 2015 Classes</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#documenting-a-simple-class">Documenting a simple class</a>
-      </li>
-      <li>
-        <a href="#extending-classes">Extending classes</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <p>JSDoc 3 makes it easy to document classes that follow the <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions">ECMAScript 2015
-        specification</a>. You don&#39;t need to use tags such as <code>@class</code> and <code>@constructor</code> with
-      ES 2015 classes—JSDoc automatically identifies classes and their constructors simply by parsing your
-      code. ES 2015 classes are supported in JSDoc 3.4.0 and later.</p>
-    <h2 id="documenting-a-simple-class">Documenting a simple class</h2>
-    <p>The following example shows how to document a simple class with a constructor, two instance methods,
-      and one static method:</p>
-    <figure>
-      <figcaption>Simple ES 2015 class</figcaption>
-      <pre class="prettyprint lang-js"><code>/** Class representing a point. */
-class Point {
-    /**
-     * Create a point.
-     * @param {number} x - The x value.
-     * @param {number} y - The y value.
-     */
-    constructor(x, y) {
-        // ...
-    }
-
-    /**
-     * Get the x value.
-     * @return {number} The x value.
-     */
-    getX() {
-        // ...
-    }
-
-    /**
-     * Get the y value.
-     * @return {number} The y value.
-     */
-    getY() {
-        // ...
-    }
-
-    /**
-     * Convert a string containing two comma-separated numbers into a point.
-     * @param {string} str - The string containing two comma-separated numbers.
-     * @return {Point} A Point object.
-     */
-    static fromString(str) {
-        // ...
-    }
-}
-</code></pre>
-    </figure>
-    <p>You can also document classes that are defined in a class expression, which assigns the class to a
-      variable or constant:</p>
-    <figure>
-      <figcaption>ES 2015 class expression</figcaption>
-      <pre class="prettyprint lang-js"><code>/** Class representing a point. */
-const Point = class {
-    // and so on
-}
-</code></pre>
-    </figure>
-    <h2 id="extending-classes">Extending classes</h2>
-    <p>When you use the <code>extends</code> keyword to extend an existing class, you also need to tell JSDoc which
-      class you&#39;re extending. You do this with the <a href="tags-augments.html"><code>@augments</code> (or <code>@extends</code>) tag</a>.</p>
-    <p>For example, to extend the <code>Point</code> class shown above:</p>
-    <figure>
-      <figcaption>Extending an ES 2015 class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Class representing a dot.
- * @extends Point
- */
-class Dot extends Point {
-    /**
-     * Create a dot.
-     * @param {number} x - The x value.
-     * @param {number} y - The y value.
-     * @param {number} width - The width of the dot, in pixels.
-     */
-    constructor(x, y, width) {
-        // ...
-    }
-
-    /**
-     * Get the dot's width.
-     * @return {number} The dot's width, in pixels.
-     */
-    getWidth() {
-        // ...
-    }
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-augments.html">@augments</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/howto-es2015-modules.html b/howto-es2015-modules.html
deleted file mode 100644
index d296675d..00000000
--- a/howto-es2015-modules.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="How to add JSDoc comments to ECMAScript 2015 modules.">
-  <title>Use JSDoc: ES 2015 Modules</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>ES 2015 Modules</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#module-identifiers">Module identifiers</a>
-      </li>
-      <li>
-        <a href="#exported-values">Exported values</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <p>JSDoc 3 makes it possible to document modules that follow the <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-modules">ECMAScript 2015
-        specification</a>. ES 2015 modules are supported in JSDoc 3.4.0 and later.</p>
-    <h2 id="module-identifiers">Module identifiers</h2>
-    <p>When you document an ES 2015 module, you&#39;ll use a <a href="tags-module.html"><code>@module</code> tag</a> to document the
-      identifier for the module. For example, if users load the module by calling <code>import * as myShirt
-        from &#39;my/shirt&#39;</code>, you&#39;ll write a JSDoc comment that contains the tag <code>@module my/shirt</code>.</p>
-    <p>If you use the <code>@module</code> tag without a value, JSDoc will try to guess the correct module identifier
-      based on the filepath.</p>
-    <p>When you use a JSDoc <a href="about-namepaths.html">namepath</a> to refer to a module from another JSDoc comment, you must
-      add the prefix <code>module:</code>. For example, if you want the documentation for the module <code>my/pants</code> to
-      link to the module <code>my/shirt</code>, you could use the <a href="tags-see.html"><code>@see</code> tag</a> to document <code>my/pants</code> as
-      follows:</p>
-    <pre class="prettyprint lang-js"><code>/**
- * Pants module.
- * @module my/pants
- * @see module:my/shirt
- */
-</code></pre>
-    <p>Similarly, the namepath for each member of the module will start with <code>module:</code>, followed by the
-      module name. For example, if your <code>my/pants</code> module exports a <code>Jeans</code> class, and <code>Jeans</code> has an
-      instance method named <code>hem</code>, the instance method&#39;s longname is <code>module:my/pants.Jeans#hem</code>.</p>
-    <h2 id="exported-values">Exported values</h2>
-    <p>The following example shows how to document different kinds of exported values in an ES 2015 module.
-      In most cases, you can simply add a JSDoc comment to the <code>export</code> statement that defines the
-      exported value. If you are exporting a value under another name, you can document the exported value
-      within its <code>export</code> block.</p>
-    <figure>
-      <figcaption>Documenting values exported by a module</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @module color/mixer */
-
-/** The name of the module. */
-export const name = 'mixer';
-
-/** The most recent blended color. */
-export var lastColor = null;
-
-/**
- * Blend two colors together.
- * @param {string} color1 - The first color, in hexadecimal format.
- * @param {string} color2 - The second color, in hexadecimal format.
- * @return {string} The blended color.
- */
-export function blend(color1, color2) {}
-
-// convert color to array of RGB values (0-255)
-function rgbify(color) {}
-
-export {
-    /**
-     * Get the red, green, and blue values of a color.
-     * @function
-     * @param {string} color - A color, in hexadecimal format.
-     * @returns {Array.&lt;number>} An array of the red, green, and blue values,
-     * each ranging from 0 to 255.
-     */
-    rgbify as toRgb
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-namepaths.html">Using namepaths with JSDoc 3</a>
-      </li>
-      <li>
-        <a href="tags-module.html">@module</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/index.html b/index.html
deleted file mode 100644
index ef079617..00000000
--- a/index.html
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Official documentation for JSDoc 3.">
-  <title>Use JSDoc: Index</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Index</h1>
-    <h2>Getting Started</h2>
-    <dl>
-      <dt><a href="about-getting-started.html">Getting Started with JSDoc 3</a></dt>
-      <dd>A quick-start to documenting JavaScript with JSDoc.</dd>
-      <dt><a href="about-namepaths.html">Using namepaths with JSDoc 3</a></dt>
-      <dd>A guide to using namepaths with JSDoc 3.</dd>
-      <dt><a href="about-commandline.html">Command-line arguments to JSDoc</a></dt>
-      <dd>About command-line arguments to JSDoc.</dd>
-      <dt><a href="about-configuring-jsdoc.html">Configuring JSDoc with a configuration file</a></dt>
-      <dd>How to configure JSDoc using a configuration file.</dd>
-      <dt><a href="about-configuring-default-template.html">Configuring JSDoc&#39;s default template</a></dt>
-      <dd>How to configure the output from JSDoc&#39;s default template.</dd>
-      <dt><a href="about-block-inline-tags.html">Block and inline tags</a></dt>
-      <dd>Overview of block and inline JSDoc tags.</dd>
-      <dt><a href="about-plugins.html">About JSDoc plugins</a></dt>
-      <dd>How to create and use JSDoc plugins.</dd>
-      <dt><a href="plugins-markdown.html">Using the Markdown plugin</a></dt>
-      <dd>Enable Markdown support in JSDoc.</dd>
-      <dt><a href="about-tutorials.html">Tutorials</a></dt>
-      <dd>Adding tutorials to your API documentation.</dd>
-      <dt><a href="about-including-package.html">Including a Package File</a></dt>
-      <dd>How to show package details in your documentation.</dd>
-      <dt><a href="about-including-readme.html">Including a README File</a></dt>
-      <dd>How to include a README file in your documentation.</dd>
-      <dt><a href="about-license-jsdoc3.html">License</a></dt>
-      <dd>License information for JSDoc 3.</dd>
-    </dl>
-    <h2>JSDoc Examples</h2>
-    <dl>
-      <dt><a href="howto-es2015-classes.html">ES 2015 Classes</a></dt>
-      <dd>How to add JSDoc comments to ECMAScript 2015 classes.</dd>
-      <dt><a href="howto-es2015-modules.html">ES 2015 Modules</a></dt>
-      <dd>How to add JSDoc comments to ECMAScript 2015 modules.</dd>
-      <dt><a href="howto-commonjs-modules.html">CommonJS Modules</a></dt>
-      <dd>How to add JSDoc comments to CommonJS and Node.js modules.</dd>
-      <dt><a href="howto-amd-modules.html">AMD Modules</a></dt>
-      <dd>How to add JSDoc comments to AMD and RequireJS modules.</dd>
-    </dl>
-    <h2 id="block-tags">Block Tags</h2>
-    <dl>
-      <dt><a href="tags-abstract.html">@abstract</a> (synonyms: @virtual)</dt>
-      <dd>This member must be implemented (or overridden) by the inheritor.</dd>
-      <dt><a href="tags-access.html">@access</a></dt>
-      <dd>Specify the access level of this member (private, package-private, public, or protected).</dd>
-      <dt><a href="tags-alias.html">@alias</a></dt>
-      <dd>Treat a member as if it had a different name.</dd>
-      <dt><a href="tags-async.html">@async</a></dt>
-      <dd>Indicate that a function is asynchronous.</dd>
-      <dt><a href="tags-augments.html">@augments</a> (synonyms: @extends)</dt>
-      <dd>Indicate that a symbol inherits from, and adds to, a parent symbol.</dd>
-      <dt><a href="tags-author.html">@author</a></dt>
-      <dd>Identify the author of an item.</dd>
-      <dt><a href="tags-borrows.html">@borrows</a></dt>
-      <dd>This object uses something from another object.</dd>
-      <dt><a href="tags-callback.html">@callback</a></dt>
-      <dd>Document a callback function.</dd>
-      <dt><a href="tags-class.html">@class</a> (synonyms: @constructor)</dt>
-      <dd>This function is intended to be called with the &quot;new&quot; keyword.</dd>
-      <dt><a href="tags-classdesc.html">@classdesc</a></dt>
-      <dd>Use the following text to describe the entire class.</dd>
-      <dt><a href="tags-constant.html">@constant</a> (synonyms: @const)</dt>
-      <dd>Document an object as a constant.</dd>
-      <dt><a href="tags-constructs.html">@constructs</a></dt>
-      <dd>This function member will be the constructor for the previous class.</dd>
-      <dt><a href="tags-copyright.html">@copyright</a></dt>
-      <dd>Document some copyright information.</dd>
-      <dt><a href="tags-default.html">@default</a> (synonyms: @defaultvalue)</dt>
-      <dd>Document the default value.</dd>
-      <dt><a href="tags-deprecated.html">@deprecated</a></dt>
-      <dd>Document that this is no longer the preferred way.</dd>
-      <dt><a href="tags-description.html">@description</a> (synonyms: @desc)</dt>
-      <dd>Describe a symbol.</dd>
-      <dt><a href="tags-enum.html">@enum</a></dt>
-      <dd>Document a collection of related properties.</dd>
-      <dt><a href="tags-event.html">@event</a></dt>
-      <dd>Document an event.</dd>
-      <dt><a href="tags-example.html">@example</a></dt>
-      <dd>Provide an example of how to use a documented item.</dd>
-      <dt><a href="tags-exports.html">@exports</a></dt>
-      <dd>Identify the member that is exported by a JavaScript module.</dd>
-      <dt><a href="tags-external.html">@external</a> (synonyms: @host)</dt>
-      <dd>Identifies an external class, namespace, or module.</dd>
-      <dt><a href="tags-file.html">@file</a> (synonyms: @fileoverview, @overview)</dt>
-      <dd>Describe a file.</dd>
-      <dt><a href="tags-fires.html">@fires</a> (synonyms: @emits)</dt>
-      <dd>Describe the events this method may fire.</dd>
-      <dt><a href="tags-function.html">@function</a> (synonyms: @func, @method)</dt>
-      <dd>Describe a function or method.</dd>
-      <dt><a href="tags-generator.html">@generator</a></dt>
-      <dd>Indicate that a function is a generator function.</dd>
-      <dt><a href="tags-global.html">@global</a></dt>
-      <dd>Document a global object.</dd>
-      <dt><a href="tags-hideconstructor.html">@hideconstructor</a></dt>
-      <dd>Indicate that the constructor should not be displayed.</dd>
-      <dt><a href="tags-ignore.html">@ignore</a></dt>
-      <dd>Omit a symbol from the documentation.</dd>
-      <dt><a href="tags-implements.html">@implements</a></dt>
-      <dd>This symbol implements an interface.</dd>
-      <dt><a href="tags-inheritdoc.html">@inheritdoc</a></dt>
-      <dd>Indicate that a symbol should inherit its parent&#39;s documentation.</dd>
-      <dt><a href="tags-inner.html">@inner</a></dt>
-      <dd>Document an inner object.</dd>
-      <dt><a href="tags-instance.html">@instance</a></dt>
-      <dd>Document an instance member.</dd>
-      <dt><a href="tags-interface.html">@interface</a></dt>
-      <dd>This symbol is an interface that others can implement.</dd>
-      <dt><a href="tags-kind.html">@kind</a></dt>
-      <dd>What kind of symbol is this?</dd>
-      <dt><a href="tags-lends.html">@lends</a></dt>
-      <dd>Document properties on an object literal as if they belonged to a symbol with a given name.</dd>
-      <dt><a href="tags-license.html">@license</a></dt>
-      <dd>Identify the license that applies to this code.</dd>
-      <dt><a href="tags-listens.html">@listens</a></dt>
-      <dd>List the events that a symbol listens for.</dd>
-      <dt><a href="tags-member.html">@member</a> (synonyms: @var)</dt>
-      <dd>Document a member.</dd>
-      <dt><a href="tags-memberof.html">@memberof</a></dt>
-      <dd>This symbol belongs to a parent symbol.</dd>
-      <dt><a href="tags-mixes.html">@mixes</a></dt>
-      <dd>This object mixes in all the members from another object.</dd>
-      <dt><a href="tags-mixin.html">@mixin</a></dt>
-      <dd>Document a mixin object.</dd>
-      <dt><a href="tags-module.html">@module</a></dt>
-      <dd>Document a JavaScript module.</dd>
-      <dt><a href="tags-name.html">@name</a></dt>
-      <dd>Document the name of an object.</dd>
-      <dt><a href="tags-namespace.html">@namespace</a></dt>
-      <dd>Document a namespace object.</dd>
-      <dt><a href="tags-override.html">@override</a></dt>
-      <dd>Indicate that a symbol overrides its parent.</dd>
-      <dt><a href="tags-package.html">@package</a></dt>
-      <dd>This symbol is meant to be package-private.</dd>
-      <dt><a href="tags-param.html">@param</a> (synonyms: @arg, @argument)</dt>
-      <dd>Document the parameter to a function.</dd>
-      <dt><a href="tags-private.html">@private</a></dt>
-      <dd>This symbol is meant to be private.</dd>
-      <dt><a href="tags-property.html">@property</a> (synonyms: @prop)</dt>
-      <dd>Document a property of an object.</dd>
-      <dt><a href="tags-protected.html">@protected</a></dt>
-      <dd>This symbol is meant to be protected.</dd>
-      <dt><a href="tags-public.html">@public</a></dt>
-      <dd>This symbol is meant to be public.</dd>
-      <dt><a href="tags-readonly.html">@readonly</a></dt>
-      <dd>This symbol is meant to be read-only.</dd>
-      <dt><a href="tags-requires.html">@requires</a></dt>
-      <dd>This file requires a JavaScript module.</dd>
-      <dt><a href="tags-returns.html">@returns</a> (synonyms: @return)</dt>
-      <dd>Document the return value of a function.</dd>
-      <dt><a href="tags-see.html">@see</a></dt>
-      <dd>Refer to some other documentation for more information.</dd>
-      <dt><a href="tags-since.html">@since</a></dt>
-      <dd>When was this feature added?</dd>
-      <dt><a href="tags-static.html">@static</a></dt>
-      <dd>Document a static member.</dd>
-      <dt><a href="tags-summary.html">@summary</a></dt>
-      <dd>A shorter version of the full description.</dd>
-      <dt><a href="tags-this.html">@this</a></dt>
-      <dd>What does the &#39;this&#39; keyword refer to here?</dd>
-      <dt><a href="tags-throws.html">@throws</a> (synonyms: @exception)</dt>
-      <dd>Describe what errors could be thrown.</dd>
-      <dt><a href="tags-todo.html">@todo</a></dt>
-      <dd>Document tasks to be completed.</dd>
-      <dt><a href="tags-tutorial.html">@tutorial</a></dt>
-      <dd>Insert a link to an included tutorial file.</dd>
-      <dt><a href="tags-type.html">@type</a></dt>
-      <dd>Document the type of an object.</dd>
-      <dt><a href="tags-typedef.html">@typedef</a></dt>
-      <dd>Document a custom type.</dd>
-      <dt><a href="tags-variation.html">@variation</a></dt>
-      <dd>Distinguish different objects with the same name.</dd>
-      <dt><a href="tags-version.html">@version</a></dt>
-      <dd>Documents the version number of an item.</dd>
-      <dt><a href="tags-yields.html">@yields</a> (synonyms: @yield)</dt>
-      <dd>Document the value yielded by a generator function.</dd>
-    </dl>
-    <h2 id="inline-tags">Inline Tags</h2>
-    <dl>
-      <dt><a href="tags-inline-link.html">{@link}</a> (synonyms: {@linkcode}, {@linkplain})</dt>
-      <dd>Link to another item in the documentation.</dd>
-      <dt><a href="tags-inline-tutorial.html">{@tutorial}</a></dt>
-      <dd>Link to a tutorial.</dd>
-    </dl>
-    <h2>Contribute</h2>
-    <dl>
-      <dt><a href="https://github.com/jsdoc3/jsdoc">JSDoc project on GitHub</a></dt>
-      <dd>Contribute to JSDoc.</dd>
-      <dt><a href="https://github.com/jsdoc3/jsdoc3.github.com">Use JSDoc project on GitHub</a></dt>
-      <dd>Contribute to the JSDoc documentation.</dd>
-    </dl>
-    <p>
-      <a href="https://github.com/jsdoc3/jsdoc" class="github-ribbon">Fork me on GitHub</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/lib/locals.js b/lib/locals.js
deleted file mode 100644
index 67525940..00000000
--- a/lib/locals.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Swig locals for generating the site.
-
-const hasOwnProp = Object.prototype.hasOwnProperty;
-
-function filenameForLink(link) {
-    return link.replace(/#.*$/, '');
-}
-
-// Use a filename to look up a page title. If the filename includes a fragment ID (for example,
-// foo.html#bar), the fragment ID will be stripped.
-exports.titleForFilename = (files, link) => {
-    link = filenameForLink(link);
-
-    if (!hasOwnProp.call(files, link)) {
-        return '';
-    }
-
-    return files[link].title;
-};
-
-// Use a filename to look up a description. If the filename includes a fragment ID (for example,
-// foo.html#bar), the fragment ID will be stripped.
-exports.descriptionForFilename = (files, link) => {
-    link = filenameForLink(link);
-
-    if (!hasOwnProp.call(files, link)) {
-        return '';
-    }
-
-    return files[link].description;
-};
-
-// Use a tag name to look up a filename.
-exports.filenameForTag = (metadata, tagName) => {
-    if (!hasOwnProp.call(metadata.tags, tagName)) {
-        return '';
-    }
-
-    return metadata.tags[tagName].filename;
-};
-
-function getTagObjects(metadata, key) {
-    const tags = [];
-
-    Object.keys(metadata[key]).sort().forEach(tagName => {
-        if (!metadata[key][tagName].isSynonym) {
-            tags.push(metadata[key][tagName]);
-        }
-    });
-
-    return tags;
-}
-
-// Retrieve a sorted array of objects representing the HTML files for JSDoc block tags.
-exports.getBlockTags = metadata => getTagObjects(metadata, 'tags');
-
-// Retrieve a sorted array of objects representing the HTML files for JSDoc inline tags.
-exports.getInlineTags = metadata => getTagObjects(metadata, 'inlineTags');
-
-// Check whether we should render the per-page table of contents.
-exports.renderPageToc = items => {
-    // Don't render a TOC if there are no headings, or if there's only one top-level heading with
-    // no children
-    if (items.length === 0 || (items.length === 1 && items[0].children.length === 0)) {
-        return false;
-    }
-
-    return true;
-};
diff --git a/lib/markdown.js b/lib/markdown.js
new file mode 100644
index 00000000..af3f17c2
--- /dev/null
+++ b/lib/markdown.js
@@ -0,0 +1,52 @@
+const hljs = require('highlight.js');
+const markdownIt = require('markdown-it');
+const mdiAnchor = require('markdown-it-anchor');
+const mdiAttrs = require('markdown-it-attrs');
+const mdiContainer = require('markdown-it-container');
+const mdiHighlight = require('markdown-it-highlightjs');
+
+const EXAMPLE_REGEXP = /^example(?:\s+(?:"(.+)"|'(.+)'|(.+)))?$/;
+
+function isOpenTag(token) {
+  return token.nesting === 1;
+}
+
+const createTags = (exports.createTags = (md) => {
+  return {
+    example: {
+      render: (tokens, idx) => {
+        const token = tokens[idx];
+        const matches = token.info.trim().match(EXAMPLE_REGEXP);
+
+        if (isOpenTag(token)) {
+          let caption = (matches[1] ?? matches[2] ?? matches[3])?.trim() ?? '';
+
+          if (caption) {
+            caption = `<figcaption>${md.utils.escapeHtml(caption)}</figcaption>`;
+          }
+
+          return `<figure>${caption}`;
+        } else {
+          return '</figure>';
+        }
+      },
+      validate: (params) => params.trim().match(EXAMPLE_REGEXP),
+    },
+  };
+});
+
+exports.renderer = () => {
+  const md = markdownIt({ html: true });
+  const tags = createTags(md);
+
+  Object.keys(tags).forEach((tagName) => {
+    md.use(mdiContainer, tagName, tags[tagName]);
+  });
+
+  // Must be added before `markdown-it-anchor`.
+  md.use(mdiAttrs);
+  md.use(mdiAnchor);
+  md.use(mdiHighlight, { hljs });
+
+  return md;
+};
diff --git a/lib/plugins.js b/lib/plugins.js
deleted file mode 100644
index 07b3e750..00000000
--- a/lib/plugins.js
+++ /dev/null
@@ -1,327 +0,0 @@
-/* eslint-disable arrow-body-style */
-// Metalsmith plugins for generating the site.
-
-const _ = require('lodash');
-const fs = require('fs-extra');
-const path = require('path');
-const swigModule = require('swig');
-const swigExtras = require('swig-extras');
-const tags = require('./tags');
-
-var swigViews = {};
-
-function nameToBlockTag(name) {
-    return '@' + name;
-}
-
-function nameToInlineTag(name) {
-    return '{@' + name + '}';
-}
-
-// Add the Swig template name to each file object.
-exports.addTemplateName = indexPage => {
-    indexPage = indexPage || 'index.html';
-
-    return (files, metalsmith, cb) => {
-        Object.keys(files).forEach(function(filename) {
-            const file = files[filename];
-
-            if (filename === indexPage) {
-                file.template = 'index';
-            } else {
-                file.template = 'page';
-            }
-        });
-
-        cb();
-    };
-};
-
-// Adjust the per-file metadata in preparation for generating output files.
-exports.adjustMetadata = () => {
-    return (files, metalsmith, cb) => {
-        Object.keys(files).forEach(filename => {
-            const file = files[filename];
-
-            // if there's a JSDoc tag name but no title, use the tag as the title
-            if (!file.title) {
-                if (file.tag) {
-                    file.title = nameToBlockTag(file.tag);
-                } else if (file.inlineTag) {
-                    file.title = nameToInlineTag(file.inlineTag);
-                }
-            }
-
-            // unescape the YAML data
-            ['title', 'description'].forEach(key => {
-                if (!file[key]) {
-                    global.log('The file "%s" is missing its "%s" metadata', filename, key);
-                } else {
-                    file[key] = file[key]
-                        .replace(/\\([@[\]])/g, '$1');
-                }
-            });
-        });
-
-        cb();
-    };
-};
-
-// Generate HTML redirect files.
-exports.buildRedirects = redirects => {
-    return (files, metalsmith, cb) => {
-        const metadata = metalsmith.metadata();
-        let rendered;
-
-        Object.keys(redirects).forEach(redirectArray => {
-            if (!Array.isArray(redirectArray)) {
-                redirectArray = [redirectArray];
-            }
-
-            redirectArray.forEach(redirect => {
-                const context = {
-                    target: redirects[redirect]
-                };
-
-                rendered = swigViews.redirect(context);
-                fs.writeFileSync(path.resolve(metadata.destination, redirect), rendered, 'utf8');
-            });
-        });
-
-        cb();
-    };
-};
-
-// Configure the global Swig instance.
-exports.configureSwig = (views, options) => {
-    return (files, metalsmith, cb) => {
-        swigModule.setDefaults(_.defaults({}, options, {
-            loader: swigModule.loaders.fs(options.basepath)
-        }));
-
-        Object.keys(tags).forEach(tagName => {
-            const tag = tags[tagName];
-
-            swigModule.setTag(tagName, tag.parse, tag.compile, tag.ends, tag.blockLevel);
-        });
-
-        swigExtras.useTag(swigModule, 'switch');
-        swigExtras.useTag(swigModule, 'case');
-
-        Object.keys(views).forEach(view => {
-            swigViews[view] = swigModule.compileFile(views[view]);
-        });
-
-        cb();
-    };
-};
-
-// Copy a static file to an output directory.
-exports.copyStaticFile = options => {
-    return (files, metalsmith, cb) => {
-        fs.copy(options.source, options.destination, err => cb(err));
-    };
-};
-
-// Add global metadata.
-exports.metadata = data => {
-    return (files, metalsmith, cb) => {
-        const mdata = metalsmith.metadata();
-
-        Object.keys(data).forEach(key => {
-            mdata[key] = data[key];
-        });
-
-        cb();
-    };
-};
-
-// Render content with the Swig template engine.
-exports.swig = options => {
-    return (files, metalsmith, cb) => {
-        let context;
-        let counter = 0;
-        let file;
-        let rendered;
-
-        Object.keys(files).forEach(filename => {
-            file = files[filename];
-            context = _.defaults({}, file, options.context, {
-                files: files,
-                metadata: metalsmith.metadata()
-            });
-            context.contents = String(context.contents);
-
-            // Process Swig tags in the content file. Force a unique filename to prevent
-            // incorrect caching.
-            context.contents = swigModule.render(context.contents, {
-                filename: path.join(options.basepath, ('dummy_' + counter++ + '.swig'))
-            });
-
-            // Render the entire page
-            rendered = swigViews[file.template](context);
-
-            // Replace the file's contents with the rendered output
-            file.contents = Buffer.from(rendered);
-        });
-
-        cb();
-    };
-};
-
-// Less destructive alternative to Metalsmith.clean().
-exports.removeFiles = options => {
-    // path.extname() returns the extension with a leading '.', so match that format
-    options.extensions = options.extensions.map(extension => {
-        if (extension.indexOf('.') !== 0) {
-            extension = '.' + extension;
-        }
-
-        return extension;
-    });
-
-    return (files, metalsmith, cb) => {
-        fs.readdir(options.target, (err, targetFiles) => {
-            if (err) {
-                cb(err);
-            } else {
-                targetFiles.forEach(file => {
-                    if (options.extensions.indexOf(path.extname(file)) !== -1) {
-                        fs.unlinkSync(path.join(options.target, file));
-                    }
-                });
-
-                cb();
-            }
-        });
-    };
-};
-
-// Convert array of heading objects into a tree.
-exports.buildHeadingTree = () => {
-    return (files, metalsmith, cb) => {
-        Object.keys(files).forEach(filename => {
-            const file = files[filename];
-            let fileHeadings;
-            const headings = [];
-            const levelStacks = {};
-            let topLevel;
-
-            function addToStack(level, heading) {
-                levelStacks[level] = levelStacks[level] || [];
-                levelStacks[level].push(heading);
-            }
-
-            // HACK: In the layout.swig view, we conditionally insert <h2> tags based on the file's
-            // metadata. But we have to build the heading tree before we process the Swig template!
-            // To work around this, insert the same headings that the template will insert.
-            fileHeadings = (function() {
-                let newHeadings = [];
-
-                if (file.synonyms) {
-                    newHeadings.push({
-                        id: 'synonyms',
-                        tag: 'h2',
-                        text: 'Synonyms'
-                    });
-                }
-
-                newHeadings = newHeadings.concat(file.headings);
-
-                if (file.related) {
-                    newHeadings.push({
-                        id: 'related-links',
-                        tag: 'h2',
-                        text: 'Related Links'
-                    });
-                }
-
-                return newHeadings.length ? newHeadings : null;
-            })();
-
-            if (!fileHeadings) {
-                return;
-            }
-
-            fileHeadings.forEach(heading => {
-                let stack;
-                const tagName = heading.tag;
-                const level = tagName.replace(/^h/, '');
-
-                heading.children = [];
-
-                if (!topLevel) {
-                    topLevel = level;
-                }
-
-                if (level === topLevel) {
-                    headings.push(heading);
-                } else {
-                    stack = levelStacks[level - 1];
-                    if (stack) {
-                        stack[stack.length - 1].children.push(heading);
-                    } else {
-                        console.warn(`The file ${filename} contains an incorrectly nested ` +
-                            `<${tagName}>, "${heading.text.replace(/(?:[\n\t]|\s{2,})/g, '')}"`);
-                    }
-                }
-
-                addToStack(level, heading);
-            });
-
-            file.headings = headings;
-        });
-
-        cb();
-    };
-};
-
-// Extract metadata from the docs for each JSDoc tag.
-exports.addJsdocTagMetadata = () => {
-    return (files, metalsmith, cb) => {
-        let key;
-        const metadata = metalsmith.metadata();
-        let synonyms;
-
-        metadata.tags = {};
-        metadata.inlineTags = {};
-
-        function addTagMetadata(tag, filename, isSynonym) {
-            metadata[key][tag] = {
-                filename: filename,
-                isSynonym: Boolean(isSynonym)
-            };
-        }
-
-        Object.keys(files).forEach(filename => {
-            const file = files[filename];
-
-            if (file.tag) {
-                key = 'tags';
-                addTagMetadata(file.tag, filename);
-            } else if (file.inlineTag) {
-                key = 'inlineTags';
-                addTagMetadata(file.inlineTag, filename);
-            }
-
-            if (file.synonyms) {
-                // Create fake files for each of the synonyms
-                file.synonyms.forEach(synonym => {
-                    addTagMetadata(synonym, filename, true);
-                });
-
-                // Mangle the synonym names based on the tag type
-                synonyms = file.synonyms.map(synonym => {
-                    if (key === 'inlineTags') {
-                        return nameToInlineTag(synonym);
-                    }
-
-                    return nameToBlockTag(synonym);
-                });
-                metadata[key][file.tag || file.inlineTag].synonyms = file.synonyms = synonyms;
-            }
-        });
-
-        cb();
-    };
-};
diff --git a/lib/tags.js b/lib/tags.js
deleted file mode 100644
index 3f0d88fa..00000000
--- a/lib/tags.js
+++ /dev/null
@@ -1,43 +0,0 @@
-exports.example = {
-    compile: (compiler, args, content, parents, options, blockName) => {
-        let caption = args.shift() || '';
-        const captionText = caption ?
-            caption.replace(/"?([^"]*)"?/, '$1') :
-            '';
-        const captionHtml = caption ?
-            `<figcaption>${captionText}</figcaption>` :
-            '';
-
-        return `_output += "<figure>${captionHtml}";\n` +
-            compiler(content, parents, options, blockName) +
-            '_output += "</figure>";\n';
-    },
-
-    parse: (str, line, parser, types) => {
-        function handleToken(token, out) {
-            if (out.length) {
-                throw new Error(`Unexpected token "${token.match}" on line ${line}.`);
-            }
-
-            out.push(token.match);
-
-            return true;
-        }
-
-        // handles unescaped quoted strings: {% example "foo" %}
-        parser.on(types.STRING, token => handleToken(token, parser.out));
-
-        // handles entitized quoted strings (caused by Markdown): {% example &quot;foo&quot; %}
-        // only the outer entities are converted.
-        parser.on(types.UNKNOWN, token => {
-            token.match = token.match.replace(/^&quot;/, '')
-                .replace(/&quot;$/, '');
-
-            return handleToken(token, parser.out);
-        });
-
-        return true;
-    },
-    ends: true,
-    blockLevel: false
-};
diff --git a/lib/yaml-load.js b/lib/yaml-load.js
new file mode 100644
index 00000000..64990a10
--- /dev/null
+++ b/lib/yaml-load.js
@@ -0,0 +1,9 @@
+const { readFileSync } = require('node:fs');
+
+const yaml = require('js-yaml');
+
+module.exports = (filepath) => {
+  const yamlData = readFileSync(filepath, 'utf8');
+
+  return yaml.load(yamlData);
+};
diff --git a/package-lock.json b/package-lock.json
index 217b6208..b0af52bf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,4191 +1,4579 @@
 {
   "name": "jsdoc.github.io",
   "version": "0.0.0",
-  "lockfileVersion": 1,
+  "lockfileVersion": 3,
   "requires": true,
-  "dependencies": {
-    "CSSselect": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/CSSselect/-/CSSselect-0.4.1.tgz",
-      "integrity": "sha1-+Kt+H4QYzmPNput713ioXX7EkrI=",
-      "requires": {
-        "CSSwhat": "0.4",
-        "domutils": "1.4"
-      }
-    },
-    "CSSwhat": {
-      "version": "0.4.7",
-      "resolved": "https://registry.npmjs.org/CSSwhat/-/CSSwhat-0.4.7.tgz",
-      "integrity": "sha1-hn2g/zn3eGEyQsRM/qg/CqTr35s="
+  "packages": {
+    "": {
+      "name": "jsdoc.github.io",
+      "version": "0.0.0",
+      "license": "CC BY-SA 3.0",
+      "devDependencies": {
+        "@11ty/eleventy": "^2.0.1",
+        "@jsdoc/eslint-config": "^1.2.4",
+        "@jsdoc/prettier-config": "^0.2.3",
+        "eslint": "^8.51.0",
+        "eslint-config-prettier": "^9.0.0",
+        "eslint-plugin-prettier": "^5.0.1",
+        "highlight.js": "^11.9.0",
+        "js-yaml": "^4.1.0",
+        "lodash": "^4.17.21",
+        "markdown-it": "^13.0.2",
+        "markdown-it-anchor": "^8.6.7",
+        "markdown-it-attrs": "^4.1.6",
+        "markdown-it-container": "^3.0.0",
+        "markdown-it-highlightjs": "^4.0.1",
+        "prettier": "^3.0.3"
+      }
+    },
+    "node_modules/@11ty/dependency-tree": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz",
+      "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==",
+      "dev": true
     },
-    "abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg="
+    "node_modules/@11ty/eleventy": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.1.tgz",
+      "integrity": "sha512-t8XVUbCJByhVEa1RzO0zS2QzbL3wPY8ot1yUw9noqiSHxJWUwv6jiwm1/MZDPTYtkZH2ZHvdQIRQ5/SjG9XmLw==",
+      "dev": true,
+      "dependencies": {
+        "@11ty/dependency-tree": "^2.0.1",
+        "@11ty/eleventy-dev-server": "^1.0.4",
+        "@11ty/eleventy-utils": "^1.0.1",
+        "@11ty/lodash-custom": "^4.17.21",
+        "@iarna/toml": "^2.2.5",
+        "@sindresorhus/slugify": "^1.1.2",
+        "bcp-47-normalize": "^1.1.1",
+        "chokidar": "^3.5.3",
+        "cross-spawn": "^7.0.3",
+        "debug": "^4.3.4",
+        "dependency-graph": "^0.11.0",
+        "ejs": "^3.1.9",
+        "fast-glob": "^3.2.12",
+        "graceful-fs": "^4.2.11",
+        "gray-matter": "^4.0.3",
+        "hamljs": "^0.6.2",
+        "handlebars": "^4.7.7",
+        "is-glob": "^4.0.3",
+        "iso-639-1": "^2.1.15",
+        "kleur": "^4.1.5",
+        "liquidjs": "^10.7.0",
+        "luxon": "^3.3.0",
+        "markdown-it": "^13.0.1",
+        "micromatch": "^4.0.5",
+        "minimist": "^1.2.8",
+        "moo": "^0.5.2",
+        "multimatch": "^5.0.0",
+        "mustache": "^4.2.0",
+        "normalize-path": "^3.0.0",
+        "nunjucks": "^3.2.3",
+        "path-to-regexp": "^6.2.1",
+        "please-upgrade-node": "^3.2.0",
+        "posthtml": "^0.16.6",
+        "posthtml-urls": "^1.0.0",
+        "pug": "^3.0.2",
+        "recursive-copy": "^2.0.14",
+        "semver": "^7.3.8",
+        "slugify": "^1.6.6"
+      },
+      "bin": {
+        "eleventy": "cmd.js"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
     },
-    "absolute": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/absolute/-/absolute-0.0.1.tgz",
-      "integrity": "sha1-wigi+H4ck59XmIdQTZwQnEFzgp0="
+    "node_modules/@11ty/eleventy-dev-server": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-1.0.4.tgz",
+      "integrity": "sha512-qVBmV2G1KF/0o5B/3fITlrrDHy4bONUI2YuN3/WJ3BNw4NU1d/we8XhKrlgq13nNvHoBx5czYp3LZt8qRG53Fg==",
+      "dev": true,
+      "dependencies": {
+        "@11ty/eleventy-utils": "^1.0.1",
+        "chokidar": "^3.5.3",
+        "debug": "^4.3.4",
+        "dev-ip": "^1.0.1",
+        "finalhandler": "^1.2.0",
+        "mime": "^3.0.0",
+        "minimist": "^1.2.8",
+        "morphdom": "^2.7.0",
+        "please-upgrade-node": "^3.2.0",
+        "ssri": "^8.0.1",
+        "ws": "^8.13.0"
+      },
+      "bin": {
+        "eleventy-dev-server": "cmd.js"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
     },
-    "accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
-      "requires": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
+    "node_modules/@11ty/eleventy-utils": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.2.tgz",
+      "integrity": "sha512-Zy2leMK1DQR6Q6ZPSagv7QpJaAz9uVbb+RmVetYFp3foMeQtOSZx7w2u5daRFmP+PeNq9vO9H4xtBToYFWZwHA==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
       }
     },
-    "amdefine": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
-      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+    "node_modules/@11ty/lodash-custom": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz",
+      "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/11ty"
+      }
     },
-    "ansi-colors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
-      "integrity": "sha1-Y3S03V1HGP884npnGjscrQdxMqk=",
-      "requires": {
-        "ansi-wrap": "^0.1.0"
+    "node_modules/@aashutoshrathi/word-wrap": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+      "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "ansi-gray": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
-      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
-      "requires": {
-        "ansi-wrap": "0.1.0"
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
       }
     },
-    "ansi-red": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
-      "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
-      "requires": {
-        "ansi-wrap": "0.1.0"
+    "node_modules/@babel/code-frame": {
+      "version": "7.22.13",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+      "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/highlight": "^7.22.13",
+        "chalk": "^2.4.2"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+    "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+    "node_modules/@babel/code-frame/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "ansi-wrap": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
-      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+    "node_modules/@babel/code-frame/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz",
+      "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz",
+      "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.22.13",
+        "@babel/generator": "^7.23.0",
+        "@babel/helper-compilation-targets": "^7.22.15",
+        "@babel/helper-module-transforms": "^7.23.0",
+        "@babel/helpers": "^7.23.2",
+        "@babel/parser": "^7.23.0",
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.2",
+        "@babel/types": "^7.23.0",
+        "convert-source-map": "^2.0.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.3",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/babel"
+      }
     },
-    "anymatch": {
+    "node_modules/@babel/core/node_modules/convert-source-map": {
       "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
-      "requires": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+      "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@babel/core/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/eslint-parser": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz",
+      "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==",
+      "dev": true,
+      "dependencies": {
+        "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+        "eslint-visitor-keys": "^2.1.0",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.11.0",
+        "eslint": "^7.5.0 || ^8.0.0"
+      }
+    },
+    "node_modules/@babel/eslint-parser/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.23.0",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "append-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz",
-      "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=",
-      "requires": {
-        "buffer-equal": "^1.0.0"
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+      "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.9",
+        "@babel/helper-validator-option": "^7.22.15",
+        "browserslist": "^4.21.9",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "archy": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
-      "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
-      "requires": {
-        "sprintf-js": "~1.0.2"
+    "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
       }
     },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
     },
-    "arr-filter": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
-      "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
-      "requires": {
-        "make-iterator": "^1.0.0"
+    "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+      "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+      "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/template": "^7.22.15",
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
     },
-    "arr-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz",
-      "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=",
-      "requires": {
-        "make-iterator": "^1.0.0"
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+      "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz",
+      "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-module-imports": "^7.22.15",
+        "@babel/helper-simple-access": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/helper-validator-identifier": "^7.22.20"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
     },
-    "array-each": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
-      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8="
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
     },
-    "array-initial": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
-      "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=",
-      "requires": {
-        "array-slice": "^1.0.0",
-        "is-number": "^4.0.0"
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
       },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+      "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
+      "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
+      "dev": true,
+      "peer": true,
       "dependencies": {
-        "is-number": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-          "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8="
-        }
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.2",
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "array-last": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz",
-      "integrity": "sha1-eqdwc/7FZd2rJJP1+IGF9ASp0zY=",
-      "requires": {
-        "is-number": "^4.0.0"
+    "node_modules/@babel/highlight": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+      "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "chalk": "^2.4.2",
+        "js-tokens": "^4.0.0"
       },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "peer": true,
       "dependencies": {
-        "is-number": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
-          "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8="
-        }
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
       }
     },
-    "array-slice": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
-      "integrity": "sha1-42jqFfibxwaff/uJrsOmx9SsItQ="
+    "node_modules/@babel/highlight/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "array-sort": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
-      "integrity": "sha1-5MBTVkU/VvU1EqfR1hI/LFTAqIo=",
-      "requires": {
-        "default-compare": "^1.0.0",
-        "get-value": "^2.0.6",
-        "kind-of": "^5.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
-        }
+    "node_modules/@babel/highlight/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
       }
     },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+    "node_modules/@babel/parser": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
     },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
-    },
-    "async": {
-      "version": "0.2.10",
-      "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
-      "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
-    },
-    "async-done": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz",
-      "integrity": "sha1-FLe3Nme4ZMjwK1slP8nG7dt3fz4=",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.2",
-        "process-nextick-args": "^1.0.7",
-        "stream-exhaust": "^1.0.1"
-      }
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8="
+    "node_modules/@babel/template": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.22.13",
+        "@babel/parser": "^7.22.15",
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
     },
-    "async-settle": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz",
-      "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=",
-      "requires": {
-        "async-done": "^1.2.2"
+    "node_modules/@babel/traverse": {
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.22.13",
+        "@babel/generator": "^7.23.0",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/parser": "^7.23.0",
+        "@babel/types": "^7.23.0",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k="
+    "node_modules/@babel/types": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
     },
-    "bach": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz",
-      "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=",
-      "requires": {
-        "arr-filter": "^1.1.1",
-        "arr-flatten": "^1.0.1",
-        "arr-map": "^2.0.0",
-        "array-each": "^1.0.0",
-        "array-initial": "^1.0.0",
-        "array-last": "^1.1.1",
-        "async-done": "^1.2.2",
-        "async-settle": "^1.0.0",
-        "now-and-later": "^2.0.0"
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^3.3.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
       }
     },
-    "batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
+    "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
     },
-    "binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U="
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
+      "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
     },
-    "body": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
-      "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
-      "requires": {
-        "continuable-cache": "^0.3.1",
-        "error": "^7.0.0",
-        "raw-body": "~1.1.0",
-        "safe-json-parse": "~1.0.1"
+    "node_modules/@eslint/eslintrc": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+      "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.6.0",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "13.23.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+      "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
-      "requires": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+    "node_modules/@eslint/js": {
+      "version": "8.52.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
+      "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       }
     },
-    "buffer-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
-      "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74="
+    "node_modules/@humanwhocodes/config-array": {
+      "version": "0.11.13",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
+      "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+      "dev": true,
+      "dependencies": {
+        "@humanwhocodes/object-schema": "^2.0.1",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.5"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
     },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8="
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.22"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
     },
-    "bytes": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
-      "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g="
+    "node_modules/@humanwhocodes/object-schema": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
+      "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
+      "dev": true
+    },
+    "node_modules/@iarna/toml": {
+      "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+      "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
     },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
-    },
-    "camelcase": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+      "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
     },
-    "chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-      "requires": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      }
-    },
-    "cheerio": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.14.0.tgz",
-      "integrity": "sha1-IJZI1QGEbelc3KZEDziaf1wp3I8=",
-      "requires": {
-        "CSSselect": "~0.4.0",
-        "entities": "~1.0.0",
-        "htmlparser2": "~3.7.0",
-        "lodash": "~2.4.1"
-      },
-      "dependencies": {
-        "lodash": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
-          "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
-        }
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.20",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+      "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/resolve-uri": "^3.1.0",
+        "@jridgewell/sourcemap-codec": "^1.4.14"
       }
     },
-    "chokidar": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
-      "integrity": "sha1-CuhDTZYigaX1bHKGnnnLbZ2GrU0=",
-      "requires": {
-        "anymatch": "^2.0.0",
-        "async-each": "^1.0.1",
-        "braces": "^2.3.2",
-        "fsevents": "^1.2.7",
-        "glob-parent": "^3.1.0",
-        "inherits": "^2.0.3",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "normalize-path": "^3.0.0",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.2.1",
-        "upath": "^1.1.1"
+    "node_modules/@jsdoc/eslint-config": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@jsdoc/eslint-config/-/eslint-config-1.2.4.tgz",
+      "integrity": "sha512-ODVm1zQkPDnphBJ8LTnfTA0qM1QA1np++s9Hg1tjBF5dyqD63TjXfO8V5iOXOr8isHSyzCorm8A5piI4N7kfzQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/eslint-parser": "^7.22.15",
+        "eslint-plugin-simple-import-sort": "^10.0.0"
       },
+      "engines": {
+        "node": ">=v18.12.0"
+      },
+      "peerDependencies": {
+        "eslint": ">= 8.50.0"
+      }
+    },
+    "node_modules/@jsdoc/prettier-config": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/@jsdoc/prettier-config/-/prettier-config-0.2.3.tgz",
+      "integrity": "sha512-HBNeGrUf8tMzEn9QUyC675ue705I64sxcn9kzLoMyxD6X9wIOMXBG586lToP+1oQ+L2BxI7CwokQfCF9trJdBg==",
+      "dev": true,
+      "peerDependencies": {
+        "eslint-config-prettier": "^9.0.0",
+        "eslint-plugin-prettier": "^5.0.0",
+        "prettier": "^3.0.3"
+      }
+    },
+    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+      "version": "5.1.1-v1",
+      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+      "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+      "dev": true,
       "dependencies": {
-        "normalize-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-          "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU="
-        }
+        "eslint-scope": "5.1.1"
       }
     },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
       }
     },
-    "cliui": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wrap-ansi": "^2.0.0"
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
       }
     },
-    "clone": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
-    },
-    "clone-buffer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
-      "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg="
-    },
-    "clone-stats": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
-      "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA="
+    "node_modules/@pkgr/utils": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+      "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "fast-glob": "^3.3.0",
+        "is-glob": "^4.0.3",
+        "open": "^9.1.0",
+        "picocolors": "^1.0.0",
+        "tslib": "^2.6.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/unts"
+      }
     },
-    "cloneable-readable": {
+    "node_modules/@sindresorhus/slugify": {
       "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz",
-      "integrity": "sha1-1ZHe5Kj4vBXaQ86X3O66E9Q+KmU=",
-      "requires": {
-        "inherits": "^2.0.1",
-        "process-nextick-args": "^2.0.0",
-        "readable-stream": "^2.3.5"
-      },
-      "dependencies": {
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
-        }
+      "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz",
+      "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==",
+      "dev": true,
+      "dependencies": {
+        "@sindresorhus/transliterate": "^0.1.1",
+        "escape-string-regexp": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "co": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
-      "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g="
-    },
-    "co-from-stream": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/co-from-stream/-/co-from-stream-0.0.0.tgz",
-      "integrity": "sha1-GlzYztdyY5RglPo58kmaYyl7yvk=",
-      "requires": {
-        "co-read": "0.0.1"
+    "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "co-fs-extra": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/co-fs-extra/-/co-fs-extra-1.2.1.tgz",
-      "integrity": "sha1-O2rXfPJhRTD2d7HPYmZPW6dWtyI=",
-      "requires": {
-        "co-from-stream": "~0.0.0",
-        "fs-extra": "~0.26.5",
-        "thunkify-wrap": "~1.0.4"
-      },
-      "dependencies": {
-        "fs-extra": {
-          "version": "0.26.7",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
-          "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^2.1.0",
-            "klaw": "^1.0.0",
-            "path-is-absolute": "^1.0.0",
-            "rimraf": "^2.2.8"
-          }
-        },
-        "jsonfile": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-          "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-          "requires": {
-            "graceful-fs": "^4.1.6"
-          }
-        }
+    "node_modules/@sindresorhus/transliterate": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz",
+      "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^2.0.0",
+        "lodash.deburr": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "co-read": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/co-read/-/co-read-0.0.1.tgz",
-      "integrity": "sha1-+Bs+uKhmdf7FHj2IOn9WToc8k4k="
-    },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
-    },
-    "code-prettify": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/code-prettify/-/code-prettify-0.1.0.tgz",
-      "integrity": "sha1-RocMyMGlDQm61TmzOpg9vUqjSx4="
-    },
-    "coffee-script": {
-      "version": "1.12.7",
-      "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
-      "integrity": "sha1-wF2uDLeVkdBbMHCoQzqYyaiczFM="
-    },
-    "collection-map": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz",
-      "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=",
-      "requires": {
-        "arr-map": "^2.0.2",
-        "for-own": "^1.0.0",
-        "make-iterator": "^1.0.0"
+    "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
+    "node_modules/@types/linkify-it": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.4.tgz",
+      "integrity": "sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/markdown-it": {
+      "version": "13.0.5",
+      "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.5.tgz",
+      "integrity": "sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "@types/linkify-it": "*",
+        "@types/mdurl": "*"
       }
     },
-    "color-support": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-      "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI="
-    },
-    "commander": {
-      "version": "2.20.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
-      "integrity": "sha1-1YuytcHuj4ew00ACfp6U4iLFpCI="
+    "node_modules/@types/mdurl": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.4.tgz",
+      "integrity": "sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/@types/minimatch": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+      "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+      "dev": true
+    },
+    "node_modules/@ungap/structured-clone": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+      "dev": true
     },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A="
+    "node_modules/a-sync-waterfall": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
+      "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==",
+      "dev": true
+    },
+    "node_modules/acorn": {
+      "version": "8.10.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
     },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "config-chain": {
-      "version": "1.1.12",
-      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
-      "integrity": "sha1-D96NCRIA616AjK8l/mGMAvSOTvo=",
-      "requires": {
-        "ini": "^1.3.4",
-        "proto-list": "~1.2.1"
-      }
-    },
-    "connect": {
-      "version": "3.6.6",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
-      "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
-      "requires": {
-        "debug": "2.6.9",
-        "finalhandler": "1.1.0",
-        "parseurl": "~1.3.2",
-        "utils-merge": "1.0.1"
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
-    "connect-livereload": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz",
-      "integrity": "sha1-GsDIu52c/VsotimYelapI525uqo="
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
     },
-    "continuable-cache": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
-      "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8="
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
     },
-    "convert-source-map": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
-      "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=",
-      "requires": {
-        "safe-buffer": "~5.1.1"
+    "node_modules/ansi-styles/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
       }
     },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+    "node_modules/ansi-styles/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
     },
-    "copy-props": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
-      "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
-      "requires": {
-        "each-props": "^1.3.2",
-        "is-plain-object": "^5.0.0"
-      },
+    "node_modules/any-promise": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
+      "integrity": "sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==",
+      "dev": true
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
       "dependencies": {
-        "is-plain-object": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
-          "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
-        }
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
       }
     },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
     },
-    "d": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
-      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
-      "requires": {
-        "es5-ext": "^0.10.9"
+    "node_modules/array-differ": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+      "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
-      "requires": {
-        "ms": "2.0.0"
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
     },
-    "decode-uri-component": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+    "node_modules/arrify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+      "dev": true
     },
-    "default-compare": {
+    "node_modules/assert-never": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
+      "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==",
+      "dev": true
+    },
+    "node_modules/async": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+      "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+      "dev": true
+    },
+    "node_modules/babel-walk": {
+      "version": "3.0.0-canary-5",
+      "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
+      "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.9.6"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
+      }
+    },
+    "node_modules/balanced-match": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
-      "integrity": "sha1-y2ETGESthNhHiPto/QFoHKd4Gi8=",
-      "requires": {
-        "kind-of": "^5.0.2"
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "node_modules/bcp-47": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-1.0.8.tgz",
+      "integrity": "sha512-Y9y1QNBBtYtv7hcmoX0tR+tUNSFZGZ6OL6vKPObq8BbOhkCoyayF6ogfLTgAli/KuAEbsYHYUNq2AQuY6IuLag==",
+      "dev": true,
+      "dependencies": {
+        "is-alphabetical": "^1.0.0",
+        "is-alphanumerical": "^1.0.0",
+        "is-decimal": "^1.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/bcp-47-match": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz",
+      "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==",
+      "dev": true,
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/bcp-47-normalize": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-1.1.1.tgz",
+      "integrity": "sha512-jWZ1Jdu3cs0EZdfCkS0UE9Gg01PtxnChjEBySeB+Zo6nkqtFfnvtoQQgP1qU1Oo4qgJgxhTI6Sf9y/pZIhPs0A==",
+      "dev": true,
+      "dependencies": {
+        "bcp-47": "^1.0.0",
+        "bcp-47-match": "^1.0.0"
       },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
+    },
+    "node_modules/big-integer": {
+      "version": "1.6.51",
+      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+      "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bplist-parser": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+      "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+      "dev": true,
+      "dependencies": {
+        "big-integer": "^1.6.44"
+      },
+      "engines": {
+        "node": ">= 5.10.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
       "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.22.1",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
+      "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
         }
+      ],
+      "peer": true,
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001541",
+        "electron-to-chromium": "^1.4.535",
+        "node-releases": "^2.0.13",
+        "update-browserslist-db": "^1.0.13"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
       }
     },
-    "default-resolution": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz",
-      "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ="
+    "node_modules/bundle-name": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+      "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+      "dev": true,
+      "dependencies": {
+        "run-applescript": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
-      "requires": {
-        "object-keys": "^1.0.12"
+    "node_modules/call-bind": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.1",
+        "set-function-length": "^1.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001551",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz",
+      "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
         },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
         },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "peer": true
+    },
+    "node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/character-parser": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
+      "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
+      "dev": true,
+      "dependencies": {
+        "is-regex": "^1.0.3"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://paulmillr.com/funding/"
         }
+      ],
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
       }
     },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "peer": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
     },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true,
+      "peer": true
     },
-    "detect-file": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
-      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc="
+    "node_modules/commander": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      }
     },
-    "dom-serializer": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
-      "integrity": "sha1-HsQFnihLq+027sKUHUqXChic58A=",
-      "requires": {
-        "domelementtype": "^1.3.0",
-        "entities": "^1.1.1"
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "node_modules/constantinople": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
+      "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.6.0",
+        "@babel/types": "^7.6.1"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/cross-spawn/node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
       },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
       "dependencies": {
-        "entities": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-          "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
         }
       }
     },
-    "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8="
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
     },
-    "domhandler": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.2.1.tgz",
-      "integrity": "sha1-Wd+dzSJ+gIs2Wuc+H2aErD2Ub8I=",
-      "requires": {
-        "domelementtype": "1"
-      }
-    },
-    "domutils": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
-      "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
-      "requires": {
-        "domelementtype": "1"
-      }
-    },
-    "duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=",
-      "requires": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "each-props": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz",
-      "integrity": "sha1-6kWkFNFt1c+kGbGoFyDVygaJIzM=",
-      "requires": {
-        "is-plain-object": "^2.0.1",
-        "object.defaults": "^1.1.0"
-      }
-    },
-    "editorconfig": {
-      "version": "0.15.3",
-      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
-      "integrity": "sha1-vvhMTnX7jcsM5c7o79UcFZmb78U=",
-      "requires": {
-        "commander": "^2.19.0",
-        "lru-cache": "^4.1.5",
-        "semver": "^5.6.0",
-        "sigmund": "^1.0.1"
-      }
-    },
-    "ee-first": {
+    "node_modules/default-browser": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+      "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+      "dev": true,
+      "dependencies": {
+        "bundle-name": "^3.0.0",
+        "default-browser-id": "^3.0.0",
+        "execa": "^7.1.1",
+        "titleize": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/default-browser-id": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+      "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+      "dev": true,
+      "dependencies": {
+        "bplist-parser": "^0.2.0",
+        "untildify": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/define-data-property": {
       "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
     },
-    "enable": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/enable/-/enable-1.3.2.tgz",
-      "integrity": "sha1-nrpoN9FtCYK1n4fYib91REPVKTE="
+    "node_modules/define-lazy-prop": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+      "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+    "node_modules/dependency-graph": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+      "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/dev-ip": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
+      "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==",
+      "dev": true,
+      "bin": {
+        "dev-ip": "lib/dev-ip.js"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
     },
-    "end-of-stream": {
+    "node_modules/doctypes": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
+      "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==",
+      "dev": true
+    },
+    "node_modules/dom-serializer": {
       "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
-      "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=",
-      "requires": {
-        "once": "^1.4.0"
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
+        "entities": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
       }
     },
-    "entities": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
-      "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
+    "node_modules/dom-serializer/node_modules/entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
     },
-    "error": {
-      "version": "7.0.2",
-      "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
-      "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=",
-      "requires": {
-        "string-template": "~0.2.1",
-        "xtend": "~4.0.0"
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ]
+    },
+    "node_modules/domhandler": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+      "dev": true,
+      "dependencies": {
+        "domelementtype": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+      "dev": true,
+      "dependencies": {
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
       }
     },
-    "error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
-      "requires": {
-        "is-arrayish": "^0.2.1"
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+      "dev": true
+    },
+    "node_modules/ejs": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+      "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+      "dev": true,
+      "dependencies": {
+        "jake": "^10.8.5"
+      },
+      "bin": {
+        "ejs": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "es5-ext": {
-      "version": "0.10.50",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
-      "integrity": "sha1-bQ4joKvbJwGOWsT9CbQSvFUXp3g=",
-      "requires": {
-        "es6-iterator": "~2.0.3",
-        "es6-symbol": "~3.1.1",
-        "next-tick": "^1.0.0"
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.563",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
+      "integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
       }
     },
-    "es6-iterator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.35",
-        "es6-symbol": "^3.1.1"
+    "node_modules/entities": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
+      "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
-    "es6-symbol": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
-      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
-      "requires": {
-        "d": "1",
-        "es5-ext": "~0.10.14"
+    "node_modules/errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+      "dev": true,
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
       }
     },
-    "es6-weak-map": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
-      "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.14",
-        "es6-iterator": "^2.0.1",
-        "es6-symbol": "^3.1.1"
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6"
       }
     },
-    "escape-html": {
+    "node_modules/escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+      "dev": true
     },
-    "escape-string-regexp": {
+    "node_modules/escape-string-regexp": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "requires": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "8.52.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
+      "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.6.1",
+        "@eslint/eslintrc": "^2.1.2",
+        "@eslint/js": "8.52.0",
+        "@humanwhocodes/config-array": "^0.11.13",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "@ungap/structured-clone": "^1.2.0",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.2",
+        "eslint-visitor-keys": "^3.4.3",
+        "espree": "^9.6.1",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.0.3",
+        "js-yaml": "^4.1.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3",
+        "strip-ansi": "^6.0.1",
+        "text-table": "^0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "expand-tilde": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
-      "requires": {
-        "homedir-polyfill": "^1.0.1"
+    "node_modules/eslint-config-prettier": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+      "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
+      "dev": true,
+      "bin": {
+        "eslint-config-prettier": "bin/cli.js"
+      },
+      "peerDependencies": {
+        "eslint": ">=7.0.0"
       }
     },
-    "extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
+    "node_modules/eslint-plugin-prettier": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz",
+      "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==",
+      "dev": true,
+      "dependencies": {
+        "prettier-linter-helpers": "^1.0.0",
+        "synckit": "^0.8.5"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/prettier"
+      },
+      "peerDependencies": {
+        "@types/eslint": ">=8.0.0",
+        "eslint": ">=8.0.0",
+        "prettier": ">=3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/eslint": {
+          "optional": true
+        },
+        "eslint-config-prettier": {
+          "optional": true
         }
       }
     },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
-      "requires": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+    "node_modules/eslint-plugin-simple-import-sort": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz",
+      "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==",
+      "dev": true,
+      "peerDependencies": {
+        "eslint": ">=5.0.0"
       }
     },
-    "fancy-log": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
-      "integrity": "sha1-28GRVPVYaQFQojlToK29A1vkX8c=",
-      "requires": {
-        "ansi-gray": "^0.1.1",
-        "color-support": "^1.1.3",
-        "parse-node-version": "^1.0.0",
-        "time-stamp": "^1.0.0"
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
       }
     },
-    "faye-websocket": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
-      "requires": {
-        "websocket-driver": ">=0.5.1"
+    "node_modules/eslint-visitor-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
       }
     },
-    "fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+    "node_modules/eslint/node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "finalhandler": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
-      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
-      "requires": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.1",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.2",
-        "statuses": "~1.3.1",
-        "unpipe": "~1.0.0"
+    "node_modules/eslint/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "find-up": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
-      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-      "requires": {
-        "path-exists": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
+    "node_modules/eslint/node_modules/eslint-scope": {
+      "version": "7.2.2",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "findup-sync": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
-      "integrity": "sha1-F7EI+e5RLft6XH88iyfqnhqcCNE=",
-      "requires": {
-        "detect-file": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "micromatch": "^3.0.4",
-        "resolve-dir": "^1.0.1"
+    "node_modules/eslint/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "fined": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
-      "integrity": "sha1-0AvszxqitHXRbUI7Aji3E6LEo3s=",
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "is-plain-object": "^2.0.3",
-        "object.defaults": "^1.1.0",
-        "object.pick": "^1.2.0",
-        "parse-filepath": "^1.0.1"
+    "node_modules/eslint/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
       }
     },
-    "flagged-respawn": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
-      "integrity": "sha1-595vEnnd2cqarIpZcdYYYGs6q0E="
+    "node_modules/eslint/node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=",
-      "requires": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
+    "node_modules/eslint/node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
       }
     },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+    "node_modules/eslint/node_modules/globals": {
+      "version": "13.23.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+      "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "for-own": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
-      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
-      "requires": {
-        "for-in": "^1.0.1"
+    "node_modules/eslint/node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-      "requires": {
-        "map-cache": "^0.2.2"
+    "node_modules/espree": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
       }
     },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+    "node_modules/espree/node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
     },
-    "fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
       }
     },
-    "fs-mkdirp-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz",
-      "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=",
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "through2": "^2.0.3"
+    "node_modules/esquery": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
       }
     },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
     },
-    "fsevents": {
-      "version": "1.2.9",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
-      "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=",
-      "optional": true,
-      "requires": {
-        "nan": "^2.12.1",
-        "node-pre-gyp": "^0.12.0"
-      },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
       "dependencies": {
-        "abbrev": {
-          "version": "1.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "aproba": {
-          "version": "1.2.0",
-          "bundled": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^2.0.6"
-          }
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "chownr": {
-          "version": "1.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true,
-          "optional": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true,
-          "optional": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "debug": {
-          "version": "4.1.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "deep-extend": {
-          "version": "0.6.0",
-          "bundled": true,
-          "optional": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "detect-libc": {
-          "version": "1.0.3",
-          "bundled": true,
-          "optional": true
-        },
-        "fs-minipass": {
-          "version": "1.2.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "aproba": "^1.0.3",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.0",
-            "object-assign": "^4.1.0",
-            "signal-exit": "^3.0.0",
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wide-align": "^1.1.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.3",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ignore-walk": {
-          "version": "3.0.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minimatch": "^3.0.4"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true,
-          "optional": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "bundled": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true,
-          "optional": true
-        },
-        "minipass": {
-          "version": "2.3.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "1.2.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.2.1"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "needle": {
-          "version": "2.3.0",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "debug": "^4.1.0",
-            "iconv-lite": "^0.4.4",
-            "sax": "^1.2.4"
-          }
-        },
-        "node-pre-gyp": {
-          "version": "0.12.0",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "detect-libc": "^1.0.2",
-            "mkdirp": "^0.5.1",
-            "needle": "^2.2.1",
-            "nopt": "^4.0.1",
-            "npm-packlist": "^1.1.6",
-            "npmlog": "^4.0.2",
-            "rc": "^1.2.7",
-            "rimraf": "^2.6.1",
-            "semver": "^5.3.0",
-            "tar": "^4"
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1",
-            "osenv": "^0.1.4"
-          }
-        },
-        "npm-bundled": {
-          "version": "1.0.6",
-          "bundled": true,
-          "optional": true
-        },
-        "npm-packlist": {
-          "version": "1.4.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "ignore-walk": "^3.0.1",
-            "npm-bundled": "^1.0.1"
-          }
-        },
-        "npmlog": {
-          "version": "4.1.2",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "are-we-there-yet": "~1.1.2",
-            "console-control-strings": "~1.1.0",
-            "gauge": "~2.7.3",
-            "set-blocking": "~2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "wrappy": "1"
-          }
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "osenv": {
-          "version": "0.1.5",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "os-homedir": "^1.0.0",
-            "os-tmpdir": "^1.0.0"
-          }
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "rc": {
-          "version": "1.2.8",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "deep-extend": "^0.6.0",
-            "ini": "~1.3.0",
-            "minimist": "^1.2.0",
-            "strip-json-comments": "~2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "bundled": true,
-              "optional": true
-            }
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.6",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "rimraf": {
-          "version": "2.6.3",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "bundled": true,
-          "optional": true
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "bundled": true,
-          "optional": true
-        },
-        "sax": {
-          "version": "1.2.4",
-          "bundled": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "5.7.0",
-          "bundled": true,
-          "optional": true
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "bundled": true,
-          "optional": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "bundled": true,
-          "optional": true
-        },
-        "tar": {
-          "version": "4.4.8",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "chownr": "^1.1.1",
-            "fs-minipass": "^1.2.5",
-            "minipass": "^2.3.4",
-            "minizlib": "^1.1.1",
-            "mkdirp": "^0.5.0",
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.2"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "wide-align": {
-          "version": "1.1.3",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "string-width": "^1.0.2 || 2"
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true
-        },
-        "yallist": {
-          "version": "3.0.3",
-          "bundled": true,
-          "optional": true
-        }
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
       }
     },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
     },
-    "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o="
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/execa": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+      "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.1",
+        "human-signals": "^4.3.0",
+        "is-stream": "^3.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^5.1.0",
+        "onetime": "^6.0.0",
+        "signal-exit": "^3.0.7",
+        "strip-final-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
+    },
+    "node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-diff": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+      "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+      "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
     },
-    "get-value": {
+    "node_modules/fast-levenshtein": {
       "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "node_modules/fastq": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/filelist": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+      "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+      "dev": true,
+      "dependencies": {
+        "minimatch": "^5.0.1"
+      }
+    },
+    "node_modules/filelist/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/filelist/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "dev": true
+    },
+    "node_modules/flat-cache": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
+      "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.3",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/flat-cache/node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.2.9",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+      "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+      "dev": true
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+      "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "glob": {
+    "node_modules/glob": {
       "version": "7.1.3",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
       "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=",
-      "requires": {
+      "dev": true,
+      "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
         "inherits": "2",
         "minimatch": "^3.0.4",
         "once": "^1.3.0",
         "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
       }
     },
-    "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-      "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
-    },
-    "glob-stream": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
-      "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=",
-      "requires": {
-        "extend": "^3.0.0",
-        "glob": "^7.1.1",
-        "glob-parent": "^3.1.0",
-        "is-negated-glob": "^1.0.0",
-        "ordered-read-streams": "^1.0.0",
-        "pumpify": "^1.3.5",
-        "readable-stream": "^2.1.5",
-        "remove-trailing-separator": "^1.0.1",
-        "to-absolute-glob": "^2.0.0",
-        "unique-stream": "^2.0.2"
-      }
-    },
-    "glob-watcher": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz",
-      "integrity": "sha1-iKir8cTRMeuTkomUvEpZPC5d1iY=",
-      "requires": {
-        "anymatch": "^2.0.0",
-        "async-done": "^1.2.0",
-        "chokidar": "^2.0.0",
-        "is-negated-glob": "^1.0.0",
-        "just-debounce": "^1.0.0",
-        "object.defaults": "^1.1.0"
-      }
-    },
-    "global-modules": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
-      "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=",
-      "requires": {
-        "global-prefix": "^1.0.1",
-        "is-windows": "^1.0.1",
-        "resolve-dir": "^1.0.0"
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
       }
     },
-    "global-prefix": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
-      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "homedir-polyfill": "^1.0.1",
-        "ini": "^1.3.4",
-        "is-windows": "^1.0.1",
-        "which": "^1.2.14"
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
       }
     },
-    "glogg": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz",
-      "integrity": "sha1-LX3XAr7aIus7/634gGltpthGMT8=",
-      "requires": {
-        "sparkles": "^1.0.0"
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "graceful-fs": {
-      "version": "4.1.15",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
-      "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true
     },
-    "gray-matter": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz",
-      "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=",
-      "requires": {
-        "ansi-red": "^0.1.1",
-        "coffee-script": "^1.12.4",
-        "extend-shallow": "^2.0.1",
-        "js-yaml": "^3.8.1",
-        "toml": "^2.3.2"
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "node_modules/gray-matter": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+      "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+      "dev": true,
+      "dependencies": {
+        "js-yaml": "^3.13.1",
+        "kind-of": "^6.0.2",
+        "section-matter": "^1.0.0",
+        "strip-bom-string": "^1.0.0"
       },
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/gray-matter/node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
       "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+        "sprintf-js": "~1.0.2"
       }
     },
-    "gulp": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.1.tgz",
-      "integrity": "sha1-mHo4pVp9Nnf2tJ4pGwa8BYCfM9k=",
-      "requires": {
-        "glob-watcher": "^5.0.3",
-        "gulp-cli": "^2.2.0",
-        "undertaker": "^1.2.1",
-        "vinyl-fs": "^3.0.0"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
-        },
-        "gulp-cli": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz",
-          "integrity": "sha1-VTMSbut/5BWn4+hKKX0zTVz3Drw=",
-          "requires": {
-            "ansi-colors": "^1.0.1",
-            "archy": "^1.0.0",
-            "array-sort": "^1.0.0",
-            "color-support": "^1.1.3",
-            "concat-stream": "^1.6.0",
-            "copy-props": "^2.0.1",
-            "fancy-log": "^1.3.2",
-            "gulplog": "^1.0.0",
-            "interpret": "^1.1.0",
-            "isobject": "^3.0.1",
-            "liftoff": "^3.1.0",
-            "matchdep": "^2.0.0",
-            "mute-stdout": "^1.0.0",
-            "pretty-hrtime": "^1.0.0",
-            "replace-homedir": "^1.0.0",
-            "semver-greatest-satisfied-range": "^1.1.0",
-            "v8flags": "^3.0.1",
-            "yargs": "^7.1.0"
-          }
-        },
-        "yargs": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
-          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
-          "requires": {
-            "camelcase": "^3.0.0",
-            "cliui": "^3.2.0",
-            "decamelize": "^1.1.1",
-            "get-caller-file": "^1.0.1",
-            "os-locale": "^1.4.0",
-            "read-pkg-up": "^1.0.1",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^1.0.1",
-            "set-blocking": "^2.0.0",
-            "string-width": "^1.0.2",
-            "which-module": "^1.0.0",
-            "y18n": "^3.2.1",
-            "yargs-parser": "^5.0.0"
-          }
-        }
+    "node_modules/gray-matter/node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
       }
     },
-    "gulp-connect": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.7.0.tgz",
-      "integrity": "sha1-fpJfXkw06/7fnzGFdpZuj+iEDVo=",
-      "requires": {
-        "ansi-colors": "^2.0.5",
-        "connect": "^3.6.6",
-        "connect-livereload": "^0.6.0",
-        "fancy-log": "^1.3.2",
-        "map-stream": "^0.0.7",
-        "send": "^0.16.2",
-        "serve-index": "^1.9.1",
-        "serve-static": "^1.13.2",
-        "tiny-lr": "^1.1.1"
-      },
-      "dependencies": {
-        "ansi-colors": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-2.0.5.tgz",
-          "integrity": "sha1-XaN4Jf7z51872kf3YNZL/RDhXhA="
-        }
+    "node_modules/hamljs": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz",
+      "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==",
+      "dev": true
+    },
+    "node_modules/handlebars": {
+      "version": "4.7.8",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+      "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.2",
+        "source-map": "^0.6.1",
+        "wordwrap": "^1.0.0"
+      },
+      "bin": {
+        "handlebars": "bin/handlebars"
+      },
+      "engines": {
+        "node": ">=0.4.7"
+      },
+      "optionalDependencies": {
+        "uglify-js": "^3.1.4"
       }
     },
-    "gulplog": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
-      "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
-      "requires": {
-        "glogg": "^1.0.0"
+    "node_modules/has": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+      "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
       }
     },
-    "harmonize": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/harmonize/-/harmonize-2.0.0.tgz",
-      "integrity": "sha1-peMLabaNc+PsPAQYOR8RCoDo1Pc="
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "requires": {
-        "ansi-regex": "^2.0.0"
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "has-generators": {
+    "node_modules/has-proto": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-generators/-/has-generators-1.0.1.tgz",
-      "integrity": "sha1-pqLlVIYBGUBILhPiyTeRxEms9Ek="
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
     },
-    "has-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
-      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
     },
-    "has-value": {
+    "node_modules/has-tostringtag": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/highlight.js": {
+      "version": "11.9.0",
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
+      "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
+      "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
+      "dev": true,
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "dependencies": {
+        "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.2",
+        "domutils": "^2.8.0",
+        "entities": "^3.0.1"
       }
     },
-    "has-values": {
+    "node_modules/http-equiv-refresh": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+      "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-1.0.0.tgz",
+      "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
       }
     },
-    "homedir-polyfill": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
-      "integrity": "sha1-dDKYzvTlrz4ZQWH7rcwhUdOgWOg=",
-      "requires": {
-        "parse-passwd": "^1.0.0"
+    "node_modules/human-signals": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+      "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=14.18.0"
       }
     },
-    "hosted-git-info": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
-      "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc="
-    },
-    "htmlparser2": {
-      "version": "3.7.3",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.7.3.tgz",
-      "integrity": "sha1-amTHdjfAjG8w7CqBV6UzM758sF4=",
-      "requires": {
-        "domelementtype": "1",
-        "domhandler": "2.2",
-        "domutils": "1.5",
-        "entities": "1.0",
-        "readable-stream": "1.1"
-      },
-      "dependencies": {
-        "domutils": {
-          "version": "1.5.1",
-          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-          "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
-          "requires": {
-            "dom-serializer": "0",
-            "domelementtype": "1"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-        },
-        "readable-stream": {
-          "version": "1.1.14",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "0.0.1",
-            "string_decoder": "~0.10.x"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-        }
+    "node_modules/ignore": {
+      "version": "5.2.4",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
       }
     },
-    "http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-      "requires": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": ">= 1.4.0 < 2"
-      },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
       "dependencies": {
-        "statuses": {
-          "version": "1.5.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-        }
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "http-parser-js": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
-      "integrity": "sha1-1l7b7ehDSdDcMDIIFaFdOcw8u9g="
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
     },
-    "inflight": {
+    "node_modules/inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "requires": {
+      "dev": true,
+      "dependencies": {
         "once": "^1.3.0",
         "wrappy": "1"
       }
     },
-    "inherits": {
+    "node_modules/inherits": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
     },
-    "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc="
-    },
-    "interpret": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
-      "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY="
-    },
-    "invert-kv": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+    "node_modules/is-alphabetical": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+      "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+      "dev": true,
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
     },
-    "is": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz",
-      "integrity": "sha1-Yc/23TxBk9uUo9YlggcrROVkXXk="
+    "node_modules/is-alphanumerical": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+      "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+      "dev": true,
+      "dependencies": {
+        "is-alphabetical": "^1.0.0",
+        "is-decimal": "^1.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
+      }
     },
-    "is-absolute": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
-      "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=",
-      "requires": {
-        "is-relative": "^1.0.0",
-        "is-windows": "^1.0.1"
-      }
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+    "node_modules/is-core-module": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+      "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
     },
-    "is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "requires": {
-        "binary-extensions": "^1.0.0"
+    "node_modules/is-decimal": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+      "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+      "dev": true,
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wooorm"
       }
     },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
+    "node_modules/is-docker": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+      "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+      "dev": true,
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/is-expression": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
+      "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^7.1.1",
+        "object-assign": "^4.1.1"
       }
     },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
-      "requires": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
+    "node_modules/is-expression/node_modules/acorn": {
+      "version": "7.4.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
       },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
-        }
+      "engines": {
+        "node": ">=0.4.0"
       }
     },
-    "is-extendable": {
+    "node_modules/is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
     },
-    "is-extglob": {
+    "node_modules/is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
-    },
-    "is-fullwidth-code-point": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-      "requires": {
-        "number-is-nan": "^1.0.0"
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
-      "requires": {
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
         "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "is-negated-glob": {
+    "node_modules/is-inside-container": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
-      "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI="
+      "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+      "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^3.0.0"
+      },
+      "bin": {
+        "is-inside-container": "cli.js"
+      },
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/is-json": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz",
+      "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==",
+      "dev": true
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
       }
     },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
-      "requires": {
-        "isobject": "^3.0.1"
+    "node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "is-relative": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
-      "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=",
-      "requires": {
-        "is-unc-path": "^1.0.0"
+    "node_modules/is-promise": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
+      "dev": true
+    },
+    "node_modules/is-regex": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "is-unc-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
-      "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=",
-      "requires": {
-        "unc-path-regex": "^0.1.2"
+    "node_modules/is-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "is-utf8": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
-      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+    "node_modules/is-wsl/node_modules/is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+      "dev": true,
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "is-valid-glob": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz",
-      "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao="
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "node_modules/iso-639-1": {
+      "version": "2.1.15",
+      "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-2.1.15.tgz",
+      "integrity": "sha512-7c7mBznZu2ktfvyT582E2msM+Udc1EjOyhVRE/0ZsjD9LBtWSm23h3PtiRh2a35XoUsTQQjJXaJzuLjXsOdFDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/jake": {
+      "version": "10.8.7",
+      "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
+      "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+      "dev": true,
+      "dependencies": {
+        "async": "^3.2.3",
+        "chalk": "^4.0.2",
+        "filelist": "^1.0.4",
+        "minimatch": "^3.1.2"
+      },
+      "bin": {
+        "jake": "bin/cli.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
     },
-    "is-windows": {
+    "node_modules/js-stringify": {
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0="
+      "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
+      "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==",
+      "dev": true
     },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true,
+      "peer": true
     },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "isobject": {
+    "node_modules/json-buffer": {
       "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
-    },
-    "js-beautify": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.0.tgz",
-      "integrity": "sha1-l1OhPIWNloKGWM0Yrjyg5Xg+pnI=",
-      "requires": {
-        "config-chain": "^1.1.12",
-        "editorconfig": "^0.15.3",
-        "glob": "^7.1.3",
-        "mkdirp": "~0.5.1",
-        "nopt": "~4.0.1"
-      }
-    },
-    "js-yaml": {
-      "version": "3.13.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-      "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=",
-      "requires": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      }
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true
     },
-    "json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
     },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "requires": {
-        "graceful-fs": "^4.1.6"
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
       }
     },
-    "just-debounce": {
+    "node_modules/jstransformer": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz",
-      "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo="
+      "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
+      "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
+      "dev": true,
+      "dependencies": {
+        "is-promise": "^2.0.0",
+        "promise": "^7.0.1"
+      }
     },
-    "kind-of": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-      "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+    "node_modules/junk": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz",
+      "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
     },
-    "klaw": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
-      "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
-      "requires": {
-        "graceful-fs": "^4.1.9"
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "last-run": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz",
-      "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=",
-      "requires": {
-        "default-resolution": "^2.0.0",
-        "es6-weak-map": "^2.0.1"
+    "node_modules/kleur": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
       }
     },
-    "lazystream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
-      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
-      "requires": {
-        "readable-stream": "^2.0.5"
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
-    "lcid": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "requires": {
-        "invert-kv": "^1.0.0"
+    "node_modules/linkify-it": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
+      "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
+      "dev": true,
+      "dependencies": {
+        "uc.micro": "^1.0.1"
       }
     },
-    "lead": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz",
-      "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=",
-      "requires": {
-        "flush-write-stream": "^1.0.2"
+    "node_modules/liquidjs": {
+      "version": "10.9.3",
+      "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.9.3.tgz",
+      "integrity": "sha512-vG8fLPSBtf0C6FJg0DwzxwWF0sPE+wIRrrGsNoe0DP3Pg4HOPqycGDT14V4UfyskUXsum7DkhUuZQ9tBRjbX+g==",
+      "dev": true,
+      "dependencies": {
+        "commander": "^10.0.0"
+      },
+      "bin": {
+        "liquid": "bin/liquid.js",
+        "liquidjs": "bin/liquid.js"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/liquidjs"
       }
     },
-    "liftoff": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
-      "integrity": "sha1-ybpggfkIZwYH7nkGLXAN8GLFLtM=",
-      "requires": {
-        "extend": "^3.0.0",
-        "findup-sync": "^3.0.0",
-        "fined": "^1.0.1",
-        "flagged-respawn": "^1.0.0",
-        "is-plain-object": "^2.0.4",
-        "object.map": "^1.0.0",
-        "rechoir": "^0.6.2",
-        "resolve": "^1.1.7"
-      }
-    },
-    "livereload-js": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
-      "integrity": "sha1-RHwxzx6pq1L8INthXF3fZ494AJw="
-    },
-    "load-json-file": {
+    "node_modules/list-to-array": {
       "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
-      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "parse-json": "^2.2.0",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0",
-        "strip-bom": "^2.0.0"
+      "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz",
+      "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==",
+      "dev": true
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "lodash": {
+    "node_modules/lodash": {
       "version": "4.17.21",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "dev": true
     },
-    "lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
-      "requires": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
+    "node_modules/lodash.deburr": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz",
+      "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==",
+      "dev": true
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
-    "make-iterator": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
-      "integrity": "sha1-KbM/MSqo9UfEpeSQ9Wr87JkTOtY=",
-      "requires": {
-        "kind-of": "^6.0.2"
+    "node_modules/luxon": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz",
+      "integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
       }
     },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
-    },
-    "map-stream": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
-      "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg="
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "markdown": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz",
-      "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=",
-      "requires": {
-        "nopt": "~2.1.1"
-      },
-      "dependencies": {
-        "nopt": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
-          "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=",
-          "requires": {
-            "abbrev": "1"
-          }
-        }
+    "node_modules/markdown-it": {
+      "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz",
+      "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "~3.0.1",
+        "linkify-it": "^4.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.js"
+      }
+    },
+    "node_modules/markdown-it-anchor": {
+      "version": "8.6.7",
+      "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
+      "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
+      "dev": true,
+      "peerDependencies": {
+        "@types/markdown-it": "*",
+        "markdown-it": "*"
+      }
+    },
+    "node_modules/markdown-it-attrs": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz",
+      "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "markdown-it": ">= 9.0.0"
       }
     },
-    "marked": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
-      "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg=="
-    },
-    "matchdep": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
-      "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
-      "requires": {
-        "findup-sync": "^2.0.0",
-        "micromatch": "^3.0.4",
-        "resolve": "^1.4.0",
-        "stack-trace": "0.0.10"
-      },
-      "dependencies": {
-        "findup-sync": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-          "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
-          "requires": {
-            "detect-file": "^1.0.0",
-            "is-glob": "^3.1.0",
-            "micromatch": "^3.0.4",
-            "resolve-dir": "^1.0.1"
-          }
-        },
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
+    "node_modules/markdown-it-container": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz",
+      "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==",
+      "dev": true
     },
-    "metalsmith": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/metalsmith/-/metalsmith-2.3.0.tgz",
-      "integrity": "sha1-gzr7taKmOF4tmuPZNeOeM+rqUjE=",
-      "requires": {
-        "absolute": "0.0.1",
-        "chalk": "^1.1.3",
-        "clone": "^1.0.2",
-        "co-fs-extra": "^1.2.1",
-        "commander": "^2.6.0",
-        "gray-matter": "^2.0.0",
-        "has-generators": "^1.0.1",
-        "is": "^3.1.0",
-        "is-utf8": "~0.2.0",
-        "recursive-readdir": "^2.1.0",
-        "rimraf": "^2.2.8",
-        "stat-mode": "^0.2.0",
-        "thunkify": "^2.1.2",
-        "unyield": "0.0.1",
-        "ware": "^1.2.0",
-        "win-fork": "^1.1.1"
-      },
-      "dependencies": {
-        "clone": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-          "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
-        }
+    "node_modules/markdown-it-highlightjs": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/markdown-it-highlightjs/-/markdown-it-highlightjs-4.0.1.tgz",
+      "integrity": "sha512-EPXwFEN6P5nqR3G4KjT20r20xbGYKMMA/360hhSYFmeoGXTE6hsLtJAiB/8ID8slVH4CWHHEL7GX0YenyIstVQ==",
+      "dev": true,
+      "dependencies": {
+        "highlight.js": "^11.5.1"
       }
     },
-    "metalsmith-beautify": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/metalsmith-beautify/-/metalsmith-beautify-0.2.0.tgz",
-      "integrity": "sha1-VDB50ySHcaJPI3azmJ7/ceCzb0o=",
-      "requires": {
-        "debug": "^0.8.1",
-        "js-beautify": "^1.6.0",
-        "lodash": "~2.4.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "0.8.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz",
-          "integrity": "sha1-IP9NJvXkIstoobrLu2EDmtjBwTA="
-        },
-        "lodash": {
-          "version": "2.4.2",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
-          "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
-        }
+    "node_modules/maximatch": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
+      "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==",
+      "dev": true,
+      "dependencies": {
+        "array-differ": "^1.0.0",
+        "array-union": "^1.0.1",
+        "arrify": "^1.0.0",
+        "minimatch": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "metalsmith-headings": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/metalsmith-headings/-/metalsmith-headings-0.2.0.tgz",
-      "integrity": "sha1-ucTX4WCeN3tFhj1HrjmGG4bFBSk=",
-      "requires": {
-        "cheerio": "^0.14.0"
+    "node_modules/maximatch/node_modules/array-differ": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+      "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "metalsmith-markdown": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/metalsmith-markdown/-/metalsmith-markdown-1.2.0.tgz",
-      "integrity": "sha1-R0KeaHpYK9/ZPKgEjdX8EUG625Q=",
-      "requires": {
-        "debug": "^4.1.1",
-        "marked": "^0.6.1"
-      },
+    "node_modules/maximatch/node_modules/array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+      "dev": true,
       "dependencies": {
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "marked": {
-          "version": "0.6.3",
-          "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.3.tgz",
-          "integrity": "sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ=="
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
-        }
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
+    "node_modules/maximatch/node_modules/arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "mime": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY="
-    },
-    "mime-db": {
-      "version": "1.40.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-      "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI="
-    },
-    "mime-types": {
-      "version": "2.1.24",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-      "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
-      "requires": {
-        "mime-db": "1.40.0"
-      }
+    "node_modules/mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
+      "dev": true
     },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
     },
-    "minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
-    },
-    "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
       }
     },
-    "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "requires": {
-        "minimist": "0.0.8"
+    "node_modules/mime": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+      "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
       },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
-        }
+      "engines": {
+        "node": ">=10.0.0"
       }
     },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-    },
-    "mute-stdout": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
-      "integrity": "sha1-rLAwDrTeI6fd7sAU4+lgRLNHIzE="
-    },
-    "nan": {
-      "version": "2.13.2",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
-      "integrity": "sha1-9R3Hrma6fV1V4ebU2AkugCya7+c=",
-      "optional": true
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
+    "node_modules/mimic-fn": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
-    },
-    "next-tick": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
-    },
-    "nopt": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
-      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
-      "requires": {
-        "abbrev": "1",
-        "osenv": "^0.1.4"
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
       }
     },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "requires": {
-        "remove-trailing-separator": "^1.0.1"
+    "node_modules/minipass": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+      "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "now-and-later": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
-      "integrity": "sha1-jlechoV2SnzALLaAOA6U9DzLH3w=",
-      "requires": {
-        "once": "^1.3.2"
+    "node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
       }
     },
-    "number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+    "node_modules/moo": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
+      "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
+      "dev": true
     },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    "node_modules/morphdom": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.1.tgz",
+      "integrity": "sha512-LwrrjplMolniWtOGluKF1EHZ0y78Fa4sq7f/MXCydyNkDof+POf+ruCn+k08l7H7b/JISfRo8Zd0HazuqySY9w==",
+      "dev": true
     },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/multimatch": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
+      "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
+      "dev": true,
+      "dependencies": {
+        "@types/minimatch": "^3.0.3",
+        "array-differ": "^3.0.0",
+        "array-union": "^2.1.0",
+        "arrify": "^2.0.1",
+        "minimatch": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4="
+    "node_modules/mustache": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+      "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+      "dev": true,
+      "bin": {
+        "mustache": "bin/mustache"
+      }
     },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "requires": {
-        "isobject": "^3.0.0"
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.13",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+      "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "object.assign": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
-      "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=",
-      "requires": {
-        "define-properties": "^1.1.2",
-        "function-bind": "^1.1.1",
-        "has-symbols": "^1.0.0",
-        "object-keys": "^1.0.11"
+    "node_modules/npm-run-path": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+      "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "object.defaults": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
-      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
-      "requires": {
-        "array-each": "^1.0.1",
-        "array-slice": "^1.0.0",
-        "for-own": "^1.0.0",
-        "isobject": "^3.0.0"
+    "node_modules/npm-run-path/node_modules/path-key": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "object.map": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
-      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
-      "requires": {
-        "for-own": "^1.0.0",
-        "make-iterator": "^1.0.0"
+    "node_modules/nunjucks": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz",
+      "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==",
+      "dev": true,
+      "dependencies": {
+        "a-sync-waterfall": "^1.0.0",
+        "asap": "^2.0.3",
+        "commander": "^5.1.0"
+      },
+      "bin": {
+        "nunjucks-precompile": "bin/precompile"
+      },
+      "engines": {
+        "node": ">= 6.9.0"
+      },
+      "peerDependencies": {
+        "chokidar": "^3.3.0"
+      },
+      "peerDependenciesMeta": {
+        "chokidar": {
+          "optional": true
+        }
       }
     },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-      "requires": {
-        "isobject": "^3.0.1"
+    "node_modules/nunjucks/node_modules/commander": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+      "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
       }
     },
-    "object.reduce": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz",
-      "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=",
-      "requires": {
-        "for-own": "^1.0.0",
-        "make-iterator": "^1.0.0"
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "requires": {
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "dev": true,
+      "dependencies": {
         "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
       }
     },
-    "once": {
+    "node_modules/once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
+      "dev": true,
+      "dependencies": {
         "wrappy": "1"
       }
     },
-    "optimist": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "requires": {
-        "minimist": "~0.0.1",
-        "wordwrap": "~0.0.2"
-      },
+    "node_modules/onetime": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+      "dev": true,
       "dependencies": {
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
-        }
-      }
-    },
-    "ordered-read-streams": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
-      "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=",
-      "requires": {
-        "readable-stream": "^2.0.1"
+        "mimic-fn": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
-    },
-    "os-locale": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "requires": {
-        "lcid": "^1.0.0"
+    "node_modules/open": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+      "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+      "dev": true,
+      "dependencies": {
+        "default-browser": "^4.0.0",
+        "define-lazy-prop": "^3.0.0",
+        "is-inside-container": "^1.0.0",
+        "is-wsl": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
-    },
-    "osenv": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-      "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
-      "requires": {
-        "os-homedir": "^1.0.0",
-        "os-tmpdir": "^1.0.0"
+    "node_modules/optionator": {
+      "version": "0.9.3",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+      "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+      "dev": true,
+      "dependencies": {
+        "@aashutoshrathi/word-wrap": "^1.2.3",
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
-    "parse-filepath": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
-      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
-      "requires": {
-        "is-absolute": "^1.0.0",
-        "map-cache": "^0.2.0",
-        "path-root": "^0.1.1"
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "parse-json": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
-      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-      "requires": {
-        "error-ex": "^1.2.0"
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "parse-node-version": {
+    "node_modules/parent-module": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
-      "integrity": "sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs="
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
     },
-    "parse-passwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
+    "node_modules/parse-srcset": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
+      "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==",
+      "dev": true
     },
-    "parseurl": {
+    "node_modules/parseurl": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ="
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA="
-    },
-    "path-exists": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
-      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-      "requires": {
-        "pinkie-promise": "^2.0.0"
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
       }
     },
-    "path-is-absolute": {
+    "node_modules/path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-    },
-    "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw="
-    },
-    "path-root": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
-      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
-      "requires": {
-        "path-root-regex": "^0.1.0"
-      }
-    },
-    "path-root-regex": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
-      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
-    },
-    "path-type": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
-      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
-    },
-    "pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
-    },
-    "pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "requires": {
-        "pinkie": "^2.0.0"
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
-    },
-    "pretty-hrtime": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
-      "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
-    },
-    "process-nextick-args": {
+    "node_modules/path-parse": {
       "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
     },
-    "proto-list": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
-      "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk="
+    "node_modules/path-to-regexp": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+      "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
+      "dev": true
     },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
     },
-    "pump": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-      "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
       }
     },
-    "pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
-      "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
+    "node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "qs": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
-    },
-    "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
-    },
-    "raw-body": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
-      "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
-      "requires": {
-        "bytes": "1",
-        "string_decoder": "0.10"
-      },
-      "dependencies": {
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-        }
+    "node_modules/please-upgrade-node": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+      "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+      "dev": true,
+      "dependencies": {
+        "semver-compare": "^1.0.0"
       }
     },
-    "read-pkg": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
-      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "requires": {
-        "load-json-file": "^1.0.0",
-        "normalize-package-data": "^2.3.2",
-        "path-type": "^1.0.0"
+    "node_modules/posthtml": {
+      "version": "0.16.6",
+      "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
+      "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==",
+      "dev": true,
+      "dependencies": {
+        "posthtml-parser": "^0.11.0",
+        "posthtml-render": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
       }
     },
-    "read-pkg-up": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
-      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "requires": {
-        "find-up": "^1.0.0",
-        "read-pkg": "^1.0.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.6",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-      "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      },
-      "dependencies": {
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
-        }
+    "node_modules/posthtml-parser": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz",
+      "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==",
+      "dev": true,
+      "dependencies": {
+        "htmlparser2": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=12"
       }
     },
-    "readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
+    "node_modules/posthtml-render": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz",
+      "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==",
+      "dev": true,
+      "dependencies": {
+        "is-json": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=12"
       }
     },
-    "rechoir": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-      "requires": {
-        "resolve": "^1.1.6"
+    "node_modules/posthtml-urls": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/posthtml-urls/-/posthtml-urls-1.0.0.tgz",
+      "integrity": "sha512-CMJ0L009sGQVUuYM/g6WJdscsq6ooAwhUuF6CDlYPMLxKp2rmCYVebEU+wZGxnQstGJhZPMvXsRhtqekILd5/w==",
+      "dev": true,
+      "dependencies": {
+        "http-equiv-refresh": "^1.0.0",
+        "list-to-array": "^1.1.0",
+        "parse-srcset": "^1.0.2",
+        "promise-each": "^2.2.0"
+      },
+      "engines": {
+        "node": ">= 4"
       }
     },
-    "recursive-readdir": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
-      "integrity": "sha1-mUb7MnThYo3m42svZxSVO0hFCU8=",
-      "requires": {
-        "minimatch": "3.0.4"
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
+    "node_modules/prettier": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+      "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+      "dev": true,
+      "bin": {
+        "prettier": "bin/prettier.cjs"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
       }
     },
-    "remove-bom-buffer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
-      "integrity": "sha1-wr8eN3Ug0yT2I4kuM8EMrCwlK1M=",
-      "requires": {
-        "is-buffer": "^1.1.5",
-        "is-utf8": "^0.2.1"
+    "node_modules/prettier-linter-helpers": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+      "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+      "dev": true,
+      "dependencies": {
+        "fast-diff": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
       }
     },
-    "remove-bom-stream": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz",
-      "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=",
-      "requires": {
-        "remove-bom-buffer": "^3.0.0",
-        "safe-buffer": "^5.1.0",
-        "through2": "^2.0.3"
+    "node_modules/promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "dev": true,
+      "dependencies": {
+        "asap": "~2.0.3"
       }
     },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
-    },
-    "repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4="
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
-    },
-    "replace-ext": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
-      "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
-    },
-    "replace-homedir": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz",
-      "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=",
-      "requires": {
-        "homedir-polyfill": "^1.0.1",
-        "is-absolute": "^1.0.0",
-        "remove-trailing-separator": "^1.1.0"
+    "node_modules/promise-each": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz",
+      "integrity": "sha512-67roqt1k3QDA41DZ8xi0V+rF3GoaMiX7QilbXu0vXimut+9RcKBNZ/t60xCRgcsihmNUsEjh48xLfNqOrKblUg==",
+      "dev": true,
+      "dependencies": {
+        "any-promise": "^0.1.0"
       }
     },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
-    },
-    "require-main-filename": {
+    "node_modules/prr": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+      "dev": true
     },
-    "resolve": {
-      "version": "1.10.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
-      "integrity": "sha1-ZkhCrJYHlbvnWCIc3M2mH7ZLXxg=",
-      "requires": {
-        "path-parse": "^1.0.6"
+    "node_modules/pug": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz",
+      "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==",
+      "dev": true,
+      "dependencies": {
+        "pug-code-gen": "^3.0.3",
+        "pug-filters": "^4.0.0",
+        "pug-lexer": "^5.0.1",
+        "pug-linker": "^4.0.0",
+        "pug-load": "^3.0.0",
+        "pug-parser": "^6.0.0",
+        "pug-runtime": "^3.0.1",
+        "pug-strip-comments": "^2.0.0"
       }
     },
-    "resolve-dir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
-      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
-      "requires": {
-        "expand-tilde": "^2.0.0",
-        "global-modules": "^1.0.0"
+    "node_modules/pug-attrs": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
+      "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
+      "dev": true,
+      "dependencies": {
+        "constantinople": "^4.0.1",
+        "js-stringify": "^1.0.2",
+        "pug-runtime": "^3.0.0"
       }
     },
-    "resolve-options": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
-      "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=",
-      "requires": {
-        "value-or-function": "^3.0.0"
-      }
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
-    },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w="
-    },
-    "rimraf": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-      "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
-      "requires": {
-        "glob": "^7.1.3"
+    "node_modules/pug-code-gen": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz",
+      "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==",
+      "dev": true,
+      "dependencies": {
+        "constantinople": "^4.0.1",
+        "doctypes": "^1.1.0",
+        "js-stringify": "^1.0.2",
+        "pug-attrs": "^3.0.0",
+        "pug-error": "^2.1.0",
+        "pug-runtime": "^3.0.1",
+        "void-elements": "^3.1.0",
+        "with": "^7.0.0"
       }
     },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
-    },
-    "safe-json-parse": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
-      "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c="
+    "node_modules/pug-error": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz",
+      "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==",
+      "dev": true
     },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "requires": {
-        "ret": "~0.1.10"
+    "node_modules/pug-filters": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
+      "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
+      "dev": true,
+      "dependencies": {
+        "constantinople": "^4.0.1",
+        "jstransformer": "1.0.0",
+        "pug-error": "^2.0.0",
+        "pug-walk": "^2.0.0",
+        "resolve": "^1.15.1"
       }
     },
-    "semver": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-      "integrity": "sha1-eQp89v6lRZuslhELKbYEEtyP+Ws="
-    },
-    "semver-greatest-satisfied-range": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz",
-      "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=",
-      "requires": {
-        "sver-compat": "^1.5.0"
+    "node_modules/pug-lexer": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
+      "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
+      "dev": true,
+      "dependencies": {
+        "character-parser": "^2.2.0",
+        "is-expression": "^4.0.0",
+        "pug-error": "^2.0.0"
       }
     },
-    "send": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-      "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=",
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.6.2",
-        "mime": "1.4.1",
-        "ms": "2.0.0",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.0",
-        "statuses": "~1.4.0"
-      },
-      "dependencies": {
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic="
-        }
+    "node_modules/pug-linker": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
+      "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
+      "dev": true,
+      "dependencies": {
+        "pug-error": "^2.0.0",
+        "pug-walk": "^2.0.0"
       }
     },
-    "serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
-      "requires": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
+    "node_modules/pug-load": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
+      "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
+      "dev": true,
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "pug-walk": "^2.0.0"
       }
     },
-    "serve-static": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-      "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=",
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.2",
-        "send": "0.16.2"
+    "node_modules/pug-parser": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
+      "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
+      "dev": true,
+      "dependencies": {
+        "pug-error": "^2.0.0",
+        "token-stream": "1.0.0"
       }
     },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    "node_modules/pug-runtime": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
+      "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==",
+      "dev": true
     },
-    "set-value": {
+    "node_modules/pug-strip-comments": {
       "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
-      "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=",
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+      "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
+      "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
+      "dev": true,
+      "dependencies": {
+        "pug-error": "^2.0.0"
       }
     },
-    "setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY="
+    "node_modules/pug-walk": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
+      "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==",
+      "dev": true
     },
-    "sigmund": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
-      "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
+    "node_modules/punycode": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
         },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
         }
-      }
+      ]
     },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
       }
     },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
-      "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/recursive-copy": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz",
+      "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.2",
+        "graceful-fs": "^4.1.4",
+        "junk": "^1.0.1",
+        "maximatch": "^0.1.0",
+        "mkdirp": "^0.5.1",
+        "pify": "^2.3.0",
+        "promise": "^7.0.1",
+        "rimraf": "^2.7.1",
+        "slash": "^1.0.0"
+      }
+    },
+    "node_modules/resolve": {
+      "version": "1.22.8",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+      "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.13.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "source-map": {
-      "version": "0.1.34",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
-      "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
-      "requires": {
-        "amdefine": ">=0.0.4"
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
       }
     },
-    "source-map-resolve": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
-      "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
-      "requires": {
-        "atob": "^2.1.1",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
       }
     },
-    "source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
-    },
-    "sparkles": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
-      "integrity": "sha1-AI22XtzmxQ7sDF4ijhlFBh3QQ3w="
+    "node_modules/rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
     },
-    "spdx-correct": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
-      "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
+    "node_modules/run-applescript": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+      "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "spdx-exceptions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
-      "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc="
+    "node_modules/run-applescript/node_modules/execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+      }
     },
-    "spdx-expression-parse": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-      "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
+    "node_modules/run-applescript/node_modules/human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.17.0"
       }
     },
-    "spdx-license-ids": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
-      "integrity": "sha1-dezRqI3owYTvAV6vtRtbSL/RG7E="
+    "node_modules/run-applescript/node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
-      "requires": {
-        "extend-shallow": "^3.0.0"
+    "node_modules/run-applescript/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
       }
     },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+    "node_modules/run-applescript/node_modules/npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
     },
-    "stack-trace": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+    "node_modules/run-applescript/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
-    "stat-mode": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
-      "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI="
+    "node_modules/run-applescript/node_modules/strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
     },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
         }
+      ],
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
       }
     },
-    "statuses": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
-    },
-    "stream-exhaust": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz",
-      "integrity": "sha1-rNrI2lnvK8HheiwMz2wyDRIOVV0="
-    },
-    "stream-shift": {
+    "node_modules/section-matter": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
-      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
-    },
-    "string-template": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
-      "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0="
+      "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+      "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
     },
-    "string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "requires": {
-        "code-point-at": "^1.0.0",
-        "is-fullwidth-code-point": "^1.0.0",
-        "strip-ansi": "^3.0.0"
+    "node_modules/semver": {
+      "version": "7.5.4",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
-    "string_decoder": {
+    "node_modules/semver-compare": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+      "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+      "dev": true
+    },
+    "node_modules/set-function-length": {
       "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
-      "requires": {
-        "safe-buffer": "~5.1.0"
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.1.1",
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
       }
     },
-    "strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "requires": {
-        "ansi-regex": "^2.0.0"
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "strip-bom": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
-      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-      "requires": {
-        "is-utf8": "^0.2.0"
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "supports-color": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
     },
-    "sver-compat": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz",
-      "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=",
-      "requires": {
-        "es6-iterator": "^2.0.1",
-        "es6-symbol": "^3.1.1"
+    "node_modules/slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "swig": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz",
-      "integrity": "sha1-QIXKBFM2kQS11IPihBs5t64aq6U=",
-      "requires": {
-        "optimist": "~0.6",
-        "uglify-js": "~2.4"
+    "node_modules/slugify": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
+      "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.0.0"
       }
     },
-    "swig-extras": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/swig-extras/-/swig-extras-0.0.1.tgz",
-      "integrity": "sha1-tQP+3jcqucJMasaMr2VrzvGHIyg=",
-      "requires": {
-        "markdown": "~0.5.0"
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
-      "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+      "dev": true
+    },
+    "node_modules/ssri": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+      "dev": true,
+      "dependencies": {
+        "minipass": "^3.1.1"
+      },
+      "engines": {
+        "node": ">= 8"
       }
     },
-    "through2-filter": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
-      "integrity": "sha1-cA54bfI2fCyIzYqlvkz5weeDElQ=",
-      "requires": {
-        "through2": "~2.0.0",
-        "xtend": "~4.0.0"
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
       }
     },
-    "thunkify": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz",
-      "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0="
-    },
-    "thunkify-wrap": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/thunkify-wrap/-/thunkify-wrap-1.0.4.tgz",
-      "integrity": "sha1-tSvlSN3+/aIOALWMYJZ2K0PdaIA=",
-      "requires": {
-        "enable": "1"
+    "node_modules/strip-bom-string": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+      "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "time-stamp": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
-      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
-    },
-    "tiny-lr": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
-      "integrity": "sha1-n6VHQS8jj+2waO4pWvi2gsmLKqs=",
-      "requires": {
-        "body": "^5.1.0",
-        "debug": "^3.1.0",
-        "faye-websocket": "~0.10.0",
-        "livereload-js": "^2.3.0",
-        "object-assign": "^4.1.0",
-        "qs": "^6.4.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
-        }
+    "node_modules/strip-final-newline": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "to-absolute-glob": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
-      "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=",
-      "requires": {
-        "is-absolute": "^1.0.0",
-        "is-negated-glob": "^1.0.0"
-      }
-    },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
       }
     },
-    "to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "requires": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
+    "node_modules/supports-color/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
       }
     },
-    "to-through": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
-      "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=",
-      "requires": {
-        "through2": "^2.0.3"
-      }
-    },
-    "toml": {
-      "version": "2.3.6",
-      "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz",
-      "integrity": "sha1-JbCGZIOpciR0iVVZCItDb9Efhhs="
-    },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
-    },
-    "uglify-js": {
-      "version": "2.4.24",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
-      "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=",
-      "requires": {
-        "async": "~0.2.6",
-        "source-map": "0.1.34",
-        "uglify-to-browserify": "~1.0.0",
-        "yargs": "~3.5.4"
-      }
-    },
-    "uglify-to-browserify": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
-    },
-    "unc-path-regex": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
-      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
-    },
-    "undertaker": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz",
-      "integrity": "sha1-cBZi/4zjWHFTJN/UkqTwNgVd/ks=",
-      "requires": {
-        "arr-flatten": "^1.0.1",
-        "arr-map": "^2.0.0",
-        "bach": "^1.0.0",
-        "collection-map": "^1.0.0",
-        "es6-weak-map": "^2.0.1",
-        "last-run": "^1.1.0",
-        "object.defaults": "^1.0.0",
-        "object.reduce": "^1.0.0",
-        "undertaker-registry": "^1.0.0"
-      }
-    },
-    "undertaker-registry": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz",
-      "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA="
-    },
-    "union-value": {
+    "node_modules/supports-preserve-symlinks-flag": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
-      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^0.4.3"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "set-value": {
-          "version": "0.4.3",
-          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
-          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-extendable": "^0.1.1",
-            "is-plain-object": "^2.0.1",
-            "to-object-path": "^0.3.0"
-          }
-        }
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "unique-stream": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
-      "integrity": "sha1-xl0RDppK35psWUiygFPZqNBMvqw=",
-      "requires": {
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "through2-filter": "^3.0.0"
+    "node_modules/synckit": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
+      "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
+      "dev": true,
+      "dependencies": {
+        "@pkgr/utils": "^2.3.1",
+        "tslib": "^2.5.0"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/unts"
       }
     },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
     },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
-        }
+    "node_modules/titleize": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+      "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "unyield": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/unyield/-/unyield-0.0.1.tgz",
-      "integrity": "sha1-FQ5l2kK/d0JEW5WKZOubhdHSsYA=",
-      "requires": {
-        "co": "~3.1.0"
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
       }
     },
-    "upath": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
-      "integrity": "sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg="
-    },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
-    },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8="
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-    },
-    "v8flags": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz",
-      "integrity": "sha1-/FzQwidCgYHmwpspkuT48dpeDJ8=",
-      "requires": {
-        "homedir-polyfill": "^1.0.1"
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
       }
     },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
+    "node_modules/token-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
+      "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==",
+      "dev": true
     },
-    "value-or-function": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz",
-      "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM="
+    "node_modules/tslib": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+      "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+      "dev": true
     },
-    "vinyl": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
-      "integrity": "sha1-2FsH2pbkWNJbL/4Z/s6fLKoT7YY=",
-      "requires": {
-        "clone": "^2.1.1",
-        "clone-buffer": "^1.0.0",
-        "clone-stats": "^1.0.0",
-        "cloneable-readable": "^1.0.0",
-        "remove-trailing-separator": "^1.0.1",
-        "replace-ext": "^1.0.0"
-      }
-    },
-    "vinyl-fs": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",
-      "integrity": "sha1-yFhJQF9nQo/qu71cXb3WT0fTG8c=",
-      "requires": {
-        "fs-mkdirp-stream": "^1.0.0",
-        "glob-stream": "^6.1.0",
-        "graceful-fs": "^4.0.0",
-        "is-valid-glob": "^1.0.0",
-        "lazystream": "^1.0.0",
-        "lead": "^1.0.0",
-        "object.assign": "^4.0.4",
-        "pumpify": "^1.3.5",
-        "readable-stream": "^2.3.3",
-        "remove-bom-buffer": "^3.0.0",
-        "remove-bom-stream": "^1.2.0",
-        "resolve-options": "^1.1.0",
-        "through2": "^2.0.0",
-        "to-through": "^2.0.0",
-        "value-or-function": "^3.0.0",
-        "vinyl": "^2.0.0",
-        "vinyl-sourcemap": "^1.1.0"
-      }
-    },
-    "vinyl-sourcemap": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
-      "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
-      "requires": {
-        "append-buffer": "^1.0.2",
-        "convert-source-map": "^1.5.0",
-        "graceful-fs": "^4.1.6",
-        "normalize-path": "^2.1.1",
-        "now-and-later": "^2.0.0",
-        "remove-bom-buffer": "^3.0.0",
-        "vinyl": "^2.0.0"
-      }
-    },
-    "ware": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz",
-      "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=",
-      "requires": {
-        "wrap-fn": "^0.1.0"
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
       }
     },
-    "websocket-driver": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
-      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
-      "requires": {
-        "http-parser-js": ">=0.4.0",
-        "websocket-extensions": ">=0.1.1"
+    "node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "websocket-extensions": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
-    },
-    "which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
-      "requires": {
-        "isexe": "^2.0.0"
+    "node_modules/uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+      "dev": true
+    },
+    "node_modules/uglify-js": {
+      "version": "3.17.4",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+      "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
       }
     },
-    "which-module": {
+    "node_modules/unpipe": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
-      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
-    },
-    "win-fork": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz",
-      "integrity": "sha1-j1jgZW/KAK3IyGoriePNLWotXl4="
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
     },
-    "window-size": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
-      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+    "node_modules/untildify": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+      "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+      "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/browserslist"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/browserslist"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "peer": true,
+      "dependencies": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
     },
-    "wordwrap": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
     },
-    "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
+    "node_modules/void-elements": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+      "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "wrap-fn": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz",
-      "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=",
-      "requires": {
-        "co": "3.1.0"
+    "node_modules/with": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
+      "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.9.6",
+        "@babel/types": "^7.9.6",
+        "assert-never": "^1.2.1",
+        "babel-walk": "3.0.0-canary-5"
+      },
+      "engines": {
+        "node": ">= 10.0.0"
       }
     },
-    "wrappy": {
+    "node_modules/wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+      "dev": true
+    },
+    "node_modules/wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
-    },
-    "y18n": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
-      "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ=="
-    },
-    "yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
-    },
-    "yargs": {
-      "version": "3.5.4",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
-      "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=",
-      "requires": {
-        "camelcase": "^1.0.2",
-        "decamelize": "^1.0.0",
-        "window-size": "0.1.0",
-        "wordwrap": "0.0.2"
-      },
-      "dependencies": {
-        "wordwrap": {
-          "version": "0.0.2",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "node_modules/ws": {
+      "version": "8.17.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+      "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
         }
       }
     },
-    "yargs-parser": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
-      "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
-      "requires": {
-        "camelcase": "^3.0.0",
-        "object.assign": "^4.1.0"
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
       },
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
-        }
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     }
   }
diff --git a/package.json b/package.json
index 91fe15bd..cde7576c 100644
--- a/package.json
+++ b/package.json
@@ -2,25 +2,28 @@
   "name": "jsdoc.github.io",
   "version": "0.0.0",
   "description": "Documentation website for JSDoc.",
-  "main": "gulpfile.js",
-  "dependencies": {
-    "code-prettify": "^0.1.0",
-    "fs-extra": "^7.0.1",
-    "gulp": "^4.0.1",
-    "gulp-connect": "^5.7.0",
-    "harmonize": "^2.0.0",
+  "devDependencies": {
+    "@11ty/eleventy": "^2.0.1",
+    "@jsdoc/eslint-config": "^1.2.4",
+    "@jsdoc/prettier-config": "^0.2.3",
+    "eslint": "^8.51.0",
+    "eslint-config-prettier": "^9.0.0",
+    "eslint-plugin-prettier": "^5.0.1",
+    "highlight.js": "^11.9.0",
+    "js-yaml": "^4.1.0",
     "lodash": "^4.17.21",
-    "marked": "^0.7.0",
-    "metalsmith": "^2.3.0",
-    "metalsmith-beautify": "^0.2.0",
-    "metalsmith-headings": "^0.2.0",
-    "metalsmith-markdown": "^1.2.0",
-    "minimist": "^1.2.6",
-    "swig": "~1.4.2",
-    "swig-extras": "~0.0.1"
+    "markdown-it": "^13.0.2",
+    "markdown-it-anchor": "^8.6.7",
+    "markdown-it-attrs": "^4.1.6",
+    "markdown-it-container": "^3.0.0",
+    "markdown-it-highlightjs": "^4.0.1",
+    "prettier": "^3.0.3"
   },
   "private": true,
   "scripts": {
+    "build": "npx eleventy",
+    "serve": "npx eleventy --serve",
+    "debug": "DEBUG=* npx eleventy",
     "test": "echo \"Error: no test specified\" && exit 1"
   },
   "repository": {
diff --git a/plugins-markdown.html b/plugins-markdown.html
deleted file mode 100644
index 42861942..00000000
--- a/plugins-markdown.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Enable Markdown support in JSDoc.">
-  <title>Use JSDoc: Using the Markdown plugin</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>Using the Markdown plugin</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#enabling-the-markdown-plugin">Enabling the Markdown plugin</a>
-      </li>
-      <li>
-        <a href="#converting-markdown-in-additional-jsdoc-tags">Converting Markdown in additional JSDoc tags</a>
-      </li>
-      <li>
-        <a href="#excluding-the-default-tags-from-markdown-processing">Excluding the default tags from Markdown processing</a>
-      </li>
-      <li>
-        <a href="#hard-wrapping-text-at-line-breaks">Hard-wrapping text at line breaks</a>
-      </li>
-      <li>
-        <a href="#adding-id-attributes-to-headings">Adding ID attributes to headings</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>JSDoc includes a Markdown plugin that automatically converts Markdown-formatted text to HTML. You
-      can use this plugin with any JSDoc template. In JSDoc 3.2.2 and later, the Markdown plugin uses the
-      <a href="https://github.com/chjj/marked">marked Markdown parser</a>.</p>
-    <p><strong>Note</strong>: When you enable the Markdown plugin, be sure to include a leading asterisk on each line of
-      your JSDoc comments. If you omit the leading asterisks, JSDoc&#39;s parser may remove asterisks that are
-      used for Markdown formatting.</p>
-    <p><a name="default-tags"></a>
-      By default, JSDoc looks for Markdown-formatted text in the following JSDoc tags:</p>
-    <ul>
-      <li><a href="tags-author.html"><code>@author</code></a></li>
-      <li><a href="tags-classdesc.html"><code>@classdesc</code></a></li>
-      <li><a href="tags-description.html"><code>@description</code></a> (including untagged descriptions at the start of a JSDoc
-        comment)</li>
-      <li><a href="tags-param.html"><code>@param</code></a></li>
-      <li><a href="tags-property.html"><code>@property</code></a></li>
-      <li><a href="tags-returns.html"><code>@returns</code></a></li>
-      <li><a href="tags-see.html"><code>@see</code></a></li>
-      <li><a href="tags-throws.html"><code>@throws</code></a></li>
-    </ul>
-    <h2 id="enabling-the-markdown-plugin">Enabling the Markdown plugin</h2>
-    <p>To enable the Markdown plugin, add the string <code>plugins/markdown</code> to the <code>plugins</code> array in your
-      <a href="about-configuring-jsdoc.html">JSDoc configuration file</a>:</p>
-    <figure>
-      <figcaption>JSON configuration file that enables the Markdown plugin</figcaption>
-      <pre class="prettyprint lang-json"><code>{
-    "plugins": ["plugins/markdown"]
-}
-</code></pre>
-    </figure>
-    <h2 id="converting-markdown-in-additional-jsdoc-tags">Converting Markdown in additional JSDoc tags</h2>
-    <p>By default, the Markdown plugin only processes <a href="#default-tags">specific JSDoc tags</a> for Markdown
-      text. You can handle Markdown text in other tags by adding a <code>markdown.tags</code> property to your JSDoc
-      configuration file. The <code>markdown.tags</code> property contains an array of the additional doclet
-      properties that can contain Markdown text. (In most cases, the name of the doclet property is the
-      same as the tag name. However, some tags are stored differently; for example, the <code>@param</code> tag is
-      stored in a doclet&#39;s <code>params</code> property. If you&#39;re not sure how a tag&#39;s text is stored in a doclet,
-      run JSDoc with the <code>-X/--explain</code> tag, which prints each doclet to the console.)</p>
-    <p>For example, if the <code>foo</code> and <code>bar</code> tags accept values that are stored in a doclet&#39;s <code>foo</code> and <code>bar</code>
-      properties, you could enable Markdown processing of these tags by adding the following settings to
-      your JSDoc configuration file:</p>
-    <figure>
-      <figcaption>Converting Markdown in &#39;foo&#39; and &#39;bar&#39; tags</figcaption>
-      <pre class="prettyprint lang-json"><code>{
-    "plugins": ["plugins/markdown"],
-    "markdown": {
-        "tags": ["foo", "bar"]
-    }
-}
-</code></pre>
-    </figure>
-    <h2 id="excluding-the-default-tags-from-markdown-processing">Excluding the default tags from Markdown processing</h2>
-    <p>To prevent the Markdown plugin from processing any of the <a href="#default-tags">default JSDoc tags</a>, add a
-      <code>markdown.excludeTags</code> property to your JSDoc configuration file. The <code>markdown.excludeTags</code>
-      property contains an array of the default tags that should not be processed for Markdown text.</p>
-    <p>For example, to exclude the <code>author</code> tag from Markdown processing:</p>
-    <figure>
-      <figcaption>Excluding the &#39;author&#39; tag from Markdown processing</figcaption>
-      <pre class="prettyprint lang-json"><code>{
-    "plugins": ["plugins/markdown"],
-    "markdown": {
-        "excludeTags": ["author"]
-    }
-}
-</code></pre>
-    </figure>
-    <h2 id="hard-wrapping-text-at-line-breaks">Hard-wrapping text at line breaks</h2>
-    <p>By default, the Markdown plugin does not hard-wrap text at line breaks. This is because it&#39;s normal
-      for a JSDoc comment to be wrapped across multiple lines. If you prefer to hard-wrap text at line
-      breaks, set your JSDoc configuration file&#39;s <code>markdown.hardwrap</code> property to <code>true</code>. This property is
-      available in JSDoc 3.4.0 and later.</p>
-    <h2 id="adding-id-attributes-to-headings">Adding ID attributes to headings</h2>
-    <p>By default, the Markdown plugin does not add an <code>id</code> attribute to each HTML heading. To
-      automatically add <code>id</code> attributes based on the heading&#39;s text, set your JSDoc configuration file&#39;s
-      <code>markdown.idInHeadings</code> property to <code>true</code>. This property is available in JSDoc 3.4.0 and later.</p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/scripts/prettify.js b/scripts/prettify.js
deleted file mode 100644
index 3b74b5bd..00000000
--- a/scripts/prettify.js
+++ /dev/null
@@ -1,46 +0,0 @@
-!function(){/*
-
- Copyright (C) 2006 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-window.PR_SHOULD_USE_CONTINUATION=!0;
-(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e=
-[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),k;a+2<g&&"-"===b[a+1]?(k=d(b[a+2]),a+=2):k=h;e.push([h,k]);65>k||122<h||(65>k||90<h||e.push([Math.max(65,h)|32,Math.min(k,90)|32]),97>k||122<h||e.push([Math.max(97,h)&-33,Math.min(k,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];g=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=g[1]+1?g[1]=Math.max(g[1],h[1]):b.push(g=h);for(a=0;a<b.length;++a)h=b[a],
-c.push(f(h[0])),h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(f(h[1])));c.push("]");return c.join("")}function v(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],g=0,h=0;g<c;++g){var k=a[g];"("===k?++h:"\\"===k.charAt(0)&&(k=+k.substring(1))&&(k<=h?d[k]=-1:a[g]=f(k))}for(g=1;g<d.length;++g)-1===d[g]&&(d[g]=++A);for(h=g=0;g<c;++g)k=a[g],"("===k?(++h,d[h]||(a[g]="(?:")):"\\"===
-k.charAt(0)&&(k=+k.substring(1))&&k<=h&&(a[g]="\\"+d[k]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(e.ignoreCase&&n)for(g=0;g<c;++g)k=a[g],e=k.charAt(0),2<=k.length&&"["===e?a[g]=b(k):"\\"!==e&&(a[g]=k.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var A=0,n=!1,l=!1,m=0,c=a.length;m<c;++m){var p=a[m];if(p.ignoreCase)l=!0;else if(/[a-z]/i.test(p.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){n=!0;
-l=!1;break}}for(var w={b:8,t:9,n:10,v:11,f:12,r:13},r=[],m=0,c=a.length;m<c;++m){p=a[m];if(p.global||p.multiline)throw Error(""+p);r.push("(?:"+v(p)+")")}return new RegExp(r.join("|"),l?"gi":"g")}function U(a,d){function f(a){var c=a.nodeType;if(1==c){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)f(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)v[l]="\n",n[l<<1]=A++,n[l++<<1|1]=a}}else if(3==c||4==c)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[ \t\r\n]+/g,
-" "),v[l]=c,n[l<<1]=A,A+=c.length,n[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,v=[],A=0,n=[],l=0;f(a);return{a:v.join("").replace(/\n$/,""),c:n}}function J(a,d,f,b,v){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},b(a),v.push.apply(v,a.g))}function V(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var b=f.nodeType,d=1===b?d?a:f:3===b?W.test(f.nodeValue)?a:d:d;return d===a?void 0:d}function G(a,d){function f(a){for(var l=a.i,m=a.h,c=[l,"pln"],p=0,w=a.a.match(v)||[],r={},e=0,t=w.length;e<
-t;++e){var z=w[e],q=r[z],g=void 0,h;if("string"===typeof q)h=!1;else{var k=b[z.charAt(0)];if(k)g=z.match(k[1]),q=k[0];else{for(h=0;h<A;++h)if(k=d[h],g=z.match(k[1])){q=k[0];break}g||(q="pln")}!(h=5<=q.length&&"lang-"===q.substring(0,5))||g&&"string"===typeof g[1]||(h=!1,q="src");h||(r[z]=q)}k=p;p+=z.length;if(h){h=g[1];var B=z.indexOf(h),D=B+h.length;g[2]&&(D=z.length-g[2].length,B=D-h.length);q=q.substring(5);J(m,l+k,z.substring(0,B),f,c);J(m,l+k+B,h,K(q,h),c);J(m,l+k+D,z.substring(D),f,c)}else c.push(l+
-k,q)}a.g=c}var b={},v;(function(){for(var f=a.concat(d),l=[],m={},c=0,p=f.length;c<p;++c){var w=f[c],r=w[3];if(r)for(var e=r.length;0<=--e;)b[r.charAt(e)]=w;w=w[1];r=""+w;m.hasOwnProperty(r)||(l.push(w),m[r]=null)}l.push(/[\0-\uffff]/);v=T(l)})();var A=d.length;return f}function y(a){var d=[],f=[];a.tripleQuotedStrings?d.push(["str",/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
-null,"'\""]):a.multiLineStrings?d.push(["str",/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):d.push(["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);a.verbatimStrings&&f.push(["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var b=a.hashComments;b&&(a.cStyleComments?(1<b?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
-null,"#"]),f.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1<b?"":"\n\r")?".":"[\\S\\s]";f.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
-("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+v+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+v+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i,
-null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if("br"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&&
-a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\s)nocode(?:\s|$)/,n=/\r\n?|\n/,l=a.ownerDocument,m=l.createElement("li");a.firstChild;)m.appendChild(a.firstChild);
-for(var c=[m],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",d);var w=l.createElement("ol");w.className="linenums";d=Math.max(0,d-1|0)||0;for(var p=0,r=c.length;p<r;++p)m=c[p],m.className="L"+(p+d)%10,m.firstChild||m.appendChild(l.createTextNode("\u00a0")),w.appendChild(m);a.appendChild(w)}function t(a,d){for(var f=d.length;0<=--f;){var b=d[f];I.hasOwnProperty(b)?E.console&&console.warn("cannot override language handler %s",b):I[b]=a}}function K(a,d){a&&I.hasOwnProperty(a)||(a=/^\s*</.test(d)?
-"default-markup":"default-code");return I[a]}function M(a){var d=a.j;try{var f=U(a.h,a.l),b=f.a;a.a=b;a.c=f.c;a.i=0;K(d,b)(a);var v=/\bMSIE\s(\d+)/.exec(navigator.userAgent),v=v&&8>=+v[1],d=/\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e<p;)c[e]!==c[e+2]?(c[r++]=c[e++],c[r++]=c[e++]):e+=2;p=r;for(e=r=0;e<p;){for(var t=c[e],z=c[e+1],q=e+2;q+2<=p&&c[q+1]===z;)q+=2;c[r++]=t;c[r++]=z;e=q}c.length=r;var g=a.h;a="";g&&(a=g.style.display,g.style.display="none");
-try{for(;b<m;){var h=l[b+2]||n,k=c[w+2]||n,q=Math.min(h,k),B=l[b+1],D;if(1!==B.nodeType&&(D=A.substring(f,q))){v&&(D=D.replace(d,"\r"));B.nodeValue=D;var N=B.ownerDocument,u=N.createElement("span");u.className=c[w+1];var y=B.parentNode;y.replaceChild(u,B);u.appendChild(B);f<h&&(l[b+1]=B=N.createTextNode(A.substring(q,h)),y.insertBefore(B,u.nextSibling))}f=q;f>=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"],
-F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
-O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield"],
-F=[F,"abstract,async,await,constructor,debugger,enum,eval,export,function,get,implements,instanceof,interface,let,null,set,undefined,var,with,yield,Infinity,NaN"],Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],
-S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^<?]+/],["dec",
-/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));t(G([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,
-"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);t(G([],[["atv",/^[\s\S]+/]]),["uq.val"]);t(y({keywords:H,
-hashComments:!0,cStyleComments:!0,types:S}),"c cc cpp cxx cyc m".split(" "));t(y({keywords:"null,true,false"}),["json"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:S}),["cs"]);t(y({keywords:O,cStyleComments:!0}),["java"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);t(y({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
-hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),["javascript","js","ts","typescript"]);t(y({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,
-regexLiterals:!0}),["coffee"]);t(G([],[["str",/^[\s\S]+/]]),["regex"]);var Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";
-b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<t.length&&c.now()<b;p++){for(var d=t[p],l=g,m=d;m=m.previousSibling;){var n=m.nodeType,u=(7===n||8===n)&&m.nodeValue;if(u?!/^\??prettify\b/.test(u):3!==n||/\S/.test(m.nodeValue))break;if(u){l={};u.replace(/\b(\w+)=([\w:.%+-]+)/g,function(a,b,c){l[b]=c});break}}m=d.className;if((l!==g||r.test(m))&&
-!e.test(m)){n=!1;for(u=d.parentNode;u;u=u.parentNode)if(q.test(u.tagName)&&u.className&&r.test(u.className)){n=!0;break}if(!n){d.className+=" prettyprinted";n=l.lang;if(!n){var n=m.match(w),C;!n&&(C=V(d))&&z.test(C.tagName)&&(n=C.className.match(w));n&&(n=n[1])}if(y.test(d.tagName))u=1;else var u=d.currentStyle,x=v.defaultView,u=(u=u?u.whiteSpace:x&&x.getComputedStyle?x.getComputedStyle(d,null).getPropertyValue("white-space"):0)&&"pre"===u.substring(0,3);x=l.linenums;(x="true"===x||+x)||(x=(x=m.match(/\blinenums\b(?::(\d+))?/))?
-x[1]&&x[1].length?+x[1]:!0:!1);x&&L(d,x,u);M({j:n,h:d,m:x,l:u,a:null,i:null,c:null,g:null})}}}p<t.length?E.setTimeout(f,250):"function"===typeof a&&a()}for(var b=d||document.body,v=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],t=[],n=0;n<b.length;++n)for(var l=0,m=b[n].length;l<m;++l)t.push(b[n][l]);var b=null,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,w=/\blang(?:uage)?-([\w.]+)(?!\S)/,r=/\bprettyprint\b/,
-e=/\bprettyprinted\b/,y=/pre|xmp/i,z=/^code$/i,q=/^(?:pre|code|xmp)$/i,g={};f()}},H=E.define;"function"===typeof H&&H.amd&&H("google-code-prettify",[],function(){return Y})})();}()
diff --git a/styles/hljs-tomorrow.css b/styles/hljs-tomorrow.css
new file mode 100644
index 00000000..58123fa9
--- /dev/null
+++ b/styles/hljs-tomorrow.css
@@ -0,0 +1,112 @@
+/*
+  Copyright 2022 the JSDoc Authors.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+*/
+
+/* Tomorrow theme for Highlight.js */
+/* Based on https://github.com/chriskempson/tomorrow-theme */
+
+:root {
+  --text-color: #3d3d3c;
+  --tomorrow-blue: #4271ae;
+  --tomorrow-gray: #8e908c;
+  --tomorrow-green: #718c00;
+  --tomorrow-orange: #f5871f;
+  --tomorrow-purple: #8959a8;
+  --tomorrow-red: #c82829;
+  --tomorrow-yellow: #c99e00;
+}
+
+.hljs,
+.no-hljs {
+  color: var(--text-color);
+}
+
+.hljs-code,
+.hljs-formula {
+  color: var(--text-color);
+}
+
+.hljs-comment,
+.hljs-quote {
+  color: var(--tomorrow-gray);
+}
+
+.hljs-deletion,
+.hljs-meta .hljs-keyword,
+.hljs-name,
+.hljs-property,
+.hljs-regexp,
+.hljs-selector-attr,
+.hljs-selector-class,
+.hljs-selector-id,
+.hljs-selector-pseudo,
+.hljs-substr,
+.hljs-tag,
+.hljs-template-tag,
+.hljs-template-variable,
+.hljs-variable,
+.hljs-variable.language_ {
+  color: var(--tomorrow-red);
+}
+
+.hljs-built_in,
+.hljs-char.escape_,
+.hljs-link,
+.hljs-literal,
+.hljs-meta,
+.hljs-number,
+.hljs-operator,
+.hljs-params,
+.hljs-type {
+  color: var(--tomorrow-orange);
+}
+
+.hljs-attribute {
+  color: var(--tomorrow-yellow);
+}
+
+.hljs-addition,
+.hljs-attr,
+.hljs-bullet,
+.hljs-meta .hljs-string,
+.hljs-string,
+.hljs-subst,
+.hljs-symbol,
+.hljs-title.class_.inherited__,
+.hljs-title.function_ {
+  color: var(--tomorrow-green);
+}
+
+.hljs-punctuation,
+.hljs-section,
+.hljs-title {
+  color: var(--tomorrow-blue);
+}
+
+.hljs-keyword,
+.hljs-meta.hljs-keyword,
+.hljs-selector-tag,
+.hljs-title.class_ {
+  color: var(--tomorrow-purple);
+}
+
+.hljs-emphasis {
+  font-style: italic;
+}
+
+.hljs-doctag,
+.hljs-strong {
+  font-weight: bold;
+}
diff --git a/styles/prettify.css b/styles/prettify.css
deleted file mode 100755
index 2925d13a..00000000
--- a/styles/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
-.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}
\ No newline at end of file
diff --git a/tags-abstract.html b/tags-abstract.html
deleted file mode 100644
index 8a3c84b3..00000000
--- a/tags-abstract.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This member must be implemented (or overridden) by the inheritor.">
-  <title>Use JSDoc: @abstract</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@abstract</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@virtual</code>
-    </p>
-    <h2 id="overview">Overview</h2>
-    <p>The @abstract tag identifies members that must be implemented (or overridden) by objects that
-      inherit the member.</p>
-    <h2 id="example">Example</h2>
-    <figure>
-      <figcaption>Parent class with abstract method, and child class that implements the method</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Generic dairy product.
- * @constructor
- */
-function DairyProduct() {}
-
-/**
- * Check whether the dairy product is solid at room temperature.
- * @abstract
- * @return {boolean}
- */
-DairyProduct.prototype.isSolid = function() {
-    throw new Error('must be implemented by subclass!');
-};
-
-/**
- * Cool, refreshing milk.
- * @constructor
- * @augments DairyProduct
- */
-function Milk() {}
-
-/**
- * Check whether milk is solid at room temperature.
- * @return {boolean} Always returns false.
- */
-Milk.prototype.isSolid = function() {
-    return false;
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-access.html b/tags-access.html
deleted file mode 100644
index e05e2bec..00000000
--- a/tags-access.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Specify the access level of this member (private, package-private, public, or protected).">
-  <title>Use JSDoc: @access</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@access</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@access &lt;package|private|protected|public&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@access</code> tag specifies the access level of a member. You can use the <code>@access</code> tag as a
-      synonym for other tags:</p>
-    <ul>
-      <li><code>@access package</code> is the same as <code>@package</code>. This option is available in JSDoc 3.5.0 and later.</li>
-      <li><code>@access private</code> is the same as <code>@private</code>.</li>
-      <li><code>@access protected</code> is the same as <code>@protected</code>.</li>
-      <li><code>@access public</code> is the same as <code>@public</code>.</li>
-    </ul>
-    <p>Private members are not shown in the generated output unless JSDoc is run with the <code>-p/--private</code>
-      command-line option. In JSDoc 3.3.0 and later, you can also use the <a href="about-commandline.html"><code>-a/--access</code> command-line
-        option</a> to change this behavior.</p>
-    <p>Note that a doclet&#39;s <em>access level</em> is different from its <em>scope</em>. For example, if <code>Parent</code> has an
-      inner variable named <code>child</code> that is documented as <code>@public</code>, the <code>child</code> variable will still be
-      treated as an inner variable with the namepath <code>Parent~child</code>. In other words, the <code>child</code> variable
-      will have an inner scope, even though the variable is public. To change a doclet&#39;s scope, use the
-      <a href="tags-instance.html"><code>@instance</code></a>, <a href="tags-static.html"><code>@static</code></a>, and <a
-        href="tags-global.html"><code>@global</code></a> tags.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @access as a synonym for other tags</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constructor */
-function Thingy() {
-
-    /** @access private */
-    var foo = 0;
-
-    /** @access protected */
-    this._bar = 1;
-
-    /** @access package */
-    this.baz = 2;
-
-    /** @access public */
-    this.pez = 3;
-
-}
-
-// same as...
-
-/** @constructor */
-function OtherThingy() {
-
-    /** @private */
-    var foo = 0;
-
-    /** @protected */
-    this._bar = 1;
-
-    /** @package */
-    this.baz = 2;
-
-    /** @public */
-    this.pez = 3;
-
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-package.html">@package</a>
-      </li>
-      <li>
-        <a href="tags-private.html">@private</a>
-      </li>
-      <li>
-        <a href="tags-protected.html">@protected</a>
-      </li>
-      <li>
-        <a href="tags-public.html">@public</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-alias.html b/tags-alias.html
deleted file mode 100644
index 25fb9324..00000000
--- a/tags-alias.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Treat a member as if it had a different name.">
-  <title>Use JSDoc: @alias</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@alias</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@alias &lt;aliasNamepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @alias tag causes JSDoc to treat all references to a member as if the member had a different
-      name. This tag is especially useful if you define a class within an inner function; in this case,
-      you can use the @alias tag to tell JSDoc how the class is exposed in your app.</p>
-    <p>While the @alias tag may sound similar to the @name tag, these tags behave very differently. The
-      @name tag tells JSDoc to ignore any code associated with the comment. For example, when JSDoc
-      processes the following code, it ignores the fact that the comment for <code>bar</code> is attached to a
-      function:</p>
-    <pre class="prettyprint lang-js"><code>/**
- * Bar function.
- * @name bar
- */
-function foo() {}
-</code></pre>
-    <p>The @alias tag tells JSDoc to pretend that Member A is actually named Member B. For example, when
-      JSDoc processes the following code, it recognizes that <code>foo</code> is a function, then renames <code>foo</code> to
-      <code>bar</code> in the documentation:</p>
-    <figure>
-      <pre class="prettyprint lang-js"><code>/**
- * Bar function.
- * @alias bar
- */
-function foo() {}
-</code></pre>
-    </figure>
-    <h2 id="examples">Examples</h2>
-    <p>Suppose you are using a class framework that expects you to pass in a constructor function when you
-      define a class. You can use the @alias tag to tell JSDoc how the class will be exposed in your app.</p>
-    <p>In the following example, the @alias tag tells JSDoc to treat the anonymous function as if it were
-      the constructor for the class &quot;trackr.CookieManager&quot;. Within the function, JSDoc interprets the
-      <code>this</code> keyword relative to trackr.CookieManager, so the &quot;value&quot; method has the namepath
-      &quot;trackr.CookieManager#value&quot;.</p>
-    <figure>
-      <figcaption>Using @alias with an anonymous constructor function</figcaption>
-      <pre class="prettyprint lang-js"><code>Klass('trackr.CookieManager',
-
-    /**
-     * @class
-     * @alias trackr.CookieManager
-     * @param {Object} kv
-     */
-    function(kv) {
-        /** The value. */
-        this.value = kv;
-    }
-
-);
-</code></pre>
-    </figure>
-    <p>You can also use the @alias tag with members that are created within an immediately invoked function
-      expression (IIFE). The @alias tag tells JSDoc that these members are exposed outside of the IIFE&#39;s
-      scope.</p>
-    <figure>
-      <figcaption>Using @alias for static members of a namespace</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var Apple = {};
-
-(function(ns) {
-    /**
-     * @namespace
-     * @alias Apple.Core
-     */
-    var core = {};
-
-    /** Documented as Apple.Core.seed */
-    core.seed = function() {};
-
-    ns.Core = core;
-})(Apple);
-</code></pre>
-    </figure>
-    <p>For members that are defined within an object literal, you can use the @alias tag as an alternative
-      to the <a href="tags-lends.html">@lends</a> tag.</p>
-    <figure>
-      <figcaption>Using @alias for an object literal</figcaption>
-      <pre class="prettyprint lang-js"><code>// Documenting objectA with @alias
-
-var objectA = (function() {
-
-    /**
-     * Documented as objectA
-     * @alias objectA
-     * @namespace
-     */
-    var x = {
-        /**
-         * Documented as objectA.myProperty
-         * @member
-         */
-        myProperty: 'foo'
-    };
-
-    return x;
-})();
-
-// Documenting objectB with @lends
-
-/**
- * Documented as objectB
- * @namespace
- */
-var objectB = (function() {
-
-    /** @lends objectB */
-    var x = {
-        /**
-         * Documented as objectB.myProperty
-         * @member
-         */
-        myProperty: 'bar'
-    };
-
-    return x;
-})();
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-name.html">@name</a>
-      </li>
-      <li>
-        <a href="tags-lends.html">@lends</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-async.html b/tags-async.html
deleted file mode 100644
index 01a93608..00000000
--- a/tags-async.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that a function is asynchronous.">
-  <title>Use JSDoc: @async</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@async</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@async</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@async</code> tag indicates that a function is <a
-        href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function">asynchronous</a>, meaning that it
-      was declared using the syntax <code>async function foo() {}</code>. Do not use this tag for other types of
-      asynchronous functions, such as functions that provide a callback. This tag is available in JSDoc
-      3.5.0 and later.</p>
-    <p>In general, you do not need to use this tag, because JSDoc automatically detects asynchronous
-      functions and identifies them in the generated documentation. However, if you are writing a virtual
-      comment for an asynchronous function that does not appear in your code, you can use this tag to
-      tell JSDoc that the function is asynchronous.</p>
-    <h2 id="example">Example</h2>
-    <p>The following example shows a virtual comment that uses the <code>@async</code> tag:</p>
-    <figure>
-      <figcaption>Virtual comment with @async tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Download data from the specified URL.
- *
- * @async
- * @function downloadData
- * @param {string} url - The URL to download from.
- * @return {Promise&lt;string>} The data from the URL.
- */
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-augments.html b/tags-augments.html
deleted file mode 100644
index e39a10bd..00000000
--- a/tags-augments.html
+++ /dev/null
@@ -1,167 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that a symbol inherits from, and adds to, a parent symbol.">
-  <title>Use JSDoc: @augments</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@augments</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@extends</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@augments &lt;namepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@augments</code> or<code>@extends</code> tag indicates that a symbol inherits from, and potentially adds to, a
-      parent symbol. You can use this tag to document both class-based and prototype-based inheritance.</p>
-    <p>In JSDoc 3.3.0 and later, if a symbol inherits from multiple parents, and both parents have
-      identically named members, JSDoc uses the documentation from the last parent that is listed in the
-      JSDoc comment.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the <code>Duck</code> class is defined as a subclass of <code>Animal</code>. <code>Duck</code> instances
-      have the same properties as <code>Animal</code> instances, as well as a <code>speak</code> method that is unique to <code>Duck</code>
-      instances.</p>
-    <figure>
-      <figcaption>Documenting a class/subclass relationship</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @constructor
- */
-function Animal() {
-    /** Is this animal alive? */
-    this.alive = true;
-}
-
-/**
- * @constructor
- * @augments Animal
- */
-function Duck() {}
-Duck.prototype = new Animal();
-
-/** What do ducks say? */
-Duck.prototype.speak = function() {
-    if (this.alive) {
-        alert('Quack!');
-    }
-};
-
-var d = new Duck();
-d.speak(); // Quack!
-d.alive = false;
-d.speak(); // (nothing)
-</code></pre>
-    </figure>
-    <p>In the following example, the <code>Duck</code> class inherits from both the <code>Flyable</code> and <code>Bird</code> classes, both
-      of which define a <code>takeOff</code> method. Because the documentation for <code>Duck</code> lists <code>@augments Bird</code>
-      last, JSDoc automatically documents <code>Duck#takeOff</code> using the comment from <code>Bird#takeOff</code>.</p>
-    <figure>
-      <figcaption>Multiple inheritance with duplicated method names</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Abstract class for things that can fly.
- * @class
- */
-function Flyable() {
-    this.canFly = true;
-}
-
-/** Take off. */
-Flyable.prototype.takeOff = function() {
-    // ...
-};
-
-/**
- * Abstract class representing a bird.
- * @class
- */
-function Bird(canFly) {
-    this.canFly = canFly;
-}
-
-/** Spread your wings and fly, if possible. */
-Bird.prototype.takeOff = function() {
-    if (this.canFly) {
-        this._spreadWings()
-            ._run()
-            ._flapWings();
-    }
-};
-
-/**
- * Class representing a duck.
- * @class
- * @augments Flyable
- * @augments Bird
- */
-function Duck() {}
-
-// Described in the docs as "Spread your wings and fly, if possible."
-Duck.prototype.takeOff = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-borrows.html">@borrows</a>
-      </li>
-      <li>
-        <a href="tags-class.html">@class</a>
-      </li>
-      <li>
-        <a href="tags-mixes.html">@mixes</a>
-      </li>
-      <li>
-        <a href="tags-mixin.html">@mixin</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-author.html b/tags-author.html
deleted file mode 100644
index be28ec0c..00000000
--- a/tags-author.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Identify the author of an item.">
-  <title>Use JSDoc: @author</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@author</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@author &lt;name&gt; [&lt;emailAddress&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @author tag identifies the author of an item. In JSDoc 3.2 and later, if the author&#39;s name is
-      followed by an email address enclosed in angle brackets, the default template will convert the email
-      address to a <code>mailto:</code> link.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Documenting the author of an item</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @author Jane Smith &lt;jsmith@example.com>
- */
-function MyClass() {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-file.html">@file</a>
-      </li>
-      <li>
-        <a href="tags-version.html">@version</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-borrows.html b/tags-borrows.html
deleted file mode 100644
index 6ae1bd6f..00000000
--- a/tags-borrows.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This object uses something from another object.">
-  <title>Use JSDoc: @borrows</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@borrows</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@borrows &lt;that namepath&gt; as &lt;this namepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @borrows tag allows you to add documentation for another symbol to your documentation.</p>
-    <p>This tag would be useful if you had more than one way to reference a function, but you didn&#39;t want
-      to duplicate the same documentation in two places.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In this example there exists documentation for the &quot;trstr&quot; function, but &quot;util.trim&quot; is just a
-      reference to that same function by a different name.</p>
-    <figure>
-      <figcaption>Duplicate the documentation for trstr as util.trim</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @namespace
- * @borrows trstr as trim
- */
-var util = {
-    trim: trstr
-};
-
-/**
- * Remove whitespace from around a string.
- * @param {string} str
- */
-function trstr(str) {
-}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-callback.html b/tags-callback.html
deleted file mode 100644
index fa9a5c59..00000000
--- a/tags-callback.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a callback function.">
-  <title>Use JSDoc: @callback</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@callback</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@callback &lt;namepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @callback tag provides information about a callback function that can be passed to other
-      functions, including the callback&#39;s parameters and return value. You can include any of the tags
-      that you can provide for a @method.</p>
-    <p>Once you define a callback, you can use it in the same way as a custom type defined with the
-      @typedef tag. In particular, you can use the callback&#39;s name as a type name. This allows you to
-      indicate that a function parameter should contain a certain type of callback.</p>
-    <p>If you want a callback to be displayed with the type definitions for a specific class, you can give
-      the callback a namepath indicating that it is an inner function of that class. You can also define a
-      global callback type that is referenced from multiple classes.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Documenting a class-specific callback</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @class
- */
-function Requester() {}
-
-/**
- * Send a request.
- * @param {Requester~requestCallback} cb - The callback that handles the response.
- */
-Requester.prototype.send = function(cb) {
-    // code
-};
-
-/**
- * This callback is displayed as part of the Requester class.
- * @callback Requester~requestCallback
- * @param {number} responseCode
- * @param {string} responseMessage
- */
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Documenting a global callback</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @class
- */
-function Requester() {}
-
-/**
- * Send a request.
- * @param {requestCallback} cb - The callback that handles the response.
- */
-Requester.prototype.send = function(cb) {
-    // code
-};
-
-/**
- * This callback is displayed as a global member.
- * @callback requestCallback
- * @param {number} responseCode
- * @param {string} responseMessage
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-function.html">@function</a>
-      </li>
-      <li>
-        <a href="tags-typedef.html">@typedef</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-class.html b/tags-class.html
deleted file mode 100644
index d66fef40..00000000
--- a/tags-class.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This function is intended to be called with the &quot;new&quot; keyword.">
-  <title>Use JSDoc: @class</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@class</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@constructor</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@class [&lt;type&gt; &lt;name&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @class tag marks a function as being a constructor, meant to be called with the new
-      keyword to return an instance.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>A function that constructs Person instances.</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Creates a new Person.
- * @class
- */
-function Person() {
-}
-
-var p = new Person();
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-constructs.html">@constructs</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-classdesc.html b/tags-classdesc.html
deleted file mode 100644
index 77f2232f..00000000
--- a/tags-classdesc.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Use the following text to describe the entire class.">
-  <title>Use JSDoc: @classdesc</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@classdesc</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@classdesc &lt;some description&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @classdesc tag is used to provide a description for a class, separate from the constructor
-      function&#39;s description. Use the @classdesc tag in combination with the <a href="tags-class.html">@class (or @constructor)
-        tag</a>.</p>
-    <p>The functionality of the @classdesc tag in JSDoc 3 duplicates that of the @class in previous
-      versions. As of version 3, the syntax and functionality of the @class tag now exactly matches the
-      @constructor tag, and the @classdesc tag more explicitly communicates its purpose: to document a
-      class&#39;s description.</p>
-    <h2 id="examples">Examples</h2>
-    <p>As shown below, a class has places for two descriptions, one applies to the function itself, while
-      the other applies to the class in general.</p>
-    <figure>
-      <figcaption>A doclet with both a constructor function description and a class description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This is a description of the MyClass constructor function.
- * @class
- * @classdesc This is a description of the MyClass class.
- */
-function MyClass() {
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-class.html">@class</a>
-      </li>
-      <li>
-        <a href="tags-description.html">@description</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-constant.html b/tags-constant.html
deleted file mode 100644
index b8a83b42..00000000
--- a/tags-constant.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document an object as a constant.">
-  <title>Use JSDoc: @constant</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@constant</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@const</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@constant [&lt;type&gt; &lt;name&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @constant tag is used to mark the documentation as belonging to a symbol that is a constant.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In this example we are documenting a string constant. Note that although the code is using the
-      <code>const</code> keyword, this is not required by JSDoc. If your JavaScript host environment doesn&#39;t yet
-      support constant declarations, the @const documentation can just as effectively be used on <code>var</code>
-      declarations.</p>
-    <figure>
-      <figcaption>A string constant representing the color red</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constant
-    @type {string}
-    @default
-*/
-const RED = 'FF0000';
-
-/** @constant {number} */
-var ONE = 1;
-</code></pre>
-    </figure>
-    <p>Note that the example provides the type in a @type tag. This is optional. Also the optional
-      @default tag is used here too, this will automatically add whatever the assigned value is (for
-      example &#39;FF0000&#39;) to the documentation.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-default.html">@default</a>
-      </li>
-      <li>
-        <a href="tags-type.html">@type</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-constructor.html b/tags-constructor.html
deleted file mode 100644
index 5392df4f..00000000
--- a/tags-constructor.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html>
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="refresh" content="0; url=tags-class.html">
-        <title>Redirecting...</title>
-        <link rel="canonical" href="tags-class.html">
-    </head>
-    <body>
-        <h1>Redirecting...</h1>
-        <a href="tags-class.html">If you are not redirected, click here.</a>
-        <script type="text/javascript">location='tags-class.html'</script>
-    </body>
-</html>
diff --git a/tags-constructs.html b/tags-constructs.html
deleted file mode 100644
index 1bb61087..00000000
--- a/tags-constructs.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This function member will be the constructor for the previous class.">
-  <title>Use JSDoc: @constructs</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@constructs</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>When using an object literal to define a class (for example with the <code>@lends</code> tag) the <code>@constructs</code>
-      tag allows you to document that a particular function will be used to construct instances of that
-      class.</p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@constructs [&lt;name&gt;]</code></p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @constructs tag with @lends</figcaption>
-      <pre class="prettyprint lang-js"><code>var Person = makeClass(
-    /** @lends Person.prototype */
-    {
-        /** @constructs */
-        initialize: function(name) {
-            this.name = name;
-        },
-        /** Describe me. */
-        say: function(message) {
-            return this.name + " says: " + message;
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Without @lends you must provide the name of the class</figcaption>
-      <pre class="prettyprint lang-js"><code>makeClass('Menu',
-    /**
-     * @constructs Menu
-     * @param items
-     */
-    function (items) { },
-    {
-        /** @memberof Menu# */
-        show: function(){
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-lends.html">@lends</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-copyright.html b/tags-copyright.html
deleted file mode 100644
index b7e42954..00000000
--- a/tags-copyright.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document some copyright information.">
-  <title>Use JSDoc: @copyright</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@copyright</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@copyright &lt;some copyright text&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @copyright tag is used to document copyright information in a file overview comment. Use this
-      tag in combination with the <a href="tags-file.html">@file tag</a>.</p>
-    <h2 id="examples">Examples</h2>
-    <pre class="prettyprint lang-js"><code>/**
- * @file This is my cool script.
- * @copyright Michael Mathews 2011
- */
-</code></pre>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-file.html">@file</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-default.html b/tags-default.html
deleted file mode 100644
index d9c10fa8..00000000
--- a/tags-default.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the default value.">
-  <title>Use JSDoc: @default</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@default</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@defaultvalue</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@default [&lt;some value&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @default tag allows you to document the assigned value of a symbol. You can supply this tag with
-      a value yourself or you can allow JSDoc to automatically document the value from the source code --
-      only possible when the documented symbol is being assigned a single, simple value that is either: a
-      string, a number, a boolean or null.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In this example a constant is documented. The value of the constant is <code>0xff0000</code>. By adding the
-      @default tag this value is automatically added to the documentation.</p>
-    <figure>
-      <figcaption>Document the number value of a constant</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- *  @constant
- *  @default
- */
-const RED = 0xff0000;
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-deprecated.html b/tags-deprecated.html
deleted file mode 100644
index 5b5bd4c1..00000000
--- a/tags-deprecated.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document that this is no longer the preferred way.">
-  <title>Use JSDoc: @deprecated</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@deprecated</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@deprecated [&lt;some text&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @deprecated tag marks a symbol in your code as being deprecated.</p>
-    <h2 id="examples">Examples</h2>
-    <p>You can use the @deprecated tag by itself, or include some text that describes more about the
-      deprecation.</p>
-    <figure>
-      <figcaption>Document that the old function has been deprecated since version 2.0</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @deprecated since version 2.0
- */
-function old() {
-}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-description.html b/tags-description.html
deleted file mode 100644
index 5906a094..00000000
--- a/tags-description.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Describe a symbol.">
-  <title>Use JSDoc: @description</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@description</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@desc</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@description &lt;some description&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @description tag allows you to provide a general description of the symbol you are documenting.
-      The description may include HTML markup. It may also include Markdown formatting if the
-      <a href="plugins-markdown.html">Markdown plugin</a> is enabled.</p>
-    <h2 id="examples">Examples</h2>
-    <p>If you describe a symbol at the very beginning of a JSDoc comment, before using any block tags, you
-      may omit the @description tag.</p>
-    <figure>
-      <figcaption>Describing a symbol without the @description tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Add two numbers.
- * @param {number} a
- * @param {number} b
- * @returns {number}
- */
-function add(a, b) {
-    return a + b;
-}
-</code></pre>
-    </figure>
-    <p>By using the @description tag, you can place the description anywhere in the JSDoc comment.</p>
-    <figure>
-      <figcaption>Describing a symbol with the @description tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {number} a
- * @param {number} b
- * @returns {number}
- * @description Add two numbers.
- */
-function add(a, b) {
-    return a + b;
-}
-</code></pre>
-    </figure>
-    <p>If there&#39;s both a description at the beginning of a JSDoc comment and a description provided with the @description tag, the description specified
-      with the @description will override the description at the beginning of the comment.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-classdesc.html">@classdesc</a>
-      </li>
-      <li>
-        <a href="tags-summary.html">@summary</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-enum.html b/tags-enum.html
deleted file mode 100644
index a59cdb0a..00000000
--- a/tags-enum.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a collection of related properties.">
-  <title>Use JSDoc: @enum</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@enum</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@enum [&lt;type&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @enum tag documents a collection of static properties whose values are all of the same type.</p>
-    <p>An enum is similar a collection of properties, except that an enum is documented in its own doc
-      comment, whereas properties are documented within the doc comment of their container. Often this tag
-      is used with @readonly, as an enum typically represents a collection of constants.</p>
-    <h2 id="examples">Examples</h2>
-    <p>This shows how to document an object that represents a value with three possible states. Note that
-      the enum members can have optional descriptions added if you wish. Also you can override the type,
-      as is shown with &quot;MAYBE&quot; -- by default enum members will be documented with the same type as the
-      enum itself.</p>
-    <figure>
-      <figcaption>A numeric enum, representing three states</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Enum for tri-state values.
- * @readonly
- * @enum {number}
- */
-var triState = {
-    /** The true value */
-    TRUE: 1,
-    FALSE: -1,
-    /** @type {boolean} */
-    MAYBE: true
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-property.html">@property</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-event.html b/tags-event.html
deleted file mode 100644
index c603e562..00000000
--- a/tags-event.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document an event.">
-  <title>Use JSDoc: @event</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@event</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@event &lt;className&gt;#[event:]&lt;eventName&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @event tag allows you to document an event that can be fired. A typical event is represented by
-      an object with a defined set of properties.</p>
-    <p>Once you have used the @event tag to define a specific type of event, you can use the @fires tag to
-      indicate that a method can fire that event. You can also use the @listens tag to indicate that a
-      symbol listens for the event.</p>
-    <p>JSDoc automatically prepends the namespace <code>event:</code> to each event&#39;s name. In general, you must
-      include this namespace when you link to the event in another doclet. (The @fires tag is a notable
-      exception; it allows you to omit the namespace.)</p>
-    <p><strong>Note</strong>: JSDoc 3 uses @event doclets to document the content of an event. In contrast, JSDoc
-      Toolkit 2 used @event doclets to identify a function that can be fired when an event of the same
-      name occurs.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following examples show how to document an event in the <code>Hurl</code> class called <code>snowball</code>. The
-      event contains an object with a single property.</p>
-    <figure>
-      <figcaption>Documenting a function call as an event</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Throw a snowball.
- *
- * @fires Hurl#snowball
- */
-Hurl.prototype.snowball = function() {
-    /**
-     * Snowball event.
-     *
-     * @event Hurl#snowball
-     * @type {object}
-     * @property {boolean} isPacked - Indicates whether the snowball is tightly packed.
-     */
-    this.emit('snowball', {
-        isPacked: this._snowball.isPacked
-    });
-};
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using a named doclet to document an event</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Throw a snowball.
- *
- * @fires Hurl#snowball
- */
-Hurl.prototype.snowball = function() {
-    // ...
-};
-
-/**
- * Snowball event.
- *
- * @event Hurl#snowball
- * @type {object}
- * @property {boolean} isPacked - Indicates whether the snowball is tightly packed.
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-fires.html">@fires</a>
-      </li>
-      <li>
-        <a href="tags-listens.html">@listens</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-example.html b/tags-example.html
deleted file mode 100644
index 2dec76b8..00000000
--- a/tags-example.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Provide an example of how to use a documented item.">
-  <title>Use JSDoc: @example</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@example</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>Provide an example of how to use a documented item. The text that follows this tag will be displayed
-      as highlighted code.</p>
-    <h2 id="examples">Examples</h2>
-    <p>Note that a doclet may have multiple examples.</p>
-    <figure>
-      <figcaption>Documenting examples</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Solves equations of the form a * x = b
- * @example
- * // returns 2
- * globalNS.method1(5, 10);
- * @example
- * // returns 3
- * globalNS.method(5, 15);
- * @returns {Number} Returns the value of x for the equation.
- */
-globalNS.method1 = function (a, b) {
-    return b / a;
-};
-</code></pre>
-    </figure>
-    <p>Examples can also be captioned using <code>&lt;caption&gt;&lt;/caption&gt;</code> after the @example tag.</p>
-    <figure>
-      <figcaption>Documenting examples with a caption</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Solves equations of the form a * x = b
- * @example &lt;caption>Example usage of method1.&lt;/caption>
- * // returns 2
- * globalNS.method1(5, 10);
- * @returns {Number} Returns the value of x for the equation.
- */
-globalNS.method1 = function (a, b) {
-    return b / a;
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-exports.html b/tags-exports.html
deleted file mode 100644
index 37be8268..00000000
--- a/tags-exports.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Identify the member that is exported by a JavaScript module.">
-  <title>Use JSDoc: @exports</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@exports</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@exports &lt;moduleName&gt;</code></p>
-    <p>In JSDoc 3.3.0 and later, <code>&lt;moduleName&gt;</code> may include the <code>module:</code> prefix. In previous versions, you
-      must omit this prefix.</p>
-    <h2 id="overview">Overview</h2>
-    <p>Use the @exports tag when documenting JavaScript modules that export anything other than the
-      &quot;exports&quot; object or the &quot;module.exports&quot; property.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In modules where you are using the special &quot;exports&quot; object, the @exports tag is never needed. JSDoc
-      automatically recognizes that this object&#39;s members are being exported. Similarly, JSDoc
-      automatically recognizes the special &quot;module.exports&quot; property in Node.js modules.</p>
-    <figure>
-      <figcaption>CommonJS module</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A module that says hello!
- * @module hello/world
- */
-
-/** Say hello. */
-exports.sayHello = function() {
-    return 'Hello world';
-};
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Node.js module</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A module that shouts hello!
- * @module hello/world
- */
-
-/** SAY HELLO. */
-module.exports = function() {
-    return "HELLO WORLD";
-};
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>AMD module that exports an object literal</figcaption>
-      <pre class="prettyprint lang-js"><code>define(function() {
-
-    /**
-     * A module that whispers hello!
-     * @module hello/world
-     */
-    var exports = {};
-
-    /** say hello. */
-    exports.sayHello = function() {
-        return 'hello world';
-    };
-
-    return exports;
-});
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>AMD module that exports a constructor</figcaption>
-      <pre class="prettyprint lang-js"><code>define(function() {
-    /**
-     * A module that creates greeters.
-     * @module greeter
-     */
-
-    /**
-     * @constructor
-     * @param {string} subject - The subject to greet.
-     */
-    var exports = function(subject) {
-        this.subject = subject || 'world';
-    };
-
-    /** Say hello to the subject. */
-    exports.prototype.sayHello = function() {
-        return 'Hello ' + this.subject;
-    };
-
-    return exports;
-});
-</code></pre>
-    </figure>
-    <p>If your module exports an object named anything other than &quot;exports&quot; or &quot;module.exports&quot;, use the
-      @exports tag to indicate what is being exported.</p>
-    <figure>
-      <figcaption>AMD module that exports an object</figcaption>
-      <pre class="prettyprint lang-js"><code>define(function () {
-
-    /**
-     * A module that says hello!
-     * @exports hello/world
-     */
-    var ns = {};
-
-    /** Say hello. */
-    ns.sayHello = function() {
-        return 'Hello world';
-    };
-
-    return ns;
-});
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-module.html">@module</a>
-      </li>
-      <li>
-        <a href="howto-commonjs-modules.html">CommonJS Modules</a>
-      </li>
-      <li>
-        <a href="howto-amd-modules.html">AMD Modules</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-external.html b/tags-external.html
deleted file mode 100644
index 7e1eac93..00000000
--- a/tags-external.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Identifies an external class, namespace, or module.">
-  <title>Use JSDoc: @external</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@external</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@host</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@external &lt;NameOfExternal&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@external</code> tag identifies a class, namespace, or module that is defined outside of the current
-      package. By using this tag, you can document your package&#39;s extensions to the external symbol, or
-      you can provide information about the external symbol to your package&#39;s users. You can also refer to
-      the external symbol&#39;s namepath in any other JSDoc tag.</p>
-    <p>The namepath for an external symbol always uses the prefix <code>external:</code> (for example,
-      <code>{@link external:Foo}</code> or <code>@augments external:Foo</code>). However, you can omit this prefix from the
-      <code>@external</code> tag.</p>
-    <p><strong>Note</strong>: You should only add the <code>@external</code> tag to the highest-level symbol that is defined
-      outside of your project. See &quot;<a href="#nested-external-symbol">Documenting a nested external symbol</a>&quot; for an
-      example.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows how to document the built-in <code>String</code> object as an external, along with
-      the new instance method <code>external:String#rot13</code>:</p>
-    <figure>
-      <figcaption>Documenting methods added to built-in classes</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The built in string object.
- * @external String
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String|String}
- */
-
-/**
- * Create a ROT13-encoded version of the string. Added by the `foo` package.
- * @function external:String#rot13
- * @example
- * var greeting = new String('hello world');
- * console.log( greeting.rot13() ); // uryyb jbeyq
- */
-</code></pre>
-    </figure>
-    <p>The following example documents a new <code>starfairy</code> function added to the external namespace
-      <code>&quot;jQuery.fn&quot;</code>:</p>
-    <figure>
-      <figcaption>Documenting external namespaces</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The jQuery plugin namespace.
- * @external "jQuery.fn"
- * @see {@link http://learn.jquery.com/plugins/|jQuery Plugins}
- */
-
-/**
- * A jQuery plugin to make stars fly around your home page.
- * @function external:"jQuery.fn".starfairy
- */
-</code></pre>
-    </figure>
-    <p>In the following example, the class <code>EncryptedRequest</code> is documented as a subclass of the built-in
-      class <code>XMLHttpRequest</code>:</p>
-    <figure>
-      <figcaption>Extending an external.</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The built-in class for sending HTTP requests.
- * @external XMLHttpRequest
- * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
- */
-
-/**
- * Extends the built-in `XMLHttpRequest` class to send data encoded with a secret key.
- * @class EncodedRequest
- * @extends external:XMLHttpRequest
- */
-</code></pre>
-    </figure>
-    <p><a name="nested-external-symbol"></a>
-      You should only add the <code>@external</code> tag to the highest-level symbol that is defined outside of your
-      project. In the following example, the documentation refers to the external class
-      <code>security.TLS</code>. As a result, the <code>@external</code> tag is used to document the external namespace
-      <code>external:security</code>, but <em>not</em> the external class <code>external:security.TLS</code>.</p>
-    <figure>
-      <figcaption>Documenting a nested external symbol</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * External namespace for security-related classes.
- * @external security
- * @see http://example.org/docs/security
- */
-
-/**
- * External class that provides Transport Layer Security (TLS) encryption.
- * @class TLS
- * @memberof external:security
- */
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-file.html b/tags-file.html
deleted file mode 100644
index 5f6593f0..00000000
--- a/tags-file.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Describe a file.">
-  <title>Use JSDoc: @file</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@file</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <ul>
-      <li>
-        <code>@fileoverview</code>
-      </li>
-      <li>
-        <code>@overview</code>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @file tag provides a description for a file. Use the tag in a JSDoc comment at the beginning of
-      the file.</p>
-    <h2 id="example">Example</h2>
-    <figure>
-      <figcaption>File description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @file Manages the configuration settings for the widget.
- * @author Rowina Sanela <rsanela@example.com>
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-author.html">@author</a>
-      </li>
-      <li>
-        <a href="tags-version.html">@version</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-fires.html b/tags-fires.html
deleted file mode 100644
index d3c425d7..00000000
--- a/tags-fires.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Describe the events this method may fire.">
-  <title>Use JSDoc: @fires</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@fires</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@emits</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@fires &lt;className&gt;#[event:]&lt;eventName&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @fires tag indicates that a method can fire a specified type of event when it is called. Use the
-      <a href="tags-event.html">@event tag</a> to document the event&#39;s content.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Method that fires a &#39;drain&#39; event</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Drink the milkshake.
- *
- * @fires Milkshake#drain
- */
-Milkshake.prototype.drink = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-event.html">@event</a>
-      </li>
-      <li>
-        <a href="tags-listens.html">@listens</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-function.html b/tags-function.html
deleted file mode 100644
index cbec6bc5..00000000
--- a/tags-function.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Describe a function or method.">
-  <title>Use JSDoc: @function</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@function</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <ul>
-      <li>
-        <code>@func</code>
-      </li>
-      <li>
-        <code>@method</code>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@function [&lt;FunctionName&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>This marks an object as being a function, even though it may not appear to be one to the parser. It
-      sets the doclet&#39;s <a href="tags-kind.html">@kind</a> to &#39;function&#39;.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @function to mark a function.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @function */
-var paginate = paginateFactory(pages);
-</code></pre>
-    </figure>
-    <p>Without the @function tag, the <code>paginate</code> object would be documented as a generic object (a
-      <a href="tags-member.html">@member</a>), because it isn&#39;t possible to tell from examining the line of code what type
-      of value <code>paginate</code> will hold when it is run.</p>
-    <figure>
-      <figcaption>Using @function with a name.</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @function myFunction */
-
-// the above is the same as:
-/** @function
- * @name myFunction */
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-generator.html b/tags-generator.html
deleted file mode 100644
index 84c77ba4..00000000
--- a/tags-generator.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that a function is a generator function.">
-  <title>Use JSDoc: @generator</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@generator</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@generator</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@generator</code> tag indicates that a function is a <a
-        href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*">generator function</a>, meaning that it
-      was declared using the syntax <code>function* foo() {}</code>. This tag is available in JSDoc 3.5.0 and later.</p>
-    <p>In general, you do not need to use this tag, because JSDoc automatically detects generator functions
-      and identifies them in the generated documentation. However, if you are writing a virtual comment
-      for a generator function that does not appear in your code, you can use this tag to tell JSDoc that
-      the function is a generator function.</p>
-    <h2 id="example">Example</h2>
-    <p>The following example shows a virtual comment that uses the <code>@generator</code> tag:</p>
-    <figure>
-      <figcaption>Virtual comment with @generator tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Generate numbers in the Fibonacci sequence.
- *
- * @generator
- * @function fibonacci
- * @yields {number} The next number in the Fibonacci sequence.
- */
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-global.html b/tags-global.html
deleted file mode 100644
index 7fc947d1..00000000
--- a/tags-global.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a global object.">
-  <title>Use JSDoc: @global</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@global</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @global tag specifies that a symbol should appear in the documentation as a <em>global</em> symbol.
-      JSDoc ignores the symbol&#39;s actual scope within the source file. This tag is especially useful for
-      symbols that are defined locally, then assigned to a global symbol.</p>
-    <h2 id="examples">Examples</h2>
-    <p>Use the @global tag to specify that a symbol should be documented as global.</p>
-    <figure>
-      <figcaption>Document an inner variable as a global</figcaption>
-      <pre class="prettyprint lang-js"><code>(function() {
-    /** @global */
-    var foo = 'hello foo';
-
-    this.foo = foo;
-}).apply(window);
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-inner.html">@inner</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-memberof.html">@memberof</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-hideconstructor.html b/tags-hideconstructor.html
deleted file mode 100644
index 2f6ad394..00000000
--- a/tags-hideconstructor.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that the constructor should not be displayed.">
-  <title>Use JSDoc: @hideconstructor</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@hideconstructor</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@hideconstructor</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@hideconstructor</code> tag tells JSDoc that the generated documentation should not display the
-      constructor for a class. This tag is available in JSDoc 3.5.0 and later.</p>
-    <p>For pre-ES2015 classes, use this tag in combination with the <a href="tags-class.html"><code>@class</code> or <code>@constructor</code>
-        tag</a>.</p>
-    <p>For ES2015 classes, use this tag in the JSDoc comment for your constructor. If your class does not
-      have an explicit constructor, use this tag in the JSDoc comment for the class.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>@hideconstructor tag with pre-ES2015 class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @classdesc Toaster singleton.
- * @class
- * @hideconstructor
- */
-var Toaster = (function() {
-    var instance = null;
-
-    function Toaster() {}
-
-    /**
-     * Toast an item.
-     *
-     * @alias toast
-     * @memberof Toaster
-     * @instance
-     * @param {BreadyThing} item - The item to toast.
-     * @return {Toast} A toasted bready thing.
-     */
-    Toaster.prototype.toast = function(item) {};
-
-    return {
-        /**
-         * Get the Toaster instance.
-         *
-         * @alias Toaster.getInstance
-         * @returns {Toaster} The Toaster instance.
-         */
-        getInstance: function() {
-            if (instance === null) {
-                instance = new Toaster();
-                delete instance.constructor;
-            }
-
-            return instance;
-        }
-    };
-})();
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>@hideconstructor tag with ES2015 class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Waffle iron singleton.
- */
-class WaffleIron {
-    #instance = null;
-
-    /**
-     * Create the waffle iron.
-     *
-     * @hideconstructor
-     */
-    constructor() {
-        if (#instance) {
-            return #instance;
-        }
-
-        /**
-         * Cook a waffle.
-         *
-         * @param {Batter} batter - The waffle batter.
-         * @return {Waffle} The cooked waffle.
-         */
-        this.cook = function(batter) {};
-
-        this.#instance = this;
-    }
-
-    /**
-     * Get the WaffleIron instance.
-     *
-     * @return {WaffleIron} The WaffleIron instance.
-     */
-    getInstance() {
-        return new WaffleIron();
-    }
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-class.html">@class</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-ignore.html b/tags-ignore.html
deleted file mode 100644
index 68b567ec..00000000
--- a/tags-ignore.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Omit a symbol from the documentation.">
-  <title>Use JSDoc: @ignore</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@ignore</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@ignore</code> tag indicates that a symbol in your code should never appear in the documentation.
-      This tag takes precedence over all others.</p>
-    <p>For most JSDoc templates, including the default template, the <code>@ignore</code> tag has the following
-      effects:</p>
-    <ul>
-      <li>If you use the <code>@ignore</code> tag with the <code>@class</code> or <code>@module</code> tag, the entire class or module will
-        be omitted from the documentation.</li>
-      <li>If you use the <code>@ignore</code> tag with the <code>@namespace</code> tag, you must also add the <code>@ignore</code> tag to any
-        child classes and namespaces. Otherwise, your documentation will show the child classes and
-        namespaces, but with incomplete names.</li>
-    </ul>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, <code>Jacket</code> and <code>Jacket#color</code> will not appear in the documentation.</p>
-    <figure>
-      <figcaption>Class with <code>@ignore</code> tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @class
- * @ignore
- */
-function Jacket() {
-    /** The jacket's color. */
-    this.color = null;
-}
-</code></pre>
-    </figure>
-    <p>In the following example, the <code>Clothes</code> namespace contains a <code>Jacket</code> class. The <code>@ignore</code> tag must
-      be added to both <code>Clothes</code> and <code>Clothes.Jacket</code>. <code>Clothes</code>, <code>Clothes.Jacket</code>, and
-      <code>Clothes.Jacket#color</code> will not appear in the documentation.</p>
-    <figure>
-      <figcaption>Namespace with child class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @namespace
- * @ignore
- */
-var Clothes = {
-    /**
-     * @class
-     * @ignore
-     */
-    Jacket: function() {
-        /** The jacket's color. */
-        this.color = null;
-    }
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-implements.html b/tags-implements.html
deleted file mode 100644
index ced6af82..00000000
--- a/tags-implements.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol implements an interface.">
-  <title>Use JSDoc: @implements</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@implements</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@implements {typeExpression}</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@implements</code> tag indicates that a symbol implements an interface.</p>
-    <p>Add the <code>@implements</code> tag to the top-level symbol that implements the interface (for example, a
-      constructor function). You do not need to add the <code>@implements</code> tag to each member of the
-      implementation (for example, the implementation&#39;s instance methods).</p>
-    <p>If you do not document one of the symbols in the implementation, JSDoc will automatically use the
-      interface&#39;s documentation for that symbol.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the <code>TransparentColor</code> class implements the <code>Color</code> interface and adds
-      a <code>TransparentColor#rgba</code> method.</p>
-    <figure>
-      <figcaption>Using the @implements tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Interface for classes that represent a color.
- *
- * @interface
- */
-function Color() {}
-
-/**
- * Get the color as an array of red, green, and blue values, represented as
- * decimal numbers between 0 and 1.
- *
- * @returns {Array&lt;number>} An array containing the red, green, and blue values,
- * in that order.
- */
-Color.prototype.rgb = function() {
-    throw new Error('not implemented');
-};
-
-/**
- * Class representing a color with transparency information.
- *
- * @class
- * @implements {Color}
- */
-function TransparentColor() {}
-
-// inherits the documentation from `Color#rgb`
-TransparentColor.prototype.rgb = function() {
-    // ...
-};
-
-/**
- * Get the color as an array of red, green, blue, and alpha values, represented
- * as decimal numbers between 0 and 1.
- *
- * @returns {Array&lt;number>} An array containing the red, green, blue, and alpha
- * values, in that order.
- */
-TransparentColor.prototype.rgba = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-interface.html">@interface</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-inheritdoc.html b/tags-inheritdoc.html
deleted file mode 100644
index e28bdd88..00000000
--- a/tags-inheritdoc.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that a symbol should inherit its parent&#39;s documentation.">
-  <title>Use JSDoc: @inheritdoc</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@inheritdoc</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@inheritdoc</code> tag indicates that a symbol should inherit its documentation from its parent
-      class. Any other tags that you include in the JSDoc comment will be ignored.</p>
-    <p>This tag is provided for compatibility with <a href="https://developers.google.com/closure/compiler/">Closure Compiler</a>. By default, if you do
-      not add a JSDoc comment to a symbol, the symbol will inherit documentation from its parent.</p>
-    <p>The presence of the <code>@inheritdoc</code> tag implies the presence of the <a href="tags-override.html"><code>@override</code> tag</a>.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows how a class can indicate that it inherits documentation from its
-      parent class:</p>
-    <figure>
-      <figcaption>Class that inherits from a parent class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @classdesc Abstract class representing a network connection.
- * @class
- */
-function Connection() {}
-
-/**
- * Open the connection.
- */
-Connection.prototype.open = function() {
-    // ...
-};
-
-
-/**
- * @classdesc Class representing a socket connection.
- * @class
- * @augments Connection
- */
-function Socket() {}
-
-/** @inheritdoc */
-Socket.prototype.open = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>You can get the same result by omitting the JSDoc comment from <code>Socket#open</code>:</p>
-    <figure>
-      <figcaption>Inheriting documentation without the <code>@inheritdoc</code> tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @classdesc Abstract class representing a network connection.
- * @class
- */
-function Connection() {}
-
-/**
- * Open the connection.
- */
-Connection.prototype.open = function() {
-    // ...
-};
-
-
-/**
- * @classdesc Class representing a socket connection.
- * @class
- * @augments Connection
- */
-function Socket() {}
-
-Socket.prototype.open = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-override.html">@override</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-inline-link.html b/tags-inline-link.html
deleted file mode 100644
index 77746586..00000000
--- a/tags-inline-link.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Link to another item in the documentation.">
-  <title>Use JSDoc: {@link}</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>{@link}</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#link-formatting">Link formatting</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <ul>
-      <li>
-        <code>{@linkcode}</code>
-      </li>
-      <li>
-        <code>{@linkplain}</code>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <pre class="prettyprint"><code>{@link namepathOrURL}
-[link text]{@link namepathOrURL}
-{@link namepathOrURL|link text}
-{@link namepathOrURL link text (after the first space)}
-</code></pre>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>{@link}</code> inline tag creates a link to the namepath or URL that you specify. When you use the
-      <code>{@link}</code> tag, you can also provide link text, using one of several different formats. If you don&#39;t
-      provide any link text, JSDoc uses the namepath or URL as the link text.</p>
-    <p>If you need to link to a tutorial, use the <a href="tags-inline-tutorial.html"><code>{@tutorial}</code> inline tag</a> instead
-      of the <code>{@link}</code> tag.</p>
-    <h2 id="link-formatting">Link formatting</h2>
-    <p>By default, <code>{@link}</code> generates standard HTML anchor tags. However, you may prefer to render certain
-      links in a monospace font, or to specify the format of individual links. You can use the following
-      synonyms for the <code>{@link}</code> tag to control the formatting of links:</p>
-    <ul>
-      <li><code>{@linkcode}</code>: Forces the link&#39;s text to use a monospace font.</li>
-      <li><code>{@linkplain}</code>: Forces the link&#39;s text to appear as normal text, without a monospace font.</li>
-    </ul>
-    <p>You can also set one of the following options in JSDoc&#39;s configuration file; see
-      <a href="about-configuring-jsdoc.html">Configuring JSDoc</a> for more details:</p>
-    <ul>
-      <li><code>templates.cleverLinks</code>: When set to <code>true</code>, links to URLs use normal text, and links to code use
-        a monospace font.</li>
-      <li><code>templates.monospaceLinks</code>: When set to <code>true</code>, all links use a monospace font, except for links
-        created with the <code>{@linkplain}</code> tag.</li>
-    </ul>
-    <p><strong>Note</strong>: Although the default JSDoc template renders all of these tags correctly, other templates
-      may not recognize the <code>{@linkcode}</code> and <code>{@linkplain}</code> tags. In addition, other templates may ignore
-      the configuration options for link rendering.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows all of the ways to provide link text for the <code>{@link}</code> tag:</p>
-    <figure>
-      <figcaption>Providing link text</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * See {@link MyClass} and [MyClass's foo property]{@link MyClass#foo}.
- * Also, check out {@link http://www.google.com|Google} and
- * {@link https://github.com GitHub}.
- */
-function myFunction() {}
-</code></pre>
-    </figure>
-    <p>By default, the example above produces output similar to the following:</p>
-    <figure>
-      <figcaption>Output for {@link} tags</figcaption>
-      <pre class="prettyprint lang-html"><code>See &lt;a href="MyClass.html">MyClass&lt;/a> and &lt;a href="MyClass.html#foo">MyClass's foo
-property&lt;/a>. Also, check out &lt;a href="http://www.google.com">Google&lt;/a> and
-&lt;a href="https://github.com">GitHub&lt;/a>.
-</code></pre>
-    </figure>
-    <p>If the configuration property <code>templates.cleverLinks</code> were set to <code>true</code>, the example above would
-      produce the following output:</p>
-    <figure>
-      <figcaption>Output with clever links enabled</figcaption>
-      <pre class="prettyprint lang-html"><code>See &lt;a href="MyClass.html">&lt;code>MyClass&lt;/code>&lt;/a> and &lt;a href="MyClass.html#foo">
-&lt;code>MyClass's foo property&lt;/code>&lt;/a>. Also, check out
-&lt;a href="http://www.google.com">Google&lt;/a> and &lt;a href="https://github.com">GitHub&lt;/a>.
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-configuring-jsdoc.html">Configuring JSDoc with a configuration file</a>
-      </li>
-      <li>
-        <a href="about-namepaths.html">Using namepaths with JSDoc 3</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-inline-tutorial.html b/tags-inline-tutorial.html
deleted file mode 100644
index b258c102..00000000
--- a/tags-inline-tutorial.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Link to a tutorial.">
-  <title>Use JSDoc: {@tutorial}</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>{@tutorial}</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <pre class="prettyprint"><code>{@tutorial tutorialID}
-[link text]{@tutorial tutorialID}
-{@tutorial tutorialID|link text}
-{@tutorial tutorialID link text (after the first space)}
-</code></pre>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>{@tutorial}</code> inline tag creates a link to the tutorial identifier that you specify. When you
-      use the <code>{@tutorial}</code> tag, you can also provide link text, using one of several different formats.
-      If you don&#39;t provide any link text, JSDoc uses the tutorial&#39;s title as the link text.</p>
-    <p>If you need to link to a namepath or a URL, use the <a href="tags-inline-link.html"><code>{@link}</code> inline tag</a> instead
-      of the <code>{@tutorial}</code> tag.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows all of the ways to provide link text for the <code>{@tutorial}</code> tag:</p>
-    <figure>
-      <figcaption>Providing link text</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * See {@tutorial gettingstarted} and [Configuring the Dashboard]{@tutorial dashboard}.
- * For more information, see {@tutorial create|Creating a Widget} and
- * {@tutorial destroy Destroying a Widget}.
- */
-function myFunction() {}
-</code></pre>
-    </figure>
-    <p>If all of these tutorials are defined, and the title of the <code>gettingstarted</code> tutorial is &quot;Getting
-      Started,&quot; the example above produces output similar to the following:</p>
-    <figure>
-      <figcaption>Output for {@link} tags</figcaption>
-      <pre class="prettyprint lang-html"><code>See &lt;a href="tutorial-gettingstarted.html">Getting Started&lt;/a> and
-&lt;a href="tutorial-dashboard.html">Configuring the Dashboard&lt;/a>.
-For more information, see &lt;a href="tutorial-create.html">Creating a Widget&lt;/a> and
-&lt;a href="tutorial-destroy.html">Destroying a Widget&lt;/a>.
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-tutorial.html">@tutorial</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-inner.html b/tags-inner.html
deleted file mode 100644
index 555defda..00000000
--- a/tags-inner.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document an inner object.">
-  <title>Use JSDoc: @inner</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@inner</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>Using the @inner tag will mark a symbol as an inner member of its parent symbol. This means it can
-      be referred to by &quot;Parent~Child&quot;.</p>
-    <p>Using @inner will override a doclet&#39;s default scope (unless it is in the global scope, in which case
-      it will remain global).</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @inner to make a virtual doclet an inner member</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace MyNamespace */
-/**
- * myFunction is now MyNamespace~myFunction.
- * @function myFunction
- * @memberof MyNamespace
- * @inner
- */
-</code></pre>
-    </figure>
-    <p>Note that in the above we could have used &quot;@function MyNamespace~myFunction&quot; instead of the
-      @memberof and @inner tags.</p>
-    <figure>
-      <figcaption>Using @inner</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var MyNamespace = {
-    /**
-     * foo is now MyNamespace~foo rather than MyNamespace.foo.
-     * @inner
-     */
-    foo: 1
-};
-</code></pre>
-    </figure>
-    <p>In the above example, we use @inner to force a member of a namespace to be documented as an inner
-      member (by default, it would be a static member). This means that <code>foo</code> now has the longname
-      <code>MyNamespace~foo</code> instead of <code>MyNamespace.foo</code>.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-instance.html b/tags-instance.html
deleted file mode 100644
index 059d851d..00000000
--- a/tags-instance.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document an instance member.">
-  <title>Use JSDoc: @instance</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@instance</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>Using the @instance tag will mark a symbol as an instance member of its parent symbol. This means it
-      can be referred to by &quot;Parent#Child&quot;.</p>
-    <p>Using @instance will override a doclet&#39;s default scope (unless it is in the global scope, in which
-      case it will remain global).</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example is a longhand way of writing &quot;@function MyNamespace#myFunction&quot;:</p>
-    <figure>
-      <figcaption>Using @instance to make a virtual doclet an instance member</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace MyNamespace */
-/**
- * myFunction is now MyNamespace#myFunction.
- * @function myFunction
- * @memberof MyNamespace
- * @instance
- */
-</code></pre>
-    </figure>
-    <p>More usefully, you can use the @instance tag to override the scope that JSDoc infers. For example,
-      you can indicate that a static member is used as an instance member:</p>
-    <figure>
-      <figcaption>Using @instance to identify an instance member</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var BaseObject = {
-    /**
-     * foo is now BaseObject#foo rather than BaseObject.foo.
-     * @instance
-     */
-    foo: null
-};
-
-/** Generates BaseObject instances. */
-function fooFactory(fooValue) {
-    var props = { foo: fooValue };
-    return Object.create(BaseObject, props);
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-inner.html">@inner</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-interface.html b/tags-interface.html
deleted file mode 100644
index 307bb634..00000000
--- a/tags-interface.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is an interface that others can implement.">
-  <title>Use JSDoc: @interface</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@interface</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p>With the JSDoc tag dictionary (enabled by default):</p>
-    <p><code>@interface [&lt;name&gt;]</code></p>
-    <p>With the <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure Compiler</a> tag
-      dictionary:</p>
-    <p><code>@interface</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@interface</code> tag marks a symbol as an interface that other symbols can implement. For example,
-      your code might define a parent class whose methods and properties are stubbed out. You can add the
-      <code>@interface</code> tag to the parent class to indicate that child classes must implement the parent class&#39;
-      methods and properties.</p>
-    <p>Add the <code>@interface</code> tag to the top-level symbol for the interface (for example, a constructor
-      function). You do not need to add the <code>@interface</code> tag to each member of the interface (for example,
-      the interface&#39;s instance methods).</p>
-    <p>If you are using the JSDoc tag dictionary (enabled by default), you can also define an interface
-      with virtual comments, rather than by writing code for the interface. See &quot;<a href="#virtual-comments">Virtual comments that
-        define an interface</a>&quot; for an example.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the <code>Color</code> function represents an interface that other classes can
-      implement:</p>
-    <figure>
-      <figcaption>Using the @interface tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Interface for classes that represent a color.
- *
- * @interface
- */
-function Color() {}
-
-/**
- * Get the color as an array of red, green, and blue values, represented as
- * decimal numbers between 0 and 1.
- *
- * @returns {Array&lt;number>} An array containing the red, green, and blue values,
- * in that order.
- */
-Color.prototype.rgb = function() {
-    throw new Error('not implemented');
-};
-</code></pre>
-    </figure>
-    <p><a name="virtual-comments"></a>
-      The following example uses virtual comments, rather than code, to define the <code>Color</code> interface:</p>
-    <figure>
-      <figcaption>Virtual comments that define an interface</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Interface for classes that represent a color.
- *
- * @interface Color
- */
-
-/**
- * Get the color as an array of red, green, and blue values, represented as
- * decimal numbers between 0 and 1.
- *
- * @function
- * @name Color#rgb
- * @returns {Array&lt;number>} An array containing the red, green, and blue values,
- * in that order.
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-implements.html">@implements</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-kind.html b/tags-kind.html
deleted file mode 100644
index 6560dfee..00000000
--- a/tags-kind.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="What kind of symbol is this?">
-  <title>Use JSDoc: @kind</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@kind</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@kind &lt;kindName&gt;</code></p>
-    <p>where <code>&lt;kindName&gt;</code> is one of:</p>
-    <ul>
-      <li>class</li>
-      <li>constant</li>
-      <li>event</li>
-      <li>external</li>
-      <li>file</li>
-      <li>function</li>
-      <li>member</li>
-      <li>mixin</li>
-      <li>module</li>
-      <li>namespace</li>
-      <li>typedef</li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @kind tag is used to document what <em>kind</em> of symbol is being documented (for example, a class or
-      a module). The <em>kind</em> of symbol differs from a symbol&#39;s <em>type</em> (for example, string or boolean).</p>
-    <p>Usually you do not need the @kind tag, because the symbol&#39;s kind is determined by other tags in the
-      doclet. For example, using the @class tag automatically implies &quot;@kind class&quot;, and using the
-      @namespace tag implies &quot;@kind namespace&quot;.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @kind</figcaption>
-      <pre class="prettyprint lang-js"><code>// The following examples produce the same result:
-
-/**
- * A constant.
- * @kind constant
- */
-const asdf = 1;
-
-/**
- * A constant.
- * @constant
- */
-const asdf = 1;
-</code></pre>
-    </figure>
-    <p>In the case of tags with conflicting kinds (for example, using both @module, which sets the kind to
-      &quot;module&quot;, and &quot;@kind constant&quot; which sets the kind to &quot;constant&quot;), the last tag determines the kind.</p>
-    <figure>
-      <figcaption>Conflicting @kind statements</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This will show up as a constant
- * @module myModule
- * @kind constant
- */
-
-/**
- * This will show up as a module.
- * @kind constant
- * @module myModule
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-type.html">@type</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-lends.html b/tags-lends.html
deleted file mode 100644
index c29573e9..00000000
--- a/tags-lends.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document properties on an object literal as if they belonged to a symbol with a given name.">
-  <title>Use JSDoc: @lends</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@lends</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@lends &lt;namepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@lends</code> tag allows you to document all the members of an object literal as if they were members
-      of a symbol with the given name. You might want to do this if you are passing an object literal into
-      a function that creates a named class from its members.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In this example, we want to use a helper function to make a class named <code>Person</code>, along with
-      instance methods named <code>initialize</code> and <code>say</code>. This is similar to how some popular frameworks
-      handle class creation.</p>
-    <figure>
-      <figcaption>Example class</figcaption>
-      <pre class="prettyprint lang-js"><code>// We want to document this as being a class
-var Person = makeClass(
-    // We want to document these as being methods
-    {
-        initialize: function(name) {
-            this.name = name;
-        },
-        say: function(message) {
-            return this.name + " says: " + message;
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <p>Without any comments, JSDoc won&#39;t recognize that this code creates a <code>Person</code> class with two
-      methods. To document the methods, we must use a <code>@lends</code> tag in a doc comment immediately before the
-      object literal. The <code>@lends</code> tag tells JSDoc that all the member names of that object literal are
-      being &quot;loaned&quot; to a variable named <code>Person</code>. We must also add comments to each of the methods.</p>
-    <p>The following example gets us closer to what we want:</p>
-    <figure>
-      <figcaption>Documented as static methods</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @class */
-var Person = makeClass(
-    /** @lends Person */
-    {
-        /**
-         * Create a `Person` instance.
-         * @param {string} name - The person's name.
-         */
-        initialize: function(name) {
-            this.name = name;
-        },
-        /**
-         * Say something.
-         * @param {string} message - The message to say.
-         * @returns {string} The complete message.
-         */
-        say: function(message) {
-            return this.name + " says: " + message;
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <p>Now the functions named <code>initialize</code> and <code>say</code> will be documented, but they appear as static methods
-      of the <code>Person</code> class. That is possibly what you meant, but in this case we want <code>initialize</code> and
-      <code>say</code> to belong to the instances of the <code>Person</code> class. So we change things slightly by lending the
-      methods to the class&#39;s prototype:</p>
-    <figure>
-      <figcaption>Documented as instance methods</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @class */
-var Person = makeClass(
-    /** @lends Person.prototype */
-    {
-        /**
-         * Create a `Person` instance.
-         * @param {string} name - The person's name.
-         */
-        initialize: function(name) {
-            this.name = name;
-        },
-        /**
-         * Say something.
-         * @param {string} message - The message to say.
-         * @returns {string} The complete message.
-         */
-        say: function(message) {
-            return this.name + " says: " + message;
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <p>One final step: Our class framework uses the loaned <code>initialize</code> function to construct <code>Person</code>
-      instances, but a <code>Person</code> instance does not have its own <code>initialize</code> method. The solution is to add
-      the <code>@constructs</code> tag to the loaned function. Remember to remove the <code>@class</code> tag as well, or else
-      two classes will be documented.</p>
-    <figure>
-      <figcaption>Documented with a constructor</figcaption>
-      <pre class="prettyprint lang-js"><code>var Person = makeClass(
-    /** @lends Person.prototype */
-    {
-        /**
-         * Create a `Person` instance.
-         * @constructs
-         * @param {string} name - The person's name.
-         */
-        initialize: function(name) {
-            this.name = name;
-        },
-        /**
-         * Say something.
-         * @param {string} message - The message to say.
-         * @returns {string} The complete message.
-         */
-        say: function(message) {
-            return this.name + " says: " + message;
-        }
-    }
-);
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-borrows.html">@borrows</a>
-      </li>
-      <li>
-        <a href="tags-constructs.html">@constructs</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-license.html b/tags-license.html
deleted file mode 100644
index 16fc30c1..00000000
--- a/tags-license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Identify the license that applies to this code.">
-  <title>Use JSDoc: @license</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@license</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@license &lt;identifier&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@license</code> tag identifies the software license that applies to any portion of your code.</p>
-    <p>You can use any text to identify the license you are using. If your code uses a standard open-source
-      license, consider using the appropriate identifier from the <a href="https://spdx.org/licenses/">Software Package Data Exchange (SPDX)
-        License List</a>.</p>
-    <p>Some JavaScript processing tools, such as Google&#39;s Closure Compiler, will automatically preserve
-      any JSDoc comment that includes a <code>@license</code> tag. If you are using one of these tools, you may wish
-      to add a standalone JSDoc comment that includes the <code>@license</code> tag, along with the entire text of
-      the license, so that the license text will be included in generated JavaScript files.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>A module that is distributed under the Apache License 2.0</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Utility functions for the foo package.
- * @module foo/util
- * @license Apache-2.0
- */
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>A standalone JSDoc comment with the complete MIT license</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @license
- * Copyright (c) 2015 Example Corporation Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-link.html b/tags-link.html
deleted file mode 100644
index b0bf6e3d..00000000
--- a/tags-link.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html>
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="refresh" content="0; url=tags-inline-link.html">
-        <title>Redirecting...</title>
-        <link rel="canonical" href="tags-inline-link.html">
-    </head>
-    <body>
-        <h1>Redirecting...</h1>
-        <a href="tags-inline-link.html">If you are not redirected, click here.</a>
-        <script type="text/javascript">location='tags-inline-link.html'</script>
-    </body>
-</html>
diff --git a/tags-listens.html b/tags-listens.html
deleted file mode 100644
index 560e2356..00000000
--- a/tags-listens.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="List the events that a symbol listens for.">
-  <title>Use JSDoc: @listens</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@listens</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@listens &lt;eventName&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@listens</code> tag indicates that a symbol listens for the specified event. Use the
-      <a href="tags-event.html"><code>@event tag</code></a> to document the event&#39;s content.</p>
-    <h2 id="example">Example</h2>
-    <p>The following example shows how to document an event named <code>module:hurler~event:snowball</code>, as well
-      as a method named <code>module:playground/monitor.reportThrowage</code> that listens for the event.</p>
-    <figure>
-      <figcaption>Documenting an event and its listener</figcaption>
-      <pre class="prettyprint lang-js"><code>define('hurler', [], function () {
-    /**
-     * Event reporting that a snowball has been hurled.
-     *
-     * @event module:hurler~snowball
-     * @property {number} velocity - The snowball's velocity, in meters per second.
-     */
-
-    /**
-     * Snowball-hurling module.
-     *
-     * @module hurler
-     */
-    var exports = {
-        /**
-         * Attack an innocent (or guilty) person with a snowball.
-         *
-         * @method
-         * @fires module:hurler~snowball
-         */
-        attack: function () {
-            this.emit('snowball', { velocity: 10 });
-        }
-    };
-
-    return exports;
-});
-
-define('playground/monitor', [], function () {
-    /**
-     * Keeps an eye out for snowball-throwers.
-     *
-     * @module playground/monitor
-     */
-    var exports = {
-        /**
-         * Report the throwing of a snowball.
-         *
-         * @method
-         * @param {module:hurler~event:snowball} e - A snowball event.
-         * @listens module:hurler~event:snowball
-         */
-        reportThrowage: function (e) {
-            this.log('snowball thrown: velocity ' + e.velocity);
-        }
-    };
-
-    return exports;
-});
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-event.html">@event</a>
-      </li>
-      <li>
-        <a href="tags-fires.html">@fires</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-member.html b/tags-member.html
deleted file mode 100644
index 4ae68c64..00000000
--- a/tags-member.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a member.">
-  <title>Use JSDoc: @member</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@member</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@var</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@member [&lt;type&gt;] [&lt;name&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @member tag identifies any member that does not have a more specialized kind, such as &quot;class&quot;,
-      &quot;function&quot;, or &quot;constant&quot;. A member can optionally have a type as well as a name.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @member with Data#point</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @class */
-function Data() {
-    /** @member {Object} */
-    this.point = {};
-}
-</code></pre>
-    </figure>
-    <p>Here is an example of using @var, a synonym of @member, to document a (virtual) variable &#39;foo&#39;.</p>
-    <figure>
-      <figcaption>Using @var to document a virtual member</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A variable in the global namespace called 'foo'.
- * @var {number} foo
- */
-</code></pre>
-    </figure>
-    <p>The above example is equivalent to the following:</p>
-    <pre class="prettyprint lang-js"><code>/**
- * A variable in the global namespace called 'foo'.
- * @type {number}
- */
-var foo;
-</code></pre>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-memberof.html b/tags-memberof.html
deleted file mode 100644
index 0afedd31..00000000
--- a/tags-memberof.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol belongs to a parent symbol.">
-  <title>Use JSDoc: @memberof</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@memberof</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <ul>
-      <li><code>@memberof &lt;parentNamepath&gt;</code></li>
-      <li><code>@memberof! &lt;parentNamepath&gt;</code></li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @memberof tag identifies a member symbol that belongs to a parent symbol.</p>
-    <p>By default, the @memberof tag documents member symbols as static members. For inner and instance
-      members, you can use scoping punctuation after the namepath, or you can add the <a href="tags-inner.html">@inner</a>
-      or <a href="tags-instance.html">@instance</a> tag.</p>
-    <p>The &quot;forced&quot; @memberof tag, @memberof!, forces the object to be documented as belonging to a specific
-      parent even if it appears to have a different parent.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the <code>hammer</code> function would normally be documented as a global function.
-      That&#39;s because, in fact, it is a global function, but it is also a member of the <code>Tools</code> namespace,
-      and that&#39;s how you wish to document it. The solution is to add a @memberof tag:</p>
-    <figure>
-      <figcaption>Using @memberof</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var Tools = {};
-
-/** @memberof Tools */
-var hammer = function() {
-};
-
-Tools.hammer = hammer;
-</code></pre>
-    </figure>
-    <p>For instance members of a class, use the syntax &quot;@memberof ClassName.prototype&quot; or &quot;@memberof
-      ClassName#&quot;. Alternatively, you can combine &quot;@memberof ClassName&quot; with the &quot;@instance&quot; tag.</p>
-    <figure>
-      <figcaption>Using @memberof with a class prototype</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @class Observable */
-create(
-    'Observable',
-    {
-        /**
-         * This will be a static member, Observable.cache.
-         * @memberof Observable
-         */
-        cache: [],
-
-        /**
-         * This will be an instance member, Observable#publish.
-         * @memberof Observable.prototype
-         */
-        publish: function(msg) {},
-
-        /**
-         * This will also be an instance member, Observable#save.
-         * @memberof Observable#
-         */
-        save: function() {},
-
-        /**
-         * This will also be an instance member, Observable#end.
-         * @memberof Observable
-         * @instance
-         */
-        end: function() {}
-    }
-);
-</code></pre>
-    </figure>
-    <p>The following example uses the forced @memberof tag, &quot;@memberof!&quot;, to document a property of an
-      object (Data#point) that is an instance member of a class (Data).</p>
-    <p>When you use the @property tag to document a property, you cannot link to the property using its
-      longname. We can force the property to be linkable by using &quot;@alias&quot; and &quot;@memberof!&quot; to tell JSDoc
-      that Data#point.y should be documented as a member &quot;point.y&quot; of &quot;Data#&quot;, rather than a member &quot;y&quot; of
-      &quot;point&quot; of &quot;Data#&quot;.</p>
-    <figure>
-      <figcaption>Using @memberof! for object properties</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @class */
-function Data() {
-    /**
-     * @type {object}
-     * @property {number} y This will show up as a property of `Data#point`,
-     * but you cannot link to the property as {@link Data#point.y}.
-     */
-    this.point = {
-        /**
-         * The @alias and @memberof! tags force JSDoc to document the
-         * property as `point.x` (rather than `x`) and to be a member of
-         * `Data#`. You can link to the property as {@link Data#point.x}.
-         * @alias point.x
-         * @memberof! Data#
-         */
-        x: 0,
-        y: 1
-    };
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-name.html">@name</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-method.html b/tags-method.html
deleted file mode 100644
index 9ff496cc..00000000
--- a/tags-method.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html>
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="refresh" content="0; url=tags-function.html">
-        <title>Redirecting...</title>
-        <link rel="canonical" href="tags-function.html">
-    </head>
-    <body>
-        <h1>Redirecting...</h1>
-        <a href="tags-function.html">If you are not redirected, click here.</a>
-        <script type="text/javascript">location='tags-function.html'</script>
-    </body>
-</html>
diff --git a/tags-mixes.html b/tags-mixes.html
deleted file mode 100644
index 9e109f1d..00000000
--- a/tags-mixes.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This object mixes in all the members from another object.">
-  <title>Use JSDoc: @mixes</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@mixes</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@mixes &lt;OtherObjectPath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @mixes tag indicates that the current object mixes in all the members from <code>OtherObjectPath</code>,
-      which is a <a href="tags-mixin.html">@mixin</a>.</p>
-    <h2 id="examples">Examples</h2>
-    <p>To start, we document a mixin with the <a href="tags-mixin.html">@mixin</a> tag:</p>
-    <figure>
-      <figcaption>Example of a @mixin</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This provides methods used for event handling. It's not meant to
- * be used directly.
- *
- * @mixin
- */
-var Eventful = {
-    /**
-     * Register a handler function to be called whenever this event is fired.
-     * @param {string} eventName - Name of the event.
-     * @param {function(Object)} handler - The handler to call.
-     */
-    on: function(eventName, handler) {
-        // code...
-    },
-
-    /**
-     * Fire an event, causing all handlers for that event name to run.
-     * @param {string} eventName - Name of the event.
-     * @param {Object} eventData - The data provided to each handler.
-     */
-    fire: function(eventName, eventData) {
-        // code...
-    }
-};
-</code></pre>
-    </figure>
-    <p>Now we add a FormButton class and call a &quot;mix&quot; function that mixes all of the Eventful functions
-      into FormButton, so that FormButton can also fire events and have listeners. We use the @mixes tag
-      to indicate that FormButton mixes the Eventful functions.</p>
-    <figure>
-      <figcaption>Using the @mixes tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @constructor FormButton
- * @mixes Eventful
- */
-var FormButton = function() {
-    // code...
-};
-FormButton.prototype.press = function() {
-  this.fire('press', {});
-}
-mix(Eventful).into(FormButton.prototype);
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-borrows.html">@borrows</a>
-      </li>
-      <li>
-        <a href="tags-class.html">@class</a>
-      </li>
-      <li>
-        <a href="tags-mixin.html">@mixin</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-mixin.html b/tags-mixin.html
deleted file mode 100644
index f6d6a12d..00000000
--- a/tags-mixin.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a mixin object.">
-  <title>Use JSDoc: @mixin</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@mixin</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@mixin [&lt;MixinName&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>A mixin provides functionality that is intended to be added to other objects. If desired, you can
-      use the @mixin tag to indicate that an object is a mixin. You can then add the @mixes tag to objects
-      that use the mixin.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using @mixin</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This provides methods used for event handling. It's not meant to
- * be used directly.
- *
- * @mixin
- */
-var Eventful = {
-    /**
-     * Register a handler function to be called whenever this event is fired.
-     * @param {string} eventName - Name of the event.
-     * @param {function(Object)} handler - The handler to call.
-     */
-    on: function(eventName, handler) {
-        // code...
-    },
-
-    /**
-     * Fire an event, causing all handlers for that event name to run.
-     * @param {string} eventName - Name of the event.
-     * @param {Object} eventData - The data provided to each handler.
-     */
-    fire: function(eventName, eventData) {
-        // code...
-    }
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-borrows.html">@borrows</a>
-      </li>
-      <li>
-        <a href="tags-class.html">@class</a>
-      </li>
-      <li>
-        <a href="tags-mixes.html">@mixes</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-module.html b/tags-module.html
deleted file mode 100644
index 9c352b87..00000000
--- a/tags-module.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a JavaScript module.">
-  <title>Use JSDoc: @module</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@module</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@module [[{&lt;type&gt;}] &lt;moduleName&gt;]</code></p>
-    <p>In JSDoc 3.3.0 and later, <code>&lt;moduleName&gt;</code> may include the <code>module:</code> prefix. In previous versions, you
-      must omit this prefix.</p>
-    <p>Note: If you provide a type, you <em>must</em> also provide a name.</p>
-    <h2 id="overview">Overview</h2>
-    <p>The @module tag marks the current file as being its own module. All symbols in the file are assumed
-      to be members of the module unless documented otherwise.</p>
-    <p>Link to a module (e.g. within a <a href="tags-inline-link.html">@link</a> or <a href="tags-see.html">@see</a> tag) using &quot;module:moduleName&quot;.
-      For example, &quot;@module foo/bar&quot; can be linked to using &quot;{@link module:foo/bar}&quot;.</p>
-    <p>If the module name is not provided, it is derived from the module&#39;s path and filename. For example,
-      suppose I have a file <code>test.js</code>, located in the <code>src</code> directory, that contains the block comment
-      <code>/** @module */</code>. Here are some scenarios for running JSDoc and the resulting module names for
-      test.js:</p>
-    <figure>
-      <figcaption>Derived module names if none is provided.</figcaption>
-      <pre class="prettyprint"><code># from src/
-jsdoc ./test.js   # module name 'test'
-
-# from src's parent directory:
-jsdoc src/test.js # module name 'src/test'
-jsdoc -r src/     # module name 'test'
-</code></pre>
-    </figure>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows the namepaths that are used for symbols in a module. The first symbol
-      is a module-private, or &quot;inner,&quot; variable--it can be only accessed within the module. The second
-      symbol is a static function that is exported by the module.</p>
-    <figure>
-      <figcaption>Basic @module use</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @module myModule */
-
-/** will be module:myModule~foo */
-var foo = 1;
-
-/** will be module:myModule.bar */
-var bar = function() {};
-</code></pre>
-    </figure>
-    <p>When an exported symbol is defined as a member of <code>module.exports</code>, <code>exports</code>, or <code>this</code>, JSDoc
-      infers that the symbol is a static member of the module.</p>
-    <p>In the following example, the Book class is documented as a static member, &quot;module:bookshelf.Book&quot;,
-      with one instance member, &quot;module:bookshelf.Book#title&quot;.</p>
-    <figure>
-      <figcaption>Defining exported symbols as a member of &#39;this&#39;</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @module bookshelf */
-/** @class */
-this.Book = function (title) {
-    /** The title. */
-    this.title = title;
-};
-</code></pre>
-    </figure>
-    <p>In the following example, the two functions have the namepaths &quot;module:color/mixer.blend&quot; and
-      &quot;module:color/mixer.darken&quot;.</p>
-    <figure>
-      <figcaption>Defining exported symbols as a member of &#39;module.exports&#39; or &#39;exports&#39;</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @module color/mixer */
-module.exports = {
-    /** Blend two colours together. */
-    blend: function (color1, color2) {}
-};
-/** Darkens a color. */
-exports.darken = function (color, shade) {};
-</code></pre>
-    </figure>
-    <p>See <a href="howto-commonjs-modules.html">Documenting JavaScript Modules</a> for further examples.</p>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-exports.html">@exports</a>
-      </li>
-      <li>
-        <a href="howto-commonjs-modules.html">CommonJS Modules</a>
-      </li>
-      <li>
-        <a href="howto-amd-modules.html">AMD Modules</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-name.html b/tags-name.html
deleted file mode 100644
index 75b1cc55..00000000
--- a/tags-name.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the name of an object.">
-  <title>Use JSDoc: @name</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@name</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@name &lt;namePath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @name tag forces JSDoc to associate the remainder of the JSDoc comment with the given name,
-      ignoring all surrounding code. This tag is best used in &quot;virtual comments&quot; for symbols that are not
-      readily visible in the code, such as methods that are generated at runtime.</p>
-    <p>When you use the @name tag, you must provide additional tags that tell JSDoc what kind of symbol you
-      are documenting; whether the symbol is a member of another symbol; and so on. If you do not provide
-      this information, the symbol will not be documented correctly.</p>
-    <p><strong>Warning</strong>: By using the @name tag, you are telling JSDoc to <em>ignore the surrounding code</em> and
-      treat your documentation comment in isolation. In many cases, it is best to use the
-      <a href="tags-alias.html">@alias tag</a> instead, which changes a symbol&#39;s name in the documentation but preserves
-      other information about the symbol.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example shows how to use the @name tag to document a function that JSDoc would not
-      normally recognize.</p>
-    <figure>
-      <figcaption>Using the @name tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @name highlightSearchTerm
- * @function
- * @global
- * @param {string} term - The search term to highlight.
- */
-eval("window.highlightSearchTerm = function(term) {};")
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-namepaths.html">Using namepaths with JSDoc 3</a>
-      </li>
-      <li>
-        <a href="tags-alias.html">@alias</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-namespace.html b/tags-namespace.html
deleted file mode 100644
index 44948cb0..00000000
--- a/tags-namespace.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a namespace object.">
-  <title>Use JSDoc: @namespace</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@namespace</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@namespace [[{&lt;type&gt;}] &lt;SomeName&gt;]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @namespace tag indicates that an object creates a namespace for its members. You can also write
-      a virtual JSDoc comment that defines a namespace used by your code.</p>
-    <p>If a namespace is defined by a symbol other than an object literal, you can include a type
-      expression along with the @namespace tag. If the @namespace tag includes a type, it must also
-      include a name.</p>
-    <p>You may need to document a namespace whose name includes unusual characters, such as &quot;#&quot; or &quot;!&quot;. In
-      these cases, when you document or link to the namespace, you must add quotation marks around the
-      portion of the namespace that includes unusual characters. See the examples below for details.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @namespace tag with an object</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * My namespace.
- * @namespace
- */
-var MyNamespace = {
-    /** documented as MyNamespace.foo */
-    foo: function() {},
-    /** documented as MyNamespace.bar */
-    bar: 1
-};
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the @namespace tag for virtual comments</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A namespace.
- * @namespace MyNamespace
- */
-
-/**
- * A function in MyNamespace (MyNamespace.myFunction).
- * @function myFunction
- * @memberof MyNamespace
- */
-</code></pre>
-    </figure>
-    <p>If a @namespace includes a symbol whose name has unusual characters, you must enclose the symbol&#39;s
-      name in double quotes. If the symbol&#39;s name already contains one or more double quotes, escape the
-      double quotes with a leading backslash (\).</p>
-    <figure>
-      <figcaption>Using the @namespace tag with unusual member names</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace window */
-
-/**
- * Shorthand for the alert function.
- * Refer to it as {@link window."!"} (note the double quotes).
- */
-window["!"] = function(msg) { alert(msg); };
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-module.html">@module</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-override.html b/tags-override.html
deleted file mode 100644
index 5ea24edc..00000000
--- a/tags-override.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Indicate that a symbol overrides its parent.">
-  <title>Use JSDoc: @override</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@override</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#example">Example</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@override</code> tag indicates that a symbol overrides a symbol with the same name in a parent class.</p>
-    <p>This tag is provided for compatibility with <a href="https://developers.google.com/closure/compiler/">Closure Compiler</a>. By default, JSDoc
-      automatically identifies symbols that override a parent.</p>
-    <p>If your JSDoc comment includes the <a href="tags-inheritdoc.html"><code>@inheritdoc</code> tag</a>, you do not need to include
-      the <code>@override</code> tag. The presence of the <code>@inheritdoc</code> tag implies the presence of the <code>@override</code>
-      tag.</p>
-    <h2 id="example">Example</h2>
-    <p>The following example shows how to indicate that a method overrides a method in its parent class:</p>
-    <figure>
-      <figcaption>Method that overrides a parent</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @classdesc Abstract class representing a network connection.
- * @class
- */
-function Connection() {}
-
-/**
- * Open the connection.
- */
-Connection.prototype.open = function() {
-    // ...
-};
-
-
-/**
- * @classdesc Class representing a socket connection.
- * @class
- * @augments Connection
- */
-function Socket() {}
-
-/**
- * Open the socket.
- * @override
- */
-Socket.prototype.open = function() {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-inheritdoc.html">@inheritdoc</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-package.html b/tags-package.html
deleted file mode 100644
index 5dbb8ead..00000000
--- a/tags-package.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is meant to be package-private.">
-  <title>Use JSDoc: @package</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@package</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p>With the JSDoc tag dictionary (enabled by default):</p>
-    <p><code>@package</code></p>
-    <p>With the <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure Compiler</a> tag
-      dictionary:</p>
-    <p><code>@package [{typeExpression}]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@package</code> tag marks a symbol as package-private. Typically, this tag indicates that a symbol is
-      available only to code in the same directory as the source file for this symbol. This tag is
-      available in JSDoc 3.5.0 and later.</p>
-    <p>By default, symbols marked with the <code>@package</code> tag will appear in your documentation. In JSDoc
-      3.3.0 and later, you can use the <a href="about-commandline.html"><code>-a/--access</code> command-line option</a> to change this
-      behavior.</p>
-    <p>The <code>@package</code> tag is equivalent to <code>@access package</code>.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the instance member <code>Thingy#_bar</code> appears in the generated documentation,
-      but with an annotation indicating that it is package-private:</p>
-    <figure>
-      <figcaption>Using the @package tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constructor */
-function Thingy() {
-    /** @package */
-    this._bar = 1;
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-access.html">@access</a>
-      </li>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-private.html">@private</a>
-      </li>
-      <li>
-        <a href="tags-protected.html">@protected</a>
-      </li>
-      <li>
-        <a href="tags-public.html">@public</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-param.html b/tags-param.html
deleted file mode 100644
index d69e1f10..00000000
--- a/tags-param.html
+++ /dev/null
@@ -1,305 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the parameter to a function.">
-  <title>Use JSDoc: @param</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@param</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-        <ul>
-          <li>
-            <a href="#names-types-and-descriptions">Names, types, and descriptions</a>
-          </li>
-          <li>
-            <a href="#parameters-with-properties">Parameters with properties</a>
-          </li>
-          <li>
-            <a href="#optional-parameters-and-default-values">Optional parameters and default values</a>
-          </li>
-          <li>
-            <a href="#multiple-types-and-repeatable-parameters">Multiple types and repeatable parameters</a>
-          </li>
-          <li>
-            <a href="#callback-functions">Callback functions</a>
-          </li>
-        </ul>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <ul>
-      <li>
-        <code>@arg</code>
-      </li>
-      <li>
-        <code>@argument</code>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@param</code> tag provides the name, type, and description of a function parameter.</p>
-    <p>The <code>@param</code> tag requires you to specify the name of the parameter you are documenting. You can also
-      include the parameter&#39;s type, enclosed in curly brackets, and a description of the parameter.</p>
-    <p>The parameter type can be a built-in JavaScript type, such as <code>string</code> or <code>Object</code>, or a
-      <a href="about-namepaths.html">JSDoc namepath</a> to another symbol in your code. If you have written documentation for the
-      symbol at that namepath, JSDoc will automatically link to the documentation for that symbol. You can
-      also use a type expression to indicate, for example, that a parameter is not nullable or can accept
-      any type; see the <a href="tags-type.html"><code>@type</code> tag documentation</a> for details.</p>
-    <p>If you provide a description, you can make the JSDoc comment more readable by inserting a hyphen
-      before the description. Be sure to include a space before and after the hyphen.</p>
-    <h2 id="examples">Examples</h2>
-    <h3 id="names-types-and-descriptions">Names, types, and descriptions</h3>
-    <p>The following examples show how to include names, types, and descriptions in a <code>@param</code> tag.</p>
-    <figure>
-      <figcaption>Name only</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param somebody
- */
-function sayHello(somebody) {
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Name and type</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string} somebody
- */
-function sayHello(somebody) {
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Name, type, and description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string} somebody Somebody's name.
- */
-function sayHello(somebody) {
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <p>You can add a hyphen before the description to make it more readable. Be sure to include a space
-      before and after the hyphen.</p>
-    <figure>
-      <figcaption>Name, type, and description, with a hyphen before the description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string} somebody - Somebody's name.
- */
-function sayHello(somebody) {
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <h3 id="parameters-with-properties">Parameters with properties</h3>
-    <p>If a parameter is expected to have a specific property, you can document that property by providing
-      an additional <code>@param</code> tag. For example, if an <code>employee</code> parameter is expected to have <code>name</code> and
-      <code>department</code> properties, you can document it as follows:</p>
-    <figure>
-      <figcaption>Documenting a parameter&#39;s properties</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Assign the project to an employee.
- * @param {Object} employee - The employee who is responsible for the project.
- * @param {string} employee.name - The name of the employee.
- * @param {string} employee.department - The employee's department.
- */
-Project.prototype.assign = function(employee) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>If a parameter is destructured without an explicit name, you can give the object an appropriate one and
-      document its properties.</p>
-    <figure>
-      <figcaption>Documenting a destructuring parameter</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Assign the project to an employee.
- * @param {Object} employee - The employee who is responsible for the project.
- * @param {string} employee.name - The name of the employee.
- * @param {string} employee.department - The employee's department.
- */
-Project.prototype.assign = function({ name, department }) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <p>You can also combine this syntax with JSDoc&#39;s syntax for array parameters. For example, if multiple
-      employees can be assigned to a project:</p>
-    <figure>
-      <figcaption>Documenting properties of values in an array</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Assign the project to a list of employees.
- * @param {Object[]} employees - The employees who are responsible for the project.
- * @param {string} employees[].name - The name of an employee.
- * @param {string} employees[].department - The employee's department.
- */
-Project.prototype.assign = function(employees) {
-    // ...
-};
-</code></pre>
-    </figure>
-    <h3 id="optional-parameters-and-default-values">Optional parameters and default values</h3>
-    <p>The following examples show how to indicate that a parameter is optional and has a default value.</p>
-    <figure>
-      <figcaption>An optional parameter (using JSDoc syntax)</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string} [somebody] - Somebody's name.
- */
-function sayHello(somebody) {
-    if (!somebody) {
-        somebody = 'John Doe';
-    }
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>An optional parameter (using Google Closure Compiler syntax)</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string=} somebody - Somebody's name.
- */
-function sayHello(somebody) {
-    if (!somebody) {
-        somebody = 'John Doe';
-    }
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>An optional parameter and default value</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {string} [somebody=John Doe] - Somebody's name.
- */
-function sayHello(somebody) {
-    if (!somebody) {
-        somebody = 'John Doe';
-    }
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <h3 id="multiple-types-and-repeatable-parameters">Multiple types and repeatable parameters</h3>
-    <p>The following examples show how to use type expressions to indicate that a parameter can accept
-      multiple types (or any type), and that a parameter can be provided more than once. See the
-      <a href="tags-type.html"><code>@type</code> tag documentation</a> for details about the type expressions that JSDoc supports.</p>
-    <figure>
-      <figcaption>Allows one type OR another type (type union)</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {(string|string[])} [somebody=John Doe] - Somebody's name, or an array of names.
- */
-function sayHello(somebody) {
-    if (!somebody) {
-        somebody = 'John Doe';
-    } else if (Array.isArray(somebody)) {
-        somebody = somebody.join(', ');
-    }
-    alert('Hello ' + somebody);
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Allows any type</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @param {*} somebody - Whatever you want.
- */
-function sayHello(somebody) {
-    console.log('Hello ' + JSON.stringify(somebody));
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Allows a parameter to be repeated</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Returns the sum of all numbers passed to the function.
- * @param {...number} num - A positive or negative number.
- */
-function sum(num) {
-    var i = 0, n = arguments.length, t = 0;
-    for (; i &lt; n; i++) {
-        t += arguments[i];
-    }
-    return t;
-}
-</code></pre>
-    </figure>
-    <h3 id="callback-functions">Callback functions</h3>
-    <p>If a parameter accepts a callback function, you can use the <a href="tags-callback.html"><code>@callback</code> tag</a> to
-      define a callback type, then include the callback type in the <code>@param</code> tag.</p>
-    <figure>
-      <figcaption>Parameters that accept a callback</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This callback type is called `requestCallback` and is displayed as a global symbol.
- *
- * @callback requestCallback
- * @param {number} responseCode
- * @param {string} responseMessage
- */
-
-/**
- * Does something asynchronously and executes the callback on completion.
- * @param {requestCallback} cb - The callback that handles the response.
- */
-function doSomethingAsynchronously(cb) {
-    // code
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-callback.html">@callback</a>
-      </li>
-      <li>
-        <a href="tags-returns.html">@returns</a>
-      </li>
-      <li>
-        <a href="tags-type.html">@type</a>
-      </li>
-      <li>
-        <a href="tags-typedef.html">@typedef</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-private.html b/tags-private.html
deleted file mode 100644
index d4c3bd35..00000000
--- a/tags-private.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is meant to be private.">
-  <title>Use JSDoc: @private</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@private</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p>With the JSDoc tag dictionary (enabled by default):</p>
-    <p><code>@private</code></p>
-    <p>With the <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure Compiler</a> tag
-      dictionary:</p>
-    <p><code>@private [{typeExpression}]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@private</code> tag marks a symbol as private, or not meant for general use. Private members are not
-      shown in the generated output unless JSDoc is run with the <code>-p/--private</code> command-line option. In
-      JSDoc 3.3.0 and later, you can also use the <a href="about-commandline.html"><code>-a/--access</code> command-line option</a> to
-      change this behavior.</p>
-    <p>The <code>@private</code> tag is not inherited by child members. For example, if the <code>@private</code> tag is added to
-      a namespace, members of the namespace can still appear in the generated output; because the
-      namespace is private, the members&#39; namepath will not include the namespace.</p>
-    <p>The <code>@private</code> tag is equivalent to <code>@access private</code>.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, <code>Documents</code> and <code>Documents.Newspaper</code> appear in the generated
-      documentation, but not <code>Documents.Diary</code>.</p>
-    <figure>
-      <figcaption>Using the @private tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace */
-var Documents = {
-    /**
-     * An ordinary newspaper.
-     */
-    Newspaper: 1,
-    /**
-     * My diary.
-     * @private
-     */
-    Diary: 2
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-access.html">@access</a>
-      </li>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-package.html">@package</a>
-      </li>
-      <li>
-        <a href="tags-protected.html">@protected</a>
-      </li>
-      <li>
-        <a href="tags-public.html">@public</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-property.html b/tags-property.html
deleted file mode 100644
index 4d73b9d5..00000000
--- a/tags-property.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a property of an object.">
-  <title>Use JSDoc: @property</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@property</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@prop</code>
-    </p>
-    <h2 id="overview">Overview</h2>
-    <p>The @property tag is a way to easily document a list of static properties of a class, namespace or
-      other object.</p>
-    <p>Normally JSDoc templates would create an entire new page to display information about each level of
-      a nested namespace hierarchy. Sometimes what you really want is to just list all the properties,
-      including nested properties, all together on the same page.</p>
-    <p>Note that property tags must be used in doc comments for the thing that they are properties of, a
-      namespace or a class for example. This tag is intended for simple collections of static properties,
-      it does not allow you to provide @examples or similar complex information for each property, just
-      the type, name and description.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In this example we have a namespace named &quot;config.&quot; We want all the information about the defaults
-      property, including its nested values, to appear on the same page with the documentation for config.</p>
-    <figure>
-      <figcaption>A namespace with defaults and nested default properties</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @namespace
- * @property {object}  defaults               - The default values for parties.
- * @property {number}  defaults.players       - The default number of players.
- * @property {string}  defaults.level         - The default level for the party.
- * @property {object}  defaults.treasure      - The default treasure.
- * @property {number}  defaults.treasure.gold - How much gold the party starts with.
- */
-var config = {
-    defaults: {
-        players: 1,
-        level:   'beginner',
-        treasure: {
-            gold: 0
-        }
-    }
-};
-</code></pre>
-    </figure>
-    <p>The following example shows how to indicate that a property is optional.</p>
-    <figure>
-      <figcaption>A type definition with required and optional property</figcaption>
-      <pre class="prettyprint"><code>/**
- * User type definition
- * @typedef {Object} User
- * @property {string} email
- * @property {string} [nickName]
- */
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-enum.html">@enum</a>
-      </li>
-      <li>
-        <a href="tags-member.html">@member</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-protected.html b/tags-protected.html
deleted file mode 100644
index 0f5e0670..00000000
--- a/tags-protected.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is meant to be protected.">
-  <title>Use JSDoc: @protected</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@protected</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p>With the JSDoc tag dictionary (enabled by default):</p>
-    <p><code>@protected</code></p>
-    <p>With the <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#jsdoc-tags">Closure Compiler</a> tag
-      dictionary:</p>
-    <p><code>@protected [{typeExpression}]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@protected</code> tag marks a symbol as protected. Typically, this tag indicates that a symbol is
-      only available, or should only be used, within the current module.</p>
-    <p>By default, symbols marked with the <code>@protected</code> tag will appear in your documentation. In JSDoc
-      3.3.0 and later, you can use the <a href="about-commandline.html"><code>-a/--access</code> command-line option</a> to change this
-      behavior.</p>
-    <p>The <code>@protected</code> tag is equivalent to <code>@access protected</code>.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the instance member <code>Thingy#_bar</code> appears in the generated documentation,
-      but with an annotation indicating that it is protected:</p>
-    <figure>
-      <figcaption>Using the @protected tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @constructor */
-function Thingy() {
-    /** @protected */
-    this._bar = 1;
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-access.html">@access</a>
-      </li>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-package.html">@package</a>
-      </li>
-      <li>
-        <a href="tags-private.html">@private</a>
-      </li>
-      <li>
-        <a href="tags-public.html">@public</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-public.html b/tags-public.html
deleted file mode 100644
index 342be1f2..00000000
--- a/tags-public.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is meant to be public.">
-  <title>Use JSDoc: @public</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@public</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@public</code> tag indicates that a symbol should be documented as if it were public.</p>
-    <p>By default, JSDoc treats all symbols as public, so using this tag does not normally affect the
-      generated documentation. However, you may prefer to use the <code>@public</code> tag explicitly so it is clear
-      to others that you intended to make the symbol public.</p>
-    <p>In JSDoc 3, the <code>@public</code> tag does <em>not</em> affect a symbol&#39;s scope. Use the
-      <a href="tags-instance.html"><code>@instance</code></a>, <a href="tags-static.html"><code>@static</code></a>, and <a
-        href="tags-global.html"><code>@global</code></a> tags to change a
-      symbol&#39;s scope.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @public tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The Thingy class is available to all.
- * @public
- * @class
- */
-function Thingy() {
-    /**
-     * The Thingy~foo member. Note that 'foo' is still an inner member
-     * of 'Thingy', in spite of the @public tag.
-     * @public
-     */
-    var foo = 0;
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-access.html">@access</a>
-      </li>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-      <li>
-        <a href="tags-package.html">@package</a>
-      </li>
-      <li>
-        <a href="tags-private.html">@private</a>
-      </li>
-      <li>
-        <a href="tags-protected.html">@protected</a>
-      </li>
-      <li>
-        <a href="tags-static.html">@static</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-readonly.html b/tags-readonly.html
deleted file mode 100644
index 0ec32508..00000000
--- a/tags-readonly.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This symbol is meant to be read-only.">
-  <title>Use JSDoc: @readonly</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@readonly</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @readonly tag indicates that a symbol is intended to be read-only. Note this is for the purpose
-      of documentation only - JSDoc won&#39;t check whether you&#39;ve <em>actually</em> treated the symbol as read-only
-      in your code.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @readonly tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A constant.
- * @readonly
- * @const {number}
- */
-const FOO = 1;
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the @readonly tag with a getter</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Options for ordering a delicious slice of pie.
- * @namespace
- */
-var pieOptions = {
-    /**
-     * Plain.
-     */
-    plain: 'pie',
-    /**
-     * A la mode.
-     * @readonly
-     */
-    get aLaMode() {
-        return this.plain + ' with ice cream';
-    }
-};
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-requires.html b/tags-requires.html
deleted file mode 100644
index 1b46a3c8..00000000
--- a/tags-requires.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="This file requires a JavaScript module.">
-  <title>Use JSDoc: @requires</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@requires</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@requires &lt;someModuleName&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @requires tag allows you to document that a module is needed to use this code. A JSDoc comment
-      can have multiple @require tags. The module name can be specified as &quot;moduleName&quot; or
-      &quot;module:moduleName&quot;; both forms will be interpreted as modules.</p>
-    <p>JSDoc does not attempt to process the module that is being included. If you want the module to be
-      included in the documentation, you must include the module in the list of JavaScript files to
-      process.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @requires tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * This class requires the modules {@link module:xyzcorp/helper} and
- * {@link module:xyzcorp/helper.ShinyWidget#polish}.
- * @class
- * @requires module:xyzcorp/helper
- * @requires xyzcorp/helper.ShinyWidget#polish
- */
-function Widgetizer() {}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-returns.html b/tags-returns.html
deleted file mode 100644
index c0a3c5f7..00000000
--- a/tags-returns.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the return value of a function.">
-  <title>Use JSDoc: @returns</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@returns</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@return</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@returns [{type}] [description]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@returns</code> tag documents the value that a function returns.</p>
-    <p>If you are documenting a generator function, use the <a href="tags-yields.html"><code>@yields</code> tag</a> instead of this
-      tag.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Return value with a type</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Returns the sum of a and b
- * @param {number} a
- * @param {number} b
- * @returns {number}
- */
-function sum(a, b) {
-    return a + b;
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Return value with a type and description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Returns the sum of a and b
- * @param {number} a
- * @param {number} b
- * @returns {number} Sum of a and b
- */
-function sum(a, b) {
-    return a + b;
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Return value with multiple types</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Returns the sum of a and b
- * @param {number} a
- * @param {number} b
- * @param {boolean} retArr If set to true, the function will return an array
- * @returns {(number|Array)} Sum of a and b or an array that contains a, b and the sum of a and b.
- */
-function sum(a, b, retArr) {
-    if (retArr) {
-        return [a, b, a + b];
-    }
-    return a + b;
-}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Returns a promise</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Returns the sum of a and b
- * @param {number} a
- * @param {number} b
- * @returns {Promise<number>} Promise object represents the sum of a and b
- */
-function sumAsync(a, b) {
-    return new Promise(function(resolve, reject) {
-        resolve(a + b);
-    });
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-param.html">@param</a>
-      </li>
-      <li>
-        <a href="tags-yields.html">@yields</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-see.html b/tags-see.html
deleted file mode 100644
index 84a8c327..00000000
--- a/tags-see.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Refer to some other documentation for more information.">
-  <title>Use JSDoc: @see</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@see</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <ul>
-      <li><code>@see &lt;namepath&gt;</code></li>
-      <li><code>@see &lt;text&gt;</code></li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @see tag allows you to refer to another symbol or resource that may be related to the one being
-      documented. You can provide either a symbol&#39;s namepath or free-form text. If you provide a namepath,
-      JSDoc&#39;s default template automatically converts the namepath to a link.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @see tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Both of these will link to the bar function.
- * @see {@link bar}
- * @see bar
- */
-function foo() {}
-
-// Use the inline {@link} tag to include a link within a free-form description.
-/**
- * @see {@link foo} for further information.
- * @see {@link http://github.com|GitHub}
- */
-function bar() {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-inline-link.html">{@link}</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-since.html b/tags-since.html
deleted file mode 100644
index 46a7dcf1..00000000
--- a/tags-since.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="When was this feature added?">
-  <title>Use JSDoc: @since</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@since</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@since &lt;versionDescription&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @since tag indicates that a class, method, or other symbol was added in a specific version.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @since tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Provides access to user information.
- * @since 1.0.1
- */
-function UserRecord() {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-version.html">@version</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-static.html b/tags-static.html
deleted file mode 100644
index bafa3c4b..00000000
--- a/tags-static.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a static member.">
-  <title>Use JSDoc: @static</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@static</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @static tag indicates that a symbol is contained within a parent and can be accessed without
-      instantiating the parent.</p>
-    <p>Using the @static tag will override a symbol&#39;s default scope, with one exception: Symbols in global
-      scope will remain global.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example has the same effect as writing &quot;@function MyNamespace.myFunction&quot; and omitting
-      the @memberof and @static tags:</p>
-    <figure>
-      <figcaption>Using @static in a virtual comment</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @namespace MyNamespace */
-
-/**
- * @function myFunction
- * @memberof MyNamespace
- * @static
- */
-</code></pre>
-    </figure>
-    <p>The following example forces a module&#39;s inner member to be documented as a static member:</p>
-    <figure>
-      <figcaption>Using @static to override the default scope</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @module Rollerskate */
-
-/**
- * The 'wheel' variable is documented as Rollerskate.wheel
- * rather than Rollerskate~wheel.
- * @static
- */
-var wheel = 1;
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-global.html">@global</a>
-      </li>
-      <li>
-        <a href="tags-inner.html">@inner</a>
-      </li>
-      <li>
-        <a href="tags-instance.html">@instance</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-summary.html b/tags-summary.html
deleted file mode 100644
index 18e409f4..00000000
--- a/tags-summary.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="A shorter version of the full description.">
-  <title>Use JSDoc: @summary</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@summary</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@summary Summary goes here.</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @summary tag is a shorter version of the full description. It can be added to any doclet.</p>
-    <h2 id="examples">Examples</h2>
-    <pre class="prettyprint lang-js"><code>/**
- * A very long, verbose, wordy, long-winded, tedious, verbacious, tautological,
- * profuse, expansive, enthusiastic, redundant, flowery, eloquent, articulate,
- * loquacious, garrulous, chatty, extended, babbling description.
- * @summary A concise summary.
- */
-function bloviate() {}
-</code></pre>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-classdesc.html">@classdesc</a>
-      </li>
-      <li>
-        <a href="tags-description.html">@description</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-this.html b/tags-this.html
deleted file mode 100644
index 1dfeb84d..00000000
--- a/tags-this.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="What does the &#39;this&#39; keyword refer to here?">
-  <title>Use JSDoc: @this</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@this</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@this &lt;namePath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @this tag indicates what the <code>this</code> keyword refers to when used within another symbol.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the @this tag causes &quot;this.name&quot; to be documented as &quot;Greeter#name&quot;
-      rather than a global symbol called &quot;name&quot;.</p>
-    <pre class="prettyprint lang-js"><code>/** @constructor */
-function Greeter(name) {
-    setName.apply(this, name);
-}
-
-/** @this Greeter */
-function setName(name) {
-    /** document me */
-    this.name = name;
-}
-</code></pre>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-memberof.html">@memberof</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-throws.html b/tags-throws.html
deleted file mode 100644
index d4c82314..00000000
--- a/tags-throws.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Describe what errors could be thrown.">
-  <title>Use JSDoc: @throws</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@throws</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@exception</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <ul>
-      <li><code>@throws free-form description</code></li>
-      <li><code>@throws {&lt;type&gt;}</code></li>
-      <li><code>@throws {&lt;type&gt;} free-form description</code></li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>The @throws tag allows you to document an error that a function might throw. You can include the
-      @throws tag more than once in a single JSDoc comment.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @throws tag with a type</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @throws {InvalidArgumentException}
- */
-function foo(x) {}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the @throws tag with a description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @throws Will throw an error if the argument is null.
- */
-function bar(x) {}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>Using the @throws tag with a type and description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @throws {DivideByZero} Argument x must be non-zero.
- */
-function baz(x) {}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-todo.html b/tags-todo.html
deleted file mode 100644
index 8f5e149e..00000000
--- a/tags-todo.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document tasks to be completed.">
-  <title>Use JSDoc: @todo</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@todo</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@todo text describing thing to do.</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @todo tag allows you to document tasks to be completed for some part of your code. You can use
-      the @todo tag more than once in a single JSDoc comment.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @todo tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @todo Write the documentation.
- * @todo Implement this function.
- */
-function foo() {
-    // write me
-}
-</code></pre>
-    </figure>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-tutorial.html b/tags-tutorial.html
deleted file mode 100644
index 385eccdf..00000000
--- a/tags-tutorial.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Insert a link to an included tutorial file.">
-  <title>Use JSDoc: @tutorial</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@tutorial</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <pre class="prettyprint"><code>@tutorial <tutorialID>
-</code></pre>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@tutorial</code> tag inserts a link to a tutorial file that is provided as part of the documentation.
-      See the <a href="about-tutorials.html">tutorials overview</a> for instructions on creating tutorials.</p>
-    <p>You can use the <code>@tutorial</code> tag more than once in a single JSDoc comment.</p>
-    <h2 id="examples">Examples</h2>
-    <p>In the following example, the documentation for <code>MyClass</code> will link to the tutorials that have the
-      identifiers <code>tutorial-1</code> and <code>tutorial-2</code>:</p>
-    <figure>
-      <figcaption>Using the @tutorial tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Description
- * @class
- * @tutorial tutorial-1
- * @tutorial tutorial-2
- */
-function MyClass() {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="about-tutorials.html">Tutorials</a>
-      </li>
-      <li>
-        <a href="tags-inline-tutorial.html">{@tutorial}</a>
-      </li>
-      <li>
-        <a href="tags-see.html">@see</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-type.html b/tags-type.html
deleted file mode 100644
index 02c22537..00000000
--- a/tags-type.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the type of an object.">
-  <title>Use JSDoc: @type</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@type</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@type {typeName}</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @type tag allows you to provide a type expression identifying the type of value that a symbol
-      may contain, or the type of value returned by a function. You can also include type expressions with
-      many other JSDoc tags, such as the <a href="tags-param.html">@param tag</a>.</p>
-    <p>A type expression can include the JSDoc namepath to a symbol (for example, <code>myNamespace.MyClass</code>); a
-      built-in JavaScript type (for example, <code>string</code>); or a combination of these. You can use any
-      <a href="https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#type-expressions">Google Closure Compiler type
-        expression</a>, as well as several other formats that are
-      specific to JSDoc.</p>
-    <p>If JSDoc determines that a type expression is invalid, it will display an error and stop running.
-      You can turn this error into a warning by running JSDoc with the <code>--lenient</code> option.</p>
-    <p><strong>Note</strong>: Full support for Google Closure Compiler-style type expressions is available
-      in JSDoc 3.2 and later. Earlier versions of JSDoc included partial support for Closure Compiler type
-      expressions.</p>
-    <p>Each type is specified by providing a type expression, using one of the formats described below.
-      Where appropriate, JSDoc will automatically create links to the documentation for other symbols. For
-      example, <code>@type {MyClass}</code> will link to the MyClass documentation if that symbol has been
-      documented.</p>
-    <table id="jsdoc-types" name="jsdoc-types">
-      <tr>
-        <th>Type name</th>
-        <th>Syntax examples</th>
-        <th>Description</th>
-      </tr>
-      <tr>
-        <td>Symbol name (name expression)</td>
-        <td>
-          <figure>
-            <pre class="prettyprint"><code>{boolean}
-{myNamespace.MyClass}
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            Specifies the name of a symbol. If you have documented the symbol, JSDoc creates a link to the
-            documentation for that symbol.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          Multiple types (type union)
-        </td>
-        <td>
-          <figure>
-            <figcaption>This can be a number or a boolean.</figcaption>
-            <pre class="prettyprint"><code>{(number|boolean)}
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            This means a value can have one of several types, with the entire list of types enclosed in
-            parentheses and separated by <code>|</code>.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          Arrays and objects (type applications and record types)
-        </td>
-        <td>
-          <figure>
-            <figcaption>An array of MyClass instances.</figcaption>
-            <pre class="prettyprint"><code>{Array.&lt;MyClass&gt;}
-// or:
-{MyClass[]}
-</code></pre>
-          </figure>
-          <figure>
-            <figcaption>An object with string keys and number values:</figcaption>
-            <pre class="prettyprint"><code>{Object.&lt;string, number&gt;}
-</code></pre>
-          </figure>
-          <figure>
-            <figcaption>An object called &#39;myObj&#39; with properties &#39;a&#39; (a number), &#39;b&#39; (a string) and &#39;c&#39; (any type).</figcaption>
-            <pre class="prettyprint"><code>&#123;{a: number, b: string, c}} myObj
-// or:
-{Object} myObj
-{number} myObj.a
-{string} myObj.b
-{*} myObj.c
-</code></pre>
-            <p>
-          </figure>
-        </td>
-        <td>
-          <p>
-            JSDoc supports Closure Compiler&#39;s syntax for defining array and object types.
-            <p>
-              <p>
-                You can also indicate an array by appending <code>[]</code> to the type that is contained in the
-                array. For example, the expression <code>string[]</code> indicates an array of strings.
-              </p>
-              <p>
-                For objects that have a known set of properties, you can use Closure Compiler&#39;s syntax for
-                documenting record types. You can document each property individually, which enables you to
-                provide more detailed information about each property.
-              </p>
-        </td>
-        </p>
-      </tr>
-      <tr>
-        <td>
-          Nullable type
-        </td>
-        <td>
-          <figure>
-            <figcaption>A number or null.</figcaption>
-            <pre class="prettyprint"><code>{?number}
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            This indicates that the type is either the specified type, or <code>null</code>.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          Non-nullable type
-        </td>
-        <td>
-          <figure>
-            <figcaption>A number, but never null.</figcaption>
-            <pre class="prettyprint"><code>{!number}
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            Indicates that the value is of the specified type, but cannot be <code>null</code>.
-          </p>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          Variable number of that type
-        </td>
-        <td>
-          <figure>
-            <figcaption>This function accepts a variable number of numeric parameters.</figcaption>
-            <pre class="prettyprint"><code>@param {...number} num
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            Indicates that the function accepts a variable number of parameters, and specifies a type for the
-            parameters. For example:
-          </p>
-          <figure>
-            <pre class="prettyprint"><code>/**
- * Returns the sum of all numbers passed to the function.
- * @param {...number} num A positive or negative number
- */
-function sum(num) {
-    var i=0, n=arguments.length, t=0;
-    for (; i&lt;n; i++) {
-        t += arguments[i];
-    }
-    return t;
-}
-</code></pre>
-          </figure>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          Optional parameter
-        </td>
-        <td>
-          <figure>
-            <figcaption>An optional parameter named foo.</figcaption>
-            <pre class="prettyprint"><code>@param {number} [foo]
-// or:
-@param {number=} foo
-</code></pre>
-          </figure>
-          <figure>
-            <figcaption>An optional parameter foo with default value 1.</figcaption>
-            <pre class="prettyprint"><code>@param {number} [foo=1]
-</code></pre>
-            <p>
-          </figure>
-        </td>
-        <td>
-          <p>
-            Indicates that the parameter is optional. When using JSDoc&#39;s syntax for optional parameters, you
-            can also indicate the value that will be used if a parameter is omitted.
-          </p>
-        </td>
-        </p>
-      </tr>
-      <tr>
-        <td>
-          Callbacks
-        </td>
-        <td>
-          <figure>
-            <pre class="prettyprint"><code>/**
- * @callback myCallback
- * @param {number} x - ...
- */
-
-<p>/** @type {myCallback} */
-var cb;
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            Document a callback using the <a href="tags-callback.html">@callback</a> tag. The syntax is
-            identical to the @typedef tag, except that a callback&#39;s type is always &quot;function.&quot;
-          </p>
-        </td>
-        </p>
-      </tr>
-      <tr>
-        <td>
-          Type definitions
-        </td>
-        <td>
-          <figure>
-            <figcaption>Documenting a type with properties 'id', 'name', 'age'.</figcaption>
-            <pre class="prettyprint"><code>/**
- * @typedef PropertiesHash
- * @type {object}
- * @property {string} id - an ID.
- * @property {string} name - your name.
- * @property {number} age - your age.
- */
-
-<p>/** @type {PropertiesHash} */
-var props;
-</code></pre>
-          </figure>
-        </td>
-        <td>
-          <p>
-            You can document complex types using the <a href="tags-typedef.html">@typedef</a> tag, then refer
-            to the type definition elsewhere in your documentation.
-          </p>
-        </td>
-        </p>
-      </tr>
-    </table>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Example</figcaption>
-      <pre class="prettyprint lang-js"><code>/** @type {(string|Array.<string>)} */
-var foo;
-/** @type {number} */
-var bar = 1;
-</code></pre>
-    </figure>
-    <p>In many cases, you can include a type expression as part of another tag, rather than including a
-      separate @type tag in your JSDoc comment.</p>
-    <figure>
-      <figcaption>Type expressions can accompany many tags.</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * @type {number}
- * @const
- */
-var FOO = 1;
-
-// same as:
-
-/** @const {number} */
-var FOO = 1;
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-callback.html">@callback</a>
-      </li>
-      <li>
-        <a href="tags-typedef.html">@typedef</a>
-      </li>
-      <li>
-        <a href="tags-param.html">@param</a>
-      </li>
-      <li>
-        <a href="tags-property.html">@property</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-typedef.html b/tags-typedef.html
deleted file mode 100644
index 07a4b6f2..00000000
--- a/tags-typedef.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document a custom type.">
-  <title>Use JSDoc: @typedef</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@typedef</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@typedef [&lt;type&gt;] &lt;namepath&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The @typedef tag is useful for documenting custom types, particularly if you wish to refer to them
-      repeatedly. These types can then be used within other tags expecting a type, such as
-      <a href="tags-type.html">@type</a> or <a href="tags-param.html">@param</a>.</p>
-    <p>Use the <a href="tags-callback.html">@callback</a> tag to document the type of callback functions.</p>
-    <h2 id="examples">Examples</h2>
-    <p>This example defines a union type for parameters that can contain either numbers or strings that
-      represent numbers.</p>
-    <figure>
-      <figcaption>Using the @typedef tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * A number, or a string containing a number.
- * @typedef {(number|string)} NumberLike
- */
-
-/**
- * Set the magic number.
- * @param {NumberLike} x - The magic number.
- */
-function setMagicNumber(x) {
-}
-</code></pre>
-    </figure>
-    <p>This example defines a more complex type, an object with several properties, and sets its
-      namepath so it will be displayed along with the class that uses the type. Because the type
-      definition is not actually exposed by the class, it is customary to document the type definition as
-      an inner member.</p>
-    <figure>
-      <figcaption>Using @typedef to document a complex type for a class</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The complete Triforce, or one or more components of the Triforce.
- * @typedef {Object} WishGranter~Triforce
- * @property {boolean} hasCourage - Indicates whether the Courage component is present.
- * @property {boolean} hasPower - Indicates whether the Power component is present.
- * @property {boolean} hasWisdom - Indicates whether the Wisdom component is present.
- */
-
-/**
- * A class for granting wishes, powered by the Triforce.
- * @class
- * @param {...WishGranter~Triforce} triforce - One to three {@link WishGranter~Triforce} objects
- * containing all three components of the Triforce.
- */
-function WishGranter(triforce) {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-callback.html">@callback</a>
-      </li>
-      <li>
-        <a href="tags-param.html">@param</a>
-      </li>
-      <li>
-        <a href="tags-type.html">@type</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-variation.html b/tags-variation.html
deleted file mode 100644
index b03a7dae..00000000
--- a/tags-variation.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Distinguish different objects with the same name.">
-  <title>Use JSDoc: @variation</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@variation</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@variation &lt;variationNumber&gt;</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>Sometimes your code may include multiple symbols with the same longname. For example, you might have
-      both a global class and a top-level namespace called <code>Widget</code>. In cases such as these, what does
-      &quot;{@link Widget}&quot; or &quot;@memberof Widget&quot; mean? The global namespace, or the global class?</p>
-    <p>Variations help JSDoc distinguish between different symbols with the same longname. For example, if
-      &quot;@variation 2&quot; is added to the JSDoc comment for the Widget class, &quot;{@link Widget(2)}&quot; will refer to
-      the class, and &quot;{@link Widget}&quot; will refer to the namespace. Alternatively, you can include the
-      variation when you specify the symbol&#39;s with tags such as <a href="tags-alias.html">@alias</a> or <a href="tags-name.html">@name</a>
-      (for example, &quot;@alias Widget(2)&quot;).</p>
-    <p>You can provide any value with the @variation tag, as long as the combination of the value and the
-      longname results in a globally unique version of the longname. As a best practice, use a predictable
-      pattern for choosing the values, which will make it easier for you to document your code.</p>
-    <h2 id="examples">Examples</h2>
-    <p>The following example uses the @variation tag to distinguish between the Widget class and the Widget
-      namespace.</p>
-    <figure>
-      <figcaption>Using the @variation tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * The Widget namespace.
- * @namespace Widget
- */
-
-// you can also use '@class Widget(2)' and omit the @variation tag
-/**
- * The Widget class. Defaults to the properties in {@link Widget.properties}.
- * @class
- * @variation 2
- * @param {Object} props - Name-value pairs to add to the widget.
- */
-function Widget(props) {}
-
-/**
- * Properties added by default to a new {@link Widget(2)} instance.
- */
-Widget.properties = {
-    /**
-     * Indicates whether the widget is shiny.
-     */
-    shiny: true,
-    /**
-     * Indicates whether the widget is metallic.
-     */
-    metallic: true
-};
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <ul>
-      <li>
-        <a href="tags-alias.html">@alias</a>
-      </li>
-      <li>
-        <a href="tags-name.html">@name</a>
-      </li>
-    </ul>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-version.html b/tags-version.html
deleted file mode 100644
index b15e154d..00000000
--- a/tags-version.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Documents the version number of an item.">
-  <title>Use JSDoc: @version</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@version</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="overview">Overview</h2>
-    <p>Documents the version of an item. The text following the @version tag will be used to denote the
-      version of the item.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>Using the @version tag</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Solves equations of the form a * x = b. Returns the value
- * of x.
- * @version 1.2.3
- * @tutorial solver
- */
-function solver(a, b) {
-    return b / a;
-}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-since.html">@since</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/tags-yields.html b/tags-yields.html
deleted file mode 100644
index 91380de4..00000000
--- a/tags-yields.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-
-<head>
-  <meta charset="utf-8">
-  <meta name="description" content="Document the value yielded by a generator function.">
-  <title>Use JSDoc: @yields</title>
-  <link rel="stylesheet" href="styles/usejsdoc.css">
-  <link rel="stylesheet" href="styles/prettify.css">
-  <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-  <script src="scripts/prettify.js"></script>
-</head>
-
-<body>
-  <header>
-    <a href="./index.html">@use JSDoc</a>
-  </header>
-  <article>
-    <h1>@yields</h1>
-    <h2>Table of Contents</h2>
-    <ul>
-      <li>
-        <a href="#synonyms">Synonyms</a>
-      </li>
-      <li>
-        <a href="#syntax">Syntax</a>
-      </li>
-      <li>
-        <a href="#overview">Overview</a>
-      </li>
-      <li>
-        <a href="#examples">Examples</a>
-      </li>
-      <li>
-        <a href="#related-links">Related Links</a>
-      </li>
-    </ul>
-    <h2 id="synonyms">Synonyms</h2>
-    <p>
-      <code>@yield</code>
-    </p>
-    <h2 id="syntax">Syntax</h2>
-    <p><code>@yields [{type}] [description]</code></p>
-    <h2 id="overview">Overview</h2>
-    <p>The <code>@yields</code> tag documents the value that is yielded by a generator function. This tag is available
-      in JSDoc 3.5.0 and later.</p>
-    <p>If you are documenting a regular function, use the <a href="tags-returns.html"><code>@returns</code> tag</a> instead of this
-      tag.</p>
-    <h2 id="examples">Examples</h2>
-    <figure>
-      <figcaption>@yields tag with a type</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Generate the Fibonacci sequence of numbers.
- *
- * @yields {number}
- */
-function* fibonacci() {}
-</code></pre>
-    </figure>
-    <figure>
-      <figcaption>@yields tag with a type and description</figcaption>
-      <pre class="prettyprint lang-js"><code>/**
- * Generate the Fibonacci sequence of numbers.
- *
- * @yields {number} The next number in the Fibonacci sequence.
- */
-function* fibonacci() {}
-</code></pre>
-    </figure>
-    <h2 id="related-links">Related Links</h2>
-    <p>
-      <a href="tags-returns.html">@returns</a>
-    </p>
-  </article>
-  <footer>
-    <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg" width="80" height="15" /></a>
-    <br>
-    Copyright &#169; 2011-2017 the
-    <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-    JSDoc 3 documentation project.
-    <br>
-    This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-    licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-      Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-  </footer>
-  <script type="text/javascript">
-    prettyPrint();
-  </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/views/index.swig b/views/index.swig
deleted file mode 100644
index 8bd68554..00000000
--- a/views/index.swig
+++ /dev/null
@@ -1,56 +0,0 @@
-{% extends 'layout.swig' %}
-
-{% macro tocItems(items) %}
-    {% for item in items %}
-        {% if item.filename %}
-            {% set itemLink = item.filename %}
-            {% set itemText = titleForFilename(files, item.filename) %}
-            {% set itemDescription = descriptionForFilename(files, item.filename) %}
-        {% else %}
-            {% set itemLink = item.link %}
-            {% set itemText = item.text %}
-            {% set itemDescription = item.description %}
-        {% endif %}
-
-        {% if item.synonyms %}
-            {% set itemExtraText = ' (synonyms: ' + item.synonyms.join(', ') + ')' %}
-        {% else %}
-            {% set itemExtraText = '' %}
-        {% endif %}
-        <dt><a href="{{ itemLink }}">{{ itemText }}</a>{{ itemExtraText }}</dt>
-        <dd>{{ itemDescription }}</dd>
-    {% endfor %}
-{% endmacro %}
-
-{% block content %}
-    <h2>Getting Started</h2>
-    <dl>
-        {{ tocItems(metadata.tocData.gettingStarted) }}
-    </dl>
-
-    <h2>JSDoc Examples</h2>
-    <dl>
-        {{ tocItems(metadata.tocData.examples) }}
-    </dl>
-
-    <h2 id="block-tags">Block Tags</h2>
-    <dl>
-        {% set tags = getBlockTags(metadata) %}
-        {{ tocItems(tags) }}
-    </dl>
-
-    <h2 id="inline-tags">Inline Tags</h2>
-    <dl>
-        {% set tags = getInlineTags(metadata) %}
-        {{ tocItems(tags) }}
-    </dl>
-
-    <h2>Contribute</h2>
-    <dl>
-        {{ tocItems(metadata.tocData.contribute) }}
-    </dl>
-
-    <p>
-        <a href="https://github.com/jsdoc3/jsdoc" class="github-ribbon">Fork me on GitHub</a>
-    </p>
-{% endblock %}
diff --git a/views/layout.swig b/views/layout.swig
deleted file mode 100644
index d383956b..00000000
--- a/views/layout.swig
+++ /dev/null
@@ -1,121 +0,0 @@
-{% import 'macros.swig' as macros %}
-
-{# must be defined here so it has access to local functions #}
-{% macro maybeList(items, type) %}
-    {# assume multiple items #}
-    {% set singleItem = false %}
-
-    {% for item in items %}
-        {% if loop.first %}
-            {% if loop.last %}
-                {% set singleItem = true %}
-            {% else %}
-                <ul>
-            {% endif %}
-        {% endif %}
-
-        {% if singleItem %}
-            <p>
-        {% else %}
-            <li>
-        {% endif %}
-
-        {% switch type %}
-            {% case 'filename' %}
-                <a href="{{ item }}">{{ titleForFilename(files, item) }}</a>
-            {% case 'synonym' %}
-                <code>{{ item }}</code>
-        {% endswitch %}
-
-        {% if singleItem %}
-            </p>
-        {% else %}
-            </li>
-        {% endif %}
-    {% endfor %}
-
-    {% if !singleItem %}
-        </ul>
-    {% endif %}
-{% endmacro %}
-
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html lang="en">
-<head>
-    {% block meta %}
-        <meta charset="utf-8">
-        {% if keywords %}
-            <meta name="keywords" content="{{ keywords }}">
-        {% endif %}
-        {% if description %}
-            <meta name="description" content="{{ description }}">
-        {% endif %}
-    {% endblock %}
-
-    <title>Use JSDoc{% if title %}: {{ title }}{% endif %}</title>
-
-    {% block styles %}
-        <link rel="stylesheet" href="styles/usejsdoc.css">
-        <link rel="stylesheet" href="styles/prettify.css">
-        <link rel="stylesheet" href="styles/css3-github-ribbon.css">
-    {% endblock %}
-
-    {% block scripts-head %}
-        <script src="scripts/prettify.js"></script>
-    {% endblock %}
-</head>
-
-<body>
-    <header>
-        <a href="./index.html">@use JSDoc</a>
-    </header>
-
-    <article>
-    {% if title %}
-        <h1>{{ title }}</h1>
-    {% endif %}
-
-    {% block toc %}
-        {% if headings && renderPageToc(headings) %}
-            {{ macros.toc(headings) }}
-        {% endif %}
-    {% endblock %}
-
-    {% block synonyms %}
-        {% if synonyms %}
-            <h2 id="synonyms">Synonyms</h2>
-            {{ maybeList(synonyms, 'synonym') }}
-        {% endif %}
-    {% endblock %}
-
-    {% block content %}
-        {{ contents|safe }}
-    {% endblock %}
-
-    {% if related %}
-        <h2 id="related-links">Related Links</h2>
-        {{ maybeList(related, 'filename') }}
-    {% endif %}
-
-    </article>
-
-    <footer>
-        <a class="license-badge" href="http://creativecommons.org/licenses/by-sa/3.0/">
-        <img alt="Creative Commons License" class="license-badge" src="images/cc-by-sa.svg"
-            width="80" height="15" /></a>
-        <br>
-        Copyright &#169; 2011-2019 the
-        <a href="https://github.com/jsdoc3/jsdoc3.github.com/contributors">contributors</a> to the
-        JSDoc 3 documentation project.
-        <br>
-        This website is <a href="https://github.com/jsdoc3/jsdoc3.github.com">open source</a> and is
-        licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
-        Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
-    </footer>
-
-    {% block scripts-footer %}
-        <script type="text/javascript">prettyPrint();</script>
-    {% endblock %}
-</body>
-</html>
diff --git a/views/macros.swig b/views/macros.swig
deleted file mode 100644
index 16fc9e2d..00000000
--- a/views/macros.swig
+++ /dev/null
@@ -1,19 +0,0 @@
-{% macro tocList(items) %}
-    <ul>
-        {% for item in items %}
-            <li>
-                <a href="#{{ item.id }}">{{ item.text }}</a>
-                {% if item.children.length %}
-                    {{ toc(item.children, true) }}
-                {% endif %}
-            </li>
-        {% endfor %}
-    </ul>
-{% endmacro %}
-
-{% macro toc(items, isInner) %}
-    {% if !isInner %}
-        <h2>Table of Contents</h2>
-    {% endif %}
-    {{ tocList(items) }}
-{% endmacro %}
diff --git a/views/page.swig b/views/page.swig
deleted file mode 100644
index 3fd41cdf..00000000
--- a/views/page.swig
+++ /dev/null
@@ -1 +0,0 @@
-{% extends 'layout.swig' %}
diff --git a/views/redirect.swig b/views/redirect.swig
deleted file mode 100644
index 2836f69b..00000000
--- a/views/redirect.swig
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<!-- THIS IS A GENERATED FILE. DO NOT EDIT. -->
-<html>
-    <head>
-        <meta charset="utf-8">
-        <meta http-equiv="refresh" content="0; url={{ target }}">
-        <title>Redirecting...</title>
-        <link rel="canonical" href="{{ target }}">
-    </head>
-    <body>
-        <h1>Redirecting...</h1>
-        <a href="{{ target }}">If you are not redirected, click here.</a>
-        <script type="text/javascript">location='{{ target }}'</script>
-    </body>
-</html>
