diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000000..18c19dbcb0
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,19 @@
+{
+ "plugins": ["@babel/plugin-syntax-dynamic-import"],
+ "env": {
+ "test": {
+ "plugins": ["dynamic-import-node"],
+ "presets": [
+ [
+ "@babel/preset-env",
+ {
+ "modules": "commonjs",
+ "targets": {
+ "node": "current"
+ }
+ }
+ ]
+ ]
+ }
+ }
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..9d08a1a828
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000000..9b1c8b133c
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1 @@
+/dist
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000000..5f1ba14ed3
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,55 @@
+module.exports = {
+ root: true,
+
+ parserOptions: {
+ parser: 'babel-eslint',
+ sourceType: 'module'
+ },
+
+ env: {
+ browser: true
+ },
+
+ extends: [
+ // https://eslint.vuejs.org/rules/#priority-a-essential-error-prevention
+ // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
+ 'plugin:vue/essential',
+ '@vue/standard'
+ ],
+
+ // required to lint *.vue files
+ plugins: [
+ 'vue'
+ ],
+
+ globals: {
+ 'ga': true, // Google Analytics
+ 'cordova': true,
+ '__statics': true,
+ 'process': true,
+ 'Capacitor': true,
+ 'chrome': true
+ },
+
+ // add your custom rules here
+ rules: {
+ // allow async-await
+ 'generator-star-spacing': 'off',
+ // allow paren-less arrow functions
+ 'arrow-parens': 'off',
+ 'one-var': 'off',
+
+ 'import/first': 'off',
+ 'import/named': 'error',
+ 'import/namespace': 'error',
+ 'import/default': 'error',
+ 'import/export': 'error',
+ 'import/extensions': 'off',
+ 'import/no-unresolved': 'off',
+ 'import/no-extraneous-dependencies': 'off',
+ 'prefer-promise-reject-errors': 'off',
+
+ // allow debugger during development only
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..90fe547711
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,54 @@
+.DS_Store
+.thumbs.db
+node_modules
+
+generated-html
+
+# Temp generation file
+docs/zap-schema.dot
+
+# Quasar core related directories
+.quasar
+/dist
+
+#We don't save the coverage within
+#this repo.
+test/jest/coverage
+test/jest/__tests__/data/zap.sqlite
+
+# Cordova related directories and files
+/src-cordova/node_modules
+/src-cordova/platforms
+/src-cordova/plugins
+/src-cordova/www
+
+# Capacitor related directories and files
+/src-capacitor/www
+/src-capacitor/node_modules
+
+# BEX related directories and files
+/src-bex/www
+/src-bex/js/core
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Random test file that I keep using for the JSON output.
+test.json
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+
+# Sonarqube stuff
+.scannerwork
+sonar-project.properties
+
+# Temporary place for handlebars stuff.
+src-electron/handlebars/out/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000..f9e419e499
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "zcl"]
+ path = zcl
+ url = ../zcl.git
+ branch = master
diff --git a/.postcssrc.js b/.postcssrc.js
new file mode 100644
index 0000000000..1174fe52b7
--- /dev/null
+++ b/.postcssrc.js
@@ -0,0 +1,8 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+ plugins: [
+ // to edit target browsers: use "browserslist" field in package.json
+ require('autoprefixer')
+ ]
+}
diff --git a/.stylintrc b/.stylintrc
new file mode 100644
index 0000000000..ce38d777ec
--- /dev/null
+++ b/.stylintrc
@@ -0,0 +1,35 @@
+{
+ "blocks": "never",
+ "brackets": "never",
+ "colons": "never",
+ "colors": "always",
+ "commaSpace": "always",
+ "commentSpace": "always",
+ "cssLiteral": "never",
+ "depthLimit": false,
+ "duplicates": true,
+ "efficient": "always",
+ "extendPref": false,
+ "globalDupe": true,
+ "indentPref": 2,
+ "leadingZero": "never",
+ "maxErrors": false,
+ "maxWarnings": false,
+ "mixed": false,
+ "namingConvention": false,
+ "namingConventionStrict": false,
+ "none": "never",
+ "noImportant": false,
+ "parenSpace": "never",
+ "placeholder": false,
+ "prefixVarsWithDollar": "always",
+ "quotePref": "single",
+ "semicolons": "never",
+ "sortOrder": false,
+ "stackedProperties": "never",
+ "trailingWhitespace": "never",
+ "universal": "never",
+ "valid": true,
+ "zeroUnits": "never",
+ "zIndexNormalize": false
+}
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000000..1dd315961c
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,131 @@
+pipeline
+{
+ agent { label 'Zap-Build' }
+
+ options { buildDiscarder(logRotator(artifactNumToKeepStr: '10')) }
+
+ stages
+ {
+ stage('Git setup')
+ {
+ steps
+ {
+ script
+ {
+ checkout scm
+ sh 'git submodule update --init --recursive'
+ }
+ }
+ }
+ stage('Npm install')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm install'
+ sh 'npm list || true'
+ }
+ }
+ }
+ stage('License check')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm run lic'
+ }
+ }
+ }
+ stage('Build SPA layout for unit tests')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm run build-spa'
+ }
+ }
+ }
+ stage('Unit test execution')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm run test'
+ }
+ }
+ }
+ stage('Zap application build')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm run electron-build'
+ }
+ }
+ }
+ stage('Generate HTML documentation')
+ {
+ steps
+ {
+ script
+ {
+ sh 'npm run doc'
+ }
+ }
+ }
+ stage('Artifact creation')
+ {
+ steps
+ {
+ script
+ {
+ zip archive: true, dir: './dist/electron/zap-linux-x64', glob: '', zipFile: 'zap-linux-x64.zip'
+ zip archive: true, dir: './dist/electron/zap-linux-ia32', glob: '', zipFile: 'zap-linux-ia32.zip'
+ zip archive: true, dir: './dist/electron/zap-darwin-x64', glob: '', zipFile: 'zap-darwin-x64.zip'
+ zip archive: true, dir: './dist/electron/zap-win32-ia32', glob: '', zipFile: 'zap-win32-ia32.zip'
+ zip archive: true, dir: './dist/electron/zap-win32-x64', glob: '', zipFile: 'zap-win32-x64.zip'
+ archiveArtifacts artifacts:'generated-html/**', fingerprint: true
+ }
+ }
+ }
+ stage('Build status resolution')
+ {
+ steps
+ {
+ script
+ {
+ currentBuild.result = "SUCCESS"
+ }
+ }
+ }
+ }
+ post {
+ always {
+ script
+ {
+ def committers = emailextrecipients([[$class: 'CulpritsRecipientProvider'],
+ [$class: 'DevelopersRecipientProvider']])
+
+ jobName = "${currentBuild.fullDisplayName}".replace("%2","/")
+ if(currentBuild.result != "SUCCESS")
+ {
+ slackMessage=":zap_failure: FAILED: <${env.RUN_DISPLAY_URL}|"+jobName + ">, changes by: " + committers
+ slackColor='#FF0000'
+ slackSend (color: slackColor, channel: '#zap', message: slackMessage)
+ }
+ else
+ {
+ slackMessage=":zap_success: SUCCESS: <${env.RUN_DISPLAY_URL}|"+jobName + ">, changes by: " + committers
+ slackColor='good'
+ slackSend (color: slackColor, channel: '#zap', message: slackMessage)
+ }
+ }
+ cleanWs()
+ }
+ }
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..634b133d2d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,25 @@
+![ZCL Advanced Platform](src-electron/icons/zap_128x128.png)
+
+# ZCL Advanced Platform
+
+## Quick instructions
+
+This is a node.js application. In order to run it, you need to have [npm](https://www.npmjs.com/) installed. Once you do, you can run:
+```
+npm install
+```
+which will download install all the project dependencies, and then run:
+```
+npm run zap
+```
+
+Refer to [more detailed instructions](docs/instructions.md) for more details.
+
+## Detailed Documentation
+
+* [Design](docs/design.md)
+* [Instructions](docs/instructions.md)
+* [API](docs/api.md)
+* [Release notes](docs/releasenotes.md)
+* [FAQ](docs/faq.md)
+
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000000..1952e0c2f9
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,18 @@
+const fs = require('fs-extra')
+let extend = undefined
+
+/**
+ * The .babelrc file has been created to assist Jest for transpiling.
+ * You should keep your application's babel rules in this file.
+ */
+
+if (fs.existsSync('./.babelrc')) {
+ extend = './.babelrc'
+}
+
+module.exports = {
+ presets: [
+ '@quasar/babel-preset-app'
+ ],
+ extends: extend
+}
diff --git a/docs/api.md b/docs/api.md
new file mode 100644
index 0000000000..e61974e0ad
--- /dev/null
+++ b/docs/api.md
@@ -0,0 +1,700 @@
+## Modules
+
+
+JS API: low level database access
+This module provides generic DB functions for performing SQL queries.
+
+JS API: database queries
+Contains all the application queries.
+
+JS API: generator logic
+Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+REST API: admin functions
+This module provides the REST API to the admin functions.
+
+REST API: generation functions
+This module provides the REST API to the generation.
+
+REST API: static zcl functions
+This module provides the REST API to the static zcl queries.
+
+REST API: user data
+This module provides the REST API to the user specific data.
+
+JS API: http server
+This module provides the HTTP server functionality.
+
+
+
+## Functions
+
+
+generateInDir()
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+
+setHandlebarTemplateDirectory()
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+
+generateCode()
+Given: N/A
+Returns: N/A
+Description: This function generates the code into the user defined directory using promises
+
+resolveGenerationDirectory()
+Given: a map and a generation directory path.
+Return: a map which has the generation directory.
+Description: Resolve the generation directory to be able to generate to the
+correct directory.
+
+
+
+
+
+## JS API: low level database access
+This module provides generic DB functions for performing SQL queries.
+
+
+* [JS API: low level database access](#module_JS API_ low level database access)
+ * _static_
+ * [.dbBeginTransaction(db)](#module_JS API_ low level database access.dbBeginTransaction) ⇒
+ * [.dbCommit(db)](#module_JS API_ low level database access.dbCommit) ⇒
+ * [.dbRemove(db, query, args)](#module_JS API_ low level database access.dbRemove) ⇒
+ * [.dbUpdate(db, query, args)](#module_JS API_ low level database access.dbUpdate) ⇒
+ * [.dbInsert(db, query, args)](#module_JS API_ low level database access.dbInsert) ⇒
+ * [.dbAll(db, query, args)](#module_JS API_ low level database access.dbAll) ⇒
+ * [.dbGet(db, query, args)](#module_JS API_ low level database access.dbGet) ⇒
+ * [.dbMultiInsert(db, sql, arrayOfArrays)](#module_JS API_ low level database access.dbMultiInsert) ⇒
+ * [.closeDatabase(database)](#module_JS API_ low level database access.closeDatabase) ⇒
+ * [.initDatabase(sqlitePath)](#module_JS API_ low level database access.initDatabase) ⇒
+ * [.loadSchema(db, schema, appVersion)](#module_JS API_ low level database access.loadSchema) ⇒
+ * _inner_
+ * [~insertOrReplaceVersion(db, version)](#module_JS API_ low level database access..insertOrReplaceVersion) ⇒
+
+
+
+### JS API: low level database access.dbBeginTransaction(db) ⇒
+Returns a promise to begin a transaction
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves without an argument and rejects with an error from BEGIN TRANSACTION query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+
+
+
+### JS API: low level database access.dbCommit(db) ⇒
+Returns a promise to execute a commit.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves without an argument or rejects with an error from COMMIT query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+
+
+
+### JS API: low level database access.dbRemove(db, query, args) ⇒
+Returns a promise to execute a DELETE FROM query.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolve with the number of delete rows, or rejects with an error from query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| query | \*
|
+| args | \*
|
+
+
+
+### JS API: low level database access.dbUpdate(db, query, args) ⇒
+Returns a promise to execute an update query.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves without an argument, or rejects with an error from the query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| query | \*
|
+| args | \*
|
+
+
+
+### JS API: low level database access.dbInsert(db, query, args) ⇒
+Returns a promise to execute an insert query.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with the rowid from the inserted row, or rejects with an error from the query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| query | \*
|
+| args | \*
|
+
+
+
+### JS API: low level database access.dbAll(db, query, args) ⇒
+Returns a promise to execute a query to perform a select that returns all rows that match a query.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with the rows that got retrieved from the database, or rejects with an error from the query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| query | \*
|
+| args | \*
|
+
+
+
+### JS API: low level database access.dbGet(db, query, args) ⇒
+Returns a promise to execute a query to perform a select that returns first row that matches a query.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with a single row that got retrieved from the database, or rejects with an error from the query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| query | \*
|
+| args | \*
|
+
+
+
+### JS API: low level database access.dbMultiInsert(db, sql, arrayOfArrays) ⇒
+Returns a promise to perfom a prepared statement, using data from array for SQL parameters.
+It resolves with an array of rowids, or rejects with an error.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with the array of rowids for the rows that got inserted, or rejects with an error from the query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sql | \*
|
+| arrayOfArrays | \*
|
+
+
+
+### JS API: low level database access.closeDatabase(database) ⇒
+Returns a promise that will resolve when the database in question is closed.
+Rejects with an error if closing fails.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves without an argument or rejects with error from the database closing.
+
+| Param | Type |
+| --- | --- |
+| database | \*
|
+
+
+
+### JS API: low level database access.initDatabase(sqlitePath) ⇒
+Returns a promise to initialize a database.
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with the database object that got created, or rejects with an error if something went wrong.
+
+| Param | Type |
+| --- | --- |
+| sqlitePath | \*
|
+
+
+
+### JS API: low level database access.loadSchema(db, schema, appVersion) ⇒
+Returns a promise to load schema into a blank database, and inserts a version to the settings table.j
+
+**Kind**: static method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with the same db that got passed in, or rejects with an error.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| schema | \*
|
+| appVersion | \*
|
+
+
+
+### JS API: low level database access~insertOrReplaceVersion(db, version) ⇒
+Returns a promise to insert or replace a version of the application into the database.
+
+**Kind**: inner method of [JS API: low level database access
](#module_JS API_ low level database access)
+**Returns**: A promise that resolves with a rowid of created setting row or rejects with error if something goes wrong.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| version | \*
|
+
+
+
+## JS API: database queries
+Contains all the application queries.
+
+
+* [JS API: database queries](#module_JS API_ database queries)
+ * [.insertDomains(db, packageId, data)](#module_JS API_ database queries.insertDomains) ⇒
+ * [.insertStructs(db, packageId, data)](#module_JS API_ database queries.insertStructs) ⇒
+ * [.insertBitmaps(db, packageId, data)](#module_JS API_ database queries.insertBitmaps) ⇒
+ * [.deleteSession(db, sessionId)](#module_JS API_ database queries.deleteSession) ⇒
+ * [.updateKeyValue(db, sessionId, key, value)](#module_JS API_ database queries.updateKeyValue) ⇒
+ * [.insertOrReplaceClusterState(db, endpointTypeId, clusterId, side, enabled)](#module_JS API_ database queries.insertOrReplaceClusterState) ⇒
+ * [.insertEndpoint(db, sessionId, endpointId, endpointTypeRef, networkId)](#module_JS API_ database queries.insertEndpoint) ⇒
+ * [.insertEndpointType(db, sessionId, name, deviceTypeRef)](#module_JS API_ database queries.insertEndpointType) ⇒
+ * [.getAllSesionKeyValues(db, sessionId)](#module_JS API_ database queries.getAllSesionKeyValues) ⇒
+ * [.getAllEndpointTypes(db, sessionId)](#module_JS API_ database queries.getAllEndpointTypes) ⇒
+ * [.getAllSessions(db)](#module_JS API_ database queries.getAllSessions) ⇒
+
+
+
+### JS API: database queries.insertDomains(db, packageId, data) ⇒
+Inserts domains into the database.
+data is an array of objects that must contain: name
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise that resolves with an array of rowids of all inserted domains.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| packageId | \*
|
+| data | \*
|
+
+
+
+### JS API: database queries.insertStructs(db, packageId, data) ⇒
+Inserts structs into the database.
+data is an array of objects that must contain: name
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise that resolves with an array of struct item rowids.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| packageId | \*
|
+| data | \*
|
+
+
+
+### JS API: database queries.insertBitmaps(db, packageId, data) ⇒
+Inserts bitmaps into the database. Data is an array of objects that must contain: name, type
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise of bitmap insertions.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| db | \*
| |
+| packageId | \*
| |
+| data | \*
| Array of object containing 'name' and 'type'. |
+
+
+
+### JS API: database queries.deleteSession(db, sessionId) ⇒
+Promises to delete a session from the database, including all the rows that have the session as a foreign key.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise of a removal of session.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+
+
+
+### JS API: database queries.updateKeyValue(db, sessionId, key, value) ⇒
+Promises to update or insert a key/value pair in SESSION_KEY_VALUE table.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise of creating or updating a row, resolves with the rowid of a new row.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+| key | \*
|
+| value | \*
|
+
+
+
+### JS API: database queries.insertOrReplaceClusterState(db, endpointTypeId, clusterId, side, enabled) ⇒
+Promises to update the cluster include/exclude state.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: Promise to update the cluster exclude/include state.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| endpointTypeId | \*
|
+| clusterId | \*
|
+| side | \*
|
+| enabled | \*
|
+
+
+
+### JS API: database queries.insertEndpoint(db, sessionId, endpointId, endpointTypeRef, networkId) ⇒
+Promises to add an endpoint.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: Promise to update endpoints.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+| endpointId | \*
|
+| endpointTypeRef | \*
|
+| networkId | \*
|
+
+
+
+### JS API: database queries.insertEndpointType(db, sessionId, name, deviceTypeRef) ⇒
+Promises to add an endpoint type.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: Promise to update endpoints.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+| name | \*
|
+| deviceTypeRef | \*
|
+
+
+
+### JS API: database queries.getAllSesionKeyValues(db, sessionId) ⇒
+Resolves to an array of objects that contain 'key' and 'value'
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: Promise to retrieve all session key values.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+
+
+
+### JS API: database queries.getAllEndpointTypes(db, sessionId) ⇒
+Resolves to an array of endpoint types.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: Promise to retrieve all endpoint types.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| sessionId | \*
|
+
+
+
+### JS API: database queries.getAllSessions(db) ⇒
+Returns a promise that resolves into an array of objects containing 'sessionId', 'sessionKey' and 'creationTime'.
+
+**Kind**: static method of [JS API: database queries
](#module_JS API_ database queries)
+**Returns**: A promise of executing a query.
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+
+
+
+## JS API: generator logic
+Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+
+* [JS API: generator logic](#module_JS API_ generator logic)
+ * [.mapDatabase(db)](#module_JS API_ generator logic.mapDatabase) ⇒
+ * [.resolveTemplateDirectory(map, handlebarTemplateDirectory)](#module_JS API_ generator logic.resolveTemplateDirectory) ⇒
+ * [.compileTemplate(map, templateFiles)](#module_JS API_ generator logic.compileTemplate) ⇒
+ * [.infoFromDb(map, dbRowType)](#module_JS API_ generator logic.infoFromDb) ⇒
+ * [.groupInfoIntoDbRow(map, groupByParams)](#module_JS API_ generator logic.groupInfoIntoDbRow) ⇒
+ * [.resolveHelper(map, helperFunctions)](#module_JS API_ generator logic.resolveHelper) ⇒
+ * [.resolveGenerationDirectory(map, generationDirectory)](#module_JS API_ generator logic.resolveGenerationDirectory) ⇒
+ * [.generateDataToPreview(map, databaseRowToHandlebarTemplateFileMap)](#module_JS API_ generator logic.generateDataToPreview) ⇒
+ * [.generateDataToFile(map, outputFileName, databaseRowToHandlebarTemplateFileMap)](#module_JS API_ generator logic.generateDataToFile) ⇒
+
+
+
+### JS API: generator logic.mapDatabase(db) ⇒
+Resolve is listed on the map containing the database.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on the map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| db | Object
| database |
+
+
+
+### JS API: generator logic.resolveTemplateDirectory(map, handlebarTemplateDirectory) ⇒
+Resolve the handlebar template directory to be able to use the correct
+handlebar templates for generation/preview.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the handlebar
+directory.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| HashMap |
+| handlebarTemplateDirectory | string
| Handlebar template directory path |
+
+
+
+### JS API: generator logic.compileTemplate(map, templateFiles) ⇒
+Resolve the compiled handlebar templates for use.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the compiled
+templates.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| Map for database and template directory |
+| templateFiles | Array.<string>
| Array of handlebar template files |
+
+
+
+### JS API: generator logic.infoFromDb(map, dbRowType) ⇒
+The database information is retrieved by calling database query
+functions. Then a resolve is listed on the map containing database, compiled
+template and database row information so that they can be passed on to more
+promises.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the database rows.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| Map for database, template directory and compiled templates |
+| dbRowType | Array.<string>
| Array of strings with each string representing a type of database row |
+
+
+
+### JS API: generator logic.groupInfoIntoDbRow(map, groupByParams) ⇒
+Additional information attached to each database row. Essentially a way
+to group by content.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the database,
+compiled templates and database rows along with additional grouped by
+content.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| Map containing database, compiled templates, database and database rows for different datbase types. |
+| groupByParams | Object
| Object to group information by |
+| groupByParams.subItemName | string
| |
+| groupByParams.foreignKey | string
| |
+| groupByParams.primaryKey | string
| |
+| groupByParams.dbType | string
| |
+| groupByParams.columns | string
| |
+
+
+
+### JS API: generator logic.resolveHelper(map, helperFunctions) ⇒
+Resolve the helper functions to be used in later promises.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the helper
+functions.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| |
+| helperFunctions | Object
| Map for handlebar helper name to helper function |
+
+
+
+### JS API: generator logic.resolveGenerationDirectory(map, generationDirectory) ⇒
+Resolve the generation directory to be able to generate to the correct
+directory.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on a map which has the generation
+directory.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| |
+| generationDirectory | string
| generation directory path. |
+
+
+
+### JS API: generator logic.generateDataToPreview(map, databaseRowToHandlebarTemplateFileMap) ⇒
+The database information is used to show the generation output to a preview
+pane using the compiled handlebar templates.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A promise with resolve listed on the data which can be seen in the
+preview pane.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| |
+| databaseRowToHandlebarTemplateFileMap | Array.<Object>
| Map linking the database row type with handlebar template file. |
+| databaseRowToHandlebarTemplateFileMap.dbRowType | string
| Database row type |
+| databaseRowToHandlebarTemplateFileMap.hTemplateFile | string
| Handlebar template file |
+
+
+
+### JS API: generator logic.generateDataToFile(map, outputFileName, databaseRowToHandlebarTemplateFileMap) ⇒
+The database information is used to write the generation output to a file
+using the compiled handlebar templates.
+
+**Kind**: static method of [JS API: generator logic
](#module_JS API_ generator logic)
+**Returns**: A new promise resolve listed on the data which is generated.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| map | Object
| |
+| outputFileName | string
| The generation file name |
+| databaseRowToHandlebarTemplateFileMap | Array.<Object>
| Map linking the database row type with handlebar template file. |
+| databaseRowToHandlebarTemplateFileMap.dbRowType | string
| Database row type |
+| databaseRowToHandlebarTemplateFileMap.hTemplateFile | string
| Handlebar template file |
+
+
+
+## REST API: admin functions
+This module provides the REST API to the admin functions.
+
+
+
+### REST API: admin functions.registerAdminApi(db, app)
+API: /post/sql
+Request JSON:
+
+ {
+ sql: SQL Query
+ }
+
+
+Response JSON:
+
+ {
+ result: Array of rows.
+ }
+
+
+**Kind**: static method of [REST API: admin functions
](#module_REST API_ admin functions)
+
+| Param | Type |
+| --- | --- |
+| db | \*
|
+| app | \*
|
+
+
+
+## REST API: generation functions
+This module provides the REST API to the generation.
+
+
+
+## REST API: static zcl functions
+This module provides the REST API to the static zcl queries.
+
+
+
+### REST API: static zcl functions.registerStaticZclApi(app)
+API: /get/:entity/:id
+
+**Kind**: static method of [REST API: static zcl functions
](#module_REST API_ static zcl functions)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| app | \*
| Express instance. |
+
+
+
+## REST API: user data
+This module provides the REST API to the user specific data.
+
+
+
+## JS API: http server
+This module provides the HTTP server functionality.
+
+
+* [JS API: http server](#module_JS API_ http server)
+ * [.initHttpServer(db, port)](#module_JS API_ http server.initHttpServer) ⇒
+ * [.shutdownHttpServer()](#module_JS API_ http server.shutdownHttpServer) ⇒
+
+
+
+### JS API: http server.initHttpServer(db, port) ⇒
+Promises to initialize the http server on a given port
+using a given database.
+
+**Kind**: static method of [JS API: http server
](#module_JS API_ http server)
+**Returns**: A promise that resolves with an express app.
+
+| Param | Type | Description |
+| --- | --- | --- |
+| db | \*
| Database object to use. |
+| port | \*
| Port for the HTTP server. |
+
+
+
+### JS API: http server.shutdownHttpServer() ⇒
+Promises to shut down the http server.
+
+**Kind**: static method of [JS API: http server
](#module_JS API_ http server)
+**Returns**: Promise that resolves when server is shut down.
+
+
+## generateInDir()
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+
+**Kind**: global function
+
+
+## setHandlebarTemplateDirectory()
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+
+**Kind**: global function
+
+
+## generateCode()
+Given: N/A
+Returns: N/A
+Description: This function generates the code into the user defined directory using promises
+
+**Kind**: global function
+
+
+## resolveGenerationDirectory()
+Given: a map and a generation directory path.
+Return: a map which has the generation directory.
+Description: Resolve the generation directory to be able to generate to the
+correct directory.
+
+**Kind**: global function
diff --git a/docs/design.md b/docs/design.md
new file mode 100644
index 0000000000..06e3f76882
--- /dev/null
+++ b/docs/design.md
@@ -0,0 +1,228 @@
+# Zigbee Advanced Platform (ZAP)
+
+The ZAP project delivers a ZCL configuration via an "advanced configurator" and a generator platform.
+
+- [Zigbe Advanced Platform](#zigbe-advanced-platform)
+ - [Use cases](#use-cases)
+ - [Standalone electron application](#standalone-electron-application)
+ - [Command line regeneration](#command-line-regeneration)
+ - [Integration with IDE](#integration-with-ide)
+ - [ZAP architecture](#zap-architecture)
+ - [Principles](#principles)
+ - [Architecture diagram](#architecture-diagram)
+ - [Front end](#front-end)
+ - [Generator and backend](#generator-and-backend)
+ - [Database schema](#database-schema)
+ - [Schema design principles](#schema-design-principles)
+ - [Schema diagram](#schema-diagram)
+ - [Embedded code](#embedded-code)
+ - [Versioning and backwards compatibility](#versioning-and-backwards-compatibility)
+ - [Compatibility considerations](#compatibility-considerations)
+ - [Dealing with the generation variant](#dealing-with-the-generation-variant)
+ - [Dealing with the XML files](#dealing-with-the-xml-files)
+ - [Dealing with multiple zap tool versions](#dealing-with-multiple-zap-tool-versions)
+ - [Documentation](#documentation)
+ - [Testing](#testing)
+
+## Use cases
+
+This chapter lists the use cases that were envisioned for the ZAP
+platform.
+
+### Standalone electron application
+
+In this scenario, the zap application is used standalone. It provides a `zap` executable, which, when launched without any argument shows the full UI, which allows the user to work with an application configuration, load/save configuration files and perform a generation out of the given configuration.
+
+### Command line regeneration
+
+The command-line case features the same `zap` executable, however it will support command line options, such as `zap -generate ` which will cause the application to run in a headless mode, and generate all the data out of the configuration without showing the UI.
+This will make the application well suited for integration into continuous integration tools, such as a build system like Jenkins.
+
+The zap tool is specifically design to support such a use case, as history shows that integration into CI process is critical for adoption of the tools into a wider ecosystem.
+
+### Integration with IDE
+
+A third use case is an integration into IDE. There are 2 integrations currently envisioned:
+* Integration with [VSCode](https://code.visualstudio.com/).
+* Integration with [Silicon Labs Simplicity Studio](https://www.silabs.com/products/development-tools/software/simplicity-studio).
+
+The integration with IDE has 2 parts:
+1. Visual integration, which enables using the UI directly inside a given IDE:
+ - VSCode naturally assimilates the web technology, since it is itelf written using electron. So the UI will fit naturally into its extensions model.
+ - Simplicity Studio provides jxbrowser for the integration, so it will use a jxbrowser based eclipse editor to show the UI.
+2. Generation integration, which enables automatic regeneration of the generated files when the configuration data changes.
+ - VSCode will provide an JS-based extension, that will be able to trigger the generation code. There is no plan to move generation code in-process with the VSCode, it will be used as an independent program to execute with the correct arguments.
+ - Simplicity Studio adapter pack technology will provide integration with the zap program for the generation.
+
+## ZAP architecture
+
+### Principles
+
+The ZAP architecture follows the standard guidelines for modern application development using node.js for backend and web technologies for frontend.
+The state of the application is stored in the back-end SQL database (initialy a [SQLite](https://www.sqlite.org/index.html) file on a desktop PC).
+
+All the frontend is developed using the [quasar framework](https://quasar.dev/), which is one of the primer front-end frameworks developed on top of the [Vue.JS platform](https://vuejs.org/).
+
+Between the front-end and the back-end is the REST API, which allows for an reasonable separation between the two.
+
+The architectural design allows for the front-end user interface to be executed in any browser. The browser can be:
+* [standalone chrome browser](https://www.google.com/chrome/), pointing to a specific URL
+* [electron](https://www.electronjs.org/) renderer process, containing a chromium engine
+* other browser environment, such as [jxbrowser](https://www.teamdev.com/jxbrowser), which is a java-based wrapper around chromium engine, used by some IDEs to embed web-based UIs into its native environment.
+* any other browser environment that supports modern JS and is generally compatible with current standards
+
+### Architecture diagram
+
+![Architecture diagram](zap-architecture.png)
+
+## Front end
+
+Front-end of the "Zap" platform centers around the UI that replaces the current ZCL tab inside SimplicityStudio's AppBuilder. The following are the architectural guidelines:
+
+* The UI is written using standard HTML5 technologies, using Vue.JS and Quasar as an agreed-on UI framework.
+* The UI backing data are the ZCL XML files for static meta-data (shipped by SDK) and the customer-owned "zcl.config" file where customer data is saved (JSON)
+* The UI must not be tied to either electron or jxbrowser APIs, and should be usable in a plain chrome browser environment, to ensure portability at the JS level,
+* The UI uses a common API that ties it to jxbrowser/electron/plain-browser environments via separate JS API layers for each environment, as described in "UI technologies for Wireless Tools"
+* The front-end can exist as external resources, as far as Studio is considered. It is based on loading a single toplevel HTML file (or external URL) and resolving relative URLs thereon, therefore the jxbrowser environment should be able to load it from the SDK if required, with minimal bridging access mechanism for file access.
+* The development environment for the the UI does not require the eclipse IDE, you can natively develop this using any standard webtech IDEs, such as vscode, atom, etc., so the entry point is much more light weight. This is very important, since in case of inexperienced developers, such environment has a much lower learning curve and allows for a much quicker contribution for resources well versed with webtech, but not with the eclipse/SWT development environment.
+* The initial custom-facing release requires that the Zap UI runs inside jxbrowser, as an eclipse editor inside full-blown legacy Simplicity Studio environment
+* additionally, the same UI will also be available for developers for use from command line via a simple "zclconfig " command line execution, which will launch a simple electron-based app showing the exact same UI. User will be able to edit file, save changes and then proceed via command-line UC/UP generation/build process as defined by the UC/UP project.
+
+## Generator and backend
+
+The Zap back-end is a node.js application. The general design guidelines for the back-end logic are:
+
+* fully embrace and make use of the asynchronous node.js callback model, thus ensuring least-blocking and maximum-performing infrastructure.
+* use npm as a package manager.
+* During the development process, decide on the packaging model and how we distribute node runtime to the final environment.
+* Provide unit testing infrastructure, and a CI build that reacts on the code modifications automatically.
+
+Generator is closely tied to the changes in the embedded layers, but here we list mostly integration requirements:
+
+* Input to generator are:
+ * ZCL XML files
+ * generation template files
+ * custom owned zcl.config file.
+ * custom generation template files
+
+* Output from generator are generated .c/.h files that the embedded code requires and a series of "generation instructions" that are the contributions to the Universal Configurator / Unified Platforom (UC/UP) project model (such as: headers defined, additional C/H files included, etc, etc.).
+
+* Generator will be packaged as a Simplicity Studio adapter pack, which ensures that it can be executed both from command-line without any studio present, as well as from full-blown Studio or whatever subset of Studio UC command-line ends up being.
+
+* A format of the output "generation instructions" yaml file (as described here: Advanced Configurator Generation Layer integration) will have to be agreed on with the Studio team.
+
+* For faster generation, in environments where an intermediate yaml file is NOT required, as both driver and driven processes are within the same process in memory, the generator could use a provided interface to populate generation instructions, instead of an intermediate yaml file.
+
+* Generator is not tied to the front-end in any way. We could, as a convenience, add a "preview mode" in the front-end UI, just to see what will generate, but the intent is to keep these decoupled and editing of the zcl.config file in a an editor is a separate process from generating content.
+
+## Database schema
+
+Back-end middle-layer is kept stateless, and all the data is kept in a relational database.
+
+### Schema design principles
+
+Following are the rules for the database schema:
+* Columns with the `_ID` postfix, are the primary key columns and should be declared as such in the schema.
+* Columns with the `_REF` postfix, are the foreign key columns, and should be constrained as such in the schema.
+* We should support `cascade delete` mechanism for tables with foreign keys.
+* All the primary keys are considered NON PERMANENT. What this means, is that between two runs of the application, there is no guarantee that these rows will survive, since the application always needs ability to start from a state where there is no database, and it will create one on the fly. This rule implies, that any exports (such as the configuration file saved to a local filesystem) *MUST NOT* contain any references to the specific primary key values.
+
+### Schema diagram
+
+Following picture shows the schema diagram. Note that the root information for the schema itself, is the [SQL script that creates the schema](src-electron/db/zap-schema.sql).
+
+![SQL schema diagram](zap-schema.svg)
+
+_Developer note_: If there are any changes to the SQL script, the picture should be regenerated via the `docs/make-schema-diagram` script.
+
+## Embedded code
+
+Following is the laundry-list of changes in the embedded code:
+
+* Rethink and reengineer entire ZCL embedded layers as a "addon library", that interfaces with lower layers via a well-defined API, instead of direct calls into the stack APIs wherever needed.
+
+* Develop the API for the Zigbee stack.
+
+* Develop the same API for the pure-simulation environment, which allows ZCL library to run in Posix environment, possibly on top of java simulator.
+
+* Abandon current mechanism of parsing OTA content and issuing callbacks for it, and replace it with a struct-driven event-bus approach.
+
+* Threads? (Discuss. TBD.)
+
+* Develop a clean API that allows from-the-top extensions, which are essentially customer callbacks to the ZCL command/attribute logic and ability to contribute custom commands and attributes from the top. (Either based on source-code approach or library add-ons.)
+
+* Rework the attribute storage logic: develop a reusable embedded database which covers all the features ZCL offering needs, while being an independent UP component, that can be used by any other part of the SDK as well. For example, BLE characteristics could use same database.
+
+## Versioning and backwards compatibility
+
+Zap infrastructure needs to be able to deal with the use case, where a user has multiple ZCL data packs installed and at the same time, the user may have multiple projects (either in IDE, or outside of it) opened simultaneously against one or more ZCL data packs.
+
+The tool rules that deal with multiple ZCL data pack versions are as follows...
+
+### Compatibility considerations
+
+Zap tools follows the following strict rules of backwards compatibility:
+
+- Each version of the tool, can read the `zcl.config` files created by itself, or by any older version of zap tool.
+- It might not be able to read `zcl.config` file saved by future versions of the zap tool.
+- Each version of the tool, writes out only its own versions of the zcl.config files. This means that any time you read in a config file, and save it back out, it means it gets upgraded to the latest format.
+- Each version of the tool, can generate artifacts for its own version, or any older version of the SDK. The information about which generation variant is required, is saved in the zcl.config file.
+
+Consequences of these rules:
+
+- Once you have an upgraded version of the zap tool in your desktop environment, you should never downgrade.
+- If you have mutiple versions of the zap tool in your desktop environment, you should always execute the latest, and can safely delete all earlier versions.
+
+### Dealing with the generation variant
+
+Zap tool supports multiple variants of generation. Different versions of the SDK might require different variant. Variants are identified by an increasing integer number, starting with zero.
+
+- A desired variant of generation is recorded in the zcl.config file.
+Generation logic inside Zap tool is separated per-variant, so that each variant generator is isolated in a separate javascript module.
+- An initial variant is populated from the initial template of zcl.config file, that is copied into your project from the selection of the zcl component.
+- Technically, users can always change the variant inside zcl.config file. But the user interface should not allow them to do that easily, since changing a variant makes no sense within a same ZCL data pack.
+- Upgrading the zcl.config file from one SDK to another, where a generation variant has increased, will result in the variant inside zcl.config file being upgraded.
+- As each version of zap tool, supports current and all older variants, you can always generate older variant projects from latest version of the tool.
+
+### Dealing with the XML files
+
+Zap tool needs to be able to read in and parse the XML files from all installed locations on demand, and hash them internally per SDK.
+
+When zap tool is asked to serve UI, or generate, it will require information which set of XML files to use. This information can be provided via a parameter to the tool. The driving entity (IDE?) will be able to pass that information to the zap program. Zap tool itself, will not be aware of a concept of SDK, beyond just keeping track of different directories where the XML files are present, so it can load them in as needed.
+
+## Dealing with multiple zap tool versions
+
+Following rules apply:
+
+- There is ALWAYS only one copy of the zap tool running. There is never a valid reason, nor should be allowed, to execute two versions of the zap tool in any normal flow. Zap tool will create a taskbar icon which will be an interface for the user to interact with the tool globally, without the context of the specific zcl.config file.
+- If the currently running version of the zap tool encounters a generation variant that is higher than the one it supports, or zcl.config file in a format higher than is supports it shows an error and prompts to upgrade the tool.
+- When a zap tool opens a zcl.config file, it will create a "session" for this zcl.config file. In case of UI, there will be a cookie on a browser side identifying the session. This way, you can open multiple browser windows against the same zap tool back-end to edit multiple files.
+Each "session" will know the following information:
+ - the user data that it is processing (the in-memory or in-database equivalent of the zcl.config file).
+ - the static SDK data (ZCL XML files) that match this user data, which is provided from the cache of all loaded XML files as described in the previous chapter.
+ - Sessions may be persisted and/or removed from in-memory representation due to inactivity. Final specific implementation TBD.
+
+Zap tool will be versioned with 2 tokens of information. These versions will be seen via a --version command line argument and they will be saved into the zcl.config file. The two tokens are:
+- The git commit # of the built version of tool.
+- A date of this git commit in a human readable form.
+
+There is no plans to give a zap tool any other version, such as "1.0.0" or "2.4.5" or something like that, since those would essentially just serve as obfuscated aliases to retrieve the two tokens mentioned before. If someone desires to build an 3-digit compliant version of the zap tool version (for example, in case where it needs to be packaged as an eclipse plugin or something, should we decide to distribute it that way), then the 3-digit version would be YEAR.MONTH.DAY of the git commit date.
+
+This might change in the future if there is a need for a clear marketing
+version of the product.
+
+## Documentation
+
+There are following aspects to the documentation of this project.
+
+The markdown formatted documents are commited in the repo, since the markdown format is easy to read in github. Following are the markdown formatted pieces of documentation:
+* hand-written markdown documents (such as this design document you're reading now)
+* generated Javascript API documentation from jsdoc comments in the code.
+* generated REST API documentation from jsdoc comments in the code.
+
+Besides the markdown, there is also a process to generate HTML documentation out of jsdoc and md files. The HTML documentation is not intended to be commited to git, but should be generated on the fly by the zap CI process.
+
+## Testing
+
+Unit testing was an extremely important for ZCL embedded apps, therefore the scope of existing unit tests needs to be maintained. Exact design TBD.
+
diff --git a/docs/faq.md b/docs/faq.md
new file mode 100644
index 0000000000..50a2b8b2d4
--- /dev/null
+++ b/docs/faq.md
@@ -0,0 +1,19 @@
+# Frequently Asked Questions
+
+**Q: I get an error "sqlite3_node" not found or something like that.**
+
+**A:** The root reason for this is a missmatch of some of these things:
+ * your local global electron install
+ * your project-wide electron install
+ * your sqlite3 precompiled binding file
+ * some of the other node modules versions
+
+To fix this, run some combination of following commands (assuming electron version 8.0.1):
+ * `npm install`
+ * `npm install electron@8.0.1`
+ * `npm install electron@8.0.1 -g`
+ * `npm install node-abi@latest`
+ * `./node_modules/.bin/electron-rebuild -w sqlite3 -p`
+
+##
+
diff --git a/docs/instructions.md b/docs/instructions.md
new file mode 100644
index 0000000000..9b201198b5
--- /dev/null
+++ b/docs/instructions.md
@@ -0,0 +1,59 @@
+# Instructions
+
+This section lists instructions for various things you might need to do in this repo.
+
+**Install the dependencies:**
+
+```bash
+npm install
+```
+
+**Start the application:**
+
+```bash
+npm run zap
+```
+
+**Start the front-end in development mode:**
+
+(Supports hot-code reloading, error reporting, etc.)
+```bash
+quasar dev -m electron
+```
+or
+```
+npm run electron-dev
+```
+
+**Lint the files:**
+
+```bash
+npm run lint
+```
+
+**Build the app for production:**
+
+```bash
+quasar build -m electron
+```
+or
+```
+npm run electron-build
+```
+
+**Run the unit tests:**
+
+```bash
+npm run test
+```
+
+**Regenerate the API documentation:**
+
+```bash
+npm run apidoc
+```
+
+**Customize the configuration:**
+
+See [Configuring quasar.conf.js](https://quasar.dev/quasar-cli/quasar-conf-js).
+
diff --git a/docs/make-schema-diagram b/docs/make-schema-diagram
new file mode 100755
index 0000000000..05104d6fa8
--- /dev/null
+++ b/docs/make-schema-diagram
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# This script is generating a zap schema diagram out of a sqlite file.
+#
+# It assumes that you have installed a schemacrawler tool and few other things.
+# You can find schemacrawler at: https://www.schemacrawler.com/
+#
+# You need to have graphviz package installed for this to work correctly.
+
+# It also has only ever been tested on Linux.
+#
+
+SC_HOME=~/schemacrawler-16.4.1-distribution/
+SC_BIN=${SC_HOME}/_schemacrawler/schemacrawler.sh
+
+SQLITE=~/.silabs/zap/zap.sqlite
+SVG=zap-schema.svg
+
+echo "Creating schema diagram to ${SVG} from database at ${SQLITE} ..."
+
+
+# Generate the dot file using the schemacrawler
+${SC_BIN} --server sqlite --database=${SQLITE} --command=schema --info-level=standard --output-format=scdot --output-file=zap-schema.dot
+
+if [ ! $? -eq 0 ]; then
+ echo ""
+ echo "Error executing schemacrawler from ${SC_BIN}"
+ echo "Please make sure schemacrawler is properly installed."
+ echo ""
+ echo "You can download it from: https://www.schemacrawler.com/"
+ exit
+fi
+
+# Fix the background of all HTML tables to white
+sed -i 's/color="#888888"/color="#888888" bgcolor="#ffffff"/g' zap-schema.dot
+
+# Fix the overall background of the image to transparent
+sed -i 's/rankdir="RL"/rankdir="RL"\n bgcolor="transparent"/g' zap-schema.dot
+
+# Make edges black and bold
+sed -i 's/edge \[/edge\[\n color="black"\n style="bold"/g' zap-schema.dot
+
+# Remove the date stamp, so we don't create unnecessary commits
+sed -i '/.*td align=.left..202.*/d' zap-schema.dot
+sed -i 's/>generated on/ colspan=\"2\">SQL schema is copyrighted by Silicon Labs./g' zap-schema.dot
+
+# Convert the dot to svg using the "dot" tool from graphviz
+dot -Tsvg zap-schema.dot -o ${SVG}
+if [ ! $? -eq 0 ]; then
+ echo ""
+ echo "Error executing 'dot' command from graphviz package."
+ echo "Please make sure graphviz is installed and on your PATH."
+ exit
+fi
+
+echo "Diagram created: ${SVG}"
diff --git a/docs/releasenotes.md b/docs/releasenotes.md
new file mode 100644
index 0000000000..186eb2d8bf
--- /dev/null
+++ b/docs/releasenotes.md
@@ -0,0 +1,5 @@
+# Release notes
+
+## Pre-release
+
+Nothing has been released yet.
\ No newline at end of file
diff --git a/docs/zap-architecture.png b/docs/zap-architecture.png
new file mode 100644
index 0000000000..c40e011901
Binary files /dev/null and b/docs/zap-architecture.png differ
diff --git a/docs/zap-schema.svg b/docs/zap-schema.svg
new file mode 100644
index 0000000000..a1507dd10e
--- /dev/null
+++ b/docs/zap-schema.svg
@@ -0,0 +1,754 @@
+
+
+
+
+
+
+SchemaCrawler_Diagram
+
+generated by
+SchemaCrawler 16.4.1
+SQL schema is copyrighted by Silicon Labs.
+
+
+
+attribute_a6e02edb
+
+
+ATTRIBUTE
+
+[table]
+ATTRIBUTE_ID
+
+INTEGER
+
+auto-incremented
+CLUSTER_REF
+
+INTEGER
+CODE
+
+INTEGER
+MANUFACTURER_CODE
+
+INTEGER
+NAME
+
+TEXT
+TYPE
+
+TEXT
+SIDE
+
+TEXT
+DEFINE
+
+TEXT
+MIN
+
+TEXT
+MAX
+
+TEXT
+IS_WRITABLE
+
+INTEGER
+DEFAULT_VALUE
+
+TEXT
+IS_OPTIONAL
+
+INTEGER
+
+
+
+
+cluster_5ec71239
+
+
+CLUSTER
+
+[table]
+CLUSTER_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+CODE
+
+INTEGER
+MANUFACTURER_CODE
+
+INTEGER
+NAME
+
+TEXT
+DESCRIPTION
+
+TEXT
+DEFINE
+
+TEXT
+
+
+
+
+attribute_a6e02edb:w->cluster_5ec71239:e
+
+
+
+
+
+
+
+
+
+
+bitmap_74cc598e
+
+
+BITMAP
+
+[table]
+BITMAP_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+NAME
+
+TEXT
+TYPE
+
+TEXT
+
+
+
+
+package_fab13485
+
+
+PACKAGE
+
+[table]
+PACKAGE_ID
+
+INTEGER
+
+auto-incremented
+PATH
+
+TEXT NOT NULL
+CRC
+
+INTEGER
+
+
+
+
+bitmap_74cc598e:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+bitmap_field_bfea8629
+
+
+BITMAP_FIELD
+
+[table]
+BITMAP_REF
+
+INTEGER
+NAME
+
+TEXT
+MASK
+
+INTEGER
+
+
+
+
+bitmap_field_bfea8629:w->bitmap_74cc598e:e
+
+
+
+
+
+
+
+
+
+
+cluster_5ec71239:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+command_6371df8a
+
+
+COMMAND
+
+[table]
+COMMAND_ID
+
+INTEGER
+
+auto-incremented
+CLUSTER_REF
+
+INTEGER
+CODE
+
+INTEGER
+MANUFACTURER_CODE
+
+INTEGER
+NAME
+
+TEXT
+DESCRIPTION
+
+TEXT
+SOURCE
+
+TEXT
+IS_OPTIONAL
+
+INTEGER
+
+
+
+
+command_6371df8a:w->cluster_5ec71239:e
+
+
+
+
+
+
+
+
+
+
+device_type_cluster_7298b97d
+
+
+DEVICE_TYPE_CLUSTER
+
+[table]
+DEVICE_TYPE_REF
+
+INTEGER
+CLUSTER_REF
+
+INTEGER
+CLUSTER_NAME
+
+TEXT
+INCLUDE_CLIENT
+
+INTEGER
+INCLUDE_SERVER
+
+INTEGER
+LOCK_CLIENT
+
+INTEGER
+LOCK_SERVER
+
+INTEGER
+
+
+
+
+device_type_cluster_7298b97d:w->cluster_5ec71239:e
+
+
+
+
+
+
+
+
+
+
+device_type_2620a7e2
+
+
+DEVICE_TYPE
+
+[table]
+DEVICE_TYPE_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+CODE
+
+INTEGER
+PROFILE_ID
+
+INTEGER
+NAME
+
+TEXT
+DESCRIPTION
+
+TEXT
+
+
+
+
+device_type_cluster_7298b97d:w->device_type_2620a7e2:e
+
+
+
+
+
+
+
+
+
+
+endpoint_type_cluster_c12e3c9e
+
+
+ENDPOINT_TYPE_CLUSTER
+
+[table]
+ENDPOINT_TYPE_REF
+
+INTEGER
+CLUSTER_REF
+
+INTEGER
+SIDE
+
+TEXT
+ENABLED
+
+INTEGER
+
+
+
+
+endpoint_type_cluster_c12e3c9e:w->cluster_5ec71239:e
+
+
+
+
+
+
+
+
+
+
+endpoint_type_9857dc03
+
+
+ENDPOINT_TYPE
+
+[table]
+ENDPOINT_TYPE_ID
+
+INTEGER
+
+auto-incremented
+SESSION_REF
+
+INTEGER
+NAME
+
+TEXT
+DEVICE_TYPE_REF
+
+INTEGER
+
+
+
+
+endpoint_type_cluster_c12e3c9e:w->endpoint_type_9857dc03:e
+
+
+
+
+
+
+
+
+
+
+command_arg_294e7f81
+
+
+COMMAND_ARG
+
+[table]
+COMMAND_REF
+
+INTEGER
+NAME
+
+TEXT
+TYPE
+
+TEXT
+IS_ARRAY
+
+INTEGER
+
+
+
+
+command_arg_294e7f81:w->command_6371df8a:e
+
+
+
+
+
+
+
+
+
+
+device_type_2620a7e2:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+endpoint_type_9857dc03:w->device_type_2620a7e2:e
+
+
+
+
+
+
+
+
+
+
+session_a11c82d5
+
+
+SESSION
+
+[table]
+SESSION_ID
+
+INTEGER
+
+auto-incremented
+SESSION_KEY
+
+TEXT
+SESSION_WINID
+
+TEXT
+CREATION_TIME
+
+INTEGER
+
+
+
+
+endpoint_type_9857dc03:w->session_a11c82d5:e
+
+
+
+
+
+
+
+
+
+
+domain_78873d23
+
+
+DOMAIN
+
+[table]
+DOMAIN_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+NAME
+
+TEXT
+
+
+
+
+domain_78873d23:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+endpoint_966d81f4
+
+
+ENDPOINT
+
+[table]
+ENDPOINT_ID
+
+INTEGER
+
+auto-incremented
+SESSION_REF
+
+INTEGER
+ENDPOINT_TYPE_REF
+
+INTEGER
+PROFILE
+
+INTEGER
+NETWORK
+
+INTEGER
+
+
+
+
+endpoint_966d81f4:w->endpoint_type_9857dc03:e
+
+
+
+
+
+
+
+
+
+
+endpoint_966d81f4:w->session_a11c82d5:e
+
+
+
+
+
+
+
+
+
+
+enum_210160
+
+
+ENUM
+
+[table]
+ENUM_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+NAME
+
+TEXT
+TYPE
+
+TEXT
+
+
+
+
+enum_210160:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+enum_item_b6420bf0
+
+
+ENUM_ITEM
+
+[table]
+ENUM_REF
+
+INTEGER
+NAME
+
+TEXT
+"VALUE"
+
+INTEGER
+
+
+
+
+enum_item_b6420bf0:w->enum_210160:e
+
+
+
+
+
+
+
+
+
+
+struct_9268f434
+
+
+STRUCT
+
+[table]
+STRUCT_ID
+
+INTEGER
+
+auto-incremented
+PACKAGE_REF
+
+INTEGER
+NAME
+
+TEXT
+
+
+
+
+struct_9268f434:w->package_fab13485:e
+
+
+
+
+
+
+
+
+
+
+session_key_value_334d9527
+
+
+SESSION_KEY_VALUE
+
+[table]
+SESSION_REF
+
+INTEGER
+KEY
+
+TEXT
+"VALUE"
+
+TEXT
+
+
+
+
+session_key_value_334d9527:w->session_a11c82d5:e
+
+
+
+
+
+
+
+
+
+
+setting_a12b0e8f
+
+
+SETTING
+
+[table]
+CATEGORY
+
+TEXT
+KEY
+
+TEXT
+"VALUE"
+
+TEXT
+
+
+
+
+struct_item_d6e4bd9c
+
+
+STRUCT_ITEM
+
+[table]
+STRUCT_REF
+
+INTEGER
+NAME
+
+TEXT
+TYPE
+
+TEXT
+
+
+
+
+struct_item_d6e4bd9c:w->struct_9268f434:e
+
+
+
+
+
+
+
+
+
+
diff --git a/jest.config.js b/jest.config.js
new file mode 100755
index 0000000000..088650ae93
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,65 @@
+module.exports = {
+ globals: {
+ __DEV__: true
+ },
+ globalSetup: '/test/global-setup.js',
+ globalTeardown: '/test/global-teardown.js',
+ setupFilesAfterEnv: [
+ '/test/jest/jest.setup.js'
+ ],
+ // noStackTrace: true,
+ // bail: true,
+ // cache: false,
+ // verbose: true,
+ // watch: true,
+ collectCoverage: true,
+ coverageDirectory: '/test/jest/coverage',
+ collectCoverageFrom: [
+ '/src/**/*.vue',
+ '/src/**/*.js',
+ '/src/**/*.jsx'
+ ],
+ coverageThreshold: {
+ global: {
+ // branches: 50,
+ // functions: 50,
+ // lines: 50,
+ // statements: 50
+ }
+ },
+ testMatch: [
+ '/test/*.test.js'
+ ],
+ moduleFileExtensions: [
+ 'vue',
+ 'js',
+ 'jsx',
+ 'json',
+ 'ts',
+ 'tsx'
+ ],
+ moduleNameMapper: {
+ '^vue$': '/node_modules/vue/dist/vue.common.js',
+ '^test-utils$': '/node_modules/@vue/test-utils/dist/vue-test-utils.js',
+ '^quasar$': '/node_modules/quasar/dist/quasar.common.js',
+ '^~/(.*)$': '/$1',
+ '^src/(.*)$': '/src/$1',
+ '.*css$': '/test/jest/utils/stub.css',
+ '.*\\.sql$': '/test/jest/__mocks__/zap-sql-mock.js',
+ "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/test/jest/__mocks__/file-mock.js",
+ },
+ transform: {
+ '.*\\.vue$': 'vue-jest',
+ '.*\\.js$': 'babel-jest',
+ '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
+ // use these if NPM is being flaky
+ // '.*\\.vue$': '/node_modules/@quasar/quasar-app-extension-testing-unit-jest/node_modules/vue-jest',
+ // '.*\\.js$': '/node_modules/@quasar/quasar-app-extension-testing-unit-jest/node_modules/babel-jest'
+ },
+ transformIgnorePatterns: [
+ '/node_modules/(?!quasar/lang)'
+ ],
+ snapshotSerializers: [
+ '/node_modules/jest-serializer-vue'
+ ]
+}
diff --git a/license-check.js b/license-check.js
new file mode 100644
index 0000000000..c1b97d36a2
--- /dev/null
+++ b/license-check.js
@@ -0,0 +1,21 @@
+//Usage 'node ./license-check.js --production'
+
+var fs = require('fs');
+var checker = require('./node_modules/license-checker/lib/index');
+var args = require('./node_modules/license-checker/lib/args').parse();
+var whiteList = fs.readFileSync('license-whitelist.txt').toString().split('\n');
+var fail = false;
+checker.init(args, function(err, json) {
+ for (x in json) {
+ var license = json[x].licenses;
+ if (!x.includes("zap@") && !whiteList.includes(license.toString())) {
+ console.log("New License Found for module: " + x + " license:\"" + json[x].licenses +'"');
+ fail = true;
+ }
+ }
+ if (fail) {
+ console.log("License check FAILED");
+ } else {
+ console.log("License check SUCCESS");
+ }
+});
diff --git a/license-whitelist.txt b/license-whitelist.txt
new file mode 100644
index 0000000000..026877dc43
--- /dev/null
+++ b/license-whitelist.txt
@@ -0,0 +1,16 @@
+BSD-2-Clause
+CC-BY-3.0
+Apache-2.0
+BSD-3-Clause
+CC0-1.0
+ISC
+MIT
+Unlicense
+AFLv2.1,BSD
+(BSD-2-Clause OR MIT OR Apache-2.0)
+(MIT AND CC-BY-3.0)
+MIT*
+(WTFPL OR MIT)
+WTFPL OR ISC
+WTFPL
+(MIT OR CC0-1.0)
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000..7d5eedafb4
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,23910 @@
+{
+ "name": "zap",
+ "version": "0.99.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "7zip": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/7zip/-/7zip-0.0.6.tgz",
+ "integrity": "sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA=",
+ "dev": true
+ },
+ "7zip-bin": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
+ "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA=="
+ },
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz",
+ "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.5",
+ "invariant": "^2.2.4",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/core": {
+ "version": "7.7.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.5.tgz",
+ "integrity": "sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.4",
+ "@babel/helpers": "^7.7.4",
+ "@babel/parser": "^7.7.5",
+ "@babel/template": "^7.7.4",
+ "@babel/traverse": "^7.7.4",
+ "@babel/types": "^7.7.4",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.4.tgz",
+ "integrity": "sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.4",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
+ "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
+ "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz",
+ "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz",
+ "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.8.4",
+ "browserslist": "^4.8.5",
+ "invariant": "^2.2.4",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz",
+ "integrity": "sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-member-expression-to-functions": "^7.8.3",
+ "@babel/helper-optimise-call-expression": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz",
+ "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-regex": "^7.8.3",
+ "regexpu-core": "^4.6.0"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
+ "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
+ "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz",
+ "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.7.4",
+ "@babel/template": "^7.7.4",
+ "@babel/types": "^7.7.4"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz",
+ "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.4"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
+ "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
+ "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
+ "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz",
+ "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-simple-access": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
+ "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
+ "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
+ "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-wrap-function": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz",
+ "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.8.3",
+ "@babel/helper-optimise-call-expression": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
+ "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz",
+ "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.7.4"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
+ "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/traverse": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
+ "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
+ "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/generator": "^7.8.4",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "@babel/parser": "^7.8.4",
+ "@babel/types": "^7.8.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz",
+ "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.7.4",
+ "@babel/traverse": "^7.7.4",
+ "@babel/types": "^7.7.4"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/parser": {
+ "version": "7.7.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz",
+ "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
+ "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-remap-async-to-generator": "^7.8.3",
+ "@babel/plugin-syntax-async-generators": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz",
+ "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz",
+ "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-decorators": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-WKK+9jz6TWUTX1uej9/EUVOmM1sK7aHv6bZyxbUV3NJjbiIZRqJITeXGMo7D631J72PEnIORh5VOlFCSlrLicg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-function-sent": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.8.3.tgz",
+ "integrity": "sha512-lu9wQjLnXd6Zy6eBKr0gE175xfD+da1rv2wOWEnZlD5KIxl894Tg34ppZ7ANR0jzQJMn+7pGuzSdy6JK4zGtKg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-wrap-function": "^7.8.3",
+ "@babel/plugin-syntax-function-sent": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
+ "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-numeric-separator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz",
+ "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-throw-expressions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.8.3.tgz",
+ "integrity": "sha512-tH40s9JnoR+r45ZXKWW+PC5xzPQfVJix3pR1D8Ty5l9sn5NnrbZUzw8MtnNxu/Bz7p0imyeSYj9FQVccEymOEg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-syntax-throw-expressions": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz",
+ "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz",
+ "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz",
+ "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-function-sent": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.8.3.tgz",
+ "integrity": "sha512-NNEutF0x2PdWYij2bmf/i50dSq4SUdgFij4BZwj3I4qDZgql3dlFJRyvwGHAhwKYElUKHaP0wQ/yO1d/enpJaw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.8.3.tgz",
+ "integrity": "sha512-vYiGd4wQ9gx0Lngb7+bPCwQXGK/PR6FeTIJ+TIOlq+OfOKG/kCAOO2+IBac3oMM9qV7/fU76hfcqxUaLKZf1hQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz",
+ "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz",
+ "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-throw-expressions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.8.3.tgz",
+ "integrity": "sha512-Mv3shY1i7ZssY4OY+eLZJAmNCwqTcpv2qOKO9x6irELSygfKWVSMXk0igJsA9UhU4hOdw0qMGkjj9TAk4MqzwQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
+ "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
+ "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
+ "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-remap-async-to-generator": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
+ "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
+ "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz",
+ "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-define-map": "^7.8.3",
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-optimise-call-expression": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.3",
+ "@babel/helper-split-export-declaration": "^7.8.3",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
+ "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
+ "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz",
+ "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
+ "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
+ "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
+ "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz",
+ "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
+ "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
+ "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
+ "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
+ "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
+ "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.3",
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
+ "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
+ "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz",
+ "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz",
+ "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-simple-access": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz",
+ "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.8.3",
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz",
+ "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
+ "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
+ "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
+ "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-replace-supers": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz",
+ "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-call-delegate": "^7.8.3",
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
+ "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz",
+ "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
+ "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz",
+ "integrity": "sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.1"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
+ "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
+ "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
+ "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/helper-regex": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
+ "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
+ "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
+ "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.4.tgz",
+ "integrity": "sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.8.4",
+ "@babel/helper-compilation-targets": "^7.8.4",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/helper-plugin-utils": "^7.8.3",
+ "@babel/plugin-proposal-async-generator-functions": "^7.8.3",
+ "@babel/plugin-proposal-dynamic-import": "^7.8.3",
+ "@babel/plugin-proposal-json-strings": "^7.8.3",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-proposal-object-rest-spread": "^7.8.3",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-proposal-optional-chaining": "^7.8.3",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.8.3",
+ "@babel/plugin-syntax-async-generators": "^7.8.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-json-strings": "^7.8.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3",
+ "@babel/plugin-transform-arrow-functions": "^7.8.3",
+ "@babel/plugin-transform-async-to-generator": "^7.8.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.8.3",
+ "@babel/plugin-transform-block-scoping": "^7.8.3",
+ "@babel/plugin-transform-classes": "^7.8.3",
+ "@babel/plugin-transform-computed-properties": "^7.8.3",
+ "@babel/plugin-transform-destructuring": "^7.8.3",
+ "@babel/plugin-transform-dotall-regex": "^7.8.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.8.3",
+ "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
+ "@babel/plugin-transform-for-of": "^7.8.4",
+ "@babel/plugin-transform-function-name": "^7.8.3",
+ "@babel/plugin-transform-literals": "^7.8.3",
+ "@babel/plugin-transform-member-expression-literals": "^7.8.3",
+ "@babel/plugin-transform-modules-amd": "^7.8.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.8.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.8.3",
+ "@babel/plugin-transform-modules-umd": "^7.8.3",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
+ "@babel/plugin-transform-new-target": "^7.8.3",
+ "@babel/plugin-transform-object-super": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.8.4",
+ "@babel/plugin-transform-property-literals": "^7.8.3",
+ "@babel/plugin-transform-regenerator": "^7.8.3",
+ "@babel/plugin-transform-reserved-words": "^7.8.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.8.3",
+ "@babel/plugin-transform-spread": "^7.8.3",
+ "@babel/plugin-transform-sticky-regex": "^7.8.3",
+ "@babel/plugin-transform-template-literals": "^7.8.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.8.4",
+ "@babel/plugin-transform-unicode-regex": "^7.8.3",
+ "@babel/types": "^7.8.3",
+ "browserslist": "^4.8.5",
+ "core-js-compat": "^3.6.2",
+ "invariant": "^2.2.2",
+ "levenary": "^1.1.1",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
+ "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
+ "dev": true
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
+ "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz",
+ "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/runtime-corejs2": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.8.4.tgz",
+ "integrity": "sha512-7jU2FgNqNHX6yTuU/Dr/vH5/O8eVL9U85MG5aDw1LzGfCvvhXC1shdXfVzCQDsoY967yrAKeLujRv7l8BU+dZA==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.6.5",
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.4.tgz",
+ "integrity": "sha512-+wpLqy5+fbQhvbllvlJEVRIpYj+COUWnnsm+I4jZlA8Lo7/MJmBhGTCHyk1/RWfOqBRJ2MbadddG6QltTKTlrg==",
+ "dev": true,
+ "requires": {
+ "core-js-pure": "^3.0.0",
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/template": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz",
+ "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.4",
+ "@babel/types": "^7.7.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz",
+ "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.7.4",
+ "@babel/helper-function-name": "^7.7.4",
+ "@babel/helper-split-export-declaration": "^7.7.4",
+ "@babel/parser": "^7.7.4",
+ "@babel/types": "^7.7.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz",
+ "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@cnakazawa/watch": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
+ "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
+ "dev": true,
+ "requires": {
+ "exec-sh": "^0.3.2",
+ "minimist": "^1.2.0"
+ }
+ },
+ "@electron/get": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.1.tgz",
+ "integrity": "sha512-+BOIzkmYbe+oOBGqSByq8zXYXCFztccoymR3uNkvX5ckJ/5xU+4peVyEvFyH6+zfv58hCo99RxgIpwuaMfRtRg==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "global-agent": "^2.0.2",
+ "global-tunnel-ng": "^2.7.1",
+ "got": "^9.6.0",
+ "sanitize-filename": "^1.6.2",
+ "sumchecker": "^3.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
+ "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "dev": true
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "dev": true
+ },
+ "@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
+ "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "dev": true
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@jest/console": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz",
+ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==",
+ "dev": true,
+ "requires": {
+ "@jest/source-map": "^24.9.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/core": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz",
+ "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/reporters": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-changed-files": "^24.9.0",
+ "jest-config": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-resolve-dependencies": "^24.9.0",
+ "jest-runner": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "jest-watcher": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "p-each-series": "^1.0.0",
+ "realpath-native": "^1.1.0",
+ "rimraf": "^2.5.4",
+ "slash": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "@jest/environment": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
+ "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
+ "dev": true,
+ "requires": {
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz",
+ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0"
+ }
+ },
+ "@jest/reporters": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz",
+ "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "istanbul-lib-coverage": "^2.0.2",
+ "istanbul-lib-instrument": "^3.0.1",
+ "istanbul-lib-report": "^2.0.4",
+ "istanbul-lib-source-maps": "^3.0.1",
+ "istanbul-reports": "^2.2.6",
+ "jest-haste-map": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.6.0",
+ "node-notifier": "^5.4.2",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "@jest/source-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz",
+ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "@jest/test-result": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz",
+ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz",
+ "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-runner": "^24.9.0",
+ "jest-runtime": "^24.9.0"
+ }
+ },
+ "@jest/transform": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz",
+ "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^24.9.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "chalk": "^2.0.1",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.1.15",
+ "jest-haste-map": "^24.9.0",
+ "jest-regex-util": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "pirates": "^4.0.1",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "2.4.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "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
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "@jest/types": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz",
+ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^13.0.0"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
+ "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.3",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
+ "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
+ "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.3",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@positron/stack-trace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@positron/stack-trace/-/stack-trace-1.0.0.tgz",
+ "integrity": "sha1-FPzHEqUwA475vhzmlSMVqDn0Zqg=",
+ "dev": true
+ },
+ "@quasar/app": {
+ "version": "1.5.8",
+ "resolved": "https://registry.npmjs.org/@quasar/app/-/app-1.5.8.tgz",
+ "integrity": "sha512-fIbVmHW7AHzWk0cWIsUY1gecqlYN6KqZIyNKJ+xzt2iHc9x5AYE/lMqw9Ku4DxTl0LvFli9aHNh0pJnDdwz6Tg==",
+ "dev": true,
+ "requires": {
+ "@quasar/babel-preset-app": "1.1.9",
+ "@quasar/fastclick": "1.1.4",
+ "@types/cordova": "0.0.34",
+ "@types/electron-packager": "14.0.0",
+ "@types/express": "4.17.2",
+ "@types/fs-extra": "8.0.1",
+ "@types/lru-cache": "5.1.0",
+ "@types/terser-webpack-plugin": "2.2.0",
+ "@types/webpack": "4.41.6",
+ "@types/webpack-bundle-analyzer": "2.13.3",
+ "@types/webpack-dev-server": "3.10.0",
+ "@types/yargs": "15.0.3",
+ "@vue/preload-webpack-plugin": "1.1.1",
+ "autoprefixer": "9.7.4",
+ "chalk": "3.0.0",
+ "chokidar": "3.3.1",
+ "ci-info": "2.0.0",
+ "compression-webpack-plugin": "3.1.0",
+ "copy-webpack-plugin": "5.1.1",
+ "cross-spawn": "7.0.1",
+ "css-loader": "3.4.2",
+ "cssnano": "4.1.10",
+ "dot-prop": "5.2.0",
+ "elementtree": "0.1.7",
+ "express": "4.17.1",
+ "fast-glob": "3.1.1",
+ "file-loader": "^5.0.2",
+ "friendly-errors-webpack-plugin": "1.7.0",
+ "fs-extra": "8.1.0",
+ "html-minifier": "4.0.0",
+ "html-webpack-plugin": "3.2.0",
+ "inquirer": "7.0.1",
+ "isbinaryfile": "4.0.3",
+ "launch-editor-middleware": "2.2.1",
+ "lodash.debounce": "4.0.8",
+ "lodash.template": "4.5.0",
+ "lodash.throttle": "4.1.1",
+ "log-update": "3.3.0",
+ "lru-cache": "5.1.1",
+ "memory-fs": "0.5.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "1.2.0",
+ "ms": "2.1.2",
+ "node-loader": "0.6.0",
+ "node-sass": "4.13.1",
+ "open": "7.0.2",
+ "optimize-css-assets-webpack-plugin": "5.0.3",
+ "ouch": "2.0.0",
+ "postcss-loader": "3.0.0",
+ "postcss-rtl": "1.5.0",
+ "postcss-safe-parser": "4.0.2",
+ "register-service-worker": "1.6.2",
+ "sass-loader": "8.0.2",
+ "semver": "7.1.3",
+ "strip-ansi": "6.0.0",
+ "stylus": "0.54.7",
+ "stylus-loader": "3.0.2",
+ "terser-webpack-plugin": "2.3.4",
+ "url-loader": "3.0.0",
+ "vue": "2.6.11",
+ "vue-loader": "15.9.0",
+ "vue-router": "3.1.5",
+ "vue-server-renderer": "2.6.11",
+ "vue-style-loader": "4.1.2",
+ "vue-template-compiler": "2.6.11",
+ "vuex": "3.1.2",
+ "webpack": "4.41.6",
+ "webpack-bundle-analyzer": "3.6.0",
+ "webpack-chain": "6.4.0",
+ "webpack-dev-server": "3.10.3",
+ "webpack-merge": "4.2.2",
+ "webpack-node-externals": "1.7.2",
+ "workbox-webpack-plugin": "4.3.1",
+ "yargs": "15.1.0"
+ },
+ "dependencies": {
+ "@types/yargs": {
+ "version": "15.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz",
+ "integrity": "sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz",
+ "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==",
+ "dev": true
+ }
+ }
+ },
+ "@quasar/babel-preset-app": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@quasar/babel-preset-app/-/babel-preset-app-1.1.9.tgz",
+ "integrity": "sha512-EBL0LFqjxnp83CAUl/H7GkLCJx+lK4iM6cL/GG0v1DXiLbFZ/VGPt3EUd4lA4+ALZH+se7sKuaguZjDYNKqyoQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.5.5",
+ "@babel/plugin-proposal-class-properties": "^7.5.5",
+ "@babel/plugin-proposal-decorators": "^7.4.4",
+ "@babel/plugin-proposal-export-namespace-from": "^7.2.0",
+ "@babel/plugin-proposal-function-sent": "^7.2.0",
+ "@babel/plugin-proposal-json-strings": "^7.2.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.2.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.2.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+ "@babel/plugin-syntax-import-meta": "^7.2.0",
+ "@babel/plugin-transform-runtime": "^7.5.5",
+ "@babel/preset-env": "^7.5.5",
+ "@babel/runtime": "^7.5.5",
+ "@babel/runtime-corejs2": "^7.5.5",
+ "@babel/runtime-corejs3": "^7.5.5",
+ "babel-loader": "^8.0.6",
+ "babel-plugin-dynamic-import-node": "^2.3.0",
+ "babel-plugin-module-resolver": "^4.0.0",
+ "babel-plugin-transform-imports": "^1.0.0"
+ }
+ },
+ "@quasar/extras": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.5.2.tgz",
+ "integrity": "sha512-4hwibnTNHM0OmZl6T3PN6CaHnVOmsCWpNwgFhJS0zMfsQ2z2s1OxObOFVDSSBuPT+sRk3iakhMLRaohNze0HYA=="
+ },
+ "@quasar/fastclick": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@quasar/fastclick/-/fastclick-1.1.4.tgz",
+ "integrity": "sha512-i9wbyV4iT+v4KhtHJynUFhH5LiEPvAEgSnwMqPN4hf/8uRe82nDl5qP5agrp2el1h0HzyBpbvHaW7NB0BPrtvA==",
+ "dev": true
+ },
+ "@quasar/quasar-app-extension-testing": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@quasar/quasar-app-extension-testing/-/quasar-app-extension-testing-1.0.0.tgz",
+ "integrity": "sha512-IuHseh5YIaf4JPlsjehkB2pLUaWuFMsAxFq83+06btO9dMSQpvBXrGhA6O0N1rXUM/EXBI8Mi7pwJWi+78i4LA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "@quasar/quasar-app-extension-testing-unit-jest": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@quasar/quasar-app-extension-testing-unit-jest/-/quasar-app-extension-testing-unit-jest-1.0.0.tgz",
+ "integrity": "sha512-DgtZCwBhV/hyfHGeIiW48mG75FcI5yG+XS4CuzYh6nPowWh8EPIF23NXTku50frBXcFziXiA8SHNouOsfqlkrQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+ "@types/jest": "^24.0.13",
+ "@vue/test-utils": "^1.0.0-beta.29",
+ "babel-core": "7.0.0-bridge.0",
+ "babel-jest": "^24.8.0",
+ "babel-plugin-transform-relative-paths": "^0.1.0",
+ "chai": "^4.2.0",
+ "concurrently": "^4.1.0",
+ "enhanced-resolve": "^4.1.0",
+ "jest": "^24.8.0",
+ "jest-serializer-vue": "^2.0.2",
+ "jest-transform-stub": "^2.0.0",
+ "loader-utils": "^1.2.3",
+ "promise": "^8.0.2",
+ "regenerator-runtime": "^0.13.1",
+ "vue-jest": "^3.0.2"
+ }
+ },
+ "@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ=="
+ },
+ "@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "requires": {
+ "defer-to-connect": "^1.0.1"
+ }
+ },
+ "@types/anymatch": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
+ "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
+ "dev": true
+ },
+ "@types/babel__core": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz",
+ "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz",
+ "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__template": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz",
+ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz",
+ "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "@types/body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
+ "dev": true,
+ "requires": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
+ },
+ "@types/connect": {
+ "version": "3.4.33",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz",
+ "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/connect-history-api-fallback": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz",
+ "integrity": "sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw==",
+ "dev": true,
+ "requires": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/cordova": {
+ "version": "0.0.34",
+ "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
+ "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=",
+ "dev": true
+ },
+ "@types/debug": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
+ "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ=="
+ },
+ "@types/electron-packager": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@types/electron-packager/-/electron-packager-14.0.0.tgz",
+ "integrity": "sha512-n47/AbT4DEYPyXtES2myPyKCxVE3hICAB3MnpoVg+Ba8CLBGOpUUsNJ5fyLhfKt5N06sT9nTk4eAc+rtYVpvTQ==",
+ "dev": true,
+ "requires": {
+ "@electron/get": "^1.3.1",
+ "@types/node": "*",
+ "electron-notarize": "^0.1.1",
+ "electron-osx-sign": "^0.4.11"
+ }
+ },
+ "@types/events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+ "dev": true
+ },
+ "@types/express": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz",
+ "integrity": "sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==",
+ "dev": true,
+ "requires": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "@types/express-serve-static-core": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz",
+ "integrity": "sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/range-parser": "*"
+ }
+ },
+ "@types/fs-extra": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.0.1.tgz",
+ "integrity": "sha512-J00cVDALmi/hJOYsunyT52Hva5TnJeKP5yd1r+mH/ZU0mbYZflR0Z5kw5kITtKTRYMhm1JMClOFYdHnQszEvqw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "dev": true,
+ "requires": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/http-proxy": {
+ "version": "1.17.3",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.3.tgz",
+ "integrity": "sha512-wIPqXANye5BbORbuh74exbwNzj+UWCwWyeEFJzUQ7Fq3W2NSAy+7x7nX1fgbEypr2/TdKqpeuxLnXWgzN533/Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/http-proxy-middleware": {
+ "version": "0.19.3",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz",
+ "integrity": "sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA==",
+ "dev": true,
+ "requires": {
+ "@types/connect": "*",
+ "@types/http-proxy": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
+ "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
+ "dev": true
+ },
+ "@types/istanbul-lib-report": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
+ "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
+ "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/jest": {
+ "version": "24.0.24",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.24.tgz",
+ "integrity": "sha512-vgaG968EDPSJPMunEDdZvZgvxYSmeH8wKqBlHSkBt1pV2XlLEVDzsj1ZhLuI4iG4Pv841tES61txSBF0obh4CQ==",
+ "dev": true,
+ "requires": {
+ "jest-diff": "^24.3.0"
+ }
+ },
+ "@types/lru-cache": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz",
+ "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==",
+ "dev": true
+ },
+ "@types/mime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
+ "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "12.12.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz",
+ "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==",
+ "dev": true
+ },
+ "@types/q": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
+ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
+ "dev": true
+ },
+ "@types/range-parser": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
+ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
+ "dev": true
+ },
+ "@types/serve-static": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz",
+ "integrity": "sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==",
+ "dev": true,
+ "requires": {
+ "@types/express-serve-static-core": "*",
+ "@types/mime": "*"
+ }
+ },
+ "@types/source-list-map": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+ "dev": true
+ },
+ "@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "dev": true
+ },
+ "@types/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=",
+ "dev": true
+ },
+ "@types/strip-json-comments": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz",
+ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
+ "dev": true
+ },
+ "@types/tapable": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.5.tgz",
+ "integrity": "sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==",
+ "dev": true
+ },
+ "@types/terser-webpack-plugin": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-2.2.0.tgz",
+ "integrity": "sha512-ywqEfTm7KdKoX9aYx0zYtiFU1z6IHrIYW9FJqeay2Ea58rTPML1J0hvoztGal2Jow3bkgGKcAmEZNL+8LqUVrA==",
+ "dev": true,
+ "requires": {
+ "@types/webpack": "*",
+ "terser": "^4.3.9"
+ }
+ },
+ "@types/uglify-js": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.0.4.tgz",
+ "integrity": "sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "@types/webpack": {
+ "version": "4.41.6",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.6.tgz",
+ "integrity": "sha512-iWRpV5Ej+8uKrgxp6jXz3v7ZTjgtuMXY+rsxQjFNU0hYCnHkpA7vtiNffgxjuxX4feFHBbz0IF76OzX2OqDYPw==",
+ "dev": true,
+ "requires": {
+ "@types/anymatch": "*",
+ "@types/node": "*",
+ "@types/tapable": "*",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "@types/webpack-bundle-analyzer": {
+ "version": "2.13.3",
+ "resolved": "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.3.tgz",
+ "integrity": "sha512-p8EXyKfq311FFFfRuAR9tOHFFTQ9DqGrjRQYXbjjEMfl9pKGaTtRy1zFJtPMyZHfRoqh5rsYPVSVknkl004M7A==",
+ "dev": true,
+ "requires": {
+ "@types/webpack": "*"
+ }
+ },
+ "@types/webpack-dev-server": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.10.0.tgz",
+ "integrity": "sha512-ct/g/4WEEqOpXPqGX31TlZSzF1Sb7LXIViBz0oBSdH08XtNgY/hq/faXkw0yTxqvj7HJwS8dy2ggzqHposf1fQ==",
+ "dev": true,
+ "requires": {
+ "@types/connect-history-api-fallback": "*",
+ "@types/express": "*",
+ "@types/http-proxy-middleware": "*",
+ "@types/serve-static": "*",
+ "@types/webpack": "*"
+ }
+ },
+ "@types/webpack-sources": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz",
+ "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "@types/yargs": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
+ "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz",
+ "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==",
+ "dev": true
+ },
+ "@vue/component-compiler-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.1.tgz",
+ "integrity": "sha512-+lN3nsfJJDGMNz7fCpcoYIORrXo0K3OTsdr8jCM7FuqdI4+70TY6gxY6viJ2Xi1clqyPg7LpeOWwjF31vSMmUw==",
+ "dev": true,
+ "requires": {
+ "consolidate": "^0.15.1",
+ "hash-sum": "^1.0.2",
+ "lru-cache": "^4.1.2",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^7.0.14",
+ "postcss-selector-parser": "^6.0.2",
+ "prettier": "^1.18.2",
+ "source-map": "~0.6.1",
+ "vue-template-es2015-compiler": "^1.9.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "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
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/eslint-config-standard": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-4.0.0.tgz",
+ "integrity": "sha512-bQghq1cw1BuMRHNhr3tRpAJx1tpGy0QtajQX873kLtA9YVuOIoXR7nAWnTN09bBHnSUh2N288vMsqPi2fI4Hzg==",
+ "dev": true,
+ "requires": {
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-import": "^2.14.0",
+ "eslint-plugin-node": "^8.0.0",
+ "eslint-plugin-promise": "^4.0.1",
+ "eslint-plugin-standard": "^4.0.0"
+ }
+ },
+ "@vue/preload-webpack-plugin": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz",
+ "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==",
+ "dev": true
+ },
+ "@vue/test-utils": {
+ "version": "1.0.0-beta.30",
+ "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.30.tgz",
+ "integrity": "sha512-Wyvcha9fNk8+kzTDwb3xWGjPkCPzHSYSwKP6MplrPTG/auhqoad7JqUEceZLc6u7AU4km2pPQ8/m9s0RgCZ0NA==",
+ "dev": true,
+ "requires": {
+ "dom-event-types": "^1.0.0",
+ "lodash": "^4.17.15",
+ "pretty": "^2.0.0"
+ }
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "abab": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
+ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "accessibility-developer-tools": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz",
+ "integrity": "sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ=",
+ "dev": true
+ },
+ "acorn": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
+ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz",
+ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.1",
+ "acorn-walk": "^6.0.1"
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
+ "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "dev": true
+ },
+ "aggregate-error": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
+ "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
+ "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
+ "requires": {
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+ "dev": true
+ },
+ "ansi-escape-sequences": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz",
+ "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==",
+ "dev": true,
+ "requires": {
+ "array-back": "^3.0.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true
+ }
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
+ "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "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==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "app-builder-bin": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.7.1.tgz",
+ "integrity": "sha512-ubIBeiL9XysjMW4HETBKxj3DC8ika6dGyC0vftPc0kZwGh1iXQ5bycsjoAqY/3t3BBEEIg0VruicvBaUl1pOSQ=="
+ },
+ "app-builder-lib": {
+ "version": "20.44.4",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.44.4.tgz",
+ "integrity": "sha512-1K1xfrhyqDgnibwyuYMgvfwGilGLMF31YwOUJ8IXreyjRef9lUjWW+BZuBXqk4Uqd0C0EYPjhofgpuN0WoAQ+A==",
+ "requires": {
+ "7zip-bin": "~4.1.0",
+ "app-builder-bin": "2.7.1",
+ "async-exit-hook": "^2.0.1",
+ "bluebird-lst": "^1.0.9",
+ "builder-util": "10.1.2",
+ "builder-util-runtime": "8.2.5",
+ "chromium-pickle-js": "^0.2.0",
+ "debug": "^4.1.1",
+ "ejs": "^2.6.2",
+ "electron-osx-sign": "0.4.11",
+ "electron-publish": "20.44.4",
+ "fs-extra-p": "^8.0.2",
+ "hosted-git-info": "^2.7.1",
+ "is-ci": "^2.0.0",
+ "isbinaryfile": "^4.0.1",
+ "js-yaml": "^3.13.1",
+ "lazy-val": "^1.0.4",
+ "minimatch": "^3.0.4",
+ "normalize-package-data": "^2.5.0",
+ "plist": "^3.0.1",
+ "read-config-file": "3.2.2",
+ "sanitize-filename": "^1.6.1",
+ "semver": "^6.1.1",
+ "temp-file": "^3.3.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.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=",
+ "dev": true
+ },
+ "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==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-back": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
+ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
+ "dev": true
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "array-includes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.0.tgz",
+ "integrity": "sha512-ONOEQoKrvXPKk7Su92Co0YMqYO32FfqJTzkKU9u2UpIXyYZIzLSvpdg4AwvSw4mSUW0czu6inK+zby6Oj6gDjQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.0"
+ }
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "array.prototype.flat": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
+ "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "dev": true
+ },
+ "asar": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/asar/-/asar-2.0.3.tgz",
+ "integrity": "sha512-QdHKO+HOYVtE4B/M3up3i4LSJeJgsa2CTVBrjBf9GgLUPGGUFZowcdJ5yE4gOJuRAHNdqB9JFeRfFfaOu5x8Rw==",
+ "dev": true,
+ "requires": {
+ "chromium-pickle-js": "^0.2.0",
+ "commander": "^2.20.0",
+ "cuint": "^0.2.2",
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "tmp-promise": "^1.0.5"
+ }
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "async-exit-hook": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw=="
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "author-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz",
+ "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "9.7.4",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz",
+ "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.3",
+ "caniuse-lite": "^1.0.30001020",
+ "chalk": "^2.4.2",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "postcss": "^7.0.26",
+ "postcss-value-parser": "^4.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz",
+ "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A=="
+ },
+ "axios": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
+ "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+ "requires": {
+ "follow-redirects": "1.5.10",
+ "is-buffer": "^2.0.2"
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "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"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "babel-core": {
+ "version": "7.0.0-bridge.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
+ "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
+ "dev": true
+ },
+ "babel-eslint": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz",
+ "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "babel-extract-comments": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
+ "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==",
+ "dev": true,
+ "requires": {
+ "babylon": "^6.18.0"
+ }
+ },
+ "babel-jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz",
+ "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==",
+ "dev": true,
+ "requires": {
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/babel__core": "^7.1.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "babel-preset-jest": "^24.9.0",
+ "chalk": "^2.4.2",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "babel-loader": {
+ "version": "8.0.6",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
+ "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^2.0.0",
+ "loader-utils": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "pify": "^4.0.1"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz",
+ "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "find-up": "^3.0.0",
+ "istanbul-lib-instrument": "^3.3.0",
+ "test-exclude": "^5.2.3"
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz",
+ "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==",
+ "dev": true,
+ "requires": {
+ "@types/babel__traverse": "^7.0.6"
+ }
+ },
+ "babel-plugin-module-resolver": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.0.0.tgz",
+ "integrity": "sha512-3pdEq3PXALilSJ6dnC4wMWr0AZixHRM4utpdpBR9g5QG7B7JwWyukQv7a9hVxkbGFl+nQbrHDqqQOIBtTXTP/Q==",
+ "dev": true,
+ "requires": {
+ "find-babel-config": "^1.2.0",
+ "glob": "^7.1.6",
+ "pkg-up": "^3.1.0",
+ "reselect": "^4.0.0",
+ "resolve": "^1.13.1"
+ }
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-types": "^6.26.0"
+ }
+ },
+ "babel-plugin-transform-imports": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-imports/-/babel-plugin-transform-imports-1.5.1.tgz",
+ "integrity": "sha512-Jkb0tjqye8kjOD7GdcKJTGB3dC9fruQhwRFZCeYS0sZO2otyjG6SohKR8nZiSm/OvhY+Ny2ktzVE59XKgIqskA==",
+ "dev": true,
+ "requires": {
+ "babel-types": "^6.6.0",
+ "is-valid-path": "^0.1.1",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.findkey": "^4.6.0",
+ "lodash.kebabcase": "^4.1.1",
+ "lodash.snakecase": "^4.1.1"
+ }
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+ "babel-runtime": "^6.26.0"
+ }
+ },
+ "babel-plugin-transform-relative-paths": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-relative-paths/-/babel-plugin-transform-relative-paths-0.1.0.tgz",
+ "integrity": "sha512-yCFRkacsI79kX6zHxvwhVjGY4tIn3cbDrrBNG2M42Nu5/+p6ld2Mo4EoJn397vhfXnPg1SU96qgsUEpANofiEA==",
+ "dev": true
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-preset-jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz",
+ "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "babel-plugin-jest-hoist": "^24.9.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ }
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "debug": "^2.6.8",
+ "globals": "^9.18.0",
+ "invariant": "^2.2.2",
+ "lodash": "^4.17.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.4",
+ "to-fast-properties": "^1.0.3"
+ },
+ "dependencies": {
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ }
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "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": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "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": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "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": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz",
+ "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "dev": true
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
+ "bluebird-lst": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
+ "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==",
+ "requires": {
+ "bluebird": "^3.5.5"
+ }
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "requires": {
+ "bytes": "3.1.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true,
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+ "dev": true
+ }
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "boolean": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.0.tgz",
+ "integrity": "sha512-OElxJ1lUSinuoUnkpOgLmxp0DC4ytEhODEL6QJU0NpxE/mI4rUSh8h1P1Wkvfi3xQEBcxXR2gBIPNYNuaFcAbQ==",
+ "dev": true,
+ "optional": true
+ },
+ "boxen": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz",
+ "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==",
+ "requires": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.4.2",
+ "cli-boxes": "^2.2.0",
+ "string-width": "^3.0.0",
+ "term-size": "^1.2.0",
+ "type-fest": "^0.3.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
+ "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ=="
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-process-hrtime": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
+ "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.8.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.7.tgz",
+ "integrity": "sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001027",
+ "electron-to-chromium": "^1.3.349",
+ "node-releases": "^1.1.49"
+ }
+ },
+ "bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "requires": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builder-util": {
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-10.1.2.tgz",
+ "integrity": "sha512-LQMh36Cg0r4ZfKqNlaUclndS/IXxZ3OdCgmXvw1vdP3QwYT2NkyE7LfMikAFIHpXOs6zsVH+iW+Fe/AX1jfFag==",
+ "requires": {
+ "7zip-bin": "~4.1.0",
+ "@types/debug": "^4.1.4",
+ "app-builder-bin": "2.7.1",
+ "bluebird-lst": "^1.0.9",
+ "builder-util-runtime": "^8.2.5",
+ "chalk": "^2.4.2",
+ "debug": "^4.1.1",
+ "fs-extra-p": "^8.0.2",
+ "is-ci": "^2.0.0",
+ "js-yaml": "^3.13.1",
+ "source-map-support": "^0.5.12",
+ "stat-mode": "^0.3.0",
+ "temp-file": "^3.3.3"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "builder-util-runtime": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.2.5.tgz",
+ "integrity": "sha512-YILT+YUlxrE3yNB6mDC1tF+Q24mr1LSYdjP5U861jbBeDZfvy1/VPDzW3boMVrDtzYnDnvkYrzLJnoh6TXA75w==",
+ "requires": {
+ "bluebird-lst": "^1.0.9",
+ "debug": "^4.1.1",
+ "fs-extra-p": "^8.0.2",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
+ },
+ "cacache": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
+ "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.1.2",
+ "figgy-pudding": "^3.5.1",
+ "fs-minipass": "^2.0.0",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.2",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^5.1.1",
+ "minipass": "^3.0.0",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.2",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "p-map": "^3.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.7.1",
+ "ssri": "^7.0.0",
+ "unique-filename": "^1.1.1"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "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"
+ }
+ },
+ "cache-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-1.0.0.tgz",
+ "integrity": "sha512-ZqrZp9Hi5Uq7vfSGmNP2bUT/9DzZC2Y/GXjHB8rUJN1a+KLmbV05+vxHipNsg8+CSVgjcVVzLV8VZms6w8ZeRw==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.0",
+ "fs-then-native": "^2.0.0",
+ "mkdirp2": "^1.0.4"
+ }
+ },
+ "cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
+ },
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
+ }
+ }
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001028",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz",
+ "integrity": "sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ==",
+ "dev": true
+ },
+ "capture-exit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
+ "dev": true,
+ "requires": {
+ "rsvp": "^4.8.4"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "catharsis": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz",
+ "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "chai": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
+ "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
+ "dev": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^3.0.1",
+ "get-func-name": "^2.0.0",
+ "pathval": "^1.1.0",
+ "type-detect": "^4.0.5"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "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
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "dev": true
+ },
+ "check-types": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz",
+ "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
+ "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.3.0"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
+ "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw=="
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "chromium-pickle-js": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+ "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU="
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
+ "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.6.0"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
+ "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w=="
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz",
+ "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "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==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "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="
+ },
+ "collect-all": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz",
+ "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==",
+ "dev": true,
+ "requires": {
+ "stream-connect": "^1.0.2",
+ "stream-via": "^1.0.4"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+ "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.2"
+ }
+ },
+ "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==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-string": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "command-line-args": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz",
+ "integrity": "sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==",
+ "dev": true,
+ "requires": {
+ "array-back": "^3.0.1",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true
+ },
+ "typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
+ "dev": true
+ }
+ }
+ },
+ "command-line-tool": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz",
+ "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==",
+ "dev": true,
+ "requires": {
+ "ansi-escape-sequences": "^4.0.0",
+ "array-back": "^2.0.0",
+ "command-line-args": "^5.0.0",
+ "command-line-usage": "^4.1.0",
+ "typical": "^2.6.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.1"
+ }
+ }
+ }
+ },
+ "command-line-usage": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz",
+ "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==",
+ "dev": true,
+ "requires": {
+ "ansi-escape-sequences": "^4.0.0",
+ "array-back": "^2.0.0",
+ "table-layout": "^0.4.2",
+ "typical": "^2.6.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.1"
+ }
+ }
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "common-sequence": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.0.tgz",
+ "integrity": "sha512-f0QqPLpRTgMQn/pQIynf+SdE73Lw5Q1jn4hjirHLgH/NJ71TiHjXusV16BmOyuK5rRQ1W2f++II+TFZbQOh4hA==",
+ "dev": true
+ },
+ "common-tags": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz",
+ "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA="
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
+ "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
+ "dev": true
+ }
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "compression-webpack-plugin": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.1.0.tgz",
+ "integrity": "sha512-iqTHj3rADN4yHwXMBrQa/xrncex/uEQy8QHlaTKxGchT/hC0SdlJlmL/5eRqffmWq2ep0/Romw6Ld39JjTR/ug==",
+ "dev": true,
+ "requires": {
+ "cacache": "^13.0.1",
+ "find-cache-dir": "^3.0.0",
+ "neo-async": "^2.5.0",
+ "schema-utils": "^2.6.1",
+ "serialize-javascript": "^2.1.2",
+ "webpack-sources": "^1.0.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz",
+ "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.0",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "make-dir": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
+ "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "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
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.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": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "concurrently": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.2.tgz",
+ "integrity": "sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "date-fns": "^1.30.1",
+ "lodash": "^4.17.15",
+ "read-pkg": "^4.0.1",
+ "rxjs": "^6.5.2",
+ "spawn-command": "^0.0.2-1",
+ "supports-color": "^4.5.0",
+ "tree-kill": "^1.2.1",
+ "yargs": "^12.0.5"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+ "dev": true,
+ "requires": {
+ "normalize-package-data": "^2.3.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^2.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ }
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "condense-newlines": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz",
+ "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-whitespace": "^0.3.0",
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "config-chain": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "config-master": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz",
+ "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=",
+ "dev": true,
+ "requires": {
+ "walk-back": "^2.0.1"
+ },
+ "dependencies": {
+ "walk-back": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz",
+ "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=",
+ "dev": true
+ }
+ }
+ },
+ "configstore": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz",
+ "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==",
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ }
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "consolidate": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
+ "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.1.1"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "convert-source-map": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+ "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "cookie": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+ "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "copy-webpack-plugin": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
+ "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.3",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^2.1.2",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "cacache": {
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+ "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ }
+ }
+ },
+ "core-js": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
+ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
+ "dev": true
+ },
+ "core-js-compat": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
+ "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.8.3",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz",
+ "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==",
+ "dev": true
+ },
+ "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="
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ }
+ },
+ "crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "requires": {
+ "buffer": "^5.1.0"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz",
+ "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==",
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz",
+ "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "cross-unzip": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/cross-unzip/-/cross-unzip-0.0.2.tgz",
+ "integrity": "sha1-UYO8R6CVWb78+YzEZXlkmZNZNy8=",
+ "dev": true
+ },
+ "cross-zip": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-3.0.0.tgz",
+ "integrity": "sha512-cm+l8PJ6WiSQmKZ/x8DGvUm2u/3FX2JFs1AFd18gdHaVhP5Lf4oE6Jrj2Jd05JYSioz5x+nIRVp0zBQuzuCRcQ==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^3.0.0"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
+ },
+ "css": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+ "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.5.2",
+ "urix": "^0.1.0"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
+ }
+ },
+ "css-loader": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
+ "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "cssesc": "^3.0.0",
+ "icss-utils": "^4.1.1",
+ "loader-utils": "^1.2.3",
+ "normalize-path": "^3.0.0",
+ "postcss": "^7.0.23",
+ "postcss-modules-extract-imports": "^2.0.0",
+ "postcss-modules-local-by-default": "^3.0.2",
+ "postcss-modules-scope": "^2.1.1",
+ "postcss-modules-values": "^3.0.0",
+ "postcss-value-parser": "^4.0.2",
+ "schema-utils": "^2.6.0"
+ }
+ },
+ "css-parse": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
+ "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
+ "dev": true,
+ "requires": {
+ "css": "^2.0.0"
+ }
+ },
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "css-what": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz",
+ "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
+ "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.7",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
+ }
+ },
+ "cssnano-preset-default": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
+ "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+ "dev": true,
+ "requires": {
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.2",
+ "postcss-unique-selectors": "^4.0.1"
+ }
+ },
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+ "dev": true
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+ "dev": true
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+ "dev": true
+ },
+ "csso": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz",
+ "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==",
+ "dev": true,
+ "requires": {
+ "css-tree": "1.0.0-alpha.37"
+ }
+ },
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
+ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
+ "dev": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.2.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+ },
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
+ "dev": true
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debuglog": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
+ "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "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=",
+ "dev": true
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
+ "deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+ "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "dev": true,
+ "requires": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "dev": true
+ },
+ "default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ }
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ }
+ }
+ },
+ "defer-to-connect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz",
+ "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ=="
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "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": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "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": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "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": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+ },
+ "des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
+ "detect-node": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+ "dev": true
+ },
+ "devtron": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/devtron/-/devtron-1.4.0.tgz",
+ "integrity": "sha1-tedIvW6Vu+cL/MaKrm/mlhGUQeE=",
+ "dev": true,
+ "requires": {
+ "accessibility-developer-tools": "^2.11.0",
+ "highlight.js": "^9.3.0",
+ "humanize-plus": "^1.8.1"
+ }
+ },
+ "dezalgo": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
+ "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
+ "dev": true,
+ "requires": {
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
+ "diff-sequences": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz",
+ "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "dev": true,
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "dmd": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/dmd/-/dmd-4.0.6.tgz",
+ "integrity": "sha512-7ZYAnFQ6jGm4SICArwqNPylJ83PaOdPTAkds3Z/s1ueFqSc5ilJ2F0b7uP+35W1PUbemH++gn5/VlC3KwEgiHQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.1",
+ "cache-point": "^1.0.0",
+ "common-sequence": "^2.0.0",
+ "file-set": "^3.0.0",
+ "handlebars": "^4.5.3",
+ "marked": "^0.7.0",
+ "object-get": "^2.1.0",
+ "reduce-flatten": "^3.0.0",
+ "reduce-unique": "^2.0.1",
+ "reduce-without": "^1.0.1",
+ "test-value": "^3.0.0",
+ "walk-back": "^4.0.0"
+ },
+ "dependencies": {
+ "reduce-flatten": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
+ "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
+ "dev": true
+ }
+ }
+ },
+ "dmg-builder": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.7.2.tgz",
+ "integrity": "sha512-xfYOwhHjOSOIqkk8A0h8zcaio/WyzrAWpMTu9hzV3Z5PI4tOG0Pq6a9Lh/mHr1r3bydif8R21qGvKU1Re9CpUg==",
+ "requires": {
+ "app-builder-lib": "~20.44.4",
+ "bluebird-lst": "^1.0.9",
+ "builder-util": "~10.1.2",
+ "fs-extra-p": "^8.0.2",
+ "iconv-lite": "^0.4.24",
+ "js-yaml": "^3.13.1",
+ "parse-color": "^1.0.0",
+ "sanitize-filename": "^1.6.1"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
+ "dom-event-types": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz",
+ "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
+ "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "dev": true,
+ "requires": {
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
+ "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ },
+ "dependencies": {
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ }
+ }
+ },
+ "dotenv": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
+ "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w=="
+ },
+ "dotenv-expand": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz",
+ "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU="
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "editorconfig": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
+ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.19.0",
+ "lru-cache": "^4.1.5",
+ "semver": "^5.6.0",
+ "sigmund": "^1.0.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ },
+ "ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="
+ },
+ "electron": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.0.tgz",
+ "integrity": "sha512-mnV43gKCrCUMHLmGws/DU/l8LhaxrFD53A4ofwtthdCqOZWGIdk1+eMphiVumXR5a3lC64XVvmXQ2k28i7F/zw==",
+ "dev": true,
+ "requires": {
+ "@electron/get": "^1.0.1",
+ "@types/node": "^12.0.12",
+ "extract-zip": "^1.0.3"
+ }
+ },
+ "electron-builder": {
+ "version": "20.44.4",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.44.4.tgz",
+ "integrity": "sha512-H8zzP01albkKh2Ec1zc0A7RGriUkHb5M99NJskaYtgKtGATTAGH+r9OIWVk5Hk9c1dLMVudbqEeaSlygMF2asw==",
+ "requires": {
+ "app-builder-lib": "20.44.4",
+ "bluebird-lst": "^1.0.9",
+ "builder-util": "10.1.2",
+ "builder-util-runtime": "8.2.5",
+ "chalk": "^2.4.2",
+ "dmg-builder": "6.7.2",
+ "fs-extra-p": "^8.0.2",
+ "is-ci": "^2.0.0",
+ "lazy-val": "^1.0.4",
+ "read-config-file": "3.2.2",
+ "sanitize-filename": "^1.6.1",
+ "update-notifier": "^3.0.0",
+ "yargs": "^13.2.4"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "electron-debug": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.0.1.tgz",
+ "integrity": "sha512-fo3mtDM4Bxxm3DW1I+XcJKfQlUlns4QGWyWGs8OrXK1bBZ2X9HeqYMntYBx78MYRcGY5S/ualuG4GhCnPlaZEA==",
+ "dev": true,
+ "requires": {
+ "electron-is-dev": "^1.1.0",
+ "electron-localshortcut": "^3.1.0"
+ }
+ },
+ "electron-devtools-installer": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz",
+ "integrity": "sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA==",
+ "dev": true,
+ "requires": {
+ "7zip": "0.0.6",
+ "cross-unzip": "0.0.2",
+ "rimraf": "^2.5.2",
+ "semver": "^5.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "electron-is-accelerator": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz",
+ "integrity": "sha1-UJ5RDCala1Xhf4Y6SwThEYRqsns=",
+ "dev": true
+ },
+ "electron-is-dev": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz",
+ "integrity": "sha512-Z1qA/1oHNowGtSBIcWk0pcLEqYT/j+13xUw/MYOrBUOL4X7VN0i0KCTf5SqyvMPmW5pSPKbo28wkxMxzZ20YnQ==",
+ "dev": true
+ },
+ "electron-localshortcut": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/electron-localshortcut/-/electron-localshortcut-3.2.1.tgz",
+ "integrity": "sha512-DWvhKv36GsdXKnaFFhEiK8kZZA+24/yFLgtTwJJHc7AFgDjNRIBJZ/jq62Y/dWv9E4ypYwrVWN2bVrCYw1uv7Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.0.1",
+ "electron-is-accelerator": "^0.1.0",
+ "keyboardevent-from-electron-accelerator": "^2.0.0",
+ "keyboardevents-areequal": "^0.2.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "electron-notarize": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.1.1.tgz",
+ "integrity": "sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "fs-extra": "^8.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "electron-osx-sign": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
+ "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
+ "requires": {
+ "bluebird": "^3.5.0",
+ "compare-version": "^0.1.2",
+ "debug": "^2.6.8",
+ "isbinaryfile": "^3.0.2",
+ "minimist": "^1.2.0",
+ "plist": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "isbinaryfile": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "requires": {
+ "buffer-alloc": "^1.2.0"
+ }
+ }
+ }
+ },
+ "electron-packager": {
+ "version": "14.2.1",
+ "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.2.1.tgz",
+ "integrity": "sha512-g6y3BVrAOz/iavKD+VMFbehrQcwCWuA3CZvVbmmbQuCfegGA1ytwWn0BNIDDrEdbuz31Fti7mnNHhb5L+3Wq9A==",
+ "dev": true,
+ "requires": {
+ "@electron/get": "^1.6.0",
+ "asar": "^2.0.1",
+ "cross-zip": "^3.0.0",
+ "debug": "^4.0.1",
+ "electron-notarize": "^0.2.0",
+ "electron-osx-sign": "^0.4.11",
+ "fs-extra": "^8.1.0",
+ "galactus": "^0.2.1",
+ "get-package-info": "^1.0.0",
+ "junk": "^3.1.0",
+ "parse-author": "^2.0.0",
+ "plist": "^3.0.0",
+ "rcedit": "^2.0.0",
+ "resolve": "^1.1.6",
+ "sanitize-filename": "^1.6.0",
+ "semver": "^6.0.0",
+ "yargs-parser": "^16.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "electron-notarize": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz",
+ "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "fs-extra": "^8.1.0"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "electron-publish": {
+ "version": "20.44.4",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.44.4.tgz",
+ "integrity": "sha512-50NzsKOnNqOpGJzPl04vMyitdguUvp15FWKWtu4KISsHfgdLMWGgxHGZwfMphc/vf364zXvPHsYQza3MASgaEQ==",
+ "requires": {
+ "bluebird-lst": "^1.0.9",
+ "builder-util": "~10.1.2",
+ "builder-util-runtime": "^8.2.5",
+ "chalk": "^2.4.2",
+ "fs-extra-p": "^8.0.2",
+ "lazy-val": "^1.0.4",
+ "mime": "^2.4.4"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "mime": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
+ }
+ }
+ },
+ "electron-rebuild": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.10.0.tgz",
+ "integrity": "sha512-n10i30GJg7JH8yZL3ZY3x80YtKmSYuuN8cl+3Feljm+sQDU4rUW1jbnYGu0eUHlK3kPOiNWPtW7srGcwZ9p1zQ==",
+ "dev": true,
+ "requires": {
+ "colors": "^1.3.3",
+ "debug": "^4.1.1",
+ "detect-libc": "^1.0.3",
+ "fs-extra": "^8.1.0",
+ "node-abi": "^2.11.0",
+ "node-gyp": "^6.0.1",
+ "ora": "^3.4.0",
+ "spawn-rx": "^3.0.0",
+ "yargs": "^14.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "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
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "yargs": {
+ "version": "14.2.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.2.tgz",
+ "integrity": "sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^15.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz",
+ "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.356",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.356.tgz",
+ "integrity": "sha512-qW4YHMfOFjvx0jkSK2vjaHoLjk1+uJIV5tqtLDo7P5y3/kM8KQP23YBU0Y5fCSW4jIbDvEzeHDaY4+4vEaqqOw==",
+ "dev": true
+ },
+ "elementtree": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz",
+ "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=",
+ "dev": true,
+ "requires": {
+ "sax": "1.1.4"
+ },
+ "dependencies": {
+ "sax": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz",
+ "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=",
+ "dev": true
+ }
+ }
+ },
+ "elliptic": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
+ "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
+ "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ }
+ },
+ "entities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
+ "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
+ "dev": true
+ },
+ "env-paths": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
+ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA=="
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz",
+ "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==",
+ "dev": true,
+ "requires": {
+ "stackframe": "^1.1.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.17.0-next.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz",
+ "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.0",
+ "string.prototype.trimright": "^2.1.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true,
+ "optional": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ },
+ "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="
+ },
+ "escodegen": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz",
+ "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==",
+ "dev": true,
+ "requires": {
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ },
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
+ "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.9.1",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^4.0.3",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^5.0.1",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.2.2",
+ "js-yaml": "^3.13.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^5.5.1",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "inquirer": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+ "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.12",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "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
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
+ "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz",
+ "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==",
+ "dev": true,
+ "requires": {
+ "loader-fs-cache": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "object-assign": "^4.0.1",
+ "object-hash": "^1.1.4",
+ "rimraf": "^2.6.1"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz",
+ "integrity": "sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "pkg-dir": "^2.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz",
+ "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.4.2",
+ "regexpp": "^2.0.1"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.19.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz",
+ "integrity": "sha512-x68131aKoCZlCae7rDXKSAQmbT5DQuManyXo2sK6fJJ0aK5CWAkv6A6HJZGgqC8IhjQxYPgo6/IY4Oz8AFsbBw==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "array.prototype.flat": "^1.2.1",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.1",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.12.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz",
+ "integrity": "sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^1.3.1",
+ "eslint-utils": "^1.3.1",
+ "ignore": "^5.0.2",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
+ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
+ "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
+ "dev": true
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz",
+ "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==",
+ "dev": true
+ },
+ "eslint-plugin-vue": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz",
+ "integrity": "sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw==",
+ "dev": true,
+ "requires": {
+ "vue-eslint-parser": "^5.0.0"
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
+ "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+ "dev": true
+ },
+ "espree": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.7",
+ "acorn-jsx": "^5.0.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+ },
+ "eventemitter3": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
+ "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
+ "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
+ "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
+ "dev": true,
+ "requires": {
+ "original": "^1.0.0"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "exec-sh": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
+ "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==",
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "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": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expect": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz",
+ "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "ansi-styles": "^3.2.0",
+ "jest-get-type": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-regex-util": "^24.9.0"
+ }
+ },
+ "express": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+ "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+ "requires": {
+ "accepts": "~1.3.7",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.19.0",
+ "content-disposition": "0.5.3",
+ "content-type": "~1.0.4",
+ "cookie": "0.4.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.1.2",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.5",
+ "qs": "6.7.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.1.2",
+ "send": "0.17.1",
+ "serve-static": "1.14.1",
+ "setprototypeof": "1.1.1",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "express-session": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz",
+ "integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==",
+ "requires": {
+ "cookie": "0.4.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~2.0.0",
+ "on-headers": "~1.0.2",
+ "parseurl": "~1.3.3",
+ "safe-buffer": "5.2.0",
+ "uid-safe": "~2.1.5"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+ },
+ "safe-buffer": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "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": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "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": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "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": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extract-from-css": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz",
+ "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=",
+ "dev": true,
+ "requires": {
+ "css": "^2.1.0"
+ }
+ },
+ "extract-zip": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
+ "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.6.2",
+ "debug": "^2.6.9",
+ "mkdirp": "^0.5.4",
+ "yauzl": "^2.10.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
+ "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-glob": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz",
+ "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.0",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.2"
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fast-redact": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.0.0.tgz",
+ "integrity": "sha512-zxpkULI9W9MNTK2sJ3BpPQrTEXFNESd2X6O1tXMFpK/XM0G5c5Rll2EVYZH2TqI3xRGK/VaJ+eEOt7pnENJpeA=="
+ },
+ "fast-safe-stringify": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
+ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
+ },
+ "fastq": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
+ "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.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=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fb-watchman": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
+ "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==",
+ "dev": true,
+ "requires": {
+ "bser": "2.1.1"
+ }
+ },
+ "fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "dev": true,
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-loader": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-5.1.0.tgz",
+ "integrity": "sha512-u/VkLGskw3Ue59nyOwUwXI/6nuBCo7KBkniB/l7ICwr/7cPNGsL1WCXUp3GB0qgOOKU1TiP49bv4DZF/LJqprg==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.4.0",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ }
+ }
+ }
+ },
+ "file-set": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-3.0.0.tgz",
+ "integrity": "sha512-B/SdeSIeRv7VlOgIjtH3dkxMI+tEy5m+OeCXfAUsirBoVoY+bGtsmvmmTFPm/G23TBY4RiTtjpcgePCfwXRjqA==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.0",
+ "glob": "^7.1.5"
+ }
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "find-babel-config": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz",
+ "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==",
+ "dev": true,
+ "requires": {
+ "json5": "^0.5.1",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-replace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
+ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "^3.0.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true
+ }
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "findup": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz",
+ "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=",
+ "dev": true,
+ "requires": {
+ "colors": "~0.6.0-1",
+ "commander": "~2.1.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz",
+ "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=",
+ "dev": true
+ }
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatstr": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz",
+ "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw=="
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "flora-colossus": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz",
+ "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "fs-extra": "^7.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "requires": {
+ "debug": "=3.1.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+ },
+ "friendly-errors-webpack-plugin": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz",
+ "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "error-stack-parser": "^2.0.0",
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "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"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-extra-p": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-8.1.0.tgz",
+ "integrity": "sha512-sCLpU5kk5CvrWZvFM9dUlqPgHrE02AEt6XYzF7kDscr5COc7DHfhNfODTXt0bkVNmt5DkvU2uJSYjorxY3bRKA==",
+ "requires": {
+ "bluebird-lst": "^1.0.9",
+ "fs-extra": "^8.1.0"
+ }
+ },
+ "fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "fs-then-native": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz",
+ "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=",
+ "dev": true
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
+ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+ "dev": true,
+ "optional": true
+ },
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "galactus": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz",
+ "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=",
+ "dev": true,
+ "requires": {
+ "debug": "^3.1.0",
+ "flora-colossus": "^1.0.0",
+ "fs-extra": "^4.0.0"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ }
+ }
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "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"
+ },
+ "dependencies": {
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "dev": true
+ },
+ "get-own-enumerable-property-symbols": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+ "dev": true
+ },
+ "get-package-info": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz",
+ "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.1.1",
+ "debug": "^2.2.0",
+ "lodash.get": "^4.0.0",
+ "read-pkg-up": "^2.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "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"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ }
+ }
+ },
+ "global-agent": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.7.tgz",
+ "integrity": "sha512-ooK7eqGYZku+LgnbfH/Iv0RJ74XfhrBZDlke1QSzcBt0bw1PmJcnRADPAQuFE+R45pKKDTynAr25SBasY2kvow==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "boolean": "^3.0.0",
+ "core-js": "^3.4.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^2.0.0",
+ "roarr": "^2.14.5",
+ "semver": "^6.3.0",
+ "serialize-error": "^5.0.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.5.0.tgz",
+ "integrity": "sha512-Ifh3kj78gzQ7NAoJXeTu+XwzDld0QRIwjBLRqAMhuLhP3d2Av5wmgE9ycfnvK6NAEjTkQ1sDPeoEZAWO3Hx1Uw==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "global-tunnel-ng": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+ "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "encodeurl": "^1.0.2",
+ "lodash": "^4.17.10",
+ "npm-conf": "^1.1.3",
+ "tunnel": "^0.0.6"
+ }
+ },
+ "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
+ },
+ "globalthis": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz",
+ "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "globule": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz",
+ "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==",
+ "dev": true,
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.12",
+ "minimatch": "~3.0.2"
+ }
+ },
+ "got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "requires": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
+ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
+ },
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+ "dev": true
+ },
+ "gzip-size": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
+ "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+ "dev": true,
+ "requires": {
+ "duplexer": "^0.1.1",
+ "pify": "^4.0.1"
+ }
+ },
+ "handle-thing": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+ "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
+ "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==",
+ "dev": true,
+ "requires": {
+ "neo-async": "^2.6.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "requires": {
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw=="
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "9.18.1",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz",
+ "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+ "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg=="
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+ "dev": true
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+ "dev": true
+ },
+ "html-comment-regex": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
+ "dev": true
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+ "dev": true
+ },
+ "html-escaper": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz",
+ "integrity": "sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
+ "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "dev": true,
+ "requires": {
+ "camel-case": "^3.0.0",
+ "clean-css": "^4.2.1",
+ "commander": "^2.19.0",
+ "he": "^1.2.0",
+ "param-case": "^2.1.1",
+ "relateurl": "^0.2.7",
+ "uglify-js": "^3.5.1"
+ }
+ },
+ "html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+ "dev": true,
+ "requires": {
+ "html-minifier": "^3.2.3",
+ "loader-utils": "^0.2.16",
+ "lodash": "^4.17.3",
+ "pretty-error": "^2.0.2",
+ "tapable": "^1.0.0",
+ "toposort": "^1.0.0",
+ "util.promisify": "1.0.0"
+ },
+ "dependencies": {
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "dev": true,
+ "requires": {
+ "camel-case": "3.0.x",
+ "clean-css": "4.2.x",
+ "commander": "2.17.x",
+ "he": "1.2.x",
+ "param-case": "2.1.x",
+ "relateurl": "0.2.x",
+ "uglify-js": "3.4.x"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "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
+ },
+ "uglify-js": {
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
+ "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.19.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "http-cache-semantics": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
+ "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew=="
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
+ }
+ },
+ "http-parser-js": {
+ "version": "0.4.10",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
+ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
+ "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+ "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+ "dev": true,
+ "requires": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.11",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "humanize-plus": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
+ "integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+ "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14"
+ }
+ },
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "ignore-walk": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+ "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "dev": true,
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM="
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+ },
+ "in-publish": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+ "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "inquirer": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz",
+ "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.5.3",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dev": true,
+ "requires": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ }
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "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=",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arguments": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+ "dev": true,
+ "requires": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
+ "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ },
+ "dependencies": {
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ }
+ }
+ },
+ "is-invalid-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
+ "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz",
+ "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA=="
+ },
+ "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
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+ },
+ "is-svg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
+ "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+ "dev": true,
+ "requires": {
+ "html-comment-regex": "^1.1.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-valid-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
+ "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=",
+ "dev": true,
+ "requires": {
+ "is-invalid-path": "^0.1.0"
+ }
+ },
+ "is-whitespace": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz",
+ "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz",
+ "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==",
+ "dev": true
+ },
+ "is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isbinaryfile": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.3.tgz",
+ "integrity": "sha512-GQ9Gjhp3AsEbo8/L/pA+MYl/c4hRm5O/+uCkF4LMx1a556Wh4/d75H13qu9LldmhU4yKnlfNKBmEcCaze3b2Gw=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
+ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "istanbul-lib-coverage": "^2.0.5",
+ "semver": "^6.0.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
+ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
+ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "rimraf": "^2.6.3",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz",
+ "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==",
+ "dev": true,
+ "requires": {
+ "html-escaper": "^2.0.0"
+ }
+ },
+ "javascript-stringify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz",
+ "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==",
+ "dev": true
+ },
+ "jest": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz",
+ "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==",
+ "dev": true,
+ "requires": {
+ "import-local": "^2.0.0",
+ "jest-cli": "^24.9.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "jest-cli": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz",
+ "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==",
+ "dev": true,
+ "requires": {
+ "@jest/core": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "import-local": "^2.0.0",
+ "is-ci": "^2.0.0",
+ "jest-config": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "prompts": "^2.0.1",
+ "realpath-native": "^1.1.0",
+ "yargs": "^13.3.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "jest-changed-files": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz",
+ "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "execa": "^1.0.0",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-config": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz",
+ "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/test-sequencer": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "babel-jest": "^24.9.0",
+ "chalk": "^2.0.1",
+ "glob": "^7.1.1",
+ "jest-environment-jsdom": "^24.9.0",
+ "jest-environment-node": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "jest-jasmine2": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "pretty-format": "^24.9.0",
+ "realpath-native": "^1.1.0"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "jest-diff": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz",
+ "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "diff-sequences": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-docblock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz",
+ "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==",
+ "dev": true,
+ "requires": {
+ "detect-newline": "^2.1.0"
+ }
+ },
+ "jest-each": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz",
+ "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz",
+ "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jsdom": "^11.5.1"
+ }
+ },
+ "jest-environment-node": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz",
+ "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-util": "^24.9.0"
+ }
+ },
+ "jest-get-type": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz",
+ "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==",
+ "dev": true
+ },
+ "jest-haste-map": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz",
+ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.9.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+ "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1",
+ "node-pre-gyp": "*"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "3.2.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": 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.6",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.9.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.14.0",
+ "bundled": true,
+ "dev": 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.4.2"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": 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.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.13",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "jest-jasmine2": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz",
+ "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "co": "^4.6.0",
+ "expect": "^24.9.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "pretty-format": "^24.9.0",
+ "throat": "^4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-leak-detector": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz",
+ "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==",
+ "dev": true,
+ "requires": {
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz",
+ "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "jest-diff": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "pretty-format": "^24.9.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-message-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz",
+ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "jest-mock": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz",
+ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0"
+ }
+ },
+ "jest-pnp-resolver": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
+ "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
+ "dev": true
+ },
+ "jest-regex-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz",
+ "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz",
+ "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "browser-resolve": "^1.11.3",
+ "chalk": "^2.0.1",
+ "jest-pnp-resolver": "^1.2.1",
+ "realpath-native": "^1.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz",
+ "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-snapshot": "^24.9.0"
+ }
+ },
+ "jest-runner": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz",
+ "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.4.2",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.9.0",
+ "jest-docblock": "^24.3.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-jasmine2": "^24.9.0",
+ "jest-leak-detector": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "jest-runtime": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-worker": "^24.6.0",
+ "source-map-support": "^0.5.6",
+ "throat": "^4.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-runtime": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz",
+ "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.9.0",
+ "@jest/source-map": "^24.3.0",
+ "@jest/transform": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/yargs": "^13.0.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.9.0",
+ "jest-haste-map": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-mock": "^24.9.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.9.0",
+ "jest-snapshot": "^24.9.0",
+ "jest-util": "^24.9.0",
+ "jest-validate": "^24.9.0",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "strip-bom": "^3.0.0",
+ "yargs": "^13.3.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "jest-serializer": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz",
+ "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==",
+ "dev": true
+ },
+ "jest-serializer-vue": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz",
+ "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=",
+ "dev": true,
+ "requires": {
+ "pretty": "2.0.0"
+ }
+ },
+ "jest-snapshot": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz",
+ "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0",
+ "@jest/types": "^24.9.0",
+ "chalk": "^2.0.1",
+ "expect": "^24.9.0",
+ "jest-diff": "^24.9.0",
+ "jest-get-type": "^24.9.0",
+ "jest-matcher-utils": "^24.9.0",
+ "jest-message-util": "^24.9.0",
+ "jest-resolve": "^24.9.0",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^24.9.0",
+ "semver": "^6.2.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-transform-stub": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz",
+ "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==",
+ "dev": true
+ },
+ "jest-util": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz",
+ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.9.0",
+ "@jest/fake-timers": "^24.9.0",
+ "@jest/source-map": "^24.9.0",
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "jest-validate": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz",
+ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "camelcase": "^5.3.1",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.9.0",
+ "leven": "^3.1.0",
+ "pretty-format": "^24.9.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-watcher": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz",
+ "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.9.0",
+ "@jest/types": "^24.9.0",
+ "@types/yargs": "^13.0.0",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "jest-util": "^24.9.0",
+ "string-length": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "jest-worker": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
+ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "js-base64": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz",
+ "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==",
+ "dev": true
+ },
+ "js-beautify": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz",
+ "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==",
+ "dev": true,
+ "requires": {
+ "config-chain": "^1.1.12",
+ "editorconfig": "^0.15.3",
+ "glob": "^7.1.3",
+ "mkdirp": "~0.5.1",
+ "nopt": "~4.0.1"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "js2xmlparser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz",
+ "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==",
+ "dev": true,
+ "requires": {
+ "xmlcreate": "^2.0.3"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "jsdoc": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.3.tgz",
+ "integrity": "sha512-Yf1ZKA3r9nvtMWHO1kEuMZTlHOF8uoQ0vyo5eH7SQy5YeIiHM+B0DgKnn+X6y6KDYZcF7G2SPkKF+JORCXWE/A==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.4.4",
+ "bluebird": "^3.5.4",
+ "catharsis": "^0.8.11",
+ "escape-string-regexp": "^2.0.0",
+ "js2xmlparser": "^4.0.0",
+ "klaw": "^3.0.0",
+ "markdown-it": "^8.4.2",
+ "markdown-it-anchor": "^5.0.2",
+ "marked": "^0.7.0",
+ "mkdirp": "^0.5.1",
+ "requizzle": "^0.2.3",
+ "strip-json-comments": "^3.0.1",
+ "taffydb": "2.6.2",
+ "underscore": "~1.9.1"
+ },
+ "dependencies": {
+ "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
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ }
+ }
+ },
+ "jsdoc-api": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-5.0.4.tgz",
+ "integrity": "sha512-1KMwLnfo0FyhF06TQKzqIm8BiY1yoMIGICxRdJHUjzskaHMzHMmpLlmNFgzoa4pAC8t1CDPK5jWuQTvv1pBsEQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.0",
+ "cache-point": "^1.0.0",
+ "collect-all": "^1.0.3",
+ "file-set": "^2.0.1",
+ "fs-then-native": "^2.0.0",
+ "jsdoc": "^3.6.3",
+ "object-to-spawn-args": "^1.1.1",
+ "temp-path": "^1.0.0",
+ "walk-back": "^3.0.1"
+ },
+ "dependencies": {
+ "file-set": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-2.0.1.tgz",
+ "integrity": "sha512-XgOUUpgR6FbbfYcniLw0qm1Am7PnNYIAkd+eXxRt42LiYhjaso0WiuQ+VmrNdtwotyM+cLCfZ56AZrySP3QnKA==",
+ "dev": true,
+ "requires": {
+ "array-back": "^2.0.0",
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.1"
+ }
+ }
+ }
+ },
+ "walk-back": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-3.0.1.tgz",
+ "integrity": "sha512-umiNB2qLO731Sxbp6cfZ9pwURJzTnftxE4Gc7hq8n/ehkuXC//s9F65IEIJA2ZytQZ1ZOsm/Fju4IWx0bivkUQ==",
+ "dev": true
+ }
+ }
+ },
+ "jsdoc-parse": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-4.0.1.tgz",
+ "integrity": "sha512-qIObw8yqYZjrP2qxWROB5eLQFLTUX2jRGLhW9hjo2CC2fQVlskidCIzjCoctwsDvauBp2a/lR31jkSleczSo8Q==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.0",
+ "lodash.omit": "^4.5.0",
+ "lodash.pick": "^4.4.0",
+ "reduce-extract": "^1.0.0",
+ "sort-array": "^2.0.0",
+ "test-value": "^3.0.0"
+ }
+ },
+ "jsdoc-to-markdown": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-5.0.3.tgz",
+ "integrity": "sha512-tQv5tBV0fTYidRQtE60lJKxE98mmuLcYuITFDKQiDPE9hGccpeEGUNFcVkInq1vigyuPnZmt79bQ8wv2GKjY0Q==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.1",
+ "command-line-tool": "^0.8.0",
+ "config-master": "^3.1.0",
+ "dmd": "^4.0.5",
+ "jsdoc-api": "^5.0.4",
+ "jsdoc-parse": "^4.0.1",
+ "walk-back": "^4.0.0"
+ }
+ },
+ "jsdom": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
+ "acorn-globals": "^4.1.0",
+ "array-equal": "^1.0.0",
+ "cssom": ">= 0.3.2 < 0.4.0",
+ "cssstyle": "^1.0.0",
+ "data-urls": "^1.0.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
+ "html-encoding-sniffer": "^1.0.2",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
+ "parse5": "4.0.0",
+ "pn": "^1.1.0",
+ "request": "^2.87.0",
+ "request-promise-native": "^1.0.5",
+ "sax": "^1.2.4",
+ "symbol-tree": "^3.2.2",
+ "tough-cookie": "^2.3.4",
+ "w3c-hr-time": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.3",
+ "whatwg-mimetype": "^2.1.0",
+ "whatwg-url": "^6.4.1",
+ "ws": "^5.2.0",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+ "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+ "dev": true
+ },
+ "ws": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "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=="
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "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
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "json3": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "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"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "junk": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz",
+ "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==",
+ "dev": true
+ },
+ "keyboardevent-from-electron-accelerator": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz",
+ "integrity": "sha512-iQcmNA0M4ETMNi0kG/q0h/43wZk7rMeKYrXP7sqKIJbHkTU8Koowgzv+ieR/vWJbOwxx5nDC3UnudZ0aLSu4VA==",
+ "dev": true
+ },
+ "keyboardevents-areequal": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz",
+ "integrity": "sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==",
+ "dev": true
+ },
+ "keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "requires": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "dev": true
+ },
+ "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
+ },
+ "klaw": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
+ "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true
+ },
+ "last-call-webpack-plugin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
+ "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.5",
+ "webpack-sources": "^1.1.0"
+ }
+ },
+ "latest-version": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+ "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+ "requires": {
+ "package-json": "^6.3.0"
+ }
+ },
+ "launch-editor": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz",
+ "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "shell-quote": "^1.6.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "launch-editor-middleware": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz",
+ "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==",
+ "dev": true,
+ "requires": {
+ "launch-editor": "^2.2.1"
+ }
+ },
+ "lazy-val": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
+ "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q=="
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "left-pad": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
+ "dev": true
+ },
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true
+ },
+ "levenary": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+ "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
+ "dev": true,
+ "requires": {
+ "leven": "^3.1.0"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "license-checker": {
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
+ "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "debug": "^3.1.0",
+ "mkdirp": "^0.5.1",
+ "nopt": "^4.0.1",
+ "read-installed": "~4.0.3",
+ "semver": "^5.5.0",
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-satisfies": "^4.0.0",
+ "treeify": "^1.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "linkify-it": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
+ "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
+ "dev": true,
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "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"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "loader-fs-cache": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz",
+ "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^0.1.1",
+ "mkdirp": "0.5.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+ "dev": true
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "dev": true
+ },
+ "lodash.findkey": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.findkey/-/lodash.findkey-4.6.0.tgz",
+ "integrity": "sha1-gwWOkDtRy7dZ0JzPVG3qPqOcRxg=",
+ "dev": true
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "dev": true
+ },
+ "lodash.omit": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=",
+ "dev": true
+ },
+ "lodash.padend": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
+ "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=",
+ "dev": true
+ },
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
+ },
+ "lodash.snakecase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
+ "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
+ "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.templatesettings": "^4.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
+ "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0"
+ }
+ },
+ "lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "log-update": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.3.0.tgz",
+ "integrity": "sha512-YSKm5n+YjZoGZT5lfmOqasVH1fIH9xQA9A81Y48nZ99PxAP62vdCCtua+Gcu6oTn0nqtZd/LwRV+Vflo53ZDWA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.2.0",
+ "cli-cursor": "^2.1.0",
+ "wrap-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "loglevel": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz",
+ "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
+ },
+ "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,
+ "requires": {
+ "yallist": "^3.0.2"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "dev": true,
+ "requires": {
+ "tmpl": "1.0.x"
+ }
+ },
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "markdown-it": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
+ "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "entities": "~1.1.1",
+ "linkify-it": "^2.0.0",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ }
+ }
+ },
+ "markdown-it-anchor": {
+ "version": "5.2.5",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.2.5.tgz",
+ "integrity": "sha512-xLIjLQmtym3QpoY9llBgApknl7pxAcN3WDRc2d3rwpl+/YvDZHPmKscGs+L6E05xf2KrCXPBvosWt7MZukwSpQ==",
+ "dev": true
+ },
+ "marked": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
+ "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==",
+ "dev": true
+ },
+ "matcher": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz",
+ "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "dependencies": {
+ "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,
+ "optional": true
+ }
+ }
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+ "dev": true
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "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
+ },
+ "merge2": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz",
+ "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.42.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
+ "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
+ },
+ "mime-types": {
+ "version": "2.1.25",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
+ "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
+ "requires": {
+ "mime-db": "1.42.0"
+ }
+ },
+ "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
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
+ },
+ "mini-css-extract-plugin": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
+ "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "normalize-url": "1.9.1",
+ "schema-utils": "^1.0.0",
+ "webpack-sources": "^1.1.0"
+ },
+ "dependencies": {
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "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"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "minipass": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz",
+ "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "minipass-collect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "minipass-flush": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "minipass-pipeline": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz",
+ "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+ "requires": {
+ "minipass": "^2.9.0"
+ },
+ "dependencies": {
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "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==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "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"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
+ }
+ },
+ "mkdirp2": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.4.tgz",
+ "integrity": "sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==",
+ "dev": true
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "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"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "needle": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.2.tgz",
+ "integrity": "sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w==",
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
+ },
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node-abi": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.15.0.tgz",
+ "integrity": "sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg==",
+ "requires": {
+ "semver": "^5.4.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "node-cache": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz",
+ "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==",
+ "dev": true,
+ "requires": {
+ "clone": "2.x",
+ "lodash": "^4.17.15"
+ }
+ },
+ "node-forge": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+ "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
+ "dev": true
+ },
+ "node-gyp": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-6.1.0.tgz",
+ "integrity": "sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw==",
+ "requires": {
+ "env-paths": "^2.2.0",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.2",
+ "mkdirp": "^0.5.1",
+ "nopt": "^4.0.1",
+ "npmlog": "^4.1.2",
+ "request": "^2.88.0",
+ "rimraf": "^2.6.3",
+ "semver": "^5.7.1",
+ "tar": "^4.4.12",
+ "which": "^1.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "node-loader": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-0.6.0.tgz",
+ "integrity": "sha1-x5fvUQle1YWZArFX9jhPY2HgWug=",
+ "dev": true
+ },
+ "node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "dev": true
+ },
+ "node-notifier": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz",
+ "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==",
+ "dev": true,
+ "requires": {
+ "growly": "^1.3.0",
+ "is-wsl": "^1.1.0",
+ "semver": "^5.5.0",
+ "shellwords": "^0.1.1",
+ "which": "^1.3.0"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz",
+ "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==",
+ "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.4.2"
+ },
+ "dependencies": {
+ "fs-minipass": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "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"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "tar": {
+ "version": "4.4.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+ },
+ "node-releases": {
+ "version": "1.1.49",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz",
+ "integrity": "sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.3.0"
+ }
+ },
+ "node-sass": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz",
+ "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",
+ "dev": true,
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "^2.2.4",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "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"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+ "dev": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "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
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true
+ },
+ "npm-bundled": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
+ "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-conf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "config-chain": "^1.1.11",
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
+ },
+ "npm-packlist": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+ "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1",
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "requires": {
+ "path-key": "^2.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+ }
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "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="
+ },
+ "nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-get": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz",
+ "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==",
+ "dev": true
+ },
+ "object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz",
+ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
+ "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-to-spawn-args": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-1.1.1.tgz",
+ "integrity": "sha1-d9qIJ/Bz0BHJ4bFz+JV4FHAkZ4U=",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
+ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
+ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "open": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.0.2.tgz",
+ "integrity": "sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ }
+ },
+ "opener": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
+ "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ }
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ }
+ }
+ },
+ "optimize-css-assets-webpack-plugin": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz",
+ "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==",
+ "dev": true,
+ "requires": {
+ "cssnano": "^4.1.10",
+ "last-call-webpack-plugin": "^3.0.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "original": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+ "dev": true,
+ "requires": {
+ "url-parse": "^1.4.3"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "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": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "ouch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ouch/-/ouch-2.0.0.tgz",
+ "integrity": "sha512-kaAZtzpV3iSDdGHQKz7/dRVWd7nXNO1OUNHNtZIW9ryoBvb6y8QtYfpWdcBUFgBzMbMYVA/PGPeoeJU95VHK7Q==",
+ "dev": true,
+ "requires": {
+ "@positron/stack-trace": "1.0.0",
+ "ejs": "^2.3.1",
+ "escape-html": "^1.0.1",
+ "lodash": "^4.17.10"
+ }
+ },
+ "p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-each-series": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz",
+ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=",
+ "dev": true,
+ "requires": {
+ "p-reduce": "^1.0.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+ },
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+ "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "requires": {
+ "aggregate-error": "^3.0.0"
+ }
+ },
+ "p-reduce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
+ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
+ "dev": true
+ },
+ "p-retry": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+ "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+ "dev": true,
+ "requires": {
+ "retry": "^0.12.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "package-json": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+ "requires": {
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ }
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "dev": true,
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
+ "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-author": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz",
+ "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=",
+ "dev": true,
+ "requires": {
+ "author-regex": "^1.0.0"
+ }
+ },
+ "parse-color": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
+ "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
+ "requires": {
+ "color-convert": "~0.5.0"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
+ "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
+ }
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+ "dev": true
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ },
+ "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-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
+ },
+ "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
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "pathval": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
+ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "picomatch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
+ "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pino": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-5.16.0.tgz",
+ "integrity": "sha512-k9cDzHd9S/oYSQ9B9g9+7RXkfsZX78sQXERC8x4p2XArECZXULx9nqNwZvJHsLj779wPCt+ybN+dG8jFR70p6Q==",
+ "requires": {
+ "fast-redact": "^2.0.0",
+ "fast-safe-stringify": "^2.0.7",
+ "flatstr": "^1.0.12",
+ "pino-std-serializers": "^2.4.2",
+ "quick-format-unescaped": "^3.0.3",
+ "sonic-boom": "^0.7.5"
+ }
+ },
+ "pino-std-serializers": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.4.2.tgz",
+ "integrity": "sha512-WaL504dO8eGs+vrK+j4BuQQq6GLKeCCcHaMB2ItygzVURcL1CycwNEUHTD/lHFHs/NL5qAz2UKrjYWXKSf4aMQ=="
+ },
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
+ "dev": true,
+ "requires": {
+ "node-modules-regexp": "^1.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "plist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
+ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+ "requires": {
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^9.0.7",
+ "xmldom": "0.1.x"
+ }
+ },
+ "pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "dev": true
+ },
+ "portfinder": {
+ "version": "1.0.25",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz",
+ "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.2",
+ "debug": "^3.1.1",
+ "mkdirp": "^0.5.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "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=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.27",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
+ "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-calc": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz",
+ "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "postcss-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-load-config": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz",
+ "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "import-cwd": "^2.0.0"
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+ "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "postcss": "^7.0.0",
+ "postcss-load-config": "^2.0.0",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
+ "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.1.1",
+ "postcss": "^7.0.16",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
+ "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-rtl": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/postcss-rtl/-/postcss-rtl-1.5.0.tgz",
+ "integrity": "sha512-7uQeaMBhAlnu7xgytvTocojFKp08W4FND/xE/ajj/J6ABOGhdDF1mLGzaRrC5/u/Sr71BEUi13xgvs2j8U16AA==",
+ "dev": true,
+ "requires": {
+ "rtlcss": "^2.4.0"
+ }
+ },
+ "postcss-safe-parser": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz",
+ "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.26"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
+ "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
+ "postcss-svgo": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
+ "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+ "dev": true,
+ "requires": {
+ "is-svg": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.0.0"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
+ "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+ "dev": true
+ },
+ "pretty": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz",
+ "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=",
+ "dev": true,
+ "requires": {
+ "condense-newlines": "^0.2.1",
+ "extend-shallow": "^2.0.1",
+ "js-beautify": "^1.6.12"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "pretty-bytes": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz",
+ "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==",
+ "dev": true
+ },
+ "pretty-error": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+ "dev": true,
+ "requires": {
+ "renderkid": "^2.0.1",
+ "utila": "~0.4"
+ }
+ },
+ "pretty-format": {
+ "version": "24.9.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz",
+ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.9.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz",
+ "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==",
+ "dev": true,
+ "requires": {
+ "asap": "~2.0.6"
+ }
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prompts": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz",
+ "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==",
+ "dev": true,
+ "requires": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.3"
+ }
+ },
+ "properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/properties/-/properties-1.2.1.tgz",
+ "integrity": "sha1-Dul6f8AgsaKlW4ZZ7aSqjYaQlL0="
+ },
+ "proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "dev": true
+ },
+ "proxy-addr": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+ "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+ "requires": {
+ "forwarded": "~0.1.2",
+ "ipaddr.js": "1.9.1"
+ },
+ "dependencies": {
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+ }
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "psl": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz",
+ "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA=="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ },
+ "quasar": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/quasar/-/quasar-1.9.3.tgz",
+ "integrity": "sha512-wmxeaNYTGXBFDReJT1MkOR29thlDrNwrnMjDUXLeOwfmhZBqRl2gDCn1/7v6Ri3fvM1pjF7yUnJkhlcGrHFgmw=="
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "querystringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
+ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
+ "dev": true
+ },
+ "quick-format-unescaped": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz",
+ "integrity": "sha512-dy1yjycmn9blucmJLXOfZDx1ikZJUi6E8bBZLnhPG5gBrVhHXx2xVyqqgKBubVNEXmx51dBACMHpoMQK/N/AXQ=="
+ },
+ "random-bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+ "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "raw-body": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+ "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "requires": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "rcedit": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.1.0.tgz",
+ "integrity": "sha512-Nrd/65LzMjFmKpS9d2fqIxVYdW0M8ovsN0PgZhCrPMQss2yznkp6/zjEQ1a9DzzoGv2uuN3yDJAeHybOD5ZNKA==",
+ "dev": true
+ },
+ "react-is": {
+ "version": "16.12.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
+ "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==",
+ "dev": true
+ },
+ "read-config-file": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.2.tgz",
+ "integrity": "sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg==",
+ "requires": {
+ "ajv": "^6.9.2",
+ "ajv-keywords": "^3.4.0",
+ "bluebird-lst": "^1.0.7",
+ "dotenv": "^6.2.0",
+ "dotenv-expand": "^4.2.0",
+ "fs-extra-p": "^7.0.1",
+ "js-yaml": "^3.12.1",
+ "json5": "^2.1.0",
+ "lazy-val": "^1.0.4"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-extra-p": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
+ "integrity": "sha512-yhd2OV0HnHt2oitlp+X9hl2ReX4X/7kQeL7/72qzPHTZj5eUPGzAKOvEglU02Fa1OeG2rSy/aKB4WGVaLiF8tw==",
+ "requires": {
+ "bluebird-lst": "^1.0.7",
+ "fs-extra": "^7.0.1"
+ }
+ }
+ }
+ },
+ "read-installed": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
+ "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
+ "dev": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "graceful-fs": "^4.1.2",
+ "read-package-json": "^2.0.0",
+ "readdir-scoped-modules": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "slide": "~1.1.3",
+ "util-extend": "^1.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "read-package-json": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz",
+ "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.1.2",
+ "json-parse-better-errors": "^1.0.1",
+ "normalize-package-data": "^2.0.0",
+ "npm-normalize-package-bin": "^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=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "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"
+ }
+ },
+ "readdir-scoped-modules": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
+ "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
+ "dev": true,
+ "requires": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "readdirp": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
+ "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.0.7"
+ }
+ },
+ "realpath-native": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
+ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
+ "dev": true,
+ "requires": {
+ "util.promisify": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "dependencies": {
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ }
+ }
+ },
+ "reduce-extract": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
+ "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=",
+ "dev": true,
+ "requires": {
+ "test-value": "^1.0.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.0"
+ }
+ },
+ "test-value": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz",
+ "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=",
+ "dev": true,
+ "requires": {
+ "array-back": "^1.0.2",
+ "typical": "^2.4.2"
+ }
+ }
+ }
+ },
+ "reduce-flatten": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "dev": true
+ },
+ "reduce-unique": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz",
+ "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==",
+ "dev": true
+ },
+ "reduce-without": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz",
+ "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=",
+ "dev": true,
+ "requires": {
+ "test-value": "^2.0.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.0"
+ }
+ },
+ "test-value": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
+ "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
+ "dev": true,
+ "requires": {
+ "array-back": "^1.0.3",
+ "typical": "^2.6.0"
+ }
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+ "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+ "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+ "dev": true,
+ "requires": {
+ "private": "^0.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
+ "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz",
+ "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.1.0",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "register-service-worker": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.6.2.tgz",
+ "integrity": "sha512-I8L87fX2TK29LDx+wgyOUh2BJ3rDIRC1FtRZEHeP3rivzDv6p1DDZLGGtPucqjEkm45+2crtFIFssEWv56+9Wg==",
+ "dev": true
+ },
+ "registry-auth-token": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz",
+ "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==",
+ "requires": {
+ "rc": "^1.2.8"
+ }
+ },
+ "registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "requires": {
+ "rc": "^1.2.8"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
+ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz",
+ "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
+ "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=",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
+ "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
+ "dev": true,
+ "requires": {
+ "css-select": "^1.1.0",
+ "dom-converter": "^0.2",
+ "htmlparser2": "^3.3.0",
+ "strip-ansi": "^3.0.0",
+ "utila": "^0.4.0"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ }
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
+ "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
+ "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.3",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ }
+ },
+ "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": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "requizzle": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
+ "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "reselect": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz",
+ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz",
+ "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==",
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "requires": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+ "dev": true
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "roarr": {
+ "version": "2.14.6",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.14.6.tgz",
+ "integrity": "sha512-qjbw0BEesKA+3XFBPt+KVe1PC/Z6ShfJ4wPlx2XifqH5h2Lj8/KQT5XJTsy3n1Es5kai+BwKALaECW3F70B1cg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "boolean": "^3.0.0",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.0",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "dependencies": {
+ "sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+ "dev": true
+ },
+ "rtlcss": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.5.0.tgz",
+ "integrity": "sha512-NCVdF45w70/3CQeqVvQ84bu2HN8agNn+CDjw+RxXaiWb7mPOmEvltdd1z4qzm9kin4Jnu9ShFBIx28yvWerZ2g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "findup": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "postcss": "^6.0.23",
+ "strip-json-comments": "^2.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "postcss": {
+ "version": "6.0.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
+ "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "source-map": "^0.6.1",
+ "supports-color": "^5.4.0"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "rxjs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
+ "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sane": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+ "dev": true,
+ "requires": {
+ "@cnakazawa/watch": "^1.0.3",
+ "anymatch": "^2.0.0",
+ "capture-exit": "^2.0.0",
+ "exec-sh": "^0.3.2",
+ "execa": "^1.0.0",
+ "fb-watchman": "^2.0.0",
+ "micromatch": "^3.1.4",
+ "minimist": "^1.1.1",
+ "walker": "~1.0.5"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "requires": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
+ "sass-graph": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+ "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^7.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+ "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "dev": true,
+ "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"
+ }
+ },
+ "yargs-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0"
+ }
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz",
+ "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.6.1",
+ "semver": "^6.3.0"
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "schema-utils": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
+ "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1"
+ }
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "dev": true,
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.10.7",
+ "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+ "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
+ "dev": true,
+ "requires": {
+ "node-forge": "0.9.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true,
+ "optional": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "requires": {
+ "semver": "^5.0.3"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "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.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "serialize-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz",
+ "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "type-fest": "^0.8.0"
+ }
+ },
+ "serialize-javascript": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
+ "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
+ "dev": true
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "dev": true,
+ "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"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "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,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "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
+ },
+ "shell-quote": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
+ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
+ "dev": true
+ },
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ }
+ }
+ },
+ "sisteransi": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz",
+ "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "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": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "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": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "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": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sockjs": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+ "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+ "dev": true,
+ "requires": {
+ "faye-websocket": "^0.10.0",
+ "uuid": "^3.0.1"
+ }
+ },
+ "sockjs-client": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
+ "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.5",
+ "eventsource": "^1.0.7",
+ "faye-websocket": "~0.11.1",
+ "inherits": "^2.0.3",
+ "json3": "^3.3.2",
+ "url-parse": "^1.4.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "faye-websocket": {
+ "version": "0.11.3",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+ "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "sonic-boom": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-0.7.6.tgz",
+ "integrity": "sha512-k9E2QQ4zxuVRLDW+ZW6ISzJs3wlEorVdmM7ApDgor7wsGKSDG5YGHsGmgLY4XYh4DMlr/2ap2BWAE7yTFJtWnQ==",
+ "requires": {
+ "flatstr": "^1.0.12"
+ }
+ },
+ "sort-array": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-2.0.0.tgz",
+ "integrity": "sha1-OKnG2if9fRR7QuYFVPKBGHtN9HI=",
+ "dev": true,
+ "requires": {
+ "array-back": "^1.0.4",
+ "object-get": "^2.1.0",
+ "typical": "^2.6.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.0"
+ }
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "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"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+ "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ }
+ }
+ },
+ "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=",
+ "dev": true
+ },
+ "spawn-command": {
+ "version": "0.0.2-1",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
+ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
+ "dev": true
+ },
+ "spawn-rx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-3.0.0.tgz",
+ "integrity": "sha512-dw4Ryg/KMNfkKa5ezAR5aZe9wNwPdKlnHEXtHOjVnyEDSPQyOpIPPRtcIiu7127SmtHhaCjw21yC43HliW0iIg==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.5.1",
+ "lodash.assign": "^4.2.0",
+ "rxjs": "^6.3.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "spdx-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
+ "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.2",
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-ranges": "^2.0.0"
+ }
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="
+ },
+ "spdx-ranges": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
+ "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
+ "dev": true
+ },
+ "spdx-satisfies": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
+ "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
+ "dev": true,
+ "requires": {
+ "spdx-compare": "^1.0.0",
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-ranges": "^2.0.0"
+ }
+ },
+ "spdy": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+ "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sqlite3": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.1.1.tgz",
+ "integrity": "sha512-CvT5XY+MWnn0HkbwVKJAyWEMfzpAPwnTiB3TobA5Mri44SrTovmmh499NPQP+gatkeOipqPlBLel7rn4E/PCQg==",
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.11.0",
+ "request": "^2.87.0"
+ },
+ "dependencies": {
+ "fs-minipass": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
+ "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
+ "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",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "tar": {
+ "version": "4.4.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
+ "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1",
+ "minipass": "^3.1.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
+ "stack-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+ "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
+ "dev": true
+ },
+ "stackframe": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz",
+ "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==",
+ "dev": true
+ },
+ "stat-mode": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz",
+ "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng=="
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+ },
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-connect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
+ "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=",
+ "dev": true,
+ "requires": {
+ "array-back": "^1.0.2"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.0"
+ }
+ }
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
+ "stream-via": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
+ "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==",
+ "dev": true
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "dev": true,
+ "requires": {
+ "astral-regex": "^1.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+ "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+ "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "dev": true,
+ "requires": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-comments": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz",
+ "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==",
+ "dev": true,
+ "requires": {
+ "babel-extract-comments": "^1.0.0",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+ },
+ "stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "stylus": {
+ "version": "0.54.7",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz",
+ "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==",
+ "dev": true,
+ "requires": {
+ "css-parse": "~2.0.0",
+ "debug": "~3.1.0",
+ "glob": "^7.1.3",
+ "mkdirp": "~0.5.x",
+ "safer-buffer": "^2.1.2",
+ "sax": "~1.2.4",
+ "semver": "^6.0.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true
+ }
+ }
+ },
+ "stylus-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
+ "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.0.2",
+ "lodash.clonedeep": "^4.5.0",
+ "when": "~3.6.x"
+ }
+ },
+ "sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "table-layout": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz",
+ "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==",
+ "dev": true,
+ "requires": {
+ "array-back": "^2.0.0",
+ "deep-extend": "~0.6.0",
+ "lodash.padend": "^4.6.1",
+ "typical": "^2.6.1",
+ "wordwrapjs": "^3.0.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.1"
+ }
+ }
+ }
+ },
+ "taffydb": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
+ "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
+ "dev": true
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "tar": {
+ "version": "4.4.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ },
+ "dependencies": {
+ "fs-minipass": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+ },
+ "temp-file": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.6.tgz",
+ "integrity": "sha512-7TPldi8QJqRlPIF/Y33mVvo8+xDfi6+aVTCK4CrCaLqCoaOnVtf3SA4hCU0T5nhYDdOC7erw7o2uWfvijlk4Ug==",
+ "requires": {
+ "async-exit-hook": "^2.0.1",
+ "fs-extra": "^8.1.0"
+ }
+ },
+ "temp-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz",
+ "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
+ "dev": true
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "requires": {
+ "execa": "^0.7.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ }
+ }
+ },
+ "terser": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz",
+ "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz",
+ "integrity": "sha512-Nv96Nws2R2nrFOpbzF6IxRDpIkkIfmhvOws+IqMvYdFLO7o6wAILWFKONFgaYy8+T4LVz77DQW0f7wOeDEAjrg==",
+ "dev": true,
+ "requires": {
+ "cacache": "^13.0.1",
+ "find-cache-dir": "^3.2.0",
+ "jest-worker": "^25.1.0",
+ "p-limit": "^2.2.2",
+ "schema-utils": "^2.6.4",
+ "serialize-javascript": "^2.1.2",
+ "source-map": "^0.6.1",
+ "terser": "^4.4.3",
+ "webpack-sources": "^1.4.3"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz",
+ "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.0",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "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
+ },
+ "jest-worker": {
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz",
+ "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "make-dir": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
+ "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
+ "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "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
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "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
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "test-exclude": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^4.0.0",
+ "require-main-filename": "^2.0.0"
+ },
+ "dependencies": {
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "test-value": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
+ "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "^2.0.0",
+ "typical": "^2.6.1"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "^2.6.1"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
+ "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "tmp-promise": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz",
+ "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "tmp": "0.1.0"
+ },
+ "dependencies": {
+ "tmp": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
+ "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
+ "dev": true,
+ "requires": {
+ "rimraf": "^2.6.3"
+ }
+ }
+ }
+ },
+ "tmpl": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
+ "dev": true
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q=="
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "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,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ }
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true
+ },
+ "treeify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
+ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
+ "truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
+ "requires": {
+ "utf8-byte-length": "^1.0.1"
+ }
+ },
+ "tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+ "dev": true
+ },
+ "tsconfig": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz",
+ "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==",
+ "dev": true,
+ "requires": {
+ "@types/strip-bom": "^3.0.0",
+ "@types/strip-json-comments": "0.0.30",
+ "strip-bom": "^3.0.0",
+ "strip-json-comments": "^2.0.0"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
+ "optional": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typical": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
+ "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=",
+ "dev": true
+ },
+ "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
+ },
+ "uglify-js": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz",
+ "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.20.3",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "uid-safe": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "requires": {
+ "random-bytes": "~1.0.0"
+ }
+ },
+ "underscore": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz",
+ "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==",
+ "dev": true
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+ "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=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz",
+ "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==",
+ "requires": {
+ "boxen": "^3.0.0",
+ "chalk": "^2.0.1",
+ "configstore": "^4.0.0",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^3.0.0",
+ "is-yarn-global": "^0.3.0",
+ "latest-version": "^5.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-3.0.0.tgz",
+ "integrity": "sha512-a84JJbIA5xTFTWyjjcPdnsu+41o/SNE8SpXMdUvXs6Q+LuhCD9E2+0VCiuDWqgo3GGXVlFHzArDmBpj9PgWn4A==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "mime": "^2.4.4",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+ "dev": true
+ }
+ }
+ },
+ "url-parse": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+ "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+ "dev": true,
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "requires": {
+ "prepend-http": "^2.0.0"
+ },
+ "dependencies": {
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc="
+ }
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "utf8-byte-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
+ "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E="
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "util-extend": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
+ "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
+ "dev": true
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+ },
+ "uuid": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+ "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
+ },
+ "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": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+ },
+ "vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "vue": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
+ "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==",
+ "dev": true
+ },
+ "vue-eslint-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz",
+ "integrity": "sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^4.1.0",
+ "esquery": "^1.0.1",
+ "lodash": "^4.17.11"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "espree": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
+ "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.2",
+ "acorn-jsx": "^5.0.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "vue-hot-reload-api": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
+ "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
+ "dev": true
+ },
+ "vue-jest": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.5.tgz",
+ "integrity": "sha512-xWDxde91pDqYBGDlODENZ3ezPgw+IQFoVDtf+5Awlg466w3KvMSqWzs8PxcTeTr+wmAHi0j+a+Lm3R7aUJa1jA==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
+ "chalk": "^2.1.0",
+ "extract-from-css": "^0.4.4",
+ "find-babel-config": "^1.1.0",
+ "js-beautify": "^1.6.14",
+ "node-cache": "^4.1.1",
+ "object-assign": "^4.1.1",
+ "source-map": "^0.5.6",
+ "tsconfig": "^7.0.0",
+ "vue-template-es2015-compiler": "^1.6.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "vue-loader": {
+ "version": "15.9.0",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.0.tgz",
+ "integrity": "sha512-FeDHvTSpwyLeF7LIV1PYkvqUQgTJ8UmOxhSlCyRSxaXCKk+M6NF4tDQsLsPPNeDPyR7TfRQ8MLg6v+8PsDV9xQ==",
+ "dev": true,
+ "requires": {
+ "@vue/component-compiler-utils": "^3.1.0",
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.1.0",
+ "vue-hot-reload-api": "^2.3.0",
+ "vue-style-loader": "^4.1.0"
+ }
+ },
+ "vue-router": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz",
+ "integrity": "sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg==",
+ "dev": true
+ },
+ "vue-server-renderer": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.11.tgz",
+ "integrity": "sha512-V3faFJHr2KYfdSIalL+JjinZSHYUhlrvJ9pzCIjjwSh77+pkrsXpK4PucdPcng57+N77pd1LrKqwbqjQdktU1A==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "hash-sum": "^1.0.2",
+ "he": "^1.1.0",
+ "lodash.template": "^4.5.0",
+ "lodash.uniq": "^4.5.0",
+ "resolve": "^1.2.0",
+ "serialize-javascript": "^2.1.2",
+ "source-map": "0.5.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "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"
+ }
+ },
+ "source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "vue-style-loader": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
+ "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==",
+ "dev": true,
+ "requires": {
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.0.2"
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
+ "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.1.0"
+ }
+ },
+ "vue-template-es2015-compiler": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+ "dev": true
+ },
+ "vuex": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz",
+ "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==",
+ "dev": true
+ },
+ "w3c-hr-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
+ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+ "dev": true,
+ "requires": {
+ "browser-process-hrtime": "^0.1.2"
+ }
+ },
+ "walk-back": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-4.0.0.tgz",
+ "integrity": "sha512-kudCA8PXVQfrqv2mFTG72vDBRi8BKWxGgFLwPpzHcpZnSwZk93WMwUDVcLHWNsnm+Y0AC4Vb6MUNRgaHfyV2DQ==",
+ "dev": true
+ },
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "dev": true,
+ "requires": {
+ "makeerror": "1.0.x"
+ }
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+ "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1",
+ "node-pre-gyp": "*"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "3.2.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": 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.6",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.9.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.14.0",
+ "bundled": true,
+ "dev": 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.4.2"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": 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.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.13",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "webpack": {
+ "version": "4.41.6",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz",
+ "integrity": "sha512-yxXfV0Zv9WMGRD+QexkZzmGIh54bsvEs+9aRWxnN8erLWEOehAKUTeNBoUbA6HPEZPlRo7KDi2ZcNveoZgK9MA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "^6.2.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.3",
+ "watchpack": "^1.6.0",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cacache": {
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
+ "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "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
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
+ "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^2.1.2",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "webpack-bundle-analyzer": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz",
+ "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.7",
+ "acorn-walk": "^6.1.1",
+ "bfj": "^6.1.1",
+ "chalk": "^2.4.1",
+ "commander": "^2.18.0",
+ "ejs": "^2.6.1",
+ "express": "^4.16.3",
+ "filesize": "^3.6.1",
+ "gzip-size": "^5.0.0",
+ "lodash": "^4.17.15",
+ "mkdirp": "^0.5.1",
+ "opener": "^1.5.1",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "webpack-chain": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.4.0.tgz",
+ "integrity": "sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "^1.5.2",
+ "javascript-stringify": "^2.0.1"
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
+ "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
+ "dev": true,
+ "requires": {
+ "memory-fs": "^0.4.1",
+ "mime": "^2.4.4",
+ "mkdirp": "^0.5.1",
+ "range-parser": "^1.2.1",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "mime": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+ "dev": true
+ }
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.10.3",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz",
+ "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-html": "0.0.7",
+ "bonjour": "^3.5.0",
+ "chokidar": "^2.1.8",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^1.6.0",
+ "debug": "^4.1.1",
+ "del": "^4.1.1",
+ "express": "^4.17.1",
+ "html-entities": "^1.2.1",
+ "http-proxy-middleware": "0.19.1",
+ "import-local": "^2.0.0",
+ "internal-ip": "^4.3.0",
+ "ip": "^1.1.5",
+ "is-absolute-url": "^3.0.3",
+ "killable": "^1.0.1",
+ "loglevel": "^1.6.6",
+ "opn": "^5.5.0",
+ "p-retry": "^3.0.1",
+ "portfinder": "^1.0.25",
+ "schema-utils": "^1.0.0",
+ "selfsigned": "^1.10.7",
+ "semver": "^6.3.0",
+ "serve-index": "^1.9.1",
+ "sockjs": "0.3.19",
+ "sockjs-client": "1.4.0",
+ "spdy": "^4.0.1",
+ "strip-ansi": "^3.0.1",
+ "supports-color": "^6.1.0",
+ "url": "^0.11.0",
+ "webpack-dev-middleware": "^3.7.2",
+ "webpack-log": "^2.0.0",
+ "ws": "^6.2.1",
+ "yargs": "12.0.5"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
+ "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1",
+ "node-pre-gyp": "*"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "3.2.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": 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.6",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.9.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.14.0",
+ "bundled": true,
+ "dev": 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.4.2"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": 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.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": 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,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.13",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "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"
+ }
+ },
+ "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
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ }
+ }
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ }
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "webpack-node-externals": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz",
+ "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==",
+ "dev": true
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
+ "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
+ "dev": true,
+ "requires": {
+ "http-parser-js": ">=0.4.0 <0.4.11",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+ "dev": true
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "when": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
+ "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "requires": {
+ "string-width": "^2.1.1"
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wordwrapjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz",
+ "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
+ "dev": true,
+ "requires": {
+ "reduce-flatten": "^1.0.1",
+ "typical": "^2.6.1"
+ }
+ },
+ "workbox-background-sync": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz",
+ "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-broadcast-update": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz",
+ "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-build": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz",
+ "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.3.4",
+ "@hapi/joi": "^15.0.0",
+ "common-tags": "^1.8.0",
+ "fs-extra": "^4.0.2",
+ "glob": "^7.1.3",
+ "lodash.template": "^4.4.0",
+ "pretty-bytes": "^5.1.0",
+ "stringify-object": "^3.3.0",
+ "strip-comments": "^1.0.2",
+ "workbox-background-sync": "^4.3.1",
+ "workbox-broadcast-update": "^4.3.1",
+ "workbox-cacheable-response": "^4.3.1",
+ "workbox-core": "^4.3.1",
+ "workbox-expiration": "^4.3.1",
+ "workbox-google-analytics": "^4.3.1",
+ "workbox-navigation-preload": "^4.3.1",
+ "workbox-precaching": "^4.3.1",
+ "workbox-range-requests": "^4.3.1",
+ "workbox-routing": "^4.3.1",
+ "workbox-strategies": "^4.3.1",
+ "workbox-streams": "^4.3.1",
+ "workbox-sw": "^4.3.1",
+ "workbox-window": "^4.3.1"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ }
+ }
+ },
+ "workbox-cacheable-response": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz",
+ "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-core": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz",
+ "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==",
+ "dev": true
+ },
+ "workbox-expiration": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz",
+ "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-google-analytics": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz",
+ "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==",
+ "dev": true,
+ "requires": {
+ "workbox-background-sync": "^4.3.1",
+ "workbox-core": "^4.3.1",
+ "workbox-routing": "^4.3.1",
+ "workbox-strategies": "^4.3.1"
+ }
+ },
+ "workbox-navigation-preload": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz",
+ "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-precaching": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz",
+ "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-range-requests": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz",
+ "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-routing": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz",
+ "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-strategies": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz",
+ "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-streams": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz",
+ "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-sw": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz",
+ "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==",
+ "dev": true
+ },
+ "workbox-webpack-plugin": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz",
+ "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.0.0",
+ "json-stable-stringify": "^1.0.1",
+ "workbox-build": "^4.3.1"
+ }
+ },
+ "workbox-window": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz",
+ "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
+ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ws": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
+ },
+ "xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "dependencies": {
+ "xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+ }
+ }
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ },
+ "xmlcreate": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz",
+ "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==",
+ "dev": true
+ },
+ "xmldom": {
+ "version": "0.1.31",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
+ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz",
+ "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^16.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "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=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "16.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz",
+ "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000..74c69a22ca
--- /dev/null
+++ b/package.json
@@ -0,0 +1,79 @@
+{
+ "name": "zap",
+ "version": "0.99.1",
+ "description": "Configuration tool for the Zigbee Cluster Library",
+ "productName": "zap",
+ "cordovaId": "",
+ "capacitorId": "",
+ "author": "Timotej Ecimovic ",
+ "private": true,
+ "scripts": {
+ "lic": "node license-check.js --production",
+ "lint": "eslint --ext .js,.vue src",
+ "electron-dev": "quasar dev -m electron",
+ "electron-build": "quasar build -m electron",
+ "test": "jest --updateSnapshot",
+ "test:unit": "jest --updateSnapshot",
+ "test:unit:verbose": "jest --updateSnapshot --verbose false",
+ "test:unit:coverage": "jest --coverage",
+ "test:unit:watch": "jest --watch",
+ "test:unit:watchAll": "jest --watchAll",
+ "serve:test:coverage": "quasar serve test/jest/coverage/lcov-report/ --port 8788",
+ "concurrently:dev:jest": "concurrently \"quasar dev\" \"jest --watch\"",
+ "postinstall": "electron-builder install-app-deps",
+ "zcl-validate": "zcl/script/validate",
+ "zcl-format": "zcl/script/format",
+ "headlessServer": "quasar dev -m electron -- --httpPort 8081 --noUI --xmlRoot=./zcl/zcl-studio.properties",
+ "browser": "quasar dev",
+ "zap": "quasar build && quasar dev -m electron",
+ "build-spa": "quasar build",
+ "doc": "jsdoc src-electron -r -d ./generated-html/",
+ "apidoc": "jsdoc2md src-electron/**/*.js > docs/api.md"
+ },
+ "dependencies": {
+ "@quasar/extras": "^1.5.2",
+ "axios": "^0.18.1",
+ "body-parser": "^1.19.0",
+ "crc": "^3.8.0",
+ "electron-builder": "^20.44.4",
+ "express": "^4.17.1",
+ "express-session": "^1.17.0",
+ "node-abi": "^2.15.0",
+ "node-gyp": "^6.1.0",
+ "node-pre-gyp": "^0.14.0",
+ "pino": "^5.16.0",
+ "properties": "^1.2.1",
+ "quasar": "^1.9.3",
+ "sqlite3": "^4.1.1",
+ "xml2js": "^0.4.23",
+ "yargs": "^15.1.0"
+ },
+ "devDependencies": {
+ "@quasar/app": "^1.5.8",
+ "@quasar/quasar-app-extension-testing": "^1.0.0",
+ "@quasar/quasar-app-extension-testing-unit-jest": "^1.0.0",
+ "@vue/eslint-config-standard": "^4.0.0",
+ "babel-eslint": "^10.0.1",
+ "devtron": "^1.4.0",
+ "electron": "^8.2.0",
+ "electron-debug": "^3.0.1",
+ "electron-devtools-installer": "^2.2.4",
+ "electron-packager": "^14.2.1",
+ "electron-rebuild": "^1.10.0",
+ "eslint": "^5.10.0",
+ "eslint-loader": "^2.1.1",
+ "eslint-plugin-vue": "^5.0.0",
+ "file-loader": "^5.1.0",
+ "jsdoc": "^3.6.3",
+ "jsdoc-to-markdown": "^5.0.3",
+ "license-checker": "^25.0.1"
+ },
+ "engines": {
+ "node": ">= 8.9.0",
+ "npm": ">= 5.6.0",
+ "yarn": ">= 1.6.0"
+ },
+ "browserslist": [
+ "last 1 version, not dead, ie >= 11"
+ ]
+}
diff --git a/quasar.conf.js b/quasar.conf.js
new file mode 100644
index 0000000000..d7aad8a9f9
--- /dev/null
+++ b/quasar.conf.js
@@ -0,0 +1,221 @@
+// Configuration for your app
+// https://quasar.dev/quasar-cli/quasar-conf-js
+
+module.exports = function (ctx) {
+ return {
+
+ // Source files of application
+ sourceFiles: {
+ rootComponent: 'src/App.vue',
+ router: 'src/router',
+ store: 'src/store',
+ indexHtmlTemplate: 'src/index.template.html',
+ registerServiceWorker: 'src-pwa/register-service-worker.js',
+ serviceWorker: 'src-pwa/custom-service-worker.js',
+ electronMainDev: 'src-electron/main-process/electron-main.dev.js',
+ electronMainProd: 'src-electron/main-process/electron-main.js'
+ },
+
+ // app boot file (/src/boot)
+ // --> boot files are part of "main.js"
+ // https://quasar.dev/quasar-cli/cli-documentation/boot-files
+ boot: ['axios'],
+
+ // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
+ css: [
+ 'app.sass'
+ ],
+
+ // https://github.com/quasarframework/quasar/tree/dev/extras
+ extras: [
+ // 'ionicons-v4',
+ 'mdi-v4',
+ // 'fontawesome-v5',
+ // 'eva-icons',
+ // 'themify',
+ // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
+
+ 'roboto-font', // optional, you are not bound to it
+ 'material-icons' // optional, you are not bound to it
+ ],
+
+ // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
+ framework: {
+ iconSet: 'mdi-v4', // Quasar icon set
+ lang: 'en-us', // Quasar language pack
+
+ // Possible values for "all":
+ // * 'auto' - Auto-import needed Quasar components & directives
+ // (slightly higher compile time; next to minimum bundle size; most convenient)
+ // * false - Manually specify what to import
+ // (fastest compile time; minimum bundle size; most tedious)
+ // * true - Import everything from Quasar
+ // (not treeshaking Quasar; biggest bundle size; convenient)
+ all: 'auto',
+
+ components: [],
+ directives: [],
+
+ // Quasar plugins
+ plugins: []
+ },
+
+ // https://quasar.dev/quasar-cli/cli-documentation/supporting-ie
+ supportIE: false,
+
+ // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
+ build: {
+ scopeHoisting: true,
+ vueRouterMode: 'hash', // available values: 'hash', 'history'
+ showProgress: true,
+ gzip: false,
+ analyze: false,
+ // Options below are automatically set depending on the env, set them if you want to override
+ // preloadChunks: false,
+ // extractCSS: false,
+
+ // https://quasar.dev/quasar-cli/cli-documentation/handling-webpack
+ extendWebpack(cfg) {
+ cfg.module.rules.push({
+ enforce: 'pre',
+ test: /\.(js|vue)$/,
+ loader: 'eslint-loader',
+ exclude: /node_modules/,
+ options: {
+ formatter: require('eslint').CLIEngine.getFormatter('stylish')
+ }
+ })
+ cfg.module.rules.push({
+ enforce: 'pre',
+ test: /\.(sql)$/,
+ loader: 'file-loader',
+ exclude: /node_modules/,
+ options: {
+ name: '[path][name].[ext]',
+ },
+ })
+ }
+ },
+
+ // Full list of options: https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
+ devServer: {
+ https: false,
+ port: 8080,
+ open: true // opens browser window automatically
+ },
+
+ // animations: 'all', // --- includes all animations
+ // https://quasar.dev/options/animations
+ animations: [],
+
+ // https://quasar.dev/quasar-cli/developing-ssr/configuring-ssr
+ ssr: {
+ pwa: false
+ },
+
+ // https://quasar.dev/quasar-cli/developing-pwa/configuring-pwa
+ pwa: {
+ workboxPluginMode: 'GenerateSW', // 'GenerateSW' or 'InjectManifest'
+ workboxOptions: {}, // only for GenerateSW
+ manifest: {
+ name: 'zap',
+ short_name: 'zap',
+ description: 'Configuration tool for the Zigbee Cluster Library',
+ display: 'standalone',
+ orientation: 'portrait',
+ background_color: '#ffffff',
+ theme_color: '#027be3',
+ icons: [
+ {
+ 'src': 'statics/icons/icon-128x128.png',
+ 'sizes': '128x128',
+ 'type': 'image/png'
+ },
+ {
+ 'src': 'statics/icons/icon-192x192.png',
+ 'sizes': '192x192',
+ 'type': 'image/png'
+ },
+ {
+ 'src': 'statics/icons/icon-256x256.png',
+ 'sizes': '256x256',
+ 'type': 'image/png'
+ },
+ {
+ 'src': 'statics/icons/icon-384x384.png',
+ 'sizes': '384x384',
+ 'type': 'image/png'
+ },
+ {
+ 'src': 'statics/icons/icon-512x512.png',
+ 'sizes': '512x512',
+ 'type': 'image/png'
+ }
+ ]
+ }
+ },
+
+ // Full list of options: https://quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
+ cordova: {
+ // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
+ id: ''
+ },
+
+ // Full list of options: https://quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
+ capacitor: {
+ hideSplashscreen: true
+ },
+
+ // Full list of options: https://quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
+ electron: {
+ bundler: 'packager', // 'packager' or 'builder'
+
+ packager: {
+ // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
+ asar: false,
+ // OS X / Mac App Store
+ // appBundleId: '',
+ // appCategoryType: '',
+ // osxSign: '',
+ // protocol: 'myapp://path',
+
+ // Windows only
+ // win32metadata: { ... }
+
+ platform: 'darwin,linux,win32',
+ arch: 'ia32,x64',
+ extraResource: 'src-electron/db/zap-schema.sql',
+ afterCopy: [(buildPath, electronVersion, platform, arch, callback) => {
+ require('electron-rebuild').rebuild({ buildPath, electronVersion, arch })
+ .then(() => callback())
+ .catch((error) => callback(error));
+ }]
+ },
+
+ builder: {
+ // https://www.electron.build/configuration/configuration
+
+ appId: 'zap'
+ },
+
+ // keep in sync with electron-main
+ // > BrowserWindow > webPreferences > nodeIntegration
+ // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
+ nodeIntegration: false,
+
+ extendWebpack(cfg) {
+ // do something with Electron main process Webpack cfg
+ // chainWebpack also available besides this extendWebpack
+ cfg.module.rules.push({
+ enforce: 'pre',
+ test: /\.(png|jpe?g|gif|sql)$/,
+ loader: 'file-loader',
+ exclude: /node_modules/,
+ options: {
+ name: '[path][name].[ext]',
+ },
+ })
+ }
+ }
+ }
+}
diff --git a/quasar.extensions.json b/quasar.extensions.json
new file mode 100644
index 0000000000..3430b4a4b9
--- /dev/null
+++ b/quasar.extensions.json
@@ -0,0 +1,13 @@
+{
+ "@quasar/testing": {
+ "harnesses": [
+ "unit-jest"
+ ]
+ },
+ "@quasar/testing-unit-jest": {
+ "babel": "babelrc",
+ "options": [
+ "scripts"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/quasar.testing.json b/quasar.testing.json
new file mode 100644
index 0000000000..090d098daf
--- /dev/null
+++ b/quasar.testing.json
@@ -0,0 +1,5 @@
+{
+ "unit-jest": {
+ "runnerCommand": "jest"
+ }
+}
\ No newline at end of file
diff --git a/src-electron/db/db-api.js b/src-electron/db/db-api.js
new file mode 100644
index 0000000000..8fbcb9448c
--- /dev/null
+++ b/src-electron/db/db-api.js
@@ -0,0 +1,281 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides generic DB functions for performing SQL queries.
+ *
+ * @module JS API: low level database access
+ */
+
+import { logError, logInfo } from '../main-process/env.js'
+
+var sq = require('sqlite3')
+var fs = require('fs')
+
+/**
+ * Returns a promise to begin a transaction
+ *
+ * @export
+ * @param {*} db
+ * @returns A promise that resolves without an argument and rejects with an error from BEGIN TRANSACTION query.
+ */
+export function dbBeginTransaction(db) {
+ return new Promise((resolve, reject) => {
+ db.run("BEGIN TRANSACTION", [], function (err) {
+ if (err) {
+ logError('Failed to BEGIN TRANSACTION')
+ reject(err)
+ } else {
+ logInfo('Executed BEGIN TRANSACTION')
+ resolve()
+ }
+ })
+ })
+}
+/**
+ * Returns a promise to execute a commit.
+ *
+ * @export
+ * @param {*} db
+ * @returns A promise that resolves without an argument or rejects with an error from COMMIT query.
+ */
+export function dbCommit(db) {
+ return new Promise((resolve, reject) => {
+ db.run("COMMIT", [], function (err) {
+ if (err) {
+ logError('Failed to COMMIT')
+ reject(err)
+ } else {
+ logInfo('Executed COMMIT')
+ resolve()
+ }
+ })
+ })
+}
+
+/**
+ * Returns a promise to execute a DELETE FROM query.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} query
+ * @param {*} args
+ * @returns A promise that resolve with the number of delete rows, or rejects with an error from query.
+ */
+export function dbRemove(db, query, args) {
+ return new Promise((resolve,reject) => {
+ db.run(query, args, function (err) {
+ if (err) {
+ logError(`Failed remove: ${query}: ${args}`)
+ reject(err)
+ } else {
+ logInfo(`Executed remove: ${query}: ${args}`)
+ resolve(this.changes)
+ }
+ })
+ })
+}
+
+/**
+ * Returns a promise to execute an update query.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} query
+ * @param {*} args
+ * @returns A promise that resolves without an argument, or rejects with an error from the query.
+ */
+export function dbUpdate(db, query, args) {
+ return new Promise((resolve, reject) => {
+ db.run(query, args, function (err) {
+ if (err) {
+ logError(`Failed update: ${query}: ${args}`)
+ reject(err)
+ } else {
+ logInfo(`Executed update: ${query}: ${args}`)
+ resolve()
+ }
+ })
+ })
+}
+
+/**
+ * Returns a promise to execute an insert query.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} query
+ * @param {*} args
+ * @returns A promise that resolves with the rowid from the inserted row, or rejects with an error from the query.
+ */
+export function dbInsert(db, query, args) {
+ return new Promise((resolve, reject) => {
+ db.run(query, args, function (err) {
+ if (err) {
+ logError(`Failed insert: ${query}: ${args}`)
+ reject(err)
+ } else {
+ logInfo(`Executed insert: ${query}: ${args} => rowid: ${this.lastID}`)
+ resolve(this.lastID)
+ }
+ })
+ })
+}
+/**
+ * Returns a promise to execute a query to perform a select that returns all rows that match a query.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} query
+ * @param {*} args
+ * @returns A promise that resolves with the rows that got retrieved from the database, or rejects with an error from the query.
+ */
+export function dbAll(db, query, args) {
+ return new Promise((resolve, reject) => {
+ db.all(query, args, (err, rows) => {
+ if (err) {
+ logInfo(`Failed all: ${query}: ${args}`)
+ reject(err)
+ } else {
+ logInfo(`Executed all: ${query}: ${args}`)
+ resolve(rows)
+ }
+ })
+ })
+}
+/**
+ * Returns a promise to execute a query to perform a select that returns first row that matches a query.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} query
+ * @param {*} args
+ * @returns A promise that resolves with a single row that got retrieved from the database, or rejects with an error from the query.
+ */
+export function dbGet(db, query, args) {
+ return new Promise((resolve, reject) => {
+ db.get(query, args, (err, row) => {
+ if (err) {
+ logError(`Failed get: ${query}: ${args}`)
+ reject(err)
+ } else {
+ logInfo(`Executed get: ${query}: ${args}`)
+ resolve(row)
+ }
+ })
+
+ })
+}
+
+
+/**
+ * Returns a promise to perfom a prepared statement, using data from array for SQL parameters.
+ * It resolves with an array of rowids, or rejects with an error.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sql
+ * @param {*} arrayOfArrays
+ * @returns A promise that resolves with the array of rowids for the rows that got inserted, or rejects with an error from the query.
+ */
+export function dbMultiInsert(db, sql, arrayOfArrays) {
+ return new Promise((resolve, reject) => {
+ logInfo(`Preparing statement: ${sql} to insert ${arrayOfArrays.length} records.`)
+ var lastIds = []
+ var statement = db.prepare(sql, function (err) {
+ if (err) reject(err)
+ for (const singleArray of arrayOfArrays) {
+ statement.run(singleArray, (err) => {
+ if (err) reject(err)
+ lastIds.push(this.lastID)
+ })
+ }
+ statement.finalize((err) => {
+ if (err) reject(err)
+ resolve(lastIds)
+ })
+ })
+ })
+}
+
+
+/**
+ * Returns a promise that will resolve when the database in question is closed.
+ * Rejects with an error if closing fails.
+ *
+ * @export
+ * @param {*} database
+ * @returns A promise that resolves without an argument or rejects with error from the database closing.
+ */
+export function closeDatabase(database) {
+ return new Promise((resolve, reject) => {
+ database.close((err) => {
+ if (err) return reject(err)
+ resolve()
+ })
+ })
+}
+/**
+ * Returns a promise to initialize a database.
+ *
+ * @export
+ * @param {*} sqlitePath
+ * @returns A promise that resolves with the database object that got created, or rejects with an error if something went wrong.
+ */
+export function initDatabase(sqlitePath) {
+ return new Promise((resolve, reject) => {
+
+ logInfo('Temporarily, we are forcibly deleting the sqlite file every time we start up the app. This goes away after a while, obviously.')
+ if (fs.existsSync(sqlitePath)) {
+ fs.unlinkSync(sqlitePath)
+ }
+ var db = new sq.Database(sqlitePath,
+ (err) => {
+ if (err) {
+ return reject(err)
+ } else {
+ logInfo(`Connected to the database at: ${sqlitePath}`)
+ resolve(db)
+ }
+ }
+ )
+ })
+}
+/**
+ * Returns a promise to insert or replace a version of the application into the database.
+ *
+ * @param {*} db
+ * @param {*} version
+ * @returns A promise that resolves with a rowid of created setting row or rejects with error if something goes wrong.
+ */
+function insertOrReplaceVersion(db, version) {
+ return dbInsert(db, "INSERT OR REPLACE INTO SETTING ( CATEGORY, KEY, VALUE ) VALUES ( 'APP', 'VERSION', ?)", version)
+}
+
+/**
+ * Returns a promise to load schema into a blank database, and inserts a version to the settings table.j
+ *
+ * @export
+ * @param {*} db
+ * @param {*} schema
+ * @param {*} appVersion
+ * @returns A promise that resolves with the same db that got passed in, or rejects with an error.
+ */
+export function loadSchema(db, schema, appVersion) {
+ return new Promise((resolve, reject) => {
+ fs.readFile(schema, 'utf8', (err, data) => {
+ if (err) return reject(err)
+ db.serialize(() => {
+ logInfo('Populate schema.')
+ db.exec(data, (err) => {
+ if (err) {
+ logError('Failed to populate schema')
+ logError(err)
+ }
+ resolve(db)
+ })
+ })
+ });
+ })
+ .then(db => insertOrReplaceVersion(db, appVersion))
+ .then(rowid => Promise.resolve(db))
+}
\ No newline at end of file
diff --git a/src-electron/db/query.js b/src-electron/db/query.js
new file mode 100644
index 0000000000..2f76808369
--- /dev/null
+++ b/src-electron/db/query.js
@@ -0,0 +1,530 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * Contains all the application queries.
+ *
+ * @module JS API: database queries
+ */
+import { dbAll, dbGet, dbInsert, dbMultiInsert, dbRemove, dbUpdate } from './db-api.js'
+
+
+export function forPathCrc(db, path, crcCallback, noneCallback) {
+ dbGet(db, "SELECT PACKAGE_ID, PATH, CRC FROM PACKAGE WHERE PATH = ?", [path]).then(row => {
+ if (row == null) {
+ noneCallback()
+ } else {
+ crcCallback(row.CRC, row.PACKAGE_ID)
+ }
+ })
+}
+
+export function getPathCrc(db, path) {
+ return dbGet(db, "SELECT CRC FROM PACKAGE WHERE PATH = ?", [path]).then(row => new Promise((resolve, reject) => {
+ if (row == null) {
+ resolve(null)
+ } else {
+ resolve(row.CRC)
+ }
+ }))
+}
+export function insertPathCrc(db, path, crc) {
+ return dbInsert(db, "INSERT INTO PACKAGE ( PATH, CRC ) VALUES (?, ?)", [path, crc])
+}
+
+export function updatePathCrc(db, path, crc) {
+ return dbInsert(db, "UPDATE PACKAGE SET CRC = ? WHERE PATH = ?", [path, crc])
+}
+
+export function selectAllEnums(db) {
+ return dbAll(db, 'SELECT ENUM_ID, NAME, TYPE FROM ENUM ORDER BY NAME', [])
+}
+
+export function selectAllEnumItemsById(db, id) {
+ return dbAll(db, 'SELECT NAME FROM ENUM_ITEM WHERE ENUM_REF=?', [id]);
+}
+
+export function selectAllEnumItems(db) {
+ return dbAll(db, 'SELECT NAME, VALUE, ENUM_REF FROM ENUM_ITEM ORDER BY ENUM_REF', []);
+}
+
+export function selectEnumById(db, id) {
+ return dbGet(db, 'SELECT ENUM_ID, NAME, TYPE FROM ENUM WHERE ENUM_ID = ? ORDER BY NAME', [id])
+}
+
+export function selectAllBitmaps(db) {
+ return dbAll(db, 'SELECT BITMAP_ID, NAME, TYPE FROM BITMAP ORDER BY NAME', [])
+}
+
+export function selectAllBitmapFields(db) {
+ return dbAll(db, 'SELECT NAME, MASK, BITMAP_REF FROM BITMAP_FIELD ORDER BY NAME', [])
+}
+
+export function selectBitmapById(db, id) {
+ return dbGet(db, 'SELECT BITMAP_ID, NAME, TYPE FROM BITMAP WHERE BITMAP_ID = ? ORDER BY NAME', [id])
+}
+
+export function selectAllDomains(db) {
+ return dbAll(db, 'SELECT DOMAIN_ID, NAME FROM DOMAIN ORDER BY NAME', [])
+}
+
+export function selectDomainById(db, id) {
+ return dbGet(db, 'SELECT DOMAIN_ID, NAME FROM DOMAIN WHERE DOMAIN_ID = ? ORDER BY NAME', [id])
+}
+
+export function selectAllStructs(db) {
+ return dbAll(db, 'SELECT STRUCT_ID, NAME FROM STRUCT ORDER BY NAME', [])
+}
+
+export function selectStructById(db, id) {
+ return dbGet(db, 'SELECT STRUCT_ID, NAME FROM STRUCT WHERE STRUCT_ID = ? ORDER BY NAME', [id])
+}
+
+export function selectAllClusters(db) {
+ return dbAll(db, 'SELECT CLUSTER_ID, CODE, MANUFACTURER_CODE, NAME, DESCRIPTION, DEFINE FROM CLUSTER ORDER BY CODE', [])
+}
+
+export function selectClusterById(db, id) {
+ return dbGet(db, 'SELECT CLUSTER_ID, CODE, MANUFACTURER_CODE, NAME, DESCRIPTION FROM CLUSTER WHERE CLUSTER_ID = ?', [id])
+}
+
+export function selectAllDeviceTypes(db) {
+ return dbAll(db, 'SELECT DEVICE_TYPE_ID, CODE, PROFILE_ID, NAME, DESCRIPTION FROM DEVICE_TYPE ORDER BY CODE', [])
+}
+
+export function selectDeviceTypeById(db, id) {
+ return dbGet(db, 'SELECT DEVICE_TYPE_ID, CODE, PROFILE_ID, NAME, DESCRIPTION FROM DEVICE_TYPE WHERE DEVICE_TYPE_ID = ?', [id])
+}
+
+export function selectCountFrom(db, table) {
+ return dbGet(db, `SELECT COUNT(*) FROM ${table}`).then(x => x['COUNT(*)'])
+}
+
+export function selectAttributesByClusterId(db, clusterId) {
+ return dbAll(db, `SELECT ATTRIBUTE_ID, CLUSTER_REF, CODE, MANUFACTURER_CODE, NAME, TYPE, SIDE, DEFINE, MIN, MAX, IS_WRITABLE, DEFAULT_VALUE, IS_OPTIONAL FROM ATTRIBUTE WHERE CLUSTER_REF = ? ORDER BY CODE`, [clusterId])
+}
+
+export function selectCommandsByClusterId(db, clusterId) {
+ return dbAll(db, `SELECT COMMAND_ID, CLUSTER_REF, CODE, MANUFACTURER_CODE, NAME, DESCRIPTION, SOURCE, IS_OPTIONAL FROM COMMAND WHERE CLUSTER_REF = ? ORDER BY CODE`, [clusterId])
+}
+
+
+// Inserts clusters into the database.
+// data is an array of objects that must contain: code, name, description, define
+// It also contains commands: and attributes:
+//
+export function insertClusters(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO CLUSTER (PACKAGE_REF, CODE, NAME, DESCRIPTION, DEFINE) VALUES (?, ?, ?, ?, ?)", data.map(cluster => [packageId, cluster.code, cluster.name, cluster.description, cluster.define]))
+ .then(lastIdsArray => {
+ var commandsToLoad = []
+ var attributesToLoad = []
+ var argsForCommands = []
+ var argsToLoad = []
+ var i
+ for (i = 0; i < lastIdsArray.length; i++) {
+ var lastId = lastIdsArray[i]
+ if ('commands' in data[i]) {
+ var commands = data[i].commands
+ commandsToLoad.push(...commands.map(command => [lastId, command.code, command.name, command.description, command.source, command.isOptional]))
+ argsForCommands.push(...commands.map(command => command.args))
+ }
+ if ('attributes' in data[i]) {
+ var attributes = data[i].attributes
+ attributesToLoad.push(...attributes.map(attribute => [
+ lastId,
+ attribute.code,
+ attribute.name,
+ attribute.type,
+ attribute.side,
+ attribute.define,
+ attribute.min,
+ attribute.max,
+ attribute.isWritable,
+ attribute.defaultValue,
+ attribute.isOptional
+ ]))
+ }
+ }
+ var pCommand = dbMultiInsert(db,
+ "INSERT INTO COMMAND (CLUSTER_REF, CODE, NAME, DESCRIPTION, SOURCE, IS_OPTIONAL) VALUES (?,?,?,?,?,?)",
+ commandsToLoad).then(lids => {
+ var i
+ for (i = 0; i < lids.length; i++) {
+ var lastId = lids[i]
+ var args = argsForCommands[i]
+ if (args != undefined && args != null) {
+ argsToLoad.push(...args.map(arg => [lastId, arg.name, arg.type, arg.isArray]))
+ }
+ }
+ return dbMultiInsert(db,
+ "INSERT INTO COMMAND_ARG (COMMAND_REF, NAME, TYPE, IS_ARRAY) VALUES (?,?,?,?)",
+ argsToLoad)
+ })
+ var pAttribute = dbMultiInsert(db,
+ "INSERT INTO ATTRIBUTE (CLUSTER_REF, CODE, NAME, TYPE, SIDE, DEFINE, MIN, MAX, IS_WRITABLE, DEFAULT_VALUE, IS_OPTIONAL) VALUES (?,?,?,?,?,?,?,?,?,?,?)",
+ attributesToLoad)
+ return Promise.all([pCommand, pAttribute])
+ })
+}
+
+// Inserts device types into the database.
+// data is an array of objects that must contain: code, name, description
+export function insertDeviceTypes(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO DEVICE_TYPE (PACKAGE_REF, CODE, PROFILE_ID, NAME, DESCRIPTION) VALUES (?, ?, ?, ?, ?)", data.map(dt => {
+ return [packageId, dt.code, dt.profileId, dt.name, dt.description]
+ })).then(lastIdsArray => {
+ var i
+ var itemsToLoad = []
+ for (i = 0; i < lastIdsArray.length; i++) {
+ if ('clusters' in data[i]) {
+ var lastId = lastIdsArray[i]
+ var clusters = data[i].clusters
+ itemsToLoad.push(...clusters.map(cluster => [lastId, cluster.clusterName, cluster.client, cluster.server, cluster.clientLocked, cluster.serverLocked]))
+ }
+ }
+ return dbMultiInsert(db,
+ 'INSERT INTO DEVICE_TYPE_CLUSTER (DEVICE_TYPE_REF, CLUSTER_NAME, INCLUDE_CLIENT, INCLUDE_SERVER, LOCK_CLIENT, LOCK_SERVER) VALUES (?,?,?,?,?,?)',
+ itemsToLoad)
+ })
+}
+
+export function updateClusterReferencesForDeviceTypeClusters(db) {
+ return dbUpdate(db, 'UPDATE DEVICE_TYPE_CLUSTER SET CLUSTER_REF = (SELECT CLUSTER.CLUSTER_ID FROM CLUSTER WHERE CLUSTER.NAME = DEVICE_TYPE_CLUSTER.CLUSTER_NAME)', [])
+}
+
+/**
+ *
+ * Inserts domains into the database.
+ * data is an array of objects that must contain: name
+ *
+ * @export
+ * @param {*} db
+ * @param {*} packageId
+ * @param {*} data
+ * @returns A promise that resolves with an array of rowids of all inserted domains.
+ */
+export function insertDomains(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO DOMAIN (PACKAGE_REF, NAME) VALUES (?, ?)", data.map(domain => {
+ return [packageId, domain.name]
+ }))
+}
+
+/**
+ *
+ * Inserts structs into the database.
+ * data is an array of objects that must contain: name
+ *
+ * @export
+ * @param {*} db
+ * @param {*} packageId
+ * @param {*} data
+ * @returns A promise that resolves with an array of struct item rowids.
+ */
+export function insertStructs(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO STRUCT (PACKAGE_REF, NAME) VALUES (?, ?)", data.map(struct => {
+ return [packageId, struct.name]
+ })).then(lastIdsArray => {
+ var i
+ var itemsToLoad = []
+ for (i = 0; i < lastIdsArray.length; i++) {
+ if ('items' in data[i]) {
+ var lastId = lastIdsArray[i]
+ var items = data[i].items
+ itemsToLoad.push(...items.map(item => [lastId, item.name, item.type]))
+ }
+ }
+ return dbMultiInsert(db,
+ "INSERT INTO STRUCT_ITEM (STRUCT_REF, NAME, TYPE) VALUES (?,?,?)",
+ itemsToLoad)
+ })
+}
+
+// Inserts enums into the database.
+// data is an array of objects that must contain: name, type
+export function insertEnums(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO ENUM (PACKAGE_REF, NAME, TYPE) VALUES (?, ?, ?)", data.map(en => {
+ return [packageId, en.name, en.type]
+ })).then(lastIdsArray => {
+ var i
+ var itemsToLoad = []
+ for (i = 0; i < lastIdsArray.length; i++) {
+ if ('items' in data[i]) {
+ var lastId = lastIdsArray[i]
+ var items = data[i].items
+ itemsToLoad.push(...items.map(item => [lastId, item.name, item.value]))
+ }
+ }
+ return dbMultiInsert(db,
+ "INSERT INTO ENUM_ITEM (ENUM_REF, NAME, VALUE) VALUES (?, ?, ?)",
+ itemsToLoad)
+ })
+}
+
+/**
+ * Inserts bitmaps into the database. Data is an array of objects that must contain: name, type
+ *
+ * @export
+ * @param {*} db
+ * @param {*} packageId
+ * @param {*} data Array of object containing 'name' and 'type'.
+ * @returns A promise of bitmap insertions.
+ */
+export function insertBitmaps(db, packageId, data) {
+ return dbMultiInsert(db, "INSERT INTO BITMAP (PACKAGE_REF, NAME, TYPE) VALUES (?, ?, ?)", data.map(bm => [packageId, bm.name, bm.type]))
+ .then(lastIdsArray => {
+ var i
+ var fieldsToLoad = []
+ for (i = 0; i < lastIdsArray.length; i++) {
+ if ('fields' in data[i]) {
+ var lastId = lastIdsArray[i]
+ var fields = data[i].fields
+ fieldsToLoad.push(...fields.map(field => [lastId, field.name, field.mask]))
+ }
+ }
+ return dbMultiInsert(db,
+ "INSERT INTO BITMAP_FIELD (BITMAP_REF, NAME, MASK) VALUES (?, ?, ?)",
+ fieldsToLoad)
+ })
+}
+
+/************************** SESSION QUERIES *************************************/
+
+/**
+ * Promises to delete a session from the database, including all the rows that have the session as a foreign key.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sessionId
+ * @returns A promise of a removal of session.
+ */
+export function deleteSession(db, sessionId) {
+ return dbRemove(db, "DELETE FROM SESSION WHERE SESSION_ID = ?", [sessionId])
+}
+
+/**
+ * Promises to update or insert a key/value pair in SESSION_KEY_VALUE table.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sessionId
+ * @param {*} key
+ * @param {*} value
+ * @returns A promise of creating or updating a row, resolves with the rowid of a new row.
+ */
+export function updateKeyValue(db, sessionId, key, value) {
+ return dbInsert(db, "INSERT OR REPLACE INTO SESSION_KEY_VALUE (SESSION_REF, KEY, VALUE) VALUES (?,?,?)", [sessionId, key, value])
+}
+/**
+ * Promises to update the cluster include/exclude state.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} endpointTypeId
+ * @param {*} clusterId
+ * @param {*} side
+ * @param {*} enabled
+ * @returns Promise to update the cluster exclude/include state.
+ */
+export function insertOrReplaceClusterState(db, endpointTypeId, clusterId, side, enabled) {
+ return dbInsert(db, "INSERT OR REPLACE INTO ENDPOINT_TYPE_CLUSTER ( ENDPOINT_TYPE_REF, CLUSTER_REF, SIDE, ENABLED ) VALUES ( ?, ?, ?, ?)", [endpointTypeId, clusterId, side, enabled])
+}
+
+/*
+ Resolves into all the cluster states.
+*/
+export function getAllEndpointTypeClusterState(db, endpointTypeId) {
+ return dbAll(db, "SELECT CLUSTER.NAME, CLUSTER.CODE, CLUSTER.MANUFACTURER_CODE, ENDPOINT_TYPE_CLUSTER.SIDE, ENDPOINT_TYPE_CLUSTER.ENABLED FROM ENDPOINT_TYPE_CLUSTER INNER JOIN CLUSTER WHERE ENDPOINT_TYPE_CLUSTER.CLUSTER_REF = CLUSTER.CLUSTER_ID AND ENDPOINT_TYPE_CLUSTER.ENDPOINT_TYPE_REF = ?", [endpointTypeId])
+ .then((rows) => new Promise((resolve, reject) => {
+ if (rows == null) {
+ resolve([])
+ } else {
+ var result = rows.map(row => {
+ var obj = {
+ clusterName: row.NAME,
+ clusterCode: row.CODE,
+ side: row.SIDE,
+ enabled: (row.STATE == '1')
+ }
+ if (row.MANUFACTURER_CODE != null)
+ obj.manufacturerCode = row.MANUFACTURER_CODE;
+ return obj
+ })
+ resolve(result)
+ }
+ }))
+}
+
+/**
+* Promises to add an endpoint.
+*
+* @export
+* @param {*} db
+* @param {*} sessionId
+* @param {*} endpointId
+* @param {*} endpointTypeRef
+* @param {*} networkId
+* @returns Promise to update endpoints.
+*/
+export function insertEndpoint(db, sessionId, endpointId, endpointTypeRef, networkId) {
+ return dbInsert(db, "INSERT OR REPLACE INTO ENDPOINT ( SESSION_REF, ENDPOINT_ID, ENDPOINT_TYPE_REF, NETWORK_ID ) VALUES ( ?, ?, ?, ?)", [sessionId, endpointId, endpointTypeRef, networkId])
+}
+
+/**
+ * Deletes an endpoint.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} id
+ * @returns Promise to delete an endpoint that resolves with the number of rows that were deleted.
+ */
+export function deleteEndpoint(db, id) {
+ return dbRemove(db, "DELETE FROM ENDPOINT WHERE ENDPOINT_REF = ?", [id])
+}
+
+/**
+* Promises to add an endpoint type.
+*
+* @export
+* @param {*} db
+* @param {*} sessionId
+* @param {*} name
+* @param {*} deviceTypeRef
+* @returns Promise to update endpoints.
+*/
+export function insertEndpointType(db, sessionId, name, deviceTypeRef) {
+ return dbInsert(db, "INSERT OR REPLACE INTO ENDPOINT_TYPE ( SESSION_REF, NAME, DEVICE_TYPE_REF ) VALUES ( ?, ?, ?)", [sessionId, name, deviceTypeRef])
+}
+
+/**
+ * Promise to delete an endpoint type.
+ * @param {*} db
+ * @param {*} sessionId
+ * @param {*} id
+ */
+
+export function deleteEndpointType(db, id) {
+ return dbRemove(db, "DELETE FROM ENDPOINT_TYPE WHERE ENDPOINT_TYPE_ID = ?", [id])
+}
+
+
+
+/**
+ * Resolves to an array of objects that contain 'key' and 'value'
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sessionId
+ * @returns Promise to retrieve all session key values.
+ */
+export function getAllSesionKeyValues(db, sessionId) {
+ return dbAll(db, "SELECT KEY, VALUE FROM SESSION_KEY_VALUE WHERE SESSION_REF = ? ORDER BY KEY", [sessionId])
+ .then((rows) => new Promise((resolve, reject) => {
+ if (rows == null) {
+ resolve([])
+ } else {
+ var result = rows.map(row => {
+ return {
+ key: row.KEY,
+ value: row.VALUE
+ }
+ })
+ resolve(result)
+ }
+ }))
+}
+/**
+ * Resolves to an array of endpoint types.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sessionId
+ * @returns Promise to retrieve all endpoint types.
+ */
+export function getAllEndpointTypes(db, sessionId) {
+ return dbAll(db, "SELECT NAME, DEVICE_TYPE_REF FROM ENDPOINT_TYPE WHERE SESSION_REF = ? ORDER BY NAME", [sessionId])
+ .then((rows) => new Promise((resolve, reject) => {
+ if (rows == null) {
+ resolve([])
+ } else {
+ var result = rows.map(rows => {
+ return {
+ name: row.NAME
+ }
+ })
+ resolve(result)
+ }
+ }))
+}
+
+/**
+ * Returns a promise that resolves into an array of objects containing 'sessionId', 'sessionKey' and 'creationTime'.
+ *
+ * @export
+ * @param {*} db
+ * @returns A promise of executing a query.
+ */
+export function getAllSessions(db) {
+ return dbAll(db, "SELECT SESSION_ID, SESSION_KEY, CREATION_TIME FROM SESSION", [])
+ .then(rows => {
+ if (rows == null) {
+ reject()
+ } else {
+ var map = rows.map(row => {
+ return {
+ sessionId: row.SESSION_ID,
+ sessionKey: row.SESSION_KEY,
+ creationTime: row.CREATION_TIME
+ }
+ })
+ return Promise.resolve(map)
+ }
+ })
+}
+
+export function setSessionClean(db, sessionId) {
+ return dbUpdate(db, "UPDATE SESSION SET DIRTY = ? WHERE SESSION_ID = ?", [0, sessionId])
+}
+/**
+ * Resolves with true or false, depending whether this session is dirty.
+ *
+ * @export
+ * @param {*} db
+ * @param {*} sessionId
+ * @returns A promise that resolves into true or false, reflecting session dirty state.
+ */
+export function getSessionDirtyFlag(db, sessionId) {
+ return dbGet(db, "SELECT DIRTY FROM SESSION WHERE SESSION_ID = ?", [sessionId])
+ .then(row => {
+ if ( row == null ) {
+ reject()
+ } else {
+ return Promise.resolve(row.DIRTY)
+ }
+ })
+}
+
+export function getSessionIdFromWindowdId(db, windowId) {
+ return dbGet(db, "SELECT SESSION_ID, SESSION_KEY, CREATION_TIME FROM SESSION WHERE SESSION_WINID = ?", [windowId])
+ .then(row => {
+ if (row == null) {
+ reject()
+ } else {
+ return Promise.resolve({
+ sessionId: row.SESSION_ID,
+ sessionKey: row.SESSION_KEY,
+ creationTime: row.CREATION_TIME
+ })
+ }
+ })
+}
+
+export function ensureZapSessionId(db, sessionKey, windowId) {
+ return dbGet(db, "SELECT SESSION_ID FROM SESSION WHERE SESSION_KEY = ?", [sessionKey])
+ .then(row => {
+ if (row == null) {
+ return dbInsert(db, "INSERT INTO SESSION (SESSION_KEY, SESSION_WINID, CREATION_TIME) VALUES (?,?,?)", [sessionKey, windowId, Date.now()])
+ } else {
+ return Promise.resolve(row.SESSION_ID)
+ }
+ })
+}
+
diff --git a/src-electron/db/zap-schema.sql b/src-electron/db/zap-schema.sql
new file mode 100644
index 0000000000..e399a7d233
--- /dev/null
+++ b/src-electron/db/zap-schema.sql
@@ -0,0 +1,233 @@
+/*
+ PACKAGE table contains the "packages" that are the sources for the
+ loading of the other data. They may be individual files, or
+ collection of files.
+
+ Table records the CRC at the time loading.
+*/
+CREATE TABLE IF NOT EXISTS "PACKAGE" (
+ "PACKAGE_ID" integer primary key autoincrement,
+ "PATH" text NOT NULL UNIQUE,
+ "CRC" integer
+);
+/*
+ CLUSTER table contains the clusters loaded from the ZCL XML files.
+*/
+CREATE TABLE IF NOT EXISTS "CLUSTER" (
+ "CLUSTER_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "CODE" integer,
+ "MANUFACTURER_CODE" integer,
+ "NAME" text,
+ "DESCRIPTION" text,
+ "DEFINE" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+/*
+ COMMAND table contains commands contained inside a cluster.
+*/
+CREATE TABLE IF NOT EXISTS "COMMAND" (
+ "COMMAND_ID" integer primary key autoincrement,
+ "CLUSTER_REF" integer,
+ "CODE" integer,
+ "MANUFACTURER_CODE" integer,
+ "NAME" text,
+ "DESCRIPTION" text,
+ "SOURCE" text,
+ "IS_OPTIONAL" integer,
+ foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID)
+);
+/*
+ COMMAND_ARG table contains arguments for a command.
+*/
+CREATE TABLE IF NOT EXISTS "COMMAND_ARG" (
+ "COMMAND_REF" integer,
+ "NAME" text,
+ "TYPE" text,
+ "IS_ARRAY" integer,
+ foreign key (COMMAND_REF) references COMMAND(COMMAND_ID)
+);
+/*
+ ATTRIBUTE table contains attributes for the cluster.
+*/
+CREATE TABLE IF NOT EXISTS "ATTRIBUTE" (
+ "ATTRIBUTE_ID" integer primary key autoincrement,
+ "CLUSTER_REF" integer,
+ "CODE" integer,
+ "MANUFACTURER_CODE" integer,
+ "NAME" text,
+ "TYPE" text,
+ "SIDE" text,
+ "DEFINE" text,
+ "MIN" text,
+ "MAX" text,
+ "IS_WRITABLE" integer,
+ "DEFAULT_VALUE" text,
+ "IS_OPTIONAL" integer,
+ foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID)
+);
+/*
+ BITMAP table contains the bitmaps directly loaded from packages.
+*/
+CREATE TABLE IF NOT EXISTS "BITMAP" (
+ "BITMAP_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "NAME" text,
+ "TYPE" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+/*
+ BITMAP_FIELD contains items that make up a bitmap.
+*/
+CREATE TABLE IF NOT EXISTS "BITMAP_FIELD" (
+ "BITMAP_REF" integer,
+ "NAME" text,
+ "MASK" integer,
+ foreign key(BITMAP_REF) references BITMAP(BITMAP_ID)
+);
+/*
+ DOMAIN table contains domains directly loaded from packages.
+*/
+CREATE TABLE IF NOT EXISTS "DOMAIN" (
+ "DOMAIN_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "NAME" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+/*
+ ENUM table contains enums directly loaded from packages.
+*/
+CREATE TABLE IF NOT EXISTS "ENUM" (
+ "ENUM_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "NAME" text,
+ "TYPE" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+/*
+ ENUM_ITEM table contains individual enum items.
+*/
+CREATE TABLE IF NOT EXISTS "ENUM_ITEM" (
+ "ENUM_REF" integer,
+ "NAME" text,
+ "VALUE" integer,
+ foreign key (ENUM_REF) references ENUM(ENUM_ID)
+);
+/*
+ STRUCT table contains structs directly loaded from packages.
+*/
+CREATE TABLE IF NOT EXISTS "STRUCT" (
+ "STRUCT_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "NAME" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+/*
+ STRUCT_ITEM table contains individual struct items.
+*/
+CREATE TABLE IF NOT EXISTS "STRUCT_ITEM" (
+ "STRUCT_REF" integer,
+ "NAME" text,
+ "TYPE" text,
+ foreign key (STRUCT_REF) references STRUCT(STRUCT_ID)
+);
+/*
+ DEVICE_TYPE table contains device types directly loaded from packages.
+*/
+CREATE TABLE IF NOT EXISTS "DEVICE_TYPE" (
+ "DEVICE_TYPE_ID" integer primary key autoincrement,
+ "PACKAGE_REF" integer,
+ "CODE" integer,
+ "PROFILE_ID" integer,
+ "NAME" text,
+ "DESCRIPTION" text,
+ foreign key (PACKAGE_REF) references PACKAGE(PACKAGE_ID)
+);
+
+/*
+ DEVICE_TYPE_CLUSTER contains clusters that belong to the device type.
+ */
+CREATE TABLE IF NOT EXISTS "DEVICE_TYPE_CLUSTER" (
+ "DEVICE_TYPE_REF" integer,
+ "CLUSTER_REF" integer,
+ "CLUSTER_NAME" text,
+ "INCLUDE_CLIENT" integer,
+ "INCLUDE_SERVER" integer,
+ "LOCK_CLIENT" integer,
+ "LOCK_SERVER" integer,
+ foreign key (DEVICE_TYPE_REF) references DEVICE_TYPE(DEVICE_TYPE_ID),
+ foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID)
+);
+/*
+ SESSION table contains the list of known and remembered sessions.
+ In case of electron SESSION_WINID is the window ID for a given
+ session.
+*/
+CREATE TABLE IF NOT EXISTS "SESSION" (
+ "SESSION_ID" integer primary key autoincrement,
+ "SESSION_KEY" text,
+ "SESSION_WINID" text,
+ "CREATION_TIME" integer,
+ "DIRTY" integer default 1,
+ UNIQUE(SESSION_KEY)
+);
+/*
+ SESSION_KEY_VALUE table contains the data points that are simple
+ key/value pairs.
+*/
+CREATE TABLE IF NOT EXISTS "SESSION_KEY_VALUE" (
+ "SESSION_REF" integer,
+ "KEY" text,
+ "VALUE" text,
+ foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade
+);
+/*
+ ENDPOINT_TYPE contains the bulk of the configuration: clusters, attributes, etc.
+*/
+CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE" (
+ "ENDPOINT_TYPE_ID" integer primary key autoincrement,
+ "SESSION_REF" integer,
+ "NAME" text,
+ "DEVICE_TYPE_REF" integer,
+ foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
+ foreign key(DEVICE_TYPE_REF) references DEVICE_TYPE(DEVICE_TYPE_ID)
+);
+/*
+ ENDPOINT table contains the toplevel configured endpoints.
+*/
+CREATE TABLE IF NOT EXISTS "ENDPOINT" (
+ "ENDPOINT_REF" integer primary key autoincrement,
+ "SESSION_REF" integer,
+ "ENDPOINT_ID" integer,
+ "ENDPOINT_TYPE_REF" integer,
+ "PROFILE" integer,
+ "NETWORK_ID" integer,
+ foreign key (SESSION_REF) references SESSION(SESSION_ID) on delete cascade,
+ foreign key (ENDPOINT_TYPE_REF) references ENDPOINT_TYPE(ENDPOINT_TYPE_ID)
+);
+/*
+ SESSION_CLUSTER contains the on/off values for cluster.
+ SIDE is client or server
+ STATE is 1 for ON and 0 for OFF.
+*/
+CREATE TABLE IF NOT EXISTS "ENDPOINT_TYPE_CLUSTER" (
+ "ENDPOINT_TYPE_REF" integer,
+ "CLUSTER_REF" integer,
+ "SIDE" text,
+ "ENABLED" integer,
+ foreign key (ENDPOINT_TYPE_REF) references ENDPOINT_TYPE(ENDPOINT_TYPE_ID) on delete cascade,
+ foreign key (CLUSTER_REF) references CLUSTER(CLUSTER_ID)
+);
+/*
+ SETTING table contains site-specific application settings, regardless of a user configuration session.
+ Essentially application preferences.
+*/
+CREATE TABLE IF NOT EXISTS "SETTING" (
+ "CATEGORY" text,
+ "KEY" text,
+ "VALUE" text
+);
+
+/*
+ Triggers to maintain "dirty" flag in a session.
+ */
\ No newline at end of file
diff --git a/src-electron/electron-flag.d.ts b/src-electron/electron-flag.d.ts
new file mode 100644
index 0000000000..a78cbf501a
--- /dev/null
+++ b/src-electron/electron-flag.d.ts
@@ -0,0 +1,9 @@
+// THIS FEATURE-FLAG FILE IS AUTOGENERATED,
+// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
+import "quasar/dist/types/feature-flag";
+
+declare module "quasar/dist/types/feature-flag" {
+ interface QuasarFeatureFlags {
+ electron: true;
+ }
+}
diff --git a/src-electron/generator/static_generator.js b/src-electron/generator/static_generator.js
new file mode 100644
index 0000000000..db486cba39
--- /dev/null
+++ b/src-electron/generator/static_generator.js
@@ -0,0 +1,283 @@
+/**
+ * Copyright (c) 2020 Silicon Labs. All rights reserved.
+ *
+ * @module JS API: generator logic
+ */
+import Handlebars from 'handlebars';
+var fs = require('fs-extra');
+
+import { selectAllClusters, selectAllEnums, selectAllEnumItems, selectAllBitmaps, selectAllBitmapFields } from "../db/query.js"
+
+/**
+ * Find the handlebar template file, compile and return the template file.
+ * In the case of Generate this will take the template directory mentioned.
+ * However in the case of the browser the templates come from the
+ * zcl/generation-templates repository.
+ *
+ * @param {string} [templateDirectory=""] Directory where the templates reside
+ * @param {string} [name=""] Name of the template file
+ * @returns A compiled Template
+ */
+Handlebars.getTemplate = function(templateDirectory = "", name = "") {
+ var source = "";
+ if (templateDirectory) {
+ source = fs.readFileSync(templateDirectory + '/' + name, 'utf8');
+ } else {
+ templateDirectory = __dirname + '/../../zcl/generation-templates';
+ source = fs.readFileSync(templateDirectory + '/' + name, 'utf8');
+ }
+ return Handlebars.compile(source);
+};
+
+/**
+ * Resolve is listed on the map containing the database.
+ *
+ * @export
+ * @param {Object} db database
+ * @returns A promise with resolve listed on the map
+ */
+export function mapDatabase(db) {
+ return new Promise((resolve, reject) => {
+ var resultantMap = {};
+ resultantMap.database = db;
+ resolve(resultantMap);
+ })
+}
+
+/**
+ * Resolve the handlebar template directory to be able to use the correct
+ * handlebar templates for generation/preview.
+ *
+ * @export
+ * @param {Object} map HashMap
+ * @param {string} handlebarTemplateDirectory Handlebar template directory path
+ * @returns A promise with resolve listed on a map which has the handlebar
+ * directory.
+ */
+export function resolveTemplateDirectory(map, handlebarTemplateDirectory="") {
+ return new Promise((resolve, reject) => {
+ map.handlebarTemplateDirectory = handlebarTemplateDirectory;
+ resolve(map);
+ })
+}
+
+/**
+ * Resolve the compiled handlebar templates for use.
+ *
+ * @export
+ * @param {Object} map Map for database and template directory
+ * @param {string[]} templateFiles Array of handlebar template files
+ * @returns A promise with resolve listed on a map which has the compiled
+ * templates.
+ */
+export function compileTemplate(map, templateFiles) {
+ return new Promise((resolve, reject) => {
+ for (let i=0; i {
+ var db = map.database;
+ var dbInfo = [];
+ for (let i=0; i map[dbRowType[i]] = dbRows);
+ }
+ else if (dbRowType[i] == "enums") {
+ dbInfo[i] = selectAllEnums(db)
+ .then((dbRows) => map[dbRowType[i]] = dbRows);
+ } else if (dbRowType[i] == "bitmaps") {
+ dbInfo[i] = selectAllBitmaps(db)
+ .then((dbRows) => map[dbRowType[i]] = dbRows);
+ }
+ }
+ // Going through an array of promises and resolving them.
+ Promise.all(dbInfo).then(() => {
+ resolve(map);
+ }).catch(
+ (reason) => {
+ console.log('infoFromDb Handle rejected promise ('+reason+') here.');
+ }
+ )
+ })
+}
+
+/**
+ * Additional information attached to each database row. Essentially a way
+ * to group by content.
+ *
+ * @export
+ * @param {Object} map Map containing database, compiled templates, database and
+ * database rows for different datbase types.
+ * @param {Object} groupByParams Object to group information by
+ * @param {string} groupByParams.subItemName
+ * @param {string} groupByParams.foreignKey
+ * @param {string} groupByParams.primaryKey
+ * @param {string} groupByParams.dbType
+ * @param {string} groupByParams.columns
+ * @returns A promise with resolve listed on a map which has the database,
+ * compiled templates and database rows along with additional grouped by
+ * content.
+ */
+export function groupInfoIntoDbRow(map, groupByParams) {
+ return new Promise((resolve, reject) => {
+ var subItemName = groupByParams.tableName;
+ var foreignKey = groupByParams.foreignKey;
+ var primaryKey = groupByParams.primaryKey
+ var dbType = groupByParams.dbType;
+ var columns = groupByParams.columns;
+
+ var db = map.database;
+ var dbRows = map[dbType];
+ var subDbRows = [];
+ var subItems;
+ if (subItemName == 'ENUM_ITEMS') {
+ subItems = selectAllEnumItems(db);
+ } else if (subItemName == 'BITMAP_FIELDS') {
+ subItems = selectAllBitmapFields(db);
+ } else {
+ return;
+ }
+ subItems.then(function(rows) {
+ for (let i=0; i {
+ console.log('groupInfoIntoDbRow Handle rejected promise ('+reason+') here.');
+ })
+ })
+}
+
+/**
+ * Resolve the helper functions to be used in later promises.
+ *
+ * @export
+ * @param {Object} map
+ * @param {Object} helperFunctions Map for handlebar helper name to helper function
+ * @returns A promise with resolve listed on a map which has the helper
+ * functions.
+ */
+export function resolveHelper(map, helperFunctions) {
+ return new Promise((resolve, reject) => {
+ map.helperFunctions = helperFunctions;
+ resolve(map);
+ })
+}
+
+/**
+ * Resolve the generation directory to be able to generate to the correct
+ * directory.
+ *
+ * @export
+ * @param {Object} map
+ * @param {string} generationDirectory generation directory path.
+ * @returns A promise with resolve listed on a map which has the generation
+ * directory.
+ */
+export function resolveGenerationDirectory(map, generationDirectory) {
+ return new Promise((resolve, reject) => {
+ map.generationDirectory = generationDirectory;
+ resolve(map);
+ })
+}
+
+/**
+ * The database information is used to show the generation output to a preview
+ * pane using the compiled handlebar templates.
+ *
+ * @export
+ * @param {Object} map
+ * @param {Object[]} databaseRowToHandlebarTemplateFileMap Map linking the
+ * database row type with handlebar template file.
+ * @param {string} databaseRowToHandlebarTemplateFileMap.dbRowType Database
+ * row type
+ * @param {string} databaseRowToHandlebarTemplateFileMap.hTemplateFile Handlebar
+ * template file
+ * @returns A promise with resolve listed on the data which can be seen in the
+ * preview pane.
+ */
+export function generateDataToPreview(map, databaseRowToHandlebarTemplateFileMap) {
+ return new Promise((resolve, reject) => {
+ var result='';
+ for (let i=0; i {
+ var result='';
+ var generationDirectory = map.generationDirectory;
+ for (let i=0; i {
+ yargs.positional('outputDir', {
+ alias: 'o',
+ description: 'Output directory for generated files.'
+ })
+ })
+ .command(
+ 'selfcheck',
+ 'Perform the self-check of the application.'
+ )
+ .option('httpPort', {
+ desc: 'Port used for the HTTP server',
+ alias: 'p',
+ type: 'number',
+ default: httpPort
+ })
+ .option('zclProperties', {
+ desc: 'zcl.properties file to read in.',
+ alias: 'zcl',
+ type: 'string',
+ default: zclPropertiesFile
+ })
+ .option('noUi', {
+ desc: 'Don\'t show the main window when starting.'
+ })
+ .usage('Usage: $0 [options]')
+ .help()
+ .parse(argv)
+
+
+ // Now populate exported variables with this.
+ logInfo('Command line arguments:')
+ logInfo(ret)
+
+ zclPropertiesFile = ret.zclProperties
+ httpPort = ret.httpPort
+
+ return ret
+}
diff --git a/src-electron/main-process/electron-main.dev.js b/src-electron/main-process/electron-main.dev.js
new file mode 100644
index 0000000000..ca132ed730
--- /dev/null
+++ b/src-electron/main-process/electron-main.dev.js
@@ -0,0 +1,28 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import { logError, logInitStdout } from './env.js'
+
+/**
+ * This file is used specifically and only for development. It installs
+ * `electron-debug` & `vue-devtools`. There shouldn't be any need to
+ * modify this file, but it can be used to extend your development
+ * environment.
+ */
+
+logInitStdout()
+
+// Install `electron-debug` with `devtron`
+require('electron-debug')({ showDevTools: false })
+
+// Install `vue-devtools`
+require('electron').app.on('ready', () => {
+ let installExtension = require('electron-devtools-installer')
+ installExtension.default(installExtension.VUEJS_DEVTOOLS)
+ .then(() => {})
+ .catch(err => {
+ logError('Unable to install `vue-devtools`: \n', err)
+ })
+})
+
+// Require `main` process to boot app
+require('./electron-main')
diff --git a/src-electron/main-process/electron-main.js b/src-electron/main-process/electron-main.js
new file mode 100644
index 0000000000..6205e069aa
--- /dev/null
+++ b/src-electron/main-process/electron-main.js
@@ -0,0 +1,85 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import { app } from 'electron'
+import { initHttpServer } from '../server/http-server.js'
+import { initializeElectronUi, windowCreateIfNotThere } from './window.js'
+import { processCommandLineArguments, zclPropertiesFile, httpPort } from './args.js'
+import { initDatabase, closeDatabase, loadSchema } from '../db/db-api.js'
+import { setMainDatabase, mainDatabase, logInfo, logError, logWarning, logInit, logInitLogFile, logInitStdout, sqliteFile, setDevelopmentEnv, setProductionEnv, schemaFile } from './env.js'
+import { loadZcl } from '../zcl/zcl-loader.js'
+import { version } from '../../package.json'
+
+logInitLogFile()
+
+if (process.env.DEV) {
+ setDevelopmentEnv()
+} else {
+ setProductionEnv()
+}
+
+function attachToDb(db) {
+ return new Promise((resolve, reject) => {
+ setMainDatabase(db)
+ resolve(db)
+ })
+}
+
+function startSelfCheck() {
+ logInitStdout()
+ logInfo('Starting self-check')
+ initDatabase(sqliteFile())
+ .then((db) => attachToDb(db))
+ .then((db) => loadSchema(db, schemaFile(), version))
+ .then((db) => loadZcl(db, zclPropertiesFile))
+ .then(() => {
+ logInfo('Self-check done!')
+ }).catch((err)=> {
+ logError(err)
+ throw err
+ })
+}
+
+function startNormal(ui) {
+ initDatabase(sqliteFile())
+ .then((db) => attachToDb(db))
+ .then((db) => loadSchema(db, schemaFile(), version))
+ .then((db) => loadZcl(db, zclPropertiesFile))
+ .then((db) => initHttpServer(db, httpPort))
+ .then(() => {
+ if (ui) {
+ initializeElectronUi(httpPort)
+ } else {
+ if (app.dock)
+ app.dock.hide()
+ }
+ })
+ .catch((err) => {
+ logError(err)
+ throw err
+ })
+}
+
+app.on('ready', () => {
+ var argv = processCommandLineArguments(process.argv)
+
+ if ( argv._.includes('selfcheck')) {
+ startSelfCheck()
+ } else {
+ startNormal(!argv.noUi)
+ }
+})
+
+app.on('window-all-closed', () => {
+ if (process.platform !== 'darwin') {
+ app.quit()
+ }
+})
+
+app.on('activate', () => {
+ logInfo('Activate...')
+ windowCreateIfNotThere(httpPort)
+})
+
+app.on('quit', () => {
+ closeDatabase(mainDatabase()).then(() => logInfo('Database closed, shutting down.'))
+})
diff --git a/src-electron/main-process/env.js b/src-electron/main-process/env.js
new file mode 100644
index 0000000000..c40f45813f
--- /dev/null
+++ b/src-electron/main-process/env.js
@@ -0,0 +1,88 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+import path from 'path'
+import os from 'os'
+import fs from 'fs'
+import pino from 'pino'
+
+// Basic environment tie-ins
+var pino_logger = pino({
+ level: 'info'
+})
+
+var explicit_logger_set = false
+var dbInstance
+
+export function setDevelopmentEnv() {
+ global.__statics = path.join('src', 'statics').replace(/\\/g, '\\\\')
+ global.__indexDirOffset = path.join('../../dist/spa');
+}
+
+export function setProductionEnv() {
+ global.__statics = path.join(__dirname, 'statics').replace(/\\/g, '\\\\')
+ global.__indexDirOffset = path.join('.').replace(/\\/g, '\\\\')
+}
+
+export function setMainDatabase(db) {
+ dbInstance = db
+}
+
+export function mainDatabase() {
+ return dbInstance
+}
+
+// Returns an app directory. It creates it, if it doesn't exist
+export function appDirectory () {
+ var appDir = path.join(os.homedir(), '.silabs', 'zap')
+
+ if (!fs.existsSync(appDir)) {
+ fs.mkdirSync(appDir, { recursive: true }, (err) => {
+ if (err) throw err
+ })
+ }
+ return appDir
+}
+
+export function iconsDirectory() {
+ return path.join(__dirname, '../icons')
+}
+
+export function schemaFile() {
+ var p = path.join(__dirname, '../db/zap-schema.sql')
+ if ( !fs.existsSync(p) )
+ p = path.join(__dirname, '../zap-schema.sql')
+ if ( !fs.existsSync(p))
+ throw new Error('Could not locate zap-schema.sql file.')
+ return p
+}
+
+export function sqliteFile() {
+ return path.join(appDirectory(), 'zap.sqlite')
+}
+
+export function sqliteTestFile(id) {
+ return path.join(appDirectory(), `test-${id}.sqlite`)
+}
+
+export function logInitStdout () {
+ if (!explicit_logger_set) {
+ pino_logger = pino()
+ explicit_logger_set = true
+ }
+}
+
+export function logInitLogFile () {
+ if (!explicit_logger_set) {
+ pino_logger = pino(pino.destination(path.join(appDirectory(), 'zap.log')))
+ explicit_logger_set = true
+ }
+}
+
+// Use this function to log info-level messages
+export function logInfo (msg) { return pino_logger.info(msg) }
+
+// Use this function to log error-level messages
+export function logError (msg) { return pino_logger.error(msg) }
+
+// Use this function to log warning-level messages
+export function logWarning (msg) { return pino_logger.warn(msg) }
diff --git a/src-electron/main-process/importexport.js b/src-electron/main-process/importexport.js
new file mode 100644
index 0000000000..29a61e0ba6
--- /dev/null
+++ b/src-electron/main-process/importexport.js
@@ -0,0 +1,70 @@
+/*
+ * Created Date: Tuesday, March 10th 2020, 4:19:32 pm
+ * Author: Timotej Ecimovic
+ *
+ * Copyright (c) 2020 Silicon Labs
+ *
+ * This file provides functionality provides file operations for zap, namely the export
+ * from the database and the import into the database.
+ */
+
+import fs from 'fs'
+import { getAllSesionKeyValues, getAllSessionClusterState, getAllEndpointTypes } from '../db/query'
+import { logInfo } from './env'
+
+function createStateFromDatabase(db, sessionId) {
+ return new Promise((resolve, reject) => {
+ var state = {
+ writeTime: (new Date()).toString(),
+ creator: 'zap',
+ }
+ var promises = []
+
+ // Deal with the key/value table
+ var getKeyValues = getAllSesionKeyValues(db, sessionId)
+ .then(rows => {
+ state.keyValuePairs = rows
+ return Promise.resolve(rows)
+ })
+
+ var getAllEndpoint = getAllEndpointTypes(db, sessionId)
+ .then(rows => {
+ state.endpointTypes = rows
+ return Promise.resolve(rows)
+ })
+ promises.push(getKeyValues)
+
+ Promise.all(promises)
+ .then(() => resolve(state))
+ })
+}
+
+function writeStateToDatabase(sessionId, state) {
+ return new Promise((resolve,reject) => {
+ resolve()
+ })
+}
+
+// Take a given session ID and export the data into the file
+export function exportDataIntoFile(db, sessionId, filePath) {
+ return createStateFromDatabase(db, sessionId)
+ .then(state => {
+ return new Promise((resolve, reject) => {
+ fs.writeFile(filePath, JSON.stringify(state, null, 2), (err) => {
+ if (err) reject(err)
+ resolve(filePath)
+ })
+ })
+ })
+}
+
+// Take a given session ID and import the data from the file
+export function importDataFromFile(sessionId, filePath) {
+ return new Promise((resolve, reject) => {
+ fs.readFile(filePath, (err, data) => {
+ if (err) reject(err)
+ let state = JSON.parse(data)
+ resolve(state)
+ })
+ }).then(state => writeStateToDatabase(sessionId, state))
+}
\ No newline at end of file
diff --git a/src-electron/main-process/menu.js b/src-electron/main-process/menu.js
new file mode 100644
index 0000000000..e086ebe9a3
--- /dev/null
+++ b/src-electron/main-process/menu.js
@@ -0,0 +1,258 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import { Menu, dialog } from 'electron'
+import { windowCreate } from './window.js'
+import { mainDatabase, logError, logInfo, appDirectory } from './env.js'
+import { mapDatabase, resolveTemplateDirectory, compileTemplate, infoFromDb, generateDataToFile, groupInfoIntoDbRow, resolveHelper } from '../generator/static_generator.js'
+import { getUppercase, getStrong, getHexValue } from "../handlebars/helpers/helper_utils.js"
+import { getSessionIdFromWindowdId } from '../db/query.js'
+import { exportDataIntoFile } from './importexport.js'
+import { showErrorMessage } from './ui.js'
+
+var httpPort
+var generationDirectory = appDirectory() + "/generation-output"
+var handlebarTemplateDirectory = __dirname + '/../../zcl/generation-templates'
+
+const template = [
+ {
+ role: 'fileMenu',
+ submenu: [
+ {
+ label: 'Generate Code',
+ click (menuItem, browserWindow, event) {
+ generateInDir(browserWindow)
+ }
+ },
+ {
+ label: 'Handlebar Template Directory',
+ click (menuItem, browserWindow, event) {
+ setHandlebarTemplateDirectory(browserWindow)
+ }
+ },
+ {
+ label: 'Open File...',
+ click (menuItem, browserWindow, event) {
+ doOpen(menuItem, browserWindow, event)
+ }
+ },
+ {
+ type: 'separator'
+ },
+ {
+ label: 'Session Information...',
+ click (menuItem, browserWindow, event) {
+ let winId = browserWindow.id
+ getSessionIdFromWindowdId(mainDatabase(), winId).then(row => {
+ dialog.showMessageBox(browserWindow, {
+ title: 'Information',
+ message: `Window id: ${winId}\nZap session id: ${row.sessionId}\nSession key: ${row.sessionKey}\nTime: ${new Date(row.creationTime)}`,
+ buttons: [ 'Dismiss' ]
+ })
+ }).catch(err => showErrorMessage('Session info', err))
+ }
+ },
+ {
+ label: 'Save'
+ },
+ {
+ label: 'Save As...',
+ click (menuItem, browserWindow, event) {
+ doSaveAs(menuItem, browserWindow, event)
+ }
+ },
+ {
+ type: 'separator'
+ },
+ {
+ role: 'close'
+ },
+ {
+ type: 'separator'
+ },
+ {
+ role: 'quit'
+ }
+ ]
+ },
+ {
+ role: 'editMenu'
+ },
+ {
+ role: 'viewMenu'
+ },
+ {
+ role: 'windowMenu'
+ },
+ {
+ label: 'Help',
+ submenu: [
+ {
+ role: 'about'
+ }
+ ]
+ }
+]
+
+function doOpen(menuItem, browserWindow, event) {
+ dialog.showOpenDialog({
+ properties: ['multiSelections']
+ }).then(result => {
+ if (!result.canceled) {
+ fileOpen(mainDatabase(), browserWindow.id, result.filePaths)
+ }
+ }).catch(err => showErrorMessage('Open file', err))
+}
+
+function doSaveAs(menuItem, browserWindow, event) {
+ dialog.showSaveDialog({}).then(result => {
+ if(!result.canceled) {
+ return fileSave(mainDatabase(), browserWindow.id, result.filePath)
+ } else {
+ return Promise.resolve(null)
+ }
+ }).then(filePath => {
+ if ( filePath != null ) {
+ dialog.showMessageBox(browserWindow, {
+ title: 'Save',
+ message: `Save done. Output: ${filePath}`,
+ buttons: [ 'Ok' ]
+ })
+ }
+ })
+ .catch(err => showErrorMessage('Save file', err))
+}
+
+/**
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+*/
+function generateInDir(browserWindow) {
+ dialog.showOpenDialog({properties: ['openDirectory']}).then(result => {
+ if(!result.canceled) {
+ return Promise.resolve(result.filePaths[0])
+ } else {
+ return Promise.resolve(null)
+ }
+ }).then(filePath => {
+ if ( filePath != null ) {
+ generationDirectory = filePath
+ generateCode(mainDatabase())
+ dialog.showMessageBox(browserWindow, {
+ title: 'Generation',
+ message: `Generation Output: ${filePath}`,
+ buttons: [ 'Ok' ]
+ })
+ }
+ })
+ .catch(err => showErrorMessage('Save file', err))
+}
+
+/**
+Given: Browser Window
+Returns: N/A
+Description: This function gets the directory where user wants the output and
+calls generateCode function which generates the code in the user selected
+output.
+*/
+function setHandlebarTemplateDirectory(browserWindow) {
+ dialog.showOpenDialog({properties: ['openDirectory']}).then(result => {
+ if(!result.canceled) {
+ return Promise.resolve(result.filePaths[0])
+ } else {
+ return Promise.resolve(null)
+ }
+ }).then(filePath => {
+ if ( filePath != null ) {
+ handlebarTemplateDirectory = filePath
+ dialog.showMessageBox(browserWindow, {
+ title: 'Handlebar Templates',
+ message: `Handlebar Template Directory: ${filePath}`,
+ buttons: [ 'Ok' ]
+ })
+ }
+ })
+ .catch(err => showErrorMessage('Save file', err))
+}
+
+/**
+Given: N/A
+Returns: N/A
+Description: This function generates the code into the user defined directory using promises
+*/
+function generateCode (db) {
+ const HANDLEBAR_HELPER_UPPERCASE = 'uppercase';
+ const HANDLEBAR_HELPER_STRONG = 'strong';
+ const HANDLEBAR_HELPER_HEX_VALUE = 'hexValue';
+ const HANDLEBAR_TEMPLATE_FILE_CLUSTERS = "cluster-id.handlebars"
+ const HANDLEBAR_TEMPLATE_FILE_ENUMS = "enums.handlebars"
+ const HANDLEBAR_TEMPLATE_FILE_BITMAPS = "bitmaps.handlebars"
+ const DATABASE_ROW_TYPE_CLUSTER = "clusters"
+ const DATABASE_ROW_TYPE_ENUMS = "enums"
+ const DATABASE_ROW_TYPE_BITMAPS = "bitmaps"
+
+ //cluster-id.h generation
+ var clusterHandleBarHelpers = {}
+ clusterHandleBarHelpers[HANDLEBAR_HELPER_UPPERCASE] = getUppercase;
+ var clusterRowToHandlebarTemplateFileMap = [{dbRowType: DATABASE_ROW_TYPE_CLUSTER, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_CLUSTERS}];
+ mapDatabase(db)
+ .then(templateDir =>resolveTemplateDirectory(templateDir, handlebarTemplateDirectory))
+ .then(templates => compileTemplate(templates, [HANDLEBAR_TEMPLATE_FILE_CLUSTERS]))
+ .then(databaseRows => infoFromDb(databaseRows, [DATABASE_ROW_TYPE_CLUSTER]))
+ .then(helperResolution => resolveHelper(helperResolution, clusterHandleBarHelpers))
+ .then(directoryResolution => resolveGenerationDirectory(directoryResolution))
+ .then(resultToFile => generateDataToFile(resultToFile, 'cluster-id.h', clusterRowToHandlebarTemplateFileMap))
+ .catch(err => logError(err))
+
+ //enums.h generation
+ var enumHandleBarHelpers = {}
+ enumHandleBarHelpers[HANDLEBAR_HELPER_STRONG] = getStrong;
+ enumHandleBarHelpers[HANDLEBAR_HELPER_HEX_VALUE] = getHexValue;
+ var enumsRowToHandlebarTemplateFileMap = [{dbRowType: DATABASE_ROW_TYPE_ENUMS, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_ENUMS},
+ {dbRowType: DATABASE_ROW_TYPE_BITMAPS, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_BITMAPS}];
+ mapDatabase(db)
+ .then(templateDir =>resolveTemplateDirectory(templateDir, handlebarTemplateDirectory))
+ .then(templates => compileTemplate(templates, [HANDLEBAR_TEMPLATE_FILE_ENUMS, HANDLEBAR_TEMPLATE_FILE_BITMAPS]))
+ .then(databaseRows => infoFromDb(databaseRows, [DATABASE_ROW_TYPE_ENUMS, DATABASE_ROW_TYPE_BITMAPS]))
+ .then(databaseRowsWithEnumItems => groupInfoIntoDbRow(databaseRowsWithEnumItems, {tableName: 'ENUM_ITEMS', foreignKey: 'ENUM_REF', primaryKey: 'ENUM_ID', dbType: 'enums', columns: {NAME: "NAME", VALUE: "VALUE"}} ))
+ .then(databaseRowsWithBitmapFields => groupInfoIntoDbRow(databaseRowsWithBitmapFields, {tableName: 'BITMAP_FIELDS', foreignKey: 'BITMAP_REF', primaryKey: 'BITMAP_ID', dbType: 'bitmaps', columns: {NAME: "NAME", VALUE: "MASK"}}))
+ .then(helperResolution => resolveHelper(helperResolution, enumHandleBarHelpers))
+ .then(directoryResolution => resolveGenerationDirectory(directoryResolution))
+ .then(resultToFile => generateDataToFile(resultToFile, 'enums.h', enumsRowToHandlebarTemplateFileMap))
+ .catch(err => logError(err))
+}
+
+// This function is called when file save is triggered.
+function fileSave (db, winId, filePath) {
+ return getSessionIdFromWindowdId(db, winId)
+ .then(row => exportDataIntoFile(db, row.sessionId, filePath));
+}
+
+// This function is called when file open is triggered.
+function fileOpen (db, winId, filePaths) {
+ filePaths.forEach((item, index) => {
+ logInfo(`Opening: ${item}`)
+ windowCreate(httpPort, item)
+ })
+}
+
+/**
+Given: a map and a generation directory path.
+Return: a map which has the generation directory.
+Description: Resolve the generation directory to be able to generate to the
+correct directory.
+*/
+export function resolveGenerationDirectory(map) {
+ return new Promise((resolve, reject) => {
+ map.generationDirectory = generationDirectory;
+ resolve(map);
+ })
+}
+
+export function initMenu (port) {
+ httpPort = port
+ const menu = Menu.buildFromTemplate(template)
+ Menu.setApplicationMenu(menu)
+}
diff --git a/src-electron/main-process/tray.js b/src-electron/main-process/tray.js
new file mode 100644
index 0000000000..346b7c09ac
--- /dev/null
+++ b/src-electron/main-process/tray.js
@@ -0,0 +1,54 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import { Menu, Tray, nativeImage, app} from 'electron'
+import { windowCreate } from './window.js'
+import { logInfo, iconsDirectory, logError } from './env.js'
+import path from 'path'
+import fs from 'fs'
+
+let tray
+
+export function initTray(port) {
+ logInfo('Initializing tray...')
+
+
+ let trayIconPath = path.join(iconsDirectory(), 'zap_32x32.png')
+ let dockIconPath = path.join(iconsDirectory(), 'zap_128x128.png')
+
+ if ( !fs.existsSync(trayIconPath)) {
+ logError(`Tray not created, icon does not exist: ${trayIconPath}`)
+ return
+ } else {
+ logInfo(`Using tray icon: ${trayIconPath}`)
+ }
+
+ let trayIcon = nativeImage.createFromPath(trayIconPath)
+ if ( trayIcon.isEmpty() ) {
+ logError('Image got created, but it is empty')
+ }
+ tray = new Tray(trayIcon.resize({ width: 16, height: 16 }))
+
+ const contextMenu = Menu.buildFromTemplate([
+ {
+ label: 'New ZCL configuration',
+ type: 'normal',
+ click: (item, window, event) => {
+ windowCreate(port)
+ }
+ }, {
+ label: 'Quit ZAP',
+ role: 'quit'
+ }
+ ])
+
+ // This covers the case of the mac dock
+ if ( app.dock ) {
+ app.dock.setIcon(dockIconPath)
+ app.dock.setMenu(contextMenu)
+ }
+
+
+ tray.setToolTip('ZCL Advanced Platform')
+ tray.setContextMenu(contextMenu)
+ logInfo('Tray initialized.')
+}
diff --git a/src-electron/main-process/ui.js b/src-electron/main-process/ui.js
new file mode 100644
index 0000000000..f085acd2c6
--- /dev/null
+++ b/src-electron/main-process/ui.js
@@ -0,0 +1,19 @@
+import { dialog } from "electron";
+
+/*
+ * Created Date: Tuesday, March 10th 2020, 4:22:57 pm
+ * Author: Timotej Ecimovic
+ *
+ * Copyright (c) 2020 Silicon Labs
+ */
+
+ // You can always use this to show an exception.
+ export function showErrorMessage(title, err) {
+ var msg
+ if ( err instanceof Error ) {
+ msg = err.toString() + '\n\nStack trace:\n' + err.stack
+ } else {
+ msg = err
+ }
+ dialog.showErrorBox(title, msg)
+ }
diff --git a/src-electron/main-process/window.js b/src-electron/main-process/window.js
new file mode 100644
index 0000000000..c231ec3ce3
--- /dev/null
+++ b/src-electron/main-process/window.js
@@ -0,0 +1,45 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import { logInfo, iconsDirectory } from './env.js'
+import { initMenu } from './menu.js'
+import { initTray } from './tray.js'
+import { session, BrowserWindow } from 'electron'
+import path from 'path'
+
+export function initializeElectronUi(port) {
+ let w = windowCreate(port)
+ initMenu(port)
+ initTray(port)
+}
+
+export function windowCreateIfNotThere (port) {
+ if (BrowserWindow.getAllWindows().length == 0) {
+ windowCreate(port)
+ }
+}
+
+let windowCounter = 0
+
+// Create a new window from a given path.
+export function windowCreate (port, filePath = null) {
+ logInfo(__dirname)
+ let newSession = session.fromPartition(`zap-${windowCounter++}`)
+ let w = new BrowserWindow({
+ width: 1600,
+ height: 800,
+ resizable: true,
+ center: true,
+ icon: path.join(iconsDirectory(), 'zap_32x32.png'),
+ title: filePath == null ? 'New Configuration' : filePath,
+ useContentSize: true,
+ webPreferences: {
+ nodeIntegration: false,
+ session: newSession
+ }
+ })
+ w.loadURL(`http://localhost:${port}/index.html?winId=${w.id}`)
+ w.on('page-title-updated', (e) => {
+ e.preventDefault()
+ })
+ return w
+}
diff --git a/src-electron/rest/admin.js b/src-electron/rest/admin.js
new file mode 100644
index 0000000000..8454027b9a
--- /dev/null
+++ b/src-electron/rest/admin.js
@@ -0,0 +1,44 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides the REST API to the admin functions.
+ *
+ * @module REST API: admin functions
+ */
+
+
+/**
+ * API: /post/sql
+ * Request JSON:
+ *
+ * {
+ * sql: SQL Query
+ * }
+ *
+ *
+ * Response JSON:
+ *
+ * {
+ * result: Array of rows.
+ * }
+ *
+ *
+ * @export
+ * @param {*} db
+ * @param {*} app
+ */
+export function registerAdminApi(db, app) {
+ app.post('/post/sql', (request, response) => {
+ var sql = request.body.sql
+ if (sql) {
+ var replyObject = { replyId: 'sql-result' }
+ dbAll(db, sql, []).then((rows) => {
+ replyObject.result = rows
+ response.json(replyObject)
+ }).catch((err) => {
+ replyObject.result = [`ERROR: ${err.name}, ${err.message}`]
+ response.json(replyObject)
+ })
+ }
+ })
+}
\ No newline at end of file
diff --git a/src-electron/rest/generation.js b/src-electron/rest/generation.js
new file mode 100644
index 0000000000..7d1c61ae74
--- /dev/null
+++ b/src-electron/rest/generation.js
@@ -0,0 +1,71 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides the REST API to the generation.
+ *
+ * @module REST API: generation functions
+ */
+
+import { logError } from '../main-process/env';
+import { mapDatabase, resolveTemplateDirectory, compileTemplate, infoFromDb, groupInfoIntoDbRow, resolveHelper, generateDataToPreview } from '../generator/static_generator.js'
+import { getUppercase, getStrong, getHexValue } from "../handlebars/helpers/helper_utils.js"
+
+/**
+ *
+ *
+ * @export
+ * @param {*} db
+ * @param {*} app
+ */
+export function registerGenerationApi(db, app) {
+ app.get('/preview/:name', async (request, response) => {
+
+ const HANDLEBAR_HELPER_UPPERCASE = 'uppercase';
+ const HANDLEBAR_HELPER_STRONG = 'strong';
+ const HANDLEBAR_HELPER_HEX_VALUE = 'hexValue';
+ const HANDLEBAR_TEMPLATE_FILE_CLUSTERS = "cluster-id.handlebars"
+ const HANDLEBAR_TEMPLATE_FILE_ENUMS = "enums.handlebars"
+ const HANDLEBAR_TEMPLATE_FILE_BITMAPS = "bitmaps.handlebars"
+ const DATABASE_ROW_TYPE_CLUSTER = "clusters"
+ const DATABASE_ROW_TYPE_ENUMS = "enums"
+ const DATABASE_ROW_TYPE_BITMAPS = "bitmaps"
+
+
+ //cluster-id.h generation
+ var clusterHandleBarHelpers = {}
+ clusterHandleBarHelpers[HANDLEBAR_HELPER_UPPERCASE] = getUppercase;
+ var clusterRowToHandlebarTemplateFileMap = [{ dbRowType: DATABASE_ROW_TYPE_CLUSTER, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_CLUSTERS }];
+
+ const clusterGenerationCode = await mapDatabase(db)
+ .then(templateDir => resolveTemplateDirectory(templateDir, ""))
+ .then(templates => compileTemplate(templates, [HANDLEBAR_TEMPLATE_FILE_CLUSTERS]))
+ .then(databaseRows => infoFromDb(databaseRows, [DATABASE_ROW_TYPE_CLUSTER]))
+ .then(helperResolution => resolveHelper(helperResolution, clusterHandleBarHelpers))
+ .then(resultToFile => generateDataToPreview(resultToFile, clusterRowToHandlebarTemplateFileMap))
+ .catch(err => logError(err))
+
+ //enums.h generation
+ var enumHandleBarHelpers = {}
+ enumHandleBarHelpers[HANDLEBAR_HELPER_STRONG] = getStrong;
+ enumHandleBarHelpers[HANDLEBAR_HELPER_HEX_VALUE] = getHexValue;
+ var enumsRowToHandlebarTemplateFileMap = [{ dbRowType: DATABASE_ROW_TYPE_ENUMS, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_ENUMS },
+ { dbRowType: DATABASE_ROW_TYPE_BITMAPS, hTemplateFile: HANDLEBAR_TEMPLATE_FILE_BITMAPS }];
+
+ const enumGenerationCode = await mapDatabase(db)
+ .then(templateDir => resolveTemplateDirectory(templateDir, ""))
+ .then(templates => compileTemplate(templates, [HANDLEBAR_TEMPLATE_FILE_ENUMS, HANDLEBAR_TEMPLATE_FILE_BITMAPS]))
+ .then(databaseRows => infoFromDb(databaseRows, [DATABASE_ROW_TYPE_ENUMS, DATABASE_ROW_TYPE_BITMAPS]))
+ .then(databaseRowsWithEnumItems => groupInfoIntoDbRow(databaseRowsWithEnumItems, { tableName: 'ENUM_ITEMS', foreignKey: 'ENUM_REF', primaryKey: 'ENUM_ID', dbType: 'enums', columns: { NAME: "NAME", VALUE: "VALUE" } }))
+ .then(databaseRowsWithBitmapFields => groupInfoIntoDbRow(databaseRowsWithBitmapFields, { tableName: 'BITMAP_FIELDS', foreignKey: 'BITMAP_REF', primaryKey: 'BITMAP_ID', dbType: 'bitmaps', columns: { NAME: "NAME", VALUE: "MASK" } }))
+ .then(helperResolution => resolveHelper(helperResolution, enumHandleBarHelpers))
+ .then(resultToFile => generateDataToPreview(resultToFile, enumsRowToHandlebarTemplateFileMap))
+ .catch(err => logError(err))
+
+ if (request.params.name === DATABASE_ROW_TYPE_CLUSTER) {
+ response.json(clusterGenerationCode);
+ } else if (request.params.name === DATABASE_ROW_TYPE_ENUMS) {
+ response.json(enumGenerationCode);
+ }
+ })
+
+}
\ No newline at end of file
diff --git a/src-electron/rest/static-zcl.js b/src-electron/rest/static-zcl.js
new file mode 100644
index 0000000000..82149b34f6
--- /dev/null
+++ b/src-electron/rest/static-zcl.js
@@ -0,0 +1,67 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides the REST API to the static zcl queries.
+ *
+ * @module REST API: static zcl functions
+ */
+
+import { httpCode } from '../server/http-server.js'
+import * as Zcl from '../zcl/zcl-model.js'
+
+const itemList = 'zcl-item-list'
+const singleItem = 'zcl-item'
+
+function processGetEntityRequest(db, path, id, replyId, callback) {
+ switch (path) {
+ case 'cluster':
+ Zcl.zclClusters(db, id).then(x =>
+ Zcl.zclAttributes(db, id).then(y =>
+ Zcl.zclCommands(db, id).then(z =>
+ callback(replyId,
+ {
+ data: x,
+ attributeData: y,
+ commandData: z,
+ title: `Cluster: ${id}`,
+ type: 'cluster'
+ })
+ )
+ )
+ )
+ break
+ case 'domain':
+ Zcl.zclDomains(db, id).then(x => callback(replyId, { data: x, title: `Domain: ${id}`, type: 'domain' }))
+ break
+ case 'bitmap':
+ Zcl.zclBitmaps(db, id).then(x => callback(replyId, { data: x, title: `Bitmap: ${id}`, type: 'bitmap' }))
+ break
+ case 'enum':
+ Zcl.zclEnums(db, id).then(x => callback(replyId, { data: x, title: `Enum: ${id}`, type: 'enum' }))
+ break
+ case 'struct':
+ Zcl.zclStructs(db, id).then(x => callback(replyId, { data: x, title: `Struct: ${id}`, type: 'struct' }))
+ break
+ case 'deviceType':
+ Zcl.zclDeviceTypes(db, id).then(x => callback(replyId, { data: x, title: `Device type: ${id}`, type: 'device_type' }))
+ break
+ }
+}
+
+/**
+ * API: /get/:entity/:id
+ *
+ * @export
+ * @param {*} app Express instance.
+ */
+export function registerStaticZclApi(db, app) {
+ app.get('/get/:entity/:id', (request, response) => {
+ const { id, entity } = request.params
+ var processReply = (replyId, object) => {
+ object.replyId = replyId;
+ response.status(httpCode.ok).json(object)
+ }
+ var replyId = (id === 'all' ? itemList : singleItem)
+ processGetEntityRequest(db, entity, id, replyId, processReply)
+ })
+}
\ No newline at end of file
diff --git a/src-electron/rest/user-data.js b/src-electron/rest/user-data.js
new file mode 100644
index 0000000000..44e1ff9d93
--- /dev/null
+++ b/src-electron/rest/user-data.js
@@ -0,0 +1,101 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides the REST API to the user specific data.
+ *
+ * @module REST API: user data
+ */
+
+import { logInfo } from '../main-process/env'
+import { insertOrReplaceClusterState, updateKeyValue, insertEndpoint, insertEndpointType, deleteEndpointType, deleteEndpoint } from '../db/query'
+import { httpCode } from '../server/http-server'
+
+export function registerSessionApi(db, app) {
+ app.post('/post/cluster', (request, response) => {
+ var { id, side, flag, endpointTypeId } = request.body
+ insertOrReplaceClusterState(db, endpointTypeId, id, side, flag)
+ .then(() => response.status(httpCode.ok).send())
+ .catch((err) => response.status(httpCode.badRequest).send())
+ })
+
+ app.post('/post/save', (request, response) => {
+ var { key, value } = request.body
+ var sessionId = request.session.zapSessionId
+ logInfo(`[${sessionId}]: Saving: ${key} => ${value}`)
+ updateKeyValue(db, sessionId, key, value)
+ .then(() => {
+ response.status(httpCode.ok)
+ }).catch((err) => {
+ throw err
+ })
+ })
+
+ app.post('/post/endpoint', (request, response) => {
+ var { action, context } = request.body
+ var sessionId = request.session.zapSessionId
+ switch (action) {
+ case 'c':
+ insertEndpoint(db, sessionId, context.eptId, context.endpointType, context.nwkId).then(newId => {
+ response.json({
+ action: 'c',
+ id: newId,
+ eptId: context.eptId,
+ endpointType: context.endpointType,
+ nwkId: context.nwkId,
+ replyId: "zcl-endpoint-response"
+ })
+ return response.status(httpCode.ok).send()
+ }).catch(err => {
+ return response.status(httpCode.badRequest).send()
+ })
+ break
+ case 'd':
+ deleteEndpoint(db, context.id).then(removed => {
+ response.json({
+ action: 'd',
+ successful: removed > 0,
+ id: context.id,
+ replyId: "zcl-endpoint-response"
+ })
+ return response.status(httpCode.ok).send()
+ })
+ default:
+ break
+ }
+ })
+
+ app.post('/post/endpointType', (request, response) => {
+ var {action, context} = request.body
+ var sessionId = request.session.zapSessionId
+ switch (action) {
+ case 'c':
+ insertEndpointType(db, sessionId, context.name, context.deviceTypeRef).then(newId => {
+ response.json({
+ action: 'c',
+ id: newId,
+ name: context.name,
+ deviceTypeRef: context.deviceTypeRef,
+ replyId: "zcl-endpointType-response"
+ })
+ return response.status(httpCode.ok).send()
+ }).catch(err => {
+ return response.status(httpCode.badRequest).send()
+ })
+ break
+ case 'd':
+ deleteEndpointType(db, context.id).then (removed => {
+ response.json({
+ action: 'd',
+ successful: removed > 0,
+ id: context.id,
+ replyId: "zcl-endpointType-response"
+
+ })
+ return response.status(httpCode.ok).send()
+ })
+ break
+ default:
+ break
+ }
+ })
+}
\ No newline at end of file
diff --git a/src-electron/server/http-server.js b/src-electron/server/http-server.js
new file mode 100644
index 0000000000..aa911b0463
--- /dev/null
+++ b/src-electron/server/http-server.js
@@ -0,0 +1,109 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+/**
+ * This module provides the HTTP server functionality.
+ *
+ * @module JS API: http server
+ */
+
+import { logInfo, logError } from '../main-process/env.js'
+import express from 'express'
+import session from 'express-session'
+import bodyParser from 'body-parser'
+import path from 'path'
+import { ensureZapSessionId } from '../db/query.js'
+import { registerStaticZclApi } from '../rest/static-zcl.js'
+import { registerAdminApi } from '../rest/admin.js'
+import { registerGenerationApi } from '../rest/generation.js'
+import { registerSessionApi } from '../rest/user-data.js'
+
+var httpServer = null
+
+export const httpCode = {
+ ok: 200,
+ badRequest: 400,
+ notFound: 404
+}
+
+/**
+ * Promises to initialize the http server on a given port
+ * using a given database.
+ *
+ * @export
+ * @param {*} db Database object to use.
+ * @param {*} port Port for the HTTP server.
+ * @returns A promise that resolves with an express app.
+ */
+export function initHttpServer (db, port) {
+
+ return new Promise((resolve,reject) => {
+ logInfo(`Creating HTTP server on port: ${port}`)
+ const app = express()
+ app.use(bodyParser.urlencoded({ extended: true }));
+ app.use(bodyParser.json());
+ app.use(session({
+ secret: 'Zap@Watt@SiliconLabs',
+ resave: true,
+ saveUninitialized: true
+ }))
+
+ // this is a generic logging stuff
+ app.use((req, res, next) => {
+ logInfo(`Request: ${req.url}, session: ${req.session.id}`)
+ if ( req.session.zapSessionId) {
+ logInfo(`Zap session id exists: ${req.session.zapSessionId}`)
+ next()
+ } else {
+ logInfo('Creating zap session')
+ let windowId = null
+ if ( 'winId' in req.query )
+ windowId = req.query.winId
+
+ ensureZapSessionId(db, req.session.id, windowId).then(
+ (rowid) => {
+ req.session.zapSessionId = rowid
+ next()
+ }
+ ).catch(
+ (err) => {
+ logError('Could not create session: ' + err.message)
+ }
+ )
+ }
+ })
+
+ // Simple get for an entity, id can be all or specific id
+ registerStaticZclApi(db, app)
+ registerSessionApi(db, app)
+ registerGenerationApi(db, app)
+ registerAdminApi(db, app)
+
+ var staticDir = path.join(__dirname,__indexDirOffset)
+ logInfo(`Static content directory: ${staticDir}`)
+
+ app.use(express.static(staticDir))
+
+ httpServer = app.listen(port, () => {
+ logInfo(`HTTP server created on port: ${port}`)
+ resolve(app)
+ })
+ })
+}
+/**
+ * Promises to shut down the http server.
+ *
+ * @export
+ * @returns Promise that resolves when server is shut down.
+ */
+export function shutdownHttpServer() {
+ return new Promise((resolve,reject) => {
+ if ( httpServer != null ) {
+ httpServer.close(() => {
+ logInfo('HTTP server shut down.')
+ httpServer = null
+ resolve(null)
+ })
+ }
+ resolve(null)
+ })
+}
\ No newline at end of file
diff --git a/src-electron/zcl/zcl-loader.js b/src-electron/zcl/zcl-loader.js
new file mode 100644
index 0000000000..a72cc6dddd
--- /dev/null
+++ b/src-electron/zcl/zcl-loader.js
@@ -0,0 +1,312 @@
+// Copyright (c) 2020 Silicon Labs. All rights reserved.
+
+import { logInfo, logError } from '../main-process/env'
+import properties from 'properties'
+import path from 'path'
+import fs from 'fs'
+import crc from 'crc'
+
+import { parseString } from 'xml2js'
+import { forPathCrc, updatePathCrc, insertPathCrc, insertClusters, insertDomains, insertStructs, insertBitmaps, insertEnums, insertDeviceTypes, updateClusterReferencesForDeviceTypeClusters } from '../db/query'
+import { dbBeginTransaction, dbCommit } from '../db/db-api'
+
+const fsp = fs.promises
+
+// Promises to read the properties file, extract all the actual xml files, and resolve with the array of files.
+function collectZclFiles(propertiesFile) {
+ return new Promise((resolve, reject) => {
+ logInfo(`Collecting ZCL files from: ${propertiesFile}`)
+ properties.parse(propertiesFile, { path: true }, (err, zclProps) => {
+ logInfo(`Parsed the file...`)
+ if (err) {
+ logError(`Could not read file: ${propertiesFile}`)
+ reject(err)
+ } else {
+ // We create our specific fileReader context
+ var fileLocation = path.join(path.dirname(propertiesFile), zclProps.xmlRoot)
+ var files = zclProps.xmlFile.split(',').map(data => path.join(fileLocation, data.trim()))
+ logInfo(`Resolving: ${files}`)
+ resolve(files)
+ }
+ })
+ })
+}
+
+// Promises to read a file and resolve with the content
+function readZclFile(file) {
+ logInfo(`Reading individual file: ${file}`)
+ return fsp.readFile(file)
+}
+
+// Promises to calculate the CRC of the file, and resolve with an array [filePath,data,crc]
+function calculateCrc(filePath, data) {
+ return new Promise((resolve, reject) => {
+ var actualCrc = crc.crc32(data)
+ logInfo(`For file: ${filePath}, got CRC: ${actualCrc}`)
+ resolve([filePath, data, actualCrc])
+ })
+}
+
+// Promises to parse the ZCL file, expecting array of [filePath, data, packageId, msg]
+// Resolves with the array [filePath,result,packageId,msg]
+function parseZclFile(argument) {
+ var filePath = argument[0]
+ var data = argument[1]
+ var packageId = argument[2]
+ var msg = argument[3]
+
+ // No data, we skip this.
+ if (data == null)
+ return Promise.resolve([null, null, null, msg])
+ else {
+ var p = new Promise((resolve, reject) => {
+ // ... otherwise, we promise to parse this.
+ logInfo(`Executing XML parser on ${filePath}`)
+ parseString(data, (err, result) => {
+ if (err) {
+ logError(`Failed to parse ${filePath}: ${err}`)
+ reject(err)
+ } else {
+ resolve([filePath, result, packageId, null])
+ }
+ })
+ })
+ return p
+ }
+}
+
+function prepareBitmap(bm) {
+ var ret = { name: bm.$.name, type: bm.$.type }
+ if ('field' in bm) {
+ ret.fields = []
+ bm.field.forEach(field => {
+ ret.fields.push({
+ name: field.$.name,
+ mask: field.$.mask
+ })
+ })
+ }
+ return ret
+}
+
+function processBitmaps(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} bitmaps.`)
+ return insertBitmaps(db, packageId, data.map(x => prepareBitmap(x)))
+}
+
+function prepareCluster(cluster) {
+ var ret = {
+ code: cluster.code[0],
+ name: cluster.name[0],
+ description: cluster.description[0],
+ define: cluster.define[0]
+ }
+ if ('command' in cluster) {
+ ret.commands = []
+ cluster.command.forEach(command => {
+ var cmd = {
+ code: command.$.code,
+ name: command.$.name,
+ description: command.description[0],
+ source: command.$.source,
+ isOptional: command.$.optional == 'true'
+ }
+ if ('arg' in command) {
+ cmd.args = []
+ command.arg.forEach(arg => {
+ cmd.args.push({
+ name: arg.$.name,
+ type: arg.$.type,
+ isArray: (arg.$.array == "true" ? 1 : 0)
+ })
+ })
+ }
+ ret.commands.push(cmd)
+ })
+ }
+ if ('attribute' in cluster) {
+ ret.attributes = []
+ cluster.attribute.forEach(attribute => {
+ ret.attributes.push({
+ code: attribute.$.code,
+ name: attribute._,
+ type: attribute.$.type,
+ side: attribute.$.side,
+ define: attribute.$.define,
+ min: attribute.$.min,
+ max: attribute.$.max,
+ isWritable: attribute.$.writable == 'true',
+ defaultValue: attribute.$.default,
+ isOptional: attribute.$.optional == 'true'
+ })
+ })
+ }
+ return ret
+}
+
+function processClusters(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} clusters.`)
+ return insertClusters(db, packageId, data.map(x => prepareCluster(x)))
+}
+
+function prepareDomain(domain) {
+ return { name: domain.$.name }
+}
+
+function processDomains(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} domains.`)
+ return insertDomains(db, packageId, data.map(x => prepareDomain(x)))
+}
+
+function prepareStruct(struct) {
+ var ret = { name: struct.$.name }
+ if ('item' in struct) {
+ ret.items = []
+ struct.item.forEach(item => {
+ ret.items.push({
+ name: item.$.name,
+ type: item.$.type
+ })
+ })
+ }
+ return ret
+}
+
+function processStructs(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} structs.`)
+ return insertStructs(db, packageId, data.map(x => prepareStruct(x)))
+}
+
+function prepareEnum(en) {
+ var ret = { name: en.$.name, type: en.$.type }
+ if ('item' in en) {
+ ret.items = []
+ en.item.forEach(item => {
+ ret.items.push({
+ name: item.$.name,
+ value: item.$.value
+ })
+ })
+ }
+ return ret
+}
+function processEnums(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} enums.`)
+ return insertEnums(db, packageId, data.map(x => prepareEnum(x)))
+}
+
+function prepareDeviceType(deviceType) {
+ var ret = { code: deviceType.deviceId[0]['_'], profileId: deviceType.profileId[0]['_'], name: deviceType.name[0], description: deviceType.typeName[0] }
+ if ('clusters' in deviceType) {
+ ret.clusters = []
+ deviceType.clusters.forEach(cluster => {
+ if ('include' in cluster) {
+ cluster.include.forEach(include => {
+ ret.clusters.push({
+ client: 'true' == include.$.client,
+ server: 'true' == include.$.server,
+ clientLocked: 'true' == include.$.clientLocked,
+ serverLocked: 'true' == include.$.serverLocked,
+ clusterName: (include.$.cluster != undefined ? include.$.cluster : include._)
+ })
+ })
+ }
+ })
+ }
+ return ret
+}
+
+function processDeviceTypes(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} deviceTypes.`)
+ return insertDeviceTypes(db, packageId, data.map(x => prepareDeviceType(x)))
+}
+function processGlobals(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} globals.`)
+ return Promise.resolve(true)
+}
+function processClusterExtensions(db, filePath, packageId, data) {
+ logInfo(`${filePath}, ${packageId}: ${data.length} extensions.`)
+ return Promise.resolve(true)
+}
+
+function processParsedZclData(db, argument) {
+ var filePath = argument[0]
+ var data = argument[1]
+ var packageId = argument[2]
+ var msg = argument[3]
+
+ if (data == null) {
+ return Promise.resolve(msg)
+ } else {
+ var sp = []
+ if ('configurator' in data) {
+ if ('bitmap' in data.configurator) sp.push(processBitmaps(db, filePath, packageId, data.configurator.bitmap))
+ if ('cluster' in data.configurator) sp.push(processClusters(db, filePath, packageId, data.configurator.cluster))
+ if ('domain' in data.configurator) sp.push(processDomains(db, filePath, packageId, data.configurator.domain))
+ if ('enum' in data.configurator) sp.push(processEnums(db, filePath, packageId, data.configurator.enum))
+ if ('struct' in data.configurator) sp.push(processStructs(db, filePath, packageId, data.configurator.struct))
+ if ('deviceType' in data.configurator) sp.push(processDeviceTypes(db, filePath, packageId, data.configurator.deviceType))
+ if ('global' in data.configurator) sp.push(processGlobals(db, filePath, packageId, data.configurator.global))
+ if ('clusterExtension' in data.configurator) sp.push(processClusterExtensions(db, filePath, packageId, data.configurator.clusterExtension))
+ }
+ return Promise.all(sp)
+ }
+}
+
+function processPostLoading(db) {
+ return updateClusterReferencesForDeviceTypeClusters(db);
+}
+
+// Promises to qualify whether zcl file needs to be reloaded.
+// If yes, the it will resolve with [filePath, data, packageId, NULL]
+// If not, then it will resolve with [null, null, null, msg]
+function qualifyZclFile(db, array) {
+ return new Promise((resolve, reject) => {
+ var filePath = array[0]
+ var data = array[1]
+ var actualCrc = array[2]
+ forPathCrc(db, filePath, (storedCrc, packageId) => { // This is executed if CRC is found in the database.
+ if (storedCrc == actualCrc) {
+ logInfo(`CRC match for file ${filePath}, skipping parsing.`)
+ resolve([null, null, null, `${filePath} skipped`])
+ } else {
+ logInfo(`CRC missmatch for file ${filePath}, package id ${packageId}, parsing.`)
+ updatePathCrc(db, filePath, actualCrc).then(
+ () => resolve([filePath, data, packageId, null])
+ )
+ }
+ },
+ () => { // This is executed if there is no CRC in the database.
+ logInfo(`No CRC in the database for file ${filePath}, parsing.`)
+ insertPathCrc(db, filePath, actualCrc).then((packageId) => {
+ resolve([filePath, data, packageId, null])
+ })
+ })
+ })
+}
+
+// Promises to iterate over all the XML files and returns an aggregate promise
+// that will be resolved when all the XML files are done, or rejected if at least one fails.
+function parseZclFiles(db, files) {
+ logInfo(`Starting to parse ZCL files: ${files}`)
+ var individualPromises = []
+ files.forEach(element => {
+ var p = readZclFile(element)
+ .then(data => calculateCrc(element, data))
+ .then(array => qualifyZclFile(db, array))
+ .then(result => parseZclFile(result))
+ .then(result => processParsedZclData(db, result))
+ .catch(err => logError(err))
+ individualPromises.push(p)
+ })
+ return Promise.all(individualPromises)
+}
+
+export function loadZcl(db, propertiesFile) {
+ logInfo(`Loading zcl file: ${propertiesFile}`)
+ return dbBeginTransaction(db).then(() => collectZclFiles(propertiesFile))
+ .then((files) => parseZclFiles(db, files))
+ .then(result => processPostLoading(db))
+ .then(() => dbCommit(db))
+ .then(() => Promise.resolve(db))
+}
diff --git a/src-electron/zcl/zcl-model.js b/src-electron/zcl/zcl-model.js
new file mode 100644
index 0000000000..01c5ca5024
--- /dev/null
+++ b/src-electron/zcl/zcl-model.js
@@ -0,0 +1,149 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+/**
+ * ZCL specific stuff.
+ */
+
+import { selectAllClusters, selectClusterById, selectAllDomains, selectDomainById, selectAllEnums, selectEnumById, selectAllStructs, selectStructById, selectAllBitmaps, selectBitmapById, selectAllDeviceTypes, selectDeviceTypeById, selectAttributesByClusterId, selectCommandsByClusterId} from '../db/query.js'
+
+export function zclClusters(db, id) {
+ const f = (x) => {
+ return {
+ id: x.CLUSTER_ID,
+ code: x.CODE,
+ manufacturerCode: x.MANUFACTURER_CODE,
+ label: x.NAME,
+ caption: x.DESCRIPTION,
+ define: x.DEFINE
+ }
+ }
+ if (id == 'all') {
+ return selectAllClusters(db).then(rows => rows.map(f))
+ } else {
+ return selectClusterById(db, id).then(f)
+ }
+}
+
+export function zclAttributes(db, clusterId) {
+ const f = (x) => {
+ return {
+ id: x.ATTRIBUTE_ID,
+ clusterRef: x.CLUSTER_REF,
+ code: x.CODE,
+ manufacturerCode: x.MANUFACTURER_CODE,
+ label: x.NAME,
+ type: x.TYPE,
+ side: x.SIDE,
+ define: x.DEFINE,
+ min: x.MIN,
+ max: x.MAX,
+ isWritable: x.IS_WRITABLE,
+ defaultValue: x.DEFAULT_VALUE,
+ isOptional: x.IS_OPTIONAL
+ }
+ }
+
+ if (clusterId == 'all') {
+ return selectAllClusters(db).then(rows => null).then(t => null)
+ } else {
+ return selectAttributesByClusterId(db, clusterId).then(rows => rows.map(f))
+ }
+}
+
+export function zclCommands(db, clusterId) {
+ const f = (x) => {
+ return {
+ id: x.COMMAND_ID,
+ clusterRef: x.CLUSTER_REF,
+ code: x.CODE,
+ manufacturerCode: x.MANUFACTURER_CODE,
+ label: x.NAME,
+ description: x.DESCRIPTION,
+ source: x.SOURCE,
+ isOptional: x.IS_OPTIONAL
+ }
+ }
+
+ if (clusterId == 'all') {
+ return selectAllClusters(db).then(rows => null).then(t => null)
+ } else {
+ return selectCommandsByClusterId(db, clusterId).then(rows => rows.map(f))
+ }
+}
+
+ export function zclDomains(db, id) {
+ const f = (x) => {
+ return {
+ id: x.DOMAIN_ID,
+ label: x.NAME,
+ caption: `Domain, named ${x.NAME}`
+ }
+ }
+ if (id == 'all') {
+ return selectAllDomains(db).then(rows => rows.map(f))
+ } else {
+ return selectDomainById(db, id).then(f)
+ }
+ }
+
+ export function zclEnums(db, id) {
+ const f = (x) => {
+ return {
+ id: x.ENUM_ID,
+ label: x.NAME,
+ caption: `Enum of type ${x.TYPE}`
+ }
+ }
+ if (id == 'all') {
+ return selectAllEnums(db).then(rows => rows.map(f))
+ } else {
+ return selectEnumById(db, id).then(f)
+ }
+ }
+
+ export function zclStructs(db, id) {
+ const f = (x) => {
+ return {
+ id: x.STRUCT_ID,
+ label: x.NAME,
+ caption: `Struct, named ${x.NAME}`
+ }
+ }
+ if (id == 'all') {
+ return selectAllStructs(db).then(rows => rows.map(f))
+ } else {
+ return selectStructById(db, id).then(f)
+ }
+ }
+
+ export function zclBitmaps(db, id) {
+ const f = (x) => {
+ return {
+ id: x.BITMAP_ID,
+ label: x.NAME,
+ caption: `Enum of type ${x.TYPE}`
+ }
+ }
+ if (id == 'all') {
+ return selectAllBitmaps(db).then(rows => rows.map(f))
+ } else {
+ return selectBitmapById(db, id).then(f)
+ }
+ }
+
+ export function zclDeviceTypes(db, id) {
+ const f = (x) => {
+ return {
+ id: x.DEVICE_TYPE_ID,
+ code: x.CODE,
+ profileId: x.PROFILE_ID,
+ label: x.NAME,
+ caption: x.DESCRIPTION
+ }
+ }
+ if (id == 'all') {
+ return selectAllDeviceTypes(db).then(rows => rows.map(f))
+ } else {
+ return selectDeviceTypeById(db, id).then(f)
+ }
+ }
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000000..3dacfba39a
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/quasar-logo-full.svg b/src/assets/quasar-logo-full.svg
new file mode 100644
index 0000000000..281d0729b0
--- /dev/null
+++ b/src/assets/quasar-logo-full.svg
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/sad.svg b/src/assets/sad.svg
new file mode 100644
index 0000000000..628136f5d1
--- /dev/null
+++ b/src/assets/sad.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/zap.png b/src/assets/zap.png
new file mode 100644
index 0000000000..75da264e27
Binary files /dev/null and b/src/assets/zap.png differ
diff --git a/src/boot/.gitkeep b/src/boot/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/boot/axios.js b/src/boot/axios.js
new file mode 100644
index 0000000000..481c1865f9
--- /dev/null
+++ b/src/boot/axios.js
@@ -0,0 +1,42 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import Vue from 'vue'
+import axios from 'axios'
+import events from 'events'
+
+console.log('Client init with axios mode.')
+Vue.prototype.$axios = axios({ withCredentials: true })
+var eventEmitter = new events.EventEmitter()
+
+Vue.prototype.$serverGet = (url) => {
+ console.log(`serverGet: ${url}`)
+ axios.get('/get' + url).then(response => {
+ console.log('get response:')
+ console.log(response)
+ eventEmitter.emit(response.data['replyId'], response.data['replyId'], response.data)
+ }).catch(error => console.log(error))
+}
+
+Vue.prototype.$serverPost = (url, data) => {
+ console.log(`serverPost: ${url}, ${data}`)
+ axios.post('/post' + url, data).then(response => {
+ console.log('post response')
+ console.log(response)
+ eventEmitter.emit(response.data['replyId'], response.data['replyId'], response.data)
+ }).catch(error => console.log(error))
+}
+
+Vue.prototype.$serverOn = (channel, listener) => {
+ eventEmitter.on(channel, listener)
+}
+
+Vue.prototype.$emitEvent = (channel) => {
+ eventEmitter.emit(channel)
+}
+
+Vue.prototype.$serverGetWithType = (url, type) => {
+ console.log(`serverGet: ${url}`)
+ if (type === 'preview') {
+ return axios.get(url)
+ }
+}
diff --git a/src/components/.gitkeep b/src/components/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/components/ZclApplicationSetup.vue b/src/components/ZclApplicationSetup.vue
new file mode 100644
index 0000000000..61852a1ba9
--- /dev/null
+++ b/src/components/ZclApplicationSetup.vue
@@ -0,0 +1,11 @@
+
+
+ Zcl application setup....
+
+
+
+
diff --git a/src/components/ZclAttributeView.vue b/src/components/ZclAttributeView.vue
new file mode 100644
index 0000000000..05501fc9f8
--- /dev/null
+++ b/src/components/ZclAttributeView.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+ {{props.row.side}}
+
+
+ {{ props.row.label }}
+
+
+ {{ props.row.code }}
+
+
+ {{ props.row.manufacturerCode}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.row.type }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ZclClusterDetail.vue b/src/components/ZclClusterDetail.vue
new file mode 100644
index 0000000000..a1734c8e25
--- /dev/null
+++ b/src/components/ZclClusterDetail.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ZclClusterInfo.vue b/src/components/ZclClusterInfo.vue
new file mode 100644
index 0000000000..fba7068ae3
--- /dev/null
+++ b/src/components/ZclClusterInfo.vue
@@ -0,0 +1,33 @@
+
+
+
Cluster: {{ item.label }}
+
Description: {{ item.caption }}
+
+
+
+
diff --git a/src/components/ZclClusterList.vue b/src/components/ZclClusterList.vue
new file mode 100644
index 0000000000..75219fae26
--- /dev/null
+++ b/src/components/ZclClusterList.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ props.row.code }}
+
+
+ {{ props.row.manufacturerCode }}
+
+
+ {{ props.row.label }}
+
+
+
+
+
+
+
diff --git a/src/components/ZclCommandView.vue b/src/components/ZclCommandView.vue
new file mode 100644
index 0000000000..9508a64063
--- /dev/null
+++ b/src/components/ZclCommandView.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{props.row.source}}
+
+
+ {{props.row.isOptional}}
+
+
+ {{ props.row.label }}
+
+
+ {{ props.row.code }}
+
+
+ {{ props.row.manufacturerCode}}
+
+
+
+
+
+
+
+
diff --git a/src/components/ZclCustomSetup.vue b/src/components/ZclCustomSetup.vue
new file mode 100644
index 0000000000..e6853ce5aa
--- /dev/null
+++ b/src/components/ZclCustomSetup.vue
@@ -0,0 +1,11 @@
+
+
+ Zcl custom additions setup....
+
+
+
+
diff --git a/src/components/ZclEndpointConfig.vue b/src/components/ZclEndpointConfig.vue
new file mode 100644
index 0000000000..ee39c97b74
--- /dev/null
+++ b/src/components/ZclEndpointConfig.vue
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+ New Endpoint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0x{{ endpointId[props.row.id].toString(16).padStart(4, "0") }}
+
+
+ {{ (deviceTypes[endpointDeviceTypeRef[endpointType[props.row.id]]] ? deviceTypes[endpointDeviceTypeRef[endpointType[props.row.id]]].profileId.toString(16) : "").padStart(4, "0") }}
+
+
+ {{ (deviceTypes[endpointDeviceTypeRef[endpointType[props.row.id]]] ? deviceTypes[endpointDeviceTypeRef[endpointType[props.row.id]]].code.toString(16) : "").padStart(4, "0") }}
+
+
+ 1
+
+
+ {{ endpointTypeName[endpointType[props.row.id]] }}
+
+
+ {{ networkId[props.row.id] }}
+
+
+
+
+
+
+
+
diff --git a/src/components/ZclEndpointTypeConfig.vue b/src/components/ZclEndpointTypeConfig.vue
new file mode 100644
index 0000000000..80c5171e2c
--- /dev/null
+++ b/src/components/ZclEndpointTypeConfig.vue
@@ -0,0 +1,204 @@
+
+
+
+
+ Endpoint Type Manager
+
+
+
+
+
+
+
+
+
+ New Endpoint Type
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ZclInformationSetup.vue b/src/components/ZclInformationSetup.vue
new file mode 100644
index 0000000000..bc0bd60617
--- /dev/null
+++ b/src/components/ZclInformationSetup.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/src/components/ZclReportingView.vue b/src/components/ZclReportingView.vue
new file mode 100644
index 0000000000..fd422f7bee
--- /dev/null
+++ b/src/components/ZclReportingView.vue
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+ {{ props.row.side }}
+
+
+ {{ props.row.label }}
+
+
+ {{ props.row.code }}
+
+
+ {{ props.row.manufacturerCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/css/app.sass b/src/css/app.sass
new file mode 100644
index 0000000000..2280f2ae15
--- /dev/null
+++ b/src/css/app.sass
@@ -0,0 +1 @@
+// app global css in Sass form
diff --git a/src/css/quasar.variables.sass b/src/css/quasar.variables.sass
new file mode 100644
index 0000000000..79275c89ee
--- /dev/null
+++ b/src/css/quasar.variables.sass
@@ -0,0 +1,24 @@
+// Quasar Sass (& SCSS) Variables
+// --------------------------------------------------
+// To customize the look and feel of this app, you can override
+// the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
+
+// Check documentation for full list of Quasar variables
+
+// Your own variables (that are declared here) and Quasar's own
+// ones will be available out of the box in your .vue/.scss/.sass files
+
+// It's highly recommended to change the default colors
+// to match your app's branding.
+// Tip: Use the "Theme Builder" on Quasar's documentation website.
+
+$primary : #027BE3
+$secondary : #26A69A
+$accent : #9C27B0
+
+$dark : #1D1D1D
+
+$positive : #21BA45
+$negative : #C10015
+$info : #31CCEC
+$warning : #F2C037
diff --git a/src/index.template.html b/src/index.template.html
new file mode 100644
index 0000000000..b4909b16a1
--- /dev/null
+++ b/src/index.template.html
@@ -0,0 +1,17 @@
+
+
+
+ <%= htmlWebpackPlugin.options.productName %>
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/MyLayout.vue b/src/layouts/MyLayout.vue
new file mode 100644
index 0000000000..8a673455e7
--- /dev/null
+++ b/src/layouts/MyLayout.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+ Zigbee Cluster Library
+
+
+
+
+
+
+ ZCL entities
+
+
+
+
+
+ Clusters
+ Load a list of clusters
+
+
+
+
+
+
+
+ Domains
+ Load a list of domains
+
+
+
+
+
+
+
+ Bitmaps
+ Load a list of bitmaps
+
+
+
+
+
+
+
+ Enums
+ Load a list of enums
+
+
+
+
+
+
+
+ Structs
+ Load a list of structs
+
+
+
+
+
+
+
+ Device Types
+ Load a list of device types
+
+
+
+
+
+
+
+ Settings
+ Configure various settings
+
+
+
+
+
+
+
+
+ Generate
+ Generate Various Things
+
+
+
+
+
+
+
+
+ SQL Query
+ Run SQL Queries against the database
+
+
+
+
+
+
+
+
+ Zcl
+ Go to main ZCL layout
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/ZclClusterLayout.vue b/src/layouts/ZclClusterLayout.vue
new file mode 100644
index 0000000000..defbaf1b84
--- /dev/null
+++ b/src/layouts/ZclClusterLayout.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/ZclLayout.vue b/src/layouts/ZclLayout.vue
new file mode 100644
index 0000000000..15dc25c7b0
--- /dev/null
+++ b/src/layouts/ZclLayout.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+ {{ zclDialogTitle }}
+
+ {{ zclDialogText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cluster-id.h
+
+
+
+
+
+ enums.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Error404.vue b/src/pages/Error404.vue
new file mode 100644
index 0000000000..8dfa471f66
--- /dev/null
+++ b/src/pages/Error404.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
Sorry, nothing here...(404)
+
+
+
+
+
diff --git a/src/pages/SqlQuery.vue b/src/pages/SqlQuery.vue
new file mode 100644
index 0000000000..d60c90bc94
--- /dev/null
+++ b/src/pages/SqlQuery.vue
@@ -0,0 +1,43 @@
+
+
+
+
+ Count: {{count}}
+
+
+
+
+ {{item}}
+
+
+
+
+ {{result}}
+
+
+
+
+
diff --git a/src/pages/ZclBrowsing.vue b/src/pages/ZclBrowsing.vue
new file mode 100644
index 0000000000..99da8a21f1
--- /dev/null
+++ b/src/pages/ZclBrowsing.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
diff --git a/src/pages/ZclItemDetail.vue b/src/pages/ZclItemDetail.vue
new file mode 100644
index 0000000000..b27d85509b
--- /dev/null
+++ b/src/pages/ZclItemDetail.vue
@@ -0,0 +1,31 @@
+
+
+
+ {{ title }}: {{ item }}
+
+
+
+
diff --git a/src/pages/ZclItemList.vue b/src/pages/ZclItemList.vue
new file mode 100644
index 0000000000..0a505afa4b
--- /dev/null
+++ b/src/pages/ZclItemList.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+ {{ item.label }}
+ {{ item.caption }}
+
+
+
+
+
+
+
+
diff --git a/src/pages/ZclSettings.vue b/src/pages/ZclSettings.vue
new file mode 100644
index 0000000000..fbf5c77cc3
--- /dev/null
+++ b/src/pages/ZclSettings.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000000..7f6aec4b04
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,32 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+
+import routes from './routes'
+
+Vue.use(VueRouter)
+
+/*
+ * If not building with SSR mode, you can
+ * directly export the Router instantiation;
+ *
+ * The function below can be async too; either use
+ * async/await or return a Promise which resolves
+ * with the Router instance.
+ */
+
+export default function (/* { store, ssrContext } */) {
+ const Router = new VueRouter({
+ scrollBehavior: () => ({ x: 0, y: 0 }),
+ routes,
+
+ // Leave these as they are and change in quasar.conf.js instead!
+ // quasar.conf.js -> build -> vueRouterMode
+ // quasar.conf.js -> build -> publicPath
+ mode: process.env.VUE_ROUTER_MODE,
+ base: process.env.VUE_ROUTER_BASE
+ })
+
+ return Router
+}
diff --git a/src/router/routes.js b/src/router/routes.js
new file mode 100644
index 0000000000..9cc0d0de69
--- /dev/null
+++ b/src/router/routes.js
@@ -0,0 +1,33 @@
+// Copyright (c) 2019 Silicon Labs. All rights reserved.
+
+const routes = [
+ {
+ path: '/',
+ component: () => import('layouts/ZclLayout.vue'),
+ children: [
+ { path: '', component: () => import('layouts/ZclLayout.vue') }, // Consider making this a "New Project" page
+ { path: 'clusters', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'domains', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'bitmaps', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'enums', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'structs', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'devicetypes', component: () => import('pages/ZclBrowsing.vue') },
+ { path: 'settings', component: () => import('pages/ZclSettings.vue') },
+ { path: 'sql', component: () => import('pages/SqlQuery.vue') }
+ ]
+ },
+ {
+ path: '/zcl',
+ component: () => import('layouts/ZclLayout.vue')
+ }
+]
+
+// Always leave this as last one
+if (process.env.MODE !== 'ssr') {
+ routes.push({
+ path: '*',
+ component: () => import('pages/Error404.vue')
+ })
+}
+
+export default routes
diff --git a/src/statics/app-logo-128x128.png b/src/statics/app-logo-128x128.png
new file mode 100644
index 0000000000..a024d40661
Binary files /dev/null and b/src/statics/app-logo-128x128.png differ
diff --git a/src/statics/icons/apple-icon-120x120.png b/src/statics/icons/apple-icon-120x120.png
new file mode 100644
index 0000000000..03e1f60356
Binary files /dev/null and b/src/statics/icons/apple-icon-120x120.png differ
diff --git a/src/statics/icons/apple-icon-152x152.png b/src/statics/icons/apple-icon-152x152.png
new file mode 100644
index 0000000000..f03a493c72
Binary files /dev/null and b/src/statics/icons/apple-icon-152x152.png differ
diff --git a/src/statics/icons/apple-icon-167x167.png b/src/statics/icons/apple-icon-167x167.png
new file mode 100644
index 0000000000..2c513f1a7d
Binary files /dev/null and b/src/statics/icons/apple-icon-167x167.png differ
diff --git a/src/statics/icons/apple-icon-180x180.png b/src/statics/icons/apple-icon-180x180.png
new file mode 100644
index 0000000000..1c76dfdd9a
Binary files /dev/null and b/src/statics/icons/apple-icon-180x180.png differ
diff --git a/src/statics/icons/favicon-16x16.png b/src/statics/icons/favicon-16x16.png
new file mode 100644
index 0000000000..31f6eb0b87
Binary files /dev/null and b/src/statics/icons/favicon-16x16.png differ
diff --git a/src/statics/icons/favicon-32x32.png b/src/statics/icons/favicon-32x32.png
new file mode 100644
index 0000000000..3d7d9a9e59
Binary files /dev/null and b/src/statics/icons/favicon-32x32.png differ
diff --git a/src/statics/icons/favicon-96x96.png b/src/statics/icons/favicon-96x96.png
new file mode 100644
index 0000000000..cafcdd14f5
Binary files /dev/null and b/src/statics/icons/favicon-96x96.png differ
diff --git a/src/statics/icons/favicon.ico b/src/statics/icons/favicon.ico
new file mode 100644
index 0000000000..ca3e8cbefe
Binary files /dev/null and b/src/statics/icons/favicon.ico differ
diff --git a/src/statics/icons/icon-128x128.png b/src/statics/icons/icon-128x128.png
new file mode 100644
index 0000000000..a024d40661
Binary files /dev/null and b/src/statics/icons/icon-128x128.png differ
diff --git a/src/statics/icons/icon-192x192.png b/src/statics/icons/icon-192x192.png
new file mode 100644
index 0000000000..cc6325ef73
Binary files /dev/null and b/src/statics/icons/icon-192x192.png differ
diff --git a/src/statics/icons/icon-256x256.png b/src/statics/icons/icon-256x256.png
new file mode 100644
index 0000000000..75da264e27
Binary files /dev/null and b/src/statics/icons/icon-256x256.png differ
diff --git a/src/statics/icons/icon-384x384.png b/src/statics/icons/icon-384x384.png
new file mode 100644
index 0000000000..5c54191107
Binary files /dev/null and b/src/statics/icons/icon-384x384.png differ
diff --git a/src/statics/icons/icon-512x512.png b/src/statics/icons/icon-512x512.png
new file mode 100644
index 0000000000..fd5f5f939c
Binary files /dev/null and b/src/statics/icons/icon-512x512.png differ
diff --git a/src/statics/icons/ms-icon-144x144.png b/src/statics/icons/ms-icon-144x144.png
new file mode 100644
index 0000000000..f19fe40225
Binary files /dev/null and b/src/statics/icons/ms-icon-144x144.png differ
diff --git a/src/statics/icons/safari-pinned-tab.svg b/src/statics/icons/safari-pinned-tab.svg
new file mode 100644
index 0000000000..c4a9dc0291
--- /dev/null
+++ b/src/statics/icons/safari-pinned-tab.svg
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/store-flag.d.ts b/src/store-flag.d.ts
new file mode 100644
index 0000000000..ec274bd6d1
--- /dev/null
+++ b/src/store-flag.d.ts
@@ -0,0 +1,9 @@
+// THIS FEATURE-FLAG FILE IS AUTOGENERATED,
+// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
+import "quasar/dist/types/feature-flag";
+
+declare module "quasar/dist/types/feature-flag" {
+ interface QuasarFeatureFlags {
+ store: true;
+ }
+}
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000000..a37a7d43a3
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,42 @@
+/*
+ * Created Date: Wednesday, March 4th 2020, 10:04:22 am
+ * Author: Timotej Ecimovic
+ *
+ * Copyright (c) 2020 Silicon Labs
+ */
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+// we first import the module
+import zap from './zap'
+
+Vue.use(Vuex)
+
+export default function (/* { ssrContext } */) {
+ const Store = new Vuex.Store({
+ modules: {
+ // then we reference it
+ zap
+ },
+
+ // enable strict mode (adds overhead!)
+ // for dev mode only
+ strict: process.env.DEV
+ })
+
+ /*
+ if we want some HMR magic for it, we handle
+ the hot update like below. Notice we guard this
+ code with "process.env.DEV" -- so this doesn't
+ get into our production build (and it shouldn't).
+ */
+
+ if (process.env.DEV && module.hot) {
+ module.hot.accept(['./zap'], () => {
+ const newZap = require('./zap').default
+ Store.hotUpdate({ modules: { zap: newZap } })
+ })
+ }
+
+ return Store
+}
diff --git a/src/store/store-flag.d.ts b/src/store/store-flag.d.ts
new file mode 100644
index 0000000000..ec274bd6d1
--- /dev/null
+++ b/src/store/store-flag.d.ts
@@ -0,0 +1,9 @@
+// THIS FEATURE-FLAG FILE IS AUTOGENERATED,
+// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
+import "quasar/dist/types/feature-flag";
+
+declare module "quasar/dist/types/feature-flag" {
+ interface QuasarFeatureFlags {
+ store: true;
+ }
+}
diff --git a/src/store/zap/actions.js b/src/store/zap/actions.js
new file mode 100644
index 0000000000..59c5a5088f
--- /dev/null
+++ b/src/store/zap/actions.js
@@ -0,0 +1,115 @@
+import Vue from 'vue'
+
+export function updateInformationText (context, text) {
+ context.commit('updateInformationText', text)
+ Vue.prototype.$serverPost('/save', { key: 'informationText', value: text })
+}
+
+export function updateClusters (context, clusters) {
+ context.commit('updateClusters', clusters)
+}
+
+export function updateSelectedCluster (context, cluster) {
+ context.commit('updateSelectedCluster', cluster)
+}
+
+export function updateAttributes (context, attributes) {
+ context.commit('updateAttributes', attributes)
+}
+
+export function updateCommands (context, commands) {
+ context.commit('updateCommands', commands)
+}
+
+export function updateZclDeviceTypes (context, deviceTypes) {
+ let deviceTypeObjects = {}
+ deviceTypes.forEach(deviceType => {
+ deviceTypeObjects[deviceType.id] = {
+ code: deviceType.code,
+ profileId: deviceType.profileId,
+ label: deviceType.label,
+ description: deviceType.caption
+ }
+ })
+
+ context.commit('updateZclDeviceTypes', deviceTypeObjects)
+}
+
+export function updateEndpointConfigs (context, endpointConfigs) {
+ context.commit('updateEndpointConfigs', endpointConfigs)
+}
+
+export function selectConfiguration (context, configurationName) {
+ context.commit('selectConfiguration', configurationName)
+}
+
+export function updateSelectedAttributes (context, selectionContext) {
+ context.commit('updateInclusionList', selectionContext)
+}
+
+export function updateReportingAttributeDefaults (context, selectionContext) {
+ context.commit('updateReportingAttributeDefaults', selectionContext)
+}
+
+export function updateAttributeDefaults (context, selectionContext) {
+ context.commit('updateAttributeDefaults', selectionContext)
+}
+
+export function updateSelectedCommands (context, selectionContext) {
+ context.commit('updateInclusionList', selectionContext)
+}
+
+export function updateSelectedServers (context, selectionContext) {
+ context.commit('updateInclusionList', selectionContext)
+ Vue.prototype.$serverPost(`/cluster`,
+ {
+ id: selectionContext.id,
+ side: 'server',
+ flag: selectionContext.added
+ })
+}
+
+export function updateSelectedClients (context, selectionContext) {
+ context.commit('updateInclusionList', selectionContext)
+ Vue.prototype.$serverPost(`/cluster`,
+ {
+ id: selectionContext.id,
+ side: 'client',
+ flag: selectionContext.added
+ })
+}
+
+export function initializeDefaultEndpoints (context, defaultEndpoints) {
+ context.commit('initializeDefaultEndpoints', defaultEndpoints)
+}
+export function initializeDefaultEndpointsTypes (context, defaultEndpointsTypes) {
+ context.commit('initializeDefaultEndpointsTypes', defaultEndpointsTypes)
+}
+
+export function updateSelectedEndpoint (context, endpoint) {
+ context.commit('updateSelectedEndpoint', endpoint)
+}
+
+export function setDeviceTypeReference (context, endpointIdDeviceTypeRefPair) {
+ context.commit('setDeviceTypeReference', endpointIdDeviceTypeRefPair)
+}
+
+export function addEndpoint (context, endpoint) {
+ context.commit('addEndpoint', endpoint)
+}
+
+export function addEndpointType (context, endpointType) {
+ context.commit('addEndpointType', endpointType)
+}
+
+export function removeEndpointType (context, endpointType) {
+ context.commit('removeEndpointType', endpointType)
+}
+
+export function updateSelectedEndpointType (context, endpointType) {
+ context.commit('updateSelectedEndpointType', endpointType)
+}
+
+export function deleteEndpoint (context, endpoint) {
+ context.commit('deleteEndpoint', endpoint)
+}
diff --git a/src/store/zap/getters.js b/src/store/zap/getters.js
new file mode 100644
index 0000000000..cc054a3aeb
--- /dev/null
+++ b/src/store/zap/getters.js
@@ -0,0 +1,4 @@
+/*
+export function someGetter (state) {
+}
+*/
diff --git a/src/store/zap/index.js b/src/store/zap/index.js
new file mode 100644
index 0000000000..b41a219b92
--- /dev/null
+++ b/src/store/zap/index.js
@@ -0,0 +1,12 @@
+import state from './state'
+import * as getters from './getters'
+import * as mutations from './mutations'
+import * as actions from './actions'
+
+export default {
+ namespaced: true,
+ state,
+ getters,
+ mutations,
+ actions
+}
diff --git a/src/store/zap/mutations.js b/src/store/zap/mutations.js
new file mode 100644
index 0000000000..576c6deb99
--- /dev/null
+++ b/src/store/zap/mutations.js
@@ -0,0 +1,127 @@
+import Vue from 'vue'
+
+export function updateInformationText (state, text) {
+ state.informationText = text
+}
+
+export function updateClusters (state, clusters) {
+ state.clusters = clusters
+}
+
+export function updateSelectedCluster (state, cluster) {
+ state.clustersView.selected = cluster
+}
+
+export function updateSelectedEndpoint (state, endpoint) {
+ state.endpointView.selectedEndpoint = endpoint
+}
+
+export function updateAttributes (state, attributes) {
+ attributes.forEach(attribute => {
+ if (state.attributeView.defaultValues[attribute.id] === undefined) {
+ Vue.set(state.attributeView.defaultValues, attribute.id, attribute.defaultValue)
+ }
+ if (state.reportingView.reportingMin[attribute.id] === undefined) {
+ Vue.set(state.reportingView.reportingMin, attribute.id, 0)
+ }
+ if (state.reportingView.reportingMax[attribute.id] === undefined) {
+ Vue.set(state.reportingView.reportingMax, attribute.id, 65344)
+ }
+ if (state.reportingView.reportableChange[attribute.id] === undefined) {
+ Vue.set(state.reportingView.reportableChange, attribute.id, 0)
+ }
+ })
+ state.attributes = attributes
+}
+
+export function initializeDefaultEndpoints (state, defaultEndpoints) {
+ defaultEndpoints.forEach(endpoint => {
+ if (state.endpointView.endpointId[endpoint.id] === undefined) {
+ Vue.set(state.endpointView.endpointId, endpoint.id, endpoint.eptId)
+ }
+ if (state.endpointView.endpointType[endpoint.id] === undefined) {
+ Vue.set(state.endpointView.endpointType, endpoint.id, endpoint.endpointType)
+ }
+ if (state.endpointView.networkId[endpoint.id] === undefined) {
+ Vue.set(state.endpointView.networkId, endpoint.id, endpoint.network)
+ }
+ })
+}
+
+export function addEndpoint (state, endpoint) {
+ Vue.set(state.endpointView.endpointId, endpoint.id, endpoint.eptId)
+ Vue.set(state.endpointView.endpointType, endpoint.id, endpoint.endpointType)
+ Vue.set(state.endpointView.networkId, endpoint.id, endpoint.network)
+}
+
+export function initializeDefaultEndpointsTypes (state, defaultEndpointsTypes) {
+ defaultEndpointsTypes.forEach(endpointType => {
+ if (state.endpointTypeView.name[endpointType.id] === undefined) {
+ Vue.set(state.endpointTypeView.name, endpointType.id, endpointType.name)
+ }
+ if (state.endpointTypeView.deviceTypeRef[endpointType.id] === undefined) {
+ Vue.set(state.endpointTypeView.deviceTypeRef, endpointType.id, endpointType.deviceTypeRef)
+ }
+ })
+}
+
+export function addEndpointType (state, endpointType) {
+ Vue.set(state.endpointTypeView.name, endpointType.id, endpointType.name)
+ Vue.set(state.endpointTypeView.deviceTypeRef, endpointType.id, endpointType.deviceTypeRef)
+}
+
+export function updateReportingAttributeDefaults (state, selectionContext) {
+ Vue.set(state.reportingView[selectionContext.listType], selectionContext.id, selectionContext.newDefaultValue)
+}
+
+export function updateAttributeDefaults (state, selectionContext) {
+ Vue.set(state.attributeView.defaultValues, selectionContext.id, selectionContext.newDefaultValue)
+}
+
+export function updateCommands (state, commands) {
+ state.commands = commands
+}
+
+export function updateZclDeviceTypes (state, zclDeviceTypes) {
+ state.zclDeviceTypes = zclDeviceTypes
+}
+
+export function updateEndpointConfigs (state, endpoints) {
+ state.endpoints = endpoints
+}
+
+export function selectConfiguration (state, configurationName) {
+ state.configurationView.selected = configurationName
+}
+
+export function updateInclusionList (state, selectionContext) {
+ var inclusionList = state[selectionContext.view][selectionContext.listType]
+ if (selectionContext.added) {
+ inclusionList.push(selectionContext.id)
+ } else {
+ var elementIndex = inclusionList.indexOf(selectionContext.id)
+ inclusionList.splice(elementIndex, 1)
+ }
+ state[selectionContext.view][selectionContext.listType] = inclusionList
+}
+
+export function setDeviceTypeReference (state, endpointIdDeviceTypeRefPair) {
+ Vue.set(state.endpointTypeView.deviceTypeRef, endpointIdDeviceTypeRefPair.endpointId, endpointIdDeviceTypeRefPair.deviceTypeRef)
+}
+
+export function updateSelectedEndpointType (state, endpointType) {
+ state.endpointTypeView.selectedEndpointType = endpointType
+}
+
+export function removeEndpointType (state, endpointType) {
+ state.endpointTypeView.selectedEndpointType = []
+ Vue.delete(state.endpointTypeView.name, endpointType.id)
+ Vue.delete(state.endpointTypeView.deviceTypeRef, endpointType.id)
+}
+
+export function deleteEndpoint (state, endpoint) {
+ state.endpointView.selectedEndpoint = []
+ Vue.delete(state.endpointView.endpointId, endpoint.id)
+ Vue.delete(state.endpointView.endpointType, endpoint.id)
+ Vue.delete(state.endpointView.networkId, endpoint.id)
+}
diff --git a/src/store/zap/state.js b/src/store/zap/state.js
new file mode 100644
index 0000000000..58aac3bc54
--- /dev/null
+++ b/src/store/zap/state.js
@@ -0,0 +1,44 @@
+export default function () {
+ return {
+ informationText: 'Use this as a placeholder for information.',
+ clusters: [],
+ attributes: [],
+ commands: [],
+ zclDeviceTypes: {},
+ endpoints: [],
+ endpointView: {
+ selectedEndpoint: [],
+ endpointId: {},
+ endpointType: {},
+ networkId: {}
+ },
+ endpointTypeView: {
+ selectedEndpointType: [],
+ name: {},
+ deviceTypeRef: {}
+ },
+ clustersView: {
+ selected: [],
+ selectedServers: [],
+ selectedClients: []
+ },
+ attributeView: {
+ selectedAttributes: [],
+ selectedExternal: [],
+ selectedFlash: [],
+ selectedSingleton: [],
+ selectedBounded: [],
+ defaultValues: {}
+ },
+ commandView: {
+ selectedIn: [],
+ selectedOut: []
+ },
+ reportingView: {
+ selectedReporting: [],
+ reportingMin: {},
+ reportingMax: {},
+ reportableChange: {}
+ }
+ }
+}
diff --git a/src/store/zap/store-flag.d.ts b/src/store/zap/store-flag.d.ts
new file mode 100644
index 0000000000..ec274bd6d1
--- /dev/null
+++ b/src/store/zap/store-flag.d.ts
@@ -0,0 +1,9 @@
+// THIS FEATURE-FLAG FILE IS AUTOGENERATED,
+// REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING
+import "quasar/dist/types/feature-flag";
+
+declare module "quasar/dist/types/feature-flag" {
+ interface QuasarFeatureFlags {
+ store: true;
+ }
+}
diff --git a/test/.gitkeep b/test/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test/arg.test.js b/test/arg.test.js
new file mode 100644
index 0000000000..3532cc1d6a
--- /dev/null
+++ b/test/arg.test.js
@@ -0,0 +1,21 @@
+import { processCommandLineArguments } from "../src-electron/main-process/args"
+import yargs from 'yargs'
+
+test('Test basic command line processing', () => {
+ var args = processCommandLineArguments(['node', 'test.js', '--noUI', '--httpPort', '123', '--arglessArg', '--xmlRoot', 'XmlRoot'])
+
+ expect(args.noUI).toBeTruthy()
+ expect(args.httpPort).toBeTruthy()
+ expect(args.httpPort).toEqual(123)
+ expect(args.arglessArg).toBeTruthy()
+ expect(args.xmlRoot).toBe('XmlRoot')
+})
+
+test('Verify how yargs works', () => {
+ var argv = yargs(['a', '--x', 1, 'b', '--y', 2, '--tst', 42]).parse()
+ expect(argv._).toContain('a')
+ expect(argv._).toContain('b')
+ expect(argv.x).toBe(1)
+ expect(argv.y).toBe(2)
+ expect(argv.tst).toBe(42)
+})
diff --git a/test/env.test.js b/test/env.test.js
new file mode 100644
index 0000000000..4824ecc282
--- /dev/null
+++ b/test/env.test.js
@@ -0,0 +1,13 @@
+import * as Env from '../src-electron/main-process/env.js'
+
+test('Test environment', () => {
+ expect(Env.appDirectory().length > 10).toBeTruthy()
+ expect(Env.sqliteFile().length > 10).toBeTruthy()
+ expect(Env.iconsDirectory().length > 10).toBeTruthy()
+})
+
+test('Test logging', () => {
+ Env.logInfo('Info.')
+ Env.logError('Error.')
+ Env.logWarning('Warning.')
+})
\ No newline at end of file
diff --git a/test/generation.test.js b/test/generation.test.js
new file mode 100644
index 0000000000..8b5f01061f
--- /dev/null
+++ b/test/generation.test.js
@@ -0,0 +1,78 @@
+/**
+ * @jest-environment node
+ */
+
+/*
+* Created Date: Wednesday, March 18th 2020, 10:08 am
+* Author: Bharat Dandu
+*
+* Copyright (c) 2020 Silicon Labs
+*/
+
+import axios from 'axios'
+import fs from "fs"
+import { version } from '../package.json'
+import { closeDatabase, initDatabase, loadSchema } from "../src-electron/db/db-api"
+import { selectCountFrom } from "../src-electron/db/query"
+import { logError, logInfo, schemaFile, setDevelopmentEnv, sqliteTestFile } from "../src-electron/main-process/env"
+import { initHttpServer, shutdownHttpServer } from "../src-electron/server/http-server"
+import { loadZcl } from "../src-electron/zcl/zcl-loader"
+import { zclPropertiesFile } from '../src-electron/main-process/args'
+
+var db
+const port = 9074
+const baseUrl = `http://localhost:${port}`
+var packageId
+var sessionId
+
+beforeAll(() => {
+ setDevelopmentEnv()
+ var file = sqliteTestFile(3)
+ return initDatabase(file)
+ .then(d => loadSchema(d, schemaFile(), version))
+ .then(d => { db = d; logInfo(`Test database initialized: ${file}.`) })
+ .catch(err => logError(`Error: ${err}`))
+})
+
+afterAll(() => {
+ return shutdownHttpServer()
+ .then(() => closeDatabase(db))
+ .then(() => {
+ var file = sqliteTestFile(3)
+ logInfo(`Removing test database: ${file}`)
+ if (fs.existsSync(file)) fs.unlinkSync(file)
+ })
+})
+
+describe('Session specific tests', () => {
+
+ test('make sure there is no session at the beginning', () => {
+ return selectCountFrom(db, "SESSION")
+ .then(cnt => {
+ expect(cnt).toBe(0)
+ })
+ })
+
+ test('Now actually load the static data.', () => {
+ return loadZcl(db, zclPropertiesFile)
+ }, 6000)
+
+ test('http server initialization', () => {
+ return initHttpServer(db, port)
+ })
+
+ test('test that there is generation data in the enums.h file', () => {
+ return axios.get(`${baseUrl}/preview/enums`)
+ .then((response) => {
+ expect(response.data).toMatch(/EMBER_ZCL_11073_CONNECT_REQUEST_CONNECT_CONTROL_PREEMPTIBLE = 0x01/);
+ expect(response.data).toMatch(/\#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT \(0x1\)/);
+ })
+ })
+
+ test('test that there is generation data in the cluster-id.h file', () => {
+ return axios.get(`${baseUrl}/preview/clusters`)
+ .then((response) => {
+ expect(response.data).toMatch(/\#define ZCL_BASIC_CLUSTER_ID 0x0000/);
+ })
+ })
+})
diff --git a/test/global-setup.js b/test/global-setup.js
new file mode 100644
index 0000000000..2187238a31
--- /dev/null
+++ b/test/global-setup.js
@@ -0,0 +1,5 @@
+import { logInfo } from '../src-electron/main-process/env'
+
+module.exports = async () => {
+ logInfo('Global setup.')
+}
diff --git a/test/global-teardown.js b/test/global-teardown.js
new file mode 100644
index 0000000000..4272f428bc
--- /dev/null
+++ b/test/global-teardown.js
@@ -0,0 +1,5 @@
+import { logInfo } from '../src-electron/main-process/env'
+
+module.exports = async () => {
+ logInfo('Global teardown.')
+}
diff --git a/test/jest/__mocks__/file-mock.js b/test/jest/__mocks__/file-mock.js
new file mode 100644
index 0000000000..afa8c2cd1f
--- /dev/null
+++ b/test/jest/__mocks__/file-mock.js
@@ -0,0 +1,3 @@
+const Path = require('path');
+
+module.exports = Path.join(__dirname, "../../../src/zap.png");
\ No newline at end of file
diff --git a/test/jest/__mocks__/zap-sql-mock.js b/test/jest/__mocks__/zap-sql-mock.js
new file mode 100644
index 0000000000..4c5d680af8
--- /dev/null
+++ b/test/jest/__mocks__/zap-sql-mock.js
@@ -0,0 +1,3 @@
+const Path = require('path');
+
+module.exports = Path.join(__dirname, "../../../src-electron/db/zap-schema.sql");
\ No newline at end of file
diff --git a/test/jest/jest.setup.js b/test/jest/jest.setup.js
new file mode 100755
index 0000000000..685e98d018
--- /dev/null
+++ b/test/jest/jest.setup.js
@@ -0,0 +1,52 @@
+// No console.log() / setTimeout
+// console.log = jest.fn(() => { throw new Error('Do not use console.log() in production') })
+jest.setTimeout(1000)
+
+// jest speedup when errors are part of the game
+// Error.stackTraceLimit = 0
+
+global.Promise = require('promise')
+
+/*
+import chai from 'chai'
+// Make sure chai and jasmine ".not" play nice together
+// https://medium.com/@RubenOostinga/combining-chai-and-jest-matchers-d12d1ffd0303
+// updated here: https://www.andrewsouthpaw.com/jest-chai/
+const originalNot = Object.getOwnPropertyDescriptor(chai.Assertion.prototype, 'not').get
+Object.defineProperty(chai.Assertion.prototype, 'not', {
+ get() {
+ Object.assign(this, this.assignedNot)
+ return originalNot.apply(this)
+ },
+ set(newNot) {
+ this.assignedNot = newNot
+ return newNot
+ }
+})
+
+// Combine both jest and chai matchers on expect
+const originalExpect = global.expect
+
+global.expect = (actual) => {
+ const originalMatchers = originalExpect(actual)
+ const chaiMatchers = chai.expect(actual)
+
+ // Add middleware to Chai matchers to increment Jest assertions made
+ const { assertionsMade } = originalExpect.getState()
+ Object.defineProperty(chaiMatchers, 'to', {
+ get() {
+ originalExpect.setState({ assertionsMade: assertionsMade + 1 })
+ return chai.expect(actual)
+ },
+ })
+
+ const combinedMatchers = Object.assign(chaiMatchers, originalMatchers)
+ return combinedMatchers
+}
+Object.keys(originalExpect).forEach(key => (global.expect[key] = originalExpect[key]))
+*/
+
+// do this to make sure we don't get multiple hits from both webpacks when running SSR
+setTimeout(()=>{
+ // do nothing
+}, 1)
diff --git a/test/jest/utils/index.js b/test/jest/utils/index.js
new file mode 100755
index 0000000000..eeba44327c
--- /dev/null
+++ b/test/jest/utils/index.js
@@ -0,0 +1,70 @@
+// this is mapped in jest.config.js to resolve @vue/test-utils
+import { createLocalVue, shallowMount } from 'test-utils'
+
+import Vuex from 'vuex'
+import VueRouter from 'vue-router'
+import Quasar, { Cookies } from 'quasar'
+
+const mockSsrContext = () => {
+ return {
+ req: {
+ headers: {}
+ },
+ res: {
+ setHeader: () => undefined
+ }
+ }
+}
+
+// https://eddyerburgh.me/mock-vuex-in-vue-unit-tests
+export const mountQuasar = (component, options = {}) => {
+ const localVue = createLocalVue()
+ const app = {}
+
+ localVue.use(Vuex)
+ localVue.use(VueRouter)
+ localVue.use(Quasar)
+ const store = new Vuex.Store({})
+ const router = new VueRouter()
+
+ if (options) {
+ const ssrContext = options.ssr ? mockSsrContext() : null
+
+ if (options.cookies) {
+ const cookieStorage = ssrContext ? Cookies.parseSSR(ssrContext) : Cookies
+ const cookies = options.cookies
+ Object.keys(cookies).forEach(key => {
+ cookieStorage.set(key, cookies[key])
+ })
+ }
+
+ if (options.plugins) {
+ options.plugins.forEach(plugin => {
+ plugin({ app, store, router, Vue: localVue, ssrContext })
+ })
+ }
+ }
+
+ // mock vue-i18n
+ const $t = () => {}
+ const $tc = () => {}
+ const $n = () => {}
+ const $d = () => {}
+
+ return shallowMount(component, {
+ localVue: localVue,
+ store,
+ router,
+ mocks: { $t, $tc, $n, $d },
+ // Injections for Components with a QPage root Element
+ provide: {
+ pageContainer: true,
+ layout: {
+ header: {},
+ right: {},
+ footer: {},
+ left: {}
+ }
+ }
+ })
+}
diff --git a/test/jest/utils/stub.css b/test/jest/utils/stub.css
new file mode 100644
index 0000000000..a17b52dfa1
--- /dev/null
+++ b/test/jest/utils/stub.css
@@ -0,0 +1,9 @@
+/* for mocking out css files in jest.config.js */
+/*
+
+ moduleNameMapper: {
+ ...
+ '.*css$': '/test/jest/utils/stub.css'
+ },
+
+ */
diff --git a/test/query.test.js b/test/query.test.js
new file mode 100644
index 0000000000..9d3f7d43cd
--- /dev/null
+++ b/test/query.test.js
@@ -0,0 +1,116 @@
+import fs from "fs"
+import { version } from '../package.json'
+import { closeDatabase, initDatabase, loadSchema } from "../src-electron/db/db-api"
+import { ensureZapSessionId, getPathCrc, getSessionIdFromWindowdId, insertClusters, insertPathCrc, selectAllClusters, selectAttributesByClusterId, selectClusterById, selectCommandsByClusterId, deleteEndpoint, getSessionDirtyFlag, setSessionClean } from "../src-electron/db/query"
+import { zclPropertiesFile } from "../src-electron/main-process/args"
+import { logInfo, schemaFile, sqliteTestFile } from "../src-electron/main-process/env"
+import { loadZcl } from "../src-electron/zcl/zcl-loader"
+
+/*
+ * Created Date: Friday, March 13th 2020, 7:44:12 pm
+ * Author: Timotej Ecimovic
+ *
+ * Copyright (c) 2020 Silicon Labs
+ */
+
+var db
+var sid
+
+beforeAll(() => {
+ var file = sqliteTestFile(1)
+ return initDatabase(file)
+ .then(d => loadSchema(d, schemaFile(), version))
+ .then(d => { db = d; logInfo('DB initialized.') })
+})
+
+afterAll(() => {
+ var file = sqliteTestFile(1)
+ return closeDatabase(db)
+ .then(() => {
+ if (fs.existsSync(file))
+ fs.unlinkSync(file)
+ })
+})
+
+test('Path CRC queries.', () => {
+ var path = '/some/random/path'
+ var crc = 42
+ return insertPathCrc(db, path, crc)
+ .then((rowid) => getPathCrc(db, path))
+ .then((c) => expect(c).toBe(crc))
+})
+
+test('Simple cluster addition.', () => {
+ return insertPathCrc(db, 'test', 1)
+ .then((rowid) => insertClusters(db, rowid, [{
+ code: '0x1234',
+ name: 'Test',
+ description: 'Test cluster',
+ define: 'TEST'
+ }]))
+ .then((rowids) => selectAllClusters(db))
+ .then((rows) => new Promise((resolve,reject) => {
+ expect(rows.length).toBe(1)
+ let rowid = rows[0].CLUSTER_ID
+ expect(rows[0].CODE).toBe('0x1234')
+ expect(rows[0].NAME).toBe('Test')
+ resolve(rowid)
+ }))
+ .then((rowid) => selectClusterById(db, rowid))
+ .then((row) => new Promise((resolve,reject) => {
+ expect(row.CODE).toBe('0x1234')
+ expect(row.NAME).toBe('Test')
+ resolve(row.CLUSTER_ID)
+ }))
+ .then((rowid) => {
+ selectAttributesByClusterId(db, rowid)
+ .then(rows => {
+ expect(rows.length).toBe(0)
+ })
+ .then(() => selectCommandsByClusterId(db, rowid))
+ .then(rows => {
+ expect(rows.length).toBe(0)
+ })
+ })
+})
+
+test('Now actually load the static data.', () => {
+ return loadZcl(db, zclPropertiesFile)
+}, 5000)
+
+describe('Session specific queries', () => {
+ beforeAll(() => {
+ return ensureZapSessionId(db, 'SESSION', 666)
+ .then(id => { sid = id })
+ })
+
+ test('Test some attribute queries.', () => {
+ return getSessionIdFromWindowdId(db, 666).then(data => {
+ expect(data.sessionId).toBe(sid)
+ })
+ })
+
+ test('Make sure session is dirty', () => {
+ var sid;
+ return getSessionIdFromWindowdId(db, 666)
+ .then(data => {
+ sid = data.sessionId
+ return getSessionDirtyFlag(db, sid)
+ })
+ .then(result => {
+ expect(result).toBeTruthy()
+ })
+ .then(() => setSessionClean(db, sid))
+ .then(() => getSessionDirtyFlag(db, sid))
+ .then(result => {
+ expect(result).toBeFalsy()
+ })
+ })
+
+ test('Empty delete', () => {
+ return deleteEndpoint(db, 123).then(data => {
+ expect(data).toBe(0)
+ })
+ })
+
+})
diff --git a/test/server.test.js b/test/server.test.js
new file mode 100644
index 0000000000..4473795b3f
--- /dev/null
+++ b/test/server.test.js
@@ -0,0 +1,168 @@
+/**
+ * @jest-environment node
+ */
+
+/*
+* Created Date: Saturday, March 14th 2020, 1:23:01 am
+* Author: Timotej Ecimovic
+*
+* Copyright (c) 2020 Silicon Labs
+*/
+
+import { initHttpServer, shutdownHttpServer } from "../src-electron/server/http-server"
+import { initDatabase, closeDatabase, loadSchema } from "../src-electron/db/db-api"
+import { logError, setDevelopmentEnv, sqliteTestFile, logInfo, setMainDatabase, appDirectory, schemaFile } from "../src-electron/main-process/env"
+import fs from "fs"
+import path from 'path'
+import axios from 'axios'
+import { getAllSesionKeyValues, selectCountFrom, insertPathCrc, insertClusters, insertDomains, getAllSessions, deleteSession } from "../src-electron/db/query"
+import { exportDataIntoFile, importDataFromFile } from "../src-electron/main-process/importexport"
+import { version } from '../package.json'
+
+var db
+const port = 9073
+const baseUrl = `http://localhost:${port}`
+var packageId
+var sessionId
+var axiosConfig = {
+ withCredentials: true
+}
+var sessionCookie = null
+
+beforeAll(() => {
+ setDevelopmentEnv()
+ var file = sqliteTestFile(2)
+ return initDatabase(file)
+ .then(d => loadSchema(d, schemaFile(), version))
+ .then(d => { db = d; logInfo(`Test database initialized: ${file}.`) })
+ .catch(err => logError(`Error: ${err}`))
+})
+
+afterAll(() => {
+ return shutdownHttpServer()
+ .then(() => closeDatabase(db))
+ .then(() => {
+ var file = sqliteTestFile(2)
+ logInfo(`Removing test database: ${file}`)
+ if (fs.existsSync(file)) fs.unlinkSync(file)
+ })
+})
+
+describe('Session specific tests', () => {
+
+ test('make sure there is no session at the beginning', () => {
+ return selectCountFrom(db, "SESSION")
+ .then(cnt => {
+ expect(cnt).toBe(0)
+ })
+ })
+
+ test('http server initialization', () => {
+ return initHttpServer(db, port)
+ })
+
+ test('get index.html', () => {
+ return axios.get(`${baseUrl}/index.html`, axiosConfig)
+ .then((response) => {
+ sessionCookie = response.headers['set-cookie']
+ expect(response.data.includes('Configuration tool for the Zigbee Cluster Library')).toBeTruthy()
+ })
+ })
+
+ test('make sure there is one session after index.html', () => {
+ return selectCountFrom(db, "SESSION")
+ .then(cnt => {
+ expect(cnt).toBe(1)
+ })
+ })
+
+ test('save session', () => {
+ return getAllSessions(db).then((results) => {
+ sessionId = results[0].sessionId
+ })
+ })
+
+ test('test that there is 0 clusters initially', () => {
+ return axios.get(`${baseUrl}/get/cluster/all`, axiosConfig)
+ .then((response) => {
+ expect(response.data.data.length).toBe(0)
+ expect(response.data.type).toBe('cluster')
+ })
+ })
+
+ test('add a package', () => {
+ return insertPathCrc(db, 'PATH', 32).then((pkg) => {
+ packageId = pkg
+ })
+ })
+
+ test('load 2 clusters' ,() => {
+ return insertClusters(db, packageId, [{
+ code: 0x1111,
+ name: 'One',
+ description: 'Cluster one',
+ define: 'ONE'
+ },{
+ code: 0x2222,
+ name: 'Two',
+ description: 'Cluster two',
+ define: 'TWO'
+ }])
+ })
+
+ test('test that there are 2 clusters now', () => {
+ return axios.get(`${baseUrl}/get/cluster/all`, axiosConfig)
+ .then((response) => {
+ expect(response.data.data.length).toBe(2)
+ expect(response.data.type).toBe('cluster')
+ })
+ })
+
+ test('load domains', () => {
+ return insertDomains(db, packageId, [ {name: "one" }, {name: "two" }, {name: "three" }, {name: "four" }] )
+ })
+
+ test('test that there are domains', () => {
+ return axios.get(`${baseUrl}/get/domain/all`, axiosConfig)
+ .then((response) => {
+ expect(response.data.data.length).toBe(4)
+ expect(response.data.type).toBe('domain')
+ })
+ })
+
+ test('save into a file and load from file', () => {
+ var f = path.join(appDirectory(), 'test-output.json')
+ if ( fs.existsSync(f))
+ fs.unlinkSync(f)
+ expect(fs.existsSync(f)).toBeFalsy()
+ return exportDataIntoFile(db, sessionId, f)
+ .then(() => {
+ expect(fs.existsSync(f)).toBeTruthy()
+ })
+ .then(() => importDataFromFile(sessionId, f))
+ .then(() => {
+ fs.unlinkSync(f)
+ return Promise.resolve(1)
+ })
+ })
+
+ test('make sure there is just one session', () => {
+ return getAllSessions(db)
+ .then((rows) => {
+ expect(rows.length).toBe(4)
+ })
+
+ })
+
+ test('delete a session', () => {
+ return deleteSession(db, sessionId)
+ })
+
+ test('check that there is no sessions', () => {
+ return getAllSessions(db)
+ .then((rows) => {
+ expect(rows.length).toBe(3)
+ })
+ })
+
+})
diff --git a/test/zcl-loader.test.js b/test/zcl-loader.test.js
new file mode 100644
index 0000000000..110e148469
--- /dev/null
+++ b/test/zcl-loader.test.js
@@ -0,0 +1,52 @@
+var sq = require('sqlite3')
+
+import { loadSchema, closeDatabase } from '../src-electron/db/db-api'
+import { loadZcl } from '../src-electron/zcl/zcl-loader'
+import { zclDomains, zclClusters, zclEnums, zclStructs, zclDeviceTypes, zclBitmaps } from '../src-electron/zcl/zcl-model'
+import { selectCountFrom } from '../src-electron/db/query'
+import { version } from '../package.json'
+import { schemaFile } from '../src-electron/main-process/env'
+import { zclPropertiesFile } from '../src-electron/main-process/args'
+
+test('test opening and closing the database', () => {
+ var db = new sq.Database(':memory:')
+ return closeDatabase(db)
+})
+
+test('test database schema loading in memory', () => {
+ var db = new sq.Database(':memory:')
+ return loadSchema(db, schemaFile(), version).then((db) => closeDatabase(db))
+})
+
+test('test zcl data loading in memory', () => {
+ var db = new sq.Database(':memory:')
+ return loadSchema(db, schemaFile(), version)
+ .then((db) => loadZcl(db, zclPropertiesFile)) // Maybe: ../../../zcl/zcl-studio.properties
+ .then(() => zclClusters(db,'all'))
+ .then((x) => expect(x.length).toEqual(106))
+ .then(() => zclDomains(db,'all'))
+ .then((x) => expect(x.length).toEqual(20))
+ .then(() => zclEnums(db,'all'))
+ .then((x) => expect(x.length).toEqual(206))
+ .then(() => zclStructs(db,'all'))
+ .then((x) => expect(x.length).toEqual(50))
+ .then(() => zclBitmaps(db,'all'))
+ .then((x) => expect(x.length).toEqual(121))
+ .then(() => zclDeviceTypes(db,'all'))
+ .then((x) => expect(x.length).toEqual(152))
+ .then(() => selectCountFrom(db, 'COMMAND_ARG'))
+ .then((x) => expect(x).toEqual(1574))
+ .then(() => selectCountFrom(db, 'COMMAND'))
+ .then((x) => expect(x).toEqual(514))
+ .then(() => selectCountFrom(db, 'ENUM_ITEM'))
+ .then((x) => expect(x).toEqual(1552))
+ .then(() => selectCountFrom(db, 'ATTRIBUTE'))
+ .then((x) => expect(x).toEqual(3394))
+ .then(() => selectCountFrom(db, 'BITMAP_FIELD'))
+ .then((x) => expect(x).toEqual(724))
+ .then(() => selectCountFrom(db, 'STRUCT_ITEM'))
+ .then((x) => expect(x).toEqual(154))
+ .finally(() => {
+ closeDatabase(db)
+ })
+}, 5000) // Give this test 5 secs to resolve
\ No newline at end of file
diff --git a/zcl/README.md b/zcl/README.md
new file mode 100644
index 0000000000..efcc132a1d
--- /dev/null
+++ b/zcl/README.md
@@ -0,0 +1,12 @@
+# What is this repo?
+
+This repo contain all the common ZCL files, mostly defined by the ZCL specifications.
+It doesn't contain any Thread or Zigbee or Studio specific code, just the metadata.
+
+# Want to make changes?
+
+1. Branch off app/zcl master, zigbee master and thread master
+2. Make changes in app/zcl on your branch
+3. Regen apps in your zigbee branch (make af-regen) and your thread branch (make regen)
+4. Run "make test" on your zigbee branch and thread branch
+5. Once make test passes, open all 3 pull requests
diff --git a/zcl/ami-devices.xml b/zcl/ami-devices.xml
new file mode 100644
index 0000000000..a8536256e8
--- /dev/null
+++ b/zcl/ami-devices.xml
@@ -0,0 +1,807 @@
+
+
+
+ SE-rangeextender
+ SE
+ SE Range Extender
+ Router
+ 0x0109
+ 0x0008
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Keep-Alive
+
+
+
+ SE-ESP
+ SE
+ SE Energy Service Interface
+ Coordinator
+ 0x0109
+ 0x0500
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Messaging
+ Price
+ Demand Response and Load Control
+ Time
+ Simple Metering
+ Keep-Alive
+
+
+
+ SE-Meter
+ SE
+ SE Metering Device
+ Coordinator
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Simple Metering
+ Time
+ Price
+ Messaging
+ Keep-Alive
+
+
+
+ SE-Meter-Mirror
+ SE
+ SE Metering Mirror Device
+ Coordinator
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Simple Metering
+ Time
+ Price
+ Messaging
+ Keep-Alive
+
+
+
+ SE-IPD
+ SE
+ SE In-Premises Display
+ Router
+ 0x0109
+ 0x0502
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Demand Response and Load Control
+ Time
+ Price
+ Simple Metering
+ Messaging
+ Keep-Alive
+
+
+
+ SE-PCT
+ SE
+ SE Programmable Communicating Thermostat (PCT)
+ Router
+ 0x0109
+ 0x0503
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Demand Response and Load Control
+ Time
+ Price
+ Simple Metering
+ Messaging
+ Keep-Alive
+
+
+
+ SE-LC
+ SE
+ SE Load Control Device
+ Router
+ 0x0109
+ 0x0504
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Demand Response and Load Control
+ Time
+ Price
+ Keep-Alive
+
+
+
+ SE-SA
+ SE
+ SE Smart Appliance
+ Router
+ 0x0109
+ 0x0505
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Price
+ Time
+ Demand Response and Load Control
+ Messaging
+ Keep-Alive
+
+
+
+ SE-pt
+ SE
+ SE Prepayment Terminal
+ Router
+ 0x0109
+ 0x0506
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Alarms
+ Commissioning
+ Identify
+ Over the Air Bootloading
+ Tunneling
+ Generic Tunnel
+ Price
+ Time
+ Prepayment
+ Demand Response and Load Control
+ Simple Metering
+ Messaging
+ Calendar
+ Device Management
+ Events
+ Keep-Alive
+
+
+
+ SE1.2-rangeextender
+ SE
+ SE 1.2 Range Extender
+ Router
+ 0x0109
+ 0x0008
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+
+
+
+ SE1.2-ESP
+ SE
+ SE 1.2 Energy Service Interface
+ Coordinator
+ 0x0109
+ 0x0500
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Messaging
+ Price
+ Demand Response and Load Control
+ Time
+ Calendar
+ Simple Metering
+ Prepayment
+ Device Management
+ Alarms
+ MDU Pairing
+ Energy Management
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-Meter
+ SE
+ SE 1.2 Metering Device
+ Router
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Simple Metering
+ Time
+ Prepayment
+ Price
+ Calendar
+ Messaging
+ Device Management
+ MDU Pairing
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-Meter-Mirror
+ SE
+ SE 1.2 Metering Mirror Device
+ Router
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Simple Metering
+ Time
+ Prepayment
+ Price
+ Calendar
+ Messaging
+ Device Management
+ MDU Pairing
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-In-Home-Display
+ SE
+ SE 1.2 In-Home Display
+ Router
+ 0x0109
+ 0x0502
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Prepayment
+ Price
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-PCT
+ SE
+ SE 1.2 Programmable Communicating Thermostat (PCT)
+ Router
+ 0x0109
+ 0x0503
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Prepayment
+ Price
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-LC
+ SE
+ SE 1.2 Load Control Device
+ Router
+ 0x0109
+ 0x0504
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Price
+ Calendar
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-SA
+ SE
+ SE 1.2 Smart Appliance
+ Router
+ 0x0109
+ 0x0505
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Price
+ Time
+ Demand Response and Load Control
+ Messaging
+ Calendar
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-pt
+ SE
+ SE 1.2 Prepayment Terminal
+ Router
+ 0x0109
+ 0x0506
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Tunneling
+ Price
+ Time
+ Prepayment
+ Demand Response and Load Control
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+
+
+
+ SE1.2-physical
+ SE
+ SE 1.2 Physical Device
+ Router
+ 0x0109
+ 0x0507
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Keep-Alive
+
+
+
+ SE1.2-rcd
+ SE
+ SE 1.2 Remote Communications Device
+ Router
+ 0x0109
+ 0x0508
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Tunneling
+ Time
+ Keep-Alive
+
+
+
+ SE1.4-rangeextender
+ SE
+ SE 1.4 Range Extender
+ Router
+ 0x0109
+ 0x0008
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Sub-GHz
+
+
+
+ SE1.4-ESP
+ SE
+ SE 1.4 Energy Service Interface
+ Coordinator
+ 0x0109
+ 0x0500
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Messaging
+ Price
+ Demand Response and Load Control
+ Time
+ Calendar
+ Simple Metering
+ Prepayment
+ Device Management
+ Alarms
+ MDU Pairing
+ Energy Management
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-Meter
+ SE
+ SE 1.4 Metering Device
+ Router
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Simple Metering
+ Time
+ Prepayment
+ Price
+ Calendar
+ Messaging
+ Device Management
+ MDU Pairing
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-Meter-Mirror
+ SE
+ SE 1.4 Metering Mirror Device
+ Router
+ 0x0109
+ 0x0501
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Simple Metering
+ Time
+ Prepayment
+ Price
+ Calendar
+ Messaging
+ Device Management
+ MDU Pairing
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-In-Home-Display
+ SE
+ SE 1.4 In-Home Display
+ Router
+ 0x0109
+ 0x0502
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Prepayment
+ Price
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-PCT
+ SE
+ SE 1.4 Programmable Communicating Thermostat (PCT)
+ Router
+ 0x0109
+ 0x0503
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Prepayment
+ Price
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-LC
+ SE
+ SE 1.4 Load Control Device
+ Router
+ 0x0109
+ 0x0504
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Demand Response and Load Control
+ Time
+ Price
+ Calendar
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-SA
+ SE
+ SE 1.4 Smart Appliance
+ Router
+ 0x0109
+ 0x0505
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Price
+ Time
+ Demand Response and Load Control
+ Messaging
+ Calendar
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-pt
+ SE
+ SE 1.4 Prepayment Terminal
+ Router
+ 0x0109
+ 0x0506
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Tunneling
+ Price
+ Time
+ Prepayment
+ Demand Response and Load Control
+ Calendar
+ Simple Metering
+ Messaging
+ Device Management
+ MDU Pairing
+ Energy Management
+ Alarms
+ Tunneling
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-physical
+ SE
+ SE 1.4 Physical Device
+ Router
+ 0x0109
+ 0x0507
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Keep-Alive
+ Sub-GHz
+
+
+
+ SE1.4-rcd
+ SE
+ SE 1.4 Remote Communications Device
+ Router
+ 0x0109
+ 0x0508
+
+ Basic
+ Key Establishment
+ Power Configuration
+ Commissioning
+ Identify
+ Events
+ Over the Air Bootloading
+ Tunneling
+ Time
+ Keep-Alive
+ Sub-GHz
+
+
+
diff --git a/zcl/ami.xml b/zcl/ami.xml
new file mode 100644
index 0000000000..d2b772d655
--- /dev/null
+++ b/zcl/ami.xml
@@ -0,0 +1,5787 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Price
+ SE
+ The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises.
+ 0x0700
+ PRICE_CLUSTER
+ true
+ true
+
+
+ tier 1 price label
+ tier 2 price label
+ tier 3 price label
+ tier 4 price label
+ tier 5 price label
+ tier 6 price label
+ tier 7 price label
+ tier 8 price label
+ tier 9 price label
+ tier 10 price label
+ tier 11 price label
+ tier 12 price label
+ tier 13 price label
+ tier 14 price label
+ tier 15 price label
+ tier 16 price label
+ tier 17 price label
+ tier 18 price label
+ tier 19 price label
+ tier 20 price label
+ tier 21 price label
+ tier 22 price label
+ tier 23 price label
+ tier 24 price label
+ tier 25 price label
+ tier 26 price label
+ tier 27 price label
+ tier 28 price label
+ tier 29 price label
+ tier 30 price label
+ tier 31 price label
+ tier 32 price label
+ tier 33 price label
+ tier 34 price label
+ tier 35 price label
+ tier 36 price label
+ tier 37 price label
+ tier 38 price label
+ tier 39 price label
+ tier 40 price label
+ tier 41 price label
+ tier 42 price label
+ tier 43 price label
+ tier 44 price label
+ tier 45 price label
+ tier 46 price label
+ tier 47 price label
+ tier 48 price label
+
+ block 1 threshold
+ block 2 threshold
+ block 3 threshold
+ block 4 threshold
+ block 5 threshold
+ block 6 threshold
+ block 7 threshold
+ block 8 threshold
+ block 9 threshold
+ block 10 threshold
+ block 11 threshold
+ block 12 threshold
+ block 13 threshold
+ block 14 threshold
+ block 15 threshold
+ block threshold count
+ tier 1 block 1 threshold
+ tier 1 block 2 threshold
+ tier 1 block 3 threshold
+ tier 1 block 4 threshold
+ tier 1 block 5 threshold
+ tier 1 block 6 threshold
+ tier 1 block 7 threshold
+ tier 1 block 8 threshold
+ tier 1 block 9 threshold
+ tier 1 block 10 threshold
+ tier 1 block 11 threshold
+ tier 1 block 12 threshold
+ tier 1 block 13 threshold
+ tier 1 block 14 threshold
+ tier 1 block 15 threshold
+ tier 1 block threshold count
+ tier 2 block 1 threshold
+ tier 2 block 2 threshold
+ tier 2 block 3 threshold
+ tier 2 block 4 threshold
+ tier 2 block 5 threshold
+ tier 2 block 6 threshold
+ tier 2 block 7 threshold
+ tier 2 block 8 threshold
+ tier 2 block 9 threshold
+ tier 2 block 10 threshold
+ tier 2 block 11 threshold
+ tier 2 block 12 threshold
+ tier 2 block 13 threshold
+ tier 2 block 14 threshold
+ tier 2 block 15 threshold
+ tier 2 block threshold count
+ tier 3 block 1 threshold
+ tier 3 block 2 threshold
+ tier 3 block 3 threshold
+ tier 3 block 4 threshold
+ tier 3 block 5 threshold
+ tier 3 block 6 threshold
+ tier 3 block 7 threshold
+ tier 3 block 8 threshold
+ tier 3 block 9 threshold
+ tier 3 block 10 threshold
+ tier 3 block 11 threshold
+ tier 3 block 12 threshold
+ tier 3 block 13 threshold
+ tier 3 block 14 threshold
+ tier 3 block 15 threshold
+ tier 3 block threshold count
+ tier 4 block 1 threshold
+ tier 4 block 2 threshold
+ tier 4 block 3 threshold
+ tier 4 block 4 threshold
+ tier 4 block 5 threshold
+ tier 4 block 6 threshold
+ tier 4 block 7 threshold
+ tier 4 block 8 threshold
+ tier 4 block 9 threshold
+ tier 4 block 10 threshold
+ tier 4 block 11 threshold
+ tier 4 block 12 threshold
+ tier 4 block 13 threshold
+ tier 4 block 14 threshold
+ tier 4 block 15 threshold
+ tier 4 block threshold count
+ tier 5 block 1 threshold
+ tier 5 block 2 threshold
+ tier 5 block 3 threshold
+ tier 5 block 4 threshold
+ tier 5 block 5 threshold
+ tier 5 block 6 threshold
+ tier 5 block 7 threshold
+ tier 5 block 8 threshold
+ tier 5 block 9 threshold
+ tier 5 block 10 threshold
+ tier 5 block 11 threshold
+ tier 5 block 12 threshold
+ tier 5 block 13 threshold
+ tier 5 block 14 threshold
+ tier 5 block 15 threshold
+ tier 5 block threshold count
+ tier 6 block 1 threshold
+ tier 6 block 2 threshold
+ tier 6 block 3 threshold
+ tier 6 block 4 threshold
+ tier 6 block 5 threshold
+ tier 6 block 6 threshold
+ tier 6 block 7 threshold
+ tier 6 block 8 threshold
+ tier 6 block 9 threshold
+ tier 6 block 10 threshold
+ tier 6 block 11 threshold
+ tier 6 block 12 threshold
+ tier 6 block 13 threshold
+ tier 6 block 14 threshold
+ tier 6 block 15 threshold
+ tier 6 block threshold count
+ tier 7 block 1 threshold
+ tier 7 block 2 threshold
+ tier 7 block 3 threshold
+ tier 7 block 4 threshold
+ tier 7 block 5 threshold
+ tier 7 block 6 threshold
+ tier 7 block 7 threshold
+ tier 7 block 8 threshold
+ tier 7 block 9 threshold
+ tier 7 block 10 threshold
+ tier 7 block 11 threshold
+ tier 7 block 12 threshold
+ tier 7 block 13 threshold
+ tier 7 block 14 threshold
+ tier 7 block 15 threshold
+ tier 7 block threshold count
+ tier 8 block 1 threshold
+ tier 8 block 2 threshold
+ tier 8 block 3 threshold
+ tier 8 block 4 threshold
+ tier 8 block 5 threshold
+ tier 8 block 6 threshold
+ tier 8 block 7 threshold
+ tier 8 block 8 threshold
+ tier 8 block 9 threshold
+ tier 8 block 10 threshold
+ tier 8 block 11 threshold
+ tier 8 block 12 threshold
+ tier 8 block 13 threshold
+ tier 8 block 14 threshold
+ tier 8 block 15 threshold
+ tier 8 block threshold count
+ tier 9 block 1 threshold
+ tier 9 block 2 threshold
+ tier 9 block 3 threshold
+ tier 9 block 4 threshold
+ tier 9 block 5 threshold
+ tier 9 block 6 threshold
+ tier 9 block 7 threshold
+ tier 9 block 8 threshold
+ tier 9 block 9 threshold
+ tier 9 block 10 threshold
+ tier 9 block 11 threshold
+ tier 9 block 12 threshold
+ tier 9 block 13 threshold
+ tier 9 block 14 threshold
+ tier 9 block 15 threshold
+ tier 9 block threshold count
+ tier 10 block 1 threshold
+ tier 10 block 2 threshold
+ tier 10 block 3 threshold
+ tier 10 block 4 threshold
+ tier 10 block 5 threshold
+ tier 10 block 6 threshold
+ tier 10 block 7 threshold
+ tier 10 block 8 threshold
+ tier 10 block 9 threshold
+ tier 10 block 10 threshold
+ tier 10 block 11 threshold
+ tier 10 block 12 threshold
+ tier 10 block 13 threshold
+ tier 10 block 14 threshold
+ tier 10 block 15 threshold
+ tier 10 block threshold count
+ tier 11 block 1 threshold
+ tier 11 block 2 threshold
+ tier 11 block 3 threshold
+ tier 11 block 4 threshold
+ tier 11 block 5 threshold
+ tier 11 block 6 threshold
+ tier 11 block 7 threshold
+ tier 11 block 8 threshold
+ tier 11 block 9 threshold
+ tier 11 block 10 threshold
+ tier 11 block 11 threshold
+ tier 11 block 12 threshold
+ tier 11 block 13 threshold
+ tier 11 block 14 threshold
+ tier 11 block 15 threshold
+ tier 11 block threshold count
+ tier 12 block 1 threshold
+ tier 12 block 2 threshold
+ tier 12 block 3 threshold
+ tier 12 block 4 threshold
+ tier 12 block 5 threshold
+ tier 12 block 6 threshold
+ tier 12 block 7 threshold
+ tier 12 block 8 threshold
+ tier 12 block 9 threshold
+ tier 12 block 10 threshold
+ tier 12 block 11 threshold
+ tier 12 block 12 threshold
+ tier 12 block 13 threshold
+ tier 12 block 14 threshold
+ tier 12 block 15 threshold
+ tier 12 block threshold count
+ tier 13 block 1 threshold
+ tier 13 block 2 threshold
+ tier 13 block 3 threshold
+ tier 13 block 4 threshold
+ tier 13 block 5 threshold
+ tier 13 block 6 threshold
+ tier 13 block 7 threshold
+ tier 13 block 8 threshold
+ tier 13 block 9 threshold
+ tier 13 block 10 threshold
+ tier 13 block 11 threshold
+ tier 13 block 12 threshold
+ tier 13 block 13 threshold
+ tier 13 block 14 threshold
+ tier 13 block 15 threshold
+ tier 13 block threshold count
+ tier 14 block 1 threshold
+ tier 14 block 2 threshold
+ tier 14 block 3 threshold
+ tier 14 block 4 threshold
+ tier 14 block 5 threshold
+ tier 14 block 6 threshold
+ tier 14 block 7 threshold
+ tier 14 block 8 threshold
+ tier 14 block 9 threshold
+ tier 14 block 10 threshold
+ tier 14 block 11 threshold
+ tier 14 block 12 threshold
+ tier 14 block 13 threshold
+ tier 14 block 14 threshold
+ tier 14 block 15 threshold
+ tier 14 block threshold count
+ tier 15 block 1 threshold
+ tier 15 block 2 threshold
+ tier 15 block 3 threshold
+ tier 15 block 4 threshold
+ tier 15 block 5 threshold
+ tier 15 block 6 threshold
+ tier 15 block 7 threshold
+ tier 15 block 8 threshold
+ tier 15 block 9 threshold
+ tier 15 block 10 threshold
+ tier 15 block 11 threshold
+ tier 15 block 12 threshold
+ tier 15 block 13 threshold
+ tier 15 block 14 threshold
+ tier 15 block 15 threshold
+ tier 15 block threshold count
+
+ start of block period
+ block period duration (minutes)
+ threshold multiplier
+ threshold divisor
+ block period duration type
+
+ commodity type
+ standing charge
+ conversion factor
+ conversion factor trailing digit
+ calorific value
+ calorific value unit
+ calorific value trailing digit
+
+ no tier block 1 price
+ no tier block 2 price
+ no tier block 3 price
+ no tier block 4 price
+ no tier block 5 price
+ no tier block 6 price
+ no tier block 7 price
+ no tier block 8 price
+ no tier block 9 price
+ no tier block 10 price
+ no tier block 11 price
+ no tier block 12 price
+ no tier block 13 price
+ no tier block 14 price
+ no tier block 15 price
+ no tier block 16 price
+ tier 1 block 1 price
+ tier 1 block 2 price
+ tier 1 block 3 price
+ tier 1 block 4 price
+ tier 1 block 5 price
+ tier 1 block 6 price
+ tier 1 block 7 price
+ tier 1 block 8 price
+ tier 1 block 9 price
+ tier 1 block 10 price
+ tier 1 block 11 price
+ tier 1 block 12 price
+ tier 1 block 13 price
+ tier 1 block 14 price
+ tier 1 block 15 price
+ tier 1 block 16 price
+ tier 2 block 1 price
+ tier 2 block 2 price
+ tier 2 block 3 price
+ tier 2 block 4 price
+ tier 2 block 5 price
+ tier 2 block 6 price
+ tier 2 block 7 price
+ tier 2 block 8 price
+ tier 2 block 9 price
+ tier 2 block 10 price
+ tier 2 block 11 price
+ tier 2 block 12 price
+ tier 2 block 13 price
+ tier 2 block 14 price
+ tier 2 block 15 price
+ tier 2 block 16 price
+ tier 3 block 1 price
+ tier 3 block 2 price
+ tier 3 block 3 price
+ tier 3 block 4 price
+ tier 3 block 5 price
+ tier 3 block 6 price
+ tier 3 block 7 price
+ tier 3 block 8 price
+ tier 3 block 9 price
+ tier 3 block 10 price
+ tier 3 block 11 price
+ tier 3 block 12 price
+ tier 3 block 13 price
+ tier 3 block 14 price
+ tier 3 block 15 price
+ tier 3 block 16 price
+ tier 4 block 1 price
+ tier 4 block 2 price
+ tier 4 block 3 price
+ tier 4 block 4 price
+ tier 4 block 5 price
+ tier 4 block 6 price
+ tier 4 block 7 price
+ tier 4 block 8 price
+ tier 4 block 9 price
+ tier 4 block 10 price
+ tier 4 block 11 price
+ tier 4 block 12 price
+ tier 4 block 13 price
+ tier 4 block 14 price
+ tier 4 block 15 price
+ tier 4 block 16 price
+ tier 5 block 1 price
+ tier 5 block 2 price
+ tier 5 block 3 price
+ tier 5 block 4 price
+ tier 5 block 5 price
+ tier 5 block 6 price
+ tier 5 block 7 price
+ tier 5 block 8 price
+ tier 5 block 9 price
+ tier 5 block 10 price
+ tier 5 block 11 price
+ tier 5 block 12 price
+ tier 5 block 13 price
+ tier 5 block 14 price
+ tier 5 block 15 price
+ tier 5 block 16 price
+ tier 6 block 1 price
+ tier 6 block 2 price
+ tier 6 block 3 price
+ tier 6 block 4 price
+ tier 6 block 5 price
+ tier 6 block 6 price
+ tier 6 block 7 price
+ tier 6 block 8 price
+ tier 6 block 9 price
+ tier 6 block 10 price
+ tier 6 block 11 price
+ tier 6 block 12 price
+ tier 6 block 13 price
+ tier 6 block 14 price
+ tier 6 block 15 price
+ tier 6 block 16 price
+ tier 7 block 1 price
+ tier 7 block 2 price
+ tier 7 block 3 price
+ tier 7 block 4 price
+ tier 7 block 5 price
+ tier 7 block 6 price
+ tier 7 block 7 price
+ tier 7 block 8 price
+ tier 7 block 9 price
+ tier 7 block 10 price
+ tier 7 block 11 price
+ tier 7 block 12 price
+ tier 7 block 13 price
+ tier 7 block 14 price
+ tier 7 block 15 price
+ tier 7 block 16 price
+ tier 8 block 1 price
+ tier 8 block 2 price
+ tier 8 block 3 price
+ tier 8 block 4 price
+ tier 8 block 5 price
+ tier 8 block 6 price
+ tier 8 block 7 price
+ tier 8 block 8 price
+ tier 8 block 9 price
+ tier 8 block 10 price
+ tier 8 block 11 price
+ tier 8 block 12 price
+ tier 8 block 13 price
+ tier 8 block 14 price
+ tier 8 block 15 price
+ tier 8 block 16 price
+ tier 9 block 1 price
+ tier 9 block 2 price
+ tier 9 block 3 price
+ tier 9 block 4 price
+ tier 9 block 5 price
+ tier 9 block 6 price
+ tier 9 block 7 price
+ tier 9 block 8 price
+ tier 9 block 9 price
+ tier 9 block 10 price
+ tier 9 block 11 price
+ tier 9 block 12 price
+ tier 9 block 13 price
+ tier 9 block 14 price
+ tier 9 block 15 price
+ tier 9 block 16 price
+ tier 10 block 1 price
+ tier 10 block 2 price
+ tier 10 block 3 price
+ tier 10 block 4 price
+ tier 10 block 5 price
+ tier 10 block 6 price
+ tier 10 block 7 price
+ tier 10 block 8 price
+ tier 10 block 9 price
+ tier 10 block 10 price
+ tier 10 block 11 price
+ tier 10 block 12 price
+ tier 10 block 13 price
+ tier 10 block 14 price
+ tier 10 block 15 price
+ tier 10 block 16 price
+ tier 11 block 1 price
+ tier 11 block 2 price
+ tier 11 block 3 price
+ tier 11 block 4 price
+ tier 11 block 5 price
+ tier 11 block 6 price
+ tier 11 block 7 price
+ tier 11 block 8 price
+ tier 11 block 9 price
+ tier 11 block 10 price
+ tier 11 block 11 price
+ tier 11 block 12 price
+ tier 11 block 13 price
+ tier 11 block 14 price
+ tier 11 block 15 price
+ tier 11 block 16 price
+ tier 12 block 1 price
+ tier 12 block 2 price
+ tier 12 block 3 price
+ tier 12 block 4 price
+ tier 12 block 5 price
+ tier 12 block 6 price
+ tier 12 block 7 price
+ tier 12 block 8 price
+ tier 12 block 9 price
+ tier 12 block 10 price
+ tier 12 block 11 price
+ tier 12 block 12 price
+ tier 12 block 13 price
+ tier 12 block 14 price
+ tier 12 block 15 price
+ tier 12 block 16 price
+ tier 13 block 1 price
+ tier 13 block 2 price
+ tier 13 block 3 price
+ tier 13 block 4 price
+ tier 13 block 5 price
+ tier 13 block 6 price
+ tier 13 block 7 price
+ tier 13 block 8 price
+ tier 13 block 9 price
+ tier 13 block 10 price
+ tier 13 block 11 price
+ tier 13 block 12 price
+ tier 13 block 13 price
+ tier 13 block 14 price
+ tier 13 block 15 price
+ tier 13 block 16 price
+ tier 14 block 1 price
+ tier 14 block 2 price
+ tier 14 block 3 price
+ tier 14 block 4 price
+ tier 14 block 5 price
+ tier 14 block 6 price
+ tier 14 block 7 price
+ tier 14 block 8 price
+ tier 14 block 9 price
+ tier 14 block 10 price
+ tier 14 block 11 price
+ tier 14 block 12 price
+ tier 14 block 13 price
+ tier 14 block 14 price
+ tier 14 block 15 price
+ tier 14 block 16 price
+ tier 15 block 1 price
+ tier 15 block 2 price
+ tier 15 block 3 price
+ tier 15 block 4 price
+ tier 15 block 5 price
+ tier 15 block 6 price
+ tier 15 block 7 price
+ tier 15 block 8 price
+ tier 15 block 9 price
+ tier 15 block 10 price
+ tier 15 block 11 price
+ tier 15 block 12 price
+ tier 15 block 13 price
+ tier 15 block 14 price
+ tier 15 block 15 price
+ tier 15 block 16 price
+
+ price tier 16
+ price tier 17
+ price tier 18
+ price tier 19
+ price tier 20
+ price tier 21
+ price tier 22
+ price tier 23
+ price tier 24
+ price tier 25
+ price tier 26
+ price tier 27
+ price tier 28
+ price tier 29
+ price tier 30
+ price tier 31
+ price tier 32
+ price tier 33
+ price tier 34
+ price tier 35
+ price tier 36
+ price tier 37
+ price tier 38
+ price tier 39
+ price tier 40
+ price tier 41
+ price tier 42
+ price tier 43
+ price tier 44
+ price tier 45
+ price tier 46
+ price tier 47
+ price tier 48
+ CPP1 Price
+ CPP2 Price
+
+ tariff label
+ number of price tiers in use
+ number of block thresholds in use
+ tier block mode
+ unit of measure
+ currency
+ price trailing digit
+ tariff resolution period
+ CO2
+ CO2 unit
+ CO2 trailing digit
+
+ current billing period start
+ current billing period duration
+ last billing period start
+ last billing period duration
+ last billing period consolidated bill
+
+ credit payment due date
+ credit payment status
+ credit payment over due amount
+ payment discount
+ payment discount period
+ credit payment 1
+ credit payment date 1
+ credit payment ref 1
+ credit payment 2
+ credit payment date 2
+ credit payment ref 2
+ credit payment 3
+ credit payment date 3
+ credit payment ref 3
+ credit payment 4
+ credit payment date 4
+ credit payment ref 4
+ credit payment 5
+ credit payment date 5
+ credit payment ref 5
+
+ rx tier 1 price label
+ rx tier 2 price label
+ rx tier 3 price label
+ rx tier 4 price label
+ rx tier 5 price label
+ rx tier 6 price label
+ rx tier 7 price label
+ rx tier 8 price label
+ rx tier 9 price label
+ rx tier 10 price label
+ rx tier 11 price label
+ rx tier 12 price label
+ rx tier 13 price label
+ rx tier 14 price label
+ rx tier 15 price label
+ rx tier 16 price label
+ rx tier 17 price label
+ rx tier 18 price label
+ rx tier 19 price label
+ rx tier 20 price label
+ rx tier 21 price label
+ rx tier 22 price label
+ rx tier 23 price label
+ rx tier 24 price label
+ rx tier 25 price label
+ rx tier 26 price label
+ rx tier 27 price label
+ rx tier 28 price label
+ rx tier 29 price label
+ rx tier 30 price label
+ rx tier 31 price label
+ rx tier 32 price label
+ rx tier 33 price label
+ rx tier 34 price label
+ rx tier 35 price label
+ rx tier 36 price label
+ rx tier 37 price label
+ rx tier 38 price label
+ rx tier 39 price label
+ rx tier 40 price label
+ rx tier 41 price label
+ rx tier 42 price label
+ rx tier 43 price label
+ rx tier 44 price label
+ rx tier 45 price label
+ rx tier 46 price label
+ rx tier 47 price label
+ rx tier 48 price label
+
+ rx block 1 threshold
+ rx block 2 threshold
+ rx block 3 threshold
+ rx block 4 threshold
+ rx block 5 threshold
+ rx block 6 threshold
+ rx block 7 threshold
+ rx block 8 threshold
+ rx block 9 threshold
+ rx block 10 threshold
+ rx block 11 threshold
+ rx block 12 threshold
+ rx block 13 threshold
+ rx block 14 threshold
+ rx block 15 threshold
+
+ rx start of block period
+ rx block period duration
+ rx threshold multiplier
+ rx threshold divisor
+
+ rx no tier block 1 price
+ rx no tier block 2 price
+ rx no tier block 3 price
+ rx no tier block 4 price
+ rx no tier block 5 price
+ rx no tier block 6 price
+ rx no tier block 7 price
+ rx no tier block 8 price
+ rx no tier block 9 price
+ rx no tier block 10 price
+ rx no tier block 11 price
+ rx no tier block 12 price
+ rx no tier block 13 price
+ rx no tier block 14 price
+ rx no tier block 15 price
+ rx no tier block 16 price
+ rx tier 1 block 1 price
+ rx tier 1 block 2 price
+ rx tier 1 block 3 price
+ rx tier 1 block 4 price
+ rx tier 1 block 5 price
+ rx tier 1 block 6 price
+ rx tier 1 block 7 price
+ rx tier 1 block 8 price
+ rx tier 1 block 9 price
+ rx tier 1 block 10 price
+ rx tier 1 block 11 price
+ rx tier 1 block 12 price
+ rx tier 1 block 13 price
+ rx tier 1 block 14 price
+ rx tier 1 block 15 price
+ rx tier 1 block 16 price
+ rx tier 2 block 1 price
+ rx tier 2 block 2 price
+ rx tier 2 block 3 price
+ rx tier 2 block 4 price
+ rx tier 2 block 5 price
+ rx tier 2 block 6 price
+ rx tier 2 block 7 price
+ rx tier 2 block 8 price
+ rx tier 2 block 9 price
+ rx tier 2 block 10 price
+ rx tier 2 block 11 price
+ rx tier 2 block 12 price
+ rx tier 2 block 13 price
+ rx tier 2 block 14 price
+ rx tier 2 block 15 price
+ rx tier 2 block 16 price
+ rx tier 3 block 1 price
+ rx tier 3 block 2 price
+ rx tier 3 block 3 price
+ rx tier 3 block 4 price
+ rx tier 3 block 5 price
+ rx tier 3 block 6 price
+ rx tier 3 block 7 price
+ rx tier 3 block 8 price
+ rx tier 3 block 9 price
+ rx tier 3 block 10 price
+ rx tier 3 block 11 price
+ rx tier 3 block 12 price
+ rx tier 3 block 13 price
+ rx tier 3 block 14 price
+ rx tier 3 block 15 price
+ rx tier 3 block 16 price
+ rx tier 4 block 1 price
+ rx tier 4 block 2 price
+ rx tier 4 block 3 price
+ rx tier 4 block 4 price
+ rx tier 4 block 5 price
+ rx tier 4 block 6 price
+ rx tier 4 block 7 price
+ rx tier 4 block 8 price
+ rx tier 4 block 9 price
+ rx tier 4 block 10 price
+ rx tier 4 block 11 price
+ rx tier 4 block 12 price
+ rx tier 4 block 13 price
+ rx tier 4 block 14 price
+ rx tier 4 block 15 price
+ rx tier 4 block 16 price
+ rx tier 5 block 1 price
+ rx tier 5 block 2 price
+ rx tier 5 block 3 price
+ rx tier 5 block 4 price
+ rx tier 5 block 5 price
+ rx tier 5 block 6 price
+ rx tier 5 block 7 price
+ rx tier 5 block 8 price
+ rx tier 5 block 9 price
+ rx tier 5 block 10 price
+ rx tier 5 block 11 price
+ rx tier 5 block 12 price
+ rx tier 5 block 13 price
+ rx tier 5 block 14 price
+ rx tier 5 block 15 price
+ rx tier 5 block 16 price
+ rx tier 6 block 1 price
+ rx tier 6 block 2 price
+ rx tier 6 block 3 price
+ rx tier 6 block 4 price
+ rx tier 6 block 5 price
+ rx tier 6 block 6 price
+ rx tier 6 block 7 price
+ rx tier 6 block 8 price
+ rx tier 6 block 9 price
+ rx tier 6 block 10 price
+ rx tier 6 block 11 price
+ rx tier 6 block 12 price
+ rx tier 6 block 13 price
+ rx tier 6 block 14 price
+ rx tier 6 block 15 price
+ rx tier 6 block 16 price
+ rx tier 7 block 1 price
+ rx tier 7 block 2 price
+ rx tier 7 block 3 price
+ rx tier 7 block 4 price
+ rx tier 7 block 5 price
+ rx tier 7 block 6 price
+ rx tier 7 block 7 price
+ rx tier 7 block 8 price
+ rx tier 7 block 9 price
+ rx tier 7 block 10 price
+ rx tier 7 block 11 price
+ rx tier 7 block 12 price
+ rx tier 7 block 13 price
+ rx tier 7 block 14 price
+ rx tier 7 block 15 price
+ rx tier 7 block 16 price
+ rx tier 8 block 1 price
+ rx tier 8 block 2 price
+ rx tier 8 block 3 price
+ rx tier 8 block 4 price
+ rx tier 8 block 5 price
+ rx tier 8 block 6 price
+ rx tier 8 block 7 price
+ rx tier 8 block 8 price
+ rx tier 8 block 9 price
+ rx tier 8 block 10 price
+ rx tier 8 block 11 price
+ rx tier 8 block 12 price
+ rx tier 8 block 13 price
+ rx tier 8 block 14 price
+ rx tier 8 block 15 price
+ rx tier 8 block 16 price
+ rx tier 9 block 1 price
+ rx tier 9 block 2 price
+ rx tier 9 block 3 price
+ rx tier 9 block 4 price
+ rx tier 9 block 5 price
+ rx tier 9 block 6 price
+ rx tier 9 block 7 price
+ rx tier 9 block 8 price
+ rx tier 9 block 9 price
+ rx tier 9 block 10 price
+ rx tier 9 block 11 price
+ rx tier 9 block 12 price
+ rx tier 9 block 13 price
+ rx tier 9 block 14 price
+ rx tier 9 block 15 price
+ rx tier 9 block 16 price
+ rx tier 10 block 1 price
+ rx tier 10 block 2 price
+ rx tier 10 block 3 price
+ rx tier 10 block 4 price
+ rx tier 10 block 5 price
+ rx tier 10 block 6 price
+ rx tier 10 block 7 price
+ rx tier 10 block 8 price
+ rx tier 10 block 9 price
+ rx tier 10 block 10 price
+ rx tier 10 block 11 price
+ rx tier 10 block 12 price
+ rx tier 10 block 13 price
+ rx tier 10 block 14 price
+ rx tier 10 block 15 price
+ rx tier 10 block 16 price
+ rx tier 11 block 1 price
+ rx tier 11 block 2 price
+ rx tier 11 block 3 price
+ rx tier 11 block 4 price
+ rx tier 11 block 5 price
+ rx tier 11 block 6 price
+ rx tier 11 block 7 price
+ rx tier 11 block 8 price
+ rx tier 11 block 9 price
+ rx tier 11 block 10 price
+ rx tier 11 block 11 price
+ rx tier 11 block 12 price
+ rx tier 11 block 13 price
+ rx tier 11 block 14 price
+ rx tier 11 block 15 price
+ rx tier 11 block 16 price
+ rx tier 12 block 1 price
+ rx tier 12 block 2 price
+ rx tier 12 block 3 price
+ rx tier 12 block 4 price
+ rx tier 12 block 5 price
+ rx tier 12 block 6 price
+ rx tier 12 block 7 price
+ rx tier 12 block 8 price
+ rx tier 12 block 9 price
+ rx tier 12 block 10 price
+ rx tier 12 block 11 price
+ rx tier 12 block 12 price
+ rx tier 12 block 13 price
+ rx tier 12 block 14 price
+ rx tier 12 block 15 price
+ rx tier 12 block 16 price
+ rx tier 13 block 1 price
+ rx tier 13 block 2 price
+ rx tier 13 block 3 price
+ rx tier 13 block 4 price
+ rx tier 13 block 5 price
+ rx tier 13 block 6 price
+ rx tier 13 block 7 price
+ rx tier 13 block 8 price
+ rx tier 13 block 9 price
+ rx tier 13 block 10 price
+ rx tier 13 block 11 price
+ rx tier 13 block 12 price
+ rx tier 13 block 13 price
+ rx tier 13 block 14 price
+ rx tier 13 block 15 price
+ rx tier 13 block 16 price
+ rx tier 14 block 1 price
+ rx tier 14 block 2 price
+ rx tier 14 block 3 price
+ rx tier 14 block 4 price
+ rx tier 14 block 5 price
+ rx tier 14 block 6 price
+ rx tier 14 block 7 price
+ rx tier 14 block 8 price
+ rx tier 14 block 9 price
+ rx tier 14 block 10 price
+ rx tier 14 block 11 price
+ rx tier 14 block 12 price
+ rx tier 14 block 13 price
+ rx tier 14 block 14 price
+ rx tier 14 block 15 price
+ rx tier 14 block 16 price
+ rx tier 15 block 1 price
+ rx tier 15 block 2 price
+ rx tier 15 block 3 price
+ rx tier 15 block 4 price
+ rx tier 15 block 5 price
+ rx tier 15 block 6 price
+ rx tier 15 block 7 price
+ rx tier 15 block 8 price
+ rx tier 15 block 9 price
+ rx tier 15 block 10 price
+ rx tier 15 block 11 price
+ rx tier 15 block 12 price
+ rx tier 15 block 13 price
+ rx tier 15 block 14 price
+ rx tier 15 block 15 price
+ rx tier 15 block 16 price
+
+ rx price tier 16
+ rx price tier 17
+ rx price tier 18
+ rx price tier 19
+ rx price tier 20
+ rx price tier 21
+ rx price tier 22
+ rx price tier 23
+ rx price tier 24
+ rx price tier 25
+ rx price tier 26
+ rx price tier 27
+ rx price tier 28
+ rx price tier 29
+ rx price tier 30
+ rx price tier 31
+ rx price tier 32
+ rx price tier 33
+ rx price tier 34
+ rx price tier 35
+ rx price tier 36
+ rx price tier 37
+ rx price tier 38
+ rx price tier 39
+ rx price tier 40
+ rx price tier 41
+ rx price tier 42
+ rx price tier 43
+ rx price tier 44
+ rx price tier 45
+ rx price tier 46
+ rx price tier 47
+ rx price tier 48
+
+ rx tariff label
+ rx number of price tiers in use
+ rx number of block thresholds in use
+ rx tier block mode
+ rx tariff resolution period
+ rx CO2
+ rx CO2 unit
+ rx CO2 trailing digit
+
+ rx current billing period start
+ rx current billing period duration
+ rx last billing period start
+ rx last billing period duration
+ rx last billing period consolidated bill
+
+ price increase randomize minutes
+ price decrease randomize minutes
+ commodity type
+
+
+
+ The PublishPrice command is generated in response to receiving a Get Current Price command, in response to a Get Scheduled Prices command, and when an update to the pricing information is available from the commodity provider, either before or when a TOU price becomes active.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishBlockPeriod command is generated in response to receiving a GetBlockPeriod(s) command or when an update to the block tariff schedule is available from the commodity provider.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishConversionFactor command is sent in response to a GetConversionFactor command or if a new Conversion factor is available.
+
+
+
+
+
+
+
+
+ The PublishCalorificValue command is sent in response to a GetCalorificValue command or if a new calorific value is available.
+
+
+
+
+
+
+
+
+
+ The PublishTariffInformation command is sent in response to a GetTariffInformation command or if new tariff information is available (including price matrix and block thresholds).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PublishPriceMatrix command is used to publish the Block Price Information Set (up to 15 tiers x 15 blocks) and the Extended Price Information Set (up to 48 tiers). The PublishPriceMatrix command is sent in response to a GetPriceMatrix command.
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishBlockThreshold command is sent in response to a GetBlockThreshold command.
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishCO2Value command is sent in response to a GetCO2Value command or if a new CO2 conversion factor is available.
+
+
+
+
+
+
+
+
+
+
+
+ The PublishTierLabels command is generated in response to receiving a GetTierLabels command or when there is a tier label change.
+
+
+
+
+
+
+
+
+
+
+
+ The PublishBillingPeriod command is generated in response to receiving a GetBillingPeriod(s) command or when an update to the Billing schedule is available from the commodity Supplier.
+
+
+
+
+
+
+
+
+
+
+ The PublishConsolidatedBill command is used to make consolidated billing information of previous billing periods available to other end devices. This command is issued in response to a GetConsolidatedBill command or if new billing information is available.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishCPPEvent command is sent from an ESI to its price clients to notify them of a Critical Peak Pricing event.
+
+
+
+
+
+
+
+
+
+
+
+ The PublishCreditPayment command is used to update the credit payment information is available.
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishCurrencyConversion command is sent in response to a GetCurrencyConversion command or when a new currency becomes available.
+
+
+
+
+
+
+
+
+
+
+
+
+ The CancelTariff command indicates that all data associated with a particular tariff instance should be discarded.
+
+
+
+
+
+
+
+
+ The GetCurrentPrice command initiates a PublishPrice command for the current time.
+
+
+
+
+
+ The GetScheduledPrices command initiates a PublishPrice command for available price events.
+
+
+
+
+
+
+ The PriceAcknowledgement command described provides the ability to acknowledge a previously sent PublishPrice command.
+
+
+
+
+
+
+
+
+ The GetBlockPeriods command initiates a PublishBlockPeriod command for the currently scheduled block periods.
+
+
+
+
+
+
+
+ The GetConversionFactor command initiates a PublishConversionFactor command for the scheduled conversion factor updates.
+
+
+
+
+
+
+
+ The GetCalorificValue command initiates a PublishCalorificValue command for the scheduled conversion factor updates.
+
+
+
+
+
+
+
+ The GetTariffInformation command initiates a PublishTariffInformation command for the scheduled tariff updates.
+
+
+
+
+
+
+
+
+ The GetPriceMatrix command initiates a PublishPriceMatrix command for the scheduled Price Matrix updates.
+
+
+
+
+
+ The GetBlockThresholds command initiates a PublishBlockThreshold command for the scheduled Block Threshold updates.
+
+
+
+
+
+ The GetCO2Value command initiates a PublishCO2Value command for the scheduled CO2 conversion factor updates.
+
+
+
+
+
+
+
+
+ The GetTierLabels command allows a client to retrieve the tier labels associated with a given tariff; this command initiates a PublishTierLabels command from the server.
+
+
+
+
+
+ The GetBillingPeriod command initiates one or more PublishBillingPeriod commands for the currently scheduled billing periods.
+
+
+
+
+
+
+
+
+ The GetConsolidatedBill command initiates one or more PublishConsolidatedBill commands with the requested billing information.
+
+
+
+
+
+
+
+
+ The CPPEventResponse command is sent from a Client (IHD) to the ESI to notify it of a Critical Peak Pricing event authorization.
+
+
+
+
+
+
+ The GetCreditPayment command initiates PublishCreditPayment commands for the requested credit payment information.
+
+
+
+
+
+
+ The GetCurrencyConversionCommand command initiates a PublishCurrencyConversion command for the currency conversion factor updates. A server shall be capable of storing both the old and the new currencies.
+
+
+
+
+ The GetTariffCancellation command initiates the return of the last CancelTariff command held on the associated server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Demand Response and Load Control
+ SE
+ This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control.
+ 0x0701
+ DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER
+ true
+ true
+
+
+ utility enrollment group
+ start randomization minutes
+ duration randomization minutes
+ device class value
+
+
+
+ Command description for LoadControlEvent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for CancelLoadControlEvent
+
+
+
+
+
+
+
+
+
+ Command description for CancelAllLoadControlEvents
+
+
+
+
+
+
+ Command description for ReportEventStatus
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for GetScheduledEvents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Simple Metering
+ SE
+ The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices.
+ 0x0702
+ SIMPLE_METERING_CLUSTER
+ true
+ true
+
+
+ current summation delivered
+ current summation received
+ current max demand delivered
+ current max demand received
+ dft summation
+ daily freeze time
+ power factor
+ reading snapshot time
+ current max demand delivered time
+ current max demand received time
+ default update period
+ fast poll update period
+ current block period consumption delivered
+ daily consumption target
+ current block
+ profile interval period
+ interval read reporting period
+ preset reading time
+ volume per report
+ flow restriction
+ supply status
+ current inlet energy carrier summation
+ current outlet energy carrier summation
+ inlet temperature
+ outlet temperature
+ control temperature
+ current inlet energy carrier demand
+ current outlet energy carrier demand
+ previous block period consumption delivered
+ current block period consumption received
+ current block received
+ dft summation received
+ active register tier delivered
+ active register tier received
+ last block switch time
+
+ current tier 1 summation delivered
+ current tier 1 summation received
+ current tier 2 summation delivered
+ current tier 2 summation received
+ current tier 3 summation delivered
+ current tier 3 summation received
+ current tier 4 summation delivered
+ current tier 4 summation received
+ current tier 5 summation delivered
+ current tier 5 summation received
+ current tier 6 summation delivered
+ current tier 6 summation received
+ current tier 7 summation delivered
+ current tier 7 summation received
+ current tier 8 summation delivered
+ current tier 8 summation received
+ current tier 9 summation delivered
+ current tier 9 summation received
+ current tier 10 summation delivered
+ current tier 10 summation received
+ current tier 11 summation delivered
+ current tier 11 summation received
+ current tier 12 summation delivered
+ current tier 12 summation received
+ current tier 13 summation delivered
+ current tier 13 summation received
+ current tier 14 summation delivered
+ current tier 14 summation received
+ current tier 15 summation delivered
+ current tier 15 summation received
+ current tier 16 summation delivered
+ current tier 16 summation received
+ current tier 17 summation delivered
+ current tier 17 summation received
+ current tier 18 summation delivered
+ current tier 18 summation received
+ current tier 19 summation delivered
+ current tier 19 summation received
+ current tier 20 summation delivered
+ current tier 20 summation received
+ current tier 21 summation delivered
+ current tier 21 summation received
+ current tier 22 summation delivered
+ current tier 22 summation received
+ current tier 23 summation delivered
+ current tier 23 summation received
+ current tier 24 summation delivered
+ current tier 24 summation received
+ current tier 25 summation delivered
+ current tier 25 summation received
+ current tier 26 summation delivered
+ current tier 26 summation received
+ current tier 27 summation delivered
+ current tier 27 summation received
+ current tier 28 summation delivered
+ current tier 28 summation received
+ current tier 29 summation delivered
+ current tier 29 summation received
+ current tier 30 summation delivered
+ current tier 30 summation received
+ current tier 31 summation delivered
+ current tier 31 summation received
+ current tier 32 summation delivered
+ current tier 32 summation received
+ current tier 33 summation delivered
+ current tier 33 summation received
+ current tier 34 summation delivered
+ current tier 34 summation received
+ current tier 35 summation delivered
+ current tier 35 summation received
+ current tier 36 summation delivered
+ current tier 36 summation received
+ current tier 37 summation delivered
+ current tier 37 summation received
+ current tier 38 summation delivered
+ current tier 38 summation received
+ current tier 39 summation delivered
+ current tier 39 summation received
+ current tier 40 summation delivered
+ current tier 40 summation received
+ current tier 41 summation delivered
+ current tier 41 summation received
+ current tier 42 summation delivered
+ current tier 42 summation received
+ current tier 43 summation delivered
+ current tier 43 summation received
+ current tier 44 summation delivered
+ current tier 44 summation received
+ current tier 45 summation delivered
+ current tier 45 summation received
+ current tier 46 summation delivered
+ current tier 46 summation received
+ current tier 47 summation delivered
+ current tier 47 summation received
+ current tier 48 summation delivered
+ current tier 48 summation received
+ CPP1 Summation Delivered
+ CPP2 Summation Delivered
+
+ status
+ remaining battery life
+ hours in operation
+ hours in fault
+ extended status
+ remaining battery life in days
+ current meter id
+ ambient consumption indicator
+
+ unit of measure
+ multiplier
+ divisor
+ summation formatting
+ demand formatting
+ historical consumption formatting
+ metering device type
+ site id
+ meter serial number
+ energy carrier unit of measure
+ energy carrier summation formatting
+ energy carrier demand formatting
+ temperature unit of measure
+ temperature formatting
+ module serial number
+ operating tariff label delivered
+ operating tariff label received
+ customer id number
+ alternative unit of measure
+ alternative demand formatting
+ alternative consumption formatting
+
+ instantaneous demand
+ current day consumption delivered
+ current day consumption received
+ previous day consumption delivered
+ previous day consumption received
+ current partial profile interval start time delivered
+ current partial profile interval start time received
+ current partial profile interval value delivered
+ current partial profile interval value received
+ current day max pressure
+ current day min pressure
+ previous day max pressure
+ previous day min pressure
+ current day max demand
+ previous day max demand
+ current month max demand
+ current year max demand
+ current day max energy carrier demand
+ previous day max energy carrier demand
+ current month max energy carrier demand
+ current month min energy carrier demand
+ current year max energy carrier demand
+ current year min energy carrier demand
+ previous day 2 consumption delivered
+ previous day 2 consumption received
+ previous day 3 consumption delivered
+ previous day 3 consumption received
+ previous day 4 consumption delivered
+ previous day 4 consumption received
+ previous day 5 consumption delivered
+ previous day 5 consumption received
+ previous day 6 consumption delivered
+ previous day 6 consumption received
+ previous day 7 consumption delivered
+ previous day 7 consumption received
+ previous day 8 consumption delivered
+ previous day 8 consumption received
+ current week consumption delivered
+ current week consumption received
+ previous week consumption delivered
+ previous week consumption received
+ previous week 2 consumption delivered
+ previous week 2 consumption received
+ previous week 3 consumption delivered
+ previous week 3 consumption received
+ previous week 4 consumption delivered
+ previous week 4 consumption received
+ previous week 5 consumption delivered
+ previous week 5 consumption received
+ current month consumption delivered
+ current month consumption received
+ previous month consumption delivered
+ previous month consumption received
+ previous month 2 consumption delivered
+ previous month 2 consumption received
+ previous month 3 consumption delivered
+ previous month 3 consumption received
+ previous month 4 consumption delivered
+ previous month 4 consumption received
+ previous month 5 consumption delivered
+ previous month 5 consumption received
+ previous month 6 consumption delivered
+ previous month 6 consumption received
+ previous month 7 consumption delivered
+ previous month 7 consumption received
+ previous month 8 consumption delivered
+ previous month 8 consumption received
+ previous month 9 consumption delivered
+ previous month 9 consumption received
+ previous month 10 consumption delivered
+ previous month 10 consumption received
+ previous month 11 consumption delivered
+ previous month 11 consumption received
+ previous month 12 consumption delivered
+ previous month 12 consumption received
+ previous month 13 consumption delivered
+ previous month 13 consumption received
+ historical freeze time
+ current day max demand delivered
+ current day max demand delivered time
+ current day max demand received
+ current day max demand received time
+ previous day max demand delivered
+ previous day max demand delivered time
+ previous day max demand received
+ previous day max demand received time
+
+ max number of periods delivered
+
+ current demand delivered
+ demand limit
+ demand integration period
+ number of demand subintervals
+ demand limit arm duration in minutes
+ load limit supply state
+ load limit counter
+ supply tamper state
+ supply depletion state
+ supply uncontrolled flow state
+
+ current no tier block 1 summation delivered
+ current no tier block 2 summation delivered
+ current no tier block 3 summation delivered
+ current no tier block 4 summation delivered
+ current no tier block 5 summation delivered
+ current no tier block 6 summation delivered
+ current no tier block 7 summation delivered
+ current no tier block 8 summation delivered
+ current no tier block 9 summation delivered
+ current no tier block 10 summation delivered
+ current no tier block 11 summation delivered
+ current no tier block 12 summation delivered
+ current no tier block 13 summation delivered
+ current no tier block 14 summation delivered
+ current no tier block 15 summation delivered
+ current no tier block 16 summation delivered
+ current tier 1 block 1 summation delivered
+ current tier 1 block 2 summation delivered
+ current tier 1 block 3 summation delivered
+ current tier 1 block 4 summation delivered
+ current tier 1 block 5 summation delivered
+ current tier 1 block 6 summation delivered
+ current tier 1 block 7 summation delivered
+ current tier 1 block 8 summation delivered
+ current tier 1 block 9 summation delivered
+ current tier 1 block 10 summation delivered
+ current tier 1 block 11 summation delivered
+ current tier 1 block 12 summation delivered
+ current tier 1 block 13 summation delivered
+ current tier 1 block 14 summation delivered
+ current tier 1 block 15 summation delivered
+ current tier 1 block 16 summation delivered
+ current tier 2 block 1 summation delivered
+ current tier 2 block 2 summation delivered
+ current tier 2 block 3 summation delivered
+ current tier 2 block 4 summation delivered
+ current tier 2 block 5 summation delivered
+ current tier 2 block 6 summation delivered
+ current tier 2 block 7 summation delivered
+ current tier 2 block 8 summation delivered
+ current tier 2 block 9 summation delivered
+ current tier 2 block 10 summation delivered
+ current tier 2 block 11 summation delivered
+ current tier 2 block 12 summation delivered
+ current tier 2 block 13 summation delivered
+ current tier 2 block 14 summation delivered
+ current tier 2 block 15 summation delivered
+ current tier 2 block 16 summation delivered
+ current tier 3 block 1 summation delivered
+ current tier 3 block 2 summation delivered
+ current tier 3 block 3 summation delivered
+ current tier 3 block 4 summation delivered
+ current tier 3 block 5 summation delivered
+ current tier 3 block 6 summation delivered
+ current tier 3 block 7 summation delivered
+ current tier 3 block 8 summation delivered
+ current tier 3 block 9 summation delivered
+ current tier 3 block 10 summation delivered
+ current tier 3 block 11 summation delivered
+ current tier 3 block 12 summation delivered
+ current tier 3 block 13 summation delivered
+ current tier 3 block 14 summation delivered
+ current tier 3 block 15 summation delivered
+ current tier 3 block 16 summation delivered
+ current tier 4 block 1 summation delivered
+ current tier 4 block 2 summation delivered
+ current tier 4 block 3 summation delivered
+ current tier 4 block 4 summation delivered
+ current tier 4 block 5 summation delivered
+ current tier 4 block 6 summation delivered
+ current tier 4 block 7 summation delivered
+ current tier 4 block 8 summation delivered
+ current tier 4 block 9 summation delivered
+ current tier 4 block 10 summation delivered
+ current tier 4 block 11 summation delivered
+ current tier 4 block 12 summation delivered
+ current tier 4 block 13 summation delivered
+ current tier 4 block 14 summation delivered
+ current tier 4 block 15 summation delivered
+ current tier 4 block 16 summation delivered
+ current tier 5 block 1 summation delivered
+ current tier 5 block 2 summation delivered
+ current tier 5 block 3 summation delivered
+ current tier 5 block 4 summation delivered
+ current tier 5 block 5 summation delivered
+ current tier 5 block 6 summation delivered
+ current tier 5 block 7 summation delivered
+ current tier 5 block 8 summation delivered
+ current tier 5 block 9 summation delivered
+ current tier 5 block 10 summation delivered
+ current tier 5 block 11 summation delivered
+ current tier 5 block 12 summation delivered
+ current tier 5 block 13 summation delivered
+ current tier 5 block 14 summation delivered
+ current tier 5 block 15 summation delivered
+ current tier 5 block 16 summation delivered
+ current tier 6 block 1 summation delivered
+ current tier 6 block 2 summation delivered
+ current tier 6 block 3 summation delivered
+ current tier 6 block 4 summation delivered
+ current tier 6 block 5 summation delivered
+ current tier 6 block 6 summation delivered
+ current tier 6 block 7 summation delivered
+ current tier 6 block 8 summation delivered
+ current tier 6 block 9 summation delivered
+ current tier 6 block 10 summation delivered
+ current tier 6 block 11 summation delivered
+ current tier 6 block 12 summation delivered
+ current tier 6 block 13 summation delivered
+ current tier 6 block 14 summation delivered
+ current tier 6 block 15 summation delivered
+ current tier 6 block 16 summation delivered
+ current tier 7 block 1 summation delivered
+ current tier 7 block 2 summation delivered
+ current tier 7 block 3 summation delivered
+ current tier 7 block 4 summation delivered
+ current tier 7 block 5 summation delivered
+ current tier 7 block 6 summation delivered
+ current tier 7 block 7 summation delivered
+ current tier 7 block 8 summation delivered
+ current tier 7 block 9 summation delivered
+ current tier 7 block 10 summation delivered
+ current tier 7 block 11 summation delivered
+ current tier 7 block 12 summation delivered
+ current tier 7 block 13 summation delivered
+ current tier 7 block 14 summation delivered
+ current tier 7 block 15 summation delivered
+ current tier 7 block 16 summation delivered
+ current tier 8 block 1 summation delivered
+ current tier 8 block 2 summation delivered
+ current tier 8 block 3 summation delivered
+ current tier 8 block 4 summation delivered
+ current tier 8 block 5 summation delivered
+ current tier 8 block 6 summation delivered
+ current tier 8 block 7 summation delivered
+ current tier 8 block 8 summation delivered
+ current tier 8 block 9 summation delivered
+ current tier 8 block 10 summation delivered
+ current tier 8 block 11 summation delivered
+ current tier 8 block 12 summation delivered
+ current tier 8 block 13 summation delivered
+ current tier 8 block 14 summation delivered
+ current tier 8 block 15 summation delivered
+ current tier 8 block 16 summation delivered
+ current tier 9 block 1 summation delivered
+ current tier 9 block 2 summation delivered
+ current tier 9 block 3 summation delivered
+ current tier 9 block 4 summation delivered
+ current tier 9 block 5 summation delivered
+ current tier 9 block 6 summation delivered
+ current tier 9 block 7 summation delivered
+ current tier 9 block 8 summation delivered
+ current tier 9 block 9 summation delivered
+ current tier 9 block 10 summation delivered
+ current tier 9 block 11 summation delivered
+ current tier 9 block 12 summation delivered
+ current tier 9 block 13 summation delivered
+ current tier 9 block 14 summation delivered
+ current tier 9 block 15 summation delivered
+ current tier 9 block 16 summation delivered
+ current tier 10 block 1 summation delivered
+ current tier 10 block 2 summation delivered
+ current tier 10 block 3 summation delivered
+ current tier 10 block 4 summation delivered
+ current tier 10 block 5 summation delivered
+ current tier 10 block 6 summation delivered
+ current tier 10 block 7 summation delivered
+ current tier 10 block 8 summation delivered
+ current tier 10 block 9 summation delivered
+ current tier 10 block 10 summation delivered
+ current tier 10 block 11 summation delivered
+ current tier 10 block 12 summation delivered
+ current tier 10 block 13 summation delivered
+ current tier 10 block 14 summation delivered
+ current tier 10 block 15 summation delivered
+ current tier 10 block 16 summation delivered
+ current tier 11 block 1 summation delivered
+ current tier 11 block 2 summation delivered
+ current tier 11 block 3 summation delivered
+ current tier 11 block 4 summation delivered
+ current tier 11 block 5 summation delivered
+ current tier 11 block 6 summation delivered
+ current tier 11 block 7 summation delivered
+ current tier 11 block 8 summation delivered
+ current tier 11 block 9 summation delivered
+ current tier 11 block 10 summation delivered
+ current tier 11 block 11 summation delivered
+ current tier 11 block 12 summation delivered
+ current tier 11 block 13 summation delivered
+ current tier 11 block 14 summation delivered
+ current tier 11 block 15 summation delivered
+ current tier 11 block 16 summation delivered
+ current tier 12 block 1 summation delivered
+ current tier 12 block 2 summation delivered
+ current tier 12 block 3 summation delivered
+ current tier 12 block 4 summation delivered
+ current tier 12 block 5 summation delivered
+ current tier 12 block 6 summation delivered
+ current tier 12 block 7 summation delivered
+ current tier 12 block 8 summation delivered
+ current tier 12 block 9 summation delivered
+ current tier 12 block 10 summation delivered
+ current tier 12 block 11 summation delivered
+ current tier 12 block 12 summation delivered
+ current tier 12 block 13 summation delivered
+ current tier 12 block 14 summation delivered
+ current tier 12 block 15 summation delivered
+ current tier 12 block 16 summation delivered
+ current tier 13 block 1 summation delivered
+ current tier 13 block 2 summation delivered
+ current tier 13 block 3 summation delivered
+ current tier 13 block 4 summation delivered
+ current tier 13 block 5 summation delivered
+ current tier 13 block 6 summation delivered
+ current tier 13 block 7 summation delivered
+ current tier 13 block 8 summation delivered
+ current tier 13 block 9 summation delivered
+ current tier 13 block 10 summation delivered
+ current tier 13 block 11 summation delivered
+ current tier 13 block 12 summation delivered
+ current tier 13 block 13 summation delivered
+ current tier 13 block 14 summation delivered
+ current tier 13 block 15 summation delivered
+ current tier 13 block 16 summation delivered
+ current tier 14 block 1 summation delivered
+ current tier 14 block 2 summation delivered
+ current tier 14 block 3 summation delivered
+ current tier 14 block 4 summation delivered
+ current tier 14 block 5 summation delivered
+ current tier 14 block 6 summation delivered
+ current tier 14 block 7 summation delivered
+ current tier 14 block 8 summation delivered
+ current tier 14 block 9 summation delivered
+ current tier 14 block 10 summation delivered
+ current tier 14 block 11 summation delivered
+ current tier 14 block 12 summation delivered
+ current tier 14 block 13 summation delivered
+ current tier 14 block 14 summation delivered
+ current tier 14 block 15 summation delivered
+ current tier 14 block 16 summation delivered
+ current tier 15 block 1 summation delivered
+ current tier 15 block 2 summation delivered
+ current tier 15 block 3 summation delivered
+ current tier 15 block 4 summation delivered
+ current tier 15 block 5 summation delivered
+ current tier 15 block 6 summation delivered
+ current tier 15 block 7 summation delivered
+ current tier 15 block 8 summation delivered
+ current tier 15 block 9 summation delivered
+ current tier 15 block 10 summation delivered
+ current tier 15 block 11 summation delivered
+ current tier 15 block 12 summation delivered
+ current tier 15 block 13 summation delivered
+ current tier 15 block 14 summation delivered
+ current tier 15 block 15 summation delivered
+ current tier 15 block 16 summation delivered
+
+ generic alarm mask
+ electricity alarm mask
+ generic flow/pressure alarm mask
+ water specific alarm mask
+ heat and cooling specific alarm mask
+ gas specific alarm mask
+ extended generic alarm mask
+ manufacture alarm mask
+
+ current no tier block 1 summation received
+ current no tier block 2 summation received
+ current no tier block 3 summation received
+ current no tier block 4 summation received
+ current no tier block 5 summation received
+ current no tier block 6 summation received
+ current no tier block 7 summation received
+ current no tier block 8 summation received
+ current no tier block 9 summation received
+ current no tier block 10 summation received
+ current no tier block 11 summation received
+ current no tier block 12 summation received
+ current no tier block 13 summation received
+ current no tier block 14 summation received
+ current no tier block 15 summation received
+ current no tier block 16 summation received
+ current tier 1 block 1 summation received
+ current tier 1 block 2 summation received
+ current tier 1 block 3 summation received
+ current tier 1 block 4 summation received
+ current tier 1 block 5 summation received
+ current tier 1 block 6 summation received
+ current tier 1 block 7 summation received
+ current tier 1 block 8 summation received
+ current tier 1 block 9 summation received
+ current tier 1 block 10 summation received
+ current tier 1 block 11 summation received
+ current tier 1 block 12 summation received
+ current tier 1 block 13 summation received
+ current tier 1 block 14 summation received
+ current tier 1 block 15 summation received
+ current tier 1 block 16 summation received
+ current tier 2 block 1 summation received
+ current tier 2 block 2 summation received
+ current tier 2 block 3 summation received
+ current tier 2 block 4 summation received
+ current tier 2 block 5 summation received
+ current tier 2 block 6 summation received
+ current tier 2 block 7 summation received
+ current tier 2 block 8 summation received
+ current tier 2 block 9 summation received
+ current tier 2 block 10 summation received
+ current tier 2 block 11 summation received
+ current tier 2 block 12 summation received
+ current tier 2 block 13 summation received
+ current tier 2 block 14 summation received
+ current tier 2 block 15 summation received
+ current tier 2 block 16 summation received
+ current tier 3 block 1 summation received
+ current tier 3 block 2 summation received
+ current tier 3 block 3 summation received
+ current tier 3 block 4 summation received
+ current tier 3 block 5 summation received
+ current tier 3 block 6 summation received
+ current tier 3 block 7 summation received
+ current tier 3 block 8 summation received
+ current tier 3 block 9 summation received
+ current tier 3 block 10 summation received
+ current tier 3 block 11 summation received
+ current tier 3 block 12 summation received
+ current tier 3 block 13 summation received
+ current tier 3 block 14 summation received
+ current tier 3 block 15 summation received
+ current tier 3 block 16 summation received
+ current tier 4 block 1 summation received
+ current tier 4 block 2 summation received
+ current tier 4 block 3 summation received
+ current tier 4 block 4 summation received
+ current tier 4 block 5 summation received
+ current tier 4 block 6 summation received
+ current tier 4 block 7 summation received
+ current tier 4 block 8 summation received
+ current tier 4 block 9 summation received
+ current tier 4 block 10 summation received
+ current tier 4 block 11 summation received
+ current tier 4 block 12 summation received
+ current tier 4 block 13 summation received
+ current tier 4 block 14 summation received
+ current tier 4 block 15 summation received
+ current tier 4 block 16 summation received
+ current tier 5 block 1 summation received
+ current tier 5 block 2 summation received
+ current tier 5 block 3 summation received
+ current tier 5 block 4 summation received
+ current tier 5 block 5 summation received
+ current tier 5 block 6 summation received
+ current tier 5 block 7 summation received
+ current tier 5 block 8 summation received
+ current tier 5 block 9 summation received
+ current tier 5 block 10 summation received
+ current tier 5 block 11 summation received
+ current tier 5 block 12 summation received
+ current tier 5 block 13 summation received
+ current tier 5 block 14 summation received
+ current tier 5 block 15 summation received
+ current tier 5 block 16 summation received
+ current tier 6 block 1 summation received
+ current tier 6 block 2 summation received
+ current tier 6 block 3 summation received
+ current tier 6 block 4 summation received
+ current tier 6 block 5 summation received
+ current tier 6 block 6 summation received
+ current tier 6 block 7 summation received
+ current tier 6 block 8 summation received
+ current tier 6 block 9 summation received
+ current tier 6 block 10 summation received
+ current tier 6 block 11 summation received
+ current tier 6 block 12 summation received
+ current tier 6 block 13 summation received
+ current tier 6 block 14 summation received
+ current tier 6 block 15 summation received
+ current tier 6 block 16 summation received
+ current tier 7 block 1 summation received
+ current tier 7 block 2 summation received
+ current tier 7 block 3 summation received
+ current tier 7 block 4 summation received
+ current tier 7 block 5 summation received
+ current tier 7 block 6 summation received
+ current tier 7 block 7 summation received
+ current tier 7 block 8 summation received
+ current tier 7 block 9 summation received
+ current tier 7 block 10 summation received
+ current tier 7 block 11 summation received
+ current tier 7 block 12 summation received
+ current tier 7 block 13 summation received
+ current tier 7 block 14 summation received
+ current tier 7 block 15 summation received
+ current tier 7 block 16 summation received
+ current tier 8 block 1 summation received
+ current tier 8 block 2 summation received
+ current tier 8 block 3 summation received
+ current tier 8 block 4 summation received
+ current tier 8 block 5 summation received
+ current tier 8 block 6 summation received
+ current tier 8 block 7 summation received
+ current tier 8 block 8 summation received
+ current tier 8 block 9 summation received
+ current tier 8 block 10 summation received
+ current tier 8 block 11 summation received
+ current tier 8 block 12 summation received
+ current tier 8 block 13 summation received
+ current tier 8 block 14 summation received
+ current tier 8 block 15 summation received
+ current tier 8 block 16 summation received
+ current tier 9 block 1 summation received
+ current tier 9 block 2 summation received
+ current tier 9 block 3 summation received
+ current tier 9 block 4 summation received
+ current tier 9 block 5 summation received
+ current tier 9 block 6 summation received
+ current tier 9 block 7 summation received
+ current tier 9 block 8 summation received
+ current tier 9 block 9 summation received
+ current tier 9 block 10 summation received
+ current tier 9 block 11 summation received
+ current tier 9 block 12 summation received
+ current tier 9 block 13 summation received
+ current tier 9 block 14 summation received
+ current tier 9 block 15 summation received
+ current tier 9 block 16 summation received
+ current tier 10 block 1 summation received
+ current tier 10 block 2 summation received
+ current tier 10 block 3 summation received
+ current tier 10 block 4 summation received
+ current tier 10 block 5 summation received
+ current tier 10 block 6 summation received
+ current tier 10 block 7 summation received
+ current tier 10 block 8 summation received
+ current tier 10 block 9 summation received
+ current tier 10 block 10 summation received
+ current tier 10 block 11 summation received
+ current tier 10 block 12 summation received
+ current tier 10 block 13 summation received
+ current tier 10 block 14 summation received
+ current tier 10 block 15 summation received
+ current tier 10 block 16 summation received
+ current tier 11 block 1 summation received
+ current tier 11 block 2 summation received
+ current tier 11 block 3 summation received
+ current tier 11 block 4 summation received
+ current tier 11 block 5 summation received
+ current tier 11 block 6 summation received
+ current tier 11 block 7 summation received
+ current tier 11 block 8 summation received
+ current tier 11 block 9 summation received
+ current tier 11 block 10 summation received
+ current tier 11 block 11 summation received
+ current tier 11 block 12 summation received
+ current tier 11 block 13 summation received
+ current tier 11 block 14 summation received
+ current tier 11 block 15 summation received
+ current tier 11 block 16 summation received
+ current tier 12 block 1 summation received
+ current tier 12 block 2 summation received
+ current tier 12 block 3 summation received
+ current tier 12 block 4 summation received
+ current tier 12 block 5 summation received
+ current tier 12 block 6 summation received
+ current tier 12 block 7 summation received
+ current tier 12 block 8 summation received
+ current tier 12 block 9 summation received
+ current tier 12 block 10 summation received
+ current tier 12 block 11 summation received
+ current tier 12 block 12 summation received
+ current tier 12 block 13 summation received
+ current tier 12 block 14 summation received
+ current tier 12 block 15 summation received
+ current tier 12 block 16 summation received
+ current tier 13 block 1 summation received
+ current tier 13 block 2 summation received
+ current tier 13 block 3 summation received
+ current tier 13 block 4 summation received
+ current tier 13 block 5 summation received
+ current tier 13 block 6 summation received
+ current tier 13 block 7 summation received
+ current tier 13 block 8 summation received
+ current tier 13 block 9 summation received
+ current tier 13 block 10 summation received
+ current tier 13 block 11 summation received
+ current tier 13 block 12 summation received
+ current tier 13 block 13 summation received
+ current tier 13 block 14 summation received
+ current tier 13 block 15 summation received
+ current tier 13 block 16 summation received
+ current tier 14 block 1 summation received
+ current tier 14 block 2 summation received
+ current tier 14 block 3 summation received
+ current tier 14 block 4 summation received
+ current tier 14 block 5 summation received
+ current tier 14 block 6 summation received
+ current tier 14 block 7 summation received
+ current tier 14 block 8 summation received
+ current tier 14 block 9 summation received
+ current tier 14 block 10 summation received
+ current tier 14 block 11 summation received
+ current tier 14 block 12 summation received
+ current tier 14 block 13 summation received
+ current tier 14 block 14 summation received
+ current tier 14 block 15 summation received
+ current tier 14 block 16 summation received
+ current tier 15 block 1 summation received
+ current tier 15 block 2 summation received
+ current tier 15 block 3 summation received
+ current tier 15 block 4 summation received
+ current tier 15 block 5 summation received
+ current tier 15 block 6 summation received
+ current tier 15 block 7 summation received
+ current tier 15 block 8 summation received
+ current tier 15 block 9 summation received
+ current tier 15 block 10 summation received
+ current tier 15 block 11 summation received
+ current tier 15 block 12 summation received
+ current tier 15 block 13 summation received
+ current tier 15 block 14 summation received
+ current tier 15 block 15 summation received
+ current tier 15 block 16 summation received
+
+ bill to date delivered
+ bill to date time stamp delivered
+ projected bill delivered
+ projected bill time stamp delivered
+ bill delivered trailing digit
+ bill to date received
+ bill to date time stamp received
+ projected bill received
+ projected bill time stamp received
+ bill received trailing digit
+
+ proposed change supply implementation time
+ proposed change supply status
+ uncontrolled flow threshold
+ uncontrolled flow threshold unit of measure
+ uncontrolled flow threshold multiplier
+ uncontrolled flow threshold divisor
+ flow stabilization period
+ flow measurement period
+
+ alternative instantaneous demand
+ current day alternative consumption delivered
+ current day alternative consumption received
+ previous day alternative consumption delivered
+ previous day alternative consumption received
+ current alternative partial profile interval start time delivered
+ current alternative partial profile interval start time received
+ current alternative partial profile interval value delivered
+ current alternative partial profile interval value received
+ current alternative day max pressure
+ current alternative day min pressure
+ previous day alternative max pressure
+ previous day alternative min pressure
+ current alternative day max demand
+ previous day alternative max demand
+ current alternative month max demand
+ current alternative year max demand
+ previous day 2 alternative consumption delivered
+ previous day 2 alternative consumption received
+ previous day 3 alternative consumption delivered
+ previous day 3 alternative consumption received
+ previous day 4 alternative consumption delivered
+ previous day 4 alternative consumption received
+ previous day 5 alternative consumption delivered
+ previous day 5 alternative consumption received
+ previous day 6 alternative consumption delivered
+ previous day 6 alternative consumption received
+ previous day 7 alternative consumption delivered
+ previous day 7 alternative consumption received
+ previous day 8 alternative consumption delivered
+ previous day 8 alternative consumption received
+ current week alternative consumption delivered
+ current week alternative consumption received
+ previous week alternative consumption delivered
+ previous week alternative consumption received
+ previous week 2 alternative consumption delivered
+ previous week 2 alternative consumption received
+ previous week 3 alternative consumption delivered
+ previous week 3 alternative consumption received
+ previous week 4 alternative consumption delivered
+ previous week 4 alternative consumption received
+ previous week 5 alternative consumption delivered
+ previous week 5 alternative consumption received
+ current month alternative consumption delivered
+ current month alternative consumption received
+ previous month alternative consumption delivered
+ previous month alternative consumption received
+ previous month 2 alternative consumption delivered
+ previous month 2 alternative consumption received
+ previous month 3 alternative consumption delivered
+ previous month 3 alternative consumption received
+ previous month 4 alternative consumption delivered
+ previous month 4 alternative consumption received
+ previous month 5 alternative consumption delivered
+ previous month 5 alternative consumption received
+ previous month 6 alternative consumption delivered
+ previous month 6 alternative consumption received
+ previous month 7 alternative consumption delivered
+ previous month 7 alternative consumption received
+ previous month 8 alternative consumption delivered
+ previous month 8 alternative consumption received
+ previous month 9 alternative consumption delivered
+ previous month 9 alternative consumption received
+ previous month 10 alternative consumption delivered
+ previous month 10 alternative consumption received
+ previous month 11 alternative consumption delivered
+ previous month 11 alternative consumption received
+ previous month 12 alternative consumption delivered
+ previous month 12 alternative consumption received
+ previous month 13 alternative consumption delivered
+ previous month 13 alternative consumption received
+ current day alternative max demand delivered
+ current day alternative max demand delivered time
+ current day alternative max demand received
+ current day alternative max demand received time
+ previous day alternative max demand delivered
+ previous day alternative max demand delivered time
+ previous day alternative max demand received
+ previous day alternative max demand received time
+
+ current active summation q1
+ current active summation q2
+ current active summation q3
+ current active summation q4
+ current reactive summation q1
+ current reactive summation q2
+ current reactive summation q3
+ current reactive summation q4
+
+
+ functional notification flags
+ notification flags 2
+ notification flags 3
+ notification flags 4
+ notification flags 5
+ notification flags 6
+ notification flags 7
+ notification flags 8
+
+
+
+ This command is generated when the Client command GetProfile is received.
+
+
+
+
+
+
+
+
+
+ This command is used to request the ESI to mirror Metering Device data.
+
+
+
+
+ This command is used to request the ESI to remove its mirror of Metering Device data.
+
+
+
+
+ This command is generated when the client command Request Fast Poll Mode is received.
+
+
+
+
+
+
+ This command is generated in response to a ScheduleSnapshot command, and is sent to confirm whether the requested snapshot schedule has been set up.
+
+
+
+
+
+
+ This command is generated in response to a TakeSnapshot command, and is sent to confirm whether the requested snapshot has been accepted and successfully taken.
+
+
+
+
+
+
+ This command is generated in response to a GetSnapshot command. It is used to return a single snapshot to the client.
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is used to send the requested sample data to the client. It is generated in response to a GetSampledData command.
+
+
+
+
+
+
+
+
+
+
+ ConfigureMirror is sent to the mirror once the mirror has been created. The command deals with the operational configuration of the Mirror.
+
+
+
+
+
+
+
+
+ The ConfigureNotificationScheme is sent to the mirror once the mirror has been created. The command deals with the operational configuration of the Mirror and the device that reports to the mirror. No default schemes are allowed to be overwritten.
+
+
+
+
+
+
+
+ The ConfigureNotificationFlags command is used to set the commands relating to the bit value for each NotificationFlags attribute that the scheme is proposing to use.
+
+
+
+
+
+
+
+
+
+
+
+ The GetNotifiedMessage command is used only when a BOMD is being mirrored. This command provides a method for the BOMD to notify the Mirror message queue that it wants to receive commands that the Mirror has queued. The Notification flags set within the command shall inform the mirror of the commands that the BOMD is requesting.
+
+
+
+
+
+
+
+ This command is transmitted by a Metering Device in response to a ChangeSupply command.
+
+
+
+
+
+
+
+
+ This command is transmitted by a Metering Device in response to a StartSampling command.
+
+
+
+
+
+
+ The GetProfile command is generated when a client device wishes to retrieve a list of captured Energy, Gas or water consumption for profiling purposes.
+
+
+
+
+
+
+
+ The Request Mirror Response Command allows the ESI to inform a sleepy Metering Device it has the ability to store and mirror its data.
+
+
+
+
+
+ The Mirror Removed Command allows the ESI to inform a sleepy Metering Device mirroring support has been removed or halted.
+
+
+
+
+
+ The Request Fast Poll Mode command is generated when the metering client wishes to receive near real-time updates of InstantaneousDemand.
+
+
+
+
+
+
+ This command is used to set up a schedule of when the device shall create snapshot data.
+
+
+
+
+
+
+
+
+ This command is used to instruct the cluster server to take a single snapshot.
+
+
+
+
+
+ This command is used to request snapshot data from the cluster server.
+
+
+
+
+
+
+
+
+ The sampling mechanism allows a set of samples of the specified type of data to be taken, commencing at the stipulated start time. This mechanism may run concurrently with the capturing of profile data, and may refer the same parameters, albeit possibly at a different sampling rate.
+
+
+
+
+
+
+
+
+
+ This command is used to request sampled data from the server. Note that it is the responsibility of the client to ensure that it does not request more samples than can be held in a single command payload.
+
+
+
+
+
+
+
+
+ This command is sent in response to the ReportAttribute command when the MirrorReporting attribute is set.
+
+
+
+
+
+
+ The ResetLoadLimitCounter command shall cause the LoadLimitCounter attribute to be reset.
+
+
+
+
+
+
+ This command is sent from the Head-end or ESI to the Metering Device to instruct it to change the status of the valve or load switch, i.e. the supply.
+
+
+
+
+
+
+
+
+
+
+ This command is a simplified version of the ChangeSupply command, intended to be sent from an IHD to a meter as the consequence of a user action on the IHD. Its purpose is to provide a local disconnection/reconnection button on the IHD in addition to the one on the meter.
+
+
+
+
+
+ This command is used to specify the required status of the supply following the occurance of certain events on the meter.
+
+
+
+
+
+
+
+
+
+ This command is used to update the 'Uncontrolled Flow Rate' configuration data used by flow meters.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Messaging
+ SE
+ This cluster provides an interface for passing text messages between SE devices.
+ 0x0703
+ MESSAGING_CLUSTER
+ true
+ true
+
+
+
+
+
+ Command description for DisplayMessage
+
+
+
+
+
+
+
+
+
+
+ The CancelMessage command provides the ability to cancel the sending or acceptance of previously sent messages.
+
+
+
+
+
+
+ The DisplayProtected Message command is for use with messages that are protected by a password or PIN.
+
+
+
+
+
+
+
+
+
+
+ The CancelAllMessages command indicates to a client device that it should cancel all display messages currently held by it.
+
+
+
+
+
+
+ Command description for GetLastMessage
+
+
+
+
+ The Message Confirmation command provides an indication that a Utility Customer has acknowledged and/or accepted the contents of a previously sent message. Enhanced Message Confirmation commands shall contain an answer of 'NO', 'YES' and/or a message confirmation string.
+
+
+
+
+
+
+
+
+ This command initiates the return of the first (and maybe only) Cancel All Messages command held on the associated server, and which has an implementation time equal to or later than the value indicated in the payload.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tunneling
+ SE
+ The tunneling cluster provides an interface for tunneling protocols.
+ 0x0704
+ TUNNELING_CLUSTER
+ true
+ true
+
+ close tunnel timeout
+
+
+
+
+ RequestTunnel is the client command used to setup a tunnel association with the server. The request payload specifies the protocol identifier for the requested tunnel, a manufacturer code in case of proprietary protocols and the use of flow control for streaming protocols.
+
+
+
+
+
+
+
+
+ Client command used to close the tunnel with the server. The parameter in the payload specifies the tunnel identifier of the tunnel that has to be closed. The server leaves the tunnel open and the assigned resources allocated until the client sends the CloseTunnel command or the CloseTunnelTimeout fires.
+
+
+
+
+
+ Command that indicates (if received) that the client has sent data to the server. The data itself is contained within the payload.
+
+
+
+
+
+
+ This command is generated by the receiver of a TransferData command if the tunnel status indicates that something is wrong. There are two three cases in which TransferDataError is sent: (1) The TransferData received contains a TunnelID that does not match to any of the active tunnels of the receiving device. This could happen if a (sleeping) device sends a TransferData command to a tunnel that has been closed by the server after the CloseTunnelTimeout. (2) The TransferData received contains a proper TunnelID of an active tunnel, but the device sending the data does not match to it. (3) The TransferData received contains more data than indicated by the MaximumIncomingTransferSize of the receiving device.
+
+
+
+
+
+
+ Command sent in response to each TransferData command in case - and only in case - flow control has been requested by the client in the TunnelRequest command and is supported by both tunnel endpoints. The response payload indicates the number of octets that may still be received by the receiver.
+
+
+
+
+
+
+ The ReadyData command is generated - after a receiver had to stop the dataflow using the AckTransferData(0) command - to indicate that the device is now ready to continue receiving data. The parameter NumberOfOctetsLeft gives a hint on how much space is left for the next data transfer. The ReadyData command is only issued if flow control is enabled.
+
+
+
+
+
+
+ Get Supported Tunnel Protocols is the client command used to determine the Tunnel protocols supported on another device.
+
+
+
+
+
+
+ RequestTunnelResponse is sent by the server in response to a RequestTunnel command previously received from the client. The response contains the status of the RequestTunnel command and a tunnel identifier corresponding to the tunnel that has been set-up in the server in case of success.
+
+
+
+
+
+
+
+ Command that transfers data from server to the client. The data itself has to be placed within the payload.
+
+
+
+
+
+
+ This command is generated by the receiver of a TransferData command if the tunnel status indicates that something is wrong. There are two three cases in which TransferDataError is sent: (1) The TransferData received contains a TunnelID that does not match to any of the active tunnels of the receiving device. This could happen if a (sleeping) device sends a TransferData command to a tunnel that has been closed by the server after the CloseTunnelTimeout. (2) The TransferData received contains a proper TunnelID of an active tunnel, but the device sending the data does not match to it. (3) The TransferData received contains more data than indicated by the MaximumIncomingTransferSize of the receiving device.
+
+
+
+
+
+
+ Command sent in response to each TransferData command in case - and only in case - flow control has been requested by the client in the TunnelRequest command and is supported by both tunnel endpoints. The response payload indicates the number of octets that may still be received by the receiver.
+
+
+
+
+
+
+ The ReadyData command is generated - after a receiver had to stop the dataflow using the AckTransferData(0) command - to indicate that the device is now ready to continue receiving data. The parameter NumberOfOctetsLeft gives a hint on how much space is left for the next data transfer. The ReadyData command is only issued if flow control is enabled.
+
+
+
+
+
+
+ Supported Tunnel Protocol Response is sent in response to a Get Supported Tunnel Protocols command previously received. The response contains a list of Tunnel protocols supported by the device; the payload of the response should be capable of holding up to 16 protocols.
+
+
+
+
+
+
+
+
+ TunnelClosureNotification is sent by the server to indicate that a tunnel has been closed due to expiration of a CloseTunnelTimeout.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prepayment
+ SE
+ The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN.
+ 0x0705
+ PREPAYMENT_CLUSTER
+ true
+ true
+
+
+ payment control configuration
+ credit remaining
+ emergency credit remaining
+ credit status
+ credit remaining timestamp
+ accumulated debt
+ overall debt cap
+ emergency credit limit allowance
+ emergency credit threshold
+ total credit added
+ max credit limit
+ max credit per top up
+ friendly credit warning
+ low credit warning level
+ IHD low credit warning level
+ Interrupt Suspend Time
+ remaining friendly credit time
+ next friendly credit period
+ cut off value
+ token carrier id
+
+ top up date/time #1
+ top up amount #1
+ top up originating device #1
+ top up code #1
+ top up date/time #2
+ top up amount #2
+ top up originating device #2
+ top up code #2
+ top up date/time #3
+ top up amount #3
+ top up originating device #3
+ top up code #3
+ top up date/time #4
+ top up amount #4
+ top up originating device #4
+ top up code #4
+ top up date/time #5
+ top up amount #5
+ top up originating device #5
+ top up code #5
+
+
+ debt label 1
+ debt amount 1
+ debt recovery method 1
+ debt recovery start time 1
+ debt recovery collection time 1
+ debt recovery frequency 1
+ debt recovery amount 1
+ debt recovery top up percentage 1
+ debt label 2
+ debt amount 2
+ debt recovery method 2
+ debt recovery start time 2
+ debt recovery collection time 2
+ debt recovery frequency 2
+ debt recovery amount 2
+ debt recovery top up percentage 2
+ debt label 3
+ debt amount 3
+ debt recovery method 3
+ debt recovery start time 3
+ debt recovery collection time 3
+ debt recovery frequency 3
+ debt recovery amount 3
+ debt recovery top up percentage 3
+
+
+
+ prepayment alarm status
+ prepay generic alarm mask
+ prepay switch alarm mask
+ prepay event alarm mask
+
+ historical cost consumption formatting
+ consumption unit of measurement
+ currency scaling factor
+ currency
+ current day cost consumption delivered
+ current day cost consumption received
+ previous day cost consumption delivered
+ previous day cost consumption received
+ previous day 2 cost consumption delivered
+ previous day 2 cost consumption received
+ previous day 3 cost consumption delivered
+ previous day 3 cost consumption received
+ previous day 4 cost consumption delivered
+ previous day 4 cost consumption received
+ previous day 5 cost consumption delivered
+ previous day 5 cost consumption received
+ previous day 6 cost consumption delivered
+ previous day 6 cost consumption received
+ previous day 7 cost consumption delivered
+ previous day 7 cost consumption received
+ previous day 8 cost consumption delivered
+ previous day 8 cost consumption received
+ current week cost consumption delivered
+ current week cost consumption received
+ previous week cost consumption delivered
+ previous week cost consumption received
+ previous week 2 cost consumption delivered
+ previous week 2 cost consumption received
+ previous week 3 cost consumption delivered
+ previous week 3 cost consumption received
+ previous week 4 cost consumption delivered
+ previous week 4 cost consumption received
+ previous week 5 cost consumption delivered
+ previous week 5 cost consumption received
+ current month cost consumption delivered
+ current month cost consumption received
+ previous month cost consumption delivered
+ previous month cost consumption received
+ previous month 2 cost consumption delivered
+ previous month 2 cost consumption received
+ previous month 3 cost consumption delivered
+ previous month 3 cost consumption received
+ previous month 4 cost consumption delivered
+ previous month 4 cost consumption received
+ previous month 5 cost consumption delivered
+ previous month 5 cost consumption received
+ previous month 6 cost consumption delivered
+ previous month 6 cost consumption received
+ previous month 7 cost consumption delivered
+ previous month 7 cost consumption received
+ previous month 8 cost consumption delivered
+ previous month 8 cost consumption received
+ previous month 9 cost consumption delivered
+ previous month 9 cost consumption received
+ previous month 10 cost consumption delivered
+ previous month 10 cost consumption received
+ previous month 11 cost consumption delivered
+ previous month 11 cost consumption received
+ previous month 12 cost consumption delivered
+ previous month 12 cost consumption received
+ previous month 13 cost consumption delivered
+ previous month 13 cost consumption received
+ historical freeze time
+
+
+
+
+ This command is sent to the Metering Device to activate the use of any Emergency Credit available on the Metering Device.
+
+
+
+
+
+
+
+
+ The ChangeDebt command is send to the Metering Device to change the fuel or Non fuel debt values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is a method to set up the parameters for the emergency credit.
+
+
+
+
+
+
+
+
+ The ConsumerTopUp command is used by the IPD and the ESI as a method of applying credit top up values to the prepayment meter.
+
+
+
+
+
+
+ The CreditAdjustment command is sent to update the accounting base for the Prepayment meter.
+
+
+
+
+
+
+
+
+ This command is sent to a Metering Device to instruct it to change its mode of operation. i.e. from Credit to Prepayment.
+
+
+
+
+
+
+
+
+
+ This command is used to request the cluster server for snapshot data.
+
+
+
+
+
+
+
+
+ This command is sent to the Metering Device to retrieve the log of Top Up codes received by the meter.
+
+
+
+
+
+
+ This command is sent from client to a Prepayment server to set the warning level for low credit.
+
+
+
+
+
+ This command is used to request the contents of the repayment log.
+
+
+
+
+
+
+
+ This command is sent from a client to the Prepayment server to set the maximum credit level allowed in the meter.
+
+
+
+
+
+
+
+
+
+ This command is sent from a client to the Prepayment server to set the overall debt cap allowed in the meter.
+
+
+
+
+
+
+
+
+ This command is generated in response to a GetPrepaySnapshot command. It is used to return a single snapshot to the client.
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is send in response to the ChangePaymentMode Command.
+
+
+
+
+
+
+
+
+ This command is send in response to the ConsumerTopUp Command.
+
+
+
+
+
+
+
+
+ This command is used to send the Top Up Code Log entries to the client.
+
+
+
+
+
+
+
+ This command is used to send the contents of the Repayment Log.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Energy Management
+ SE
+ This cluster provides attributes and commands to assist applications in creating resource monitoring protocols.
+ 0x0706
+ ENERGY_MANAGEMENT_CLUSTER
+ true
+ true
+
+ Load Control State
+ Current Event ID
+ Current Event Status
+ Conformance Level
+ Minimum Off Time
+ Minimum On Time
+ Minimum Cycle Period
+
+
+
+
+ This command is reused from the DRLC cluster. This command is generated in response to the Manage Event command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Manage Event command allows a remote device (such as an IHD or web portal) to change the behavior of a DRLC cluster client when responding to a DRLC Load Control Event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Calendar
+ SE
+ This cluster provides attributes and commands to assist applications in developing time and date based protocol.
+ 0x0707
+ CALENDAR_CLUSTER
+ true
+ true
+
+ Auxiliary Switch 1 Label
+ Auxiliary Switch 2 Label
+ Auxiliary Switch 3 Label
+ Auxiliary Switch 4 Label
+ Auxiliary Switch 5 Label
+ Auxiliary Switch 6 Label
+ Auxiliary Switch 7 Label
+ Auxiliary Switch 8 Label
+
+
+
+ The PublishCalendar command is published in response to a GetCalendar command or if new calendar information is available.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishDayProfile command is published in response to a GetDayProfile command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishWeekProfile command is published in response to a GetWeekProfile command.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The PublishSeasons command is published in response to a GetSeason command.
+
+
+
+
+
+
+
+
+
+
+ The PublishSpecialDays command is published in response to a GetSpecialDays command or if a calendar update is available.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The CancelCalendar command indicates that all data associated with a particular calendar instance should be discarded.
+
+
+
+
+
+
+
+
+ This command initiates PublishCalendar command(s) for scheduled Calendar updates.
+
+
+
+
+
+
+
+
+
+ This command initiates one or more PublishDayProfile commands for the referenced Calendar.
+
+
+
+
+
+
+
+
+ This command initiates one or more PublishWeekProfile commands for the referenced Calendar.
+
+
+
+
+
+
+
+
+ This command initiates one or more PublishSeasons commands for the referenced Calendar.
+
+
+
+
+
+
+ This command initiates one or more PublishSpecialDays commands for the scheduled Special Day Table updates.
+
+
+
+
+
+
+
+
+
+ This command initiates the return of the last CancelCalendar command held on the associated server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Device Management
+ SE
+ This cluster provides attributes and commands to support device-cognisant application layer protocols.
+ 0x0708
+ DEVICE_MANAGEMENT_CLUSTER
+ true
+ true
+
+
+ provider id (server)
+ provider name
+ provider contact details
+ proposed provider id
+ proposed provider name
+ proposed provider change date time
+ proposed provider change control
+ received provider id (server)
+ received provider name
+ received provider contact details
+ received proposed provider id
+ received proposed provider name
+ received proposed provider change date time
+ received proposed provider change control
+
+ change of tenancy update date time
+ proposed tenancy change control
+
+ wan status
+
+ low medium threshold
+ medium high threshold
+
+
+ provider id (client)
+ received provider id (client)
+
+ tou tariff activation
+ block tariff activated
+ block tou tariff activated
+ single tariff rate activated
+ asynchronous billing occurred
+ synchronous billing occurred
+ tariff not supported
+ price cluster not found
+ currency change passive activated
+ currency change passive updated
+ price matrix passive activated
+ price matrix passive updated
+ tariff change passive activated
+ tariff change passive updated
+ publish price received
+ publish price actioned
+ publish price cancelled
+ publish price rejected
+ publish tariff information received
+ publish tariff information actioned
+ publish tariff information cancelled
+ publish tariff information rejected
+ publish price matrix received
+ publish price matrix actioned
+ publish price matrix cancelled
+ publish price matrix rejected
+ publish block thresholds received
+ publish block thresholds actioned
+ publish block thresholds cancelled
+ publish block thresholds rejected
+ publish calorific value received
+ publish calorific value actioned
+ publish calorific value cancelled
+ publish calorific value rejected
+ publish conversion factor received
+ publish conversion factor actioned
+ publish conversion factor cancelled
+ publish conversion factor rejected
+ publish co2 value received
+ publish co2 value actioned
+ publish co2 value cancelled
+ publish co2 value rejected
+ publish cpp event received
+ publish cpp event actioned
+ publish cpp event cancelled
+ publish cpp event rejected
+ publish tier labels received
+ publish tier labels actioned
+ publish tier labels cancelled
+ publish tier labels rejected
+ publish billing period received
+ publish billing period actioned
+ publish billing period cancelled
+ publish billing period rejected
+ publish consolidated bill received
+ publish consolidated bill actioned
+ publish consolidated bill cancelled
+ publish consolidated bill rejected
+ publish block period received
+ publish block period actioned
+ publish block period cancelled
+ publish block period rejected
+ publish credit payment info received
+ publish credit payment info actioned
+ publish credit payment info cancelled
+ publish credit payment info rejected
+ publish conversion factor received
+ publish conversion factor actioned
+ publish conversion factor cancelled
+ publish conversion factor rejected
+
+ check meter
+ low battery
+ tamper detect
+ supply status
+ supply quality
+ leak detect
+ service disconnect
+
+ reverse flow general
+ meter cover removed
+ meter cover closed
+ strong magnetic field
+ no strong magnetic field
+ battery failure
+ program memory error
+ ram error
+ nv memory error
+ low voltage L1
+ high voltage L1
+ low voltage L2
+ high voltage L2
+ low voltage L3
+ high voltage L3
+ over current L1
+ over current L2
+ over current L3
+ frequency too low L1
+ frequency too high L1
+ frequency too low L2
+ frequency too high L2
+ frequency too low L3
+ frequency too high L3
+ ground fault
+ electric tamper detect
+ incorrect polarity
+ current no voltage
+ under voltage
+ over voltage
+ normal voltage
+ pf below threshold
+ pf above threshold
+ terminal cover removed
+ terminal cover closed
+ burst detect
+ pressure too low
+ pressure too high
+ flow sensor communication error
+ flow sensor measurement fault
+ flow sensor reverse flow
+ flow sensor air detect
+ pipe empty
+ inlet temperature sensor fault
+ outlet temperature sensor fault
+ reverse flow
+ tilt tamper
+ battery cover removed
+ battery cover closed
+ excess flow
+ tilt tamper enabled
+ measurement system error
+ watchdog error
+ supply disconnect failure
+ supply connect failure
+ measurement software changed
+ dst enabled
+ dst disabled
+ clock adj backward
+ clock adj forward
+ clock invalid
+ communication error han
+ communication ok han
+ meter fraud attempt
+ power loss
+ unusual han traffic
+ unexpected clock change
+ comms using unauthenticated component
+
+ metering error reg clear
+ metering alarm reg clear
+ unexpected hw reset
+ unexpected program execution
+ limit threshold exceeded
+ limit threshold ok
+ limit threshold changed
+ maximum demand exceeded
+ profile cleared
+ load profile cleared
+ battery warn
+ wrong signature
+ no signature
+ signature not valid
+ unauthorise action from HAN
+ fast polling start
+ fast polling end
+ meter reporting interval changed
+ disconnect to load limit
+ meter supply status register changed
+ meter alarm status register changed
+ extended meter alarm status register changed
+ data access via local port
+ configure mirror success
+ configure mirror failure
+ configure notification flag scheme success
+ configure notification flag scheme failure
+ configure notification flags success
+ configure notification flags failure
+ stay awake request han
+ stay awake request wan
+ manufacturer specific a
+ manufacturer specific b
+ manufacturer specific c
+ manufacturer specific d
+ manufacturer specific e
+ manufacturer specific f
+ manufacturer specific g
+ manufacturer specific h
+ manufacturer specific i
+ get profile command received
+ get profile command actioned
+ get profile command cancelled
+ get profile command rejected
+ request mirror response command received
+ request mirror response command actioned
+ request mirror response command cancelled
+ request mirror response command rejected
+ mirror removed command received
+ mirror removed command actioned
+ mirror removed command cancelled
+ mirror removed command rejected
+ get snapshot command received
+ get snapshot command actioned
+ get snapshot command cancelled
+ get snapshot command rejected
+ take snapshot command received
+ take snapshot command actioned
+ take snapshot command cancelled
+ take snapshot command rejected
+ mirror report attribute response command received
+ mirror report attribute response command actioned
+ mirror report attribute response command cancelled
+ mirror report attribute response command rejected
+ schedule snapshot command received
+ schedule snapshot command actioned
+ schedule snapshot command cancelled
+ schedule snapshot command rejected
+ start sampling command received
+ start sampling command actioned
+ start sampling command cancelled
+ start sampling command rejected
+ get sampled data command received
+ get sampled data command actioned
+ get sampled data command cancelled
+ get sampled data command rejected
+ supply on
+ supply armed
+ supply off
+ disconnected due to tamper detected
+ manual disconnect
+ manual connect
+ remote disconnection
+ remote connect
+ local disconnection
+ local connect
+ change supply received
+ change supply actioned
+ change supply cancelled
+ change supply rejected
+ local change supply received
+ local change supply actioned
+ local change supply cancelled
+ local change supply rejected
+ publish uncontrolled flow threshold received
+ publish uncontrolled flow threshold actioned
+ publish uncontrolled flow threshold cancelled
+ publish uncontrolled flow threshold rejected
+
+ message confirmation sent
+ display message received
+ display message actioned
+ display message cancelled
+ display message rejected
+ cancel message received
+ cancel message actioned
+ cancel message cancelled
+ cancel message rejected
+
+ low credit
+ no credit
+ credit exhausted
+ emergency credit enabled
+ emergency credit exhausted
+ IHD low credit warning
+ physical attack on the prepay meter
+ electronic attack on the prepay meter
+ discount applied
+ credit adjustment
+ credit adjust fail
+ debt adjustment
+ debt adjust fail
+ mode change
+ topup code error
+ topup already used
+ topup code invalid
+ topup accepted via remote
+ topup accepted via manual entry
+ friendly credit in use
+ friendly credit end warning
+ friendly credit period end
+
+ prepay error reg clear
+ prepay alarm reg clear
+ prepay cluster not found
+ topup value too large
+ mode credit 2 prepay
+ mode prepay 2 credit
+ mode default
+ select available emergency credit received
+ select available emergency credit actioned
+ select available emergency credit cancelled
+ select available emergency credit rejected
+ change debt received
+ change debt actioned
+ change debt cancelled
+ change debt rejected
+ emergency credit setup received
+ emergency credit setup actioned
+ emergency credit setup cancelled
+ emergency credit setup rejected
+ consumer topup received
+ consumer topup actioned
+ consumer topup cancelled
+ consumer topup rejected
+ credit adjustment received
+ credit adjustment actioned
+ credit adjustment cancelled
+ credit adjustment rejected
+ change payment mode received
+ change payment mode actioned
+ change payment mode cancelled
+ change payment mode rejected
+ get prepay snapshot received
+ get prepay snapshot actioned
+ get prepay snapshot cancelled
+ get prepay snapshot rejected
+ get topup log received
+ get topup log actioned
+ get topup log cancelled
+ get topup log rejected
+ set low credit warning level received
+ set low credit warning level actioned
+ set low credit warning level cancelled
+ set low credit warning level rejected
+ get debt repay log received
+ get debt repay log actioned
+ get debt repay log cancelled
+ get debt repay log rejected
+ set maximum credit limit received
+ set maximum credit limit actioned
+ set maximum credit limit cancelled
+ set maximum credit limit rejected
+ set overall debt cap received
+ set overall debt cap actioned
+ set overall debt cap cancelled
+ set overall debt cap rejected
+
+ calendar cluster not found
+ calendar change passive activated
+ calendar change passive updated
+ publish calendar received
+ publish calendar actioned
+ publish calendar cancelled
+ publish calendar rejected
+ publish day profile received
+ publish day profile actioned
+ publish day profile cancelled
+ publish day profile rejected
+ publish week profile received
+ publish week profile actioned
+ publish week profile cancelled
+ publish week profile rejected
+ publish seasons received
+ publish seasons actioned
+ publish seasons cancelled
+ publish seasons rejected
+ publish special days received
+ publish special days actioned
+ publish special days cancelled
+ publish special days rejected
+
+ password 1 change
+ password 2 change
+ password 3 change
+ password 4 change
+ event log cleared
+ zigbee aps timeout
+ zigbee ieee transmission failure over threshold
+ zigbee ieee frame check sequence threshold
+ error certificate
+ error signature
+ error program storage
+ publish cot received
+ publish cot actioned
+ publish cot cancelled
+ publish cot rejected
+ publish cos received
+ publish cos actioned
+ publish cos cancelled
+ publish cos rejected
+ change password received
+ change password actioned
+ change password cancelled
+ change password rejected
+ set event configuration received
+ set event configuration actioned
+ set event configuration cancelled
+ set event configuration rejected
+ update site id received
+ update site id actioned
+ update site id cancelled
+ update site id rejected
+ update cin received
+ update cin actioned
+ update cin cancelled
+ update cin rejected
+
+ tunneling cluster not found
+ unsupported protocol
+ unsupported protocol
+ request tunnel command received
+ request tunnel command rejected
+ request tunnel command generated
+ close tunnel command received
+ close tunnel command rejected
+ close tunnel command generated
+ transfer data command received
+ transfer data command rejected
+ transfer data command generated
+ transfer data error command received
+ transfer data error command rejected
+ transfer data error command generated
+ ack transfer data command received
+ ack transfer data command rejected
+ ack transfer data command generated
+ ready data command received
+ ready data command rejected
+ ready data command generated
+ get supported tunnel protocols command received
+ get supported tunnel protocols command rejected
+ get supported tunnel protocols command generated
+
+ firmware ready for activation
+ firmware activated
+ firmware activation failure
+ patch ready for activation
+ patch activated
+ patch failure
+ image notify command received
+ image notify command rejected
+ query next image request generated
+ query next image response received
+ query next image response rejected
+ image block request generated
+ image page request generated
+ image block response received
+ image block response rejected
+ upgrade end request generated
+ upgrade end response received
+ upgrade end response rejected
+ query specific file request generated
+ query specific file response received
+ query specific file response rejected
+
+
+
+ This command is used to request the ESI to respond with information regarding any available change of tenancy.
+
+
+
+
+ This command is used to request the ESI to respond with information regarding any available change of supplier.
+
+
+
+
+ This command is used to request the current password from the server.
+
+
+
+
+
+ This command is used to request the ESI to respond with information regarding any pending change of Site ID.
+
+
+
+
+ This command is sent in response to a GetEventConfiguration command.
+
+
+
+
+
+
+
+ This command is used to request the ESI to respond with information regarding any pending change of Customer ID Number.
+
+
+
+
+
+ This command is used to change the tenancy of a meter.
+
+
+
+
+
+
+
+
+
+ This command is used to change the Supplier (energy supplier) that is supplying the meter (s).
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is used to send the current password to the client.
+
+
+
+
+
+
+
+
+
+ This command is used to set the siteID.
+
+
+
+
+
+
+
+
+ This command provides a method to set the event configuration attributes, held in a client device.
+
+
+
+
+
+
+
+
+
+ This command allows the server to request details of event configurations.
+
+
+
+
+
+ This command is used to set the CustomerIDNumber attribute held in the Metering cluster.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Events
+ SE
+ This cluster provides an interface on which applications can use event-based protocols.
+ 0x0709
+ EVENTS_CLUSTER
+ true
+ true
+
+
+
+
+
+ The GetEventLog command allows a client to request events from a server's event logs. One or more PublishEventLog commands are returned on receipt of this command.
+
+
+
+
+
+
+
+
+
+
+ The ClearEventLogRequest command requests that an Events server device clear the specified event log(s).
+
+
+
+
+
+
+ The PublishEvent command is generated upon an event trigger from within the reporting device and, if supported, the associated Event Configuration attribute in the Device Management cluster.
+
+
+
+
+
+
+
+
+
+ This command is generated on receipt of a GetEventLog command. The command returns the most recent event first and up to the number of events requested.
+
+
+
+
+
+
+
+
+
+ This command is generated on receipt of a Clear Event Log Request command.
+
+
+
+
+
+
+ MDU Pairing
+ SE
+ This cluster seeks to assist in the commissioning of networks that include multi-dwelling units (MDUs).
+ 0x070A
+ MDU_PAIRING_CLUSTER
+ true
+ true
+
+
+
+
+
+ The Pairing Response command provides a device joining a MDU network with a list of the devices that will constitute the 'virtual HAN' for the household in which the joining device is to operate.
+
+
+
+
+
+
+
+
+
+
+ The Pairing Request command allows a device joining a MDU network to determine the devices that will constitute the 'virtual HAN' for the household in which it is to operate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sub-GHz
+ SE
+ Used by the Smart Energy profile for duty cycle monitoring and frequency agility.
+ 0x070B
+ SUB_GHZ_CLUSTER
+ true
+ true
+
+ sub-GHz channel change (server)
+ sub-GHz page 28 channel mask (server)
+ sub-GHz page 29 channel mask (server)
+ sub-GHz page 30 channel mask (server)
+ sub-GHz page 31 channel mask (server)
+
+
+
+
+ The server sends it to temporarily suspend ZCL messages from clients it identifies as causing too much traffic.
+
+
+
+
+
+
+ The client sends it to determine the current status of its ZCL communications from the server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Key Establishment
+ General
+ Key Establishment cluster
+ 0x0800
+ KEY_ESTABLISHMENT_CLUSTER
+ true
+ true
+
+ key establishment suite (server)
+
+ key establishment suite (client)
+
+
+
+ Command description for InitiateKeyEstablishmentRequest
+
+
+
+
+
+
+
+
+ Command description for EphemeralDataRequest
+
+
+
+
+
+ Command description for ConfirmKeyDataRequest
+
+
+
+
+
+
+ Command description for TerminateKeyEstablishment
+
+
+
+
+
+
+
+
+ Command description for InitiateKeyEstablishmentResponse
+
+
+
+
+
+
+
+
+ Command description for EphemeralDataResponse
+
+
+
+
+
+ Command description for ConfirmKeyDataResponse
+
+
+
+
+
+ Keep-Alive
+
+ SE
+ This cluster supports the commands and attributes directed to the network Trust Center in order to determine whether communication with the Trust Center is still available.
+ 0x0025
+ KEEPALIVE_CLUSTER
+ true
+ true
+
+
+ Keep-Alive Base
+ Keep-Alive Jitter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zcl/cba-devices.xml b/zcl/cba-devices.xml
new file mode 100644
index 0000000000..bd88c9b929
--- /dev/null
+++ b/zcl/cba-devices.xml
@@ -0,0 +1,123 @@
+
+
+
+ BACnet Tunneled Device
+ CBA
+ CBA BACnet Tunneled Device
+ Coordinator
+ 0x0105
+ 0x000a
+
+ Basic
+ Identify
+ Groups
+ Commissioning
+ Power Configuration
+ Device Temperature Configuration
+ Time
+ Generic Tunnel
+ BACnet Protocol Tunnel
+
+
+
+ CBA-onofflight
+ CBA
+ CBA On/Off Light
+ Coordinator
+ 0x109
+ 0x0100
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Time
+ Groups
+ On/off
+ Scenes
+ Occupancy Sensing
+ Commissioning
+
+
+
+ CBA-onofflightswitch
+ CBA
+ CBA On/Off Light Switch
+ Coordinator
+ 0x105
+ 0x0103
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Time
+ On/Off Switch Configuration
+ On/off
+ Scenes
+ Groups
+ Commissioning
+
+
+
+ CBA-tstat
+ CBA
+ CBA Thermostat
+ Sleepy End Device
+ 0x105
+ 0x0301
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Time
+ Thermostat
+ Scenes
+ Groups
+ Thermostat User Interface Configuration
+ Fan control
+ Temperature measurement
+ Occupancy Sensing
+ Relative Humidity Measurement
+ Commissioning
+
+
+
+ CBA-tempsensor
+ CBA
+ CBA Temperature Sensor
+ Sleepy End Device
+ 0x105
+ 0x0302
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Time
+ Temperature measurement
+ Groups
+ Commissioning
+
+
+
+ CBA-config
+ CBA
+ CBA Config Tool
+ Coordinator
+ 0x0105
+ 0x0005
+
+ Basic
+ Identify
+ Groups
+ Scenes
+ Commissioning
+
+
+
diff --git a/zcl/cba.xml b/zcl/cba.xml
new file mode 100644
index 0000000000..aae221066d
--- /dev/null
+++ b/zcl/cba.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ Generic Tunnel
+ CBA
+ The minimum common commands and attributes required to tunnel any protocol.
+ 0x0600
+ GENERIC_TUNNEL_CLUSTER
+ true
+ true
+ maximum incoming transfer size
+ maximum outgoing transfer size
+ protocol address
+
+
+ This command is generated when an application wishes to find the ZigBee address (node, endpoint) of the Generic Tunnel server cluster with a given ProtocolAddress attribute. The command is typically multicast to a group of inter-communicating Generic Tunnel clusters
+
+
+
+
+
+ This command is generated upon receipt of a Match Protocol Address command to indicate that the Protocol Address was successfully matched.
+
+
+
+
+
+
+ This command is typically sent upon startup, and whenever the ProtocolAddress attribute changes. It is typically multicast to a group of inter-communicating Generic Tunnel clusters.
+
+
+
+
+
+ BACnet Protocol Tunnel
+ CBA
+ Commands and attributes required to tunnel the BACnet protocol.
+ 0x0601
+ BACNET_PROTOCOL_TUNNEL_CLUSTER
+ true
+ true
+
+
+ This command is generated when a BACnet network layer wishes to transfer a BACnet NPDU across a ZigBee tunnel to another BACnet network layer.
+
+
+
+
+
+
diff --git a/zcl/general-thread.xml b/zcl/general-thread.xml
new file mode 100644
index 0000000000..67bb608542
--- /dev/null
+++ b/zcl/general-thread.xml
@@ -0,0 +1,955 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for ReadAttributes
+
+
+
+
+
+ Command description for ReadAttributesResponse
+
+
+
+
+
+ Command description for WriteAttributes
+
+
+
+
+
+ Command description for WriteAttributesUndivided
+
+
+
+
+
+ Command description for WriteAttributesResponse
+
+
+
+
+
+ Command description for WriteAttributesNoResponse
+
+
+
+
+
+ Command description for ConfigureReporting
+
+
+
+
+
+ Command description for ConfigureReportingResponse
+
+
+
+
+
+ Command description for ReadReportingConfiguration
+
+
+
+
+
+ Command description for ReadReportingConfigurationResponse
+
+
+
+
+
+ Command description for ReportAttributes
+
+
+
+
+
+ Command description for DefaultResponse
+
+
+
+
+
+
+ Command description for DiscoverAttributes
+
+
+
+
+
+
+ Command description for DiscoverAttributesResponse
+
+
+
+
+
+
+ Command description for ReadAttributesStructured
+
+
+
+
+
+ Command description for WriteAttributesStructured
+
+
+
+
+
+ Command description for WriteAttributesStructuredResponse
+
+
+
+
+ This command may be used to discover all commands processed (received) by this cluster, including optional or manufacturer specific commands.
+
+
+
+
+ The discover commands received response command is sent in response to a discover commands received command, and is used to discover which commands a particular cluster can process.
+
+
+
+
+ This command may be used to discover all commands which may be generated (sent) by the cluster, including optional or manufacturer specific commands.
+
+
+
+
+ The discover client commands response command is sent in response to a discover client commands command, and is used to discover which commands a particular cluster supports.
+
+
+
+
+ This command is similar to the discover attributes command, but also includes a field to indicate whether the attribute is readable, writeable or reportable.
+
+
+
+
+ This command is sent in response to a discover attribute extended command and is used to determine if attributes are readable, writable or reportable.
+
+
+
+ cluster revision
+ reporting status
+ cluster revision
+ reporting status
+
+
+ Basic
+ General
+ Attributes for determining basic information about a device, setting user device information such as location, and enabling a device.
+ 0x0000
+ BASIC_CLUSTER
+ true
+ true
+ ZCL version
+
+ application version
+ stack version
+ hardware version
+ manufacturer name
+ model identifier
+ date code
+ power source
+ generic device class
+ generic device type
+ product code
+ product url
+ location description
+ physical environment
+ device enabled
+ alarm mask
+ disable local config
+
+ Command that resets all attribute values to factory default.
+
+
+
+ Power Configuration
+ General
+ Attributes for determining more detailed information about a device's power source(s), and for configuring under/over voltage alarms.
+ 0x0001
+ POWER_CONFIG_CLUSTER
+ true
+ true
+ mains voltage
+ mains frequency
+ mains alarm mask
+ mains voltage min threshold
+ mains voltage max threshold
+ mains voltage dwell trip
+ battery voltage
+ battery percentage remaining
+ battery manufacturer
+ battery size
+ battery ahr rating
+ battery quantity
+ battery rated voltage
+ battery alarm mask
+ battery voltage min threshold
+ battery voltage threshold 1
+ battery voltage threshold 2
+ battery voltage threshold 3
+ battery percentage min threshold
+ battery percentage threshold 1
+ battery percentage threshold 2
+ battery percentage threshold 3
+ battery alarm state
+ battery 2 voltage
+ battery 2 percentage remaining
+ battery 2 manufacturer
+ battery 2 size
+ battery 2 ahr rating
+ battery 2 quantity
+ battery 2 rated voltage
+ battery 2 alarm mask
+ battery 2 voltage min threshold
+ battery 2 voltage threshold 1
+ battery 2 voltage threshold 2
+ battery 2 voltage threshold 3
+ battery 2 percentage min threshold
+ battery 2 percentage threshold 1
+ battery 2 percentage threshold 2
+ battery 2 percentage threshold 3
+ battery 2 alarm state
+ battery 3 voltage
+ battery 3 percentage remaining
+ battery 3 manufacturer
+ battery 3 size
+ battery 3 ahr rating
+ battery 3 quantity
+ battery 3 rated voltage
+ battery 3 alarm mask
+ battery 3 voltage min threshold
+ battery 3 voltage threshold 1
+ battery 3 voltage threshold 2
+ battery 3 voltage threshold 3
+ battery 3 percentage min threshold
+ battery 3 percentage threshold 1
+ battery 3 percentage threshold 2
+ battery 3 percentage threshold 3
+ battery 3 alarm state
+
+
+ Device Temperature Configuration
+ General
+ Attributes for determining information about a device's internal temperature, and for configuring under/over temperature alarms.
+ 0x0002
+ DEVICE_TEMP_CLUSTER
+ true
+ true
+ current temperature
+ min temp experienced
+ max temp experienced
+ over temp total dwell
+ device temp alarm mask
+ low temp threshold
+ high temp threshold
+ low temp dwell trip point
+ high temp dwell trip point
+
+
+ Identify
+ General
+ Attributes and commands for putting a device into Identification mode (e.g. flashing a light).
+ 0x0003
+ IDENTIFY_CLUSTER
+ true
+ true
+ identify time
+ commission state
+
+
+ Command description for Identify
+
+
+
+
+
+ Command description for IdentifyQuery
+
+
+
+
+ Invoke EZMode on an Identify Server
+
+
+
+
+
+ Update Commission State on the server device.
+
+
+
+
+
+
+ Command description for IdentifyQueryResponse
+
+
+
+
+
+ Groups
+ General
+ Attributes and commands for group configuration and manipulation.
+ 0x0004
+ GROUPS_CLUSTER
+ true
+ true
+ name support
+
+
+
+ Command description for AddGroup
+
+
+
+
+
+
+
+
+
+ Command description for ViewGroup
+
+
+
+
+
+ Command description for GetGroupMembership
+
+
+
+
+
+
+ Command description for RemoveGroup
+
+
+
+
+
+ Command description for RemoveAllGroups
+
+
+
+
+ Command description for AddGroupIfIdentifying
+
+
+
+
+
+
+
+
+
+ Command description for AddGroupResponse
+
+
+
+
+
+
+ Command description for ViewGroupResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for GetGroupMembershipResponse
+
+
+
+
+
+
+
+ Command description for RemoveGroupResponse
+
+
+
+
+
+
+ Scenes
+ General
+ Attributes and commands for scene configuration and manipulation.
+ 0x0005
+ SCENES_CLUSTER
+ true
+ true
+ scene count
+ current scene
+ current group
+ scene valid
+ name support
+
+ last configured by
+
+
+ Add a scene to the scene table. Extension field sets are supported, and are inputed as arrays of the form [[cluster ID] [length] [value0...n] ...]
+
+
+
+
+
+
+
+
+
+ Command description for ViewScene
+
+
+
+
+
+
+ Command description for RemoveScene
+
+
+
+
+
+
+ Command description for RemoveAllScenes
+
+
+
+
+
+ Command description for StoreScene
+
+
+
+
+
+
+ Command description for RecallScene
+
+
+
+
+
+
+
+ Command description for GetSceneMembership
+
+
+
+
+
+ Command description for AddSceneResponse
+
+
+
+
+
+
+
+ Command description for ViewSceneResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for RemoveSceneResponse
+
+
+
+
+
+
+
+ Command description for RemoveAllScenesResponse
+
+
+
+
+
+
+ Command description for StoreSceneResponse
+
+
+
+
+
+
+
+ Command description for GetSceneMembershipResponse
+
+
+
+
+
+
+
+
+
+ On/off
+ General
+ Attributes and commands for switching devices between 'On' and 'Off' states.
+ 0x0006
+ ON_OFF_CLUSTER
+ true
+ true
+ on/off
+ start up on off
+
+
+ Command description for Off
+
+
+
+
+ Command description for On
+
+
+
+
+ Command description for Toggle
+
+
+
+
+ On/off Switch Configuration
+ General
+ Attributes and commands for configuring On/Off switching devices.
+ 0x0007
+ ON_OFF_SWITCH_CONFIG_CLUSTER
+ true
+ true
+ switch type
+ switch actions
+
+
+ Level Control
+ General
+ Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.'
+ 0x0008
+ LEVEL_CONTROL_CLUSTER
+ true
+ true
+ current level
+ remaining time
+
+ on off transition time
+ on level
+ on transition time
+ off transition time
+ default move rate
+ options
+ start up current level
+
+
+ Command description for MoveToLevel
+
+
+
+
+
+
+ Command description for Move
+
+
+
+
+
+
+ Command description for Step
+
+
+
+
+
+
+
+ Command description for Stop
+
+
+
+
+ Command description for MoveToLevelWithOnOff
+
+
+
+
+
+
+ Command description for MoveWithOnOff
+
+
+
+
+
+
+ Command description for StepWithOnOff
+
+
+
+
+
+
+
+ Command description for StopWithOnOff
+
+
+
+
+ Alarms
+ General
+ Attributes and commands for sending notifications and configuring alarm functionality.
+ 0x0009
+ ALARM_CLUSTER
+ true
+ true
+ alarm count
+
+
+ Command description for ResetAlarm
+
+
+
+
+
+
+ Command description for ResetAllAlarms
+
+
+
+
+ Command description for GetAlarm
+
+
+
+
+ Command description for ResetAlarmLog
+
+
+
+
+ Command description for Alarm
+
+
+
+
+
+
+ Command description for GetAlarmResponse
+
+
+
+
+
+
+
+
+ Time
+ General
+ Attributes and commands that provide a basic interface to a real-time clock.
+ 0x000A
+ TIME_CLUSTER
+ true
+ true
+ time
+ time status
+ time zone
+ dst start
+ dst end
+ dst shift
+ standard time
+ local time
+ last set time
+ valid until time
+
+
+ RSSI Location
+ General
+ Attributes and commands that provide a means for exchanging location information and channel parameters among devices.
+ 0x000B
+ RSSI_LOCATION_CLUSTER
+ true
+ true
+ location type
+ location method
+ location age
+ quality measure
+ number of devices
+ coordinate 1
+ coordinate 2
+ coordinate 3
+ power
+ path loss exponent
+ reporting period
+ calculation period
+ number rssi measurements
+
+
+ Command description for SetAbsoluteLocation
+
+
+
+
+
+
+
+
+
+ Command description for SetDeviceConfiguration
+
+
+
+
+
+
+
+
+
+ Command description for GetDeviceConfiguration
+
+
+
+
+
+ Command description for GetLocationData
+
+
+
+
+
+
+
+ Command description for RssiResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for SendPings
+
+
+
+
+
+
+
+ Command description for AnchorNodeAnnounce
+
+
+
+
+
+
+
+
+ Command description for DeviceConfigurationResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for LocationDataResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for LocationDataNotification
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for CompactLocationDataNotification
+
+
+
+
+
+
+
+
+
+
+ Command description for RssiPing
+
+
+
+
+
+ Command description for RssiRequest
+
+
+
+
+ Command description for ReportRssiMeasurements
+
+
+
+
+
+
+
+ Command description for RequestOwnLocation
+
+
+
+
+
+ Binary Input (Basic)
+ General
+ An interface for reading the value of a binary measurement and accessing various characteristics of that measurement.
+ 0x000F
+ BINARY_INPUT_BASIC_CLUSTER
+ true
+ true
+ active text
+ description
+ inactive text
+ out of service
+ polarity
+ present value
+ reliability
+ status flags
+ application type
+
+
+ Commissioning
+ General
+ Attributes and commands for commissioning and managing a ZigBee device.
+ 0x0015
+ COMMISSIONING_CLUSTER
+ true
+ true
+ short address
+ extended pan id
+ pan id
+ channel mask
+ protocol version
+ stack profile
+ startup control
+ trust center address
+ trust center master key
+ network key
+ use insecure join
+ preconfigured link key
+ network key sequence number
+ network key type
+ network manager address
+ scan attempts
+ time between scans
+ rejoin interval
+ max rejoin interval
+ indirect poll rate
+ parent retry threshold
+ concentrator flag
+ concentrator radius
+ concentrator discovery time
+
+
+ Command description for RestartDevice
+
+
+
+
+
+
+
+ Command description for SaveStartupParameters
+
+
+
+
+
+
+ Command description for RestoreStartupParameters
+
+
+
+
+
+
+ Command description for ResetStartupParameters
+
+
+
+
+
+
+ Command description for RestartDeviceResponse
+
+
+
+
+
+ Command description for SaveStartupParametersResponse
+
+
+
+
+
+ Command description for RestoreStartupParametersResponse
+
+
+
+
+
+ Command description for ResetStartupParametersResponse
+
+
+
+
+
diff --git a/zcl/general.xml b/zcl/general.xml
new file mode 100644
index 0000000000..4c234bc093
--- /dev/null
+++ b/zcl/general.xml
@@ -0,0 +1,956 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for ReadAttributes
+
+
+
+
+
+ Command description for ReadAttributesResponse
+
+
+
+
+
+ Command description for WriteAttributes
+
+
+
+
+
+ Command description for WriteAttributesUndivided
+
+
+
+
+
+ Command description for WriteAttributesResponse
+
+
+
+
+
+ Command description for WriteAttributesNoResponse
+
+
+
+
+
+ Command description for ConfigureReporting
+
+
+
+
+
+ Command description for ConfigureReportingResponse
+
+
+
+
+
+ Command description for ReadReportingConfiguration
+
+
+
+
+
+ Command description for ReadReportingConfigurationResponse
+
+
+
+
+
+ Command description for ReportAttributes
+
+
+
+
+
+ Command description for DefaultResponse
+
+
+
+
+
+
+ Command description for DiscoverAttributes
+
+
+
+
+
+
+ Command description for DiscoverAttributesResponse
+
+
+
+
+
+
+ Command description for ReadAttributesStructured
+
+
+
+
+
+ Command description for WriteAttributesStructured
+
+
+
+
+
+ Command description for WriteAttributesStructuredResponse
+
+
+
+
+ This command may be used to discover all commands processed (received) by this cluster, including optional or manufacturer specific commands.
+
+
+
+
+ The discover commands received response command is sent in response to a discover commands received command, and is used to discover which commands a particular cluster can process.
+
+
+
+
+ This command may be used to discover all commands which may be generated (sent) by the cluster, including optional or manufacturer specific commands.
+
+
+
+
+ The discover client commands response command is sent in response to a discover client commands command, and is used to discover which commands a particular cluster supports.
+
+
+
+
+ This command is similar to the discover attributes command, but also includes a field to indicate whether the attribute is readable, writeable or reportable.
+
+
+
+
+ This command is sent in response to a discover attribute extended command and is used to determine if attributes are readable, writable or reportable.
+
+
+
+ cluster revision
+ reporting status
+ cluster revision
+ reporting status
+
+
+ Basic
+ General
+ Attributes for determining basic information about a device, setting user device information such as location, and enabling a device.
+ 0x0000
+ BASIC_CLUSTER
+ true
+ true
+ ZCL version
+
+ application version
+ stack version
+ hardware version
+ manufacturer name
+ model identifier
+ date code
+ power source
+ generic device class
+ generic device type
+ product code
+ product url
+ location description
+ physical environment
+ device enabled
+ alarm mask
+ disable local config
+
+ Command that resets all attribute values to factory default.
+
+
+
+ Power Configuration
+ General
+ Attributes for determining more detailed information about a device's power source(s), and for configuring under/over voltage alarms.
+ 0x0001
+ POWER_CONFIG_CLUSTER
+ true
+ true
+ mains voltage
+ mains frequency
+ mains alarm mask
+ mains voltage min threshold
+ mains voltage max threshold
+ mains voltage dwell trip
+ battery voltage
+ battery percentage remaining
+ battery manufacturer
+ battery size
+ battery ahr rating
+ battery quantity
+ battery rated voltage
+ battery alarm mask
+ battery voltage min threshold
+ battery voltage threshold 1
+ battery voltage threshold 2
+ battery voltage threshold 3
+ battery percentage min threshold
+ battery percentage threshold 1
+ battery percentage threshold 2
+ battery percentage threshold 3
+ battery alarm state
+ battery 2 voltage
+ battery 2 percentage remaining
+ battery 2 manufacturer
+ battery 2 size
+ battery 2 ahr rating
+ battery 2 quantity
+ battery 2 rated voltage
+ battery 2 alarm mask
+ battery 2 voltage min threshold
+ battery 2 voltage threshold 1
+ battery 2 voltage threshold 2
+ battery 2 voltage threshold 3
+ battery 2 percentage min threshold
+ battery 2 percentage threshold 1
+ battery 2 percentage threshold 2
+ battery 2 percentage threshold 3
+ battery 2 alarm state
+ battery 3 voltage
+ battery 3 percentage remaining
+ battery 3 manufacturer
+ battery 3 size
+ battery 3 ahr rating
+ battery 3 quantity
+ battery 3 rated voltage
+ battery 3 alarm mask
+ battery 3 voltage min threshold
+ battery 3 voltage threshold 1
+ battery 3 voltage threshold 2
+ battery 3 voltage threshold 3
+ battery 3 percentage min threshold
+ battery 3 percentage threshold 1
+ battery 3 percentage threshold 2
+ battery 3 percentage threshold 3
+ battery 3 alarm state
+
+
+ Device Temperature Configuration
+ General
+ Attributes for determining information about a device's internal temperature, and for configuring under/over temperature alarms.
+ 0x0002
+ DEVICE_TEMP_CLUSTER
+ true
+ true
+ current temperature
+ min temp experienced
+ max temp experienced
+ over temp total dwell
+ device temp alarm mask
+ low temp threshold
+ high temp threshold
+ low temp dwell trip point
+ high temp dwell trip point
+
+
+ Identify
+ General
+ Attributes and commands for putting a device into Identification mode (e.g. flashing a light).
+ 0x0003
+ IDENTIFY_CLUSTER
+ true
+ true
+ identify time
+ commission state
+
+
+ Command description for Identify
+
+
+
+
+
+ Command description for IdentifyQuery
+
+
+
+
+ Invoke EZMode on an Identify Server
+
+
+
+
+
+ Update Commission State on the server device.
+
+
+
+
+
+
+ Command description for IdentifyQueryResponse
+
+
+
+
+
+ Groups
+ General
+ Attributes and commands for group configuration and manipulation.
+ 0x0004
+ GROUPS_CLUSTER
+ true
+ true
+ name support
+
+
+
+ Command description for AddGroup
+
+
+
+
+
+
+ Command description for ViewGroup
+
+
+
+
+
+ Command description for GetGroupMembership
+
+
+
+
+
+
+ Command description for RemoveGroup
+
+
+
+
+
+ Command description for RemoveAllGroups
+
+
+
+
+ Command description for AddGroupIfIdentifying
+
+
+
+
+
+
+ Command description for AddGroupResponse
+
+
+
+
+
+
+ Command description for ViewGroupResponse
+
+
+
+
+
+
+
+ Command description for GetGroupMembershipResponse
+
+
+
+
+
+
+
+ Command description for RemoveGroupResponse
+
+
+
+
+
+
+ Scenes
+ General
+ Attributes and commands for scene configuration and manipulation.
+ 0x0005
+ SCENES_CLUSTER
+ true
+ true
+ scene count
+ current scene
+ current group
+ scene valid
+ name support
+
+ last configured by
+
+
+ Add a scene to the scene table. Extension field sets are supported, and are inputed as arrays of the form [[cluster ID] [length] [value0...n] ...]
+
+
+
+
+
+
+
+
+
+ Command description for ViewScene
+
+
+
+
+
+
+ Command description for RemoveScene
+
+
+
+
+
+
+ Command description for RemoveAllScenes
+
+
+
+
+
+ Command description for StoreScene
+
+
+
+
+
+
+ Command description for RecallScene
+
+
+
+
+
+
+
+ Command description for GetSceneMembership
+
+
+
+
+
+ Command description for AddSceneResponse
+
+
+
+
+
+
+
+ Command description for ViewSceneResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for RemoveSceneResponse
+
+
+
+
+
+
+
+ Command description for RemoveAllScenesResponse
+
+
+
+
+
+
+ Command description for StoreSceneResponse
+
+
+
+
+
+
+
+ Command description for GetSceneMembershipResponse
+
+
+
+
+
+
+
+
+
+ On/off
+ General
+ Attributes and commands for switching devices between 'On' and 'Off' states.
+ 0x0006
+ ON_OFF_CLUSTER
+ true
+ true
+ on/off
+ start up on off
+
+
+ Command description for Off
+
+
+
+
+ Command description for On
+
+
+
+
+ Command description for Toggle
+
+
+
+
+ On/off Switch Configuration
+ General
+ Attributes and commands for configuring On/Off switching devices.
+ 0x0007
+ ON_OFF_SWITCH_CONFIG_CLUSTER
+ true
+ true
+ switch type
+ switch actions
+
+
+ Level Control
+ General
+ Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.'
+ 0x0008
+ LEVEL_CONTROL_CLUSTER
+ true
+ true
+ current level
+ remaining time
+
+ on off transition time
+ on level
+ on transition time
+ off transition time
+ default move rate
+ options
+ start up current level
+
+
+ Command description for MoveToLevel
+
+
+
+
+
+
+
+
+ Command description for Move
+
+
+
+
+
+
+
+
+ Command description for Step
+
+
+
+
+
+
+
+
+
+ Command description for Stop
+
+
+
+
+
+
+ Command description for MoveToLevelWithOnOff
+
+
+
+
+
+
+ Command description for MoveWithOnOff
+
+
+
+
+
+
+ Command description for StepWithOnOff
+
+
+
+
+
+
+
+ Command description for StopWithOnOff
+
+
+
+
+ Alarms
+ General
+ Attributes and commands for sending notifications and configuring alarm functionality.
+ 0x0009
+ ALARM_CLUSTER
+ true
+ true
+ alarm count
+
+
+ Command description for ResetAlarm
+
+
+
+
+
+
+ Command description for ResetAllAlarms
+
+
+
+
+ Command description for GetAlarm
+
+
+
+
+ Command description for ResetAlarmLog
+
+
+
+
+ Command description for Alarm
+
+
+
+
+
+
+ Command description for GetAlarmResponse
+
+
+
+
+
+
+
+
+ Time
+ General
+ Attributes and commands that provide a basic interface to a real-time clock.
+ 0x000A
+ TIME_CLUSTER
+ true
+ true
+ time
+ time status
+ time zone
+ dst start
+ dst end
+ dst shift
+ standard time
+ local time
+ last set time
+ valid until time
+
+
+ RSSI Location
+ General
+ Attributes and commands that provide a means for exchanging location information and channel parameters among devices.
+ 0x000B
+ RSSI_LOCATION_CLUSTER
+ true
+ true
+ location type
+ location method
+ location age
+ quality measure
+ number of devices
+ coordinate 1
+ coordinate 2
+ coordinate 3
+ power
+ path loss exponent
+ reporting period
+ calculation period
+ number rssi measurements
+
+
+ Command description for SetAbsoluteLocation
+
+
+
+
+
+
+
+
+
+ Command description for SetDeviceConfiguration
+
+
+
+
+
+
+
+
+
+ Command description for GetDeviceConfiguration
+
+
+
+
+
+ Command description for GetLocationData
+
+
+
+
+
+
+
+ Command description for RssiResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for SendPings
+
+
+
+
+
+
+
+ Command description for AnchorNodeAnnounce
+
+
+
+
+
+
+
+
+ Command description for DeviceConfigurationResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for LocationDataResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for LocationDataNotification
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for CompactLocationDataNotification
+
+
+
+
+
+
+
+
+
+
+ Command description for RssiPing
+
+
+
+
+
+ Command description for RssiRequest
+
+
+
+
+ Command description for ReportRssiMeasurements
+
+
+
+
+
+
+
+ Command description for RequestOwnLocation
+
+
+
+
+
+ Binary Input (Basic)
+ General
+ An interface for reading the value of a binary measurement and accessing various characteristics of that measurement.
+ 0x000F
+ BINARY_INPUT_BASIC_CLUSTER
+ true
+ true
+ active text
+ description
+ inactive text
+ out of service
+ polarity
+ present value
+ reliability
+ status flags
+ application type
+
+
+ Commissioning
+ General
+ Attributes and commands for commissioning and managing a ZigBee device.
+ 0x0015
+ COMMISSIONING_CLUSTER
+ true
+ true
+ short address
+ extended pan id
+ pan id
+ channel mask
+ protocol version
+ stack profile
+ startup control
+ trust center address
+ trust center master key
+ network key
+ use insecure join
+ preconfigured link key
+ network key sequence number
+ network key type
+ network manager address
+ scan attempts
+ time between scans
+ rejoin interval
+ max rejoin interval
+ indirect poll rate
+ parent retry threshold
+ concentrator flag
+ concentrator radius
+ concentrator discovery time
+
+
+ Command description for RestartDevice
+
+
+
+
+
+
+
+ Command description for SaveStartupParameters
+
+
+
+
+
+
+ Command description for RestoreStartupParameters
+
+
+
+
+
+
+ Command description for ResetStartupParameters
+
+
+
+
+
+
+ Command description for RestartDeviceResponse
+
+
+
+
+
+ Command description for SaveStartupParametersResponse
+
+
+
+
+
+ Command description for RestoreStartupParametersResponse
+
+
+
+
+
+ Command description for ResetStartupParametersResponse
+
+
+
+
+
diff --git a/zcl/generation-templates/bitmaps.handlebars b/zcl/generation-templates/bitmaps.handlebars
new file mode 100644
index 0000000000..2cda3a8c92
--- /dev/null
+++ b/zcl/generation-templates/bitmaps.handlebars
@@ -0,0 +1,9 @@
+{{#each type}}
+ {{#each this.BITMAP_FIELDS}}
+#define EMBER_AF_{{strong ../NAME}}_{{strong NAME}} ({{VALUE}})
+ {{/each}}
+{{/each}}
+
+/** @} END Enums */
+/** @} END addtogroup */
+#endif // SILABS_EMBER_AF_ENUMS
\ No newline at end of file
diff --git a/zcl/generation-templates/cluster-id.handlebars b/zcl/generation-templates/cluster-id.handlebars
new file mode 100644
index 0000000000..5955c4b0dc
--- /dev/null
+++ b/zcl/generation-templates/cluster-id.handlebars
@@ -0,0 +1,10 @@
+// This file is generated by Simplicity Studio. Please do not edit manually.
+
+// Enclosing macro to prevent multiple inclusion
+#ifndef SILABS_EMBER_AF_CLUSTER_ID
+#define SILABS_EMBER_AF_CLUSTER_ID
+
+{{#each type}}
+#define ZCL_{{uppercase this.DEFINE}}_ID {{this.CODE}}
+{{/each}}
+#endif // SILABS_EMBER_AF_CLUSTER_ID
\ No newline at end of file
diff --git a/zcl/generation-templates/enums.handlebars b/zcl/generation-templates/enums.handlebars
new file mode 100644
index 0000000000..df7eb631dd
--- /dev/null
+++ b/zcl/generation-templates/enums.handlebars
@@ -0,0 +1,23 @@
+// This file is generated by Simplicity Studio. Please do not edit manually.
+
+// Enclosing macro to prevent multiple inclusion
+#ifndef SILABS_EMBER_AF_ENUMS
+#define SILABS_EMBER_AF_ENUMS
+
+/**
+ * @addtogroup enums Application Framework Enums Reference
+ * This header provides Application Framework enum definitions.
+ * @{
+ */
+/** @name Enums */
+// @{
+
+{{#each type}}
+typedef enum {
+ {{#each this.ENUM_ITEMS}}
+ EMBER_ZCL_{{strong ../NAME}}_{{strong NAME}} = {{hexValue VALUE}},
+ {{/each}}
+}EmberAf{{this.NAME}};
+
+{{/each}}
+
diff --git a/zcl/green-power-devices.xml b/zcl/green-power-devices.xml
new file mode 100644
index 0000000000..bf5ec24a97
--- /dev/null
+++ b/zcl/green-power-devices.xml
@@ -0,0 +1,91 @@
+
+
+
+ GP-proxy
+ GP
+ GP Proxy
+ Router
+ 0xA1E0
+ 0x0060
+
+
+
+
+
+ GP-proxy-basic
+ GP
+ GP Proxy Basic
+ Router
+ 0xA1E0
+ 0x0061
+
+
+
+
+
+ GP-target-plus
+ GP
+ GP Target+
+ Router
+ 0xA1E0
+ 0x0062
+
+
+
+
+
+ GP-target
+ GP
+ GP Target
+ Router
+ 0xA1E0
+ 0x0063
+
+
+
+
+
+ GP-commissioning-tool
+ GP
+ GP Commissioning Tool
+ Router
+ 0xA1E0
+ 0x0064
+
+
+
+
+
+ GP-combo
+ GP
+ GP Combo
+ Router
+ 0xA1E0
+ 0x0065
+
+
+
+
+
+ GP-combo-basic
+ GP
+ GP Combo Basic
+ Router
+ 0xA1E0
+ 0x0066
+
+
+
+
+
+ GP-test-device
+ GP
+ GP Test Device
+ Router
+ 0xA1E0
+ 0x0066
+
+
+
+
+
diff --git a/zcl/green-power.xml b/zcl/green-power.xml
new file mode 100644
index 0000000000..34fd3b96b2
--- /dev/null
+++ b/zcl/green-power.xml
@@ -0,0 +1,738 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Green Power
+ GP
+ The Green Power cluster defines the format of the commands exchanged when handling GPDs.
+ 0x0021
+ GREEN_POWER_CLUSTER
+ true
+ true
+
+ gps max sink table entries
+ sink table
+ gps communication mode
+ gps commissioning exit mode
+ gps commissioning window
+ gps security level
+ gps functionality
+ gps active functionality
+
+ gp shared security key type
+ gp shared security key
+ gp link key
+
+ gpp max proxy table entries
+ proxy table
+ gpp notification retry number
+ gpp notification retry timer
+ gpp max search counter
+ gpp blocked gpd id
+ gpp functionality
+ gpp active functionality
+
+ gp shared security key type
+ gp shared security key
+ gp link key
+
+
+
+ From GPP to GPS to tunnel GP frame.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ From GPP to GPSs in entire network to get pairing indication related to GPD for Proxy Table update.
+
+
+
+
+
+
+
+
+ From GPP to neighbor GPPs to indicate GP Notification sent in unicast mode.
+
+
+
+
+
+
+
+
+
+
+
+ From GPP to GPS to tunnel GPD commissioning data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To enable commissioning mode of the sink, over the air
+
+
+
+
+
+
+
+
+ To configure GPD Command Translation Table.
+
+
+
+
+
+
+
+
+
+ To provide GPD Command Translation Table content.
+
+
+
+
+
+ To configure Sink Table.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To read out selected Sink Table Entries, by index or by GPD ID.
+
+
+
+
+
+
+
+
+
+ To reply with read-out Proxy Table entries, by index or by GPD ID.
+
+
+
+
+
+
+
+
+
+
+ From GPS to GPP to acknowledge GP Notification received in unicast mode.
+
+
+
+
+
+
+
+
+
+ From GPS to the entire network to (de)register for tunneling service, or for removing GPD from the network.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ From GPS to GPPs in the whole network to indicate commissioning mode.
+
+
+
+
+
+
+
+ From GPS to selected GPP, to provide data to be transmitted to Rx-capable GPD.
+
+
+
+
+
+
+
+
+
+
+
+
+ To provide GPD Command Translation Table content.
+
+
+
+
+
+
+
+
+
+
+ To selected Proxy Table entries, by index or by GPD ID.
+
+
+
+
+
+
+
+
+
+
+ To request selected Proxy Table entries, by index or by GPD ID.
+
+
+
+
+
+
+
+
+
diff --git a/zcl/ha-devices.xml b/zcl/ha-devices.xml
new file mode 100644
index 0000000000..337a1a07c6
--- /dev/null
+++ b/zcl/ha-devices.xml
@@ -0,0 +1,1016 @@
+
+
+
+ HA-onoff
+ HA
+ HA On/Off Switch
+ Coordinator
+ 0x0104
+ 0x0000
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Scenes
+ Groups
+ On/Off Switch Configuration
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-levelcontrol
+ HA
+ HA Level Control Switch
+ Coordinator
+ 0x0104
+ 0x0001
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ On/Off Switch Configuration
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-onnoffoutput
+ HA
+ HA On/Off Output
+ Coordinator
+ 0x0104
+ 0x0002
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-levelcontrollableoutput
+ HA
+ HA Level Controllable Output
+ Coordinator
+ 0x0104
+ 0x0003
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-sceneselector
+ HA
+ HA Scene Selector
+ Coordinator
+ 0x0104
+ 0x0004
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-configurationtool
+ HA
+ HA Configuration Tool
+ Coordinator
+ 0x0104
+ 0x0005
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Groups
+ Scenes
+ Illuminance Level Sensing
+ Temperature Measurement
+ Pressure Measurement
+ Flow Measurement
+ Occupancy Sensing
+ Pump Configuration and Control
+ Shade Configuration
+ Thermostat User Interface Configuration
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-remote
+ HA
+ HA Remote Control
+ Sleepy End Device
+ 0x0104
+ 0x0006
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Simple Metering
+ On/off
+ Level control
+ Groups
+ Scenes
+ Color control
+ Pump Configuration and Control
+ Shade Configuration
+ On/Off Switch Configuration
+ Temperature Measurement
+ Illuminance Level Sensing
+ Illuminance Measurement
+ Window Covering
+ Door Lock
+ Thermostat
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-combinedinterface
+ HA
+ HA Combined Interface
+ Coordinator
+ 0x0104
+ 0x0007
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Color control
+ Pump Configuration and Control
+ Shade Configuration
+ On/Off Switch Configuration
+ Temperature Measurement
+ Illuminance Level Sensing
+ Illuminance Measurement
+ Thermostat User Interface Configuration
+ Level control
+ Groups
+ Scenes
+ Window Covering
+ Door Lock
+ Thermostat
+ On/off
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-rangeextender
+ HA
+ HA Range Extender
+ Router
+ 0x0104
+ 0x0008
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-mpo
+ HA
+ HA Mains Power Outlet
+ Coordinator
+ 0x0104
+ 0x0009
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-doorlock
+ HA
+ HA Door Lock
+ Coordinator
+ 0x0104
+ 0x000A
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Door Lock
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-doorlockcontroller
+ HA
+ HA Door Lock Controller
+ Coordinator
+ 0x0104
+ 0x000B
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Door Lock
+ Time
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-simplesensor
+ HA
+ HA Simple Sensor
+ Coordinator
+ 0x0104
+ 0x000C
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Binary Input (Basic)
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-onofflight
+ HA
+ HA On/Off Light
+ Coordinator
+ 0x0104
+ 0x0100
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Scenes
+ Groups
+ Occupancy Sensing
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-light
+ HA
+ HA Dimmable Light
+ Coordinator
+ 0x0104
+ 0x0101
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Scenes
+ Groups
+ Occupancy Sensing
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-colordimmablelight
+ HA
+ HA Color Dimmable Light
+ Coordinator
+ 0x0104
+ 0x0102
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Color control
+ Scenes
+ Groups
+ Occupancy Sensing
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-onofflightswitch
+ HA
+ HA On/Off Light Switch
+ Coordinator
+ 0x0104
+ 0x0103
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Scenes
+ Groups
+ On/Off Switch Configuration
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-switch
+ HA
+ HA Dimmer Switch
+ Sleepy End Device
+ 0x0104
+ 0x0104
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Scenes
+ On/Off Switch Configuration
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-colordimmerswitch
+ HA
+ HA Color Dimmer Switch
+ Coordinator
+ 0x0104
+ 0x0105
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Color control
+ On/Off Switch Configuration
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-lightsensor
+ HA
+ HA Light Sensor
+ Coordinator
+ 0x0104
+ 0x0106
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Illuminance measurement
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-occupancysensor
+ HA
+ HA Occupancy Sensor
+ Coordinator
+ 0x0104
+ 0x0107
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Occupancy Sensing
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-shade
+ HA
+ HA Shade
+ Coordinator
+ 0x0104
+ 0x0200
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Shade configuration
+ On/off
+ Level control
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-shadecontroller
+ HA
+ HA Shade Controller
+ Coordinator
+ 0x0104
+ 0x0201
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Level control
+ Shade configuration
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-windowcovering
+ HA
+ HA Window Covering
+ Coordinator
+ 0x0104
+ 0x0202
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Window Covering
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-windowcoveringcontroller
+ HA
+ HA Window Covering Controller
+ Coordinator
+ 0x0104
+ 0x0203
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Window Covering
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-heatcool
+ HA
+ HA Heating Cooling Unit
+ Coordinator
+ 0x0104
+ 0x0300
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ On/off
+ Thermostat
+ Fan control
+ Level control
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-tstat
+ HA
+ HA Thermostat
+ Sleepy End Device
+ 0x0104
+ 0x0301
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Thermostat
+ Scenes
+ Groups
+ Thermostat User Interface Configuration
+ Fan control
+ Temperature measurement
+ Occupancy Sensing
+ Relative Humidity Measurement
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-tempsensor
+ HA
+ HA Temperature Sensor
+ Sleepy End Device
+ 0x0104
+ 0x0302
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Temperature measurement
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-pump
+ HA
+ HA Pump
+ Coordinator
+ 0x0104
+ 0x0303
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Pump Configuration and Control
+ On/off
+ Scenes
+ Groups
+ Level control
+ Pressure measurement
+ Temperature measurement
+ Flow measurement
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-pumpcontroller
+ HA
+ HA Pump Controller
+ Coordinator
+ 0x0104
+ 0x0304
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Pump Configuration and Control
+ On/off
+ Scenes
+ Groups
+ Pressure measurement
+ Temperature measurement
+ Flow measurement
+ Level control
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-pressuresensor
+ HA
+ HA Pressure Sensor
+ Coordinator
+ 0x0104
+ 0x0305
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Pressure measurement
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-flowsensor
+ HA
+ HA Flow Sensor
+ Coordinator
+ 0x0104
+ 0x0306
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Flow measurement
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-ias400
+ HA
+ HA IAS Control and Indication Equipment
+ Coordinator
+ 0x0104
+ 0x0400
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ IAS ACE
+ IAS WD
+ IAS Zone
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-ias401
+ HA
+ HA IAS Ancillary Control Equipment
+ Coordinator
+ 0x0104
+ 0x0401
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ IAS Zone
+ IAS ACE
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-ias402
+ HA
+ HA IAS Zone
+ Coordinator
+ 0x0104
+ 0x0402
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ IAS Zone
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-ias403
+ HA
+ HA IAS Warning Device
+ Coordinator
+ 0x0104
+ 0x0403
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ IAS WD
+ IAS Zone
+ Scenes
+ Groups
+ Poll Control
+ Electrical Measurement
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-consumptionawarenessdevice
+ HA
+ HA Consumption Awareness Device
+ Coordinator
+ 0x0104
+ 0x000D
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Poll Control
+ Electrical Measurement
+ Time
+ Simple Metering
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-homegatewayems
+ HA
+ HA Home Gateway / Energy Management System
+ Coordinator
+ 0x0104
+ 0x0050
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Poll Control
+ Electrical Measurement
+ Time
+ Simple Metering
+ Meter Identification
+ Power Profile
+ Appliance Statistics
+ Appliance Control
+ Appliance Identification
+ Appliance Events and Alert
+ Price
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-smartplug
+ HA
+ HA Smart Plug
+ Coordinator
+ 0x0104
+ 0x0051
+
+ Basic
+ Identify
+ On/off
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Poll Control
+ Electrical Measurement
+ Simple Metering
+ Time
+ Demand Response and Load Control
+ Price
+ Time
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-whitegoods
+ HA
+ HA White Goods
+ Coordinator
+ 0x0104
+ 0x0052
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Poll Control
+ Electrical Measurement
+ Time
+ Meter Identification
+ Price
+ Time
+ Power Profile
+ Appliance Statistics
+ Appliance Control
+ Appliance Identification
+ Appliance Events and Alert
+ Simple Metering
+ Over the Air Bootloading
+ Partition
+
+
+
+ HA-meterinterface
+ HA
+ HA Meter Interface
+ Coordinator
+ 0x0104
+ 0x0053
+
+ Basic
+ Identify
+ Power Configuration
+ Device Temperature Configuration
+ Alarms
+ Simple Metering
+ Meter Identification
+ Poll Control
+ Electrical Measurement
+ Time
+ Messaging
+ Price
+ Over the Air Bootloading
+ Partition
+
+
+
diff --git a/zcl/ha-thread.xml b/zcl/ha-thread.xml
new file mode 100644
index 0000000000..4a979c674d
--- /dev/null
+++ b/zcl/ha-thread.xml
@@ -0,0 +1,2447 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Shade Configuration
+ Closures
+ Attributes and commands for configuring a shade.
+ 0x0100
+ SHADE_CONFIG_CLUSTER
+ true
+ true
+ physical closed limit
+
+ motor step size
+
+ status
+
+ closed limit
+
+ mode
+
+
+
+ Pump Configuration and Control
+ HVAC
+ An interface for configuring and controlling pumps.
+ 0x0200
+ PUMP_CONFIG_CONTROL_CLUSTER
+ true
+ true
+ max pressure
+ max speed
+ max flow
+ min const pressure
+ max const pressure
+ min comp pressure
+ max comp pressure
+ min const speed
+ max const speed
+ min const flow
+ max const flow
+ min const temp
+ max const temp
+ pump status
+ effective operation mode
+ effective control mode
+ capacity
+ speed
+ lifetime running hours
+ power
+ lifetime energy consumed
+ operation mode
+ control mode
+ alarm mask
+
+
+
+ Thermostat
+ HVAC
+ An interface for configuring and controlling the functionality of a thermostat.
+ 0x0201
+ THERMOSTAT_CLUSTER
+ true
+ true
+ local temperature
+ outdoor temperature
+ occupancy
+
+ abs min heat setpoint limit
+ abs max heat setpoint limit
+ abs min cool setpoint limit
+ abs max cool setpoint limit
+ pi cooling demand
+ pi heating demand
+ HVAC system type configuration
+ local temperature calibration
+ occupied cooling setpoint
+ occupied heating setpoint
+ unoccupied cooling setpoint
+ unoccupied heating setpoint
+ min heat setpoint limit
+ max heat setpoint limit
+ min cool setpoint limit
+ max cool setpoint limit
+ min setpoint dead band
+ remote sensing
+ control sequence of operation
+ system mode
+ alarm mask
+
+ thermostat running mode
+ start of week
+ number of weekly transitions
+ number of daily transitions
+ temperature setpoint hold
+ temperature setpoint hold duration
+ thermostat programming operation mode
+ hvac relay state
+ setpoint change source
+ setpoint change amount
+ setpoint change source timestamp
+ ac type
+ ac capacity
+ ac refrigerant type
+ ac compressor
+ ac error code
+ ac louver position
+ ac coil temperature
+ ac capacity format
+
+
+ Command description for SetpointRaiseLower
+
+
+
+
+
+
+ Command description for SetWeeklySchedule
+
+
+
+
+
+
+
+
+ Command description for GetWeeklySchedule
+
+
+
+
+
+
+ The Clear Weekly Schedule command is used to clear the weekly schedule.
+
+
+
+
+ The Get Relay Status Log command is used to query the thermostat internal relay status log.
+
+
+
+
+ The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command.
+
+
+
+
+
+
+
+
+ This command is sent from the thermostat cluster server in response to the Get Relay Status Log.
+
+
+
+
+
+
+
+
+
+
+ Fan Control
+ HVAC
+ An interface for controlling a fan in a heating/cooling system.
+ 0x0202
+ FAN_CONTROL_CLUSTER
+ true
+ true
+ fan mode
+
+ fan mode sequence
+
+
+
+ Dehumidification Control
+ HVAC
+ An interface for controlling dehumidification.
+ 0x0203
+ DEHUMID_CONTROL_CLUSTER
+ true
+ true
+ relative humidity
+ dehumidification cooling
+ RH dehumidification setpoint
+ relative humidity mode
+ dehumidification lockout
+ dehumidification hysteresis
+ dehumidification max cool
+ relative humidity display
+
+
+ Thermostat User Interface Configuration
+ HVAC
+ An interface for configuring the user interface of a thermostat (which may be remote from the thermostat).
+ 0x0204
+ THERMOSTAT_UI_CONFIG_CLUSTER
+ true
+ true
+ temperature display mode
+ keypad lockout
+ schedule programming visibility
+
+
+ Color Control
+ Lighting
+ Attributes and commands for controlling the color properties of a color-capable light.
+ 0x0300
+ COLOR_CONTROL_CLUSTER
+ true
+ true
+ current hue
+
+ current saturation
+
+ remaining time
+
+ current x
+
+ current y
+
+ drift compensation
+
+ compensation text
+
+ color temperature
+
+ color mode
+
+ color control options
+
+ number of primaries
+
+ primary 1 x
+
+ primary 1 y
+
+ primary 1 intensity
+
+ primary 2 x
+
+ primary 2 y
+
+ primary 2 intensity
+
+ primary 3 x
+
+ primary 3 y
+
+ primary 3 intensity
+
+ primary 4 x
+
+ primary 4 y
+
+ primary 4 intensity
+
+ primary 5 x
+
+ primary 5 y
+
+ primary 5 intensity
+
+ primary 6 x
+
+ primary 6 y
+
+ primary 6 intensity
+
+ white point x
+
+ white point y
+
+ color point r x
+
+ color point r y
+
+ color point r intensity
+
+ color point g x
+
+ color point g y
+
+ color point g intensity
+
+ color point b x
+
+ color point b y
+
+ color point b intensity
+
+ couple color temp to level min-mireds
+ start up color temperature mireds
+
+
+ Move to specified hue.
+
+
+
+
+
+
+
+ Move hue up or down at specified rate.
+
+
+
+
+
+
+ Step hue up or down by specified size at specified rate.
+
+
+
+
+
+
+
+ Move to specified saturation.
+
+
+
+
+
+
+ Move saturation up or down at specified rate.
+
+
+
+
+
+
+ Step saturation up or down by specified size at specified rate.
+
+
+
+
+
+
+
+ Move to hue and saturation.
+
+
+
+
+
+
+
+ Move to specified color.
+
+
+
+
+
+
+
+ Moves the color.
+
+
+
+
+
+
+ Steps the lighting to a specific color.
+
+
+
+
+
+
+
+ Moves the lighting to a specific color temperature.
+
+
+
+
+
+
+ Ballast Configuration
+ Lighting
+ Attributes and commands for configuring a lighting ballast.
+ 0x0301
+ BALLAST_CONFIGURATION_CLUSTER
+ true
+ true
+ physical min level
+ physical max level
+ ballast status
+ min level
+ max level
+ power on level
+ power on fade time
+ intrinsic ballast factor
+ ballast factor adjustment
+ lamp quality
+ lamp type
+ lamp manufacturer
+ lamp rated hours
+ lamp burn hours
+ lamp alarm mode
+ lamp burn hours trip point
+
+
+ Illuminance Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements.
+ 0x0400
+ ILLUM_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+ light sensor type
+
+
+
+ Illuminance Level Sensing
+ Measurement & Sensing
+ Attributes and commands for configuring the sensing of illuminance levels, and reporting whether illuminance is above, below, or on target.
+ 0x0401
+ ILLUM_LEVEL_SENSING_CLUSTER
+ true
+ true
+ level status
+ light sensor type
+
+ illuminance level target
+
+
+ Temperature Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements.
+ 0x0402
+ TEMP_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Pressure Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements.
+ 0x0403
+ PRESSURE_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+ scaled value
+ min scaled value
+ max scaled value
+ scaled tolerance
+ scale
+
+
+ Flow Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of flow, and reporting flow rates.
+ 0x0404
+ FLOW_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Relative Humidity Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements.
+ 0x0405
+ RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Occupancy Sensing
+ Measurement & Sensing
+ Attributes and commands for configuring occupancy sensing, and reporting occupancy status.
+ 0x0406
+ OCCUPANCY_SENSING_CLUSTER
+ true
+ true
+ occupancy
+ occupancy sensor type
+ PIR occupied to unoccupied delay
+ PIR unoccupied to occupied delay
+ PIR unoccupied to occupied threshold
+ ultrasonic occupied to unoccupied delay
+ ultrasonic unoccupied to occupied delay
+ ultrasonic unoccupied to occupied threshold
+
+
+ Carbon Monoxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of carbon monoxide concentration and reporting concentration measurements.
+ 0x040C
+ CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Carbon Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the carbon diaoxide concentration and reporting concentration measurements.
+ 0x040D
+ CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ethylene Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ethylene concentration and reporting concentration measurements.
+ 0x040E
+ ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ethylene Oxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ethylene Oxide concentration and reporting concentration measurements.
+ 0x040F
+ ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Hydrogen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Hydrogen concentration and reporting concentration measurements.
+ 0x0410
+ HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Hydrogen Sulphide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Hydrogen Sulphide concentration and reporting concentration measurements.
+ 0x0411
+ HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Nitric Oxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Nitric Oxide concentration and reporting concentration measurements.
+ 0x0412
+ NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Nitrogen Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Nitrogen Dioxide concentration and reporting concentration measurements.
+ 0x0413
+ NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Oxygen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Oxygen concentration and reporting concentration measurements.
+ 0x0414
+ OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ozone Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ozone concentration and reporting concentration measurements.
+ 0x0415
+ OZONE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sulfur Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sulphur Dioxide concentration and reporting concentration measurements.
+ 0x0416
+ SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Dissolved Oxygen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Dissolved Oxygen concentration and reporting concentration measurements.
+ 0x0417
+ DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromate Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromate concentration, and reporting concentration measurements.
+ 0x0418
+ BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chloramines Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chloramines concentration and reporting concentration measurements.
+ 0x0419
+ CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chlorine Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chlorine concentration and reporting concentration measurements.
+ 0x041A
+ CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Fecal coliform and E. Coli Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Fecal coliform and E. Coli concentration and reporting concentration measurements.
+ 0x041B
+ FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Fluoride Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Fluoride concentration and reporting concentration measurements.
+ 0x041C
+ FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Haloacetic Acids Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Haloacetic Acids concentration and reporting concentration measurements.
+ 0x041D
+ HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Total Trihalomethanes Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Total Trihalomethanes concentration and reporting concentration measurements.
+ 0x041E
+ TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Total Coliform Bacteria Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Total Coliform Bacteria concentration and reporting concentration measurements.
+ 0x041F
+ TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Turbidity Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Turbidity concentration and reporting concentration measurements.
+ 0x0420
+ TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Copper Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Copper concentration and reporting concentration measurements.
+ 0x0421
+ COPPER_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Lead Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Lead concentration and reporting concentration measurements.
+ 0x0422
+ LEAD_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Manganese Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Manganese concentration and reporting concentration measurements.
+ 0x0423
+ MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sulfate Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sulfate concentration and reporting concentration measurements.
+ 0x0424
+ SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromodichloromethane Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromodichloromethane concentration and reporting concentration measurements.
+ 0x0425
+ BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromoform Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromoform concentration and reporting concentration measurements.
+ 0x0426
+ BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chlorodibromomethane Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chlorodibromomethane concentration and reporting concentration measurements.
+ 0x0427
+ CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chloroform Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chloroform concentration and reporting concentration measurements.
+ 0x0428
+ CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sodium Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sodium concentration and reporting concentration measurements.
+ 0x0429
+ SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ IAS Zone
+ Security & Safety
+ Attributes and commands for IAS security zone devices.
+ 0x0500
+ IAS_ZONE_CLUSTER
+ true
+ true
+ zone state
+ zone type
+ zone status
+ IAS CIE address
+ Zone ID
+ Number of Zone Sensitivity Levels Supported
+ Current Zone Sensitivity Level
+
+
+ Command description for zoneEnrollResponse
+
+
+
+
+
+
+ Used to tell the IAS Zone server to commence normal operation mode
+
+
+
+
+ Certain IAS Zone servers may have operational configurations that could be configured OTA or locally on the device. This command enables them to be remotely placed into a test mode so that the user or installer may configure their field of view, sensitivity, and other operational parameters.
+
+
+
+
+
+
+ Command description for zoneStatusChangeNotification
+
+
+
+
+
+
+
+
+ Command description for zoneEnrollRequest
+
+
+
+
+
+
+ Confirms that the IAS Zone server has commenced normal operation mode.
+
+
+
+
+ Confirms that the IAS Zone server has commenced test mode and that the IAS Zone client should treat any Zone Status Change Notification commands received from the sending IAS Zone server as being in response to test events.
+
+
+
+
+ IAS ACE
+ Security & Safety
+ Attributes and commands for IAS Ancillary Control Equipment.
+ 0x0501
+ IAS_ACE_CLUSTER
+ true
+ true
+
+
+ Command description for Arm
+
+
+
+
+
+
+
+ Command description for Bypass
+
+
+
+
+
+
+
+ Command description for Emergency
+
+
+
+
+ Command description for Fire
+
+
+
+
+ Command description for Panic
+
+
+
+
+ Command description for GetZoneIdMap
+
+
+
+
+ Command description for GetZoneInformation
+
+
+
+
+
+ Used by the ACE client to request an update to the status of the ACE server
+
+
+
+
+ Used by the ACE client to retrieve the bypassed zones
+
+
+
+
+ Used by the ACE client to request an update to the zone status of the ACE server
+
+
+
+
+
+
+
+
+ Command description for ArmResponse
+
+
+
+
+
+ Command description for GetZoneIdMapResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for GetZoneInformationResponse
+
+
+
+
+
+
+
+
+ This command updates ACE clients in the system of changes to zone status recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+
+ This command updates ACE clients in the system of changes to panel status recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+
+ Command updates requesting IAS ACE clients in the system of changes to the security panel status recorded by the ACE server.
+
+
+
+
+
+
+
+
+ Sets the list of bypassed zones on the IAS ACE client
+
+
+
+
+
+
+ Provides the response of the security panel to the request from the IAS ACE client to bypass zones via a Bypass command.
+
+
+
+
+
+
+ This command updates requesting IAS ACE clients in the system of changes to the IAS Zone server statuses recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+ IAS WD
+ Security & Safety
+ Attributes and commands for IAS Warning Devices.
+ 0x0502
+ IAS_WD_CLUSTER
+ true
+ true
+ max duration
+
+
+ Command description for StartWarning
+
+
+
+
+
+
+
+
+ Command description for Squawk
+
+
+
+
+
+ Door Lock
+ Closures
+ Provides an interface into a generic way to secure a door.
+ 0x0101
+ DOOR_LOCK_CLUSTER
+ true
+ true
+ lock state
+ lock type
+ actuator enabled
+ door state
+ door open events
+ door closed events
+ open period
+ num lock records supported
+ num total users supported
+ num PIN users supported
+ num RFID users supported
+ num weekday schedules supported per user
+ num yearday schedules supported per user
+ num holiday schedules supported per user
+ max pin length
+ min pin length
+ max rfid code length
+ min rfid code length
+ enable logging
+ language
+ led settings
+ auto relock time
+ sound volume
+ operating mode
+ supported operating modes
+ default configuration register
+ enable local programming
+ enable one touch locking
+ enable inside status led
+ enable privacy mode button
+ wrong code entry limit
+ user code temporary disable time
+ send pin over the air
+ require pin for rf operation
+ zigbee security level
+ alarm mask
+ keypad operation event mask
+ RF operation event mask
+ manual operation event mask
+ rfid operation event mask
+ keypad programming event mask
+ rf programming event mask
+ rfid programming event mask
+
+
+ Locks the door
+
+
+
+
+
+ Unlocks the door
+
+
+
+
+
+ Toggles the door lock from its current state to the opposite state locked or unlocked.
+
+
+
+
+
+ Unlock the door with a timeout. When the timeout expires, the door will automatically re-lock.
+
+
+
+
+
+
+ Retrieve a log record at a specified index.
+
+
+
+
+
+ Set the PIN for a specified user id.
+
+
+
+
+
+
+
+
+ Retrieve PIN information for a user with a specific user ID.
+
+
+
+
+
+ Clear the PIN for a user with a specific user ID
+
+
+
+
+
+ Clear all PIN codes on the lock for all users.
+
+
+
+
+ Set the status value for a specified user ID.
+
+
+
+
+
+
+ Retrieve the status byte for a specific user.
+
+
+
+
+
+ Set the schedule of days during the week that the associated user based on the user ID will have access to the lock and will be able to operate it.
+
+
+
+
+
+
+
+
+
+
+
+ Retrieve a weekday schedule for doorlock user activation for a specific schedule id and user id.
+
+
+
+
+
+
+ Clear a weekday schedule for doorlock user activation for a specific schedule id and user id.
+
+
+
+
+
+
+ Set a door lock user id activation schedule according to a specific absolute local start and end time
+
+
+
+
+
+
+
+
+ Retrieve a yearday schedule for a specific scheduleId and userId
+
+
+
+
+
+
+ Clear a yearday schedule for a specific scheduleId and userId
+
+
+
+
+
+
+ Set the holiday schedule for a specific user
+
+
+
+
+
+
+
+
+ Retrieve a holiday schedule for a specific scheduleId
+
+
+
+
+
+ Clear a holiday schedule for a specific scheduleId
+
+
+
+
+
+ Set the type value for a user based on user ID.
+
+
+
+
+
+
+ Retrieve the type for a specific user based on the user ID.
+
+
+
+
+
+ Set the PIN for a specified user id.
+
+
+
+
+
+
+
+
+ Retrieve RFID ID information for a user with a specific user ID.
+
+
+
+
+
+ Clear the RFID ID for a user with a specific user ID
+
+
+
+
+
+ Clear all RFID ID codes on the lock for all users.
+
+
+
+
+ Indicates lock success or failure
+
+
+
+
+
+ Indicates unlock success or failure
+
+
+
+
+
+ Response provided to the toggle command, indicates whether the toggle was successful or not.
+
+
+
+
+
+ Response provided to unlock with specific timeout. This command indicates whether the unlock command was successful or not.
+
+
+
+
+
+ Returns the specific log record requested.
+
+
+
+
+
+
+
+
+
+
+
+ Indicates whether the setting of the PIN was successful or not.
+
+
+
+
+
+ Returns the PIN requested according to the user ID passed.
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the PIN was cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the PINs were cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the user status was set or not.
+
+
+
+
+
+ Returns the user status.
+
+
+
+
+
+
+ Returns the status of setting the weekday schedule
+
+
+
+
+
+ Returns the weekday schedule requested.
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the status of clearing the weekday schedule
+
+
+
+
+
+ Returns success or failure depending on whether the yearday schedule was set or not.
+
+
+
+
+
+ Returns the yearday schedule requested
+
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the yearday schedule was removed or not.
+
+
+
+
+
+ Returns success or failure depending on whether the holiday schedule was set or not.
+
+
+
+
+
+ Returns the holiday schedule requested
+
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the holiday schedule was removed or not.
+
+
+
+
+
+ returns success or failure depending on whether the user type was set or not.
+
+
+
+
+
+ Returns the user type for the user ID requested.
+
+
+
+
+
+
+ Indicates whether the setting of the RFID ID was successful or not.
+
+
+
+
+
+ Returns the RFID ID requested according to the user ID passed.
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the RFID ID was cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the RFID IDs were cleared or not.
+
+
+
+
+
+ Indicates that an operation event has taken place. Includes the associated event information.
+
+
+
+
+
+
+
+
+
+
+ Indicates that a programming event has taken place. Includes the associated programming event information.
+
+
+
+
+
+
+
+
+
+
+
+
+ Window Covering
+ Closures
+ Provides an interface for controlling and adjusting automatic window coverings.
+ 0x0102
+ WINDOW_COVERING_CLUSTER
+ true
+ true
+ window covering type
+ physical closed limit - lift
+ physical closed limit - tilt
+ current position - lift
+ current position - tilt
+ number of actuations - lift
+ number of actuations - tilt
+ config status
+ current position lift percentage
+ current position tilt percentage
+ installed open limit - lift
+ installed closed limit - lift
+ installed open limit - tilt
+ installed closed limit - tilt
+ velocity - lift
+ acceleration time - lift
+ deceleration time - lift
+ mode
+ intermediate setpoints - lift
+ intermediate setpoints - tilt
+
+
+ Moves window covering to InstalledOpenLimit - Lift and InstalledOpenLimit - Tilt
+
+
+
+
+ Moves window covering to InstalledClosedLimit - Lift and InstalledCloseLimit - Tilt
+
+
+
+
+ Stop any adjusting of window covering
+
+
+
+
+ Goto lift value specified
+
+
+
+
+
+ Goto lift percentage specified
+
+
+
+
+
+ Goto tilt value specified
+
+
+
+
+
+ Goto tilt percentage specified
+
+
+
+
+
+ Barrier Control
+ Closures
+ This cluster provides control of a barrier (garage door).
+ 0x0103
+ BARRIER_CONTROL_CLUSTER
+ true
+ true
+ barrier moving state
+ barrier safety status
+ barrier capabilities
+ barrier open events
+ barrier close events
+ barrier command open events
+ barrier command close events
+ barrier open period
+ barrier close period
+ barrier position
+
+
+ Command to instruct a barrier to go to a percent open state.
+
+
+
+
+
+ Command that instructs the barrier to stop moving.
+
+
+
+
+ Appliance Control
+ General
+ This cluster provides an interface to remotely control and to program household appliances.
+ 0x001B
+ APPLIANCE_CONTROL_CLUSTER
+ true
+ true
+ start time
+ finish time
+ remaining time
+
+
+ This basic message is used to remotely control and to program household appliances.
+
+
+
+
+
+ This basic message is used to retrieve Household Appliances status.
+
+
+
+
+ This basic message is used to set appliance functions, i.e. information regarding the execution of an appliance cycle. Condition parameters such as start time or finish time information could be provided through this command.
+
+
+
+
+
+
+
+ This command shall be used to resume the normal behavior of a household appliance being in pause mode after receiving a Overload Pause command.
+
+
+
+
+ This command shall be used to pause the household appliance as a consequence of an imminent overload event.
+
+
+
+
+ This basic message is used to send warnings the household appliance as a consequence of a possible overload event, or the notification of the end of the warning state.
+
+
+
+
+
+ This command shall be used to return household appliance status, according to Appliance Status Values and Remote Enable Flags Values.
+
+
+
+
+
+
+
+
+ This command shall be used to return household appliance status, automatically when appliance status changes.
+
+
+
+
+
+
+
+
+ Power Profile
+ General
+ This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side).
+ 0x001A
+ POWER_PROFILE_CLUSTER
+ true
+ true
+ total profile num
+ multiple scheduling
+ energy formatting
+ energy remote
+ schedule mode
+
+
+ The PowerProfileRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the Power Profile of a server device.
+
+
+
+
+
+ The PowerProfileStateRequest Command is generated in order to retrieve the identifiers of current Power Profiles.
+
+
+
+
+ The GetPowerProfilePriceResponse command allows a device (client) to communicate the cost associated to the selected Power Profile to another device (server) requesting it.
+
+
+
+
+
+
+
+
+ The GetOverallSchedulePriceResponse command allows a device (client) to communicate the overall cost associated to all Power Profiles scheduled to another device (server) requesting it.
+
+
+
+
+
+
+
+ The EnergyPhasesScheduleNotification Command is generated by a device supporting the client side of the Power Profile cluster in order to schedule the start of the selected Power Profile and its phases.
+
+
+
+
+
+
+
+ This command is generated by the client side of Power Profile cluster as a reply to the EnergyPhasesScheduleRequest command.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the constraints -if set- of Power Profile of a client device, in order to set the proper boundaries for the scheduling when calculating the schedules.
+
+
+
+
+
+ The EnergyPhasesScheduleStateRequest Command is generated by a device supporting the client side of the Power Profile cluster to check the states of the scheduling of a power profile, which is supported in the device implementing the server side of Power Profile cluster.
+
+
+
+
+
+ The Get Power Profile Price Extended Response command allows a device (client) to communicate the cost associated to all Power Profiles scheduled to another device (server) requesting it according to the specific options contained in the Get Power Profile Price Extended Response.
+
+
+
+
+
+
+
+
+ The PowerProfileNotification Command is generated by a device supporting the server side of the Power Profile cluster in order to send the information of the specific parameters (such as Peak power and others) belonging to each phase.
+
+
+
+
+
+
+
+
+ This command is generated by the server side of Power Profile cluster as a reply to the PowerProfileRequest command.
+
+
+
+
+
+
+
+
+ The PowerProfileStateResponse command allows a device (server) to communicate its current Power Profile(s) to another device (client) that previously requested them.
+
+
+
+
+
+
+ The GetPowerProfilePrice Command is generated by the server (e.g. White goods) in order to retrieve the cost associated to a specific Power profile.
+
+
+
+
+
+ The PowerProfileStateNotification Command is generated by the server (e.g. White goods) in order to update the state of the power profile and the current energy phase.
+
+
+
+
+
+
+ The GetOverallSchedulePrice Command is generated by the server (e.g. White goods) in order to retrieve the overall cost associated to all the Power Profiles scheduled by the scheduler (the device supporting the Power Profile cluster client side) for the next 24 hours.
+
+
+
+
+ The EnergyPhasesScheduleRequest Command is generated by the server (e.g. White goods) in order to retrieve from the scheduler (e.g. Home Gateway) the schedule (if available) associated to the specific Power Profile carried in the payload.
+
+
+
+
+
+ The EnergyPhasesScheduleStateResponse Command is generated by the server (e.g. White goods) in order to reply to a EnergyPhasesScheduleStateRequest command about the scheduling states that are set in the server side.
+
+
+
+
+
+
+
+ The EnergyPhasesScheduleStateNotification Command is generated by the server (e.g. White goods) in order to notify (un-solicited command) a client side about the scheduling states that are set in the server side.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsNotification Command is generated by a device supporting the server side of the Power Profile cluster to notify the client side of this cluster about the imposed constraints and let the scheduler (i.e. the entity supporting the Power Profile cluster client side) to set the proper boundaries for the scheduling.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsResponse Command is generated by a device supporting the server side of the Power Profile cluster to reply to a client side of this cluster which sent a PowerProfileScheduleConstraintsRequest.
+
+
+
+
+
+
+
+ The Get Power Profile Price Extended command is generated by the server (e.g., White Goods) in order to retrieve the cost associated to a specific Power profile considering specific conditions described in the option field (e.g., a specific time).
+
+
+
+
+
+
+
+ Poll Control
+ General
+ This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent.
+ 0x0020
+ POLL_CONTROL_CLUSTER
+ true
+ true
+ check-in interval
+ long poll interval
+ short poll interval
+ fast poll timeout
+ check in interval min
+ long poll interval min
+ fast poll timeout max
+
+
+ The Poll Control Cluster server sends out a Check-in command to the devices to which it is paired based on the server's Check-in Interval attribute.
+
+
+
+
+ The Check-in Response is sent in response to the receipt of a Check-in command.
+
+
+
+
+
+
+ The Fast Poll Stop command is used to stop the fast poll mode initiated by the Check-in response.
+
+
+
+
+ The Set Long Poll Interval command is used to set the read only Long Poll Interval Attribute.
+
+
+
+
+
+ The Set Short Poll Interval command is used to set the read only Short Poll Interval Attribute.
+
+
+
+
+
+ Appliance Identification
+ Home Automation
+ Attributes and commands for determining basic information about a device and setting user device information.
+ 0x0B00
+ APPLIANCE_IDENTIFICATION_CLUSTER
+ true
+ true
+ basic identification
+ company name
+ company id
+ brand name
+ brand id
+ model
+ part number
+ product revision
+ software revision
+ product type name
+ product type id
+ ceced specification version
+
+
+
+ Meter Identification
+ Home Automation
+ This cluster provides Attributes and commands for determining advanced information about utility metering device.
+ 0x0B01
+ METER_IDENTIFICATION_CLUSTER
+ true
+ true
+ company name
+ meter type id
+ data quality id
+ customer name
+ model
+ part number
+ product revision
+ software revision
+ utility name
+ pod
+ available power
+ power threshold
+
+
+ Appliance Events and Alert
+ Home Automation
+ Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning.
+ 0x0B02
+ APPLIANCE_EVENTS_AND_ALERT_CLUSTER
+ true
+ true
+
+
+ This basic message is used to retrieve Household Appliance current alerts.
+
+
+
+
+ This message is used to return household appliance current alerts.
+
+
+
+
+
+
+ This message is used to notify the current modification of warning and/or fault conditions.
+
+
+
+
+
+
+ This message is used to notify an event occurred during the normal working of the appliance.
+
+
+
+
+
+
+ Appliance Statistics
+ Home Automation
+
+ This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used.
+
+ 0x0B03
+ APPLIANCE_STATISTICS_CLUSTER
+ true
+ true
+ log max size
+ log queue max size
+
+
+ The Appliance Statistics Cluster server occasionally sends out a Log Notification command to the devices to which it needs to log information related to statistics (e.g., home gateways) which implement the client side of Appliance Statistics Cluster.
+
+
+
+
+
+
+
+
+ The Appliance Statistics Cluster server sends out a Log Response command to respond to a Log Request command generated by the client side of the Appliance Statistics cluster.
+
+
+
+
+
+
+
+
+ The Log Queue Response command is generated as a response to a LogQueueRequest command in order to notify the client side of the Appliance statistics cluster about the logs stored in the server side (queue) that can be retrieved by the client side of this cluster through a LogRequest command.
+
+
+
+
+
+
+ The Appliance Statistics Cluster server sends out a Statistic Available command to notify the client side of the Appliance Statistics cluster that there are statistics that can be retrieved by using the Log Request command.
+
+
+
+
+
+
+ The Log request command is sent from a device supporting the client side of the Appliance Statistics cluster (e.g., Home Gateway) to retrieve the log from the device supporting the server side (e.g., appliance).
+
+
+
+
+
+ The Log Queue Request command is send from a device supporting the client side of the Appliance Statistics cluster (e.g. Home Gateway) to retrieve the information about the logs inserted in the queue, from the device supporting the server side (e.g. appliance).
+
+
+
+
+ Electrical Measurement
+ Home Automation
+ Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster..
+ 0x0B04
+ ELECTRICAL_MEASUREMENT_CLUSTER
+ true
+ true
+ measurement type
+ dc voltage
+ dc voltage min
+ dc voltage max
+ dc current
+ dc current min
+ dc current max
+ dc power
+ dc power min
+ dc power max
+ dc voltage multiplier
+ dc voltage divisor
+ dc current multiplier
+ dc current divisor
+ dc power multiplier
+ dc power divisor
+ ac frequency
+ ac frequency min
+ ac frequency max
+ neutral current
+ total active power
+ total reactive power
+ total apparent power
+ measured 1st harmonic current
+ measured 3rd harmonic current
+ measured 5th harmonic current
+ measured 7th harmonic current
+ measured 9th harmonic current
+ measured 11th harmonic current
+ measured phase 1st harmonic current
+ measured phase 3rd harmonic current
+ measured phase 5th harmonic current
+ measured phase 7th harmonic current
+ measured phase 9th harmonic current
+ measured phase 11th harmonic current
+ ac frequency multiplier
+ ac frequency divisor
+ power multiplier
+ power divisor
+ harmonic current multiplier
+ phase harmonic current multiplier
+ instantaneous voltage
+ instantaneous line current
+ instantaneous active current
+ instantaneous reactive current
+ instantaneous power
+ rms voltage
+ rms voltage min
+ rms voltage max
+ rms current
+ rms current min
+ rms current max
+ active power
+ active power min
+ active power max
+ reactive power
+ apparent power
+ power factor
+ average rms voltage measurement period
+ average rms under voltage counter
+ rms extreme over voltage period
+ rms extreme under voltage period
+ rms voltage sag period
+ rms voltage swell period
+ ac voltage multiplier
+ ac voltage divisor
+ ac current multiplier
+ ac current divisor
+ ac power multiplier
+ ac power divisor
+ overload alarms mask
+ voltage overload
+ current overload
+ ac overload alarms mask
+ ac voltage overload
+ ac current overload
+ ac active power overload
+ ac reactive power overload
+ average rms over voltage
+ average rms under voltage
+ rms extreme over voltage
+ rms extreme under voltage
+ rms voltage sag
+ rms voltage swell
+ line current phase b
+ active current phase b
+ reactive current phase b
+ rms voltage phase b
+ rms voltage min phase b
+ rms voltage max phase b
+ rms current phase b
+ rms current min phase b
+ rms current max phase b
+ active power phase b
+ active power min phase b
+ active power max phase b
+ reactive power phase b
+ apparent power phase b
+ power factor phase b
+ average rms voltage measurement period phase b
+ average rms over voltage counter phase b
+ average rms under voltage counter phase b
+ rms extreme over voltage period phase b
+ rms extreme under voltage period phase b
+ rms voltage sag period phase b
+ rms voltage swell period phase b
+ line current phase c
+ active current phase c
+ reactive current phase c
+ rms voltage phase c
+ rms voltage min phase c
+ rms voltage max phase c
+ rms current phase b
+ rms current min phase c
+ rms current max phase c
+ active power phase c
+ active power min phase c
+ active power max phase c
+ reactive power phase c
+ apparent power phase c
+ power factor phase c
+ average rms voltage measurement period phase c
+ average rms over voltage counter phase c
+ average rms under voltage counter phase c
+ rms extreme over voltage period phase c
+ rms extreme under voltage period phase c
+ rms voltage sag period phase c
+ rms voltage swell period phase c
+
+
+ A function which returns the power profiling information requested in the GetProfileInfo command. The power profiling information consists of a list of attributes which are profiled along with the period used to profile them.
+
+
+
+
+
+
+
+
+ A function which returns the electricity measurement profile. The electricity measurement profile includes information regarding the amount of time used to capture data related to the flow of electricity as well as the intervals thes
+
+
+
+
+
+
+
+
+
+
+ A function which retrieves the power profiling information from the electrical measurement server.
+
+
+
+
+ A function which retrieves an electricity measurement profile from the electricity measurement server for a specific attribute Id requested.
+
+
+
+
+
+
+
+ Diagnostics
+ Home Automation
+ Attributes related to the gathering of diagnostic information from a stack.
+ 0x0B05
+ DIAGNOSTICS_CLUSTER
+ true
+ true
+ number of resets
+ persistent memory writes
+ mac rx broadcast
+ mac tx broadcast
+ mac rx unicast
+ mac tx unicast
+ mac tx unicast retry
+ mac tx unicast fail
+ aps rx broadcast
+ aps tx broadcast
+ aps rx unicast
+ aps unicast success
+ aps tx unicast retries
+ aps tx unicast failures
+ route discovery initiated
+ neighbor added
+ neighbor moved
+ neighbor stale
+ join indication
+ child moved
+ network frame control failure
+ aps frame control failure
+ aps unauthorized key
+ network decryption failure
+ aps decryption failure
+ packet buffer allocation failures
+ relayed unicasts
+ phy to mac queue limit reached
+ packet validate drop count
+ average mac retry per aps message sent
+ last message lqi
+ last message rssi
+
+
diff --git a/zcl/ha.xml b/zcl/ha.xml
new file mode 100644
index 0000000000..f14a45d854
--- /dev/null
+++ b/zcl/ha.xml
@@ -0,0 +1,2475 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Shade Configuration
+ Closures
+ Attributes and commands for configuring a shade.
+ 0x0100
+ SHADE_CONFIG_CLUSTER
+ true
+ true
+ physical closed limit
+
+ motor step size
+
+ status
+
+ closed limit
+
+ mode
+
+
+
+ Pump Configuration and Control
+ HVAC
+ An interface for configuring and controlling pumps.
+ 0x0200
+ PUMP_CONFIG_CONTROL_CLUSTER
+ true
+ true
+ max pressure
+ max speed
+ max flow
+ min const pressure
+ max const pressure
+ min comp pressure
+ max comp pressure
+ min const speed
+ max const speed
+ min const flow
+ max const flow
+ min const temp
+ max const temp
+ pump status
+ effective operation mode
+ effective control mode
+ capacity
+ speed
+ lifetime running hours
+ power
+ lifetime energy consumed
+ operation mode
+ control mode
+ alarm mask
+
+
+
+ Thermostat
+ HVAC
+ An interface for configuring and controlling the functionality of a thermostat.
+ 0x0201
+ THERMOSTAT_CLUSTER
+ true
+ true
+ local temperature
+ outdoor temperature
+ occupancy
+
+ abs min heat setpoint limit
+ abs max heat setpoint limit
+ abs min cool setpoint limit
+ abs max cool setpoint limit
+ pi cooling demand
+ pi heating demand
+ HVAC system type configuration
+ local temperature calibration
+ occupied cooling setpoint
+ occupied heating setpoint
+ unoccupied cooling setpoint
+ unoccupied heating setpoint
+ min heat setpoint limit
+ max heat setpoint limit
+ min cool setpoint limit
+ max cool setpoint limit
+ min setpoint dead band
+ remote sensing
+ control sequence of operation
+ system mode
+ alarm mask
+
+ thermostat running mode
+ start of week
+ number of weekly transitions
+ number of daily transitions
+ temperature setpoint hold
+ temperature setpoint hold duration
+ thermostat programming operation mode
+ hvac relay state
+ setpoint change source
+ setpoint change amount
+ setpoint change source timestamp
+ ac type
+ ac capacity
+ ac refrigerant type
+ ac compressor
+ ac error code
+ ac louver position
+ ac coil temperature
+ ac capacity format
+
+
+ Command description for SetpointRaiseLower
+
+
+
+
+
+
+ Command description for SetWeeklySchedule
+
+
+
+
+
+
+
+
+ Command description for GetWeeklySchedule
+
+
+
+
+
+
+ The Clear Weekly Schedule command is used to clear the weekly schedule.
+
+
+
+
+ The Get Relay Status Log command is used to query the thermostat internal relay status log.
+
+
+
+
+ The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command.
+
+
+
+
+
+
+
+
+ This command is sent from the thermostat cluster server in response to the Get Relay Status Log.
+
+
+
+
+
+
+
+
+
+
+ Fan Control
+ HVAC
+ An interface for controlling a fan in a heating/cooling system.
+ 0x0202
+ FAN_CONTROL_CLUSTER
+ true
+ true
+ fan mode
+
+ fan mode sequence
+
+
+
+ Dehumidification Control
+ HVAC
+ An interface for controlling dehumidification.
+ 0x0203
+ DEHUMID_CONTROL_CLUSTER
+ true
+ true
+ relative humidity
+ dehumidification cooling
+ RH dehumidification setpoint
+ relative humidity mode
+ dehumidification lockout
+ dehumidification hysteresis
+ dehumidification max cool
+ relative humidity display
+
+
+ Thermostat User Interface Configuration
+ HVAC
+ An interface for configuring the user interface of a thermostat (which may be remote from the thermostat).
+ 0x0204
+ THERMOSTAT_UI_CONFIG_CLUSTER
+ true
+ true
+ temperature display mode
+ keypad lockout
+ schedule programming visibility
+
+
+ Color Control
+ Lighting
+ Attributes and commands for controlling the color properties of a color-capable light.
+ 0x0300
+ COLOR_CONTROL_CLUSTER
+ true
+ true
+ current hue
+
+ current saturation
+
+ remaining time
+
+ current x
+
+ current y
+
+ drift compensation
+
+ compensation text
+
+ color temperature
+
+ color mode
+
+ color control options
+
+ number of primaries
+
+ primary 1 x
+
+ primary 1 y
+
+ primary 1 intensity
+
+ primary 2 x
+
+ primary 2 y
+
+ primary 2 intensity
+
+ primary 3 x
+
+ primary 3 y
+
+ primary 3 intensity
+
+ primary 4 x
+
+ primary 4 y
+
+ primary 4 intensity
+
+ primary 5 x
+
+ primary 5 y
+
+ primary 5 intensity
+
+ primary 6 x
+
+ primary 6 y
+
+ primary 6 intensity
+
+ white point x
+
+ white point y
+
+ color point r x
+
+ color point r y
+
+ color point r intensity
+
+ color point g x
+
+ color point g y
+
+ color point g intensity
+
+ color point b x
+
+ color point b y
+
+ color point b intensity
+
+ couple color temp to level min-mireds
+ start up color temperature mireds
+
+
+ Move to specified hue.
+
+
+
+
+
+
+
+
+
+ Move hue up or down at specified rate.
+
+
+
+
+
+
+
+
+ Step hue up or down by specified size at specified rate.
+
+
+
+
+
+
+
+
+
+ Move to specified saturation.
+
+
+
+
+
+
+
+
+ Move saturation up or down at specified rate.
+
+
+
+
+
+
+
+
+ Step saturation up or down by specified size at specified rate.
+
+
+
+
+
+
+
+
+
+ Move to hue and saturation.
+
+
+
+
+
+
+
+
+
+ Move to specified color.
+
+
+
+
+
+
+
+
+
+ Moves the color.
+
+
+
+
+
+
+
+
+ Steps the lighting to a specific color.
+
+
+
+
+
+
+
+
+
+ Move to a specific color temperature.
+
+
+
+
+
+
+
+
+ Ballast Configuration
+ Lighting
+ Attributes and commands for configuring a lighting ballast.
+ 0x0301
+ BALLAST_CONFIGURATION_CLUSTER
+ true
+ true
+ physical min level
+ physical max level
+ ballast status
+ min level
+ max level
+ power on level
+ power on fade time
+ intrinsic ballast factor
+ ballast factor adjustment
+ lamp quality
+ lamp type
+ lamp manufacturer
+ lamp rated hours
+ lamp burn hours
+ lamp alarm mode
+ lamp burn hours trip point
+
+
+ Illuminance Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements.
+ 0x0400
+ ILLUM_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+ light sensor type
+
+
+
+ Illuminance Level Sensing
+ Measurement & Sensing
+ Attributes and commands for configuring the sensing of illuminance levels, and reporting whether illuminance is above, below, or on target.
+ 0x0401
+ ILLUM_LEVEL_SENSING_CLUSTER
+ true
+ true
+ level status
+ light sensor type
+
+ illuminance level target
+
+
+ Temperature Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of temperature, and reporting temperature measurements.
+ 0x0402
+ TEMP_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Pressure Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of pressure, and reporting pressure measurements.
+ 0x0403
+ PRESSURE_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+ scaled value
+ min scaled value
+ max scaled value
+ scaled tolerance
+ scale
+
+
+ Flow Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of flow, and reporting flow rates.
+ 0x0404
+ FLOW_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Relative Humidity Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of relative humidity, and reporting relative humidity measurements.
+ 0x0405
+ RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Occupancy Sensing
+ Measurement & Sensing
+ Attributes and commands for configuring occupancy sensing, and reporting occupancy status.
+ 0x0406
+ OCCUPANCY_SENSING_CLUSTER
+ true
+ true
+ occupancy
+ occupancy sensor type
+ occupancy sensor type bitmap
+ PIR occupied to unoccupied delay
+ PIR unoccupied to occupied delay
+ PIR unoccupied to occupied threshold
+ ultrasonic occupied to unoccupied delay
+ ultrasonic unoccupied to occupied delay
+ ultrasonic unoccupied to occupied threshold
+ physical contact occupied to unoccupied delay
+ physical contact unoccupied to occupied delay
+ physical contact unoccupied to occupied threshold
+
+
+ Carbon Monoxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the measurement of carbon monoxide concentration and reporting concentration measurements.
+ 0x040C
+ CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Carbon Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the carbon diaoxide concentration and reporting concentration measurements.
+ 0x040D
+ CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ethylene Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ethylene concentration and reporting concentration measurements.
+ 0x040E
+ ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ethylene Oxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ethylene Oxide concentration and reporting concentration measurements.
+ 0x040F
+ ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Hydrogen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Hydrogen concentration and reporting concentration measurements.
+ 0x0410
+ HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Hydrogen Sulphide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Hydrogen Sulphide concentration and reporting concentration measurements.
+ 0x0411
+ HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Nitric Oxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Nitric Oxide concentration and reporting concentration measurements.
+ 0x0412
+ NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Nitrogen Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Nitrogen Dioxide concentration and reporting concentration measurements.
+ 0x0413
+ NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Oxygen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Oxygen concentration and reporting concentration measurements.
+ 0x0414
+ OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Ozone Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Ozone concentration and reporting concentration measurements.
+ 0x0415
+ OZONE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sulfur Dioxide Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sulphur Dioxide concentration and reporting concentration measurements.
+ 0x0416
+ SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Dissolved Oxygen Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Dissolved Oxygen concentration and reporting concentration measurements.
+ 0x0417
+ DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromate Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromate concentration, and reporting concentration measurements.
+ 0x0418
+ BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chloramines Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chloramines concentration and reporting concentration measurements.
+ 0x0419
+ CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chlorine Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chlorine concentration and reporting concentration measurements.
+ 0x041A
+ CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Fecal coliform and E. Coli Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Fecal coliform and E. Coli concentration and reporting concentration measurements.
+ 0x041B
+ FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Fluoride Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Fluoride concentration and reporting concentration measurements.
+ 0x041C
+ FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Haloacetic Acids Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Haloacetic Acids concentration and reporting concentration measurements.
+ 0x041D
+ HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Total Trihalomethanes Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Total Trihalomethanes concentration and reporting concentration measurements.
+ 0x041E
+ TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Total Coliform Bacteria Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Total Coliform Bacteria concentration and reporting concentration measurements.
+ 0x041F
+ TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Turbidity Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Turbidity concentration and reporting concentration measurements.
+ 0x0420
+ TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Copper Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Copper concentration and reporting concentration measurements.
+ 0x0421
+ COPPER_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Lead Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Lead concentration and reporting concentration measurements.
+ 0x0422
+ LEAD_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Manganese Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Manganese concentration and reporting concentration measurements.
+ 0x0423
+ MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sulfate Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sulfate concentration and reporting concentration measurements.
+ 0x0424
+ SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromodichloromethane Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromodichloromethane concentration and reporting concentration measurements.
+ 0x0425
+ BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Bromoform Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Bromoform concentration and reporting concentration measurements.
+ 0x0426
+ BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chlorodibromomethane Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chlorodibromomethane concentration and reporting concentration measurements.
+ 0x0427
+ CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Chloroform Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Chloroform concentration and reporting concentration measurements.
+ 0x0428
+ CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ Sodium Concentration Measurement
+ Measurement & Sensing
+ Attributes and commands for configuring the Sodium concentration and reporting concentration measurements.
+ 0x0429
+ SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER
+ true
+ true
+ measured value
+
+ min measured value
+
+ max measured value
+
+ tolerance
+
+
+
+ IAS Zone
+ Security & Safety
+ Attributes and commands for IAS security zone devices.
+ 0x0500
+ IAS_ZONE_CLUSTER
+ true
+ true
+ zone state
+ zone type
+ zone status
+ IAS CIE address
+ Zone ID
+ Number of Zone Sensitivity Levels Supported
+ Current Zone Sensitivity Level
+
+
+ Command description for zoneEnrollResponse
+
+
+
+
+
+
+ Used to tell the IAS Zone server to commence normal operation mode
+
+
+
+
+ Certain IAS Zone servers may have operational configurations that could be configured OTA or locally on the device. This command enables them to be remotely placed into a test mode so that the user or installer may configure their field of view, sensitivity, and other operational parameters.
+
+
+
+
+
+
+ Command description for zoneStatusChangeNotification
+
+
+
+
+
+
+
+
+ Command description for zoneEnrollRequest
+
+
+
+
+
+
+ Confirms that the IAS Zone server has commenced normal operation mode.
+
+
+
+
+ Confirms that the IAS Zone server has commenced test mode and that the IAS Zone client should treat any Zone Status Change Notification commands received from the sending IAS Zone server as being in response to test events.
+
+
+
+
+ IAS ACE
+ Security & Safety
+ Attributes and commands for IAS Ancillary Control Equipment.
+ 0x0501
+ IAS_ACE_CLUSTER
+ true
+ true
+
+
+ Command description for Arm
+
+
+
+
+
+
+
+ Command description for Bypass
+
+
+
+
+
+
+
+ Command description for Emergency
+
+
+
+
+ Command description for Fire
+
+
+
+
+ Command description for Panic
+
+
+
+
+ Command description for GetZoneIdMap
+
+
+
+
+ Command description for GetZoneInformation
+
+
+
+
+
+ Used by the ACE client to request an update to the status of the ACE server
+
+
+
+
+ Used by the ACE client to retrieve the bypassed zones
+
+
+
+
+ Used by the ACE client to request an update to the zone status of the ACE server
+
+
+
+
+
+
+
+
+ Command description for ArmResponse
+
+
+
+
+
+ Command description for GetZoneIdMapResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for GetZoneInformationResponse
+
+
+
+
+
+
+
+
+ This command updates ACE clients in the system of changes to zone status recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+
+ This command updates ACE clients in the system of changes to panel status recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+
+ Command updates requesting IAS ACE clients in the system of changes to the security panel status recorded by the ACE server.
+
+
+
+
+
+
+
+
+ Sets the list of bypassed zones on the IAS ACE client
+
+
+
+
+
+
+ Provides the response of the security panel to the request from the IAS ACE client to bypass zones via a Bypass command.
+
+
+
+
+
+
+ This command updates requesting IAS ACE clients in the system of changes to the IAS Zone server statuses recorded by the ACE server (e.g., IAS CIE device).
+
+
+
+
+
+
+
+ IAS WD
+ Security & Safety
+ Attributes and commands for IAS Warning Devices.
+ 0x0502
+ IAS_WD_CLUSTER
+ true
+ true
+ max duration
+
+
+ Command description for StartWarning
+
+
+
+
+
+
+
+
+ Command description for Squawk
+
+
+
+
+
+ Door Lock
+ Closures
+ Provides an interface into a generic way to secure a door.
+ 0x0101
+ DOOR_LOCK_CLUSTER
+ true
+ true
+ lock state
+ lock type
+ actuator enabled
+ door state
+ door open events
+ door closed events
+ open period
+ num lock records supported
+ num total users supported
+ num PIN users supported
+ num RFID users supported
+ num weekday schedules supported per user
+ num yearday schedules supported per user
+ num holiday schedules supported per user
+ max pin length
+ min pin length
+ max rfid code length
+ min rfid code length
+ enable logging
+ language
+ led settings
+ auto relock time
+ sound volume
+ operating mode
+ supported operating modes
+ default configuration register
+ enable local programming
+ enable one touch locking
+ enable inside status led
+ enable privacy mode button
+ wrong code entry limit
+ user code temporary disable time
+ send pin over the air
+ require pin for rf operation
+ zigbee security level
+ alarm mask
+ keypad operation event mask
+ RF operation event mask
+ manual operation event mask
+ rfid operation event mask
+ keypad programming event mask
+ rf programming event mask
+ rfid programming event mask
+
+
+ Locks the door
+
+
+
+
+
+ Unlocks the door
+
+
+
+
+
+ Toggles the door lock from its current state to the opposite state locked or unlocked.
+
+
+
+
+
+ Unlock the door with a timeout. When the timeout expires, the door will automatically re-lock.
+
+
+
+
+
+
+ Retrieve a log record at a specified index.
+
+
+
+
+
+ Set the PIN for a specified user id.
+
+
+
+
+
+
+
+
+ Retrieve PIN information for a user with a specific user ID.
+
+
+
+
+
+ Clear the PIN for a user with a specific user ID
+
+
+
+
+
+ Clear all PIN codes on the lock for all users.
+
+
+
+
+ Set the status value for a specified user ID.
+
+
+
+
+
+
+ Retrieve the status byte for a specific user.
+
+
+
+
+
+ Set the schedule of days during the week that the associated user based on the user ID will have access to the lock and will be able to operate it.
+
+
+
+
+
+
+
+
+
+
+
+ Retrieve a weekday schedule for doorlock user activation for a specific schedule id and user id.
+
+
+
+
+
+
+ Clear a weekday schedule for doorlock user activation for a specific schedule id and user id.
+
+
+
+
+
+
+ Set a door lock user id activation schedule according to a specific absolute local start and end time
+
+
+
+
+
+
+
+
+ Retrieve a yearday schedule for a specific scheduleId and userId
+
+
+
+
+
+
+ Clear a yearday schedule for a specific scheduleId and userId
+
+
+
+
+
+
+ Set the holiday schedule for a specific user
+
+
+
+
+
+
+
+
+ Retrieve a holiday schedule for a specific scheduleId
+
+
+
+
+
+ Clear a holiday schedule for a specific scheduleId
+
+
+
+
+
+ Set the type value for a user based on user ID.
+
+
+
+
+
+
+ Retrieve the type for a specific user based on the user ID.
+
+
+
+
+
+ Set the PIN for a specified user id.
+
+
+
+
+
+
+
+
+ Retrieve RFID ID information for a user with a specific user ID.
+
+
+
+
+
+ Clear the RFID ID for a user with a specific user ID
+
+
+
+
+
+ Clear all RFID ID codes on the lock for all users.
+
+
+
+
+ Indicates lock success or failure
+
+
+
+
+
+ Indicates unlock success or failure
+
+
+
+
+
+ Response provided to the toggle command, indicates whether the toggle was successful or not.
+
+
+
+
+
+ Response provided to unlock with specific timeout. This command indicates whether the unlock command was successful or not.
+
+
+
+
+
+ Returns the specific log record requested.
+
+
+
+
+
+
+
+
+
+
+
+ Indicates whether the setting of the PIN was successful or not.
+
+
+
+
+
+ Returns the PIN requested according to the user ID passed.
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the PIN was cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the PINs were cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the user status was set or not.
+
+
+
+
+
+ Returns the user status.
+
+
+
+
+
+
+ Returns the status of setting the weekday schedule
+
+
+
+
+
+ Returns the weekday schedule requested.
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the status of clearing the weekday schedule
+
+
+
+
+
+ Returns success or failure depending on whether the yearday schedule was set or not.
+
+
+
+
+
+ Returns the yearday schedule requested
+
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the yearday schedule was removed or not.
+
+
+
+
+
+ Returns success or failure depending on whether the holiday schedule was set or not.
+
+
+
+
+
+ Returns the holiday schedule requested
+
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the holiday schedule was removed or not.
+
+
+
+
+
+ returns success or failure depending on whether the user type was set or not.
+
+
+
+
+
+ Returns the user type for the user ID requested.
+
+
+
+
+
+
+ Indicates whether the setting of the RFID ID was successful or not.
+
+
+
+
+
+ Returns the RFID ID requested according to the user ID passed.
+
+
+
+
+
+
+
+
+ Returns success or failure depending on whether the RFID ID was cleared or not.
+
+
+
+
+
+ Returns success or failure depending on whether the RFID IDs were cleared or not.
+
+
+
+
+
+ Indicates that an operation event has taken place. Includes the associated event information.
+
+
+
+
+
+
+
+
+
+
+ Indicates that a programming event has taken place. Includes the associated programming event information.
+
+
+
+
+
+
+
+
+
+
+
+
+ Window Covering
+ Closures
+ Provides an interface for controlling and adjusting automatic window coverings.
+ 0x0102
+ WINDOW_COVERING_CLUSTER
+ true
+ true
+ window covering type
+ physical closed limit - lift
+ physical closed limit - tilt
+ current position - lift
+ current position - tilt
+ number of actuations - lift
+ number of actuations - tilt
+ config status
+ current position lift percentage
+ current position tilt percentage
+ installed open limit - lift
+ installed closed limit - lift
+ installed open limit - tilt
+ installed closed limit - tilt
+ velocity - lift
+ acceleration time - lift
+ deceleration time - lift
+ mode
+ intermediate setpoints - lift
+ intermediate setpoints - tilt
+
+
+ Moves window covering to InstalledOpenLimit - Lift and InstalledOpenLimit - Tilt
+
+
+
+
+ Moves window covering to InstalledClosedLimit - Lift and InstalledCloseLimit - Tilt
+
+
+
+
+ Stop any adjusting of window covering
+
+
+
+
+ Goto lift value specified
+
+
+
+
+
+ Goto lift percentage specified
+
+
+
+
+
+ Goto tilt value specified
+
+
+
+
+
+ Goto tilt percentage specified
+
+
+
+
+
+ Barrier Control
+ Closures
+ This cluster provides control of a barrier (garage door).
+ 0x0103
+ BARRIER_CONTROL_CLUSTER
+ true
+ true
+ barrier moving state
+ barrier safety status
+ barrier capabilities
+ barrier open events
+ barrier close events
+ barrier command open events
+ barrier command close events
+ barrier open period
+ barrier close period
+ barrier position
+
+
+ Command to instruct a barrier to go to a percent open state.
+
+
+
+
+
+ Command that instructs the barrier to stop moving.
+
+
+
+
+ Appliance Control
+ General
+ This cluster provides an interface to remotely control and to program household appliances.
+ 0x001B
+ APPLIANCE_CONTROL_CLUSTER
+ true
+ true
+ start time
+ finish time
+ remaining time
+
+
+ This basic message is used to remotely control and to program household appliances.
+
+
+
+
+
+ This basic message is used to retrieve Household Appliances status.
+
+
+
+
+ This basic message is used to set appliance functions, i.e. information regarding the execution of an appliance cycle. Condition parameters such as start time or finish time information could be provided through this command.
+
+
+
+
+
+
+
+ This command shall be used to resume the normal behavior of a household appliance being in pause mode after receiving a Overload Pause command.
+
+
+
+
+ This command shall be used to pause the household appliance as a consequence of an imminent overload event.
+
+
+
+
+ This basic message is used to send warnings the household appliance as a consequence of a possible overload event, or the notification of the end of the warning state.
+
+
+
+
+
+ This command shall be used to return household appliance status, according to Appliance Status Values and Remote Enable Flags Values.
+
+
+
+
+
+
+
+
+ This command shall be used to return household appliance status, automatically when appliance status changes.
+
+
+
+
+
+
+
+
+ Power Profile
+ General
+ This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side).
+ 0x001A
+ POWER_PROFILE_CLUSTER
+ true
+ true
+ total profile num
+ multiple scheduling
+ energy formatting
+ energy remote
+ schedule mode
+
+
+ The PowerProfileRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the Power Profile of a server device.
+
+
+
+
+
+ The PowerProfileStateRequest Command is generated in order to retrieve the identifiers of current Power Profiles.
+
+
+
+
+ The GetPowerProfilePriceResponse command allows a device (client) to communicate the cost associated to the selected Power Profile to another device (server) requesting it.
+
+
+
+
+
+
+
+
+ The GetOverallSchedulePriceResponse command allows a device (client) to communicate the overall cost associated to all Power Profiles scheduled to another device (server) requesting it.
+
+
+
+
+
+
+
+ The EnergyPhasesScheduleNotification Command is generated by a device supporting the client side of the Power Profile cluster in order to schedule the start of the selected Power Profile and its phases.
+
+
+
+
+
+
+
+ This command is generated by the client side of Power Profile cluster as a reply to the EnergyPhasesScheduleRequest command.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the constraints -if set- of Power Profile of a client device, in order to set the proper boundaries for the scheduling when calculating the schedules.
+
+
+
+
+
+ The EnergyPhasesScheduleStateRequest Command is generated by a device supporting the client side of the Power Profile cluster to check the states of the scheduling of a power profile, which is supported in the device implementing the server side of Power Profile cluster.
+
+
+
+
+
+ The Get Power Profile Price Extended Response command allows a device (client) to communicate the cost associated to all Power Profiles scheduled to another device (server) requesting it according to the specific options contained in the Get Power Profile Price Extended Response.
+
+
+
+
+
+
+
+
+ The PowerProfileNotification Command is generated by a device supporting the server side of the Power Profile cluster in order to send the information of the specific parameters (such as Peak power and others) belonging to each phase.
+
+
+
+
+
+
+
+
+ This command is generated by the server side of Power Profile cluster as a reply to the PowerProfileRequest command.
+
+
+
+
+
+
+
+
+ The PowerProfileStateResponse command allows a device (server) to communicate its current Power Profile(s) to another device (client) that previously requested them.
+
+
+
+
+
+
+ The GetPowerProfilePrice Command is generated by the server (e.g. White goods) in order to retrieve the cost associated to a specific Power profile.
+
+
+
+
+
+ The PowerProfileStateNotification Command is generated by the server (e.g. White goods) in order to update the state of the power profile and the current energy phase.
+
+
+
+
+
+
+ The GetOverallSchedulePrice Command is generated by the server (e.g. White goods) in order to retrieve the overall cost associated to all the Power Profiles scheduled by the scheduler (the device supporting the Power Profile cluster client side) for the next 24 hours.
+
+
+
+
+ The EnergyPhasesScheduleRequest Command is generated by the server (e.g. White goods) in order to retrieve from the scheduler (e.g. Home Gateway) the schedule (if available) associated to the specific Power Profile carried in the payload.
+
+
+
+
+
+ The EnergyPhasesScheduleStateResponse Command is generated by the server (e.g. White goods) in order to reply to a EnergyPhasesScheduleStateRequest command about the scheduling states that are set in the server side.
+
+
+
+
+
+
+
+ The EnergyPhasesScheduleStateNotification Command is generated by the server (e.g. White goods) in order to notify (un-solicited command) a client side about the scheduling states that are set in the server side.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsNotification Command is generated by a device supporting the server side of the Power Profile cluster to notify the client side of this cluster about the imposed constraints and let the scheduler (i.e. the entity supporting the Power Profile cluster client side) to set the proper boundaries for the scheduling.
+
+
+
+
+
+
+
+ The PowerProfileScheduleConstraintsResponse Command is generated by a device supporting the server side of the Power Profile cluster to reply to a client side of this cluster which sent a PowerProfileScheduleConstraintsRequest.
+
+
+
+
+
+
+
+ The Get Power Profile Price Extended command is generated by the server (e.g., White Goods) in order to retrieve the cost associated to a specific Power profile considering specific conditions described in the option field (e.g., a specific time).
+
+
+
+
+
+
+
+ Poll Control
+ General
+ This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent.
+ 0x0020
+ POLL_CONTROL_CLUSTER
+ true
+ true
+ check-in interval
+ long poll interval
+ short poll interval
+ fast poll timeout
+ check in interval min
+ long poll interval min
+ fast poll timeout max
+
+
+ The Poll Control Cluster server sends out a Check-in command to the devices to which it is paired based on the server's Check-in Interval attribute.
+
+
+
+
+ The Check-in Response is sent in response to the receipt of a Check-in command.
+
+
+
+
+
+
+ The Fast Poll Stop command is used to stop the fast poll mode initiated by the Check-in response.
+
+
+
+
+ The Set Long Poll Interval command is used to set the read only Long Poll Interval Attribute.
+
+
+
+
+
+ The Set Short Poll Interval command is used to set the read only Short Poll Interval Attribute.
+
+
+
+
+
+ Appliance Identification
+ Home Automation
+ Attributes and commands for determining basic information about a device and setting user device information.
+ 0x0B00
+ APPLIANCE_IDENTIFICATION_CLUSTER
+ true
+ true
+ basic identification
+ company name
+ company id
+ brand name
+ brand id
+ model
+ part number
+ product revision
+ software revision
+ product type name
+ product type id
+ ceced specification version
+
+
+
+ Meter Identification
+ Home Automation
+ This cluster provides Attributes and commands for determining advanced information about utility metering device.
+ 0x0B01
+ METER_IDENTIFICATION_CLUSTER
+ true
+ true
+ company name
+ meter type id
+ data quality id
+ customer name
+ model
+ part number
+ product revision
+ software revision
+ utility name
+ pod
+ available power
+ power threshold
+
+
+ Appliance Events and Alert
+ Home Automation
+ Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning.
+ 0x0B02
+ APPLIANCE_EVENTS_AND_ALERT_CLUSTER
+ true
+ true
+
+
+ This basic message is used to retrieve Household Appliance current alerts.
+
+
+
+
+ This message is used to return household appliance current alerts.
+
+
+
+
+
+
+ This message is used to notify the current modification of warning and/or fault conditions.
+
+
+
+
+
+
+ This message is used to notify an event occurred during the normal working of the appliance.
+
+
+
+
+
+
+ Appliance Statistics
+ Home Automation
+
+ This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used.
+
+ 0x0B03
+ APPLIANCE_STATISTICS_CLUSTER
+ true
+ true
+ log max size
+ log queue max size
+
+
+ The Appliance Statistics Cluster server occasionally sends out a Log Notification command to the devices to which it needs to log information related to statistics (e.g., home gateways) which implement the client side of Appliance Statistics Cluster.
+
+
+
+
+
+
+
+
+ The Appliance Statistics Cluster server sends out a Log Response command to respond to a Log Request command generated by the client side of the Appliance Statistics cluster.
+
+
+
+
+
+
+
+
+ The Log Queue Response command is generated as a response to a LogQueueRequest command in order to notify the client side of the Appliance statistics cluster about the logs stored in the server side (queue) that can be retrieved by the client side of this cluster through a LogRequest command.
+
+
+
+
+
+
+ The Appliance Statistics Cluster server sends out a Statistic Available command to notify the client side of the Appliance Statistics cluster that there are statistics that can be retrieved by using the Log Request command.
+
+
+
+
+
+
+ The Log request command is sent from a device supporting the client side of the Appliance Statistics cluster (e.g., Home Gateway) to retrieve the log from the device supporting the server side (e.g., appliance).
+
+
+
+
+
+ The Log Queue Request command is send from a device supporting the client side of the Appliance Statistics cluster (e.g. Home Gateway) to retrieve the information about the logs inserted in the queue, from the device supporting the server side (e.g. appliance).
+
+
+
+
+ Electrical Measurement
+ Home Automation
+ Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster..
+ 0x0B04
+ ELECTRICAL_MEASUREMENT_CLUSTER
+ true
+ true
+ measurement type
+ dc voltage
+ dc voltage min
+ dc voltage max
+ dc current
+ dc current min
+ dc current max
+ dc power
+ dc power min
+ dc power max
+ dc voltage multiplier
+ dc voltage divisor
+ dc current multiplier
+ dc current divisor
+ dc power multiplier
+ dc power divisor
+ ac frequency
+ ac frequency min
+ ac frequency max
+ neutral current
+ total active power
+ total reactive power
+ total apparent power
+ measured 1st harmonic current
+ measured 3rd harmonic current
+ measured 5th harmonic current
+ measured 7th harmonic current
+ measured 9th harmonic current
+ measured 11th harmonic current
+ measured phase 1st harmonic current
+ measured phase 3rd harmonic current
+ measured phase 5th harmonic current
+ measured phase 7th harmonic current
+ measured phase 9th harmonic current
+ measured phase 11th harmonic current
+ ac frequency multiplier
+ ac frequency divisor
+ power multiplier
+ power divisor
+ harmonic current multiplier
+ phase harmonic current multiplier
+ instantaneous voltage
+ instantaneous line current
+ instantaneous active current
+ instantaneous reactive current
+ instantaneous power
+ rms voltage
+ rms voltage min
+ rms voltage max
+ rms current
+ rms current min
+ rms current max
+ active power
+ active power min
+ active power max
+ reactive power
+ apparent power
+ power factor
+ average rms voltage measurement period
+ average rms under voltage counter
+ rms extreme over voltage period
+ rms extreme under voltage period
+ rms voltage sag period
+ rms voltage swell period
+ ac voltage multiplier
+ ac voltage divisor
+ ac current multiplier
+ ac current divisor
+ ac power multiplier
+ ac power divisor
+ overload alarms mask
+ voltage overload
+ current overload
+ ac overload alarms mask
+ ac voltage overload
+ ac current overload
+ ac active power overload
+ ac reactive power overload
+ average rms over voltage
+ average rms under voltage
+ rms extreme over voltage
+ rms extreme under voltage
+ rms voltage sag
+ rms voltage swell
+ line current phase b
+ active current phase b
+ reactive current phase b
+ rms voltage phase b
+ rms voltage min phase b
+ rms voltage max phase b
+ rms current phase b
+ rms current min phase b
+ rms current max phase b
+ active power phase b
+ active power min phase b
+ active power max phase b
+ reactive power phase b
+ apparent power phase b
+ power factor phase b
+ average rms voltage measurement period phase b
+ average rms over voltage counter phase b
+ average rms under voltage counter phase b
+ rms extreme over voltage period phase b
+ rms extreme under voltage period phase b
+ rms voltage sag period phase b
+ rms voltage swell period phase b
+ line current phase c
+ active current phase c
+ reactive current phase c
+ rms voltage phase c
+ rms voltage min phase c
+ rms voltage max phase c
+ rms current phase b
+ rms current min phase c
+ rms current max phase c
+ active power phase c
+ active power min phase c
+ active power max phase c
+ reactive power phase c
+ apparent power phase c
+ power factor phase c
+ average rms voltage measurement period phase c
+ average rms over voltage counter phase c
+ average rms under voltage counter phase c
+ rms extreme over voltage period phase c
+ rms extreme under voltage period phase c
+ rms voltage sag period phase c
+ rms voltage swell period phase c
+
+
+ A function which returns the power profiling information requested in the GetProfileInfo command. The power profiling information consists of a list of attributes which are profiled along with the period used to profile them.
+
+
+
+
+
+
+
+
+ A function which returns the electricity measurement profile. The electricity measurement profile includes information regarding the amount of time used to capture data related to the flow of electricity as well as the intervals thes
+
+
+
+
+
+
+
+
+
+
+ A function which retrieves the power profiling information from the electrical measurement server.
+
+
+
+
+ A function which retrieves an electricity measurement profile from the electricity measurement server for a specific attribute Id requested.
+
+
+
+
+
+
+
+ Diagnostics
+ Home Automation
+ Attributes related to the gathering of diagnostic information from a stack.
+ 0x0B05
+ DIAGNOSTICS_CLUSTER
+ true
+ true
+ number of resets
+ persistent memory writes
+ mac rx broadcast
+ mac tx broadcast
+ mac rx unicast
+ mac tx unicast
+ mac tx unicast retry
+ mac tx unicast fail
+ aps rx broadcast
+ aps tx broadcast
+ aps rx unicast
+ aps unicast success
+ aps tx unicast retries
+ aps tx unicast failures
+ route discovery initiated
+ neighbor added
+ neighbor moved
+ neighbor stale
+ join indication
+ child moved
+ network frame control failure
+ aps frame control failure
+ aps unauthorized key
+ network decryption failure
+ aps decryption failure
+ packet buffer allocation failures
+ relayed unicasts
+ phy to mac queue limit reached
+ packet validate drop count
+ average mac retry per aps message sent
+ last message lqi
+ last message rssi
+
+
diff --git a/zcl/hc-devices.xml b/zcl/hc-devices.xml
new file mode 100644
index 0000000000..0d905533b4
--- /dev/null
+++ b/zcl/hc-devices.xml
@@ -0,0 +1,530 @@
+
+
+
+ HC-datacollectionunit
+ HC
+ HC Data Collection Unit
+ Coordinator
+ 0x0108
+ 0x0000
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-genericmultifunctiondevice
+ HC
+ HC Generic Multifunction Healthcare Device
+ Coordinator
+ 0x0108
+ 0x0f00
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-pulseoximeter
+ HC
+ HC Pulse Oximeter
+ Coordinator
+ 0x0108
+ 0x1004
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-ecg
+ HC
+ HC ECG
+ Coordinator
+ 0x0108
+ 0x1006
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-bloodpressuremeter
+ HC
+ HC Blood Pressure Meter
+ Coordinator
+ 0x0108
+ 0x1007
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-thermometer
+ HC
+ HC Thermometer
+ Coordinator
+ 0x0108
+ 0x1008
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-weightscale
+ HC
+ HC Weight Scale
+ Coordinator
+ 0x0108
+ 0x100f
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-glucosemeter
+ HC
+ HC Glucose Meter
+ Coordinator
+ 0x0108
+ 0x1011
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-inr
+ HC
+ HC INR
+ Coordinator
+ 0x0108
+ 0x1012
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-insulinpump
+ HC
+ HC Insulin Pump
+ Coordinator
+ 0x0108
+ 0x1013
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-peakflowmeter
+ HC
+ HC Peak Flow Meter
+ Coordinator
+ 0x0108
+ 0x1015
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-cardiovascularfitnessandactivitymonitor
+ HC
+ HC Cardiovascular Fitness and Activity Monitor
+ Coordinator
+ 0x0108
+ 0x1029
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-strengthfitnessequipment
+ HC
+ HC Strength and Fitness Equipment
+ Coordinator
+ 0x0108
+ 0x102a
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-physicalactivitymonitor
+ HC
+ HC Physical Activity Monitor
+ Coordinator
+ 0x0108
+ 0x102b
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-stepcounter
+ HC
+ HC Step Counter
+ Coordinator
+ 0x0108
+ 0x1068
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-ilah
+ HC
+ HC ILAH
+ Coordinator
+ 0x0108
+ 0x1047
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-adherencemonitor
+ HC
+ HC Adherence Monitor
+ Coordinator
+ 0x0108
+ 0x1048
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-fallsensor
+ HC
+ HC Fall Sensor
+ Coordinator
+ 0x0108
+ 0x1075
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-perssensor
+ HC
+ HC PERS Sensor
+ Coordinator
+ 0x0108
+ 0x1076
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-smokesensor
+ HC
+ HC Smoke Sensor
+ Coordinator
+ 0x0108
+ 0x1077
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-cosensor
+ HC
+ HC CO Sensor
+ Coordinator
+ 0x0108
+ 0x1078
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-watersensor
+ HC
+ HC Water Sensor
+ Coordinator
+ 0x0108
+ 0x1079
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-gassensor
+ HC
+ HC Gas Sensor
+ Coordinator
+ 0x0108
+ 0x107a
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-motionsensor
+ HC
+ HC Motion Sensor
+ Coordinator
+ 0x0108
+ 0x107b
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-propertyexitsensor
+ HC
+ HC Property Exit Sensor
+ Coordinator
+ 0x0108
+ 0x107c
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-enuresissensor
+ HC
+ HC Enuresis Sensor
+ Coordinator
+ 0x0108
+ 0x107d
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-contactclosuresensor
+ HC
+ HC Contact Closure Sensor
+ Coordinator
+ 0x0108
+ 0x107e
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-usagesensor
+ HC
+ HC Usage Sensor
+ Coordinator
+ 0x0108
+ 0x107f
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-switchusesensor
+ HC
+ HC Switch Use Sensor
+ Coordinator
+ 0x0108
+ 0x1080
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-dosagesensor
+ HC
+ HC Dosage Sensor
+ Coordinator
+ 0x0108
+ 0x1081
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
+ HC-temperaturesensor
+ HC
+ HC Temperature Sensor
+ Coordinator
+ 0x0108
+ 0x1082
+
+ Basic
+ Identify
+ Generic Tunnel
+ 11073 Protocol Tunnel
+ Power Configuration
+ Alarms
+ Time
+
+
+
diff --git a/zcl/hc.xml b/zcl/hc.xml
new file mode 100644
index 0000000000..d024948f95
--- /dev/null
+++ b/zcl/hc.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11073 Protocol Tunnel
+ HC
+ Attributes and commands for the 11073 protocol tunnel used for ZigBee Health Care.
+ 0x0614
+ 11073_PROTOCOL_TUNNEL_CLUSTER
+ true
+ true
+ device id list
+ manager target
+ manager endpoint
+ connected
+ preemptible
+ idle timeout
+
+
+ This command is generated when an 11073 network layer wishes to transfer an 11073 APDU across a ZigBee tunnel to another 11073 network layer.
+
+
+
+
+
+ This command is generated when an Health Care client wishes to connect to a Health Care server for the purposes of transmitting 11073 APDUs across the 11073 tunnel.
+
+
+
+
+
+
+
+
+ This command is generated when an Health Care client wishes to disconnect from a Health Care server.
+
+
+
+
+
+ Generated in response to requests related to connection or any event that causes the tunnel to become disconnected.
+
+
+
+
+
diff --git a/zcl/lo-devices.xml b/zcl/lo-devices.xml
new file mode 100644
index 0000000000..a506845440
--- /dev/null
+++ b/zcl/lo-devices.xml
@@ -0,0 +1,1710 @@
+
+
+
+ LO-onofflight
+ LO
+ LO On/Off Light
+ Router
+ 0x0104
+ 0x0100
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+ LO-dimmablelight
+ LO
+ LO Dimmable Light
+ Router
+ 0x0104
+ 0x0101
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+ LO-colordimmablelight
+ LO
+ LO Color Dimmable Light
+ Router
+ 0x0104
+ 0x0102
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_CURRENT_HUE
+ COLOR_CONTROL_CURRENT_SATURATION
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_CURRENT_X
+ COLOR_CONTROL_CURRENT_Y
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_OPTIONS
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_ENHANCED_COLOR_MODE
+ COLOR_CONTROL_COLOR_LOOP_ACTIVE
+ COLOR_CONTROL_COLOR_LOOP_DIRECTION
+ COLOR_CONTROL_COLOR_LOOP_TIME
+ COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+ LO-onofflightswitch
+ LO
+ LO On/Off Light Switch
+ Router
+ 0x0104
+ 0x0103
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LO-dimmerswitch
+ LO
+ LO Dimmer Switch
+ Router
+ 0x0104
+ 0x0104
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LO-colordimmerswitch
+ LO
+ LO Color Dimmer Switch
+ Router
+ 0x0104
+ 0x0105
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LO-lightsensor
+ LO
+ LO Light Sensor
+ Router
+ 0x0104
+ 0x0106
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ ILLUM_MEASURED_VALUE
+ ILLUM_MIN_MEASURED_VALUE
+ ILLUM_MAX_MEASURED_VALUE
+
+
+
+
+
+
+
+
+ LO-occupancysensor
+ LO
+ LO Occupancy Sensor
+ Router
+ 0x0104
+ 0x0107
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ OCCUPANCY
+ OCCUPANCY_SENSOR_TYPE
+
+
+
+
+
+
+
+
+ LO-onoffballast
+ LO
+ LO On/Off Balast
+ Router
+ 0x0104
+ 0x0108
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+
+
+ CURRENT_TEMPERATURE
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ BALLAST_STATUS
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+
+
+
+
+ LO-dimmableballast
+ LO
+ LO Dimmable Balast
+ Router
+ 0x0104
+ 0x0109
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+
+
+ CURRENT_TEMPERATURE
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ BALLAST_STATUS
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+
+
+
+
+ LO-onoffpluginunit
+ LO
+ LO On/Off Plug-in Unit
+ Router
+ 0x0104
+ 0x010A
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+
+ LO-dimmablepluginunit
+ LO
+ LO Dimmable Plug-in Unit
+ Router
+ 0x0104
+ 0x010B
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+
+ LO-colortemperaturelight
+ LO
+ LO Color Temperature Light
+ Router
+ 0x0104
+ 0x010C
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_COLOR_TEMPERATURE
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_OPTIONS
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX
+ COLOR_CONTROL_TEMPERATURE_LEVEL_MIN_MIREDS
+ START_UP_COLOR_TEMPERATURE_MIREDS
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ MoveToColorTemperature
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+ MoveColorTemperature
+ StepColorTemperature
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-extendedcolorlight
+ LO
+ LO Extended Color Light
+ Router
+ 0x0104
+ 0x010D
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ START_UP_ON_OFF
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ OPTIONS
+ LEVEL_CONTROL_REMAINING_TIME
+ START_UP_CURRENT_LEVEL
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_CURRENT_HUE
+ COLOR_CONTROL_CURRENT_SATURATION
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_CURRENT_X
+ COLOR_CONTROL_CURRENT_Y
+ COLOR_CONTROL_COLOR_TEMPERATURE
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_OPTIONS
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_ENHANCED_COLOR_MODE
+ COLOR_CONTROL_COLOR_LOOP_ACTIVE
+ COLOR_CONTROL_COLOR_LOOP_DIRECTION
+ COLOR_CONTROL_COLOR_LOOP_TIME
+ COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX
+ COLOR_CONTROL_TEMPERATURE_LEVEL_MIN_MIREDS
+ START_UP_COLOR_TEMPERATURE_MIREDS
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ MoveToColorTemperature
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+ MoveColorTemperature
+ StepColorTemperature
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-lightlevelsensor
+ LO
+ LO Light Level Sensor
+ Router
+ 0x0104
+ 0x010E
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ LEVEL_STATUS
+ ILLUMINANCE_TARGET_LEVEL
+
+
+
+
+
+
+
+
+ LO-colorcontroller
+ LO
+ LO Color Controller
+ Router
+ 0x0104
+ 0x0800
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-colorscenecontroller
+ LO
+ LO Color Scene Controller
+ Router
+ 0x0104
+ 0x0810
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-noncolorcontroller
+ LO
+ LO Non Color Controller
+ Router
+ 0x0104
+ 0x0820
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-noncolorscenecontroller
+ LO
+ LO Non Color Scene Controller
+ Router
+ 0x0104
+ 0x0830
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+ LO-controlbridge
+ LO
+ LO Control Bridge
+ Router
+ 0x0104
+ 0x0840
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
+
+
+
+
+
+
+
+ LO-onoffsensor
+ LO
+ LO On/off Sensor
+ Router
+ 0x0104
+ 0x0850
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ GENERIC_DEVICE_CLASS
+ GENERIC_DEVICE_TYPE
+ PRODUCT_CODE
+ PRODUCT_URL
+ SW_BUILD_ID
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+
+
diff --git a/zcl/manufacturers.xml b/zcl/manufacturers.xml
new file mode 100644
index 0000000000..831f074410
--- /dev/null
+++ b/zcl/manufacturers.xml
@@ -0,0 +1,495 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zcl/ota-dotdot.xml b/zcl/ota-dotdot.xml
new file mode 100644
index 0000000000..cf9564d80e
--- /dev/null
+++ b/zcl/ota-dotdot.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+ Over the Air Bootloading
+ General
+ This cluster contains commands and attributes that act as an interface for Thread Over-the-air bootloading.
+ 0x2000
+ OTA_BOOTLOAD_CLUSTER
+ true
+ true
+ false
+ OTA Upgrade Server ID
+
+ Offset (address) into the file
+ OTA Current File Version
+ OTA Current ZigBee Stack Version
+ OTA Downloaded File Version
+ OTA Downloaded ZigBee Stack Version
+ OTA Upgrade Status
+ Manufacturer ID
+ Image Type ID
+ Minimum Block Request Period
+ Image Stamp
+ Upgrade Activation Policy
+ Upgrade Timeout Policy
+
+
+ This command is generated when the upgrade server wishes to notify the clients of the available OTA upgrade image. The command can be sent as unicast which provides a way for the server to force the upgrade on the client. The command can also be sent as broadcast or multicast to certain class of clients (for example, the ones that have matching manufacturing and device ids).
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an Image Notify command to indicate that the client is looking for the next firmware image to upgrade to. The client may also choose to send the command periodically to the server.
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an QueryNextImageRequest command to response whether the server has a valid OTA upgrade image for the client or not. If the server has the file, information regarding the file and OTA upgrade process will be included in the command.
+
+
+
+
+
+
+
+
+ This command is generated by the client to request blocks of OTA upgrade file data.
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to request pages of OTA upgrade file data. A page would contain multiple blocks of data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the server in response to the block or page request command. If the server has the data available, it will reply back with a SUCCESS status. For other error cases, it may reply with status WAIT_FOR_DATA (server does not have the data available yet) or ABORT (invalid requested parameters or other failure cases).
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to notify the server of the end of the upgrade process. The process may end with success or error status.
+
+
+
+
+
+
+
+
+ This command is generated by the server in response to the upgrade request in order to let the client know when to upgrade to running new firmware image.
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to request a file that is specific to itself. The intention is to provide a way for the client to request non-OTA upgrade file.
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an QuerySpecificFileRequest command to response whether the server has a valid file for the client or not. If the server has the file, information regarding the file and OTA process will be included in the command.
+
+
+
+
+
+
+
+
diff --git a/zcl/ota.xml b/zcl/ota.xml
new file mode 100644
index 0000000000..b62ca00e17
--- /dev/null
+++ b/zcl/ota.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+ Over the Air Bootloading
+ General
+ This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading.
+ 0x0019
+ OTA_BOOTLOAD_CLUSTER
+ true
+ true
+ false
+ OTA Upgrade Server ID
+
+ Offset (address) into the file
+ OTA Current File Version
+ OTA Current ZigBee Stack Version
+ OTA Downloaded File Version
+ OTA Downloaded ZigBee Stack Version
+ OTA Upgrade Status
+ Manufacturer ID
+ Image Type ID
+ Minimum Block Request Period
+ Image Stamp
+ Upgrade Activation Policy
+ Upgrade Timeout Policy
+
+
+ This command is generated when the upgrade server wishes to notify the clients of the available OTA upgrade image. The command can be sent as unicast which provides a way for the server to force the upgrade on the client. The command can also be sent as broadcast or multicast to certain class of clients (for example, the ones that have matching manufacturing and device ids).
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an Image Notify command to indicate that the client is looking for the next firmware image to upgrade to. The client may also choose to send the command periodically to the server.
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an QueryNextImageRequest command to response whether the server has a valid OTA upgrade image for the client or not. If the server has the file, information regarding the file and OTA upgrade process will be included in the command.
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to request blocks of OTA upgrade file data.
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to request pages of OTA upgrade file data. A page would contain multiple blocks of data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the server in response to the block or page request command. If the server has the data available, it will reply back with a SUCCESS status. For other error cases, it may reply with status WAIT_FOR_DATA (server does not have the data available yet) or ABORT (invalid requested parameters or other failure cases).
+
+
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to notify the server of the end of the upgrade process. The process may end with success or error status.
+
+
+
+
+
+
+
+
+ This command is generated by the server in response to the upgrade request in order to let the client know when to upgrade to running new firmware image.
+
+
+
+
+
+
+
+
+
+ This command is generated by the client to request a file that is specific to itself. The intention is to provide a way for the client to request non-OTA upgrade file.
+
+
+
+
+
+
+
+
+
+ This command is generated upon receipt of an QuerySpecificFileRequest command to response whether the server has a valid file for the client or not. If the server has the file, information regarding the file and OTA process will be included in the command.
+
+
+
+
+
+
+
+
+
diff --git a/zcl/profiles.xml b/zcl/profiles.xml
new file mode 100644
index 0000000000..73f7513ed5
--- /dev/null
+++ b/zcl/profiles.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zcl/relay-control.xml b/zcl/relay-control.xml
new file mode 100644
index 0000000000..8df03eca01
--- /dev/null
+++ b/zcl/relay-control.xml
@@ -0,0 +1,30 @@
+
+
+
+ Relay Control
+ Ember
+ Commands to turn on and off the stack's relay capabilities, and to determine whether or not relay is enabled.
+ 0xC00D
+ RELAY_CONTROL_CLUSTER
+ true
+ true
+
+
+ Sets the on-off state of stack relay.
+
+
+
+
+
+
+ Client-to-server query that provides the on-off state of stack relay.
+
+
+
+
+ Response to GetRelayState query.
+
+
+
+
+
diff --git a/zcl/sample-extensions.xml b/zcl/sample-extensions.xml
new file mode 100644
index 0000000000..e1c26d944d
--- /dev/null
+++ b/zcl/sample-extensions.xml
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+ Sample Mfg Specific Cluster
+ Ember
+ This cluster provides an example of how the Application
+ Framework can be extended to include manufacturer specific clusters.
+
+
+ 0xFC00
+ SAMPLE_MFG_SPECIFIC_CLUSTER
+ true
+ true
+ ember sample attribute
+ ember sample attribute 2
+
+
+ A sample manufacturer specific command within the sample manufacturer specific
+ cluster.
+
+
+
+
+
+ Sample Mfg Specific Cluster 2
+ Ember
+ This cluster provides an example of how the Application
+ Framework can be extended to include manufacturer specific clusters.
+
+
+ 0xFC00
+ SAMPLE_MFG_SPECIFIC_CLUSTER_2
+ true
+ true
+ ember sample attribute 2
+ ember sample attribute 2
+
+
+ A sample manufacturer specific command within the sample manufacturer specific
+ cluster.
+
+
+
+
+
+
+ Sample Mfg Specific Attribute: 0x0000 0x1002
+ Sample Mfg Specific Attribute: 0x0000 0x1049
+ Sample Mfg Specific Attribute: 0x0001 0x1002
+ Sample Mfg Specific Attribute: 0x0001 0x1040
+
+ Client command that turns the device off with a transition given
+ by the transition time in the Ember Sample transition time attribute.
+
+
+ Client command that turns the device on with a transition given
+ by the transition time in the Ember Sample transition time attribute.
+
+
+ Client command that toggles the device with a transition given
+ by the transition time in the Ember Sample transition time attribute.
+
+
+ Client command that turns the device on with a transition given
+ by the transition time in the Ember Sample transition time attribute.
+
+
+ Client command that toggles the device with a transition given
+ by the transition time in the Ember Sample transition time attribute.
+
+
+
diff --git a/zcl/schema/zcl.xsd b/zcl/schema/zcl.xsd
new file mode 100644
index 0000000000..5a204ab8d7
--- /dev/null
+++ b/zcl/schema/zcl.xsd
@@ -0,0 +1,389 @@
+
+
+
+ This schema describes the format of the XML files, that describe the ZCL specification.
+It does not describe over-the-air format of the packet.
+
+Copyright 2012, Silicon Laboratories Inc.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An optional attribute, that specifies the length argument.
+
+This is used in cases where a length argument is preceding the actual array.
+
+In those cases, an array becomes a known length, and you can have variable length arguments after it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zcl/script/format b/zcl/script/format
new file mode 100755
index 0000000000..670979c31c
--- /dev/null
+++ b/zcl/script/format
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+LOC=`dirname "$0"`
+
+for A in ${LOC}/../*.xml; do
+ xmllint --format --output $A.format --schema ${LOC}/../schema/zcl.xsd $A
+ mv -f $A.format $A
+done
+
diff --git a/zcl/script/validate b/zcl/script/validate
new file mode 100755
index 0000000000..8f10ac283e
--- /dev/null
+++ b/zcl/script/validate
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+LOC=`dirname "$0"`
+
+for A in ${LOC}/../*.xml; do
+ xmllint --noout --schema ${LOC}/../schema/zcl.xsd $A
+done
diff --git a/zcl/silabs.xml b/zcl/silabs.xml
new file mode 100644
index 0000000000..10f216a46b
--- /dev/null
+++ b/zcl/silabs.xml
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+ Configuration Cluster
+ Ember
+ This cluster allows for the OTA configuration of firmware
+ parameters.
+
+ 0xFC01
+ OTA_CONFIGURATION_CLUSTER
+ true
+ true
+ Prevents OTA writing of tokens.
+
+
+ Command to write a token value over the air.
+
+
+
+
+
+
+ Command to lock the token values.
+
+
+
+
+ Command to read a token value.
+
+
+
+
+
+ Command to unlock tokens with a device-specific password (if allowed).
+
+
+
+
+
+ Response to a token value read.
+
+
+
+
+
+
+ MFGLIB Cluster
+ Ember
+ This cluster provides commands to kick off MFGLIB actions
+ over the air.
+
+ 0xFC02
+ MFGLIB_CLUSTER
+ true
+ true
+ Number of packets received while in MFGLIB mode.
+ RSSI of the first received packet.
+ LQI of the first received packet.
+
+
+ Command to put the device into streaming mode.
+
+
+
+
+
+
+
+ Command to put the device into tone mode.
+
+
+
+
+
+
+
+ Command to put the device into RX mode.
+
+
+
+
+
+
+
diff --git a/zcl/sleeping-mesh.xml b/zcl/sleeping-mesh.xml
new file mode 100644
index 0000000000..94f5b0a50e
--- /dev/null
+++ b/zcl/sleeping-mesh.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sleeping Mesh Configuration
+ SM
+ This cluster provides an interface for configuring and managing a sleeping mesh. The sleeping mesh is defined as a ZigBee Network where a number of devices supporting router features are able to sleep using an application layer mechanism to synchronize the wakeup and sleep.
+ 0xXXXX
+ SM_SLEEPING_MESH_CONFIGURATION_CLUSTER
+ true
+ true
+ status
+ awake duration
+ wake up period
+ next wake up utc time
+ tx jitter
+ wake up hour work day
+ wake up hour holy day
+ scheduling type
+ sleeping configuration id
+
+
+ The Sleeping Mesh Configuration command is used to configure the device to operate in a sleeping mesh. The configuration parameters allow the devices in the network to understand how to share a wakeup window and to operate in that period of time like an always-on ZigBee network.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This command initiates a Sleeping Mesh Configuration command for the current sleeping configuration available for this device.
+
+
+
+
+
diff --git a/zcl/stack-release-filelist-zcl.txt b/zcl/stack-release-filelist-zcl.txt
new file mode 100644
index 0000000000..2b4b1d204f
--- /dev/null
+++ b/zcl/stack-release-filelist-zcl.txt
@@ -0,0 +1,31 @@
+ami-devices.xml
+ami.xml
+cba-devices.xml
+cba.xml
+general.xml
+general-thread.xml
+green-power-devices.xml
+green-power.xml
+ha-devices.xml
+ha.xml
+ha-thread.xml
+hc-devices.xml
+hc.xml
+lo-devices.xml
+manufacturers.xml
+ota.xml
+ota-dotdot.xml
+profiles.xml
+relay-control.xml
+sample-extensions.xml
+silabs.xml
+sleeping-mesh.xml
+ta-devices.xml
+ta.xml
+types.xml
+wwah-silabs.xml
+wwah-silabs-devices.xml
+z3-nfr.xml
+zll-devices.xml
+zll.xml
+zll-thread.xml
diff --git a/zcl/ta-devices.xml b/zcl/ta-devices.xml
new file mode 100644
index 0000000000..cb9fcc81c6
--- /dev/null
+++ b/zcl/ta-devices.xml
@@ -0,0 +1,399 @@
+
+
+
+ TA-zigbeesimcard
+ Telecom Applications
+ ZigBee SIM Card (ZSIM)
+ Coordinator
+ 0x0107
+ 0x0000
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ ISO 7816 Protocol Tunnel
+ Information
+ Payment
+ Billing
+
+
+ Data Sharing
+ Voice over ZigBee
+ Data Rate Control
+ Chatting
+ RSSI Location
+
+
+
+ TA-zigbeemobileterminal
+ Telecom Applications
+ ZigBee Mobile Terminal (ZMT)
+ Coordinator
+ 0x0107
+ 0x0001
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Payment
+ Billing
+
+
+ Data Sharing
+ Data Rate Control
+ Voice over ZigBee
+ Gaming
+ Chatting
+ ISO 7816 Protocol Tunnel
+ Partition
+ RSSI Location
+
+
+
+ TA-configurationtool
+ Telecom Applications
+ Configuration Tool
+ Coordinator
+ 0x0107
+ 0x0005
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Data Rate Control
+ Data Sharing
+ Payment
+ Billing
+ Voice over ZigBee
+
+
+ RSSI Location
+ Partition
+
+
+
+ TA-rangeextender
+ Telecom Applications
+ Range Extender
+ Coordinator
+ 0x0107
+ 0x0008
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+
+
+
+ TA-zigbeeaccesspoint
+ Telecom Applications
+ ZigBee Access Point (ZAP)
+ Coordinator
+ 0x0107
+ 0x0100
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Payment
+
+
+ Billing
+
+
+
+ TA-zigbeeinformationnode
+ Telecom Applications
+ ZigBee Information Node (ZIN)
+ Coordinator
+ 0x0107
+ 0x0101
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Billing
+
+
+
+
+
+ TA-zigbeeinformationterminal
+ Telecom Applications
+ ZigBee Information Terminal (ZIT)
+ Coordinator
+ 0x0107
+ 0x0102
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+
+
+
+ TA-pointofsale
+ Telecom Applications
+ Point of Sale
+ Coordinator
+ 0x0107
+ 0x0200
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Payment
+
+
+
+
+
+ TA-ticketingmachine
+ Telecom Applications
+ Ticketing Machine
+ Coordinator
+ 0x0107
+ 0x0201
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+ Payment
+
+
+
+
+
+ TA-paycontroller
+ Telecom Applications
+ Pay Controller
+ Coordinator
+ 0x0107
+ 0x0202
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+
+
+ Payment
+
+
+
+ TA-billingunit
+ Telecom Applications
+ Billing Unit
+ Coordinator
+ 0x0107
+ 0x0203
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+
+
+ Billing
+
+
+
+ TA-chargingunit
+ Telecom Applications
+ Charging Unit
+ Coordinator
+ 0x0107
+ 0x0204
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Information
+
+
+ Billing
+
+
+
+ TA-zigbeeflashcard
+ Telecom Applications
+ ZigBee Flash Card
+ Coordinator
+ 0x0107
+ 0x0300
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ On/Off
+
+
+ Data Sharing
+ Data Rate Control
+ Information
+ Partition
+
+
+
+ TA-zigbeepcsmartcardreader
+ Telecom Applications
+ ZigBee PC Smart Card Reader
+ Coordinator
+ 0x0107
+ 0x0301
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ ISO 7816 Protocol Tunnel
+
+
+
+
+
+ TA-zigbeeheadset
+ Telecom Applications
+ ZigBee Headset
+ Coordinator
+ 0x0107
+ 0x0400
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Voice over ZigBee
+
+
+
+
+
+ TA-zigbeemicrophone
+ Telecom Applications
+ ZigBee Microphone
+ Coordinator
+ 0x0107
+ 0x0401
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Voice over ZigBee
+
+
+
+
+
+ TA-zigbeespeaker
+ Telecom Applications
+ ZigBee Speaker
+ Coordinator
+ 0x0107
+ 0x0402
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Voice over ZigBee
+
+
+
+
+
+ TA-rssianchornode
+ Telecom Applications
+ RSSI Anchor Node (RAN)
+ Coordinator
+ 0x0107
+ 0x0500
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ RSSI Location
+
+
+
+ TA-rssilocationnode
+ Telecom Applications
+ RSSI Location Node (RLN)
+ Coordinator
+ 0x0107
+ 0x0501
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ RSSI Location
+
+
+
+ TA-rssilocationgateway
+ Telecom Applications
+ RSSI Location Gateway (RLG)
+ Coordinator
+ 0x0107
+ 0x0502
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ RSSI Location
+
+
+
+ TA-chattingunit
+ Telecom Applications
+ Chatting Unit
+ Coordinator
+ 0x0107
+ 0x0600
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Chatting
+
+
+
+ TA-chattingstation
+ Telecom Applications
+ Chatting Station
+ Coordinator
+ 0x0107
+ 0x0601
+
+ Basic
+ Groups
+ Commissioning
+ Identify
+ Chatting
+
+
+
diff --git a/zcl/ta.xml b/zcl/ta.xml
new file mode 100644
index 0000000000..56593359f4
--- /dev/null
+++ b/zcl/ta.xml
@@ -0,0 +1,871 @@
+
+
+
+
+
+
+
+ Partition
+ General
+ Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices.
+ 0x0016
+ PARTITION_CLUSTER
+ true
+ true
+ maximum incoming transfer size
+ maximum outgoing transfer size
+ partioned frame size
+ large frame size
+ number of ack frame
+ nack timeout
+ interframe delay
+ number of send retries
+ sender timeout
+ receiver timeout
+
+ The TransferPartitionedFrame command is used to send a partitioned frame to another Partition cluster.
+
+
+
+
+
+
+
+ The ReadHandshakeParam command is used in order to read the appropriate set of parameters for each transaction to be performed by the Partition Cluster.
+
+
+
+
+ The WriteHandshakeParam command is used during the handshake phase in order to write the appropriate parameters for each transaction to be performed by the Partition Cluster.
+
+
+
+
+ MultipleACK command.
+
+
+
+
+
+
+
+ The ReadHandshakeParamResponse command is used in order to response to the corresponding ReadHandshakeParam command in order to communicate the appropriate set of parameters configured for each transaction to be performed by the Partition Cluster.
+
+
+
+
+
+ ISO 7816 Protocol Tunnel
+ Protocol Interfaces
+ Commands and attributes for mobile office solutions including ZigBee devices.
+ 0x0615
+ ISO7816_PROTOCOL_TUNNEL_CLUSTER
+ true
+ true
+ status
+
+
+ Command description for TransferApdu
+
+
+
+
+
+ Command description for InsertSmartCard
+
+
+
+
+ Command description for ExtractSmartCard
+
+
+
+
+ Information
+ Telecommunication
+ Provides commands and attributes for information delivery service on ZigBee networks.
+ 0x0900
+ INFORMATION_CLUSTER
+ true
+ true
+ node description
+ delivery enable
+ push information timer
+ enable secure configuration
+ number of contents
+ content root id
+
+
+ Command description for RequestInformation
+
+
+
+
+
+
+
+
+ Command description for PushInformationResponse
+
+
+
+
+
+ Command description for SendPreference
+
+
+
+
+
+
+
+ Command description for RequestPreferenceResponse
+
+
+
+
+
+
+
+
+ Command description for Update
+
+
+
+
+
+
+
+ Command description for Delete
+
+
+
+
+
+
+ Command description for ConfigureNodeDescription
+
+
+
+
+
+ Command description for ConfigureDeliveryEnable
+
+
+
+
+
+ Command description for ConfigurePushInformationTimer
+
+
+
+
+
+ Command description for ConfigureSetRootId
+
+
+
+
+
+ Command description for RequestInformationResponse
+
+
+
+
+
+
+
+ Command description for PushInformation
+
+
+
+
+
+ Command description for SendPreferenceResponse
+
+
+
+
+
+ Command description for ServerRequestPreference
+
+
+
+
+ Command description for RequestPreferenceConfirmation
+
+
+
+
+
+ Command description for UpdateResponse
+
+
+
+
+
+ Command description for DeleteResponse
+
+
+
+
+
+ Data Sharing
+ Telecommunication
+ Commands and attributes for small data sharing among ZigBee devices.
+ 0x0901
+ DATA_SHARING_CLUSTER
+ true
+ true
+ device name
+ device description
+
+
+ Command description for ReadFileRequest
+
+
+
+
+
+
+
+
+
+ Command description for ReadRecordRequest
+
+
+
+
+
+
+
+
+
+ Command description for WriteFileResponse
+
+
+
+
+
+
+
+
+ Command description for WriteFileRequest
+
+
+
+
+
+
+
+
+ Command description for ModifyFileRequest
+
+
+
+
+
+
+
+ Command description for ModifyRecordRequest
+
+
+
+
+
+
+
+ Command description for FileTransmission
+
+
+
+
+
+
+
+
+
+
+
+ Command description for RecordTransmission
+
+
+
+
+
+
+
+
+
+
+
+ Gaming
+ Telecommunication
+ Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals.
+ 0x0902
+ GAMING_CLUSTER
+ true
+ true
+ player name
+ nb of games
+ list of games
+ announcement interval
+ game id
+ name of game
+ game master
+ status
+ current nb of players
+ list of current players
+ max nb of players
+ min nb of players
+ current game level
+ score of this player
+ timer1
+ timer2
+ timer3
+ counter1
+ counter2
+ downloadable
+
+
+ Command description for SearchGame
+
+
+
+
+
+
+ Command description for JoinGame
+
+
+
+
+
+
+
+ Command description for StartGame
+
+
+
+
+ Command description for PauseGame
+
+
+
+
+ Command description for ResumeGame
+
+
+
+
+ Command description for QuitGame
+
+
+
+
+ Command description for EndGame
+
+
+
+
+ Command description for StartOver
+
+
+
+
+ Command description for ActionControl
+
+
+
+
+
+ Command description for DownloadGame
+
+
+
+
+ Command description for GameAnnouncement
+
+
+
+
+
+
+
+ Command description for GeneralResponse
+
+
+
+
+
+
+
+ Data Rate Control
+ Telecommunication
+ This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface.
+ 0x0903
+ DATA_RATE_CONTROL_CLUSTER
+ true
+ true
+ average latency requirement
+ max latency requirement
+ bandwidth requirement
+
+
+ Command description for PathCreation
+
+
+
+
+
+
+
+ Command description for DataRateNotification
+
+
+
+
+
+
+
+ Command description for PathDeletion
+
+
+
+
+
+
+ Command description for DataRateControl
+
+
+
+
+
+
+
+ Voice over ZigBee
+ Telecommunication
+ This cluster seeks to provide an interface to a voice over ZigBee protocol.
+ 0x0904
+ VOICE_OVER_ZIGBEE_CLUSTER
+ true
+ true
+ codec type
+ sampling frequency
+ codec rate
+ establishment timeout
+ codec type sub 1
+ codec type sub 2
+ codec type sub 3
+ compression type
+ compression rate
+ option flags
+ threshold
+
+
+ Command description for EstablishmentRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for VoiceTransmission
+
+
+
+
+
+ Command description for VoiceTransmissionCompletion
+
+
+
+
+ Command description for ControlResponse
+
+
+
+
+
+ Command description for EstablishmentResponse
+
+
+
+
+
+
+ Command description for VoiceTransmissionResponse
+
+
+
+
+
+
+ Command description for Control
+
+
+
+
+
+ Chatting
+ Telecommunication
+ Commands and attributes for sending chat messages among ZigBee devices.
+ 0x0905
+ CHATTING_CLUSTER
+ true
+ true
+ u id
+ nickname
+ c iD
+ name
+ enable add chat
+
+
+ Command description for JoinChatRequest
+
+
+
+
+
+
+
+ Command description for LeaveChatRequest
+
+
+
+
+
+
+ Command description for SearchChatRequest
+
+
+
+
+ Command description for SwitchChairmanResponse
+
+
+
+
+
+
+ Command description for StartChatRequest
+
+
+
+
+
+
+
+ Command description for ChatMessage
+
+
+
+
+
+
+
+
+
+ Command description for GetNodeInformationRequest
+
+
+
+
+
+
+ Command description for StartChatResponse
+
+
+
+
+
+
+ Command description for JoinChatResponse
+
+
+
+
+
+
+
+ Command description for UserLeft
+
+
+
+
+
+
+
+ Command description for UserJoined
+
+
+
+
+
+
+
+ Command description for SearchChatResponse
+
+
+
+
+
+
+ Command description for SwitchChairmanRequest
+
+
+
+
+
+ Command description for SwitchChairmanConfirm
+
+
+
+
+
+
+ Command description for SwitchChairmanNotification
+
+
+
+
+
+
+
+
+ Command description for GetNodeInformationResponse
+
+
+
+
+
+
+
+
+
+
+
+
+ Payment
+ Financial
+ Commands and attributes for payment scenarios including ZigBee devices.
+ 0x0A01
+ PAYMENT_CLUSTER
+ true
+ true
+ user id
+ user type
+ service id
+ service provider id
+ totem id
+ currency
+ price trailing digit
+ price
+ good id
+ serial number
+ timestamp
+ trans id
+ trans status
+ status
+
+
+ Command description for BuyRequest
+
+
+
+
+
+
+
+
+ Command description for AcceptPayment
+
+
+
+
+
+
+
+
+ Command description for PaymentConfirm
+
+
+
+
+
+
+
+ Command description for BuyConfirm
+
+
+
+
+
+
+
+
+
+
+
+ Command description for ReceiptDelivery
+
+
+
+
+
+
+
+
+
+ Command description for TransactionEnd
+
+
+
+
+
+
+ Billing
+ Financial
+ Attributes and commands to enable billing of users for provided services through the use of a billing platform.
+ 0x0A02
+ BILLING_CLUSTER
+ true
+ true
+ user id
+ service id
+ service provider id
+ session interval
+ timestamp
+ duration
+
+
+ Command description for Subscribe
+
+
+
+
+
+
+
+ Command description for Unsubscribe
+
+
+
+
+
+
+
+ Command description for StartBillingSession
+
+
+
+
+
+
+
+ Command description for StopBillingSession
+
+
+
+
+
+
+
+ Command description for BillStatusNotification
+
+
+
+
+
+
+ Command description for SessionKeepAlive
+
+
+
+
+
+
+
+ Command description for CheckBillStatus
+
+
+
+
+
+
+
+ Command description for SendBillRecord
+
+
+
+
+
+
+
+
+
diff --git a/zcl/types.xml b/zcl/types.xml
new file mode 100644
index 0000000000..15c55b375a
--- /dev/null
+++ b/zcl/types.xml
@@ -0,0 +1,986 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/zcl/wwah-silabs-devices.xml b/zcl/wwah-silabs-devices.xml
new file mode 100644
index 0000000000..a9e8eec78f
--- /dev/null
+++ b/zcl/wwah-silabs-devices.xml
@@ -0,0 +1,23 @@
+
+
+
+ SL-WWAH-door-lock
+ WWAH
+ SL WWAH Door Lock
+ Coordinator
+ 0x0104
+ 0x0000
+
+ Basic
+ Power Configuration
+ Identify
+ Over the Air Bootloading
+ Alarms
+ Poll Control
+ Door Lock
+ Diagnostics
+ Time
+ SL Works With All Hubs
+
+
+
diff --git a/zcl/wwah-silabs.xml b/zcl/wwah-silabs.xml
new file mode 100644
index 0000000000..15d81497b8
--- /dev/null
+++ b/zcl/wwah-silabs.xml
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SL Works With All Hubs
+
+ Works With All Hubs
+ Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions.
+ 0xFC57
+
+ SL_WWAH_CLUSTER
+ true
+ true
+
+
+
+
+ disable ota downgrades
+ mgmt leave without rejoin enabled
+ network retry count
+ mac retry count
+ router checkin enabled
+ touchlink interpan enabled
+ wwah parent classification enabled
+ wwah app event retry enabled
+ wwah app event retry queue size
+ wwah rejoin enabled
+ mac poll cca wait time
+ configuration mode enabled
+ current debug report id
+ tc security on ntwk key rotation enabled
+ wwah bad parent recovery enabled
+ pending network update channel
+ pending network update pan id
+ ota max offline duration
+
+
+ Enable enforcement of APS-level security for all cluster commands.
+
+
+
+
+
+
+ Disable enforcement of APS-level security for all cluster commands.
+
+
+
+
+
+
+ Query status of APS-level security enforcement for a specified cluster.
+
+
+
+
+
+ Trigger device to request a new APS link key from the Trust Center.
+
+
+
+
+ Enable WWAH App Event retry algorithm.
+
+
+
+
+
+
+
+
+ Disable WWAH App Event retry algorithm.
+
+
+
+
+ Trigger device to request current attribute values from Time Cluster server.
+
+
+
+
+ Enable WWAH rejoin algorithm.
+
+
+
+
+
+
+
+
+
+ Disable WWAH rejoin algorithm.
+
+
+
+
+ Set the enrollment method of an IAS Zone server.
+
+
+
+
+
+ Clear the binding table.
+
+
+
+
+ Enable device to periodically check connectivity with Zigbee Coordinator.
+
+
+
+
+
+ Disable device from periodically checking connectivity with Zigbee Coordinator.
+
+
+
+
+ Set MAC poll CCA wait time.
+
+
+
+
+
+ Set pending network update parameters.
+
+
+
+
+
+
+ Require all unicast commands to have APS ACKs enabled.
+
+
+
+
+
+
+ Roll back changes made by Require APS ACK on Unicasts.
+
+
+
+
+ Query whether unicast commands are required to have APS ACKs enabled.
+
+
+
+
+ Query for specified debug report.
+
+
+
+
+
+ Causes device to perform a scan for beacons advertising the device's network.
+
+
+
+
+
+ Disallow OTA downgrade of all device firmware components.
+
+
+
+
+ Causes device to ignore MGMT Leave Without Rejoin commands.
+
+
+
+
+ Causes device to ignore Touchlink Interpan messages.
+
+
+
+
+ Enable WWAH Parent Classification advertisements.
+
+
+
+
+ Disable WWAH Parent Classification advertisements.
+
+
+
+
+ Process only network key rotation commands sent via unicast and encrypted by Trust Center Link Key.
+
+
+
+
+ Enable WWAH Bad Parent Recovery feature.
+
+
+
+
+ Disable WWAH Bad Parent Recovery feature.
+
+
+
+
+ Enable Configuration Mode.
+
+
+
+
+ Disable Configuration Mode.
+
+
+
+
+ Use only the Trust Center as cluster server for the set of clusters specified.
+
+
+
+
+
+
+ Causes device to send an appropriate Trust Center for Cluster Server Query Response command.
+
+
+
+
+ Command description for SlAPSLinkKeyAuthorizationQueryResponse
+
+
+
+
+
+
+ Command description for SlPoweringOffNotification
+
+
+
+
+
+
+
+
+ Command description for SlPoweringOnNotification
+
+
+
+
+
+
+
+
+ Command description for SlShortAddressChange
+
+
+
+
+
+
+ Command description for SlAPSAckEnablementQueryResponse
+
+
+
+
+
+
+ Command description for SlPowerDescriptorChange
+
+
+
+
+
+
+
+
+ Command description for SlNewDebugReportNotification
+
+
+
+
+
+
+ Command description for SlDebugReportQueryResponse
+
+
+
+
+
+
+
+ Command description for SlTrustCenterForClusterServerQueryResponse
+
+
+
+
+
+
+ Command description for SlSurveyBeaconsResponse
+
+
+
+
+
+
+
+ Command description for SlUseTrustCenterForClusterServerResponse
+
+
+
+
+
+
+
diff --git a/zcl/z3-nfr.xml b/zcl/z3-nfr.xml
new file mode 100644
index 0000000000..f47105d570
--- /dev/null
+++ b/zcl/z3-nfr.xml
@@ -0,0 +1,34 @@
+
+
+
+
+ occupied setback
+ occupied setback min
+ occupied setback max
+ unoccupied setback
+ unoccupied setback min
+ unoccupied setback max
+ emergency heat delta
+
+
+ fan delay
+
+
+ backlight timeout
+ setpoint source indication
+
+
+
+ current locale
+
+ This command gets locales supported.
+
+
+
+
+ The locales supported response command is sent in response to a get locales supported command, and is used to discover which locales the device supports.
+
+
+
+
+
diff --git a/zcl/zcl-studio.properties b/zcl/zcl-studio.properties
new file mode 100644
index 0000000000..0a2fd25b17
--- /dev/null
+++ b/zcl/zcl-studio.properties
@@ -0,0 +1,23 @@
+# This file controls which files from this directory are included as a part of the Studio built-in ZCL package.
+#
+xmlRoot=.
+
+xmlFile=\
+ types.xml, general.xml, \
+ ha.xml, ha-devices.xml, \
+ cba.xml, cba-devices.xml, \
+ ota.xml, \
+ ami.xml, ami-devices.xml, \
+ zll.xml, zll-devices.xml, \
+ ta.xml, ta-devices.xml, \
+ hc.xml, hc-devices.xml, \
+ green-power.xml, green-power-devices.xml, \
+ sample-extensions.xml
+
+
+
+zigbeeDeviceType.ZA_COORDINATOR=Coordinator or Router
+zigbeeDeviceType.ZA_ROUTER=Router
+zigbeeDeviceType.ZA_END_DEVICE=End Device
+zigbeeDeviceType.ZA_MOBILE_END_DEVICE=Mobile End Device
+zigbeeDeviceType.ZA_SLEEPY_END_DEVICE=Sleepy End Device
diff --git a/zcl/zll-devices.xml b/zcl/zll-devices.xml
new file mode 100644
index 0000000000..dc7fca58a7
--- /dev/null
+++ b/zcl/zll-devices.xml
@@ -0,0 +1,1226 @@
+
+
+
+ ZLL-onofflight
+ ZLL
+ ZLL On/Off Light
+ Router
+ 0x0104
+ 0x0000
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+ ZLL-onoffpluginunit
+ ZLL
+ ZLL On/Off Plug-in Unit
+ Router
+ 0x0104
+ 0x0010
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+ ZLL-dimmablelight
+ ZLL
+ ZLL Dimmable Light
+ Router
+ 0x0104
+ 0x0100
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+ ZLL-dimmablepluginunit
+ ZLL
+ ZLL Dimmable Plug-in Unit
+ Router
+ 0x0104
+ 0x0110
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+
+
+
+ ZLL-colorlight
+ ZLL
+ ZLL Color Light
+ Router
+ 0x0104
+ 0x0200
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_CURRENT_HUE
+ COLOR_CONTROL_CURRENT_SATURATION
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_CURRENT_X
+ COLOR_CONTROL_CURRENT_Y
+ COLOR_CONTROL_COLOR_TEMPERATURE
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_ENHANCED_COLOR_MODE
+ COLOR_CONTROL_COLOR_LOOP_ACTIVE
+ COLOR_CONTROL_COLOR_LOOP_DIRECTION
+ COLOR_CONTROL_COLOR_LOOP_TIME
+ COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ MoveToColorTemperature
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+ MoveColorTemperature
+ StepColorTemperature
+
+
+
+
+
+ ZLL-extendedcolorlight
+ ZLL
+ ZLL Extended Color Light
+ Router
+ 0x0104
+ 0x0210
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_CURRENT_HUE
+ COLOR_CONTROL_CURRENT_SATURATION
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_CURRENT_X
+ COLOR_CONTROL_CURRENT_Y
+ COLOR_CONTROL_COLOR_TEMPERATURE
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_ENHANCED_COLOR_MODE
+ COLOR_CONTROL_COLOR_LOOP_ACTIVE
+ COLOR_CONTROL_COLOR_LOOP_DIRECTION
+ COLOR_CONTROL_COLOR_LOOP_TIME
+ COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ MoveToColorTemperature
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+ MoveColorTemperature
+ StepColorTemperature
+
+
+
+
+
+ ZLL-colortemperaturelight
+ ZLL
+ ZLL Color Temperature Light
+ Router
+ 0x0104
+ 0x0220
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IDENTIFY_TIME
+ Identify
+ IdentifyQuery
+ TriggerEffect
+
+
+ GROUP_NAME_SUPPORT
+ AddGroup
+ ViewGroup
+ GetGroupMembership
+ RemoveGroup
+ RemoveAllGroups
+ AddGroupIfIdentifying
+
+
+ SCENE_COUNT
+ CURRENT_SCENE
+ CURRENT_GROUP
+ SCENE_VALID
+ SCENE_NAME_SUPPORT
+ AddScene
+ ViewScene
+ RemoveScene
+ RemoveAllScenes
+ StoreScene
+ RecallScene
+ GetSceneMembership
+ EnhancedAddScene
+ EnhancedViewScene
+ CopyScene
+
+
+ ON_OFF
+ GLOBAL_SCENE_CONTROL
+ ON_TIME
+ OFF_WAIT_TIME
+ Off
+ On
+ Toggle
+ OffWithEffect
+ OnWithRecallGlobalScene
+ OnWithTimedOff
+
+
+ CURRENT_LEVEL
+ LEVEL_CONTROL_REMAINING_TIME
+ MoveToLevel
+ Move
+ Step
+ Stop
+ MoveToLevelWithOnOff
+ MoveWithOnOff
+ StepWithOnOff
+ StopWithOnOff
+
+
+ COLOR_CONTROL_CURRENT_HUE
+ COLOR_CONTROL_CURRENT_SATURATION
+ COLOR_CONTROL_REMAINING_TIME
+ COLOR_CONTROL_CURRENT_X
+ COLOR_CONTROL_CURRENT_Y
+ COLOR_CONTROL_COLOR_TEMPERATURE
+ COLOR_CONTROL_COLOR_MODE
+ COLOR_CONTROL_NUMBER_OF_PRIMARIES
+ COLOR_CONTROL_PRIMARY_1_X
+ COLOR_CONTROL_PRIMARY_1_Y
+ COLOR_CONTROL_PRIMARY_1_INTENSITY
+ COLOR_CONTROL_PRIMARY_2_X
+ COLOR_CONTROL_PRIMARY_2_Y
+ COLOR_CONTROL_PRIMARY_2_INTENSITY
+ COLOR_CONTROL_PRIMARY_3_X
+ COLOR_CONTROL_PRIMARY_3_Y
+ COLOR_CONTROL_PRIMARY_3_INTENSITY
+ COLOR_CONTROL_PRIMARY_4_X
+ COLOR_CONTROL_PRIMARY_4_Y
+ COLOR_CONTROL_PRIMARY_4_INTENSITY
+ COLOR_CONTROL_PRIMARY_5_X
+ COLOR_CONTROL_PRIMARY_5_Y
+ COLOR_CONTROL_PRIMARY_5_INTENSITY
+ COLOR_CONTROL_PRIMARY_6_X
+ COLOR_CONTROL_PRIMARY_6_Y
+ COLOR_CONTROL_PRIMARY_6_INTENSITY
+ COLOR_CONTROL_ENHANCED_CURRENT_HUE
+ COLOR_CONTROL_ENHANCED_COLOR_MODE
+ COLOR_CONTROL_COLOR_LOOP_ACTIVE
+ COLOR_CONTROL_COLOR_LOOP_DIRECTION
+ COLOR_CONTROL_COLOR_LOOP_TIME
+ COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE
+ COLOR_CONTROL_COLOR_CAPABILITIES
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN
+ COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX
+ MoveToHue
+ MoveHue
+ StepHue
+ MoveToSaturation
+ MoveSaturation
+ StepSaturation
+ MoveToHueAndSaturation
+ MoveToColor
+ MoveColor
+ StepColor
+ MoveToColorTemperature
+ EnhancedMoveToHue
+ EnhancedMoveHue
+ EnhancedStepHue
+ EnhancedMoveToHueAndSaturation
+ ColorLoopSet
+ StopMoveStep
+ MoveColorTemperature
+ StepColorTemperature
+
+
+
+
+
+ ZLL-colorremote
+ ZLL
+ ZLL Color Controller
+ End Device
+ 0x0104
+ 0x0800
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+
+
+
+
+
+
+ ZLL-colorsceneremote
+ ZLL
+ ZLL Color Scene Controller
+ End Device
+ 0x0104
+ 0x0810
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+ AddSceneResponse
+ ViewSceneResponse
+ RemoveSceneResponse
+ RemoveAllScenesResponse
+ StoreSceneResponse
+ GetSceneMembershipResponse
+ EnhancedAddSceneResponse
+ EnhancedViewSceneResponse
+ CopySceneResponse
+
+
+
+
+
+
+
+
+ ZLL-noncolorremote
+ ZLL
+ ZLL Non-color Controller
+ End Device
+ 0x0104
+ 0x0820
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+
+
+
+
+
+ ZLL-noncolorsceneremote
+ ZLL
+ ZLL Non-color Scene Controller
+ End Device
+ 0x0104
+ 0x0830
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+ AddSceneResponse
+ ViewSceneResponse
+ RemoveSceneResponse
+ RemoveAllScenesResponse
+ StoreSceneResponse
+ GetSceneMembershipResponse
+ EnhancedAddSceneResponse
+ EnhancedViewSceneResponse
+ CopySceneResponse
+
+
+
+
+
+
+
+ ZLL-controlbridge
+ ZLL
+ ZLL Control Bridge
+ Router
+ 0x0104
+ 0x0840
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+ AddSceneResponse
+ ViewSceneResponse
+ RemoveSceneResponse
+ RemoveAllScenesResponse
+ StoreSceneResponse
+ GetSceneMembershipResponse
+ EnhancedAddSceneResponse
+ EnhancedViewSceneResponse
+ CopySceneResponse
+
+
+
+
+
+
+
+
+ ZLL-onoffsensor
+ ZLL
+ ZLL On/Off Sensor
+ End Device
+ 0x0104
+ 0x0850
+
+
+ VERSION
+ APPLICATION_VERSION
+ STACK_VERSION
+ HW_VERSION
+ MANUFACTURER_NAME
+ MODEL_IDENTIFIER
+ DATE_CODE
+ POWER_SOURCE
+ SW_BUILD_ID
+
+
+ ScanRequest
+ DeviceInformationRequest
+ IdentifyRequest
+ ResetToFactoryNewRequest
+ NetworkStartRequest
+ NetworkJoinRouterRequest
+ NetworkJoinEndDeviceRequest
+ NetworkUpdateRequest
+ GetGroupIdentifiersRequest
+ GetEndpointListRequest
+ ScanResponse
+ DeviceInformationResponse
+ NetworkStartResponse
+ NetworkJoinRouterResponse
+ NetworkJoinEndDeviceResponse
+ EndpointInformation
+ GetGroupIdentifiersResponse
+ GetEndpointListResponse
+
+
+ IdentifyQueryResponse
+
+
+ AddGroupResponse
+ ViewGroupResponse
+ GetGroupMembershipResponse
+ RemoveGroupResponse
+
+
+ AddSceneResponse
+ ViewSceneResponse
+ RemoveSceneResponse
+ RemoveAllScenesResponse
+ StoreSceneResponse
+ GetSceneMembershipResponse
+ EnhancedAddSceneResponse
+ EnhancedViewSceneResponse
+ CopySceneResponse
+
+
+
+
+
+
+
+
diff --git a/zcl/zll-thread.xml b/zcl/zll-thread.xml
new file mode 100644
index 0000000000..ad2d421bc4
--- /dev/null
+++ b/zcl/zll-thread.xml
@@ -0,0 +1,496 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sw build id
+
+
+
+
+ Command description for TriggerEffect
+
+
+
+
+
+
+
+
+ Command description for EnhancedAddScene
+
+
+
+
+
+
+
+
+
+ Command description for EnhancedViewScene
+
+
+
+
+
+
+ Command description for CopyScene
+
+
+
+
+
+
+
+
+
+ Command description for EnhancedAddSceneResponse
+
+
+
+
+
+
+
+ Command description for EnhancedViewSceneResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for CopySceneResponse
+
+
+
+
+
+
+
+ global scene control
+ on time
+ off wait time
+
+
+ Command description for OffWithEffect
+
+
+
+
+
+
+ Command description for OnWithRecallGlobalScene
+
+
+
+
+ Command description for OnWithTimedOff
+
+
+
+
+
+
+
+ enhanced current hue
+ enhanced color mode
+ color loop active
+ color loop direction
+ color loop time
+ color loop start enhanced hue
+ color loop stored enhanced hue
+ color capabilities
+ color temp physical min
+ color temp physical max
+
+
+ Command description for EnhancedMoveToHue
+
+
+
+
+
+
+
+ Command description for EnhancedMoveHue
+
+
+
+
+
+
+ Command description for EnhancedStepHue
+
+
+
+
+
+
+
+ Command description for EnhancedMoveToHueAndSaturation
+
+
+
+
+
+
+
+ Command description for ColorLoopSet
+
+
+
+
+
+
+
+
+
+ Command description for StopMoveStep
+
+
+
+
+ Command description for MoveColorTemperature
+
+
+
+
+
+
+
+
+ Command description for StepColorTemperature
+
+
+
+
+
+
+
+
+
+ ZLL Commissioning
+ ZLL
+ The ZLL commissioning cluster provides commands to support touch link commissioning.
+ 0x1000
+ ZLL_COMMISSIONING_CLUSTER
+ true
+ true
+
+
+ Command description for ScanRequest
+
+
+
+
+
+
+
+ Command description for DeviceInformationRequest
+
+
+
+
+
+
+ Command description for IdentifyRequest
+
+
+
+
+
+
+ Command description for ResetToFactoryNewRequest
+
+
+
+
+
+ Command description for NetworkStartRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinRouterRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinEndDeviceRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkUpdateRequest
+
+
+
+
+
+
+
+
+
+
+ Command description for GetGroupIdentifiersRequest
+
+
+
+
+
+ Command description for GetEndpointListRequest
+
+
+
+
+
+ Command description for ScanResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for DeviceInformationResponse
+
+
+
+
+
+
+
+
+
+ Command description for NetworkStartResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinRouterResponse
+
+
+
+
+
+
+ Command description for NetworkJoinEndDeviceResponse
+
+
+
+
+
+
+ Command description for EndpointInformation
+
+
+
+
+
+
+
+
+
+
+ Command description for GetGroupIdentifiersResponse
+
+
+
+
+
+
+
+
+ Command description for GetEndpointListResponse
+
+
+
+
+
+
+
+
diff --git a/zcl/zll.xml b/zcl/zll.xml
new file mode 100644
index 0000000000..0cdb6043e3
--- /dev/null
+++ b/zcl/zll.xml
@@ -0,0 +1,502 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sw build id
+
+
+
+
+ Command description for TriggerEffect
+
+
+
+
+
+
+
+
+ Command description for EnhancedAddScene
+
+
+
+
+
+
+
+
+
+ Command description for EnhancedViewScene
+
+
+
+
+
+
+ Command description for CopyScene
+
+
+
+
+
+
+
+
+
+ Command description for EnhancedAddSceneResponse
+
+
+
+
+
+
+
+ Command description for EnhancedViewSceneResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for CopySceneResponse
+
+
+
+
+
+
+
+ global scene control
+ on time
+ off wait time
+
+
+ Command description for OffWithEffect
+
+
+
+
+
+
+ Command description for OnWithRecallGlobalScene
+
+
+
+
+ Command description for OnWithTimedOff
+
+
+
+
+
+
+
+ enhanced current hue
+ enhanced color mode
+ color loop active
+ color loop direction
+ color loop time
+ color loop start enhanced hue
+ color loop stored enhanced hue
+ color capabilities
+ color temp physical min
+ color temp physical max
+
+
+ Command description for EnhancedMoveToHue
+
+
+
+
+
+
+
+ Command description for EnhancedMoveHue
+
+
+
+
+
+
+ Command description for EnhancedStepHue
+
+
+
+
+
+
+
+ Command description for EnhancedMoveToHueAndSaturation
+
+
+
+
+
+
+
+ Command description for ColorLoopSet
+
+
+
+
+
+
+
+
+
+ Command description for StopMoveStep
+
+
+
+
+
+
+ Command description for MoveColorTemperature
+
+
+
+
+
+
+
+
+
+
+ Command description for StepColorTemperature
+
+
+
+
+
+
+
+
+
+
+
+ ZLL Commissioning
+ ZLL
+ The ZLL commissioning cluster provides commands to support touch link commissioning.
+ 0x1000
+ ZLL_COMMISSIONING_CLUSTER
+ true
+ true
+
+
+ Command description for ScanRequest
+
+
+
+
+
+
+
+ Command description for DeviceInformationRequest
+
+
+
+
+
+
+ Command description for IdentifyRequest
+
+
+
+
+
+
+ Command description for ResetToFactoryNewRequest
+
+
+
+
+
+ Command description for NetworkStartRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinRouterRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinEndDeviceRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkUpdateRequest
+
+
+
+
+
+
+
+
+
+
+ Command description for GetGroupIdentifiersRequest
+
+
+
+
+
+ Command description for GetEndpointListRequest
+
+
+
+
+
+ Command description for ScanResponse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Command description for DeviceInformationResponse
+
+
+
+
+
+
+
+
+
+ Command description for NetworkStartResponse
+
+
+
+
+
+
+
+
+
+
+ Command description for NetworkJoinRouterResponse
+
+
+
+
+
+
+ Command description for NetworkJoinEndDeviceResponse
+
+
+
+
+
+
+ Command description for EndpointInformation
+
+
+
+
+
+
+
+
+
+
+ Command description for GetGroupIdentifiersResponse
+
+
+
+
+
+
+
+
+ Command description for GetEndpointListResponse
+
+
+
+
+
+
+
+