diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..267b326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +node_modules +out/ +logs/ +run/ +.idea/ +data/ +.vscode/launch.json +public/electron/ +pnpm-lock.yaml +.yalc/ +yalc.lock +go/public/ +go/go.sum +build/extraResources/java-app.jar +build/extraResources/jre1.8.0_201/ +python/.venv/ +python/*.spec +python/build/ +python/dist/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..968e0d8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 安徽烁景智能科技有限公司 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..2701687 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,173 @@ +# EE框架 v3 +[![star](https://gitee.com/dromara/electron-egg/badge/star.svg?theme=gvp)](https://gitee.com/dromara/electron-egg/stargazers) + +
+ +
+ +
+

一个入门简单、跨平台、企业级桌面软件开发框架

+
+
+ +## 🌏 [English](https://www.yuque.com/u34495/ee-doc) | [中文](https://www.kaka996.com/) + +## 📋 介绍 +- 🍩 **为什么使用?** 桌面软件(办公方向、 个人工具),仍然是未来十几年PC端需求之一,提高工作效率 +- 🍉 **简单:** 只需懂 JavaScript +- 🍑 **愿景:** 所有开发者都能学会桌面软件研发 +- 🍰 **gitee:** https://gitee.com/dromara/electron-egg **4100+** +- 🍨 **github:** https://github.com/dromara/electron-egg **1200+** +- 🏆 码云最有价值开源项目 + ![](https://wallace5303.gitee.io/ee/images/electron-egg/ee-zs.png) + +## 📚 文档 +- [教程文档](https://www.kaka996.com/) + +## 📦 特性 +1. 🍄 跨平台:一套代码,可以打包成windows版、Mac版、Linux版、国产UOS、Deepin、麒麟等 +2. 🌹 架构:单业务进程/模块化/多任务(进程,线程,渲染进程),让开发大型项目变的简单。 +3. 🌱 简单高效:只需学习 js 语言 +4. 🌴 前端独立:理论上支持任何前端技术,如:vue、react、html等等 +5. 🍁 工程化:可以用前端、服务端的开发思维,来编写桌面软件 +6. 🌷 高性能:事件驱动、非阻塞式IO +7. 🌰 功能丰富:配置、通信、插件、数据库、升级、打包、工具... 应有尽有 +8. 💐 安全:支持字节码加密、压缩混淆加密 +9. 🌻 功能demo:桌面软件常见功能,框架集成或提供demo + +## ✈️ 使用场景 + +### 1. 🚀 常规桌面软件 +- 🚖 windows平台 + + ![](https://wallace5303.gitee.io/ee/images/electron-egg/home.png) + +- 🚍 macOS平台 + ![](https://wallace5303.gitee.io/ee/images/electron-egg/mac-socket.png) + +- 🚔 linux平台 - 国产UOS、Deepin + ![](https://wallace5303.gitee.io/ee/images/electron-egg/uos-home.png) + +- 🚔 linux平台 - ubuntu + ![](https://wallace5303.gitee.io/ee/images/electron-egg/ubuntu-db.png) + +### 🚐 2. vue、react、angular、web 转换成桌面软件 +- 🚙 vue-ant-design(本地) + + ![](https://wallace5303.gitee.io/ee/images/electron-egg/vue-antd.png) + +- 🚙 禅道项目管理(web项目地址) + + ![](https://wallace5303.gitee.io/ee/images/electron-egg/ee-project-7.png) + +### 🚂 3. 游戏(h5相关技术开发) +- 🚊 忍者100层 + + ![](https://wallace5303.gitee.io/ee/images/electron-egg/ee_game_1.png) + + +## 📒 开始使用 + +- ✒️ [安装文档](https://www.kaka996.com/pages/e64ff6/) + +## 🐶 项目案例 +- 🐟 EE框架已经应用于医疗、学校、政务、股票交易、ERP、娱乐、视频、企业等领域客户端 + +- 🐸 英雄联盟助手 + ![](https://wallace5303.gitee.io/ee/images/electron-egg/serendipity/lol-zhanji.png) + +- [更多项目](https://www.kaka996.com/pages/eadf46/) + +## 💬 交流 +1. [讨论](https://www.kaka996.com/pages/c2720e/) + +## 📌 关于pr +请前往[GitHub项目](https://github.com/dromara/electron-egg)提pr(避免代码同步后,pr被覆盖掉),感谢! + +地址:https://github.com/dromara/electron-egg + +## 📔 框架核心包 ee-core +ee-core:[https://github.com/wallace5303/ee-core](https://github.com/wallace5303/ee-core) + +## 📚 Dromara 成员项目 + +

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

+

+ + + + + + + + + + + + + + + + + + +

\ No newline at end of file diff --git a/build/extraResources/NirCmd.chm b/build/extraResources/NirCmd.chm new file mode 100644 index 0000000..52af31f Binary files /dev/null and b/build/extraResources/NirCmd.chm differ diff --git a/build/extraResources/config.json b/build/extraResources/config.json new file mode 100644 index 0000000..17df0ba --- /dev/null +++ b/build/extraResources/config.json @@ -0,0 +1,5 @@ +{ + "deviceId":"A0-29-42-42-F6-3F", + "deviceType":1, + "deptId":101 +} \ No newline at end of file diff --git a/build/extraResources/dll/myDllDemo.dll b/build/extraResources/dll/myDllDemo.dll new file mode 100644 index 0000000..ffd5446 Binary files /dev/null and b/build/extraResources/dll/myDllDemo.dll differ diff --git a/build/extraResources/nircmd.exe b/build/extraResources/nircmd.exe new file mode 100644 index 0000000..5d575ff Binary files /dev/null and b/build/extraResources/nircmd.exe differ diff --git a/build/extraResources/nircmdc.exe b/build/extraResources/nircmdc.exe new file mode 100644 index 0000000..847c69a Binary files /dev/null and b/build/extraResources/nircmdc.exe differ diff --git a/build/extraResources/read.txt b/build/extraResources/read.txt new file mode 100644 index 0000000..9417ffd --- /dev/null +++ b/build/extraResources/read.txt @@ -0,0 +1,5 @@ +建议第三方软件放置在此目录中,打包时会将资源加入安装包内。 + +1 config.json 放一个配置文件, 可以读取, + 手动设置设备的唯一id + 设备类型 diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000..56b37e1 Binary files /dev/null and b/build/icons/128x128.png differ diff --git a/build/icons/16x16.png b/build/icons/16x16.png new file mode 100644 index 0000000..fc40055 Binary files /dev/null and b/build/icons/16x16.png differ diff --git a/build/icons/256x256.png b/build/icons/256x256.png new file mode 100644 index 0000000..89c31a1 Binary files /dev/null and b/build/icons/256x256.png differ diff --git a/build/icons/32x32.png b/build/icons/32x32.png new file mode 100644 index 0000000..c92cb13 Binary files /dev/null and b/build/icons/32x32.png differ diff --git a/build/icons/48x48.png b/build/icons/48x48.png new file mode 100644 index 0000000..a85fc93 Binary files /dev/null and b/build/icons/48x48.png differ diff --git a/build/icons/512x512.png b/build/icons/512x512.png new file mode 100644 index 0000000..4cb6d92 Binary files /dev/null and b/build/icons/512x512.png differ diff --git a/build/icons/64x64.png b/build/icons/64x64.png new file mode 100644 index 0000000..0d76ebb Binary files /dev/null and b/build/icons/64x64.png differ diff --git a/build/icons/favicon.ico b/build/icons/favicon.ico new file mode 100644 index 0000000..febdc21 Binary files /dev/null and b/build/icons/favicon.ico differ diff --git a/build/icons/icon.icns b/build/icons/icon.icns new file mode 100644 index 0000000..aa79460 Binary files /dev/null and b/build/icons/icon.icns differ diff --git a/build/icons/icon.ico b/build/icons/icon.ico new file mode 100644 index 0000000..2599623 Binary files /dev/null and b/build/icons/icon.ico differ diff --git a/build/icons/icon.png b/build/icons/icon.png new file mode 100644 index 0000000..cb2b380 Binary files /dev/null and b/build/icons/icon.png differ diff --git a/build/script/installer.nsh b/build/script/installer.nsh new file mode 100644 index 0000000..e69de29 diff --git a/electron/addon/autoUpdater/index.js b/electron/addon/autoUpdater/index.js new file mode 100644 index 0000000..63baf58 --- /dev/null +++ b/electron/addon/autoUpdater/index.js @@ -0,0 +1,170 @@ +const { app: electronApp } = require('electron'); +const { autoUpdater } = require("electron-updater"); +const is = require('ee-core/utils/is'); +const Log = require('ee-core/log'); +const Conf = require('ee-core/config'); +const CoreWindow = require('ee-core/electron/window'); +const Electron = require('ee-core/electron'); + +/** + * 自动升级插件 + * @class + */ +class AutoUpdaterAddon { + + constructor() { + } + + /** + * 创建 + */ + create () { + Log.info('[addon:autoUpdater] load'); + const cfg = Conf.getValue('addons.autoUpdater'); + if ((is.windows() && cfg.windows) + || (is.macOS() && cfg.macOS) + || (is.linux() && cfg.linux)) + { + // continue + } else { + return + } + + // 是否检查更新 + if (cfg.force) { + this.checkUpdate(); + } + + const status = { + error: -1, + available: 1, + noAvailable: 2, + downloading: 3, + downloaded: 4, + } + + const version = electronApp.getVersion(); + Log.info('[addon:autoUpdater] current version: ', version); + + // 设置下载服务器地址 + let server = cfg.options.url; + let lastChar = server.substring(server.length - 1); + server = lastChar === '/' ? server : server + "/"; + //Log.info('[addon:autoUpdater] server: ', server); + cfg.options.url = server; + + // 是否后台自动下载 + autoUpdater.autoDownload = cfg.force ? true : false; + + try { + autoUpdater.setFeedURL(cfg.options); + } catch (error) { + Log.error('[addon:autoUpdater] setFeedURL error : ', error); + } + + autoUpdater.on('checking-for-update', () => { + //sendStatusToWindow('正在检查更新...'); + }) + autoUpdater.on('update-available', (info) => { + info.status = status.available; + info.desc = '有可用更新'; + this.sendStatusToWindow(info); + }) + autoUpdater.on('update-not-available', (info) => { + info.status = status.noAvailable; + info.desc = '没有可用更新'; + this.sendStatusToWindow(info); + }) + autoUpdater.on('error', (err) => { + let info = { + status: status.error, + desc: err + } + this.sendStatusToWindow(info); + }) + autoUpdater.on('download-progress', (progressObj) => { + let percentNumber = parseInt(progressObj.percent); + let totalSize = this.bytesChange(progressObj.total); + let transferredSize = this.bytesChange(progressObj.transferred); + let text = '已下载 ' + percentNumber + '%'; + text = text + ' (' + transferredSize + "/" + totalSize + ')'; + + let info = { + status: status.downloading, + desc: text, + percentNumber: percentNumber, + totalSize: totalSize, + transferredSize: transferredSize + } + Log.info('[addon:autoUpdater] progress: ', text); + this.sendStatusToWindow(info); + }) + autoUpdater.on('update-downloaded', (info) => { + info.status = status.downloaded; + info.desc = '下载完成'; + this.sendStatusToWindow(info); + + // 托盘插件默认会阻止窗口关闭,这里设置允许关闭窗口 + Electron.extra.closeWindow = true; + + autoUpdater.quitAndInstall(); + // const mainWindow = CoreWindow.getMainWindow(); + // if (mainWindow) { + // mainWindow.destroy() + // } + // electronApp.appQuit() + }); + } + + /** + * 检查更新 + */ + checkUpdate () { + autoUpdater.checkForUpdates(); + } + + /** + * 下载更新 + */ + download () { + autoUpdater.downloadUpdate(); + } + + /** + * 向前端发消息 + */ + sendStatusToWindow(content = {}) { + const textJson = JSON.stringify(content); + const channel = 'app.updater'; + const win = CoreWindow.getMainWindow(); + win.webContents.send(channel, textJson); + } + + /** + * 单位转换 + */ + bytesChange (limit) { + let size = ""; + if(limit < 0.1 * 1024){ + size = limit.toFixed(2) + "B"; + }else if(limit < 0.1 * 1024 * 1024){ + size = (limit/1024).toFixed(2) + "KB"; + }else if(limit < 0.1 * 1024 * 1024 * 1024){ + size = (limit/(1024 * 1024)).toFixed(2) + "MB"; + }else{ + size = (limit/(1024 * 1024 * 1024)).toFixed(2) + "GB"; + } + + let sizeStr = size + ""; + let index = sizeStr.indexOf("."); + let dou = sizeStr.substring(index + 1 , index + 3); + if(dou == "00"){ + return sizeStr.substring(0, index) + sizeStr.substring(index + 3, index + 5); + } + + return size; + } +} + +AutoUpdaterAddon.toString = () => '[class AutoUpdaterAddon]'; +module.exports = AutoUpdaterAddon; \ No newline at end of file diff --git a/electron/addon/awaken/index.js b/electron/addon/awaken/index.js new file mode 100644 index 0000000..e4c8a35 --- /dev/null +++ b/electron/addon/awaken/index.js @@ -0,0 +1,67 @@ +const { app: electronApp } = require('electron'); +const Log = require('ee-core/log'); +const Conf = require('ee-core/config'); + +/** + * 唤醒插件 + * @class + */ +class AwakenAddon { + + constructor() { + this.protocol = ''; + } + + /** + * 创建 + */ + create () { + Log.info('[addon:awaken] load'); + + const cfg = Conf.getValue('addons.awaken'); + this.protocol = cfg.protocol; + + electronApp.setAsDefaultProtocolClient(this.protocol); + + this.handleArgv(process.argv); + electronApp.on('second-instance', (event, argv) => { + if (process.platform === 'win32') { + this.handleArgv(argv) + } + }) + + // 仅用于macOS + electronApp.on('open-url', (event, urlStr) => { + this.handleUrl(urlStr) + }) + } + + /** + * 参数处理 + */ + handleArgv(argv) { + const offset = electronApp.isPackaged ? 1 : 2; + const url = argv.find((arg, i) => i >= offset && arg.startsWith(this.protocol)); + this.handleUrl(url) + } + + /** + * url解析 + */ + handleUrl(awakeUrlStr) { + if (!awakeUrlStr || awakeUrlStr.length === 0) { + return + } + const {hostname, pathname, search} = new URL(awakeUrlStr); + let awakeUrlInfo = { + urlStr: awakeUrlStr, + urlHost: hostname, + urlPath: pathname, + urlParams: search && search.slice(1) + } + Log.info('[addon:awaken] awakeUrlInfo:', awakeUrlInfo); + } +} + +AwakenAddon.toString = () => '[class AwakenAddon]'; +module.exports = AwakenAddon; \ No newline at end of file diff --git a/electron/addon/chromeExtension/index.js b/electron/addon/chromeExtension/index.js new file mode 100644 index 0000000..28ec636 --- /dev/null +++ b/electron/addon/chromeExtension/index.js @@ -0,0 +1,94 @@ +const { app, session } = require('electron'); +const _ = require('lodash'); +const fs = require('fs'); +const path = require('path'); +const Log = require('ee-core/log'); + +/** + * 扩展插件 (electron自身对该功能并不完全支持,官方也不建议使用) + * @class + */ +class ChromeExtensionAddon { + + constructor() { + } + + /** + * 创建 + */ + async create () { + Log.info('[addon:chromeExtension] load'); + + const extensionIds = this.getAllIds(); + for (let i = 0; i < extensionIds.length; i++) { + await this.load(extensionIds[i]); + } + } + + /** + * 获取扩展id列表(crx解压后的目录名,即是该扩展的id) + */ + getAllIds () { + const extendsionDir = this.getDirectory(); + const ids = this.getDirs(extendsionDir); + + return ids; + } + + /** + * 扩展所在目录 + */ + getDirectory () { + let extensionDirPath = ''; + let variablePath = 'build'; // 打包前路径 + if (app.isPackaged) { + variablePath = '..'; // 打包后路径 + } + extensionDirPath = path.join(app.getAppPath(), variablePath, "extraResources", "chromeExtension"); + + return extensionDirPath; + } + + /** + * 加载扩展 + */ + async load (extensionId = '') { + if (_.isEmpty(extensionId)) { + return false + } + + try { + const extensionPath = path.join(this.getDirectory(), extensionId); + Log.info('[addon:chromeExtension] extensionPath:', extensionPath); + await session.defaultSession.loadExtension(extensionPath, { allowFileAccess: true }); + } catch (e) { + Log.info('[addon:chromeExtension] load extension error extensionId:%s, errorInfo:%s', extensionId, e.toString()); + return false + } + + return true + } + + /** + * 获取目录下所有文件夹 + */ + getDirs(dir) { + if (!dir) { + return []; + } + + const components = []; + const files = fs.readdirSync(dir); + files.forEach(function(item, index) { + const stat = fs.lstatSync(dir + '/' + item); + if (stat.isDirectory() === true) { + components.push(item); + } + }); + + return components; + }; +} + +ChromeExtensionAddon.toString = () => '[class ChromeExtensionAddon]'; +module.exports = ChromeExtensionAddon; \ No newline at end of file diff --git a/electron/addon/security/index.js b/electron/addon/security/index.js new file mode 100644 index 0000000..4d87e94 --- /dev/null +++ b/electron/addon/security/index.js @@ -0,0 +1,33 @@ +const Log = require('ee-core/log'); +const EE = require('ee-core/ee'); + +/** + * 安全插件 + * @class + */ +class SecurityAddon { + + constructor() { + } + + /** + * 创建 + */ + create () { + Log.info('[addon:security] load'); + const { CoreApp } = EE; + const runWithDebug = process.argv.find(function(e){ + let isHasDebug = e.includes("--inspect") || e.includes("--inspect-brk") || e.includes("--remote-debugging-port"); + return isHasDebug; + }) + + // 不允许远程调试 + if (runWithDebug) { + Log.error('[error] Remote debugging is not allowed, runWithDebug:', runWithDebug); + CoreApp.appQuit(); + } + } +} + +SecurityAddon.toString = () => '[class SecurityAddon]'; +module.exports = SecurityAddon; \ No newline at end of file diff --git a/electron/addon/tray/index.js b/electron/addon/tray/index.js new file mode 100644 index 0000000..45bf3a2 --- /dev/null +++ b/electron/addon/tray/index.js @@ -0,0 +1,85 @@ +const { Tray, Menu, app ,BrowserWindow} = require('electron'); +const path = require('path'); +const Ps = require('ee-core/ps'); +const Log = require('ee-core/log'); +const Electron = require('ee-core/electron'); +const CoreWindow = require('ee-core/electron/window'); +const Conf = require('ee-core/config'); +const EE = require('ee-core/ee'); + +/** + * 托盘插件 + * @class + */ +class TrayAddon { + + constructor() { + this.tray = null; + } + + /** + * 创建托盘 + */ + create () { + // 开发环境,代码热更新开启时,会导致托盘中有残影 + if (Ps.isDev() && Ps.isHotReload()) return; + + Log.info('[addon:tray] load'); + const { CoreApp } = EE; + const cfg = Conf.getValue('addons.tray'); + const mainWindow = CoreWindow.getMainWindow(); + + // 托盘图标 + let iconPath = path.join(Ps.getHomeDir(), cfg.icon); + + // 托盘菜单功能列表 + let trayMenuTemplate = [ + { + label: '显示', + click: function () { + mainWindow.show(); + } + }, + { + label: '退出', + click: function () { + console.log('exit click 事件') + // CoreApp.appQuit(); + app.quit() + } + } + ] + + // 点击关闭,最小化到托盘 这里要是阻止关闭就完全无法关闭了 + mainWindow.on('close', (event) => { + console.log('close 事件') + console.log(event.sender) + // if (Electron.extra.closeWindow == true) { + // return; + // } + // mainWindow.hide(); + // 禁止关闭 + // event.preventDefault(); + //todo: 这个变量控制的方法来区分是否退出 还是不退出 + if(global.isUserExit == false){ + event.preventDefault(); + }else{ + app.quit() + } + + }); + + // 实例化托盘 + this.tray = new Tray(iconPath); + this.tray.setToolTip(cfg.title); + const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); + this.tray.setContextMenu(contextMenu); + // 左键单击的时候能够显示主窗口 + this.tray.on('click', () => { + mainWindow.show() + }) + } +} + +TrayAddon.toString = () => '[class TrayAddon]'; +module.exports = TrayAddon; \ No newline at end of file diff --git a/electron/config/bin.js b/electron/config/bin.js new file mode 100644 index 0000000..54120aa --- /dev/null +++ b/electron/config/bin.js @@ -0,0 +1,144 @@ +/** + * ee-bin 配置 + * 仅适用于开发环境 + */ +module.exports = { + /** + * development serve ("frontend" "electron" ) + * ee-bin dev + */ + dev: { + frontend: { + directory: './frontend', + cmd: 'npm', + args: ['run', 'dev'], + protocol: 'http://', + hostname: 'localhost', + port: 17680, + indexPath: 'index.html' + }, + electron: { + directory: './', + cmd: 'electron', + args: ['.', '--env=local'], + loadingPage: '/public/html/loading.html', + } + }, + + /** + * 构建 + * ee-bin build + */ + build: { + frontend: { + directory: './frontend', + cmd: 'npm', + args: ['run', 'build'], + }, + go_w: { + directory: './go', + cmd: 'go', + args: ['build', '-o=../build/extraResources/goapp.exe'], + }, + go_m: { + directory: './go', + cmd: 'go', + args: ['build', '-o=../build/extraResources/goapp'], + }, + go_l: { + directory: './go', + cmd: 'go', + args: ['build', '-o=../build/extraResources/goapp'], + }, + python: { + directory: './python', + cmd: 'python', + args: ['./setup.py', 'build'], + }, + }, + + /** + * 移动资源 + * ee-bin move + */ + move: { + frontend_dist: { + dist: './frontend/dist', + target: './public/dist' + }, + go_static: { + dist: './frontend/dist', + target: './go/public/dist' + }, + go_config: { + dist: './go/config', + target: './go/public/config' + }, + go_package: { + dist: './package.json', + target: './go/public/package.json' + }, + go_images: { + dist: './public/images', + target: './go/public/images' + }, + python_dist: { + dist: './python/dist', + target: './build/extraResources/py' + }, + }, + + /** + * 预发布模式(prod) + * ee-bin start + */ + start: { + directory: './', + cmd: 'electron', + args: ['.', '--env=prod'] + }, + + /** + * 加密 + */ + encrypt: { + type: 'confusion', + files: [ + 'electron/**/*.(js|json)', + '!electron/config/encrypt.js', + '!electron/config/nodemon.json', + '!electron/config/builder.json', + '!electron/config/bin.json', + ], + fileExt: ['.js'], + confusionOptions: { + compact: true, + stringArray: true, + stringArrayEncoding: ['none'], + deadCodeInjection: false, + } + }, + + /** + * 执行自定义命令 + * ee-bin exec + */ + exec: { + node_v: { + directory: './', + cmd: 'node', + args: ['-v'], + }, + npm_v: { + directory: './', + cmd: 'npm', + args: ['-v'], + }, + python: { + directory: './python', + cmd: 'python', + args: ['./main.py', '--port=7074'], + stdio: "inherit", // ignore + }, + }, +}; \ No newline at end of file diff --git a/electron/config/builder.json b/electron/config/builder.json new file mode 100644 index 0000000..93dd5fe --- /dev/null +++ b/electron/config/builder.json @@ -0,0 +1,56 @@ +{ + "productName": "appCtr", + "appId": "com.electron.appCtr", + "copyright": "© 2023 安徽烁景智能科技有限公司 Technology Co., Ltd.", + "directories": { + "output": "out" + }, + "asar": true, + "files": [ + "**/*", + "!frontend/", + "!run/", + "!logs/", + "!go/", + "!python/", + "!data/" + ], + "extraResources": { + "from": "build/extraResources/", + "to": "extraResources" + }, + "nsis": { + "oneClick": false, + "allowElevation": true, + "allowToChangeInstallationDirectory": true, + "installerIcon": "build/icons/icon.ico", + "uninstallerIcon": "build/icons/icon.ico", + "installerHeaderIcon": "build/icons/icon.ico", + "createDesktopShortcut": true, + "createStartMenuShortcut": true, + "shortcutName": "appCtr" + }, + "mac": { + "icon": "build/icons/icon.icns", + "artifactName": "${productName}-${os}-${version}-${arch}.${ext}", + "darkModeSupport": true, + "hardenedRuntime": false + }, + "win": { + "icon": "build/icons/icon.ico", + "artifactName": "${productName}-${os}-${version}-${arch}.${ext}", + "target": [ + { + "target": "nsis" + } + ] + }, + "linux": { + "icon": "build/icons", + "artifactName": "${productName}-${os}-${version}-${arch}.${ext}", + "target": [ + "deb" + ], + "category": "Utility" + } +} \ No newline at end of file diff --git a/electron/config/config.default.js b/electron/config/config.default.js new file mode 100644 index 0000000..f214b01 --- /dev/null +++ b/electron/config/config.default.js @@ -0,0 +1,215 @@ +'use strict'; + +const path = require('path'); + +/** + * 默认配置 + */ +module.exports = (appInfo) => { + + const config = {}; + + /** + * 开发者工具 + */ + config.openDevTools = true; + + /** + * 应用程序顶部菜单 + */ + config.openAppMenu = true; + + /** + * 主窗口 + */ + config.windowsOption = { + title: 'appCtr', + width: 980, + height: 650, + minWidth: 400, + minHeight: 300, + // 禁止缩小 + resizable: false, + // 禁止最小化 + minimizable: false, + webPreferences: { + //webSecurity: false, + contextIsolation: false, // false -> 可在渲染进程中使用electron的api,true->需要bridge.js(contextBridge) + nodeIntegration: true, + //preload: path.join(appInfo.baseDir, 'preload', 'bridge.js'), + }, + frame: true, + show: false, + icon: path.join(appInfo.home, 'public', 'images', 'logo-32.png'), + }; + + /** + * ee框架日志 + */ + config.logger = { + encoding: 'utf8', + level: 'INFO', + outputJSON: false, + buffer: true, + enablePerformanceTimer: false, + rotator: 'day', + appLogName: 'appCtr.log', + coreLogName: 'appCtr-core.log', + errorLogName: 'appCtr-error.log' + } + + /** + * 远程模式-web地址 + */ + config.remoteUrl = { + enable: false, + url: 'http://electron-egg.kaka996.com/' + }; + + /** + * 内置socket服务 + */ + config.socketServer = { + enable: false, + port: 7070, + path: "/socket.io/", + connectTimeout: 45000, + pingTimeout: 30000, + pingInterval: 25000, + maxHttpBufferSize: 1e8, + transports: ["polling", "websocket"], + cors: { + origin: true, + } + }; + + /** + * 内置http服务 + */ + config.httpServer = { + enable: false, + https: { + enable: false, + key: '/public/ssl/localhost+1.key', + cert: '/public/ssl/localhost+1.pem' + }, + host: '127.0.0.1', + port: 7071, + cors: { + origin: "*" + }, + body: { + multipart: true, + formidable: { + keepExtensions: true + } + }, + filterRequest: { + uris: [ + 'favicon.ico' + ], + returnData: '' + } + }; + + /** + * 主进程 + */ + config.mainServer = { + protocol: 'file://', + indexPath: '/public/dist/index.html', + host: '127.0.0.1', + port: 7072, + }; + + + /** + * Cross-language service + * 跨语言服务 + * 例如:执行go的二进制程序,默认目录为 ./extraResources/ + */ + config.cross = { + go: { + enable: false, + name: 'goapp', + args: ['--port=7073'], + appExit: true, + }, + python: { + enable: false, + name: 'pyapp', + cmd: './py/pyapp', + directory: './py', + args: ['--port=7074'], + appExit: true, + }, + }; + + /** + * 硬件加速 + */ + config.hardGpu = { + enable: true + }; + + /** + * 异常捕获 + */ + config.exception = { + mainExit: false, + childExit: true, + rendererExit: true, + }; + + /** + * jobs + */ + config.jobs = { + messageLog: true + }; + + /** + * 插件功能 + */ + config.addons = { + window: { + enable: true, + }, + tray: { + enable: true, + title: 'appCtr', + icon: '/public/images/tray.png' + }, + security: { + enable: true, + }, + awaken: { + enable: true, + protocol: 'appCtr', + args: [] + }, + autoUpdater: { + enable: true, + windows: false, + macOS: false, + linux: false, + options: { + provider: 'generic', + url: 'http://kodo.qiniu.com/' + }, + force: false, + + }, + javaServer: { + enable: false, + port: 117680, + jreVersion: 'jre1.8.0_201', + opt: '-server -Xms512M -Xmx512M -Xss512k -Dspring.profiles.active=prod -Dserver.port=${port} -Dlogging.file.path="${path}" ', + name: 'java-app.jar' + } + }; + + return { + ...config + }; +} diff --git a/electron/config/config.local.js b/electron/config/config.local.js new file mode 100644 index 0000000..71649c8 --- /dev/null +++ b/electron/config/config.local.js @@ -0,0 +1,60 @@ +'use strict'; + +/** + * 开发环境配置,覆盖 config.default.js + */ +module.exports = (appInfo) => { + const config = {}; + + /** + * 开发者工具 + */ + config.openDevTools = { + mode: 'undocked' + }; + + /** + * 应用程序顶部菜单 + */ + config.openAppMenu = true; + + /** + * jobs + */ + config.jobs = { + messageLog: true + }; + + /** + * Cross-language service + * 跨语言服务 + * 如果有cmd参数,则执行该命令且需要指定 directory + */ + config.cross = { + go: { + // 应用运行时启动 + enable: false, + // 程序名 + name: 'goapp', + // 可执行程序 + cmd: 'go', + // 程序目录 + directory: './go', + args: ['run', './main.go', '--env=dev','--basedir=../', '--port=7073'], + appExit: true, + }, + python: { + enable: false, + name: 'pyapp', + cmd: 'python', + directory: './python', + args: ['./main.py', '--port=7074'], + stdio: "ignore", + appExit: true, + }, + }; + + return { + ...config + }; +}; diff --git a/electron/config/config.prod.js b/electron/config/config.prod.js new file mode 100644 index 0000000..5c5218d --- /dev/null +++ b/electron/config/config.prod.js @@ -0,0 +1,29 @@ +'use strict'; + +/** + * 生产环境配置,覆盖 config.default.js + */ +module.exports = (appInfo) => { + const config = {}; + + /** + * 开发者工具 + */ + config.openDevTools = false; + + /** + * 应用程序顶部菜单 + */ + config.openAppMenu = false; + + /** + * jobs + */ + config.jobs = { + messageLog: false + }; + + return { + ...config + }; +}; diff --git a/electron/config/nodemon.json b/electron/config/nodemon.json new file mode 100644 index 0000000..735e7fb --- /dev/null +++ b/electron/config/nodemon.json @@ -0,0 +1,12 @@ +{ + "watch": [ + "electron/" + ], + "ignore": [], + "ext": "js,json", + "verbose": true, + "exec": "ee-bin dev", + "restartable": "hr", + "colours": true, + "events": {} +} \ No newline at end of file diff --git a/electron/controller/cross.js b/electron/controller/cross.js new file mode 100644 index 0000000..b67f85a --- /dev/null +++ b/electron/controller/cross.js @@ -0,0 +1,100 @@ +'use strict'; + +const { Controller } = require('ee-core'); +const Cross = require('ee-core/cross'); +const Log = require('ee-core/log'); +const HttpClient = require('ee-core/httpclient'); +const Services = require('ee-core/services'); + +/** + * Cross + * @class + */ +class CrossController extends Controller { + + constructor(ctx) { + super(ctx); + } + + /** + * View process service information + */ + info() { + const pids = Cross.getPids(); + Log.info('cross pids:', pids); + + let num = 1; + pids.forEach(pid => { + let entity = Cross.getProc(pid); + Log.info(`server-${num} name:${entity.name}`); + Log.info(`server-${num} config:`, entity.config); + num++; + }) + + return 'hello electron-egg'; + } + + /** + * Get service url + */ + async getUrl(args) { + const { name } = args; + const serverUrl = Cross.getUrl(name); + return serverUrl; + } + + /** + * kill service + * By default (modifiable), killing the process will exit the electron application. + */ + async killServer(args) { + const { type, name } = args; + if (type == 'all') { + Cross.killAll(); + } else { + Cross.killByName(name); + } + + return; + } + + /** + * create service + */ + async createServer(args) { + const { program } = args; + if (program == 'go') { + Services.get('cross').createGoServer(); + } else if (program == 'java') { + Services.get('cross').createJavaServer(); + } else if (program == 'python') { + Services.get('cross').createPythonServer(); + } + + return; + } + + /** + * Access the api for the cross service + */ + async requestApi(args) { + const { name, urlPath, params} = args; + const hc = new HttpClient(); + const serverUrl = Cross.getUrl(name); + console.log('Server Url:', serverUrl); + + const apiHello = serverUrl + urlPath; + const options = { + method: 'GET', + data: params || {}, + dataType: 'json', + timeout: 1000, + }; + const result = await hc.request(apiHello, options); + + return result.data; + } +} + +CrossController.toString = () => '[class CrossController]'; +module.exports = CrossController; \ No newline at end of file diff --git a/electron/controller/effect.js b/electron/controller/effect.js new file mode 100644 index 0000000..039850d --- /dev/null +++ b/electron/controller/effect.js @@ -0,0 +1,71 @@ +'use strict'; + +const { Controller } = require('ee-core'); +const { dialog } = require('electron'); +const _ = require('lodash'); +const CoreWindow = require('ee-core/electron/window'); + +/** + * 特效 - 功能demo + * @class + */ +class EffectController extends Controller { + + constructor(ctx) { + super(ctx); + } + + /** + * 选择文件 + */ + selectFile() { + const filePaths = dialog.showOpenDialogSync({ + properties: ['openFile'] + }); + + if (_.isEmpty(filePaths)) { + return null + } + + return filePaths[0]; + } + + /** + * login window + */ + loginWindow(args) { + const { width, height } = args; + const win = CoreWindow.getMainWindow(); + + const size = { + width: width || 400, + height: height || 300 + } + win.setSize(size.width, size.height); + win.setResizable(true); + win.center(); + win.show(); + win.focus(); + } + + /** + * restore window + */ + restoreWindow(args) { + const { width, height } = args; + const win = CoreWindow.getMainWindow(); + + const size = { + width: width || 980, + height: height || 650 + } + win.setSize(size.width, size.height); + win.setResizable(true); + win.center(); + win.show(); + win.focus(); + } +} + +EffectController.toString = () => '[class EffectController]'; +module.exports = EffectController; \ No newline at end of file diff --git a/electron/controller/example.js b/electron/controller/example.js new file mode 100644 index 0000000..a527486 --- /dev/null +++ b/electron/controller/example.js @@ -0,0 +1,75 @@ +'use strict'; + +const { Controller } = require('ee-core'); +const Log = require('ee-core/log'); +const Services = require('ee-core/services'); +const Addon = require('ee-core/addon'); + +/** + * example + * @class + */ +class ExampleController extends Controller { + + constructor(ctx) { + super(ctx); + } + + + /** + * 所有方法接收两个参数 + * @param args 前端传的参数 + * @param event - ipc通信时才有值。详情见:控制器文档 + */ + + /** + * test + */ + async test () { + + // const result1 = await Services.get('example').test('electron'); + // Log.info('service result1:', result1); + + // Services.get('framework').test('electron'); + + return 'hello electron-egg'; + } + + /** + * test + */ + async testUtils () { + let mid = await Utils.machineIdSync(true); + Log.info('mid 11111111:', mid); + + Utils.machineId().then((id) => { + Log.info('mid 222222222:', id); + }); + + return; + } + + /** + * test + */ + async testService () { + const serviceResult2 = await Services.get('example').test('electron'); + Log.info('service result2:', serviceResult2); + + return; + } + + /** + * test + */ + async testAddon () { + const trayResult2 = Addon.get('tray').hello(); + Log.info('addon result2:', trayResult2); + + return; + } + +} + +ExampleController.toString = () => '[class ExampleController]'; +module.exports = ExampleController; \ No newline at end of file diff --git a/electron/controller/framework.js b/electron/controller/framework.js new file mode 100644 index 0000000..90ae21b --- /dev/null +++ b/electron/controller/framework.js @@ -0,0 +1,547 @@ +'use strict'; + +const path = require('path'); +const fs = require('fs'); +const { exec } = require('child_process'); +const { Controller } = require('ee-core'); +const { app: electronApp, shell } = require('electron'); +const dayjs = require('dayjs'); +const Ps = require('ee-core/ps'); +const Log = require('ee-core/log'); +const Services = require('ee-core/services'); +const Conf = require('ee-core/config'); +const Addon = require('ee-core/addon'); +const EE = require('ee-core/ee'); +const { getNetworkIFaceOne, getMac, getAllMac, getAllPhysicsMac } = require('@lzwme/get-physical-address'); +const os = require('os'); +// 网络 +const net = require('net'); +// 串口 +const { SerialPort } = require('serialport') +// 保存串口实例 +var GlobalSeriaPortIns = undefined; +/** + * electron-egg framework - 功能demo + * @class + */ +class FrameworkController extends Controller { + + constructor(ctx) { + super(ctx); + } + + /** + * 所有方法接收两个参数 + * @param args 前端传的参数 + * @param event - ipc通信时才有值。详情见:控制器文档 + */ + + + + + /** + * 发送串口消息 + * @param {*} seriaPort 串口实例 + */ + sendSeriaPort(args) { + const port = GlobalSeriaPortIns; + const msg = args.msg; + port.write(msg, 'hex') + // console.log('测试发送消息'+msg); + } + /** + * 连接串口 只执行一次 + * @param {*} options 串口参数 + * @param {*} event 回调. + */ + connectSeriaPort(options, event) { + + // 保证执行一次 + if (GlobalSeriaPortIns != undefined) { + console.log("SerialPort is have"); + return; + } + const channel = 'controller.hardware.connectSeriaPort'; + const port = new SerialPort(options, (e) => { + console.log("SerialPort open"); + console.log(e); + if (e === null) { + // 打开成功 把串口发送出去 + let data2 = { + type: 'connect' + } + event.reply(`${channel}`, data2) + } + + }) + + port.on('data', (data) => { + let data2 = { + type: 'received', + data: data + } + console.log(`Received data: ${data2}`) + event.reply(`${channel}`, data2) + }) + setInterval(() => { + // console.log('setInterval') + if (!port.isOpen) { + // console.log('setInterval open') + port.open(); + } + + }, 1000) + port.on('close', () => { + let data2 = { + type: 'close' + } + console.log(`SerialPort close: ${data2}`) + event.reply(`${channel}`, data2) + }) + port.on('error', (e) => { + let data2 = { + type: 'error' + } + console.log(`SerialPort error: ${e}`) + event.reply(`${channel}`, data2) + }) + + GlobalSeriaPortIns = port; + + } + + /** + * 发送tcp 消息 + * @param {*} args 包含host port msg type { 1 hex, 2 ascii} + * @param {*} event + */ + sendTcpSocket(args, event) { + const channel = 'controller.example.sendTcpSocket'; + console.log("tcp params") + console.log(args); + const client = new net.Socket(); + // client.setEncoding('ascii'); + const HOST = args.host; + const PORT = args.port; + const msg = args.msg; + + // const HOST = '192.168.5.134'; + // const PORT = 9080; + client.connect(PORT, HOST, function () { + console.log('Connected to: ' + HOST + ':' + PORT); + }); + + client.on('data', function (data) { + console.log('Received: ' + data); + event.sender.send(`${channel}`, data); + }); + //两种码的发送 ok + // client.write('Hello, server!','ascii'); + if (args.type == 1) { + client.write(msg, 'hex'); + } else { + client.write(msg, 'ascii'); + } + + client.on('close', function () { + console.log('Connection closed'); + }); + client.end(); + + } + + + + /** + * 获取extraResources 目录下的json 配置文件 + * @param {*} name 配置文件名 + * @returns 返回json 字符传 + */ + getExResConfig(name) { + let configPath = path.join(Ps.getExtraResourcesDir(), name);; + + console.log(configPath) + // let configJSON = null; + let dataString = null; + try { + // 同步读取配置文件 + dataString = fs.readFileSync(configPath, 'utf8'); + + // 解析 JSON 格式的配置数据 + // configJSON = JSON.parse(data); + // console.log('读取到的配置:', configJSON); + + // 在这里可以根据需要使用配置数据进行操作 + } catch (err) { + console.error('无法读取配置文件:', err); + } + return dataString; + } + + + + /** + * json数据库操作 + */ + async jsondbOperation(args) { + const { action, info, delete_name, update_name, update_age, search_age, data_dir } = args; + + const data = { + action, + result: null, + all_list: [] + }; + + switch (action) { + case 'add': + data.result = await Services.get('database.jsondb').addTestData(info); + break; + case 'del': + data.result = await Services.get('database.jsondb').delTestData(delete_name); + break; + case 'update': + data.result = await Services.get('database.jsondb').updateTestData(update_name, update_age); + break; + case 'get': + data.result = await Services.get('database.jsondb').getTestData(search_age); + break; + case 'getDataDir': + data.result = await Services.get('database.jsondb').getDataDir(); + break; + case 'setDataDir': + data.result = await Services.get('database.jsondb').setCustomDataDir(data_dir); + break; + } + + data.all_list = await Services.get('database.jsondb').getAllTestData(); + + return data; + } + + /** + * sqlite数据库操作 + */ + async sqlitedbOperation(args) { + const { action, info, delete_name, update_name, update_age, search_age, data_dir } = args; + + const data = { + action, + result: null, + all_list: [], + code: 0 + }; + + try { + // test + Services.get('database.sqlitedb').getDataDir(); + } catch (err) { + console.log(err); + data.code = -1; + return data; + } + + switch (action) { + case 'add': + data.result = await Services.get('database.sqlitedb').addTestDataSqlite(info);; + break; + case 'del': + data.result = await Services.get('database.sqlitedb').delTestDataSqlite(delete_name);; + break; + case 'update': + data.result = await Services.get('database.sqlitedb').updateTestDataSqlite(update_name, update_age); + break; + case 'get': + data.result = await Services.get('database.sqlitedb').getTestDataSqlite(search_age); + break; + case 'getDataDir': + data.result = await Services.get('database.sqlitedb').getDataDir(); + break; + case 'setDataDir': + data.result = await Services.get('database.sqlitedb').setCustomDataDir(data_dir); + break; + } + + data.all_list = await Services.get('database.sqlitedb').getAllTestDataSqlite(); + + return data; + } + + /** + * 调用其它程序(exe、bash等可执行程序) + */ + openSoftware(softName) { + if (!softName) { + return false; + } + + let softwarePath = path.join(Ps.getExtraResourcesDir(), softName); + Log.info('[openSoftware] softwarePath:', softwarePath); + + // 检查程序是否存在 + if (!fs.existsSync(softwarePath)) { + return false; + } + // 命令行字符串 并 执行 + let cmdStr = 'start ' + softwarePath; + exec(cmdStr); + + return true; + } + + /** + * 检查是否有新版本 + */ + checkForUpdater() { + Addon.get('autoUpdater').checkUpdate(); + return; + } + + /** + * 下载新版本 + */ + downloadApp() { + Addon.get('autoUpdater').download(); + return; + } + + /** + * 检测http服务是否开启 + */ + async checkHttpServer() { + const httpServerConfig = Conf.getValue('httpServer'); + const url = httpServerConfig.protocol + httpServerConfig.host + ':' + httpServerConfig.port; + + const data = { + enable: httpServerConfig.enable, + server: url + } + return data; + } + + /** + * 一个http请求访问此方法 + */ + async doHttpRequest() { + const { CoreApp } = EE; + // http方法 + const method = CoreApp.request.method; + // http get 参数 + let params = CoreApp.request.query; + params = (params instanceof Object) ? params : JSON.parse(JSON.stringify(params)); + // http post 参数 + const body = CoreApp.request.body; + + const httpInfo = { + method, + params, + body + } + Log.info('httpInfo:', httpInfo); + + if (!body.id) { + return false; + } + const dir = electronApp.getPath(body.id); + shell.openPath(dir); + + return true; + } + + /** + * 一个socket io请求访问此方法 + */ + async doSocketRequest(args) { + if (!args.id) { + return false; + } + const dir = electronApp.getPath(args.id); + shell.openPath(dir); + + return true; + } + + /** + * 异步消息类型 + */ + async ipcInvokeMsg(args, event) { + let timeNow = dayjs().format('YYYY-MM-DD HH:mm:ss'); + const data = args + ' - ' + timeNow; + + return data; + } + + /** + * 同步消息类型 + */ + async ipcSendSyncMsg(args) { + let timeNow = dayjs().format('YYYY-MM-DD HH:mm:ss'); + const data = args + ' - ' + timeNow; + + return data; + } + + /** + * 双向异步通信 + */ + async ipcSendMsg(args, event) { + const { type, content } = args; + const data = await Services.get('framework').bothWayMessage(type, content, event); + + return data; + } + + /** + * 不建议使用,请使用electron的api来获取文件的本机路径,然后读取并上传 + * 使用http的files属性,实际上多余拷贝一次文件 + */ + + async uploadFile() { + const { CoreApp } = EE; + let tmpDir = Ps.getLogDir(); + const files = CoreApp.request.files; + let file = files.file; + + let tmpFilePath = path.join(tmpDir, file.originalFilename); + try { + let tmpFile = fs.readFileSync(file.filepath); + fs.writeFileSync(tmpFilePath, tmpFile); + } finally { + await fs.unlink(file.filepath, function () { }); + } + const fileStream = fs.createReadStream(tmpFilePath); + const uploadRes = await Services.get('framework').uploadFileToSMMS(fileStream); + + return uploadRes; + } + + /** + * 启动java项目 + */ + async startJavaServer() { + let data = { + code: 0, + msg: '', + server: '' + } + const javaCfg = Conf.getValue('addons.javaServer') || {}; + if (!javaCfg.enable) { + data.code = -1; + data.msg = 'addon not enabled!'; + return data; + } + + await Addon.get('javaServer').createServer(); + + data.server = 'http://localhost:' + javaCfg.port; + + return data; + } + + /** + * 关闭java项目 + */ + async closeJavaServer() { + let data = { + code: 0, + msg: '', + } + const javaCfg = Conf.getValue('addons.javaServer') || {}; + if (!javaCfg.enable) { + data.code = -1; + data.msg = 'addon not enabled!'; + return data; + } + + await Addon.get('javaServer').kill(); + + return data; + } + + /** + * java运行状态 + */ + async runStatus() { + let data = { + code: 0, + msg: '', + flag: false + } + const flag = await Addon.get('javaServer').check(); + //Log.info("[FrameworkController:runStatus] flag-----------"+flag); + data.flag = flag; + + return data; + } + + /** + * 任务 + */ + someJob(args, event) { + let jobId = args.id; + let action = args.action; + + let result; + switch (action) { + case 'create': + result = Services.get('framework').doJob(jobId, action, event); + break; + case 'close': + Services.get('framework').doJob(jobId, action, event); + break; + default: + } + + let data = { + jobId, + action, + result + } + return data; + } + + /** + * 创建任务池 + */ + async createPool(args, event) { + let num = args.number; + Services.get('framework').doCreatePool(num, event); + + // test monitor + Services.get('framework').monitorJob(); + + return; + } + + /** + * 通过进程池执行任务 + */ + someJobByPool(args, event) { + let jobId = args.id; + let action = args.action; + + let result; + switch (action) { + case 'run': + result = Services.get('framework').doJobByPool(jobId, action, event); + break; + default: + } + + let data = { + jobId, + action, + result + } + return data; + } + + /** + * 测试接口 + */ + hello(args) { + Log.info('hello ', args); + } +} + +FrameworkController.toString = () => '[class FrameworkController]'; +module.exports = FrameworkController; \ No newline at end of file diff --git a/electron/controller/hardware.js b/electron/controller/hardware.js new file mode 100644 index 0000000..97ff8e8 --- /dev/null +++ b/electron/controller/hardware.js @@ -0,0 +1,72 @@ +'use strict'; + +const { Controller } = require('ee-core'); +const path = require('path'); +const Ps = require('ee-core/ps'); +const CoreWindow = require('ee-core/electron/window'); +const Addon = require('ee-core/addon'); + +/** + * 硬件设备 - 功能demo + * @class + */ +class HardwareController extends Controller { + + constructor(ctx) { + super(ctx); + } + + /** + * 获取打印机列表 + */ + async getPrinterList () { + + //主线程获取打印机列表 + const win = CoreWindow.getMainWindow(); + const list = await win.webContents.getPrintersAsync(); + + return list; + } + + /** + * 打印 + */ + print (args, event) { + const { view, deviceName } = args; + let content = null; + if (view.type == 'html') { + content = path.join('file://', Ps.getHomeDir(), view.content) + } else { + content = view.content; + } + + let opt = { + title: 'printer window', + x: 10, + y: 10, + width: 980, + height: 650 + } + const name = 'window-printer'; + const printWindow = Addon.get('window').create(name, opt); + + printWindow.loadURL(content); + printWindow.webContents.once('did-finish-load', () => { + // 页面完全加载完成后,开始打印 + printWindow.webContents.print({ + silent: false, // 显示打印对话框 + printBackground: true, + deviceName, + }, (success, failureReason) => { + const channel = 'controller.hardware.printStatus'; + event.reply(`${channel}`, { success, failureReason }); + printWindow.close(); + }); + }); + + return true; + } +} + +HardwareController.toString = () => '[class HardwareController]'; +module.exports = HardwareController; \ No newline at end of file diff --git a/electron/controller/os.js b/electron/controller/os.js new file mode 100644 index 0000000..43a43ac --- /dev/null +++ b/electron/controller/os.js @@ -0,0 +1,634 @@ +'use strict'; + +const _ = require('lodash'); +const path = require('path'); +const { Controller } = require('ee-core'); +const { + app: electronApp, dialog, shell, Notification, + powerMonitor, screen, nativeTheme +} = require('electron'); +const Conf = require('ee-core/config'); +const Ps = require('ee-core/ps'); +const Services = require('ee-core/services'); +const Addon = require('ee-core/addon'); +const { getNetworkIFaceOne, getMac, getAllMac, getAllPhysicsMac } = require('@lzwme/get-physical-address'); +const os = require('os'); +const shutdown = require('electron-shutdown-command'); +// 终端命令 +const { exec, execSync, execFile } = require("child_process"); +// 声音控制库 https://github.com/LinusU/node-loudness +const loudness = require("loudness"); +// 文件处理 +const fs = require('fs'); +/** + * 操作系统 - 功能demo + * @class + */ +class OsController extends Controller { + + constructor(ctx) { + super(ctx); + } + + /** + * 所有方法接收两个参数 + * @param args 前端传的参数 + * @param event - ipc通信时才有值。详情见:控制器文档 + */ + + + // 获取所有的网卡-无参数 + async getAllMac(args) { + // 文档说明 https://github.com/lzwme/get-physical-address/blob/main/.github/README_zh-CN.md + const list = getAllPhysicsMac(); + return list; + } + // 查找到指定进程并关闭? 注意 进程要全, 不然容易误杀 + deviceKillName(name) { + // 最新 taskkill /F /IM program.exe 这个命令一句话能直接杀掉进程 + const self = this; + let rebootShell = "tasklist|findstr " + name; + let command = exec(rebootShell, function (err, stdout, stderr) { + if (err || stderr) { + console.log("tasklist failed" + err + stderr); + } else { + const lines = stdout.split('\n') + console.log(lines); + for (let index = 0; index < lines.length; index++) { + const element = lines[index]; + const strs = element.split(' ') + const firstNumber = strs.find(item => !isNaN(Number(item)) && item != '') + console.log('jincheng id :' + firstNumber); + self.deviceKillPid(firstNumber) + } + } + }); + command.stdin.end(); + command.on("close", function (code) { + console.log("tasklist", code); + }); + } + // 杀掉pid 进程 + deviceKillPid(pid) { + let rebootShell = "tskill " + pid; + let command = exec(rebootShell, function (err, stdout, stderr) { + if (err || stderr) { + console.log("tskill failed" + err + stderr); + } + }) + command.stdin.end(); + command.on("close", function (code) { + console.log("tskill", code); + }); + } + + // 启动指定目录的程序 可能有权限问题, 方案1 打包后管理员权限执行, 2 按照egg 的方案把需要执行的程序拷贝到安装包 + deviceStarExe(path) { + + let rebootShell = 'start ' + path; + exec(rebootShell); + + } + /** + * 设备关机 + */ + deviceShutdown() { + // 关机 + // let shutdownShell = "shutdown -s -t 00"; + console.log('deviceShutdown=============') + shutdown.shutdown(); + return true; + } + deviceRestart(args) { + // 重启 + let rebootShell = "shutdown -r -t 0"; + let command = exec(rebootShell, function (err, stdout, stderr) { + if (err || stderr) { + console.log("shutdown failed" + err + stderr); + } + }); + command.stdin.end(); + command.on("close", function (code) { + console.log("shutdown", code); + }); + } + // 同步执行 声音设置 支持0-100 + async deviceLoudness(args) { + const value = args.value; + //操作系统平台 + const pf = os.platform(); + console.log("OS: " + pf) + // 特殊处理以下 + if (pf == "linux") { + let shellStr = "amixer -D pulse set Master " + value + "% unmute" + if (value == 0) { + shellStr = "amixer -D pulse set Master mute" + + } + + // else{ + // shellStr = "amixer -c 0 set Master,0 100%,80% unmute" + // } + + let command = exec(shellStr, function (err, stdout, stderr) { + if (err || stderr) { + console.log("amixer failed" + err + stderr); + } + }); + command.stdin.end(); + command.on("close", function (code) { + console.log("amixer", code); + }); + + return; + } else { + /// 兼容模式, try catch 如果第一种方式报错, 在采用第二种 + try { + //0 为静音 + if (value == 0) { + await loudness.setMuted(true) + return await loudness.getMuted() + } + // 设置声音改为不静音 且设置声音 + await loudness.setMuted(false) + await loudness.setVolume(value) + const newValue = await loudness.getVolume(); + return newValue; + } catch { + const maxVolume = 65535; + let volumeValue = Math.round((value / 100) * maxVolume); + + // 确保音量值在有效范围内 + volumeValue = Math.max(0, Math.min(maxVolume, volumeValue)); + + // 将音量值转换为字符串 + const valueStr = volumeValue.toString(); + + let excPath = path.join(Ps.getExtraResourcesDir(), 'nircmd.exe'); + + execFile(excPath, ['setsysvolume', valueStr], (error, stdout, stderr) => { + if (error) { + console.error(' Nircmd error: ', error); + return; + } + console.log('Nircmd ok '); + }); + + return value; + } + + + } + } + // 获取电脑信息 + async getOSMessage(args) { + var OSDic = {}; + var dealTime = (seconds) => { + var seconds = seconds | 0; + var day = (seconds / (3600 * 24)) | 0; + var hours = ((seconds - day * 3600) / 3600) | 0; + var minutes = ((seconds - day * 3600 * 24 - hours * 3600) / 60) | 0; + var second = seconds % 60; + (day < 10) && (day = '0' + day); + (hours < 10) && (hours = '0' + hours); + (minutes < 10) && (minutes = '0' + minutes); + (second < 10) && (second = '0' + second); + return [day, hours, minutes, second].join(':'); + }; + + var dealMem = (mem) => { + var G = 0, + M = 0, + KB = 0; + (mem > (1 << 30)) && (G = (mem / (1 << 30)).toFixed(2)); + (mem > (1 << 20)) && (mem < (1 << 30)) && (M = (mem / (1 << 20)).toFixed(2)); + (mem > (1 << 10)) && (mem > (1 << 20)) && (KB = (mem / (1 << 10)).toFixed(2)); + return G > 0 ? G + 'G' : M > 0 ? M + 'M' : KB > 0 ? KB + 'KB' : mem + 'B'; + }; + + //cpu架构 + const arch = os.arch(); + // console.log("cpu架构:" + arch); + OSDic["arch"] = arch; + + //操作系统内核 + const kernel = os.type(); + // console.log("操作系统内核:" + kernel); + OSDic["kernel"] = kernel; + + //操作系统平台 + const pf = os.platform(); + // console.log("平台:" + pf); + OSDic["pf"] = pf; + + //系统开机时间 + const uptime = os.uptime(); + // console.log("开机时间:" + dealTime(uptime)); + OSDic["uptime"] = uptime; + //主机名 + const hn = os.hostname(); + // console.log("主机名:" + hn); + OSDic["hostname"] = hn; + // //主目录 + // const hdir = os.homedir(); + // console.log("主目录:" + hdir); + // OSDic["homedir"] = hdir; + + //内存 + const totalMem = os.totalmem(); + const freeMem = os.freemem(); + // console.log("内存大小:" + dealMem(totalMem) + ' 空闲内存:' + dealMem(freeMem)); + OSDic["totalmem"] = totalMem; + OSDic["freeMem"] = freeMem; + //cpu + const cpus = os.cpus(); + OSDic["cpuModel"] = cpus[0]["model"]; + // OSDic["cpus"] = cpus; + // console.log('*****cpu信息*******'); + // cpus.forEach((cpu, idx, arr) => { + // var times = cpu.times; + // console.log(`cpu${idx}:`); + // console.log(`型号:${cpu.model}`); + // console.log(`频率:${cpu.speed}MHz`); + // console.log(`使用率:${((1 - times.idle / (times.idle + times.user + times.nice + times.sys + times.irq)) * 100).toFixed(2)}%`); + // }); + + try { + const volumeValue = await loudness.getVolume() + + OSDic["volume"] = volumeValue; + console.log('volumeValue' + volumeValue); + + } catch (error) { + console.log(error) + } + + return OSDic; + } + // const volume = await loudness.getVolume() + // OSDic["volume"] = volume; + // return OSDic; + // } + /** + * 获取当前目录的配置 + * @param {*} name 配置文件名 + * @returns + */ + getCurrentDirectoryConfig(name) { + let configPath = ''; + configPath = path.join(Ps.getExtraResourcesDir(), name); + console.log(configPath) + // let configJSON = null; + let dataString = null; + try { + // 同步读取配置文件 + dataString = fs.readFileSync(configPath, 'utf8'); + + // 解析 JSON 格式的配置数据 + // configJSON = JSON.parse(data); + // console.log('读取到的配置:', configJSON); + + // 在这里可以根据需要使用配置数据进行操作 + } catch (err) { + console.error('无法读取配置文件:', err); + } + return dataString; + } + /** + * 消息提示对话框 + */ + messageShow() { + dialog.showMessageBoxSync({ + type: 'info', // "none", "info", "error", "question" 或者 "warning" + title: '自定义标题-message', + message: '自定义消息内容', + detail: '其它的额外信息' + }) + + return '打开了消息框'; + } + + /** + * 消息提示与确认对话框 + */ + messageShowConfirm() { + const res = dialog.showMessageBoxSync({ + type: 'info', + title: '自定义标题-message', + message: '自定义消息内容', + detail: '其它的额外信息', + cancelId: 1, // 用于取消对话框的按钮的索引 + defaultId: 0, // 设置默认选中的按钮 + buttons: ['确认', '取消'], // 按钮及索引 + }) + let data = (res === 0) ? '点击确认按钮' : '点击取消按钮'; + + return data; + } + + /** + * 选择目录 + */ + selectFolder() { + const filePaths = dialog.showOpenDialogSync({ + properties: ['openDirectory', 'createDirectory'] + }); + + if (_.isEmpty(filePaths)) { + return null + } + + return filePaths[0]; + } + + /** + * 打开目录 + */ + openDirectory(args) { + if (!args.id) { + return false; + } + let dir = ''; + if (path.isAbsolute(args.id)) { + dir = args.id; + } else { + dir = electronApp.getPath(args.id); + } + + shell.openPath(dir); + return true; + } + + /** + * 选择图片 + */ + selectPic() { + const filePaths = dialog.showOpenDialogSync({ + title: 'select pic', + properties: ['openFile'], + filters: [ + { name: 'Images', extensions: ['jpg', 'png', 'gif'] }, + ] + }); + if (_.isEmpty(filePaths)) { + return null + } + + return filePaths[0]; + } + + /** + * 加载视图内容 + */ + loadViewContent(args) { + const { type, content } = args; + let contentUrl = content; + if (type == 'html') { + contentUrl = path.join('file://', electronApp.getAppPath(), content); + } + + Services.get('os').createBrowserView(contentUrl); + + return true + } + + /** + * 移除视图内容 + */ + removeViewContent() { + Services.get('os').removeBrowserView(); + return true + } + + /** + * 打开新窗口 + */ + createWindow(args) { + const { type, content, windowName, windowTitle } = args; + let contentUrl = null; + if (type == 'html') { + contentUrl = path.join('file://', electronApp.getAppPath(), content) + } else if (type == 'web') { + contentUrl = content; + } else if (type == 'vue') { + let addr = 'http://localhost:17680' + if (Ps.isProd()) { + const mainServer = Conf.getValue('mainServer'); + if (Conf.isFileProtocol(mainServer)) { + addr = mainServer.protocol + path.join(Ps.getHomeDir(), mainServer.indexPath); + } else { + addr = mainServer.protocol + mainServer.host + ':' + mainServer.port; + } + } + + contentUrl = addr + content; + } else { + // some + } + + console.log('contentUrl: ', contentUrl); + let opt = { + title: windowTitle + } + const win = Addon.get('window').create(windowName, opt); + const winContentsId = win.webContents.id; + + // load page + win.loadURL(contentUrl); + + return winContentsId; + } + + /** + * 获取窗口contents id + */ + getWCid(args) { + // 主窗口的name默认是main,其它窗口name开发者自己定义 + const name = args; + const id = Addon.get('window').getWCid(name); + + return id; + } + + /** + * 加载扩展程序 + */ + // async loadExtension (args) { + // const crxFile = args[0]; + // if (_.isEmpty(crxFile)) { + // return false; + // } + // const extensionId = path.basename(crxFile, '.crx'); + // const chromeExtensionDir = chromeExtension.getDirectory(); + // const extensionDir = path.join(chromeExtensionDir, extensionId); + + // Log.info("[api] [example] [loadExtension] extension id:", extensionId); + // unzip(crxFile, extensionDir).then(() => { + // Log.info("[api] [example] [loadExtension] unzip success!"); + // chromeExtension.load(extensionId); + // }); + + // return true; + // } + + /** + * 创建系统通知 + */ + sendNotification(args, event) { + const { title, subtitle, body, silent } = args; + + if (!Notification.isSupported()) { + return '当前系统不支持通知'; + } + + let options = {}; + if (!_.isEmpty(title)) { + options.title = title; + } + if (!_.isEmpty(subtitle)) { + options.subtitle = subtitle; + } + if (!_.isEmpty(body)) { + options.body = body; + } + if (!_.isEmpty(silent)) { + options.silent = silent; + } + + Services.get('os').createNotification(options, event); + + return true + } + + /** + * 电源监控 + */ + initPowerMonitor(args, event) { + const channel = 'controller.os.initPowerMonitor'; + powerMonitor.on('on-ac', (e) => { + let data = { + type: 'on-ac', + msg: '接入了电源' + } + event.reply(`${channel}`, data) + }); + + powerMonitor.on('on-battery', (e) => { + let data = { + type: 'on-battery', + msg: '使用电池中' + } + event.reply(`${channel}`, data) + }); + + powerMonitor.on('lock-screen', (e) => { + let data = { + type: 'lock-screen', + msg: '锁屏了' + } + event.reply(`${channel}`, data) + }); + + powerMonitor.on('unlock-screen', (e) => { + let data = { + type: 'unlock-screen', + msg: '解锁了' + } + event.reply(`${channel}`, data) + }); + + return true + } + + /** + * 获取屏幕信息 + */ + getScreen(args) { + let data = []; + let res = {}; + if (args == 0) { + let res = screen.getCursorScreenPoint(); + data = [ + { + title: '横坐标', + desc: res.x + }, + { + title: '纵坐标', + desc: res.y + }, + ] + + return data; + } + if (args == 1) { + res = screen.getPrimaryDisplay(); + } + if (args == 2) { + let resArr = screen.getAllDisplays(); + // 数组,只取一个吧 + res = resArr[0]; + } + // Log.info('[electron] [ipc] [example] [getScreen] res:', res); + data = [ + { + title: '分辨率', + desc: res.bounds.width + ' x ' + res.bounds.height + }, + { + title: '单色显示器', + desc: res.monochrome ? '是' : '否' + }, + { + title: '色深', + desc: res.colorDepth + }, + { + title: '色域', + desc: res.colorSpace + }, + { + title: 'scaleFactor', + desc: res.scaleFactor + }, + { + title: '加速器', + desc: res.accelerometerSupport + }, + { + title: '触控', + desc: res.touchSupport == 'unknown' ? '不支持' : '支持' + }, + ] + + return data; + } + + /** + * 获取系统主题 + */ + getTheme() { + let theme = 'system'; + if (nativeTheme.shouldUseHighContrastColors) { + theme = 'light'; + } else if (nativeTheme.shouldUseInvertedColorScheme) { + theme = 'dark'; + } + + return theme; + } + + /** + * 设置系统主题 + */ + setTheme(args) { + + // TODO 好像没有什么明显效果 + nativeTheme.themeSource = args; + + return args; + } +} + +OsController.toString = () => '[class OsController]'; +module.exports = OsController; \ No newline at end of file diff --git a/electron/index.js b/electron/index.js new file mode 100644 index 0000000..4bdc502 --- /dev/null +++ b/electron/index.js @@ -0,0 +1,69 @@ +const { Application } = require('ee-core'); +const { app, globalShortcut } = require('electron') +const EE = require('ee-core/ee'); +// 是否用户关闭 +global.isUserExit = false; +const { app: electronApp } = require("electron"); + +class Index extends Application { + + constructor() { + super(); + // this === eeApp; + } + + /** + * core app have been loaded + */ + async ready () { + // do some things + electronApp.commandLine.appendSwitch('enable-webgl'); + electronApp.commandLine.appendSwitch("disable-web-security"); + } + + /** + * electron app ready + */ + async electronAppReady () { + // do some things + } + + /** + * main window have been loaded + */ + async windowReady () { + // todo: 注册一个全局快捷键退出 + globalShortcut.register('CommandOrControl+Shift+Z', () => { + console.log("Shift+Alt+Z+M is click") + // const { CoreApp } = EE; + // CoreApp.appQuit(); + global.isUserExit = true; + app.quit(); + // const channel = 'shortcut-key'; + // this.electron.mainWindow.webContents.send(channel, "Shift+Alt+Z+M"); + }) + // do some things + // 延迟加载,无白屏 + const winOpt = this.config.windowsOption; + if (winOpt.show == false) { + const win = this.electron.mainWindow; + win.once('ready-to-show', () => { + win.show(); + win.focus(); + }) + } + + + } + + /** + * before app close + */ + async beforeClose () { + // do some things + console.log(" index.js beforeClose") + } +} + +Index.toString = () => '[class Index]'; +module.exports = Index; \ No newline at end of file diff --git a/electron/jobs/example/hello.js b/electron/jobs/example/hello.js new file mode 100644 index 0000000..66dc1dc --- /dev/null +++ b/electron/jobs/example/hello.js @@ -0,0 +1,5 @@ +const Log = require('ee-core/log'); + +exports.welcome = function () { + Log.info('[child-process] [jobs/example/hello] welcome ! '); +} \ No newline at end of file diff --git a/electron/jobs/example/timer.js b/electron/jobs/example/timer.js new file mode 100644 index 0000000..f2bae91 --- /dev/null +++ b/electron/jobs/example/timer.js @@ -0,0 +1,55 @@ +const Job = require('ee-core/jobs/baseJobClass'); +const Loader = require('ee-core/loader'); +const Log = require('ee-core/log'); +const Ps = require('ee-core/ps'); +const { childMessage } = require('ee-core/message'); +const Hello = Loader.requireJobsModule('./example/hello'); + +/** + * example - TimerJob + * @class + */ +class TimerJob extends Job { + + constructor(params) { + super(); + this.params = params; + } + + /** + * handle()方法是必要的,且会被自动调用 + */ + async handle () { + Log.info("[child-process] TimerJob params: ", this.params); + + // 计时器任务 + + let number = 0; + let jobId = this.params.jobId; + let eventName = 'job-timer-progress-' + jobId; + let timer = setInterval(function() { + Hello.welcome(); + + childMessage.send(eventName, {jobId, number, end: false}); + number++; + }, 1000); + + // 用 setTimeout 模拟任务运行时长 + setTimeout(() => { + // 关闭定时器 + clearInterval(timer); + + // 任务结束,重置前端显示 + childMessage.send(eventName, {jobId, number:0, pid:0, end: true}); + + // 如果是childJob任务,必须调用 Ps.exit() 方法,让进程退出,否则会常驻内存 + // 如果是childPoolJob任务,常驻内存,等待下一个业务 + if (Ps.isChildJob()) { + Ps.exit(); + } + }, 10 * 1000) + } +} + +TimerJob.toString = () => '[class TimerJob]'; +module.exports = TimerJob; diff --git a/electron/preload/bridge.js b/electron/preload/bridge.js new file mode 100644 index 0000000..c9b86db --- /dev/null +++ b/electron/preload/bridge.js @@ -0,0 +1,10 @@ +/* + * 如果启用了上下文隔离,渲染进程无法使用electron的api, + * 可通过contextBridge 导出api给渲染进程使用 + */ + +const { contextBridge, ipcRenderer } = require('electron') + +contextBridge.exposeInMainWorld('electron', { + ipcRenderer: ipcRenderer, +}) \ No newline at end of file diff --git a/electron/preload/index.js b/electron/preload/index.js new file mode 100644 index 0000000..85d732a --- /dev/null +++ b/electron/preload/index.js @@ -0,0 +1,19 @@ +/************************************************* + ** preload为预加载模块,该文件将会在程序启动时加载 ** + *************************************************/ +const Addon = require('ee-core/addon'); +const Services = require('ee-core/services'); + +/** + * 预加载模块入口 + */ +module.exports = async () => { + + // 已实现的功能模块,可选择性使用和修改 + Addon.get('tray').create(); + Addon.get('security').create(); + Addon.get('awaken').create(); + Addon.get('autoUpdater').create(); + + //Services.get('cross').createGoServer(); +} \ No newline at end of file diff --git a/electron/service/cross.js b/electron/service/cross.js new file mode 100644 index 0000000..d188ed2 --- /dev/null +++ b/electron/service/cross.js @@ -0,0 +1,104 @@ +'use strict'; + +const { Service } = require('ee-core'); +const Cross = require('ee-core/cross'); +const Log = require('ee-core/log'); +const Ps = require('ee-core/ps'); +const path = require("path"); +const Is = require('ee-core/utils/is'); + +/** + * cross(service层为单例) + * @class + */ +class CrossService extends Service { + + constructor(ctx) { + super(ctx); + } + + /** + * create go service + * In the default configuration, services can be started with applications. + * Developers can turn off the configuration and create it manually. + */ + async createGoServer() { + // method 1: Use the default Settings + //const entity = await Cross.run(serviceName); + + // method 2: Use custom configuration + const serviceName = "go"; + const opt = { + name: 'goapp', + cmd: path.join(Ps.getExtraResourcesDir(), 'goapp'), + directory: Ps.getExtraResourcesDir(), + args: ['--port=7073'], + appExit: true, + } + const entity = await Cross.run(serviceName, opt); + Log.info('server name:', entity.name); + Log.info('server config:', entity.config); + Log.info('server url:', entity.getUrl()); + + return; + } + + /** + * create java server + */ + async createJavaServer() { + const serviceName = "java"; + const jarPath = path.join(Ps.getExtraResourcesDir(), 'java-app.jar'); + const opt = { + name: 'javaapp', + cmd: path.join(Ps.getExtraResourcesDir(), 'jre1.8.0_201/bin/javaw.exe'), + directory: Ps.getExtraResourcesDir(), + args: ['-jar', '-server', '-Xms512M', '-Xmx512M', '-Xss512k', '-Dspring.profiles.active=prod', `-Dserver.port=18080`, `-Dlogging.file.path=${Ps.getLogDir()}`, `${jarPath}`], + appExit: false, + } + if (Is.macOS()) { + // Setup Java program + opt.cmd = path.join(Ps.getExtraResourcesDir(), 'jre1.8.0_201/Contents/Home/bin/java'); + } + if (Is.linux()) { + // Setup Java program + } + + const entity = await Cross.run(serviceName, opt); + Log.info('server name:', entity.name); + Log.info('server config:', entity.config); + Log.info('server url:', Cross.getUrl(entity.name)); + + return; + } + + /** + * create python service + * In the default configuration, services can be started with applications. + * Developers can turn off the configuration and create it manually. + */ + async createPythonServer() { + // method 1: Use the default Settings + //const entity = await Cross.run(serviceName); + + // method 2: Use custom configuration + const serviceName = "python"; + const opt = { + name: 'pyapp', + cmd: path.join(Ps.getExtraResourcesDir(), 'py', 'pyapp'), + directory: path.join(Ps.getExtraResourcesDir(), 'py'), + args: ['--port=7074'], + windowsExtname: true, + appExit: true, + } + const entity = await Cross.run(serviceName, opt); + Log.info('server name:', entity.name); + Log.info('server config:', entity.config); + Log.info('server url:', entity.getUrl()); + + return; + } +} + +CrossService.toString = () => '[class CrossService]'; +module.exports = CrossService; \ No newline at end of file diff --git a/electron/service/database/jsondb.js b/electron/service/database/jsondb.js new file mode 100644 index 0000000..7c6cc6d --- /dev/null +++ b/electron/service/database/jsondb.js @@ -0,0 +1,138 @@ +'use strict'; + +const { Service } = require('ee-core'); +const Storage = require('ee-core/storage'); +const _ = require('lodash'); +const path = require('path'); + +/** + * json数据存储 + * @class + */ +class JsondbService extends Service { + + constructor (ctx) { + super(ctx); + + // jsondb数据库 + this.jsonFile = 'demo'; + this.demoDB = Storage.connection(this.jsonFile); + this.demoDBKey = { + test_data: 'test_data' + }; + } + + /* + * 增 Test data + */ + async addTestData(user) { + const key = this.demoDBKey.test_data; + if (!this.demoDB.db.has(key).value()) { + this.demoDB.db.set(key, []).write(); + } + + const data = this.demoDB.db + .get(key) + .push(user) + .write(); + + return data; + } + + /* + * 删 Test data + */ + async delTestData(name = '') { + const key = this.demoDBKey.test_data; + const data = this.demoDB.db + .get(key) + .remove({name: name}) + .write(); + + return data; + } + + /* + * 改 Test data + */ + async updateTestData(name= '', age = 0) { + const key = this.demoDBKey.test_data; + const data = this.demoDB.db + .get(key) + .find({name: name}) // 修改找到的第一个数据,貌似无法批量修改 todo + .assign({age: age}) + .write(); + + return data; + } + + /* + * 查 Test data + */ + async getTestData(age = 0) { + const key = this.demoDBKey.test_data; + let data = this.demoDB.db + .get(key) + //.find({age: age}) 查找单个 + .filter(function(o) { + let isHas = true; + isHas = age === o.age ? true : false; + return isHas; + }) + //.orderBy(['age'], ['name']) 排序 + //.slice(0, 10) 分页 + .value(); + + if (_.isEmpty(data)) { + data = [] + } + + return data; + } + + /* + * all Test data + */ + async getAllTestData() { + const key = this.demoDBKey.test_data; + if (!this.demoDB.db.has(key).value()) { + this.demoDB.db.set(key, []).write(); + } + let data = this.demoDB.db + .get(key) + .value(); + + if (_.isEmpty(data)) { + data = [] + } + + return data; + } + + /* + * get data dir (sqlite) + */ + async getDataDir() { + const dir = this.demoDB.getStorageDir(); + + return dir; + } + + /* + * set custom data dir (sqlite) + */ + async setCustomDataDir(dir) { + if (_.isEmpty(dir)) { + return; + } + + // the absolute path of the db file + const dbFile = path.join(dir, this.jsonFile); + this.demoDB = Storage.connection(dbFile); + + return; + } +} + +JsondbService.toString = () => '[class JsondbService]'; +module.exports = JsondbService; diff --git a/electron/service/database/sqlitedb.js b/electron/service/database/sqlitedb.js new file mode 100644 index 0000000..7a18d12 --- /dev/null +++ b/electron/service/database/sqlitedb.js @@ -0,0 +1,163 @@ +'use strict'; + +const { Service } = require('ee-core'); +const Storage = require('ee-core/storage'); +const _ = require('lodash'); +const path = require('path'); + +/** + * sqlite数据存储 + * @class + */ +class SqlitedbService extends Service { + + constructor (ctx) { + super(ctx); + + this.sqliteFile = 'sqlite-demo.db'; + let sqliteOptions = { + driver: 'sqlite', + default: { + timeout: 6000, + verbose: console.log // 打印sql语法 + } + } + this.demoSqliteDB = Storage.connection(this.sqliteFile, sqliteOptions); + } + + /* + * 检查并创建表 (sqlite) + */ + async checkAndCreateTableSqlite(tableName = '') { + if (_.isEmpty(tableName)) { + throw new Error(`table name is required`); + } + // 检查表是否存在 + const userTable = this.demoSqliteDB.db.prepare('SELECT * FROM sqlite_master WHERE type=? AND name = ?'); + const result = userTable.get('table', tableName); + //console.log('result:', result); + if (result) { + return; + } + + // 创建表 + const create_table_user = + `CREATE TABLE ${tableName} + ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name CHAR(50) NOT NULL, + age INT + );` + this.demoSqliteDB.db.exec(create_table_user); + + } + + /* + * 增 Test data (sqlite) + */ + async addTestDataSqlite(data) { + //console.log("add data:", data); + + let table = 'user'; + await this.checkAndCreateTableSqlite(table); + + const insert = this.demoSqliteDB.db.prepare(`INSERT INTO ${table} (name, age) VALUES (@name, @age)`); + insert.run(data); + + return true; + } + + /* + * 删 Test data (sqlite) + */ + async delTestDataSqlite(name = '') { + //console.log("delete name:", name); + + let table = 'user'; + await this.checkAndCreateTableSqlite(table); + + const delUser = this.demoSqliteDB.db.prepare(`DELETE FROM ${table} WHERE name = ?`); + delUser.run(name); + + return true; + } + + /* + * 改 Test data (sqlite) + */ + async updateTestDataSqlite(name= '', age = 0) { + //console.log("update :", {name, age}); + + let table = 'user'; + await this.checkAndCreateTableSqlite(table); + + const updateUser = this.demoSqliteDB.db.prepare(`UPDATE ${table} SET age = ? WHERE name = ?`); + updateUser.run(age, name); + + return true; + } + + /* + * 查 Test data (sqlite) + */ + async getTestDataSqlite(age = 0) { + //console.log("select :", {age}); + + let table = 'user'; + await this.checkAndCreateTableSqlite(table); + + const selectUser = this.demoSqliteDB.db.prepare(`SELECT * FROM ${table} WHERE age = @age`); + const users = selectUser.all({age: age}); + //console.log("select users:", users); + return users; + } + + /* + * all Test data (sqlite) + */ + async getAllTestDataSqlite() { + //console.log("select all user"); + + let table = 'user'; + await this.checkAndCreateTableSqlite(table); + + const selectAllUser = this.demoSqliteDB.db.prepare(`SELECT * FROM ${table} `); + const allUser = selectAllUser.all(); + //console.log("select allUser:", allUser); + return allUser; + } + + /* + * get data dir (sqlite) + */ + async getDataDir() { + const dir = this.demoSqliteDB.getStorageDir(); + + return dir; + } + + /* + * set custom data dir (sqlite) + */ + async setCustomDataDir(dir) { + if (_.isEmpty(dir)) { + return; + } + + // the absolute path of the db file + const dbFile = path.join(dir, this.sqliteFile); + const sqliteOptions = { + driver: 'sqlite', + default: { + timeout: 6000, + verbose: console.log + } + } + this.demoSqliteDB = Storage.connection(dbFile, sqliteOptions); + + return; + } +} + +SqlitedbService.toString = () => '[class SqlitedbService]'; +module.exports = SqlitedbService; diff --git a/electron/service/effect.js b/electron/service/effect.js new file mode 100644 index 0000000..4fa1b2d --- /dev/null +++ b/electron/service/effect.js @@ -0,0 +1,30 @@ +'use strict'; + +const { Service } = require('ee-core'); + +/** + * effect(service层为单例) + * @class + */ +class EffectService extends Service { + + constructor(ctx) { + super(ctx); + } + + /** + * test + */ + async test(args) { + let obj = { + status:'ok', + params: args + } + + return obj; + } + +} + +EffectService.toString = () => '[class EffectService]'; +module.exports = EffectService; \ No newline at end of file diff --git a/electron/service/example.js b/electron/service/example.js new file mode 100644 index 0000000..78074fe --- /dev/null +++ b/electron/service/example.js @@ -0,0 +1,35 @@ +'use strict'; + +const { Service } = require('ee-core'); +const Services = require('ee-core/services'); +const Log = require('ee-core/log'); + +/** + * 示例服务(service层为单例) + * @class + */ +class ExampleService extends Service { + + constructor(ctx) { + super(ctx); + } + + /** + * test + */ + async test(args) { + let obj = { + status:'ok', + params: args + } + + Log.info('ExampleService obj:', obj); + + Services.get('framework').test('egg'); + + return obj; + } +} + +ExampleService.toString = () => '[class ExampleService]'; +module.exports = ExampleService; \ No newline at end of file diff --git a/electron/service/framework.js b/electron/service/framework.js new file mode 100644 index 0000000..cdf5696 --- /dev/null +++ b/electron/service/framework.js @@ -0,0 +1,195 @@ +'use strict'; + +const { Service } = require('ee-core'); +const Log = require('ee-core/log'); +const { ChildJob, ChildPoolJob } = require('ee-core/jobs'); +const HttpClient = require('ee-core/httpclient'); +const Ps = require('ee-core/ps'); + +/** + * framework + * @class + */ +class FrameworkService extends Service { + + constructor(ctx) { + super(ctx); + + // 在构造函数中初始化一些变量 + this.myTimer = null; + this.myJob = new ChildJob(); + this.myJobPool = new ChildPoolJob(); + this.taskForJob = {}; + } + + /** + * test + */ + async test(args) { + let obj = { + status:'ok', + params: args + } + Log.info('FrameworkService obj:', obj); + return obj; + } + + /** + * ipc通信(双向) + */ + bothWayMessage(type, content, event) { + // 前端ipc频道 channel + const channel = 'controller.framework.ipcSendMsg'; + + if (type == 'start') { + // 每隔1秒,向前端页面发送消息 + // 用定时器模拟 + this.myTimer = setInterval(function(e, c, msg) { + let timeNow = Date.now(); + let data = msg + ':' + timeNow; + e.reply(`${c}`, data) + }, 1000, event, channel, content) + + return '开始了' + } else if (type == 'end') { + clearInterval(this.myTimer); + return '停止了' + } else { + return 'ohther' + } + } + + /** + * 执行任务 + */ + doJob(jobId, action, event) { + let res = {}; + let oneTask; + const channel = 'controller.framework.timerJobProgress'; + if (action == 'create') { + // 执行任务及监听进度 + let eventName = 'job-timer-progress-' + jobId; + const timerTask = this.myJob.exec('./jobs/example/timer', {jobId}); + timerTask.emitter.on(eventName, (data) => { + Log.info('[main-process] timerTask, from TimerJob data:', data); + // 发送数据到渲染进程 + event.sender.send(`${channel}`, data) + }) + + // 执行任务及监听进度 异步 + // myjob.execPromise('./jobs/example/timer', {jobId}).then(task => { + // task.emitter.on(eventName, (data) => { + // Log.info('[main-process] timerTask, from TimerJob data:', data); + // // 发送数据到渲染进程 + // event.sender.send(`${channel}`, data) + // }) + // }); + + res.pid = timerTask.pid; + this.taskForJob[jobId] = timerTask; + } + if (action == 'close') { + oneTask = this.taskForJob[jobId]; + oneTask.kill(); + event.sender.send(`${channel}`, {jobId, number:0, pid:0}); + } + + return res; + } + + /** + * 创建pool + */ + doCreatePool(num, event) { + const channel = 'controller.framework.createPoolNotice'; + this.myJobPool.create(num).then(pids => { + event.reply(`${channel}`, pids); + }); + } + + /** + * 通过进程池执行任务 + */ + doJobByPool(jobId, action, event) { + let res = {}; + const channel = 'controller.framework.timerJobProgress'; + if (action == 'run') { + // 异步-执行任务及监听进度 + this.myJobPool.runPromise('./jobs/example/timer', {jobId}).then(task => { + + // 监听器名称唯一,否则会出现重复监听。 + // 任务完成时,需要移除监听器,防止内存泄漏 + let eventName = 'job-timer-progress-' + jobId; + task.emitter.on(eventName, (data) => { + Log.info('[main-process] [ChildPoolJob] timerTask, from TimerJob data:', data); + + // 发送数据到渲染进程 + event.sender.send(`${channel}`, data) + + // 如果收到任务完成的消息,移除监听器 + if (data.end) { + task.emitter.removeAllListeners(eventName); + } + }); + + res.pid = task.pid; + }); + } + return res; + } + + /** + * test + */ + monitorJob() { + setInterval(() => { + let jobPids = this.myJob.getPids(); + let jobPoolPids = this.myJobPool.getPids(); + Log.info(`[main-process] [monitorJob] jobPids: ${jobPids}, jobPoolPids: ${jobPoolPids}`); + }, 5000) + } + + /** + * 上传到smms + */ + async uploadFileToSMMS(tmpFile) { + const res = { + code: 1000, + message: 'unknown error', + }; + + try { + const headersObj = { + 'Content-Type': 'multipart/form-data', + 'Authorization': 'aaaaaaaaaaaaa' // 请修改这个token,用你自己的账号token + }; + const url = 'https://sm.ms/api/v2/upload'; + const hc = new HttpClient(); + const response = await hc.request(url, { + method: 'POST', + headers: headersObj, + files: { + smfile: tmpFile, + }, + dataType: 'json', + timeout: 15000, + }); + const result = response.data; + if (Ps.isDev()) { + Log.info('[FrameworkService] [uploadFileToSMMS]: info result:%j', result); + } + if (result.code !== 'success') { + Log.error('[FrameworkService] [uploadFileToSMMS]: res error result:%j', result); + } + return result; + } catch (e) { + Log.error('[FrameworkService] [uploadFileToSMMS]: ERROR ', e); + } + + return res; + } + +} + +FrameworkService.toString = () => '[class FrameworkService]'; +module.exports = FrameworkService; \ No newline at end of file diff --git a/electron/service/hardware.js b/electron/service/hardware.js new file mode 100644 index 0000000..a295c01 --- /dev/null +++ b/electron/service/hardware.js @@ -0,0 +1,138 @@ +'use strict'; + +const { Service } = require('ee-core'); +// 串口的功能 +const { SerialPort } = require('serialport') +// 保存串口实例 +var seriaPortIns = undefined; + +// 这个是处理时间的库 +var moment = require('moment') +// Modbus TCP +// create an empty modbus client +const ModbusRTU = require("modbus-serial") +var client = new ModbusRTU(); + +// open connection to a tcp line +// 创建Modbus TCP连接,IP是15.18.200.23,端口502 +// client.connectTCP("15.18.200.23", { port: 502 }); +//------- + +/** + * hardware(service层为单例) + * @class + */ +class HardwareService extends Service { + + constructor(ctx) { + super(ctx); + } + + /** + * 发送消息 + * @param {*} seriaPort 串口实例 + */ + sendSeriaPort(args) { + const port = seriaPortIns; + const msg = args.msg; + port.write(msg, 'hex') + console.log('测试发送消息' + msg); + + } + /** + * 连接串口 只执行一次 + * @param {*} options 串口参数 + * @param {*} event 回调. + */ + connectSeriaPort(options, event) { + + if (seriaPortIns != undefined) { + console.log("SerialPort is have"); + return; + } + const channel = 'controller.hardware.connectSeriaPort'; + const port = new SerialPort(options, (e) => { + console.log("SerialPort open"); + console.log(e); + if (e === null) { + // 打开成功 把串口发送出去 + let data2 = { + type: 'connect' + } + event.reply(`${channel}`, data2) + } + + }) + + port.on('data', (data) => { + let data2 = { + type: 'received', + data: data + } + console.log(`Received data: ${data2}`) + event.reply(`${channel}`, data2) + }) + setInterval(() => { + // console.log('setInterval') + if (!port.isOpen) { + // console.log('setInterval open') + port.open(); + } + + }, 1000) + port.on('close', () => { + let data2 = { + type: 'close' + } + console.log(`SerialPort close: ${data2}`) + event.reply(`${channel}`, data2) + }) + port.on('error', (e) => { + let data2 = { + type: 'error' + } + console.log(`SerialPort error: ${e}`) + event.reply(`${channel}`, data2) + }) + + seriaPortIns = port; + + } + /** + * test + */ + async test(args) { + let obj = { + status: 'ok', + params: args + } + + return obj; + } + + // 样例 ModbusTCP + tempModbusTCP() { + //http://momentjs.cn/ 时间库 + //https://www.jianshu.com/p/50954625b158 + // 读取非甲烷总烃的关于总烃、甲烷、NMHC这3个寄存器(寄存器地址分别为22,25,28)中的浓度 + // 每隔5秒钟读取保持寄存器的值,从寄存器地址22开始读取,读10个寄存器到data数组中 + setInterval(function () { + // 要连接后才能用 + client.readHoldingRegisters(22, 10, function (err, data) { + // 获取当前时间 + //moment.locale('zh-cn'); + // console.log("----------------------------------------------------------------------"); + // console.log("数据时间是:" + moment().format('YYYY年MM月DD日 HH时mm分ss秒')); + // console.log("总烃的浓度是:" + data.data[0] * 0.01 + "ppmV"); // 总烃浓度对应的寄存器地址为22 + // console.log("CH4的浓度是:" + data.data[3] * 0.01 + "ppmV"); // CH4浓度对应的寄存器地址为22 + // console.log("NHMC的浓度是:" + data.data[6] * 0.01 + "ppmV"); // NHMC浓度对应的寄存器地址为22 + // console.log("----------------------------------------------------------------------"); + + //console.log(data.data); + }); + }, 5000); + } +} + +HardwareService.toString = () => '[class HardwareService]'; +module.exports = HardwareService; \ No newline at end of file diff --git a/electron/service/os.js b/electron/service/os.js new file mode 100644 index 0000000..797a576 --- /dev/null +++ b/electron/service/os.js @@ -0,0 +1,87 @@ +'use strict'; + +const { Service } = require('ee-core'); +const { BrowserView, Notification } = require('electron'); +const CoreWindow = require('ee-core/electron/window'); + +/** + * os(service层为单例) + * @class + */ +class OsService extends Service { + + constructor(ctx) { + super(ctx); + this.myBrowserView = null; + this.myNotification = null; + } + + /** + * createBrowserView + */ + createBrowserView(contentUrl) { + + // electron 实验性功能,慎用 + const win = CoreWindow.getMainWindow(); + this.myBrowserView = new BrowserView(); + win.setBrowserView(this.myBrowserView); + this.myBrowserView.setBounds({ + x: 300, + y: 170, + width: 650, + height: 400 + }); + this.myBrowserView.webContents.loadURL(contentUrl); + } + + /** + * removeBrowserView + */ + removeBrowserView() { + // one + this.myBrowserView.webContents.loadURL('about:blank') + + // two - electron 11 remove destroy() + // this.myBrowserView.webContents.destroy(); + + // three + // this.myBrowserView.webContents.forcefullyCrashRenderer() + + // fore + // this.myBrowserView.webContents.close + } + + /** + * createNotification + */ + createNotification(options, event) { + const channel = 'controller.os.sendNotification'; + this.myNotification = new Notification(options); + + if (options.clickEvent) { + this.myNotification.on('click', (e) => { + let data = { + type: 'click', + msg: '您点击了通知消息' + } + event.reply(`${channel}`, data) + }); + } + + if (options.closeEvent) { + this.myNotification.on('close', (e) => { + let data = { + type: 'close', + msg: '您关闭了通知消息' + } + event.reply(`${channel}`, data) + }); + } + + this.myNotification.show(); + } + +} + +OsService.toString = () => '[class OsService]'; +module.exports = OsService; \ No newline at end of file diff --git a/frontend/.editorconfig b/frontend/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/frontend/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/frontend/.env.development b/frontend/.env.development new file mode 100644 index 0000000..9005571 --- /dev/null +++ b/frontend/.env.development @@ -0,0 +1,2 @@ +VITE_TITLE="" +VITE_GO_URL="http://localhost:8081" \ No newline at end of file diff --git a/frontend/.env.production b/frontend/.env.production new file mode 100644 index 0000000..a0eaf9f --- /dev/null +++ b/frontend/.env.production @@ -0,0 +1,2 @@ +VITE_TITLE="" +VITE_GO_URL="http://www.test.com" \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..082d756 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,6 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +package-lock.json \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..c0b96bd --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,105 @@ + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..26ed84f --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,34 @@ +{ + "name": "ee", + "version": "1.0.0", + "scripts": { + "dev": "vite --host --port 17680", + "serve": "vite --host --port 17680", + "build-staging": "vite build --mode staging", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@ant-design/icons-vue": "^6.1.0", + "ant-design-vue": "2.2.6", + "axios": "^0.21.1", + "element-plus": "^2.4.0", + "socket.io-client": "^4.4.1", + "store2": "^2.13.2", + "vue": "^3.2.33", + "vue-router": "^4.0.14", + "vuex": "^4.0.2", + "xgplayer": "^2.31.6" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.2.3", + "@vue/compiler-sfc": "^3.2.33", + "less": "^4.1.2", + "less-loader": "^10.2.0", + "postcss": "^8.4.13", + "postcss-pxtorem": "^6.0.0", + "terser": "^5.19.1", + "vite": "^4.4.4", + "vite-plugin-compression": "^0.5.1" + } +} diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..ee8b99c --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,28 @@ + + + + diff --git a/frontend/src/api/main.js b/frontend/src/api/main.js new file mode 100644 index 0000000..e31ea2c --- /dev/null +++ b/frontend/src/api/main.js @@ -0,0 +1,100 @@ + +/** + * 主进程与渲染进程通信频道定义 + * Definition of communication channels between main process and rendering process + */ +const ipcApiRoute = { + // framework + test: 'controller.example.test', + checkForUpdater: 'controller.framework.checkForUpdater', + downloadApp: 'controller.framework.downloadApp', + jsondbOperation: 'controller.framework.jsondbOperation', + sqlitedbOperation: 'controller.framework.sqlitedbOperation', + uploadFile: 'controller.framework.uploadFile', + checkHttpServer: 'controller.framework.checkHttpServer', + doHttpRequest: 'controller.framework.doHttpRequest', + doSocketRequest: 'controller.framework.doSocketRequest', + ipcInvokeMsg: 'controller.framework.ipcInvokeMsg', + ipcSendSyncMsg: 'controller.framework.ipcSendSyncMsg', + ipcSendMsg: 'controller.framework.ipcSendMsg', + startJavaServer: 'controller.framework.startJavaServer', + closeJavaServer: 'controller.framework.closeJavaServer', + someJob: 'controller.framework.someJob', + timerJobProgress: 'controller.framework.timerJobProgress', + createPool: 'controller.framework.createPool', + createPoolNotice: 'controller.framework.createPoolNotice', + someJobByPool: 'controller.framework.someJobByPool', + hello: 'controller.framework.hello', + openSoftware: 'controller.framework.openSoftware', + // 获取ex资源目录下的配置文件 参数唯文件名 + getExResConfig: 'controller.framework.getExResConfig', + // 发送socket 消息 + sendTcpSocket: 'controller.framework.sendTcpSocket', + // 串口 参数为 整个串口参数 + connectSeriaPort: 'controller.framework.connectSeriaPort', + // 发送串口消息 参数为 msg + sendSeriaPort: 'controller.framework.sendSeriaPort', + // os + messageShow: 'controller.os.messageShow', + messageShowConfirm: 'controller.os.messageShowConfirm', + selectFolder: 'controller.os.selectFolder', + selectPic: 'controller.os.selectPic', + openDirectory: 'controller.os.openDirectory', + loadViewContent: 'controller.os.loadViewContent', + removeViewContent: 'controller.os.removeViewContent', + createWindow: 'controller.os.createWindow', + getWCid: 'controller.os.getWCid', + sendNotification: 'controller.os.sendNotification', + initPowerMonitor: 'controller.os.initPowerMonitor', + getScreen: 'controller.os.getScreen', + autoLaunch: 'controller.os.autoLaunch', + setTheme: 'controller.os.setTheme', + getTheme: 'controller.os.getTheme', + // 获取mac + getAllMac: 'controller.os.getAllMac', + // 获取系统信息 + getOSMessage: 'controller.os.getOSMessage', + // 声音设置 + deviceLoudness: 'controller.os.deviceLoudness', + //deviceRestart 重启 + deviceRestart: 'controller.os.deviceRestart', + // 设备关机 + deviceShutdown: 'controller.os.deviceShutdown', + + // 杀掉进程 参数为进程名称, 模糊搜索,注意可能杀错 + deviceKillName: 'controller.os.deviceKillName', + // 启动程序 参数为程序目录绝对地址 + deviceStarExe: 'controller.os.deviceStarExe', + // hardware + getPrinterList: 'controller.hardware.getPrinterList', + print: 'controller.hardware.print', + printStatus: 'controller.hardware.printStatus', + + // effect + selectFile: 'controller.effect.selectFile', + loginWindow: 'controller.effect.loginWindow', + restoreWindow: 'controller.effect.restoreWindow', + + + // cross + crossInfo: 'controller.cross.info', + getCrossUrl: 'controller.cross.getUrl', + killCrossServer: 'controller.cross.killServer', + createCrossServer: 'controller.cross.createServer', + requestApi: 'controller.cross.requestApi', +} + +/** + * 自定义频道 + * custom chennel + */ +const specialIpcRoute = { + appUpdater: 'app.updater', // updater channel + window1ToWindow2: 'window1-to-window2', // windows channel + window2ToWindow1: 'window2-to-window1', // windows channel +} + +export { + ipcApiRoute, specialIpcRoute +} + diff --git a/frontend/src/assets/global.less b/frontend/src/assets/global.less new file mode 100644 index 0000000..4192318 --- /dev/null +++ b/frontend/src/assets/global.less @@ -0,0 +1,16 @@ +#app { + font-family: Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-align: center; + color: #2c3e50; + height: 100%; +} + +/* 滚动条 */ +::-webkit-scrollbar{width:8px;height:4px} +::-webkit-scrollbar-button{width:10px;height:0} +::-webkit-scrollbar-track{background:0 0} +::-webkit-scrollbar-thumb{background:#E6FFEE;-webkit-transition:.3s;transition:.3s} +::-webkit-scrollbar-thumb:hover{background-color:#07C160} +::-webkit-scrollbar-thumb:active{background-color:#07C160} \ No newline at end of file diff --git a/frontend/src/assets/login.png b/frontend/src/assets/login.png new file mode 100644 index 0000000..5882c86 Binary files /dev/null and b/frontend/src/assets/login.png differ diff --git a/frontend/src/assets/logo.png b/frontend/src/assets/logo.png new file mode 100644 index 0000000..95dc60b Binary files /dev/null and b/frontend/src/assets/logo.png differ diff --git a/frontend/src/assets/theme.less b/frontend/src/assets/theme.less new file mode 100644 index 0000000..8d9b773 --- /dev/null +++ b/frontend/src/assets/theme.less @@ -0,0 +1,17 @@ +@import 'ant-design-vue/dist/antd.less'; + +// 可自定义主题颜色 +@primary-color: #07C160; // 全局主色 +@link-color: #1890ff; // 链接色 +@success-color: #52c41a; // 成功色 +@warning-color: #faad14; // 警告色 +@error-color: #f5222d; // 错误色 +@font-size-base: 14px; // 主字号 +@heading-color: rgba(0, 0, 0, 0.85); // 标题色 +@text-color: rgba(0, 0, 0, 0.65); // 主文本色 +@text-color-secondary: rgba(0, 0, 0, 0.45); // 次文本色 +@disabled-color: rgba(0, 0, 0, 0.25); // 失效色 +@border-radius-base: 4px; // 组件/浮层圆角 +@border-color-base: #dce3e8; // 边框色 +@box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // 浮层阴影 + diff --git a/frontend/src/components/global/iconFont.js b/frontend/src/components/global/iconFont.js new file mode 100644 index 0000000..6ee51f0 --- /dev/null +++ b/frontend/src/components/global/iconFont.js @@ -0,0 +1,18 @@ +import { createFromIconfontCN } from '@ant-design/icons-vue' +import { h } from 'vue' + +const IconFont = createFromIconfontCN({ + scriptUrl: 'https://at.alicdn.com/t/font_2456157_4ovzopz659q.js', + extraCommonProps: { + type: 'icon-fengche', + style: { + fontSize: '18px', + }, + }, +}) + +const DynamicIconFont = props => { + return h(IconFont, { type: props.type || 'icon-fengche' }) +} + +export default DynamicIconFont diff --git a/frontend/src/components/global/index.js b/frontend/src/components/global/index.js new file mode 100644 index 0000000..9227d20 --- /dev/null +++ b/frontend/src/components/global/index.js @@ -0,0 +1,12 @@ +import iconFont from './iconFont' +const modules = import.meta.globEager('./*.vue') +const map = {} +Object.keys(modules).forEach(file => { + const modulesName = file.replace('./', '').replace('.vue', '') + map[modulesName] = modules[file].default +}) +const globalComponents = { + ...map, + iconFont, +} +export default globalComponents diff --git a/frontend/src/layouts/AppSider.vue b/frontend/src/layouts/AppSider.vue new file mode 100644 index 0000000..7ddf788 --- /dev/null +++ b/frontend/src/layouts/AppSider.vue @@ -0,0 +1,126 @@ + + + diff --git a/frontend/src/layouts/Menu.vue b/frontend/src/layouts/Menu.vue new file mode 100644 index 0000000..462aab5 --- /dev/null +++ b/frontend/src/layouts/Menu.vue @@ -0,0 +1,99 @@ + + + diff --git a/frontend/src/layouts/index.js b/frontend/src/layouts/index.js new file mode 100644 index 0000000..7ae5f46 --- /dev/null +++ b/frontend/src/layouts/index.js @@ -0,0 +1,7 @@ +import AppSider from '@/layouts/AppSider' +import Menu from '@/layouts/Menu' + +export { + AppSider, + Menu +} diff --git a/frontend/src/main.js b/frontend/src/main.js new file mode 100644 index 0000000..df6c331 --- /dev/null +++ b/frontend/src/main.js @@ -0,0 +1,32 @@ +import * as AntIcon from '@ant-design/icons-vue'; +import Antd from 'ant-design-vue'; +import { createApp } from 'vue'; +import App from './App.vue'; +import './assets/global.less'; +import './assets/theme.less'; +import components from './components/global'; +import Router from './router/index'; +// 导入ele +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' + +const app = createApp(App) +app.config.productionTip = false + +// 挂载ele +app.use(ElementPlus) + +// components +for (const i in components) { + app.component(i, components[i]) +} + +// icon +for (const i in AntIcon) { + const whiteList = ['createFromIconfontCN', 'getTwoToneColor', 'setTwoToneColor', 'default'] + if (!whiteList.includes(i)) { + app.component(i, AntIcon[i]) + } +} + +app.use(Antd).use(Router).mount('#app') diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js new file mode 100644 index 0000000..e69c70f --- /dev/null +++ b/frontend/src/router/index.js @@ -0,0 +1,9 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +import routerMap from './routerMap' + +const Router = createRouter({ + history: createWebHashHistory(), + routes: routerMap, +}) + +export default Router diff --git a/frontend/src/router/routerMap.js b/frontend/src/router/routerMap.js new file mode 100644 index 0000000..2c4d39a --- /dev/null +++ b/frontend/src/router/routerMap.js @@ -0,0 +1,201 @@ +/** + * 基础路由 + * @type { *[] } + */ + +const constantRouterMap = [ + { + path: '/', + component: () => import('@/layouts/AppSider.vue'), + children: [ + { + path: '/framework', + name: 'Framework', + component: () => import('@/layouts/Menu.vue'), + props: { id: 'framework' }, + //props: true, + redirect: { name: 'FrameworkSocketIpc' }, + children: [ + { + path: '/framework/socket/ipc', + name: 'FrameworkSocketIpc', + component: () => import('@/views/framework/socket/Ipc.vue') + }, + { + path: '/framework/socket/httpserver', + name: 'FrameworkSocketHttpServer', + component: () => import('@/views/framework/socket/HttpServer.vue') + }, + { + path: '/framework/socket/socketserver', + name: 'FrameworkSocketSocketServer', + component: () => import('@/views/framework/socket/SocketServer.vue') + }, + { + path: '/framework/jsondb/index', + name: 'FrameworkJsonDBIndex', + component: () => import('@/views/framework/jsondb/Index.vue') + }, + { + path: '/framework/sqlitedb/index', + name: 'FrameworkSqliteDBIndex', + component: () => import('@/views/framework/sqlitedb/Index.vue') + }, + { + path: '/framework/jobs/index', + name: 'FrameworkJobsIndex', + component: () => import('@/views/framework/jobs/Index.vue') + }, + { + path: '/framework/updater/index', + name: 'FrameworkUpdaterIndex', + component: () => import('@/views/framework/updater/Index.vue') + }, + { + path: '/framework/software/index', + name: 'FrameworkSoftwareIndex', + component: () => import('@/views/framework/software/Index.vue') + }, + { + path: '/framework/java/index', + name: 'FrameworkJavaIndex', + component: () => import('@/views/framework/java/Index.vue') + }, + { + path: '/framework/testapi/index', + name: 'FrameworkTestApiIndex', + component: () => import('@/views/framework/testapi/Index.vue') + }, + ] + }, + { + path: '/os', + name: 'Os', + component: () => import('@/layouts/Menu.vue'), + props: { id: 'os' }, + redirect: { name: 'OsFileIndex' }, + children: [ + { + path: '/os/file/index', + name: 'OsFileIndex', + component: () => import('@/views/os/file/Index.vue') + }, + { + path: '/os/file/pic', + name: 'OsFilePic', + component: () => import('@/views/os/file/Pic.vue') + }, + { + path: '/os/windowview/index', + name: 'OsWindowViewIndex', + component: () => import('@/views/os/windowview/Index.vue') + }, + { + path: '/os/window/index', + name: 'OsWindowIndex', + component: () => import('@/views/os/window/Index.vue') + }, + { + path: '/os/notification/index', + name: 'OsNotificationIndex', + component: () => import('@/views/os/notification/Index.vue') + }, + { + path: '/os/powermonitor/index', + name: 'OsPowerMonitorIndex', + component: () => import('@/views/os/powermonitor/Index.vue') + }, + { + path: '/os/screen/index', + name: 'OsScreenIndex', + component: () => import('@/views/os/screen/Index.vue') + }, + { + path: '/os/theme/index', + name: 'OsThemeIndex', + component: () => import('@/views/os/theme/Index.vue') + }, + { + path: '/os/system/index', + name: 'OsSystemIndex', + component: () => import('@/views/os/system/Index.vue') + }, + ] + }, + { + path: '/hardware', + name: 'Hardware', + component: () => import('@/layouts/Menu.vue'), + props: { id: 'hardware' }, + redirect: { name: 'HardwarePrinterIndex' }, + children: [ + { + path: '/hardware/printer/index', + name: 'HardwarePrinterIndex', + component: () => import('@/views/hardware/printer/Index.vue') + }, + ] + }, + { + path: '/effect', + name: 'Effect', + component: () => import('@/layouts/Menu.vue'), + props: { id: 'effect' }, + redirect: { name: 'EffectVideoIndex' }, + children: [ + { + path: '/effect/video/index', + name: 'EffectVideoIndex', + component: () => import('@/views/effect/video/Index.vue') + }, + { + path: '/effect/login/index', + name: 'EffectLoginIndex', + component: () => import('@/views/effect/login/Index.vue') + } + ] + }, + { + path: '/cross', + name: 'Cross', + component: () => import('@/layouts/Menu.vue'), + props: { id: 'cross' }, + redirect: { name: 'CrossGoIndex' }, + children: [ + { + path: '/cross/go/index', + name: 'CrossGoIndex', + component: () => import('@/views/cross/go/Index.vue') + }, + { + path: '/cross/java/index', + name: 'CrossJavaIndex', + component: () => import('@/views/cross/java/Index.vue') + }, + { + path: '/cross/python/index', + name: 'CrossPythonIndex', + component: () => import('@/views/cross/python/Index.vue') + }, + ] + }, + ] + }, + { + path: '/special', + children: [ + { + path: 'subwindow', + name: 'SpecialSubwindowIpc', + component: () => import('@/views/os/subwindow/Ipc.vue') + }, + { + path: '/login', + name: 'SpecialLoginWindow', + component: () => import('@/views/effect/login/Window.vue') + }, + ] + }, +] + +export default constantRouterMap \ No newline at end of file diff --git a/frontend/src/router/subMenu.js b/frontend/src/router/subMenu.js new file mode 100644 index 0000000..3201e7e --- /dev/null +++ b/frontend/src/router/subMenu.js @@ -0,0 +1,153 @@ +/** + * 子菜单 + */ +export default { + framework: { + 'menu_100' : { + icon: 'profile', + title: '通信', + pageName: 'FrameworkSocketIpc', + params: {} + }, + 'menu_101' : { + icon: 'profile', + title: 'http服务', + pageName: 'FrameworkSocketHttpServer', + params: {} + }, + 'menu_102' : { + icon: 'profile', + title: 'socket服务', + pageName: 'FrameworkSocketSocketServer', + params: {} + }, + 'menu_103' : { + icon: 'profile', + title: 'json数据库', + pageName: 'FrameworkJsonDBIndex', + params: {} + }, + 'menu_104' : { + icon: 'profile', + title: 'sqlite数据库', + pageName: 'FrameworkSqliteDBIndex', + params: {} + }, + 'menu_105' : { + icon: 'profile', + title: '任务', + pageName: 'FrameworkJobsIndex', + params: {} + }, + 'menu_106' : { + icon: 'profile', + title: '自动更新', + pageName: 'FrameworkUpdaterIndex', + params: {} + }, + 'menu_107' : { + icon: 'profile', + title: '软件调用', + pageName: 'FrameworkSoftwareIndex', + params: {} + }, + 'menu_109' : { + icon: 'profile', + title: '测试', + pageName: 'FrameworkTestApiIndex', + params: {} + }, + }, + os: { + 'menu_100' : { + icon: 'profile', + title: '文件', + pageName: 'OsFileIndex', + params: {} + }, + 'menu_101' : { + icon: 'profile', + title: '视图', + pageName: 'OsWindowViewIndex', + params: {} + }, + 'menu_102' : { + icon: 'profile', + title: '窗口', + pageName: 'OsWindowIndex', + params: {} + }, + 'menu_103' : { + icon: 'profile', + title: '桌面通知', + pageName: 'OsNotificationIndex', + params: {} + }, + 'menu_104' : { + icon: 'profile', + title: '电源监控', + pageName: 'OsPowerMonitorIndex', + params: {} + }, + 'menu_105' : { + icon: 'profile', + title: '屏幕信息', + pageName: 'OsScreenIndex', + params: {} + }, + 'menu_106' : { + icon: 'profile', + title: '系统主题', + pageName: 'OsThemeIndex', + params: {} + }, + 'menu_110' : { + icon: 'profile', + title: '图片', + pageName: 'OsFilePic', + params: {} + }, + }, + hardware: { + 'menu_100' : { + icon: 'profile', + title: '打印机', + pageName: 'HardwarePrinterIndex', + params: {} + } + }, + effect: { + 'menu_100' : { + icon: 'profile', + title: '视频播放器', + pageName: 'EffectVideoIndex', + params: {} + }, + 'menu_110' : { + icon: 'profile', + title: '登录', + pageName: 'EffectLoginIndex', + params: {} + } + }, + cross: { + 'menu_100' : { + icon: 'profile', + title: 'go服务', + pageName: 'CrossGoIndex', + params: {} + }, + 'menu_110' : { + icon: 'profile', + title: 'java服务', + pageName: 'CrossJavaIndex', + params: {} + }, + 'menu_120' : { + icon: 'profile', + title: 'python服务', + pageName: 'CrossPythonIndex', + params: {} + }, + }, +} diff --git a/frontend/src/utils/api.js b/frontend/src/utils/api.js new file mode 100644 index 0000000..257ecf0 --- /dev/null +++ b/frontend/src/utils/api.js @@ -0,0 +1,77 @@ +import axios from 'axios'; +const apiBaseUrl = 'http://127.0.0.1:8086'; +const webSocketUrl = 'ws://127.0.0.1:8086'; +const apiService = axios.create({ + baseURL: apiBaseUrl, // 设置基本URL + timeout: 5000, // 设置超时时间 +}); +// 全局设备配置文件的json +var GlobalConfig = { + +}; + +// 请求拦截器 +apiService.interceptors.request.use( + config => { + // 在发送请求之前做一些处理,例如添加请求头等 + // 如果需要更详细的可以定义一个字符串的 + config.headers["deviceType"] = GlobalConfig.deviceType; + return config; + }, + error => { + // 请求错误时的处理 + console.error(error); + return Promise.reject(error); + } +); + +// 响应拦截器 +apiService.interceptors.response.use( + response => { + // 对响应数据进行处理 + return response; + }, + error => { + // 响应错误时的处理 + console.error(error); + return Promise.reject(error); + } +); +// 配置的更改 +export function updateConfgJson(config){ + GlobalConfig = config; + console.log('读取配置文件到内存'); + console.log(GlobalConfig) +} +// 全局的config 配置, 频繁使用,可以用此函数获取,内存中的数据 +export function getConfgJson(){ + return GlobalConfig; +} +// todo: 可以直接导入到其他函数使用 也可以在此处定义函数后直接使用 +/** + * + * api.get("/coreControl/deviceClient/creditCardHome?key=111&deptId=101").then(response=>{ + console.log(response); + }).catch(error => { + console.error(error); + }); + * + * + */ + +/** + * 设备首页的接口, 根据设备类型,进行不同的修改url + * @returns + */ +export function getDeviceHome() { + + return apiService({ + url: '/coreControl/deviceClient/creditCardHome?key=' + GlobalConfig.deviceId +"&deptId" + GlobalConfig.deptId, + method: 'get' + }) +} + + +export { + apiService, apiBaseUrl, webSocketUrl +}; diff --git a/frontend/src/utils/iconList.js b/frontend/src/utils/iconList.js new file mode 100644 index 0000000..9b1335e --- /dev/null +++ b/frontend/src/utils/iconList.js @@ -0,0 +1,27 @@ +export default [ + { name: '对话框', type: 'icon-duihuakuang' }, + { name: '闹钟', type: 'icon-naozhong' }, + { name: '笑脸', type: 'icon-xiaolian' }, + { name: 'ok', type: 'icon-ok' }, + { name: '风车', type: 'icon-fengche' }, + { name: '汗颜', type: 'icon-hanyan' }, + { name: '相机', type: 'icon-xiangji' }, + { name: '礼物', type: 'icon-liwu' }, + { name: '礼花', type: 'icon-lihua' }, + { name: '扭蛋', type: 'icon-niudan' }, + { name: '流星', type: 'icon-liuxing' }, + { name: '风筝', type: 'icon-fengzheng' }, + { name: '蛋糕', type: 'icon-dangao' }, + { name: '泡泡', type: 'icon-paopao' }, + { name: '购物', type: 'icon-gouwu' }, + { name: '饮料', type: 'icon-yinliao' }, + { name: '云彩', type: 'icon-yuncai' }, + { name: '彩铅', type: 'icon-caiqian' }, + { name: '纸飞机', type: 'icon-zhifeiji' }, + { name: '点赞', type: 'icon-dianzan' }, + { name: '煎蛋', type: 'icon-jiandan' }, + { name: '小熊', type: 'icon-xiaoxiong' }, + { name: '花', type: 'icon-hua' }, + { name: '眼睛', type: 'icon-yanjing' }, + ] + \ No newline at end of file diff --git a/frontend/src/utils/ipcRenderer.js b/frontend/src/utils/ipcRenderer.js new file mode 100644 index 0000000..b229b36 --- /dev/null +++ b/frontend/src/utils/ipcRenderer.js @@ -0,0 +1,33 @@ +const Renderer = (window.require && window.require('electron')) || window.electron || {}; + +/** + * ipc + * 官方api说明:https://www.electronjs.org/zh/docs/latest/api/ipc-renderer + * + * 属性/方法 + * ipc.invoke(channel, param) - 发送异步消息(invoke/handle 模型) + * ipc.sendSync(channel, param) - 发送同步消息(send/on 模型) + * ipc.on(channel, listener) - 监听 channel, 当新消息到达,调用 listener + * ipc.once(channel, listener) - 添加一次性 listener 函数 + * ipc.removeListener(channel, listener) - 为特定的 channel 从监听队列中删除特定的 listener 监听者 + * ipc.removeAllListeners(channel) - 移除所有的监听器,当指定 channel 时只移除与其相关的所有监听器 + * ipc.send(channel, ...args) - 通过channel向主进程发送异步消息 + * ipc.postMessage(channel, message, [transfer]) - 发送消息到主进程 + * ipc.sendTo(webContentsId, channel, ...args) - 通过 channel 发送消息到带有 webContentsId 的窗口 + * ipc.sendToHost(channel, ...args) - 消息会被发送到 host 页面上的 元素 + */ + +/** + * ipc + */ +const ipc = Renderer.ipcRenderer || undefined; + +/** + * 是否为EE环境 + */ +const isEE = ipc ? true : false; + +export { + Renderer, ipc, isEE +}; + diff --git a/frontend/src/utils/websocket.js b/frontend/src/utils/websocket.js new file mode 100644 index 0000000..29eb868 --- /dev/null +++ b/frontend/src/utils/websocket.js @@ -0,0 +1,193 @@ + +// import { ipcApiRoute, specialIpcRoute } from "@/api/main"; + +// import vueMain from '../main' +import { ipc } from '@/utils/ipcRenderer'; +import { ipcApiRoute } from '@/api/main'; +import { webSocketUrl } from '@/utils/api' +var isOpen = false; +var authKey = '' +var socket = undefined +var socketHeartTimer = undefined +// 定时更新设备信息 +var socketHeartTimer2 = undefined +// 用变量标记是否更新设备信息 +var socketUpdateInfoCount = 0; +// 设备信息 +var deviceInfo = { + volume: 0, + hostname: '' + +}; +var configJSON = null; +// 发送设备信息的间隔时间 s +const timerInterval = 10; +//屏幕设备类型IcbcDeviceType,1反诈屏 2互动屏 3弧形屏 4科技之眼 5光电玻璃 6 logo 设备类型 7 VR眼睛电脑 +function initWebSocket(config) { + configJSON = config; + + const wsUri = webSocketUrl+'/client/websocketServer' + '?deviceKey=' + configJSON.deviceId; + // const wsUri = 'ws://127.0.0.1:8080/resource/websocket' + '?deviceKey=' + e; + close(); + socket = new WebSocket(wsUri)//这里面的this都指向vue + socket.onerror = webSocketOnError; + socket.onmessage = webSocketOnMessage; + socket.onclose = closeWebsocket; + socket.onopen = openWebSocket; + + if (socketHeartTimer != undefined) { + clearInterval(socketHeartTimer); + } + if (socketHeartTimer2 != undefined){ + clearInterval(socketHeartTimer2); + } + + socketHeartTimer = setInterval(() => { + if (isOpen == false) { + console.log('重新连接' + isOpen) + initWebSocket(configJSON); + } else { + console.log('socket 心跳' + isOpen); + const msg = { + type: "heartbeat",// 心跳 + content: "心跳", + deviceKey: configJSON.deviceId, + deviceType: configJSON.deviceType, + } + socket.send(JSON.stringify(msg)); + } + + }, 6000); + + + socketHeartTimer2 = setInterval(() => { + ipc.invoke(ipcApiRoute.getOSMessage, {}).then(res => { + // 判断数据不相同 提前更新掉 + if ( deviceInfo.volume != res.volume || deviceInfo.hostname != res.hostname){ + deviceInfo = res; + sendDeviceInfo(); + socketUpdateInfoCount = 0; + return; + } + deviceInfo = res; + socketUpdateInfoCount = socketUpdateInfoCount+1; + if (socketUpdateInfoCount >= timerInterval){ + sendDeviceInfo(); + socketUpdateInfoCount = 0; + } + + }) + }, 1000); + + + +} +// 发送设备信息 +function sendDeviceInfo(){ + const msg = { + type: "device_info_update",// 设备信息更新 + content: deviceInfo, + deviceKey: configJSON.deviceId, + deviceType: configJSON.deviceType, + deptId: configJSON.deptId + } + socket.send(JSON.stringify(msg)); +} + +function webSocketOnError(e) { + // ElementUI.Notification({ + // title: '', + // message: "WebSocket连接发生错误" + e, + // type: 'error', + // duration: 0, + // }); + +} +// socket 连接打开 +function openWebSocket(e) { + console.log('socket 连接') + isOpen = true; +} +function webSocketOnMessage(e) { + const data = JSON.parse(e.data); + console.log('收到socket 消息') + console.log(data); + // 抛出消息, 全局控制消息直接处理 + switch(data.type){ + case 'heartbeat': + return; + case 'serve_heartbeat': + break + case 'device_shutdown': + ipc.invoke(ipcApiRoute.deviceShutdown, {}).then(res => { + + }) + return; + case 'device_restart': + ipc.invoke(ipcApiRoute.deviceRestart, {}).then(res => { + + }) + return; + case 'device_play_video': + break; + case 'device_update_data': + break; + case 'scan_qr_game_start': + break; + case 'game_start_ok': + break; + case 'game_progress': + break; + case 'game_result_post': + break; + case 'device_info_update': + break; + case 'device_volume_update': + console.log("声音设置") + console.log(data.content); + ipc.invoke(ipcApiRoute.deviceLoudness, {value:data.content}).then(res => { + console.log('返回声音设置结果'+res); + }) + return; + default: + break + } + + window.dispatchEvent(new CustomEvent('onMessageWS', { + detail: { + data: data + } + })) + + // var event = document.createEvent("HTMLEvents"); + // event.initEvent("onMessageWS", true, true); + // window.dispatchEvent(event); + + +} +// 关闭websiocket +function closeWebsocket() { + console.log('连接已关闭...') + + // clearTimeout(socketHeartTimer); + isOpen = false; +} +function close() { + + if (socket != undefined) { + socket.close() // 关闭 websocket + socket.onclose = function (e) { + console.log(e)//监听关闭事件 + console.log('关闭') + } + } + socket = undefined; + isOpen = false; + +} +function webSocketSend(agentData) { + socket.send(agentData); +} +export default { + initWebSocket, close, webSocketSend +} diff --git a/frontend/src/views/cross/go/Index.vue b/frontend/src/views/cross/go/Index.vue new file mode 100644 index 0000000..7dde041 --- /dev/null +++ b/frontend/src/views/cross/go/Index.vue @@ -0,0 +1,117 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/cross/java/Index.vue b/frontend/src/views/cross/java/Index.vue new file mode 100644 index 0000000..777ae1e --- /dev/null +++ b/frontend/src/views/cross/java/Index.vue @@ -0,0 +1,118 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/cross/python/Index.vue b/frontend/src/views/cross/python/Index.vue new file mode 100644 index 0000000..cd56a23 --- /dev/null +++ b/frontend/src/views/cross/python/Index.vue @@ -0,0 +1,117 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/effect/login/Index.vue b/frontend/src/views/effect/login/Index.vue new file mode 100644 index 0000000..420797f --- /dev/null +++ b/frontend/src/views/effect/login/Index.vue @@ -0,0 +1,48 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/effect/login/Window.vue b/frontend/src/views/effect/login/Window.vue new file mode 100644 index 0000000..e57da05 --- /dev/null +++ b/frontend/src/views/effect/login/Window.vue @@ -0,0 +1,51 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/effect/video/Index.vue b/frontend/src/views/effect/video/Index.vue new file mode 100644 index 0000000..57e5ad4 --- /dev/null +++ b/frontend/src/views/effect/video/Index.vue @@ -0,0 +1,93 @@ + + + diff --git a/frontend/src/views/framework/java/Index.vue b/frontend/src/views/framework/java/Index.vue new file mode 100644 index 0000000..0109e11 --- /dev/null +++ b/frontend/src/views/framework/java/Index.vue @@ -0,0 +1,85 @@ + + + diff --git a/frontend/src/views/framework/jobs/Index.vue b/frontend/src/views/framework/jobs/Index.vue new file mode 100644 index 0000000..b5f74d5 --- /dev/null +++ b/frontend/src/views/framework/jobs/Index.vue @@ -0,0 +1,184 @@ + + + diff --git a/frontend/src/views/framework/jsondb/Index.vue b/frontend/src/views/framework/jsondb/Index.vue new file mode 100644 index 0000000..4e86563 --- /dev/null +++ b/frontend/src/views/framework/jsondb/Index.vue @@ -0,0 +1,271 @@ + + + diff --git a/frontend/src/views/framework/socket/HttpServer.vue b/frontend/src/views/framework/socket/HttpServer.vue new file mode 100644 index 0000000..76b6da5 --- /dev/null +++ b/frontend/src/views/framework/socket/HttpServer.vue @@ -0,0 +1,116 @@ + + + diff --git a/frontend/src/views/framework/socket/Ipc.vue b/frontend/src/views/framework/socket/Ipc.vue new file mode 100644 index 0000000..d2275e4 --- /dev/null +++ b/frontend/src/views/framework/socket/Ipc.vue @@ -0,0 +1,156 @@ + + + diff --git a/frontend/src/views/framework/socket/SocketServer.vue b/frontend/src/views/framework/socket/SocketServer.vue new file mode 100644 index 0000000..ce760e2 --- /dev/null +++ b/frontend/src/views/framework/socket/SocketServer.vue @@ -0,0 +1,76 @@ + + + diff --git a/frontend/src/views/framework/software/Index.vue b/frontend/src/views/framework/software/Index.vue new file mode 100644 index 0000000..d950ce1 --- /dev/null +++ b/frontend/src/views/framework/software/Index.vue @@ -0,0 +1,68 @@ + + + diff --git a/frontend/src/views/framework/sqlitedb/Index.vue b/frontend/src/views/framework/sqlitedb/Index.vue new file mode 100644 index 0000000..156b1c5 --- /dev/null +++ b/frontend/src/views/framework/sqlitedb/Index.vue @@ -0,0 +1,275 @@ + + + diff --git a/frontend/src/views/framework/test/Index.vue b/frontend/src/views/framework/test/Index.vue new file mode 100644 index 0000000..df5dc71 --- /dev/null +++ b/frontend/src/views/framework/test/Index.vue @@ -0,0 +1,37 @@ + + + diff --git a/frontend/src/views/framework/testapi/Index.vue b/frontend/src/views/framework/testapi/Index.vue new file mode 100644 index 0000000..2f11313 --- /dev/null +++ b/frontend/src/views/framework/testapi/Index.vue @@ -0,0 +1,132 @@ + + + diff --git a/frontend/src/views/framework/updater/Index.vue b/frontend/src/views/framework/updater/Index.vue new file mode 100644 index 0000000..30f2db0 --- /dev/null +++ b/frontend/src/views/framework/updater/Index.vue @@ -0,0 +1,86 @@ + + + diff --git a/frontend/src/views/hardware/printer/Index.vue b/frontend/src/views/hardware/printer/Index.vue new file mode 100644 index 0000000..6f6352a --- /dev/null +++ b/frontend/src/views/hardware/printer/Index.vue @@ -0,0 +1,101 @@ + + + diff --git a/frontend/src/views/os/extension/Index.vue b/frontend/src/views/os/extension/Index.vue new file mode 100644 index 0000000..08a567b --- /dev/null +++ b/frontend/src/views/os/extension/Index.vue @@ -0,0 +1,73 @@ + + + diff --git a/frontend/src/views/os/file/Index.vue b/frontend/src/views/os/file/Index.vue new file mode 100644 index 0000000..7d73384 --- /dev/null +++ b/frontend/src/views/os/file/Index.vue @@ -0,0 +1,202 @@ + + + diff --git a/frontend/src/views/os/file/Pic.vue b/frontend/src/views/os/file/Pic.vue new file mode 100644 index 0000000..10dcb37 --- /dev/null +++ b/frontend/src/views/os/file/Pic.vue @@ -0,0 +1,53 @@ + + + + \ No newline at end of file diff --git a/frontend/src/views/os/notification/Index.vue b/frontend/src/views/os/notification/Index.vue new file mode 100644 index 0000000..b93ab58 --- /dev/null +++ b/frontend/src/views/os/notification/Index.vue @@ -0,0 +1,90 @@ + + + diff --git a/frontend/src/views/os/powermonitor/Index.vue b/frontend/src/views/os/powermonitor/Index.vue new file mode 100644 index 0000000..ac15081 --- /dev/null +++ b/frontend/src/views/os/powermonitor/Index.vue @@ -0,0 +1,59 @@ + + + diff --git a/frontend/src/views/os/screen/Index.vue b/frontend/src/views/os/screen/Index.vue new file mode 100644 index 0000000..3b38c97 --- /dev/null +++ b/frontend/src/views/os/screen/Index.vue @@ -0,0 +1,61 @@ + + + diff --git a/frontend/src/views/os/subwindow/Ipc.vue b/frontend/src/views/os/subwindow/Ipc.vue new file mode 100644 index 0000000..43f18ce --- /dev/null +++ b/frontend/src/views/os/subwindow/Ipc.vue @@ -0,0 +1,144 @@ + + + diff --git a/frontend/src/views/os/system/Index.vue b/frontend/src/views/os/system/Index.vue new file mode 100644 index 0000000..b049f6c --- /dev/null +++ b/frontend/src/views/os/system/Index.vue @@ -0,0 +1,69 @@ + + + \ No newline at end of file diff --git a/frontend/src/views/os/theme/Index.vue b/frontend/src/views/os/theme/Index.vue new file mode 100644 index 0000000..0e62732 --- /dev/null +++ b/frontend/src/views/os/theme/Index.vue @@ -0,0 +1,83 @@ + + + diff --git a/frontend/src/views/os/window/Index.vue b/frontend/src/views/os/window/Index.vue new file mode 100644 index 0000000..d8e6c80 --- /dev/null +++ b/frontend/src/views/os/window/Index.vue @@ -0,0 +1,87 @@ + + + diff --git a/frontend/src/views/os/windowview/Index.vue b/frontend/src/views/os/windowview/Index.vue new file mode 100644 index 0000000..c099019 --- /dev/null +++ b/frontend/src/views/os/windowview/Index.vue @@ -0,0 +1,74 @@ + + + diff --git a/frontend/vite.config.js b/frontend/vite.config.js new file mode 100644 index 0000000..e7b7e05 --- /dev/null +++ b/frontend/vite.config.js @@ -0,0 +1,57 @@ +import vue from '@vitejs/plugin-vue' +import { defineConfig } from 'vite' +import viteCompression from 'vite-plugin-compression' + +import path from 'path' +// https://vitejs.dev/config/ +export default defineConfig(({ command, mode }) => { + return { + // 项目插件 + plugins: [ + vue(), + viteCompression({ + verbose: true, + disable: false, + threshold: 1025, + algorithm: 'gzip', + ext: '.gz', + }), + ], + // 基础配置 + base: './', + publicDir: 'public', + resolve: { + alias: { + '@': path.resolve(__dirname, 'src'), + }, + }, + css: { + preprocessorOptions: { + less: { + modifyVars: { + '@border-color-base': '#dce3e8', + }, + javascriptEnabled: true, + }, + }, + }, + build: { + outDir: 'dist', + assetsDir: 'assets', + assetsInlineLimit: 4096, + cssCodeSplit: true, + brotliSize: false, + sourcemap: false, + minify: 'terser', + terserOptions: { + compress: { + // 生产环境去除console及debug + drop_console: false, + drop_debugger: true, + }, + }, + }, + } +}) + + diff --git a/go/api/example.go b/go/api/example.go new file mode 100644 index 0000000..9aa8f21 --- /dev/null +++ b/go/api/example.go @@ -0,0 +1,36 @@ +package api + +import ( + "net/http" + + "github.com/wallace5303/ee-go/eapp" + "github.com/wallace5303/ee-go/ehelper" + "github.com/wallace5303/ee-go/ehttp/router" + "github.com/wallace5303/ee-go/elog" + + "github.com/gin-gonic/gin" +) + +// 使用 router Ctx +func Hello(c *router.Ctx) { + ret := ehelper.GetJson() + defer c.JSON(ret) + + ret.Data = "hello electron-egg" + elog.Logger.Info(" print Hello ") +} + +// 使用 gin Context +func Info(gc *gin.Context) { + ret := ehelper.GetJson() + defer gc.JSON(http.StatusOK, ret) + + elog.Logger.Info(" print info ") +} + +func Exit(c *router.Ctx) { + ret := ehelper.GetJson() + defer c.JSON(ret) + + eapp.Close() +} diff --git a/go/config/config.default.json b/go/config/config.default.json new file mode 100644 index 0000000..ab58ea3 --- /dev/null +++ b/go/config/config.default.json @@ -0,0 +1,29 @@ +{ + "logger": { + "output_json": false, + "level": "info", + "filename": "ee-go.log", + "max_size": 1024, + "max_age": 10 + }, + "core_logger": { + "output_json": false, + "level": "info", + "filename": "ee-go-core.log", + "max_size": 1024, + "max_age": 10 + }, + "http": { + "enable": true, + "port": 7073, + "network": false + }, + "static": { + "enable": true, + "package": "public/package.json", + "config": "public/config", + "dist": "public/dist", + "html": "public/html", + "ssl": "public/ssl" + } +} \ No newline at end of file diff --git a/go/config/config.local.json b/go/config/config.local.json new file mode 100644 index 0000000..2268fe0 --- /dev/null +++ b/go/config/config.local.json @@ -0,0 +1,9 @@ +{ + "logger": { + "output_json": false, + "level": "info", + "filename": "ee-go.log", + "max_size": 1024, + "max_age": 20 + } +} \ No newline at end of file diff --git a/go/config/config.prod.json b/go/config/config.prod.json new file mode 100644 index 0000000..d2b0aec --- /dev/null +++ b/go/config/config.prod.json @@ -0,0 +1,9 @@ +{ + "logger": { + "output_json": false, + "level": "info", + "filename": "ee-go.log", + "max_size": 1024, + "max_age": 30 + } +} \ No newline at end of file diff --git a/go/go.mod b/go/go.mod new file mode 100644 index 0000000..96ecac6 --- /dev/null +++ b/go/go.mod @@ -0,0 +1,67 @@ +module electron-egg + +go 1.20 + +require ( + github.com/gin-gonic/gin v1.9.1 + github.com/wallace5303/ee-go v1.0.0 +) + +require ( + github.com/bytedance/sonic v1.9.1 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gin-contrib/gzip v0.0.6 // indirect + github.com/gin-contrib/sessions v0.0.5 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.14.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/gorilla/context v1.1.1 // indirect + github.com/gorilla/securecookie v1.1.1 // indirect + github.com/gorilla/sessions v1.2.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/leodido/go-urn v1.2.4 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mssola/useragent v1.0.0 // indirect + github.com/natefinch/lumberjack v2.0.0+incompatible // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/shirou/gopsutil/v3 v3.23.8 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.10.0 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.17.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/multierr v1.10.0 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/arch v0.3.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect + golang.org/x/net v0.16.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go/main.go b/go/main.go new file mode 100644 index 0000000..8f5bec9 --- /dev/null +++ b/go/main.go @@ -0,0 +1,25 @@ +package main + +import ( + "embed" + + "github.com/wallace5303/ee-go/eboot" + + "electron-egg/router" +) + +var ( + //go:embed public/** + staticFS embed.FS +) + +func main() { + // Initialize ee-go + ego := eboot.New(staticFS) + + // User business logic + router.Api() + + // ee-go runtime + ego.Run() +} diff --git a/go/router/router.go b/go/router/router.go new file mode 100644 index 0000000..c3e38f5 --- /dev/null +++ b/go/router/router.go @@ -0,0 +1,17 @@ +package router + +import ( + "electron-egg/api" + + eRouter "github.com/wallace5303/ee-go/ehttp/router" +) + +func Api() { + + // 注册路由 + eRouter.Handle("GET", "/api/hello", api.Hello) + eRouter.Handle("GET", "/api/exit", api.Exit) + + // 使用 gin 注册路由 + eRouter.GinRouter.GET("/api/info", api.Info) +} diff --git a/main.js b/main.js new file mode 100644 index 0000000..98527c4 --- /dev/null +++ b/main.js @@ -0,0 +1,2 @@ +const { ElectronEgg } = require('ee-core'); +new ElectronEgg(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0875069 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,45267 @@ +{ + + + "name": "appCtr", + + + "version": "3.9.0", + + + "lockfileVersion": 2, + + + "requires": true, + + + "packages": { + + + "": { + + + "name": "appCtr", + + + "version": "3.9.0", + + + "license": "Apache", + + + "dependencies": { + + + "@lzwme/get-physical-address": "^1.0.5", + + + "dayjs": "^1.10.7", + + + "ee-core": "^2.9.2", + + + "electron-shutdown-command": "^2.0.1", + + + "electron-updater": "^5.3.0", + + + "lodash": "^4.17.21", + + + "loudness": "^0.4.2", + + + "modbus-serial": "^8.0.13", + + + "moment": "^2.29.4", + + + "serialport": "^12.0.0" + + + }, + + + "devDependencies": { + + + "@electron/rebuild": "^3.2.13", + + + "debug": "^4.3.3", + + + "ee-bin": "^1.5.0", + + + "electron": "^21.4.4", + + + "electron-builder": "^23.6.0", + + + "eslint": "^5.13.0", + + + "eslint-plugin-prettier": "^3.0.1", + + + "icon-gen": "^4.0.0", + + + "nodemon": "^2.0.16" + + + } + + + }, + + + "node_modules/@babel/code-frame": { + + + "version": "7.22.13", + + + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + + + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + + + "dev": true, + + + "dependencies": { + + + "@babel/highlight": "^7.22.13", + + + "chalk": "^2.4.2" + + + }, + + + "engines": { + + + "node": ">=6.9.0" + + + } + + + }, + + + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/code-frame/node_modules/chalk": { + + + "version": "2.4.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + + + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^3.2.1", + + + "escape-string-regexp": "^1.0.5", + + + "supports-color": "^5.3.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/code-frame/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/@babel/code-frame/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "node_modules/@babel/code-frame/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/code-frame/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dev": true, + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/helper-validator-identifier": { + + + "version": "7.22.20", + + + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + + + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + + + "dev": true, + + + "engines": { + + + "node": ">=6.9.0" + + + } + + + }, + + + "node_modules/@babel/highlight": { + + + "version": "7.22.20", + + + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + + + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + + + "dev": true, + + + "dependencies": { + + + "@babel/helper-validator-identifier": "^7.22.20", + + + "chalk": "^2.4.2", + + + "js-tokens": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=6.9.0" + + + } + + + }, + + + "node_modules/@babel/highlight/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/highlight/node_modules/chalk": { + + + "version": "2.4.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + + + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^3.2.1", + + + "escape-string-regexp": "^1.0.5", + + + "supports-color": "^5.3.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/highlight/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/@babel/highlight/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "node_modules/@babel/highlight/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@babel/highlight/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dev": true, + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@develar/schema-utils": { + + + "version": "2.6.5", + + + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + + + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + + + "dev": true, + + + "dependencies": { + + + "ajv": "^6.12.0", + + + "ajv-keywords": "^3.4.1" + + + }, + + + "engines": { + + + "node": ">= 8.9.0" + + + }, + + + "funding": { + + + "type": "opencollective", + + + "url": "https://opencollective.com/webpack" + + + } + + + }, + + + "node_modules/@electron/get": { + + + "version": "1.14.1", + + + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + + + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + + + "dev": true, + + + "dependencies": { + + + "debug": "^4.1.1", + + + "env-paths": "^2.2.0", + + + "fs-extra": "^8.1.0", + + + "got": "^9.6.0", + + + "progress": "^2.0.3", + + + "semver": "^6.2.0", + + + "sumchecker": "^3.0.1" + + + }, + + + "engines": { + + + "node": ">=8.6" + + + }, + + + "optionalDependencies": { + + + "global-agent": "^3.0.0", + + + "global-tunnel-ng": "^2.7.1" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/@sindresorhus/is": { + + + "version": "0.14.0", + + + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + + + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/@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==", + + + "dev": true, + + + "dependencies": { + + + "defer-to-connect": "^1.0.1" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/cacheable-request": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + + + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + + + "dev": true, + + + "dependencies": { + + + "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" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/decompress-response": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + + + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + + + "dev": true, + + + "dependencies": { + + + "mimic-response": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/defer-to-connect": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + + + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + + + "dev": true + + + }, + + + "node_modules/@electron/get/node_modules/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==", + + + "dev": true, + + + "dependencies": { + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^4.0.0", + + + "universalify": "^0.1.0" + + + }, + + + "engines": { + + + "node": ">=6 <7 || >=8" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/got": { + + + "version": "9.6.0", + + + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + + + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + + + "dev": true, + + + "dependencies": { + + + "@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" + + + }, + + + "engines": { + + + "node": ">=8.6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/got/node_modules/get-stream": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + + + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + + + "dev": true, + + + "dependencies": { + + + "pump": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/got/node_modules/lowercase-keys": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + + + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/json-buffer": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + + + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + + + "dev": true + + + }, + + + "node_modules/@electron/get/node_modules/jsonfile": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + + + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + + + "dev": true, + + + "optionalDependencies": { + + + "graceful-fs": "^4.1.6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/keyv": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + + + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + + + "dev": true, + + + "dependencies": { + + + "json-buffer": "3.0.0" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/normalize-url": { + + + "version": "4.5.1", + + + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + + + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/p-cancelable": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + + + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/responselike": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + + + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + + + "dev": true, + + + "dependencies": { + + + "lowercase-keys": "^1.0.0" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/responselike/node_modules/lowercase-keys": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + + + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/semver": { + + + "version": "6.3.1", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + "dev": true, + + + "bin": { + + + "semver": "bin/semver.js" + + + } + + + }, + + + "node_modules/@electron/get/node_modules/universalify": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + + + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 4.0.0" + + + } + + + }, + + + "node_modules/@electron/rebuild": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz", + + + "integrity": "sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ==", + + + "dev": true, + + + "dependencies": { + + + "@malept/cross-spawn-promise": "^2.0.0", + + + "chalk": "^4.0.0", + + + "debug": "^4.1.1", + + + "detect-libc": "^2.0.1", + + + "fs-extra": "^10.0.0", + + + "got": "^11.7.0", + + + "node-abi": "^3.45.0", + + + "node-api-version": "^0.1.4", + + + "node-gyp": "^9.0.0", + + + "ora": "^5.1.0", + + + "semver": "^7.3.5", + + + "tar": "^6.0.5", + + + "yargs": "^17.0.1" + + + }, + + + "bin": { + + + "electron-rebuild": "lib/cli.js" + + + }, + + + "engines": { + + + "node": ">=12.13.0" + + + } + + + }, + + + "node_modules/@electron/universal": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + + + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + + + "dev": true, + + + "dependencies": { + + + "@malept/cross-spawn-promise": "^1.1.0", + + + "asar": "^3.1.0", + + + "debug": "^4.3.1", + + + "dir-compare": "^2.4.0", + + + "fs-extra": "^9.0.1", + + + "minimatch": "^3.0.4", + + + "plist": "^3.0.4" + + + }, + + + "engines": { + + + "node": ">=8.6" + + + } + + + }, + + + "node_modules/@electron/universal/node_modules/@malept/cross-spawn-promise": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + + + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "individual", + + + "url": "https://github.com/sponsors/malept" + + + }, + + + { + + + "type": "tidelift", + + + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + + + } + + + ], + + + "dependencies": { + + + "cross-spawn": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">= 10" + + + } + + + }, + + + "node_modules/@electron/universal/node_modules/fs-extra": { + + + "version": "9.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + + + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + + + "dev": true, + + + "dependencies": { + + + "at-least-node": "^1.0.0", + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/@isaacs/cliui": { + + + "version": "8.0.2", + + + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + + + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + + + "dev": true, + + + "dependencies": { + + + "string-width": "^5.1.2", + + + "string-width-cjs": "npm:string-width@^4.2.0", + + + "strip-ansi": "^7.0.1", + + + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + + + "wrap-ansi": "^8.1.0", + + + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + + + }, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + + + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + + + "dev": true, + + + "engines": { + + + "node": ">=12" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + + + "version": "6.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + + + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + + + "dev": true, + + + "engines": { + + + "node": ">=12" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + + + "version": "9.2.2", + + + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + + + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + + + "dev": true + + + }, + + + "node_modules/@isaacs/cliui/node_modules/string-width": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + + + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + + + "dev": true, + + + "dependencies": { + + + "eastasianwidth": "^0.2.0", + + + "emoji-regex": "^9.2.2", + + + "strip-ansi": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">=12" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + + + "version": "7.1.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + + + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^6.0.1" + + + }, + + + "engines": { + + + "node": ">=12" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + + + } + + + }, + + + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + + + "version": "8.1.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + + + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^6.1.0", + + + "string-width": "^5.0.1", + + + "strip-ansi": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">=12" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + } + + + }, + + + "node_modules/@javascript-obfuscator/escodegen": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/@javascript-obfuscator/escodegen/-/escodegen-2.3.0.tgz", + + + "integrity": "sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==", + + + "dev": true, + + + "dependencies": { + + + "@javascript-obfuscator/estraverse": "^5.3.0", + + + "esprima": "^4.0.1", + + + "esutils": "^2.0.2", + + + "optionator": "^0.8.1" + + + }, + + + "engines": { + + + "node": ">=6.0" + + + }, + + + "optionalDependencies": { + + + "source-map": "~0.6.1" + + + } + + + }, + + + "node_modules/@javascript-obfuscator/estraverse": { + + + "version": "5.4.0", + + + "resolved": "https://registry.npmjs.org/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz", + + + "integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/@lzwme/get-physical-address": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/@lzwme/get-physical-address/-/get-physical-address-1.0.5.tgz", + + + "integrity": "sha512-P7oQIWW8I1y4NCMFubcsagyrjShRTmRueU1e+J0EcBzj6jmqA+JSwypsJdXcHyD41ytDvW0BeZAUtB0EsIEytw==", + + + "bin": { + + + "gmac": "bin/cli.js" + + + }, + + + "engines": { + + + "node": ">=12" + + + }, + + + "peerDependencies": { + + + "iconv-lite": "*" + + + }, + + + "peerDependenciesMeta": { + + + "iconv-lite": { + + + "optional": true + + + } + + + } + + + }, + + + "node_modules/@malept/cross-spawn-promise": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + + + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "individual", + + + "url": "https://github.com/sponsors/malept" + + + }, + + + { + + + "type": "tidelift", + + + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + + + } + + + ], + + + "dependencies": { + + + "cross-spawn": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">= 12.13.0" + + + } + + + }, + + + "node_modules/@malept/flatpak-bundler": { + + + "version": "0.4.0", + + + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + + + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + + + "dev": true, + + + "dependencies": { + + + "debug": "^4.1.1", + + + "fs-extra": "^9.0.0", + + + "lodash": "^4.17.15", + + + "tmp-promise": "^3.0.2" + + + }, + + + "engines": { + + + "node": ">= 10.0.0" + + + } + + + }, + + + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + + + "version": "9.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + + + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + + + "dev": true, + + + "dependencies": { + + + "at-least-node": "^1.0.0", + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/@nodelib/fs.scandir": { + + + "version": "2.1.5", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + + + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + + + "dependencies": { + + + "@nodelib/fs.stat": "2.0.5", + + + "run-parallel": "^1.1.9" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/@nodelib/fs.stat": { + + + "version": "2.0.5", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + + + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/@nodelib/fs.walk": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + + + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + + + "dependencies": { + + + "@nodelib/fs.scandir": "2.1.5", + + + "fastq": "^1.6.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/@npmcli/fs": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + + + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + + + "dev": true, + + + "dependencies": { + + + "semver": "^7.3.5" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/@pkgjs/parseargs": { + + + "version": "0.11.0", + + + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + + + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=14" + + + } + + + }, + + + "node_modules/@serialport/binding-mock": { + + + "version": "10.2.2", + + + "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + + + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + + + "dependencies": { + + + "@serialport/bindings-interface": "^1.2.1", + + + "debug": "^4.3.3" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + } + + + }, + + + "node_modules/@serialport/bindings-cpp": { + + + "version": "12.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-12.0.1.tgz", + + + "integrity": "sha512-r2XOwY2dDvbW7dKqSPIk2gzsr6M6Qpe9+/Ngs94fNaNlcTRCV02PfaoDmRgcubpNVVcLATlxSxPTIDw12dbKOg==", + + + "hasInstallScript": true, + + + "dependencies": { + + + "@serialport/bindings-interface": "1.2.2", + + + "@serialport/parser-readline": "11.0.0", + + + "debug": "4.3.4", + + + "node-addon-api": "7.0.0", + + + "node-gyp-build": "4.6.0" + + + }, + + + "engines": { + + + "node": ">=16.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + + + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + + + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + + + "dependencies": { + + + "@serialport/parser-delimiter": "11.0.0" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/bindings-cpp/node_modules/node-addon-api": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + + + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + + + }, + + + "node_modules/@serialport/bindings-interface": { + + + "version": "1.2.2", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + + + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==", + + + "engines": { + + + "node": "^12.22 || ^14.13 || >=16" + + + } + + + }, + + + "node_modules/@serialport/parser-byte-length": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-12.0.0.tgz", + + + "integrity": "sha512-0ei0txFAj+s6FTiCJFBJ1T2hpKkX8Md0Pu6dqMrYoirjPskDLJRgZGLqoy3/lnU1bkvHpnJO+9oJ3PB9v8rNlg==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-cctalk": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-12.0.0.tgz", + + + "integrity": "sha512-0PfLzO9t2X5ufKuBO34DQKLXrCCqS9xz2D0pfuaLNeTkyGUBv426zxoMf3rsMRodDOZNbFblu3Ae84MOQXjnZw==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-delimiter": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + + + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-inter-byte-timeout": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-12.0.0.tgz", + + + "integrity": "sha512-GnCh8K0NAESfhCuXAt+FfBRz1Cf9CzIgXfp7SdMgXwrtuUnCC/yuRTUFWRvuzhYKoAo1TL0hhUo77SFHUH1T/w==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-packet-length": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-12.0.0.tgz", + + + "integrity": "sha512-p1hiCRqvGHHLCN/8ZiPUY/G0zrxd7gtZs251n+cfNTn+87rwcdUeu9Dps3Aadx30/sOGGFL6brIRGK4l/t7MuQ==", + + + "engines": { + + + "node": ">=8.6.0" + + + } + + + }, + + + "node_modules/@serialport/parser-readline": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + + + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + + + "dependencies": { + + + "@serialport/parser-delimiter": "12.0.0" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-ready": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-12.0.0.tgz", + + + "integrity": "sha512-ygDwj3O4SDpZlbrRUraoXIoIqb8sM7aMKryGjYTIF0JRnKeB1ys8+wIp0RFMdFbO62YriUDextHB5Um5cKFSWg==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-regex": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-12.0.0.tgz", + + + "integrity": "sha512-dCAVh4P/pZrLcPv9NJ2mvPRBg64L5jXuiRxIlyxxdZGH4WubwXVXY/kBTihQmiAMPxbT3yshSX8f2+feqWsxqA==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-slip-encoder": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-12.0.0.tgz", + + + "integrity": "sha512-0APxDGR9YvJXTRfY+uRGhzOhTpU5akSH183RUcwzN7QXh8/1jwFsFLCu0grmAUfi+fItCkR+Xr1TcNJLR13VNA==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/parser-spacepacket": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-12.0.0.tgz", + + + "integrity": "sha512-dozONxhPC/78pntuxpz/NOtVps8qIc/UZzdc/LuPvVsqCoJXiRxOg6ZtCP/W58iibJDKPZPAWPGYeZt9DJxI+Q==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@serialport/stream": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-12.0.0.tgz", + + + "integrity": "sha512-9On64rhzuqKdOQyiYLYv2lQOh3TZU/D3+IWCR5gk0alPel2nwpp4YwDEGiUBfrQZEdQ6xww0PWkzqth4wqwX3Q==", + + + "dependencies": { + + + "@serialport/bindings-interface": "1.2.2", + + + "debug": "4.3.4" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/@sindresorhus/is": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + + + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sindresorhus/is?sponsor=1" + + + } + + + }, + + + "node_modules/@socket.io/component-emitter": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + + + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + + + }, + + + "node_modules/@szmarczak/http-timer": { + + + "version": "4.0.6", + + + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + + + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + + + "dev": true, + + + "dependencies": { + + + "defer-to-connect": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/@tootallnate/once": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + + + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + + + "dev": true, + + + "engines": { + + + "node": ">= 10" + + + } + + + }, + + + "node_modules/@types/cacheable-request": { + + + "version": "6.0.3", + + + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + + + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + + + "dev": true, + + + "dependencies": { + + + "@types/http-cache-semantics": "*", + + + "@types/keyv": "^3.1.4", + + + "@types/node": "*", + + + "@types/responselike": "^1.0.0" + + + } + + + }, + + + "node_modules/@types/cookie": { + + + "version": "0.4.1", + + + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + + + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + + + }, + + + "node_modules/@types/cors": { + + + "version": "2.8.14", + + + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz", + + + "integrity": "sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==", + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/debug": { + + + "version": "4.1.9", + + + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz", + + + "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==", + + + "dev": true, + + + "dependencies": { + + + "@types/ms": "*" + + + } + + + }, + + + "node_modules/@types/formidable": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.6.tgz", + + + "integrity": "sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==", + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/fs-extra": { + + + "version": "9.0.13", + + + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + + + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + + + "dev": true, + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/glob": { + + + "version": "7.2.0", + + + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + + + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + + + "dependencies": { + + + "@types/minimatch": "*", + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/http-cache-semantics": { + + + "version": "4.0.2", + + + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + + + "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + + + "dev": true + + + }, + + + "node_modules/@types/keyv": { + + + "version": "3.1.4", + + + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + + + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + + + "dev": true, + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/minimatch": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + + + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + + + }, + + + "node_modules/@types/ms": { + + + "version": "0.7.32", + + + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz", + + + "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==", + + + "dev": true + + + }, + + + "node_modules/@types/node": { + + + "version": "16.18.58", + + + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.58.tgz", + + + "integrity": "sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA==" + + + }, + + + "node_modules/@types/plist": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz", + + + "integrity": "sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "@types/node": "*", + + + "xmlbuilder": ">=11.0.1" + + + } + + + }, + + + "node_modules/@types/responselike": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", + + + "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + + + "dev": true, + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@types/semver": { + + + "version": "7.5.3", + + + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + + + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" + + + }, + + + "node_modules/@types/validator": { + + + "version": "13.11.2", + + + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.2.tgz", + + + "integrity": "sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==", + + + "dev": true + + + }, + + + "node_modules/@types/verror": { + + + "version": "1.10.7", + + + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz", + + + "integrity": "sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/@types/yargs": { + + + "version": "17.0.28", + + + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + + + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + + + "dev": true, + + + "dependencies": { + + + "@types/yargs-parser": "*" + + + } + + + }, + + + "node_modules/@types/yargs-parser": { + + + "version": "21.0.1", + + + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + + + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", + + + "dev": true + + + }, + + + "node_modules/@types/yauzl": { + + + "version": "2.10.1", + + + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", + + + "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "@types/node": "*" + + + } + + + }, + + + "node_modules/@xmldom/xmldom": { + + + "version": "0.8.10", + + + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + + + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=10.0.0" + + + } + + + }, + + + "node_modules/7zip-bin": { + + + "version": "5.1.1", + + + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + + + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + + + "dev": true + + + }, + + + "node_modules/abbrev": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + + + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + + + "dev": true + + + }, + + + "node_modules/accepts": { + + + "version": "1.3.8", + + + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + + + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + + + "dependencies": { + + + "mime-types": "~2.1.34", + + + "negotiator": "0.6.3" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/acorn": { + + + "version": "6.4.2", + + + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + + + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + + + "dev": true, + + + "bin": { + + + "acorn": "bin/acorn" + + + }, + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/acorn-jsx": { + + + "version": "5.3.2", + + + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + + + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + + + "dev": true, + + + "peerDependencies": { + + + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + + + } + + + }, + + + "node_modules/agent-base": { + + + "version": "6.0.2", + + + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + + + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + + + "dev": true, + + + "dependencies": { + + + "debug": "4" + + + }, + + + "engines": { + + + "node": ">= 6.0.0" + + + } + + + }, + + + "node_modules/agentkeepalive": { + + + "version": "4.5.0", + + + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + + + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + + + "dependencies": { + + + "humanize-ms": "^1.2.1" + + + }, + + + "engines": { + + + "node": ">= 8.0.0" + + + } + + + }, + + + "node_modules/aggregate-error": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + + + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + + + "dev": true, + + + "dependencies": { + + + "clean-stack": "^2.0.0", + + + "indent-string": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/ajv": { + + + "version": "6.12.6", + + + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + + + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + + + "dev": true, + + + "dependencies": { + + + "fast-deep-equal": "^3.1.1", + + + "fast-json-stable-stringify": "^2.0.0", + + + "json-schema-traverse": "^0.4.1", + + + "uri-js": "^4.2.2" + + + }, + + + "funding": { + + + "type": "github", + + + "url": "https://github.com/sponsors/epoberezkin" + + + } + + + }, + + + "node_modules/ajv-keywords": { + + + "version": "3.5.2", + + + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + + + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + + + "dev": true, + + + "peerDependencies": { + + + "ajv": "^6.9.1" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/ansi-regex": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + + + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/ansi-styles": { + + + "version": "4.3.0", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + + + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + + + "dependencies": { + + + "color-convert": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + + } + + + }, + + + "node_modules/any-promise": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + + + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + + + }, + + + "node_modules/anymatch": { + + + "version": "3.1.3", + + + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + + + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + + + "dev": true, + + + "dependencies": { + + + "normalize-path": "^3.0.0", + + + "picomatch": "^2.0.4" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/app-builder-bin": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + + + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + + + "dev": true + + + }, + + + "node_modules/app-builder-lib": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + + + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + + + "dev": true, + + + "dependencies": { + + + "@develar/schema-utils": "~2.6.5", + + + "@electron/universal": "1.2.1", + + + "@malept/flatpak-bundler": "^0.4.0", + + + "7zip-bin": "~5.1.1", + + + "async-exit-hook": "^2.0.1", + + + "bluebird-lst": "^1.0.9", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chromium-pickle-js": "^0.2.0", + + + "debug": "^4.3.4", + + + "ejs": "^3.1.7", + + + "electron-osx-sign": "^0.6.0", + + + "electron-publish": "23.6.0", + + + "form-data": "^4.0.0", + + + "fs-extra": "^10.1.0", + + + "hosted-git-info": "^4.1.0", + + + "is-ci": "^3.0.0", + + + "isbinaryfile": "^4.0.10", + + + "js-yaml": "^4.1.0", + + + "lazy-val": "^1.0.5", + + + "minimatch": "^3.1.2", + + + "read-config-file": "6.2.0", + + + "sanitize-filename": "^1.6.3", + + + "semver": "^7.3.7", + + + "tar": "^6.1.11", + + + "temp-file": "^3.4.0" + + + }, + + + "engines": { + + + "node": ">=14.0.0" + + + } + + + }, + + + "node_modules/aproba": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + + + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + + + "dev": true + + + }, + + + "node_modules/are-we-there-yet": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + + + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + + + "dev": true, + + + "dependencies": { + + + "delegates": "^1.0.0", + + + "readable-stream": "^3.6.0" + + + }, + + + "engines": { + + + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/argparse": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + + + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + + + }, + + + "node_modules/array-differ": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + + + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/array-union": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + + + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/arrify": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + + + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/asap": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + + + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + + + }, + + + "node_modules/asar": { + + + "version": "3.2.0", + + + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + + + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + + + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + + + "dev": true, + + + "dependencies": { + + + "chromium-pickle-js": "^0.2.0", + + + "commander": "^5.0.0", + + + "glob": "^7.1.6", + + + "minimatch": "^3.0.4" + + + }, + + + "bin": { + + + "asar": "bin/asar.js" + + + }, + + + "engines": { + + + "node": ">=10.12.0" + + + }, + + + "optionalDependencies": { + + + "@types/glob": "^7.1.1" + + + } + + + }, + + + "node_modules/asar/node_modules/commander": { + + + "version": "5.1.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + + + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/assert": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + + + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + + + "dev": true, + + + "dependencies": { + + + "es6-object-assign": "^1.1.0", + + + "is-nan": "^1.2.1", + + + "object-is": "^1.0.1", + + + "util": "^0.12.0" + + + } + + + }, + + + "node_modules/assert-plus": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + + + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=0.8" + + + } + + + }, + + + "node_modules/astral-regex": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + + + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/async": { + + + "version": "3.2.4", + + + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + + + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + + + "dev": true + + + }, + + + "node_modules/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==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.12.0" + + + } + + + }, + + + "node_modules/asynckit": { + + + "version": "0.4.0", + + + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + + + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + + + "dev": true + + + }, + + + "node_modules/at-least-node": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + + + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 4.0.0" + + + } + + + }, + + + "node_modules/available-typed-arrays": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + + + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/b4a": { + + + "version": "1.6.4", + + + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + + + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + + + "dev": true + + + }, + + + "node_modules/balanced-match": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + + + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + + + }, + + + "node_modules/base64-js": { + + + "version": "1.5.1", + + + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + + + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ] + + + }, + + + "node_modules/base64id": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + + + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + + + "engines": { + + + "node": "^4.5.0 || >= 5.9" + + + } + + + }, + + + "node_modules/binary-extensions": { + + + "version": "2.2.0", + + + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + + + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/bl": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + + + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + + + "dev": true, + + + "dependencies": { + + + "buffer": "^5.5.0", + + + "inherits": "^2.0.4", + + + "readable-stream": "^3.4.0" + + + } + + + }, + + + "node_modules/bluebird": { + + + "version": "3.7.2", + + + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + + + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + + + "dev": true + + + }, + + + "node_modules/bluebird-lst": { + + + "version": "1.0.9", + + + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + + + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + + + "dev": true, + + + "dependencies": { + + + "bluebird": "^3.5.5" + + + } + + + }, + + + "node_modules/boolean": { + + + "version": "3.2.0", + + + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + + + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/brace-expansion": { + + + "version": "1.1.11", + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + + + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + + + "dependencies": { + + + "balanced-match": "^1.0.0", + + + "concat-map": "0.0.1" + + + } + + + }, + + + "node_modules/braces": { + + + "version": "3.0.2", + + + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + + + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + + + "dependencies": { + + + "fill-range": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/buffer": { + + + "version": "5.7.1", + + + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + + + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ], + + + "dependencies": { + + + "base64-js": "^1.3.1", + + + "ieee754": "^1.1.13" + + + } + + + }, + + + "node_modules/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==", + + + "dev": true, + + + "dependencies": { + + + "buffer-alloc-unsafe": "^1.1.0", + + + "buffer-fill": "^1.0.0" + + + } + + + }, + + + "node_modules/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==", + + + "dev": true + + + }, + + + "node_modules/buffer-crc32": { + + + "version": "0.2.13", + + + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + + + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + + + "dev": true, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/buffer-equal": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + + + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/buffer-fill": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + + + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + + + "dev": true + + + }, + + + "node_modules/buffer-from": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + + + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + + + "dev": true + + + }, + + + "node_modules/builder-util": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + + + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + + + "dev": true, + + + "dependencies": { + + + "@types/debug": "^4.1.6", + + + "@types/fs-extra": "^9.0.11", + + + "7zip-bin": "~5.1.1", + + + "app-builder-bin": "4.0.0", + + + "bluebird-lst": "^1.0.9", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "cross-spawn": "^7.0.3", + + + "debug": "^4.3.4", + + + "fs-extra": "^10.0.0", + + + "http-proxy-agent": "^5.0.0", + + + "https-proxy-agent": "^5.0.0", + + + "is-ci": "^3.0.0", + + + "js-yaml": "^4.1.0", + + + "source-map-support": "^0.5.19", + + + "stat-mode": "^1.0.0", + + + "temp-file": "^3.4.0" + + + } + + + }, + + + "node_modules/builder-util-runtime": { + + + "version": "9.1.1", + + + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + + + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + + + "dependencies": { + + + "debug": "^4.3.4", + + + "sax": "^1.2.4" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + } + + + }, + + + "node_modules/bytenode": { + + + "version": "1.5.1", + + + "resolved": "https://registry.npmjs.org/bytenode/-/bytenode-1.5.1.tgz", + + + "integrity": "sha512-99JiRxnOYs+89VAPfvh1NG6xqsB6flCifJkvQM3jWwYTO+Y7B+Ed85o+yIBt8a4JRMLYo/F0JqY8NyDAgGOs2w==", + + + "bin": { + + + "bytenode": "lib/cli.js" + + + } + + + }, + + + "node_modules/bytes": { + + + "version": "3.1.2", + + + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + + + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/cacache": { + + + "version": "17.1.4", + + + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + + + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + + + "dev": true, + + + "dependencies": { + + + "@npmcli/fs": "^3.1.0", + + + "fs-minipass": "^3.0.0", + + + "glob": "^10.2.2", + + + "lru-cache": "^7.7.1", + + + "minipass": "^7.0.3", + + + "minipass-collect": "^1.0.2", + + + "minipass-flush": "^1.0.5", + + + "minipass-pipeline": "^1.2.4", + + + "p-map": "^4.0.0", + + + "ssri": "^10.0.0", + + + "tar": "^6.1.11", + + + "unique-filename": "^3.0.0" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/cacache/node_modules/brace-expansion": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + + + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + + + "dev": true, + + + "dependencies": { + + + "balanced-match": "^1.0.0" + + + } + + + }, + + + "node_modules/cacache/node_modules/glob": { + + + "version": "10.3.10", + + + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + + + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + + + "dev": true, + + + "dependencies": { + + + "foreground-child": "^3.1.0", + + + "jackspeak": "^2.3.5", + + + "minimatch": "^9.0.1", + + + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + + + "path-scurry": "^1.10.1" + + + }, + + + "bin": { + + + "glob": "dist/esm/bin.mjs" + + + }, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/cacache/node_modules/lru-cache": { + + + "version": "7.18.3", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + + + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + + + "dev": true, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/cacache/node_modules/minimatch": { + + + "version": "9.0.3", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + + + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + + + "dev": true, + + + "dependencies": { + + + "brace-expansion": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/cacache/node_modules/minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + } + + + }, + + + "node_modules/cache-content-type": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + + + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + + + "dependencies": { + + + "mime-types": "^2.1.18", + + + "ylru": "^1.2.0" + + + }, + + + "engines": { + + + "node": ">= 6.0.0" + + + } + + + }, + + + "node_modules/cacheable-lookup": { + + + "version": "5.0.4", + + + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + + + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + + + "dev": true, + + + "engines": { + + + "node": ">=10.6.0" + + + } + + + }, + + + "node_modules/cacheable-request": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + + + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + + + "dev": true, + + + "dependencies": { + + + "clone-response": "^1.0.2", + + + "get-stream": "^5.1.0", + + + "http-cache-semantics": "^4.0.0", + + + "keyv": "^4.0.0", + + + "lowercase-keys": "^2.0.0", + + + "normalize-url": "^6.0.1", + + + "responselike": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/call-bind": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + + + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + + + "dependencies": { + + + "function-bind": "^1.1.1", + + + "get-intrinsic": "^1.0.2" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/callsites": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + + + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/chalk": { + + + "version": "4.1.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + + + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + + + "dependencies": { + + + "ansi-styles": "^4.1.0", + + + "supports-color": "^7.1.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/chalk?sponsor=1" + + + } + + + }, + + + "node_modules/chance": { + + + "version": "1.1.9", + + + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.9.tgz", + + + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", + + + "dev": true + + + }, + + + "node_modules/char-regex": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + + + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/chardet": { + + + "version": "0.7.0", + + + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + + + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + + + "dev": true + + + }, + + + "node_modules/charenc": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + + + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + + + "dev": true, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/chokidar": { + + + "version": "3.5.3", + + + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + + + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "individual", + + + "url": "https://paulmillr.com/funding/" + + + } + + + ], + + + "dependencies": { + + + "anymatch": "~3.1.2", + + + "braces": "~3.0.2", + + + "glob-parent": "~5.1.2", + + + "is-binary-path": "~2.1.0", + + + "is-glob": "~4.0.1", + + + "normalize-path": "~3.0.0", + + + "readdirp": "~3.6.0" + + + }, + + + "engines": { + + + "node": ">= 8.10.0" + + + }, + + + "optionalDependencies": { + + + "fsevents": "~2.3.2" + + + } + + + }, + + + "node_modules/chownr": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + + + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/chromium-pickle-js": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + + + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + + + "dev": true + + + }, + + + "node_modules/ci-info": { + + + "version": "3.9.0", + + + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + + + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/sibiraj-s" + + + } + + + ], + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/circular-json-for-egg": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/circular-json-for-egg/-/circular-json-for-egg-1.0.0.tgz", + + + "integrity": "sha512-BzMR1dg0+YqcFoMETHq0gFeQNNKliXI1Oe+C0nx/4npLaohsR7/Oj3UFht65MLwF7zs6x13gOr+f4+JeYni6vw==" + + + }, + + + "node_modules/class-validator": { + + + "version": "0.14.0", + + + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + + + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + + + "dev": true, + + + "dependencies": { + + + "@types/validator": "^13.7.10", + + + "libphonenumber-js": "^1.10.14", + + + "validator": "^13.7.0" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/cli-cursor": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + + + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + + + "dev": true, + + + "dependencies": { + + + "restore-cursor": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/cli-spinners": { + + + "version": "2.9.1", + + + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + + + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/cli-truncate": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + + + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "slice-ansi": "^3.0.0", + + + "string-width": "^4.2.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/cli-width": { + + + "version": "2.2.1", + + + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + + + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + + + "dev": true + + + }, + + + "node_modules/cliui": { + + + "version": "8.0.1", + + + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + + + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + + + "dev": true, + + + "dependencies": { + + + "string-width": "^4.2.0", + + + "strip-ansi": "^6.0.1", + + + "wrap-ansi": "^7.0.0" + + + }, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/cliui/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/cliui/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/clone": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + + + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.8" + + + } + + + }, + + + "node_modules/clone-response": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + + + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + + + "dev": true, + + + "dependencies": { + + + "mimic-response": "^1.0.0" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/co": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + + + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + + + "engines": { + + + "iojs": ">= 1.0.0", + + + "node": ">= 0.12.0" + + + } + + + }, + + + "node_modules/co-body": { + + + "version": "5.2.0", + + + "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", + + + "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", + + + "dependencies": { + + + "inflation": "^2.0.0", + + + "qs": "^6.4.0", + + + "raw-body": "^2.2.0", + + + "type-is": "^1.6.14" + + + } + + + }, + + + "node_modules/color": { + + + "version": "4.2.3", + + + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + + + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^2.0.1", + + + "color-string": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=12.5.0" + + + } + + + }, + + + "node_modules/color-convert": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + + + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + + + "dependencies": { + + + "color-name": "~1.1.4" + + + }, + + + "engines": { + + + "node": ">=7.0.0" + + + } + + + }, + + + "node_modules/color-name": { + + + "version": "1.1.4", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + + + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + + + }, + + + "node_modules/color-string": { + + + "version": "1.9.1", + + + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + + + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "^1.0.0", + + + "simple-swizzle": "^0.2.2" + + + } + + + }, + + + "node_modules/color-support": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + + + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + + + "dev": true, + + + "bin": { + + + "color-support": "bin.js" + + + } + + + }, + + + "node_modules/colors": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + + + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.1.90" + + + } + + + }, + + + "node_modules/combined-stream": { + + + "version": "1.0.8", + + + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + + + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + + + "dev": true, + + + "dependencies": { + + + "delayed-stream": "~1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/commander": { + + + "version": "11.1.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + + + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=16" + + + } + + + }, + + + "node_modules/compare-version": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + + + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/concat-map": { + + + "version": "0.0.1", + + + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + + + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + + + }, + + + "node_modules/config-chain": { + + + "version": "1.1.13", + + + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + + + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "ini": "^1.3.4", + + + "proto-list": "~1.2.1" + + + } + + + }, + + + "node_modules/console-control-strings": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + + + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + + + "dev": true + + + }, + + + "node_modules/content-disposition": { + + + "version": "0.5.4", + + + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + + + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + + + "dependencies": { + + + "safe-buffer": "5.2.1" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/content-type": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + + + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/cookie": { + + + "version": "0.4.2", + + + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + + + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/cookies": { + + + "version": "0.8.0", + + + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + + + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + + + "dependencies": { + + + "depd": "~2.0.0", + + + "keygrip": "~1.1.0" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/copy-to": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + + + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + + + }, + + + "node_modules/core-util-is": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + + + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + + + }, + + + "node_modules/cors": { + + + "version": "2.8.5", + + + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + + + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + + + "dependencies": { + + + "object-assign": "^4", + + + "vary": "^1" + + + }, + + + "engines": { + + + "node": ">= 0.10" + + + } + + + }, + + + "node_modules/crc": { + + + "version": "3.8.0", + + + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + + + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "buffer": "^5.1.0" + + + } + + + }, + + + "node_modules/cross-spawn": { + + + "version": "7.0.3", + + + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + + + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + + + "dependencies": { + + + "path-key": "^3.1.0", + + + "shebang-command": "^2.0.0", + + + "which": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/crypt": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + + + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + + + "dev": true, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/dayjs": { + + + "version": "1.11.10", + + + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + + + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + + + }, + + + "node_modules/debug": { + + + "version": "4.3.4", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + + + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + + + "dependencies": { + + + "ms": "2.1.2" + + + }, + + + "engines": { + + + "node": ">=6.0" + + + }, + + + "peerDependenciesMeta": { + + + "supports-color": { + + + "optional": true + + + } + + + } + + + }, + + + "node_modules/decompress-response": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + + + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + + + "dev": true, + + + "dependencies": { + + + "mimic-response": "^3.1.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/decompress-response/node_modules/mimic-response": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + + + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/deep-equal": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + + + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + + + }, + + + "node_modules/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==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0.0" + + + } + + + }, + + + "node_modules/deep-is": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + + + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + + + "dev": true + + + }, + + + "node_modules/default-user-agent": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", + + + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + + + "dependencies": { + + + "os-name": "~1.0.3" + + + }, + + + "engines": { + + + "node": ">= 0.10.0" + + + } + + + }, + + + "node_modules/defaults": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + + + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + + + "dev": true, + + + "dependencies": { + + + "clone": "^1.0.2" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/defer-to-connect": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + + + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/define-data-property": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + + + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + + + "dev": true, + + + "dependencies": { + + + "get-intrinsic": "^1.2.1", + + + "gopd": "^1.0.1", + + + "has-property-descriptors": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + } + + + }, + + + "node_modules/define-properties": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + + + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + + + "dev": true, + + + "dependencies": { + + + "define-data-property": "^1.0.1", + + + "has-property-descriptors": "^1.0.0", + + + "object-keys": "^1.1.1" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/delayed-stream": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + + + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/delegates": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + + + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + + + }, + + + "node_modules/depd": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + + + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/destroy": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + + + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + + + "engines": { + + + "node": ">= 0.8", + + + "npm": "1.2.8000 || >= 1.4.16" + + + } + + + }, + + + "node_modules/detect-libc": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + + + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/detect-node": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + + + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/dezalgo": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + + + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + + + "dependencies": { + + + "asap": "^2.0.0", + + + "wrappy": "1" + + + } + + + }, + + + "node_modules/digest-header": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-1.1.0.tgz", + + + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==", + + + "engines": { + + + "node": ">= 8.0.0" + + + } + + + }, + + + "node_modules/dir-compare": { + + + "version": "2.4.0", + + + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + + + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + + + "dev": true, + + + "dependencies": { + + + "buffer-equal": "1.0.0", + + + "colors": "1.0.3", + + + "commander": "2.9.0", + + + "minimatch": "3.0.4" + + + }, + + + "bin": { + + + "dircompare": "src/cli/dircompare.js" + + + } + + + }, + + + "node_modules/dir-compare/node_modules/commander": { + + + "version": "2.9.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + + + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + + + "dev": true, + + + "dependencies": { + + + "graceful-readlink": ">= 1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.6.x" + + + } + + + }, + + + "node_modules/dir-compare/node_modules/minimatch": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + + + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + + + "dev": true, + + + "dependencies": { + + + "brace-expansion": "^1.1.7" + + + }, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/dir-glob": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + + + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + + + "dependencies": { + + + "path-type": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/dmg-builder": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + + + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + + + "dev": true, + + + "dependencies": { + + + "app-builder-lib": "23.6.0", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "fs-extra": "^10.0.0", + + + "iconv-lite": "^0.6.2", + + + "js-yaml": "^4.1.0" + + + }, + + + "optionalDependencies": { + + + "dmg-license": "^1.0.11" + + + } + + + }, + + + "node_modules/dmg-builder/node_modules/iconv-lite": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + + + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + + + "dev": true, + + + "dependencies": { + + + "safer-buffer": ">= 2.1.2 < 3.0.0" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/dmg-license": { + + + "version": "1.0.11", + + + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + + + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + + + "dev": true, + + + "optional": true, + + + "os": [ + + + "darwin" + + + ], + + + "dependencies": { + + + "@types/plist": "^3.0.1", + + + "@types/verror": "^1.10.3", + + + "ajv": "^6.10.0", + + + "crc": "^3.8.0", + + + "iconv-corefoundation": "^1.1.7", + + + "plist": "^3.0.4", + + + "smart-buffer": "^4.0.2", + + + "verror": "^1.10.0" + + + }, + + + "bin": { + + + "dmg-license": "bin/dmg-license.js" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/doctrine": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + + + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + + + "dev": true, + + + "dependencies": { + + + "esutils": "^2.0.2" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + } + + + }, + + + "node_modules/dotenv": { + + + "version": "9.0.2", + + + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + + + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/dotenv-expand": { + + + "version": "5.1.0", + + + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + + + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + + + "dev": true + + + }, + + + "node_modules/duplexer3": { + + + "version": "0.1.5", + + + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + + + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + + + "dev": true + + + }, + + + "node_modules/eastasianwidth": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + + + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + + + "dev": true + + + }, + + + "node_modules/ee-bin": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/ee-bin/-/ee-bin-1.5.0.tgz", + + + "integrity": "sha512-PELFev7hNX103a3WCIalZKGzRIKM1UkFpQ/jGjj8CsjV1cDbvMLU7JEd3veBywosu4qwjTrKizG37bx5M/BLUA==", + + + "dev": true, + + + "dependencies": { + + + "bytenode": "^1.3.6", + + + "chalk": "^4.1.2", + + + "commander": "^11.0.0", + + + "cross-spawn": "^7.0.3", + + + "fs-extra": "^10.0.0", + + + "globby": "^10.0.0", + + + "is-type-of": "^1.2.1", + + + "javascript-obfuscator": "^4.0.2" + + + }, + + + "bin": { + + + "ee-bin": "index.js" + + + } + + + }, + + + "node_modules/ee-core": { + + + "version": "2.9.2", + + + "resolved": "https://registry.npmjs.org/ee-core/-/ee-core-2.9.2.tgz", + + + "integrity": "sha512-ZzWcS6/oU/9rAiDqxssqSHnixbgaFMHnRySVlZNhUUAh+ZyBgbroicYWXQohcVbPBCztw/iGDezMJ0FscEn7fg==", + + + "dependencies": { + + + "agentkeepalive": "^4.2.0", + + + "bytenode": "^1.3.6", + + + "chalk": "^4.1.2", + + + "cross-spawn": "^7.0.3", + + + "dayjs": "^1.11.7", + + + "debug": "^4.3.3", + + + "egg-errors": "^2.3.0", + + + "egg-logger": "^2.7.1", + + + "globby": "^10.0.0", + + + "is-type-of": "^1.2.1", + + + "koa": "^2.13.4", + + + "koa-body": "^5.0.0", + + + "koa-convert": "^2.0.0", + + + "koa-static": "^5.0.0", + + + "koa2-cors": "^2.0.6", + + + "lodash": "^4.17.21", + + + "mkdirp": "^2.1.3", + + + "semver": "^7.3.8", + + + "serialize-javascript": "^6.0.1", + + + "socket.io": "^4.6.1", + + + "socket.io-client": "^4.6.1", + + + "urllib": "^2.38.0" + + + }, + + + "bin": { + + + "ee-core": "bin/tools.js" + + + } + + + }, + + + "node_modules/ee-first": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + + + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + + + }, + + + "node_modules/egg-errors": { + + + "version": "2.3.2", + + + "resolved": "https://registry.npmjs.org/egg-errors/-/egg-errors-2.3.2.tgz", + + + "integrity": "sha512-E+Sx7IBVrfRyHSjFXaq4sCZ3Uk3ka9PYySaQ8VbRZmLEt9ENBCD99yVzLIeWUH2QfzvkrjY9El1eHmLeRx7cfw==", + + + "engines": { + + + "node": ">=8.9.0" + + + } + + + }, + + + "node_modules/egg-logger": { + + + "version": "2.9.1", + + + "resolved": "https://registry.npmjs.org/egg-logger/-/egg-logger-2.9.1.tgz", + + + "integrity": "sha512-TPYdNthc7yGV+08A2U4g1T1wgRAjfTnsYC53JgfdKiYukaH3na1KPXEu+TEWni7IooqkFGkQ0t0WY+ylWFnvbw==", + + + "dependencies": { + + + "chalk": "^2.4.1", + + + "circular-json-for-egg": "^1.0.0", + + + "debug": "^2.6.9", + + + "depd": "^2.0.0", + + + "egg-errors": "^2.2.0", + + + "iconv-lite": "^0.4.24", + + + "mkdirp": "^0.5.1", + + + "utility": "^1.15.0" + + + }, + + + "engines": { + + + "node": ">=8.5.0" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/chalk": { + + + "version": "2.4.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + + + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + + + "dependencies": { + + + "ansi-styles": "^3.2.1", + + + "escape-string-regexp": "^1.0.5", + + + "supports-color": "^5.3.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + + + }, + + + "node_modules/egg-logger/node_modules/debug": { + + + "version": "2.6.9", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + "dependencies": { + + + "ms": "2.0.0" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dependencies": { + + + "minimist": "^1.2.6" + + + }, + + + "bin": { + + + "mkdirp": "bin/cmd.js" + + + } + + + }, + + + "node_modules/egg-logger/node_modules/ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + + + }, + + + "node_modules/egg-logger/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/ejs": { + + + "version": "3.1.9", + + + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + + + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + + + "dev": true, + + + "dependencies": { + + + "jake": "^10.8.5" + + + }, + + + "bin": { + + + "ejs": "bin/cli.js" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/electron": { + + + "version": "21.4.4", + + + "resolved": "https://registry.npmjs.org/electron/-/electron-21.4.4.tgz", + + + "integrity": "sha512-N5O7y7Gtt7mDgkJLkW49ETiT8M3myZ9tNIEvGTKhpBduX4WdgMj6c3hYeYBD6XW7SvbRkWEQaTl25RNday8Xpw==", + + + "dev": true, + + + "hasInstallScript": true, + + + "dependencies": { + + + "@electron/get": "^1.14.1", + + + "@types/node": "^16.11.26", + + + "extract-zip": "^2.0.1" + + + }, + + + "bin": { + + + "electron": "cli.js" + + + }, + + + "engines": { + + + "node": ">= 10.17.0" + + + } + + + }, + + + "node_modules/electron-builder": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + + + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + + + "dev": true, + + + "dependencies": { + + + "@types/yargs": "^17.0.1", + + + "app-builder-lib": "23.6.0", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "dmg-builder": "23.6.0", + + + "fs-extra": "^10.0.0", + + + "is-ci": "^3.0.0", + + + "lazy-val": "^1.0.5", + + + "read-config-file": "6.2.0", + + + "simple-update-notifier": "^1.0.7", + + + "yargs": "^17.5.1" + + + }, + + + "bin": { + + + "electron-builder": "cli.js", + + + "install-app-deps": "install-app-deps.js" + + + }, + + + "engines": { + + + "node": ">=14.0.0" + + + } + + + }, + + + "node_modules/electron-osx-sign": { + + + "version": "0.6.0", + + + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + + + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + + + "deprecated": "Please use @electron/osx-sign moving forward. Be aware the API is slightly different", + + + "dev": true, + + + "dependencies": { + + + "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" + + + }, + + + "bin": { + + + "electron-osx-flat": "bin/electron-osx-flat.js", + + + "electron-osx-sign": "bin/electron-osx-sign.js" + + + }, + + + "engines": { + + + "node": ">=4.0.0" + + + } + + + }, + + + "node_modules/electron-osx-sign/node_modules/debug": { + + + "version": "2.6.9", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + "dev": true, + + + "dependencies": { + + + "ms": "2.0.0" + + + } + + + }, + + + "node_modules/electron-osx-sign/node_modules/isbinaryfile": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + + + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + + + "dev": true, + + + "dependencies": { + + + "buffer-alloc": "^1.2.0" + + + }, + + + "engines": { + + + "node": ">=0.6.0" + + + } + + + }, + + + "node_modules/electron-osx-sign/node_modules/ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + "dev": true + + + }, + + + "node_modules/electron-publish": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + + + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + + + "dev": true, + + + "dependencies": { + + + "@types/fs-extra": "^9.0.11", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "fs-extra": "^10.0.0", + + + "lazy-val": "^1.0.5", + + + "mime": "^2.5.2" + + + } + + + }, + + + "node_modules/electron-shutdown-command": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", + + + "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" + + + }, + + + "node_modules/electron-updater": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", + + + "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", + + + "dependencies": { + + + "@types/semver": "^7.3.6", + + + "builder-util-runtime": "9.1.1", + + + "fs-extra": "^10.0.0", + + + "js-yaml": "^4.1.0", + + + "lazy-val": "^1.0.5", + + + "lodash.escaperegexp": "^4.1.2", + + + "lodash.isequal": "^4.5.0", + + + "semver": "^7.3.5", + + + "typed-emitter": "^2.1.0" + + + } + + + }, + + + "node_modules/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==", + + + "dev": true + + + }, + + + "node_modules/encodeurl": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + + + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/encoding": { + + + "version": "0.1.13", + + + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + + + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "iconv-lite": "^0.6.2" + + + } + + + }, + + + "node_modules/encoding/node_modules/iconv-lite": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + + + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "safer-buffer": ">= 2.1.2 < 3.0.0" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/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==", + + + "dependencies": { + + + "once": "^1.4.0" + + + } + + + }, + + + "node_modules/engine.io": { + + + "version": "6.5.3", + + + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.3.tgz", + + + "integrity": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==", + + + "dependencies": { + + + "@types/cookie": "^0.4.1", + + + "@types/cors": "^2.8.12", + + + "@types/node": ">=10.0.0", + + + "accepts": "~1.3.4", + + + "base64id": "2.0.0", + + + "cookie": "~0.4.1", + + + "cors": "~2.8.5", + + + "debug": "~4.3.1", + + + "engine.io-parser": "~5.2.1", + + + "ws": "~8.11.0" + + + }, + + + "engines": { + + + "node": ">=10.2.0" + + + } + + + }, + + + "node_modules/engine.io-client": { + + + "version": "6.5.2", + + + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", + + + "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", + + + "dependencies": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.1", + + + "engine.io-parser": "~5.2.1", + + + "ws": "~8.11.0", + + + "xmlhttprequest-ssl": "~2.0.0" + + + } + + + }, + + + "node_modules/engine.io-parser": { + + + "version": "5.2.1", + + + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + + + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + + + "engines": { + + + "node": ">=10.0.0" + + + } + + + }, + + + "node_modules/env-paths": { + + + "version": "2.2.1", + + + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + + + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/err-code": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + + + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + + + "dev": true + + + }, + + + "node_modules/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 + + + }, + + + "node_modules/es6-object-assign": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + + + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + + + "dev": true + + + }, + + + "node_modules/escalade": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + + + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/escape-html": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + + + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + + + }, + + + "node_modules/escape-string-regexp": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + + + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + + + "engines": { + + + "node": ">=0.8.0" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "@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" + + + }, + + + "bin": { + + + "eslint": "bin/eslint.js" + + + }, + + + "engines": { + + + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + + + } + + + }, + + + "node_modules/eslint-plugin-prettier": { + + + "version": "3.4.1", + + + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + + + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + + + "dev": true, + + + "dependencies": { + + + "prettier-linter-helpers": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + }, + + + "peerDependencies": { + + + "eslint": ">=5.0.0", + + + "prettier": ">=1.13.0" + + + }, + + + "peerDependenciesMeta": { + + + "eslint-config-prettier": { + + + "optional": true + + + } + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "esrecurse": "^4.1.0", + + + "estraverse": "^4.1.1" + + + }, + + + "engines": { + + + "node": ">=4.0.0" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "eslint-visitor-keys": "^1.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/eslint-visitor-keys": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + + + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/argparse": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + + + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + + + "dev": true, + + + "dependencies": { + + + "sprintf-js": "~1.0.2" + + + } + + + }, + + + "node_modules/eslint/node_modules/chalk": { + + + "version": "2.4.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + + + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^3.2.1", + + + "escape-string-regexp": "^1.0.5", + + + "supports-color": "^5.3.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/eslint/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "node_modules/eslint/node_modules/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, + + + "dependencies": { + + + "nice-try": "^1.0.4", + + + "path-key": "^2.0.1", + + + "semver": "^5.5.0", + + + "shebang-command": "^1.2.0", + + + "which": "^1.2.9" + + + }, + + + "engines": { + + + "node": ">=4.8" + + + } + + + }, + + + "node_modules/eslint/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/js-yaml": { + + + "version": "3.14.1", + + + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + + + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + + + "dev": true, + + + "dependencies": { + + + "argparse": "^1.0.7", + + + "esprima": "^4.0.0" + + + }, + + + "bin": { + + + "js-yaml": "bin/js-yaml.js" + + + } + + + }, + + + "node_modules/eslint/node_modules/mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dev": true, + + + "dependencies": { + + + "minimist": "^1.2.6" + + + }, + + + "bin": { + + + "mkdirp": "bin/cmd.js" + + + } + + + }, + + + "node_modules/eslint/node_modules/path-key": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + + + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + + + "dev": true, + + + "bin": { + + + "semver": "bin/semver" + + + } + + + }, + + + "node_modules/eslint/node_modules/shebang-command": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + + + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + + + "dev": true, + + + "dependencies": { + + + "shebang-regex": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/eslint/node_modules/shebang-regex": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + + + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/eslint/node_modules/sprintf-js": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + + + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + + + "dev": true + + + }, + + + "node_modules/eslint/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dev": true, + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/eslint/node_modules/which": { + + + "version": "1.3.1", + + + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + + + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + + + "dev": true, + + + "dependencies": { + + + "isexe": "^2.0.0" + + + }, + + + "bin": { + + + "which": "bin/which" + + + } + + + }, + + + "node_modules/espree": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + + + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + + + "dev": true, + + + "dependencies": { + + + "acorn": "^6.0.7", + + + "acorn-jsx": "^5.0.0", + + + "eslint-visitor-keys": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + } + + + }, + + + "node_modules/esprima": { + + + "version": "4.0.1", + + + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + + + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + + + "dev": true, + + + "bin": { + + + "esparse": "bin/esparse.js", + + + "esvalidate": "bin/esvalidate.js" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/esquery": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + + + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + + + "dev": true, + + + "dependencies": { + + + "estraverse": "^5.1.0" + + + }, + + + "engines": { + + + "node": ">=0.10" + + + } + + + }, + + + "node_modules/esquery/node_modules/estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/esrecurse": { + + + "version": "4.3.0", + + + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + + + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + + + "dev": true, + + + "dependencies": { + + + "estraverse": "^5.2.0" + + + }, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/esrecurse/node_modules/estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/estraverse": { + + + "version": "4.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + + + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/esutils": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + + + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/execa": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + + + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + + + "dependencies": { + + + "cross-spawn": "^7.0.0", + + + "get-stream": "^5.0.0", + + + "human-signals": "^1.1.1", + + + "is-stream": "^2.0.0", + + + "merge-stream": "^2.0.0", + + + "npm-run-path": "^4.0.0", + + + "onetime": "^5.1.0", + + + "signal-exit": "^3.0.2", + + + "strip-final-newline": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sindresorhus/execa?sponsor=1" + + + } + + + }, + + + "node_modules/execa/node_modules/mimic-fn": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + + + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/execa/node_modules/onetime": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + + + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + + + "dependencies": { + + + "mimic-fn": "^2.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/expand-template": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + + + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/exponential-backoff": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + + + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + + + "dev": true + + + }, + + + "node_modules/extend-shallow": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + + + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + + + "dependencies": { + + + "is-extendable": "^0.1.0" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "chardet": "^0.7.0", + + + "iconv-lite": "^0.4.24", + + + "tmp": "^0.0.33" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/extract-zip": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + + + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + + + "dev": true, + + + "dependencies": { + + + "debug": "^4.1.1", + + + "get-stream": "^5.1.0", + + + "yauzl": "^2.10.0" + + + }, + + + "bin": { + + + "extract-zip": "cli.js" + + + }, + + + "engines": { + + + "node": ">= 10.17.0" + + + }, + + + "optionalDependencies": { + + + "@types/yauzl": "^2.9.1" + + + } + + + }, + + + "node_modules/extsprintf": { + + + "version": "1.4.1", + + + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + + + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + + + "dev": true, + + + "engines": [ + + + "node >=0.6.0" + + + ], + + + "optional": true + + + }, + + + "node_modules/fast-deep-equal": { + + + "version": "3.1.3", + + + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + + + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + + + "dev": true + + + }, + + + "node_modules/fast-diff": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + + + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + + + "dev": true + + + }, + + + "node_modules/fast-fifo": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + + + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + + + "dev": true + + + }, + + + "node_modules/fast-glob": { + + + "version": "3.3.1", + + + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + + + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + + + "dependencies": { + + + "@nodelib/fs.stat": "^2.0.2", + + + "@nodelib/fs.walk": "^1.2.3", + + + "glob-parent": "^5.1.2", + + + "merge2": "^1.3.0", + + + "micromatch": "^4.0.4" + + + }, + + + "engines": { + + + "node": ">=8.6.0" + + + } + + + }, + + + "node_modules/fast-json-stable-stringify": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + + + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + + + "dev": true + + + }, + + + "node_modules/fast-levenshtein": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + + + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + + + "dev": true + + + }, + + + "node_modules/fastq": { + + + "version": "1.15.0", + + + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + + + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + + + "dependencies": { + + + "reusify": "^1.0.4" + + + } + + + }, + + + "node_modules/fd-slicer": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + + + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + + + "dev": true, + + + "dependencies": { + + + "pend": "~1.2.0" + + + } + + + }, + + + "node_modules/figures": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + + + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + + + "dev": true, + + + "dependencies": { + + + "escape-string-regexp": "^1.0.5" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "flat-cache": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/filelist": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + + + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + + + "dev": true, + + + "dependencies": { + + + "minimatch": "^5.0.1" + + + } + + + }, + + + "node_modules/filelist/node_modules/brace-expansion": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + + + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + + + "dev": true, + + + "dependencies": { + + + "balanced-match": "^1.0.0" + + + } + + + }, + + + "node_modules/filelist/node_modules/minimatch": { + + + "version": "5.1.6", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + + + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + + + "dev": true, + + + "dependencies": { + + + "brace-expansion": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/fill-range": { + + + "version": "7.0.1", + + + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + + + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + + + "dependencies": { + + + "to-regex-range": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "flatted": "^2.0.0", + + + "rimraf": "2.6.3", + + + "write": "1.0.3" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/flatted": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + + + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + + + "dev": true + + + }, + + + "node_modules/for-each": { + + + "version": "0.3.3", + + + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + + + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + + + "dev": true, + + + "dependencies": { + + + "is-callable": "^1.1.3" + + + } + + + }, + + + "node_modules/foreground-child": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + + + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + + + "dev": true, + + + "dependencies": { + + + "cross-spawn": "^7.0.0", + + + "signal-exit": "^4.0.1" + + + }, + + + "engines": { + + + "node": ">=14" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/foreground-child/node_modules/signal-exit": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + + + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + + + "dev": true, + + + "engines": { + + + "node": ">=14" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/form-data": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + + + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + + + "dev": true, + + + "dependencies": { + + + "asynckit": "^0.4.0", + + + "combined-stream": "^1.0.8", + + + "mime-types": "^2.1.12" + + + }, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/formidable": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + + + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + + + "dependencies": { + + + "dezalgo": "^1.0.4", + + + "hexoid": "^1.0.0", + + + "once": "^1.4.0", + + + "qs": "^6.11.0" + + + }, + + + "funding": { + + + "url": "https://ko-fi.com/tunnckoCore/commissions" + + + } + + + }, + + + "node_modules/formstream": { + + + "version": "1.3.1", + + + "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.3.1.tgz", + + + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + + + "dependencies": { + + + "destroy": "^1.0.4", + + + "mime": "^2.5.2", + + + "pause-stream": "~0.0.11" + + + } + + + }, + + + "node_modules/fresh": { + + + "version": "0.5.2", + + + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + + + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/fs-constants": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + + + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + + + "dev": true + + + }, + + + "node_modules/fs-extra": { + + + "version": "10.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + + + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + + + "dependencies": { + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/fs-minipass": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + + + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^7.0.3" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/fs-minipass/node_modules/minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + } + + + }, + + + "node_modules/fs.realpath": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + + + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + + + }, + + + "node_modules/fsevents": { + + + "version": "2.3.3", + + + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + + + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + + + "dev": true, + + + "hasInstallScript": true, + + + "optional": true, + + + "os": [ + + + "darwin" + + + ], + + + "engines": { + + + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + + + } + + + }, + + + "node_modules/function-bind": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + + + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + + + "dev": true + + + }, + + + "node_modules/gauge": { + + + "version": "4.0.4", + + + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + + + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + + + "dev": true, + + + "dependencies": { + + + "aproba": "^1.0.3 || ^2.0.0", + + + "color-support": "^1.1.3", + + + "console-control-strings": "^1.1.0", + + + "has-unicode": "^2.0.1", + + + "signal-exit": "^3.0.7", + + + "string-width": "^4.2.3", + + + "strip-ansi": "^6.0.1", + + + "wide-align": "^1.1.5" + + + }, + + + "engines": { + + + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/gauge/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/gauge/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": "6.* || 8.* || >= 10.*" + + + } + + + }, + + + "node_modules/get-intrinsic": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + + + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + + + "dependencies": { + + + "function-bind": "^1.1.1", + + + "has": "^1.0.3", + + + "has-proto": "^1.0.1", + + + "has-symbols": "^1.0.3" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/get-stream": { + + + "version": "5.2.0", + + + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + + + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + + + "dependencies": { + + + "pump": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/github-from-package": { + + + "version": "0.0.0", + + + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + + + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + + + "dev": true + + + }, + + + "node_modules/glob": { + + + "version": "7.2.3", + + + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + + + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + + + "dependencies": { + + + "fs.realpath": "^1.0.0", + + + "inflight": "^1.0.4", + + + "inherits": "2", + + + "minimatch": "^3.1.1", + + + "once": "^1.3.0", + + + "path-is-absolute": "^1.0.0" + + + }, + + + "engines": { + + + "node": "*" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/glob-parent": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + + + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + + + "dependencies": { + + + "is-glob": "^4.0.1" + + + }, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/global-agent": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + + + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "boolean": "^3.0.1", + + + "es6-error": "^4.1.1", + + + "matcher": "^3.0.0", + + + "roarr": "^2.15.3", + + + "semver": "^7.3.2", + + + "serialize-error": "^7.0.1" + + + }, + + + "engines": { + + + "node": ">=10.0" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "encodeurl": "^1.0.2", + + + "lodash": "^4.17.10", + + + "npm-conf": "^1.1.3", + + + "tunnel": "^0.0.6" + + + }, + + + "engines": { + + + "node": ">=0.10" + + + } + + + }, + + + "node_modules/globals": { + + + "version": "11.12.0", + + + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + + + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/globalthis": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + + + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "define-properties": "^1.1.3" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/globby": { + + + "version": "10.0.2", + + + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + + + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + + + "dependencies": { + + + "@types/glob": "^7.1.1", + + + "array-union": "^2.1.0", + + + "dir-glob": "^3.0.1", + + + "fast-glob": "^3.0.3", + + + "glob": "^7.1.3", + + + "ignore": "^5.1.1", + + + "merge2": "^1.2.3", + + + "slash": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/globby/node_modules/ignore": { + + + "version": "5.2.4", + + + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + + + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + + + "engines": { + + + "node": ">= 4" + + + } + + + }, + + + "node_modules/gopd": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + + + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + + + "dev": true, + + + "dependencies": { + + + "get-intrinsic": "^1.1.3" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/got": { + + + "version": "11.8.6", + + + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + + + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + + + "dev": true, + + + "dependencies": { + + + "@sindresorhus/is": "^4.0.0", + + + "@szmarczak/http-timer": "^4.0.5", + + + "@types/cacheable-request": "^6.0.1", + + + "@types/responselike": "^1.0.0", + + + "cacheable-lookup": "^5.0.3", + + + "cacheable-request": "^7.0.2", + + + "decompress-response": "^6.0.0", + + + "http2-wrapper": "^1.0.0-beta.5.2", + + + "lowercase-keys": "^2.0.0", + + + "p-cancelable": "^2.0.0", + + + "responselike": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=10.19.0" + + + }, + + + "funding": { + + + "url": "https://github.com/sindresorhus/got?sponsor=1" + + + } + + + }, + + + "node_modules/graceful-fs": { + + + "version": "4.2.11", + + + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + + + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + + + }, + + + "node_modules/graceful-readlink": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + + + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + + + "dev": true + + + }, + + + "node_modules/has": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + + + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + + + "engines": { + + + "node": ">= 0.4.0" + + + } + + + }, + + + "node_modules/has-flag": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + + + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/has-property-descriptors": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + + + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + + + "dev": true, + + + "dependencies": { + + + "get-intrinsic": "^1.1.1" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/has-proto": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + + + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/has-symbols": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + + + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/has-tostringtag": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + + + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + + + "dependencies": { + + + "has-symbols": "^1.0.2" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/has-unicode": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + + + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + + + "dev": true + + + }, + + + "node_modules/hexoid": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + + + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/hosted-git-info": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + + + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + + + "dev": true, + + + "dependencies": { + + + "lru-cache": "^6.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/http-assert": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + + + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + + + "dependencies": { + + + "deep-equal": "~1.0.1", + + + "http-errors": "~1.8.0" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/http-cache-semantics": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + + + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + + + "dev": true + + + }, + + + "node_modules/http-errors": { + + + "version": "1.8.1", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + + + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + + + "dependencies": { + + + "depd": "~1.1.2", + + + "inherits": "2.0.4", + + + "setprototypeof": "1.2.0", + + + "statuses": ">= 1.5.0 < 2", + + + "toidentifier": "1.0.1" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/http-errors/node_modules/depd": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + + + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/http-proxy-agent": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + + + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + + + "dev": true, + + + "dependencies": { + + + "@tootallnate/once": "2", + + + "agent-base": "6", + + + "debug": "4" + + + }, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/http2-wrapper": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + + + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + + + "dev": true, + + + "dependencies": { + + + "quick-lru": "^5.1.1", + + + "resolve-alpn": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=10.19.0" + + + } + + + }, + + + "node_modules/https-proxy-agent": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + + + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + + + "dev": true, + + + "dependencies": { + + + "agent-base": "6", + + + "debug": "4" + + + }, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/human-signals": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + + + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + + + "engines": { + + + "node": ">=8.12.0" + + + } + + + }, + + + "node_modules/humanize-ms": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + + + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + + + "dependencies": { + + + "ms": "^2.0.0" + + + } + + + }, + + + "node_modules/icon-gen": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/icon-gen/-/icon-gen-4.0.0.tgz", + + + "integrity": "sha512-31B1AFpMHeVxrx0IWr8ch17+SHHsdPLxr293ZhefHA+WaNW20vZUfr/3GfTN/oV3DuO+yphgwMvZc78/bzfA4g==", + + + "dev": true, + + + "dependencies": { + + + "commander": "^8.3.0", + + + "pngjs": "^7.0.0", + + + "sharp": "^0.32.4" + + + }, + + + "bin": { + + + "icon-gen": "dist/bin/index.js" + + + }, + + + "engines": { + + + "node": ">= 18" + + + } + + + }, + + + "node_modules/icon-gen/node_modules/commander": { + + + "version": "8.3.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + + + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + + + "dev": true, + + + "engines": { + + + "node": ">= 12" + + + } + + + }, + + + "node_modules/iconv-corefoundation": { + + + "version": "1.1.7", + + + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + + + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + + + "dev": true, + + + "optional": true, + + + "os": [ + + + "darwin" + + + ], + + + "dependencies": { + + + "cli-truncate": "^2.1.0", + + + "node-addon-api": "^1.6.3" + + + }, + + + "engines": { + + + "node": "^8.11.2 || >=10" + + + } + + + }, + + + "node_modules/iconv-lite": { + + + "version": "0.4.24", + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + + + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + + + "dependencies": { + + + "safer-buffer": ">= 2.1.2 < 3" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/ieee754": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + + + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ] + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">= 4" + + + } + + + }, + + + "node_modules/ignore-by-default": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + + + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + + + "dev": true + + + }, + + + "node_modules/import-fresh": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + + + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + + + "dev": true, + + + "dependencies": { + + + "parent-module": "^1.0.0", + + + "resolve-from": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/imurmurhash": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + + + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.8.19" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/inflation": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + + + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + + + "engines": { + + + "node": ">= 0.8.0" + + + } + + + }, + + + "node_modules/inflight": { + + + "version": "1.0.6", + + + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + + + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + + + "dependencies": { + + + "once": "^1.3.0", + + + "wrappy": "1" + + + } + + + }, + + + "node_modules/inherits": { + + + "version": "2.0.4", + + + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + + + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + + + }, + + + "node_modules/ini": { + + + "version": "1.3.8", + + + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + + + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + + + "dev": true + + + }, + + + "node_modules/inquirer": { + + + "version": "6.5.2", + + + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + + + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + + + "dev": true, + + + "dependencies": { + + + "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" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + } + + + }, + + + "node_modules/inquirer/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/chalk": { + + + "version": "2.4.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + + + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^3.2.1", + + + "escape-string-regexp": "^1.0.5", + + + "supports-color": "^5.3.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/inquirer/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "node_modules/inquirer/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/string-width": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + + + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + + + "dev": true, + + + "dependencies": { + + + "is-fullwidth-code-point": "^2.0.0", + + + "strip-ansi": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + + + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inquirer/node_modules/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, + + + "dependencies": { + + + "ansi-regex": "^4.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + + + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/inquirer/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dev": true, + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/inversify": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz", + + + "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==", + + + "dev": true + + + }, + + + "node_modules/ip": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + + + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + + + "dev": true + + + }, + + + "node_modules/is-arguments": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + + + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + + + "dev": true, + + + "dependencies": { + + + "call-bind": "^1.0.2", + + + "has-tostringtag": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/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 + + + }, + + + "node_modules/is-binary-path": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + + + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + + + "dev": true, + + + "dependencies": { + + + "binary-extensions": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/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 + + + }, + + + "node_modules/is-callable": { + + + "version": "1.2.7", + + + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + + + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/is-ci": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + + + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + + + "dev": true, + + + "dependencies": { + + + "ci-info": "^3.2.0" + + + }, + + + "bin": { + + + "is-ci": "bin.js" + + + } + + + }, + + + "node_modules/is-class-hotfix": { + + + "version": "0.0.6", + + + "resolved": "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + + + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + + + }, + + + "node_modules/is-extendable": { + + + "version": "0.1.1", + + + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + + + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/is-extglob": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + + + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/is-generator-function": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + + + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + + + "dependencies": { + + + "has-tostringtag": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/is-glob": { + + + "version": "4.0.3", + + + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + + + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + + + "dependencies": { + + + "is-extglob": "^2.1.1" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/is-interactive": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + + + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/is-lambda": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + + + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + + + "dev": true + + + }, + + + "node_modules/is-nan": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + + + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + + + "dev": true, + + + "dependencies": { + + + "call-bind": "^1.0.0", + + + "define-properties": "^1.1.3" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/is-number": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + + + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + + + "engines": { + + + "node": ">=0.12.0" + + + } + + + }, + + + "node_modules/is-stream": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + + + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + + + "engines": { + + + "node": ">=8" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/is-type-of": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/is-type-of/-/is-type-of-1.4.0.tgz", + + + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + + + "dependencies": { + + + "core-util-is": "^1.0.2", + + + "is-class-hotfix": "~0.0.6", + + + "isstream": "~0.1.2" + + + } + + + }, + + + "node_modules/is-typed-array": { + + + "version": "1.1.12", + + + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + + + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + + + "dev": true, + + + "dependencies": { + + + "which-typed-array": "^1.1.11" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/is-unicode-supported": { + + + "version": "0.1.0", + + + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + + + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/isbinaryfile": { + + + "version": "4.0.10", + + + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + + + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + + + "dev": true, + + + "engines": { + + + "node": ">= 8.0.0" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/gjtorikian/" + + + } + + + }, + + + "node_modules/isexe": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + + + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + + + }, + + + "node_modules/isstream": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + + + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + + + }, + + + "node_modules/jackspeak": { + + + "version": "2.3.6", + + + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + + + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + + + "dev": true, + + + "dependencies": { + + + "@isaacs/cliui": "^8.0.2" + + + }, + + + "engines": { + + + "node": ">=14" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + }, + + + "optionalDependencies": { + + + "@pkgjs/parseargs": "^0.11.0" + + + } + + + }, + + + "node_modules/jake": { + + + "version": "10.8.7", + + + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + + + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + + + "dev": true, + + + "dependencies": { + + + "async": "^3.2.3", + + + "chalk": "^4.0.2", + + + "filelist": "^1.0.4", + + + "minimatch": "^3.1.2" + + + }, + + + "bin": { + + + "jake": "bin/cli.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/javascript-obfuscator": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + + + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", + + + "dev": true, + + + "hasInstallScript": true, + + + "dependencies": { + + + "@javascript-obfuscator/escodegen": "2.3.0", + + + "@javascript-obfuscator/estraverse": "5.4.0", + + + "acorn": "8.8.2", + + + "assert": "2.0.0", + + + "chalk": "4.1.2", + + + "chance": "1.1.9", + + + "class-validator": "0.14.0", + + + "commander": "10.0.0", + + + "eslint-scope": "7.1.1", + + + "eslint-visitor-keys": "3.3.0", + + + "fast-deep-equal": "3.1.3", + + + "inversify": "6.0.1", + + + "js-string-escape": "1.0.1", + + + "md5": "2.3.0", + + + "mkdirp": "2.1.3", + + + "multimatch": "5.0.0", + + + "opencollective-postinstall": "2.0.3", + + + "process": "0.11.10", + + + "reflect-metadata": "0.1.13", + + + "source-map-support": "0.5.21", + + + "string-template": "1.0.0", + + + "stringz": "2.1.0", + + + "tslib": "2.5.0" + + + }, + + + "bin": { + + + "javascript-obfuscator": "bin/javascript-obfuscator" + + + }, + + + "engines": { + + + "node": "^12.22.0 || ^14.0.0 || ^16.0.0 || ^17.0.0 || >=18.0.0" + + + }, + + + "funding": { + + + "type": "opencollective", + + + "url": "https://opencollective.com/javascript-obfuscator" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/acorn": { + + + "version": "8.8.2", + + + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + + + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + + + "dev": true, + + + "bin": { + + + "acorn": "bin/acorn" + + + }, + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/commander": { + + + "version": "10.0.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + + + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + + + "dev": true, + + + "engines": { + + + "node": ">=14" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/eslint-scope": { + + + "version": "7.1.1", + + + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + + + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + + + "dev": true, + + + "dependencies": { + + + "esrecurse": "^4.3.0", + + + "estraverse": "^5.2.0" + + + }, + + + "engines": { + + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/eslint-visitor-keys": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + + + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + + + "dev": true, + + + "engines": { + + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true, + + + "engines": { + + + "node": ">=4.0" + + + } + + + }, + + + "node_modules/javascript-obfuscator/node_modules/mkdirp": { + + + "version": "2.1.3", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + + + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + + + "dev": true, + + + "bin": { + + + "mkdirp": "dist/cjs/src/bin.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/js-string-escape": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + + + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/js-tokens": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + + + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + + + "dev": true + + + }, + + + "node_modules/js-yaml": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + + + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + + + "dependencies": { + + + "argparse": "^2.0.1" + + + }, + + + "bin": { + + + "js-yaml": "bin/js-yaml.js" + + + } + + + }, + + + "node_modules/json-buffer": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + + + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + + + "dev": true + + + }, + + + "node_modules/json-schema-traverse": { + + + "version": "0.4.1", + + + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + + + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + + + "dev": true + + + }, + + + "node_modules/json-stable-stringify-without-jsonify": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + + + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + + + "dev": true + + + }, + + + "node_modules/json-stringify-safe": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + + + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/json5": { + + + "version": "2.2.3", + + + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + + + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + + + "dev": true, + + + "bin": { + + + "json5": "lib/cli.js" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/jsonfile": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + + + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + + + "dependencies": { + + + "universalify": "^2.0.0" + + + }, + + + "optionalDependencies": { + + + "graceful-fs": "^4.1.6" + + + } + + + }, + + + "node_modules/keygrip": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + + + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + + + "dependencies": { + + + "tsscmp": "1.0.6" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/keyv": { + + + "version": "4.5.4", + + + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + + + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + + + "dev": true, + + + "dependencies": { + + + "json-buffer": "3.0.1" + + + } + + + }, + + + "node_modules/koa": { + + + "version": "2.14.2", + + + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + + + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", + + + "dependencies": { + + + "accepts": "^1.3.5", + + + "cache-content-type": "^1.0.0", + + + "content-disposition": "~0.5.2", + + + "content-type": "^1.0.4", + + + "cookies": "~0.8.0", + + + "debug": "^4.3.2", + + + "delegates": "^1.0.0", + + + "depd": "^2.0.0", + + + "destroy": "^1.0.4", + + + "encodeurl": "^1.0.2", + + + "escape-html": "^1.0.3", + + + "fresh": "~0.5.2", + + + "http-assert": "^1.3.0", + + + "http-errors": "^1.6.3", + + + "is-generator-function": "^1.0.7", + + + "koa-compose": "^4.1.0", + + + "koa-convert": "^2.0.0", + + + "on-finished": "^2.3.0", + + + "only": "~0.0.2", + + + "parseurl": "^1.3.2", + + + "statuses": "^1.5.0", + + + "type-is": "^1.6.16", + + + "vary": "^1.1.2" + + + }, + + + "engines": { + + + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + + + } + + + }, + + + "node_modules/koa-body": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-5.0.0.tgz", + + + "integrity": "sha512-nHwEODrQGiyKBILCWO8QSS40C87cKr2cp3y/Cw8u9Z8w5t0CdSkGm3+y9WK5BIAlPpo9tTw5RtSbxpVyG79vmw==", + + + "dependencies": { + + + "@types/formidable": "^2.0.4", + + + "co-body": "^5.1.1", + + + "formidable": "^2.0.1" + + + } + + + }, + + + "node_modules/koa-compose": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + + + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + + + }, + + + "node_modules/koa-convert": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + + + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + + + "dependencies": { + + + "co": "^4.6.0", + + + "koa-compose": "^4.1.0" + + + }, + + + "engines": { + + + "node": ">= 10" + + + } + + + }, + + + "node_modules/koa-send": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + + + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + + + "dependencies": { + + + "debug": "^4.1.1", + + + "http-errors": "^1.7.3", + + + "resolve-path": "^1.4.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/koa-static": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + + + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + + + "dependencies": { + + + "debug": "^3.1.0", + + + "koa-send": "^5.0.0" + + + }, + + + "engines": { + + + "node": ">= 7.6.0" + + + } + + + }, + + + "node_modules/koa-static/node_modules/debug": { + + + "version": "3.2.7", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + + + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + + + "dependencies": { + + + "ms": "^2.1.1" + + + } + + + }, + + + "node_modules/koa2-cors": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/koa2-cors/-/koa2-cors-2.0.6.tgz", + + + "integrity": "sha512-JRCcSM4lamM+8kvKGDKlesYk2ASrmSTczDtGUnIadqMgnHU4Ct5Gw7Bxt3w3m6d6dy3WN0PU4oMP43HbddDEWg==", + + + "engines": { + + + "node": ">= 7.6.0" + + + } + + + }, + + + "node_modules/lazy-val": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + + + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + + + }, + + + "node_modules/levn": { + + + "version": "0.3.0", + + + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + + + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + + + "dev": true, + + + "dependencies": { + + + "prelude-ls": "~1.1.2", + + + "type-check": "~0.3.2" + + + }, + + + "engines": { + + + "node": ">= 0.8.0" + + + } + + + }, + + + "node_modules/libphonenumber-js": { + + + "version": "1.10.47", + + + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.47.tgz", + + + "integrity": "sha512-b4t7VQDV29xx/ni+58yl9KWPGjnDLDXCeCTLrD4V8vDpObXZRZBrg7uX/HWZ7YXiJKqdBDGgc+barUUTNB6Slw==", + + + "dev": true + + + }, + + + "node_modules/lodash": { + + + "version": "4.17.21", + + + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + + + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + + + }, + + + "node_modules/lodash.escaperegexp": { + + + "version": "4.1.2", + + + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + + + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + + + }, + + + "node_modules/lodash.isequal": { + + + "version": "4.5.0", + + + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + + + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + + + }, + + + "node_modules/log-symbols": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + + + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + + + "dev": true, + + + "dependencies": { + + + "chalk": "^4.1.0", + + + "is-unicode-supported": "^0.1.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/loudness": { + + + "version": "0.4.2", + + + "resolved": "https://registry.npmjs.org/loudness/-/loudness-0.4.2.tgz", + + + "integrity": "sha512-D+1opqDjcpAdyv0JVt5KJju/4f6yLs/tqcDj8LCrtZciYMtD4I2I4brByt9nZkfU5bnnnHsLFPtBBDpv2oamkg==", + + + "dependencies": { + + + "execa": "^4.0.3" + + + }, + + + "engines": { + + + "node": ">=10.13.0" + + + } + + + }, + + + "node_modules/lowercase-keys": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + + + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/lru-cache": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + + + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/make-fetch-happen": { + + + "version": "11.1.1", + + + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + + + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + + + "dev": true, + + + "dependencies": { + + + "agentkeepalive": "^4.2.1", + + + "cacache": "^17.0.0", + + + "http-cache-semantics": "^4.1.1", + + + "http-proxy-agent": "^5.0.0", + + + "https-proxy-agent": "^5.0.0", + + + "is-lambda": "^1.0.1", + + + "lru-cache": "^7.7.1", + + + "minipass": "^5.0.0", + + + "minipass-fetch": "^3.0.0", + + + "minipass-flush": "^1.0.5", + + + "minipass-pipeline": "^1.2.4", + + + "negotiator": "^0.6.3", + + + "promise-retry": "^2.0.1", + + + "socks-proxy-agent": "^7.0.0", + + + "ssri": "^10.0.0" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/make-fetch-happen/node_modules/lru-cache": { + + + "version": "7.18.3", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + + + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + + + "dev": true, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/matcher": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + + + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "escape-string-regexp": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/matcher/node_modules/escape-string-regexp": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + + + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/md5": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + + + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + + + "dev": true, + + + "dependencies": { + + + "charenc": "0.0.2", + + + "crypt": "0.0.2", + + + "is-buffer": "~1.1.6" + + + } + + + }, + + + "node_modules/media-typer": { + + + "version": "0.3.0", + + + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + + + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/merge-stream": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + + + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + + + }, + + + "node_modules/merge2": { + + + "version": "1.4.1", + + + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + + + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/micromatch": { + + + "version": "4.0.5", + + + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + + + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + + + "dependencies": { + + + "braces": "^3.0.2", + + + "picomatch": "^2.3.1" + + + }, + + + "engines": { + + + "node": ">=8.6" + + + } + + + }, + + + "node_modules/mime": { + + + "version": "2.6.0", + + + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + + + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + + + "bin": { + + + "mime": "cli.js" + + + }, + + + "engines": { + + + "node": ">=4.0.0" + + + } + + + }, + + + "node_modules/mime-db": { + + + "version": "1.52.0", + + + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + + + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/mime-types": { + + + "version": "2.1.35", + + + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + + + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + + + "dependencies": { + + + "mime-db": "1.52.0" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/mimic-response": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + + + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/minimatch": { + + + "version": "3.1.2", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + + + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + + + "dependencies": { + + + "brace-expansion": "^1.1.7" + + + }, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/minimist": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + + + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/minipass": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + + + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "minipass": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/minipass-collect/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minipass-fetch": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + + + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^7.0.3", + + + "minipass-sized": "^1.0.3", + + + "minizlib": "^2.1.2" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + }, + + + "optionalDependencies": { + + + "encoding": "^0.1.13" + + + } + + + }, + + + "node_modules/minipass-fetch/node_modules/minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "minipass": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/minipass-flush/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minipass-pipeline": { + + + "version": "1.2.4", + + + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + + + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minipass-pipeline/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minipass-sized": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + + + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minipass-sized/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/minizlib": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + + + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^3.0.0", + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/minizlib/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/mkdirp": { + + + "version": "2.1.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + + + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + + + "bin": { + + + "mkdirp": "dist/cjs/src/bin.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/mkdirp-classic": { + + + "version": "0.5.3", + + + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + + + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + + + "dev": true + + + }, + + + "node_modules/modbus-serial": { + + + "version": "8.0.13", + + + "resolved": "https://registry.npmjs.org/modbus-serial/-/modbus-serial-8.0.13.tgz", + + + "integrity": "sha512-h/kEtN2aB4zfMic7H+Afg/LWlb0oHbMzo4cKlebGxUXimpe33TptDy6L9f4o/cg0BQrzEPV72RSH64PX3fgWTw==", + + + "dependencies": { + + + "debug": "^4.1.1", + + + "serialport": "^11.0.0" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/bindings-cpp": { + + + "version": "11.0.3", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-11.0.3.tgz", + + + "integrity": "sha512-xgNDJ7pHHZCJMoDsEH+D8q5CV+V3RGN4/jLEG9SQ7q6kh+o03axV0l/upPHZ0HW4tTXpGgqPIGbXOTrD4RGQQA==", + + + "hasInstallScript": true, + + + "dependencies": { + + + "@serialport/bindings-interface": "1.2.2", + + + "@serialport/parser-readline": "11.0.0", + + + "debug": "4.3.4", + + + "node-addon-api": "6.1.0", + + + "node-gyp-build": "4.6.0" + + + }, + + + "engines": { + + + "node": ">=14.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-delimiter": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + + + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/bindings-cpp/node_modules/@serialport/parser-readline": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + + + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + + + "dependencies": { + + + "@serialport/parser-delimiter": "11.0.0" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-byte-length": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-11.0.1.tgz", + + + "integrity": "sha512-UsffR5b3NHwhjJzsWv5fZMkoq3wGNyUcRTA9jlu02w+2kMlBRJPzlPVB5szVX0VWUEqkCg+3VaU2XWuYr+uAUA==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-cctalk": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-11.0.1.tgz", + + + "integrity": "sha512-klzVQfRcC1m0SVDV2Dy9hHfwweO2/mUMUyuXK04FRkKHy5/AdETmk9KTVVVVfpDCSysvHoyQPwiDFq8ddwX3cQ==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-delimiter": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.1.tgz", + + + "integrity": "sha512-NAsYa3OFt2xEnj/+0BRkQP2qkRNbXBPEq6uFJEdNdzcTSF+BTRXkoIRrWBq3N6koovPqW6lnbxc/iJYe5AX/2Q==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-inter-byte-timeout": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-11.0.1.tgz", + + + "integrity": "sha512-PEFV9dSpW+ptH1rLhdB9KgE+rbJ/FvQiZz0mx+4jkv/Po4g3PNsEEMXfMW0aQVSFVsmitvmE0jHlhGjLv8GQEg==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-packet-length": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-11.0.1.tgz", + + + "integrity": "sha512-KwPu8dsAI+eN4fnUS1vVmrOpUtBK4p9L9cHhwn5ZmfcvwvZMHp/J+IEu7xH0g5aM1/8QEoaql26BQP+sZ71NQQ==", + + + "engines": { + + + "node": ">=8.6.0" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-readline": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.1.tgz", + + + "integrity": "sha512-wkJ3EI733+yhbi7eBWzs/qn8+cfIBcYQjfrILPNqslAy6VlgdKw+pHoblDFmg78GN0TqGUDSWlTJ65oLEPVp5Q==", + + + "dependencies": { + + + "@serialport/parser-delimiter": "11.0.1" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-ready": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-11.0.1.tgz", + + + "integrity": "sha512-v/bvlgKhrNt+SVLSqlfXCO1HEinfRRMGnzqbpdVCgu2SiWIEenCLjs51JisKVYQoQFcXdP/EHZnzm7NPXHDlAg==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-regex": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-11.0.1.tgz", + + + "integrity": "sha512-Lf3k7qibYqZ0+/wX3UA8fRng3WtQ+UyLpjQhG1COs6OBSq5/I5tYXczfhlrbA0gHo1qzgzr2V2t7m6FoBSc81Q==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-slip-encoder": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-11.0.1.tgz", + + + "integrity": "sha512-l4mXsAGzpmPO7+uqKJqtPDW643irfnGEWbiy34FoYvuOs8n0SmiMtgQZFAtvlTNQCRWE2tykF/WG6K/McJthDw==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/parser-spacepacket": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-11.0.1.tgz", + + + "integrity": "sha512-Lq7fXoOsLOMo4XEt9HB31zV5LhrteXlsOy2o6r39TfRwU6x8Nou9jQMA9vW0a6yPra5zwsHIaNrA6tDOGj2Ozg==", + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/@serialport/stream": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-11.0.1.tgz", + + + "integrity": "sha512-6pjyKRg8MQuvhGfg36+PF7K5eGNQcEswCSiAg1UPilqqFS8X1QnaiSCn5UFp/hCN+pAtlFjkOi0ztvtmSI7n4g==", + + + "dependencies": { + + + "@serialport/bindings-interface": "1.2.2", + + + "debug": "4.3.4" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/modbus-serial/node_modules/node-addon-api": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + + + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + + + }, + + + "node_modules/modbus-serial/node_modules/serialport": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/serialport/-/serialport-11.0.1.tgz", + + + "integrity": "sha512-j/ntDuewAkqL6g5wKjwV2RTyLBL9cpob8aRd3yLAViYApTsJoYqRleyuzst0OboNTBjBsoxQ4YKYhuYHi1XViQ==", + + + "dependencies": { + + + "@serialport/binding-mock": "10.2.2", + + + "@serialport/bindings-cpp": "11.0.3", + + + "@serialport/parser-byte-length": "11.0.1", + + + "@serialport/parser-cctalk": "11.0.1", + + + "@serialport/parser-delimiter": "11.0.1", + + + "@serialport/parser-inter-byte-timeout": "11.0.1", + + + "@serialport/parser-packet-length": "11.0.1", + + + "@serialport/parser-readline": "11.0.1", + + + "@serialport/parser-ready": "11.0.1", + + + "@serialport/parser-regex": "11.0.1", + + + "@serialport/parser-slip-encoder": "11.0.1", + + + "@serialport/parser-spacepacket": "11.0.1", + + + "@serialport/stream": "11.0.1", + + + "debug": "4.3.4" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/moment": { + + + "version": "2.29.4", + + + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + + + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/ms": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + + + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + + + }, + + + "node_modules/multimatch": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + + + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + + + "dev": true, + + + "dependencies": { + + + "@types/minimatch": "^3.0.3", + + + "array-differ": "^3.0.0", + + + "array-union": "^2.1.0", + + + "arrify": "^2.0.1", + + + "minimatch": "^3.0.4" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/multimatch/node_modules/@types/minimatch": { + + + "version": "3.0.5", + + + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + + + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + + + "dev": true + + + }, + + + "node_modules/mute-stream": { + + + "version": "0.0.7", + + + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + + + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + + + "dev": true + + + }, + + + "node_modules/mz": { + + + "version": "2.7.0", + + + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + + + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + + + "dependencies": { + + + "any-promise": "^1.0.0", + + + "object-assign": "^4.0.1", + + + "thenify-all": "^1.0.0" + + + } + + + }, + + + "node_modules/napi-build-utils": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + + + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + + + "dev": true + + + }, + + + "node_modules/natural-compare": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + + + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + + + "dev": true + + + }, + + + "node_modules/negotiator": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + + + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/nice-try": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + + + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + + + "dev": true + + + }, + + + "node_modules/node-abi": { + + + "version": "3.50.0", + + + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.50.0.tgz", + + + "integrity": "sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA==", + + + "dev": true, + + + "dependencies": { + + + "semver": "^7.3.5" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/node-addon-api": { + + + "version": "1.7.2", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + + + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/node-api-version": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", + + + "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + + + "dev": true, + + + "dependencies": { + + + "semver": "^7.3.5" + + + } + + + }, + + + "node_modules/node-gyp": { + + + "version": "9.4.0", + + + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + + + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + + + "dev": true, + + + "dependencies": { + + + "env-paths": "^2.2.0", + + + "exponential-backoff": "^3.1.1", + + + "glob": "^7.1.4", + + + "graceful-fs": "^4.2.6", + + + "make-fetch-happen": "^11.0.3", + + + "nopt": "^6.0.0", + + + "npmlog": "^6.0.0", + + + "rimraf": "^3.0.2", + + + "semver": "^7.3.5", + + + "tar": "^6.1.2", + + + "which": "^2.0.2" + + + }, + + + "bin": { + + + "node-gyp": "bin/node-gyp.js" + + + }, + + + "engines": { + + + "node": "^12.13 || ^14.13 || >=16" + + + } + + + }, + + + "node_modules/node-gyp-build": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + + + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + + + "bin": { + + + "node-gyp-build": "bin.js", + + + "node-gyp-build-optional": "optional.js", + + + "node-gyp-build-test": "build-test.js" + + + } + + + }, + + + "node_modules/node-gyp/node_modules/rimraf": { + + + "version": "3.0.2", + + + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + + + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + + + "dev": true, + + + "dependencies": { + + + "glob": "^7.1.3" + + + }, + + + "bin": { + + + "rimraf": "bin.js" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/nodemon": { + + + "version": "2.0.22", + + + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + + + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + + + "dev": true, + + + "dependencies": { + + + "chokidar": "^3.5.2", + + + "debug": "^3.2.7", + + + "ignore-by-default": "^1.0.1", + + + "minimatch": "^3.1.2", + + + "pstree.remy": "^1.1.8", + + + "semver": "^5.7.1", + + + "simple-update-notifier": "^1.0.7", + + + "supports-color": "^5.5.0", + + + "touch": "^3.1.0", + + + "undefsafe": "^2.0.5" + + + }, + + + "bin": { + + + "nodemon": "bin/nodemon.js" + + + }, + + + "engines": { + + + "node": ">=8.10.0" + + + }, + + + "funding": { + + + "type": "opencollective", + + + "url": "https://opencollective.com/nodemon" + + + } + + + }, + + + "node_modules/nodemon/node_modules/debug": { + + + "version": "3.2.7", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + + + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + + + "dev": true, + + + "dependencies": { + + + "ms": "^2.1.1" + + + } + + + }, + + + "node_modules/nodemon/node_modules/has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/nodemon/node_modules/semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + + + "dev": true, + + + "bin": { + + + "semver": "bin/semver" + + + } + + + }, + + + "node_modules/nodemon/node_modules/supports-color": { + + + "version": "5.5.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + + + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + + "dev": true, + + + "dependencies": { + + + "has-flag": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/nopt": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + + + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + + + "dev": true, + + + "dependencies": { + + + "abbrev": "^1.0.0" + + + }, + + + "bin": { + + + "nopt": "bin/nopt.js" + + + }, + + + "engines": { + + + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/normalize-path": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + + + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/normalize-url": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + + + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "config-chain": "^1.1.11", + + + "pify": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/npm-run-path": { + + + "version": "4.0.1", + + + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + + + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + + + "dependencies": { + + + "path-key": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/npmlog": { + + + "version": "6.0.2", + + + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + + + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + + + "dev": true, + + + "dependencies": { + + + "are-we-there-yet": "^3.0.0", + + + "console-control-strings": "^1.1.0", + + + "gauge": "^4.0.3", + + + "set-blocking": "^2.0.0" + + + }, + + + "engines": { + + + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + + + } + + + }, + + + "node_modules/object-assign": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + + + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/object-inspect": { + + + "version": "1.12.3", + + + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + + + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/object-is": { + + + "version": "1.1.5", + + + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + + + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + + + "dev": true, + + + "dependencies": { + + + "call-bind": "^1.0.2", + + + "define-properties": "^1.1.3" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">= 0.4" + + + } + + + }, + + + "node_modules/on-finished": { + + + "version": "2.4.1", + + + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + + + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + + + "dependencies": { + + + "ee-first": "1.1.1" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/once": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + + + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + + + "dependencies": { + + + "wrappy": "1" + + + } + + + }, + + + "node_modules/onetime": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + + + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + + + "dev": true, + + + "dependencies": { + + + "mimic-fn": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/only": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + + + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + + + }, + + + "node_modules/opencollective-postinstall": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + + + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + + + "dev": true, + + + "bin": { + + + "opencollective-postinstall": "index.js" + + + } + + + }, + + + "node_modules/optionator": { + + + "version": "0.8.3", + + + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + + + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + + + "dev": true, + + + "dependencies": { + + + "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" + + + }, + + + "engines": { + + + "node": ">= 0.8.0" + + + } + + + }, + + + "node_modules/ora": { + + + "version": "5.4.1", + + + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + + + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + + + "dev": true, + + + "dependencies": { + + + "bl": "^4.1.0", + + + "chalk": "^4.1.0", + + + "cli-cursor": "^3.1.0", + + + "cli-spinners": "^2.5.0", + + + "is-interactive": "^1.0.0", + + + "is-unicode-supported": "^0.1.0", + + + "log-symbols": "^4.1.0", + + + "strip-ansi": "^6.0.0", + + + "wcwidth": "^1.0.1" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/ora/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/ora/node_modules/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, + + + "dependencies": { + + + "restore-cursor": "^3.1.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/ora/node_modules/mimic-fn": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + + + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/ora/node_modules/onetime": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + + + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + + + "dev": true, + + + "dependencies": { + + + "mimic-fn": "^2.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/ora/node_modules/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, + + + "dependencies": { + + + "onetime": "^5.1.0", + + + "signal-exit": "^3.0.2" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/ora/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/os-name": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + + + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + + + "dependencies": { + + + "osx-release": "^1.0.0", + + + "win-release": "^1.0.0" + + + }, + + + "bin": { + + + "os-name": "cli.js" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/os-tmpdir": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + + + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/osx-release": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + + + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + + + "dependencies": { + + + "minimist": "^1.1.0" + + + }, + + + "bin": { + + + "osx-release": "cli.js" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/p-cancelable": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + + + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/p-map": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + + + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + + + "dev": true, + + + "dependencies": { + + + "aggregate-error": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "callsites": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/parseurl": { + + + "version": "1.3.3", + + + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + + + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/path-is-absolute": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + + + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/path-is-inside": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + + + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + + + "dev": true + + + }, + + + "node_modules/path-key": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + + + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/path-scurry": { + + + "version": "1.10.1", + + + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + + + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + + + "dev": true, + + + "dependencies": { + + + "lru-cache": "^9.1.1 || ^10.0.0", + + + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + + + }, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/path-scurry/node_modules/lru-cache": { + + + "version": "10.0.1", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + + + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + + + "dev": true, + + + "engines": { + + + "node": "14 || >=16.14" + + + } + + + }, + + + "node_modules/path-type": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + + + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/pause-stream": { + + + "version": "0.0.11", + + + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + + + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + + + "dependencies": { + + + "through": "~2.3" + + + } + + + }, + + + "node_modules/pend": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + + + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + + + "dev": true + + + }, + + + "node_modules/picomatch": { + + + "version": "2.3.1", + + + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + + + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + + + "engines": { + + + "node": ">=8.6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/jonschlinkert" + + + } + + + }, + + + "node_modules/pify": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + + + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/plist": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + + + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + + + "dev": true, + + + "dependencies": { + + + "@xmldom/xmldom": "^0.8.8", + + + "base64-js": "^1.5.1", + + + "xmlbuilder": "^15.1.1" + + + }, + + + "engines": { + + + "node": ">=10.4.0" + + + } + + + }, + + + "node_modules/pngjs": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + + + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + + + "dev": true, + + + "engines": { + + + "node": ">=14.19.0" + + + } + + + }, + + + "node_modules/prebuild-install": { + + + "version": "7.1.1", + + + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + + + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + + + "dev": true, + + + "dependencies": { + + + "detect-libc": "^2.0.0", + + + "expand-template": "^2.0.3", + + + "github-from-package": "0.0.0", + + + "minimist": "^1.2.3", + + + "mkdirp-classic": "^0.5.3", + + + "napi-build-utils": "^1.0.1", + + + "node-abi": "^3.3.0", + + + "pump": "^3.0.0", + + + "rc": "^1.2.7", + + + "simple-get": "^4.0.0", + + + "tar-fs": "^2.0.0", + + + "tunnel-agent": "^0.6.0" + + + }, + + + "bin": { + + + "prebuild-install": "bin.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/prebuild-install/node_modules/chownr": { + + + "version": "1.1.4", + + + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + + + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + + + "dev": true + + + }, + + + "node_modules/prebuild-install/node_modules/tar-fs": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + + + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + + + "dev": true, + + + "dependencies": { + + + "chownr": "^1.1.1", + + + "mkdirp-classic": "^0.5.2", + + + "pump": "^3.0.0", + + + "tar-stream": "^2.1.4" + + + } + + + }, + + + "node_modules/prebuild-install/node_modules/tar-stream": { + + + "version": "2.2.0", + + + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + + + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + + + "dev": true, + + + "dependencies": { + + + "bl": "^4.0.3", + + + "end-of-stream": "^1.4.1", + + + "fs-constants": "^1.0.0", + + + "inherits": "^2.0.3", + + + "readable-stream": "^3.1.1" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/prelude-ls": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + + + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.8.0" + + + } + + + }, + + + "node_modules/prepend-http": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + + + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/prettier": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + + + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + + + "dev": true, + + + "peer": true, + + + "bin": { + + + "prettier": "bin/prettier.cjs" + + + }, + + + "engines": { + + + "node": ">=14" + + + }, + + + "funding": { + + + "url": "https://github.com/prettier/prettier?sponsor=1" + + + } + + + }, + + + "node_modules/prettier-linter-helpers": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + + + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + + + "dev": true, + + + "dependencies": { + + + "fast-diff": "^1.1.2" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + } + + + }, + + + "node_modules/process": { + + + "version": "0.11.10", + + + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + + + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.6.0" + + + } + + + }, + + + "node_modules/progress": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + + + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/promise-retry": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + + + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + + + "dev": true, + + + "dependencies": { + + + "err-code": "^2.0.2", + + + "retry": "^0.12.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/proto-list": { + + + "version": "1.2.4", + + + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + + + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/pstree.remy": { + + + "version": "1.1.8", + + + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + + + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + + + "dev": true + + + }, + + + "node_modules/pump": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + + + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + + + "dependencies": { + + + "end-of-stream": "^1.1.0", + + + "once": "^1.3.1" + + + } + + + }, + + + "node_modules/punycode": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + + + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/qs": { + + + "version": "6.11.2", + + + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + + + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + + + "dependencies": { + + + "side-channel": "^1.0.4" + + + }, + + + "engines": { + + + "node": ">=0.6" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/queue-microtask": { + + + "version": "1.2.3", + + + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + + + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ] + + + }, + + + "node_modules/queue-tick": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + + + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + + + "dev": true + + + }, + + + "node_modules/quick-lru": { + + + "version": "5.1.1", + + + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + + + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/randombytes": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + + + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + + + "dependencies": { + + + "safe-buffer": "^5.1.0" + + + } + + + }, + + + "node_modules/raw-body": { + + + "version": "2.5.2", + + + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + + + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + + + "dependencies": { + + + "bytes": "3.1.2", + + + "http-errors": "2.0.0", + + + "iconv-lite": "0.4.24", + + + "unpipe": "1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/raw-body/node_modules/http-errors": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + + + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + + + "dependencies": { + + + "depd": "2.0.0", + + + "inherits": "2.0.4", + + + "setprototypeof": "1.2.0", + + + "statuses": "2.0.1", + + + "toidentifier": "1.0.1" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/raw-body/node_modules/statuses": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + + + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/rc": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + + + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + + + "dev": true, + + + "dependencies": { + + + "deep-extend": "^0.6.0", + + + "ini": "~1.3.0", + + + "minimist": "^1.2.0", + + + "strip-json-comments": "~2.0.1" + + + }, + + + "bin": { + + + "rc": "cli.js" + + + } + + + }, + + + "node_modules/read-config-file": { + + + "version": "6.2.0", + + + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + + + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + + + "dev": true, + + + "dependencies": { + + + "dotenv": "^9.0.2", + + + "dotenv-expand": "^5.1.0", + + + "js-yaml": "^4.1.0", + + + "json5": "^2.2.0", + + + "lazy-val": "^1.0.4" + + + }, + + + "engines": { + + + "node": ">=12.0.0" + + + } + + + }, + + + "node_modules/readable-stream": { + + + "version": "3.6.2", + + + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + + + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + + + "dev": true, + + + "dependencies": { + + + "inherits": "^2.0.3", + + + "string_decoder": "^1.1.1", + + + "util-deprecate": "^1.0.1" + + + }, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/readdirp": { + + + "version": "3.6.0", + + + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + + + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + + + "dev": true, + + + "dependencies": { + + + "picomatch": "^2.2.1" + + + }, + + + "engines": { + + + "node": ">=8.10.0" + + + } + + + }, + + + "node_modules/reflect-metadata": { + + + "version": "0.1.13", + + + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + + + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + + + "dev": true + + + }, + + + "node_modules/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, + + + "engines": { + + + "node": ">=6.5.0" + + + } + + + }, + + + "node_modules/require-directory": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + + + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/resolve-alpn": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + + + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + + + "dev": true + + + }, + + + "node_modules/resolve-from": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + + + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/resolve-path": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + + + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + + + "dependencies": { + + + "http-errors": "~1.6.2", + + + "path-is-absolute": "1.0.1" + + + }, + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/resolve-path/node_modules/depd": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + + + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/resolve-path/node_modules/http-errors": { + + + "version": "1.6.3", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + + + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + + + "dependencies": { + + + "depd": "~1.1.2", + + + "inherits": "2.0.3", + + + "setprototypeof": "1.1.0", + + + "statuses": ">= 1.4.0 < 2" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/resolve-path/node_modules/inherits": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + + + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + + + }, + + + "node_modules/resolve-path/node_modules/setprototypeof": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + + + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + + + }, + + + "node_modules/responselike": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + + + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + + + "dev": true, + + + "dependencies": { + + + "lowercase-keys": "^2.0.0" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/restore-cursor": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + + + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + + + "dev": true, + + + "dependencies": { + + + "onetime": "^2.0.0", + + + "signal-exit": "^3.0.2" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/retry": { + + + "version": "0.12.0", + + + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + + + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + + + "dev": true, + + + "engines": { + + + "node": ">= 4" + + + } + + + }, + + + "node_modules/reusify": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + + + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + + + "engines": { + + + "iojs": ">=1.0.0", + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/rimraf": { + + + "version": "2.6.3", + + + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + + + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + + + "dev": true, + + + "dependencies": { + + + "glob": "^7.1.3" + + + }, + + + "bin": { + + + "rimraf": "bin.js" + + + } + + + }, + + + "node_modules/roarr": { + + + "version": "2.15.4", + + + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + + + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "boolean": "^3.0.1", + + + "detect-node": "^2.0.4", + + + "globalthis": "^1.0.1", + + + "json-stringify-safe": "^5.0.1", + + + "semver-compare": "^1.0.0", + + + "sprintf-js": "^1.1.2" + + + }, + + + "engines": { + + + "node": ">=8.0" + + + } + + + }, + + + "node_modules/run-async": { + + + "version": "2.4.1", + + + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + + + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.12.0" + + + } + + + }, + + + "node_modules/run-parallel": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + + + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ], + + + "dependencies": { + + + "queue-microtask": "^1.2.2" + + + } + + + }, + + + "node_modules/rxjs": { + + + "version": "6.6.7", + + + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + + + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + + + "devOptional": true, + + + "dependencies": { + + + "tslib": "^1.9.0" + + + }, + + + "engines": { + + + "npm": ">=2.0.0" + + + } + + + }, + + + "node_modules/rxjs/node_modules/tslib": { + + + "version": "1.14.1", + + + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + + + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + + + "devOptional": true + + + }, + + + "node_modules/safe-buffer": { + + + "version": "5.2.1", + + + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + + + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ] + + + }, + + + "node_modules/safer-buffer": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + + + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + + + }, + + + "node_modules/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==", + + + "dev": true, + + + "dependencies": { + + + "truncate-utf8-bytes": "^1.0.0" + + + } + + + }, + + + "node_modules/sax": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + + + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + + + }, + + + "node_modules/semver": { + + + "version": "7.5.4", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + + + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + + + "dependencies": { + + + "lru-cache": "^6.0.0" + + + }, + + + "bin": { + + + "semver": "bin/semver.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/semver-compare": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + + + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/serialize-error": { + + + "version": "7.0.1", + + + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + + + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "type-fest": "^0.13.1" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/serialize-javascript": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + + + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + + + "dependencies": { + + + "randombytes": "^2.1.0" + + + } + + + }, + + + "node_modules/serialport": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/serialport/-/serialport-12.0.0.tgz", + + + "integrity": "sha512-AmH3D9hHPFmnF/oq/rvigfiAouAKyK/TjnrkwZRYSFZxNggJxwvbAbfYrLeuvq7ktUdhuHdVdSjj852Z55R+uA==", + + + "dependencies": { + + + "@serialport/binding-mock": "10.2.2", + + + "@serialport/bindings-cpp": "12.0.1", + + + "@serialport/parser-byte-length": "12.0.0", + + + "@serialport/parser-cctalk": "12.0.0", + + + "@serialport/parser-delimiter": "12.0.0", + + + "@serialport/parser-inter-byte-timeout": "12.0.0", + + + "@serialport/parser-packet-length": "12.0.0", + + + "@serialport/parser-readline": "12.0.0", + + + "@serialport/parser-ready": "12.0.0", + + + "@serialport/parser-regex": "12.0.0", + + + "@serialport/parser-slip-encoder": "12.0.0", + + + "@serialport/parser-spacepacket": "12.0.0", + + + "@serialport/stream": "12.0.0", + + + "debug": "4.3.4" + + + }, + + + "engines": { + + + "node": ">=16.0.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/serialport/donate" + + + } + + + }, + + + "node_modules/set-blocking": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + + + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + + + "dev": true + + + }, + + + "node_modules/setprototypeof": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + + + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + + + }, + + + "node_modules/sharp": { + + + "version": "0.32.6", + + + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + + + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + + + "dev": true, + + + "hasInstallScript": true, + + + "dependencies": { + + + "color": "^4.2.3", + + + "detect-libc": "^2.0.2", + + + "node-addon-api": "^6.1.0", + + + "prebuild-install": "^7.1.1", + + + "semver": "^7.5.4", + + + "simple-get": "^4.0.1", + + + "tar-fs": "^3.0.4", + + + "tunnel-agent": "^0.6.0" + + + }, + + + "engines": { + + + "node": ">=14.15.0" + + + }, + + + "funding": { + + + "url": "https://opencollective.com/libvips" + + + } + + + }, + + + "node_modules/sharp/node_modules/node-addon-api": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + + + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + + + "dev": true + + + }, + + + "node_modules/shebang-command": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + + + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + + + "dependencies": { + + + "shebang-regex": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/shebang-regex": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + + + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/side-channel": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + + + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + + + "dependencies": { + + + "call-bind": "^1.0.0", + + + "get-intrinsic": "^1.0.2", + + + "object-inspect": "^1.9.0" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/signal-exit": { + + + "version": "3.0.7", + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + + + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + + + }, + + + "node_modules/simple-concat": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + + + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ] + + + }, + + + "node_modules/simple-get": { + + + "version": "4.0.1", + + + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + + + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + + + "dev": true, + + + "funding": [ + + + { + + + "type": "github", + + + "url": "https://github.com/sponsors/feross" + + + }, + + + { + + + "type": "patreon", + + + "url": "https://www.patreon.com/feross" + + + }, + + + { + + + "type": "consulting", + + + "url": "https://feross.org/support" + + + } + + + ], + + + "dependencies": { + + + "decompress-response": "^6.0.0", + + + "once": "^1.3.1", + + + "simple-concat": "^1.0.0" + + + } + + + }, + + + "node_modules/simple-swizzle": { + + + "version": "0.2.2", + + + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + + + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + + + "dev": true, + + + "dependencies": { + + + "is-arrayish": "^0.3.1" + + + } + + + }, + + + "node_modules/simple-update-notifier": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + + + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + + + "dev": true, + + + "dependencies": { + + + "semver": "~7.0.0" + + + }, + + + "engines": { + + + "node": ">=8.10.0" + + + } + + + }, + + + "node_modules/simple-update-notifier/node_modules/semver": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + + + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + + + "dev": true, + + + "bin": { + + + "semver": "bin/semver.js" + + + } + + + }, + + + "node_modules/slash": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + + + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/slice-ansi": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + + + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "ansi-styles": "^4.0.0", + + + "astral-regex": "^2.0.0", + + + "is-fullwidth-code-point": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/smart-buffer": { + + + "version": "4.2.0", + + + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + + + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 6.0.0", + + + "npm": ">= 3.0.0" + + + } + + + }, + + + "node_modules/socket.io": { + + + "version": "4.7.2", + + + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + + + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + + + "dependencies": { + + + "accepts": "~1.3.4", + + + "base64id": "~2.0.0", + + + "cors": "~2.8.5", + + + "debug": "~4.3.2", + + + "engine.io": "~6.5.2", + + + "socket.io-adapter": "~2.5.2", + + + "socket.io-parser": "~4.2.4" + + + }, + + + "engines": { + + + "node": ">=10.2.0" + + + } + + + }, + + + "node_modules/socket.io-adapter": { + + + "version": "2.5.2", + + + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + + + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + + + "dependencies": { + + + "ws": "~8.11.0" + + + } + + + }, + + + "node_modules/socket.io-client": { + + + "version": "4.7.2", + + + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + + + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + + + "dependencies": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.2", + + + "engine.io-client": "~6.5.2", + + + "socket.io-parser": "~4.2.4" + + + }, + + + "engines": { + + + "node": ">=10.0.0" + + + } + + + }, + + + "node_modules/socket.io-parser": { + + + "version": "4.2.4", + + + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + + + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + + + "dependencies": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.1" + + + }, + + + "engines": { + + + "node": ">=10.0.0" + + + } + + + }, + + + "node_modules/socks": { + + + "version": "2.7.1", + + + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + + + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + + + "dev": true, + + + "dependencies": { + + + "ip": "^2.0.0", + + + "smart-buffer": "^4.2.0" + + + }, + + + "engines": { + + + "node": ">= 10.13.0", + + + "npm": ">= 3.0.0" + + + } + + + }, + + + "node_modules/socks-proxy-agent": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + + + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + + + "dev": true, + + + "dependencies": { + + + "agent-base": "^6.0.2", + + + "debug": "^4.3.3", + + + "socks": "^2.6.2" + + + }, + + + "engines": { + + + "node": ">= 10" + + + } + + + }, + + + "node_modules/source-map": { + + + "version": "0.6.1", + + + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + + + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/source-map-support": { + + + "version": "0.5.21", + + + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + + + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + + + "dev": true, + + + "dependencies": { + + + "buffer-from": "^1.0.0", + + + "source-map": "^0.6.0" + + + } + + + }, + + + "node_modules/sprintf-js": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + + + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/ssri": { + + + "version": "10.0.5", + + + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + + + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + + + "dev": true, + + + "dependencies": { + + + "minipass": "^7.0.3" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/ssri/node_modules/minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=16 || 14 >=14.17" + + + } + + + }, + + + "node_modules/stat-mode": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + + + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + + + "dev": true, + + + "engines": { + + + "node": ">= 6" + + + } + + + }, + + + "node_modules/statuses": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + + + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/streamx": { + + + "version": "2.15.5", + + + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", + + + "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + + + "dev": true, + + + "dependencies": { + + + "fast-fifo": "^1.1.0", + + + "queue-tick": "^1.0.1" + + + } + + + }, + + + "node_modules/string_decoder": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + + + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + + + "dev": true, + + + "dependencies": { + + + "safe-buffer": "~5.2.0" + + + } + + + }, + + + "node_modules/string-template": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", + + + "integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==", + + + "dev": true + + + }, + + + "node_modules/string-width": { + + + "version": "4.2.3", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + "dev": true, + + + "dependencies": { + + + "emoji-regex": "^8.0.0", + + + "is-fullwidth-code-point": "^3.0.0", + + + "strip-ansi": "^6.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/string-width-cjs": { + + + "name": "string-width", + + + "version": "4.2.3", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + "dev": true, + + + "dependencies": { + + + "emoji-regex": "^8.0.0", + + + "is-fullwidth-code-point": "^3.0.0", + + + "strip-ansi": "^6.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/string-width-cjs/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/string-width-cjs/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/string-width/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/string-width/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/stringz": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/stringz/-/stringz-2.1.0.tgz", + + + "integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==", + + + "dev": true, + + + "dependencies": { + + + "char-regex": "^1.0.2" + + + } + + + }, + + + "node_modules/strip-ansi": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + + + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/strip-ansi-cjs": { + + + "name": "strip-ansi", + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/strip-final-newline": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + + + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/strip-json-comments": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + + + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/sumchecker": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + + + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + + + "dev": true, + + + "dependencies": { + + + "debug": "^4.1.0" + + + }, + + + "engines": { + + + "node": ">= 8.0" + + + } + + + }, + + + "node_modules/supports-color": { + + + "version": "7.2.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + + + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + + + "dependencies": { + + + "has-flag": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/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, + + + "dependencies": { + + + "ajv": "^6.10.2", + + + "lodash": "^4.17.14", + + + "slice-ansi": "^2.1.0", + + + "string-width": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=6.0.0" + + + } + + + }, + + + "node_modules/table/node_modules/ansi-regex": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + + + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/table/node_modules/ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "dependencies": { + + + "color-convert": "^1.9.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/table/node_modules/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, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/table/node_modules/color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "dependencies": { + + + "color-name": "1.1.3" + + + } + + + }, + + + "node_modules/table/node_modules/color-name": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + + + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "node_modules/table/node_modules/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 + + + }, + + + "node_modules/table/node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + + + "dev": true, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/table/node_modules/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, + + + "dependencies": { + + + "ansi-styles": "^3.2.0", + + + "astral-regex": "^1.0.0", + + + "is-fullwidth-code-point": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/table/node_modules/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, + + + "dependencies": { + + + "emoji-regex": "^7.0.1", + + + "is-fullwidth-code-point": "^2.0.0", + + + "strip-ansi": "^5.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/table/node_modules/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, + + + "dependencies": { + + + "ansi-regex": "^4.1.0" + + + }, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/tar": { + + + "version": "6.2.0", + + + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + + + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + + + "dev": true, + + + "dependencies": { + + + "chownr": "^2.0.0", + + + "fs-minipass": "^2.0.0", + + + "minipass": "^5.0.0", + + + "minizlib": "^2.1.1", + + + "mkdirp": "^1.0.3", + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/tar-fs": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + + + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + + + "dev": true, + + + "dependencies": { + + + "mkdirp-classic": "^0.5.2", + + + "pump": "^3.0.0", + + + "tar-stream": "^3.1.5" + + + } + + + }, + + + "node_modules/tar-stream": { + + + "version": "3.1.6", + + + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + + + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + + + "dev": true, + + + "dependencies": { + + + "b4a": "^1.6.4", + + + "fast-fifo": "^1.2.0", + + + "streamx": "^2.15.0" + + + } + + + }, + + + "node_modules/tar/node_modules/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, + + + "dependencies": { + + + "minipass": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "dependencies": { + + + "yallist": "^4.0.0" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/tar/node_modules/mkdirp": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + + + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + + + "dev": true, + + + "bin": { + + + "mkdirp": "bin/cmd.js" + + + }, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/temp-file": { + + + "version": "3.4.0", + + + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + + + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + + + "dev": true, + + + "dependencies": { + + + "async-exit-hook": "^2.0.1", + + + "fs-extra": "^10.0.0" + + + } + + + }, + + + "node_modules/text-table": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + + + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + + + "dev": true + + + }, + + + "node_modules/thenify": { + + + "version": "3.3.1", + + + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + + + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + + + "dependencies": { + + + "any-promise": "^1.0.0" + + + } + + + }, + + + "node_modules/thenify-all": { + + + "version": "1.6.0", + + + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + + + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + + + "dependencies": { + + + "thenify": ">= 3.1.0 < 4" + + + }, + + + "engines": { + + + "node": ">=0.8" + + + } + + + }, + + + "node_modules/through": { + + + "version": "2.3.8", + + + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + + + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + + + }, + + + "node_modules/tmp": { + + + "version": "0.0.33", + + + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + + + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + + + "dev": true, + + + "dependencies": { + + + "os-tmpdir": "~1.0.2" + + + }, + + + "engines": { + + + "node": ">=0.6.0" + + + } + + + }, + + + "node_modules/tmp-promise": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + + + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + + + "dev": true, + + + "dependencies": { + + + "tmp": "^0.2.0" + + + } + + + }, + + + "node_modules/tmp-promise/node_modules/rimraf": { + + + "version": "3.0.2", + + + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + + + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + + + "dev": true, + + + "dependencies": { + + + "glob": "^7.1.3" + + + }, + + + "bin": { + + + "rimraf": "bin.js" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/isaacs" + + + } + + + }, + + + "node_modules/tmp-promise/node_modules/tmp": { + + + "version": "0.2.1", + + + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + + + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + + + "dev": true, + + + "dependencies": { + + + "rimraf": "^3.0.0" + + + }, + + + "engines": { + + + "node": ">=8.17.0" + + + } + + + }, + + + "node_modules/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==", + + + "dev": true, + + + "engines": { + + + "node": ">=6" + + + } + + + }, + + + "node_modules/to-regex-range": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + + + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + + + "dependencies": { + + + "is-number": "^7.0.0" + + + }, + + + "engines": { + + + "node": ">=8.0" + + + } + + + }, + + + "node_modules/toidentifier": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + + + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + + + "engines": { + + + "node": ">=0.6" + + + } + + + }, + + + "node_modules/touch": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + + + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + + + "dev": true, + + + "dependencies": { + + + "nopt": "~1.0.10" + + + }, + + + "bin": { + + + "nodetouch": "bin/nodetouch.js" + + + } + + + }, + + + "node_modules/touch/node_modules/nopt": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + + + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + + + "dev": true, + + + "dependencies": { + + + "abbrev": "1" + + + }, + + + "bin": { + + + "nopt": "bin/nopt.js" + + + }, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/truncate-utf8-bytes": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + + + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + + + "dev": true, + + + "dependencies": { + + + "utf8-byte-length": "^1.0.1" + + + } + + + }, + + + "node_modules/tslib": { + + + "version": "2.5.0", + + + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + + + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + + + "dev": true + + + }, + + + "node_modules/tsscmp": { + + + "version": "1.0.6", + + + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + + + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + + + "engines": { + + + "node": ">=0.6.x" + + + } + + + }, + + + "node_modules/tunnel": { + + + "version": "0.0.6", + + + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + + + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + + + } + + + }, + + + "node_modules/tunnel-agent": { + + + "version": "0.6.0", + + + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + + + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + + + "dev": true, + + + "dependencies": { + + + "safe-buffer": "^5.0.1" + + + }, + + + "engines": { + + + "node": "*" + + + } + + + }, + + + "node_modules/type-check": { + + + "version": "0.3.2", + + + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + + + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + + + "dev": true, + + + "dependencies": { + + + "prelude-ls": "~1.1.2" + + + }, + + + "engines": { + + + "node": ">= 0.8.0" + + + } + + + }, + + + "node_modules/type-fest": { + + + "version": "0.13.1", + + + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + + + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + + + "dev": true, + + + "optional": true, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/sindresorhus" + + + } + + + }, + + + "node_modules/type-is": { + + + "version": "1.6.18", + + + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + + + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + + + "dependencies": { + + + "media-typer": "0.3.0", + + + "mime-types": "~2.1.24" + + + }, + + + "engines": { + + + "node": ">= 0.6" + + + } + + + }, + + + "node_modules/typed-emitter": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + + + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + + + "optionalDependencies": { + + + "rxjs": "*" + + + } + + + }, + + + "node_modules/undefsafe": { + + + "version": "2.0.5", + + + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + + + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + + + "dev": true + + + }, + + + "node_modules/unescape": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", + + + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + + + "dependencies": { + + + "extend-shallow": "^2.0.1" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/unique-filename": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + + + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + + + "dev": true, + + + "dependencies": { + + + "unique-slug": "^4.0.0" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/unique-slug": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + + + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + + + "dev": true, + + + "dependencies": { + + + "imurmurhash": "^0.1.4" + + + }, + + + "engines": { + + + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + + + } + + + }, + + + "node_modules/universalify": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + + + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + + + "engines": { + + + "node": ">= 10.0.0" + + + } + + + }, + + + "node_modules/unpipe": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + + + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/uri-js": { + + + "version": "4.4.1", + + + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + + + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + + + "dev": true, + + + "dependencies": { + + + "punycode": "^2.1.0" + + + } + + + }, + + + "node_modules/url-parse-lax": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + + + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + + + "dev": true, + + + "dependencies": { + + + "prepend-http": "^2.0.0" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/urllib": { + + + "version": "2.41.0", + + + "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.41.0.tgz", + + + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + + + "dependencies": { + + + "any-promise": "^1.3.0", + + + "content-type": "^1.0.2", + + + "debug": "^2.6.9", + + + "default-user-agent": "^1.0.0", + + + "digest-header": "^1.0.0", + + + "ee-first": "~1.1.1", + + + "formstream": "^1.1.0", + + + "humanize-ms": "^1.2.0", + + + "iconv-lite": "^0.4.15", + + + "ip": "^1.1.5", + + + "pump": "^3.0.0", + + + "qs": "^6.4.0", + + + "statuses": "^1.3.1", + + + "utility": "^1.16.1" + + + }, + + + "engines": { + + + "node": ">= 0.10.0" + + + }, + + + "peerDependencies": { + + + "proxy-agent": "^5.0.0" + + + }, + + + "peerDependenciesMeta": { + + + "proxy-agent": { + + + "optional": true + + + } + + + } + + + }, + + + "node_modules/urllib/node_modules/debug": { + + + "version": "2.6.9", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + + + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + + + "dependencies": { + + + "ms": "2.0.0" + + + } + + + }, + + + "node_modules/urllib/node_modules/ip": { + + + "version": "1.1.8", + + + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + + + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + + + }, + + + "node_modules/urllib/node_modules/ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + + + }, + + + "node_modules/utf8-byte-length": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + + + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + + + "dev": true + + + }, + + + "node_modules/util": { + + + "version": "0.12.5", + + + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + + + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + + + "dev": true, + + + "dependencies": { + + + "inherits": "^2.0.3", + + + "is-arguments": "^1.0.4", + + + "is-generator-function": "^1.0.7", + + + "is-typed-array": "^1.1.3", + + + "which-typed-array": "^1.1.2" + + + } + + + }, + + + "node_modules/util-deprecate": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + + + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + + + "dev": true + + + }, + + + "node_modules/utility": { + + + "version": "1.18.0", + + + "resolved": "https://registry.npmjs.org/utility/-/utility-1.18.0.tgz", + + + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + + + "dependencies": { + + + "copy-to": "^2.0.1", + + + "escape-html": "^1.0.3", + + + "mkdirp": "^0.5.1", + + + "mz": "^2.7.0", + + + "unescape": "^1.0.1" + + + }, + + + "engines": { + + + "node": ">= 0.12.0" + + + } + + + }, + + + "node_modules/utility/node_modules/mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dependencies": { + + + "minimist": "^1.2.6" + + + }, + + + "bin": { + + + "mkdirp": "bin/cmd.js" + + + } + + + }, + + + "node_modules/validator": { + + + "version": "13.11.0", + + + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + + + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + + + "dev": true, + + + "engines": { + + + "node": ">= 0.10" + + + } + + + }, + + + "node_modules/vary": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + + + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + + + "engines": { + + + "node": ">= 0.8" + + + } + + + }, + + + "node_modules/verror": { + + + "version": "1.10.1", + + + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + + + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + + + "dev": true, + + + "optional": true, + + + "dependencies": { + + + "assert-plus": "^1.0.0", + + + "core-util-is": "1.0.2", + + + "extsprintf": "^1.2.0" + + + }, + + + "engines": { + + + "node": ">=0.6.0" + + + } + + + }, + + + "node_modules/verror/node_modules/core-util-is": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + + + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + + + "dev": true, + + + "optional": true + + + }, + + + "node_modules/wcwidth": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + + + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + + + "dev": true, + + + "dependencies": { + + + "defaults": "^1.0.3" + + + } + + + }, + + + "node_modules/which": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + + + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + + + "dependencies": { + + + "isexe": "^2.0.0" + + + }, + + + "bin": { + + + "node-which": "bin/node-which" + + + }, + + + "engines": { + + + "node": ">= 8" + + + } + + + }, + + + "node_modules/which-typed-array": { + + + "version": "1.1.11", + + + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + + + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + + + "dev": true, + + + "dependencies": { + + + "available-typed-arrays": "^1.0.5", + + + "call-bind": "^1.0.2", + + + "for-each": "^0.3.3", + + + "gopd": "^1.0.1", + + + "has-tostringtag": "^1.0.0" + + + }, + + + "engines": { + + + "node": ">= 0.4" + + + }, + + + "funding": { + + + "url": "https://github.com/sponsors/ljharb" + + + } + + + }, + + + "node_modules/wide-align": { + + + "version": "1.1.5", + + + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + + + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + + + "dev": true, + + + "dependencies": { + + + "string-width": "^1.0.2 || 2 || 3 || 4" + + + } + + + }, + + + "node_modules/win-release": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + + + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + + + "dependencies": { + + + "semver": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/win-release/node_modules/semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + + + "bin": { + + + "semver": "bin/semver" + + + } + + + }, + + + "node_modules/word-wrap": { + + + "version": "1.2.5", + + + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + + + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + + + "dev": true, + + + "engines": { + + + "node": ">=0.10.0" + + + } + + + }, + + + "node_modules/wrap-ansi": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^4.0.0", + + + "string-width": "^4.1.0", + + + "strip-ansi": "^6.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + } + + + }, + + + "node_modules/wrap-ansi-cjs": { + + + "name": "wrap-ansi", + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + "dev": true, + + + "dependencies": { + + + "ansi-styles": "^4.0.0", + + + "string-width": "^4.1.0", + + + "strip-ansi": "^6.0.0" + + + }, + + + "engines": { + + + "node": ">=10" + + + }, + + + "funding": { + + + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + + + } + + + }, + + + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/wrap-ansi/node_modules/ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/wrap-ansi/node_modules/strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "dependencies": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "engines": { + + + "node": ">=8" + + + } + + + }, + + + "node_modules/wrappy": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + + + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + + + }, + + + "node_modules/write": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + + + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + + + "dev": true, + + + "dependencies": { + + + "mkdirp": "^0.5.1" + + + }, + + + "engines": { + + + "node": ">=4" + + + } + + + }, + + + "node_modules/write/node_modules/mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dev": true, + + + "dependencies": { + + + "minimist": "^1.2.6" + + + }, + + + "bin": { + + + "mkdirp": "bin/cmd.js" + + + } + + + }, + + + "node_modules/ws": { + + + "version": "8.11.0", + + + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + + + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + + + "engines": { + + + "node": ">=10.0.0" + + + }, + + + "peerDependencies": { + + + "bufferutil": "^4.0.1", + + + "utf-8-validate": "^5.0.2" + + + }, + + + "peerDependenciesMeta": { + + + "bufferutil": { + + + "optional": true + + + }, + + + "utf-8-validate": { + + + "optional": true + + + } + + + } + + + }, + + + "node_modules/xmlbuilder": { + + + "version": "15.1.1", + + + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + + + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + + + "dev": true, + + + "engines": { + + + "node": ">=8.0" + + + } + + + }, + + + "node_modules/xmlhttprequest-ssl": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + + + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + + + "engines": { + + + "node": ">=0.4.0" + + + } + + + }, + + + "node_modules/y18n": { + + + "version": "5.0.8", + + + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + + + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + + + "dev": true, + + + "engines": { + + + "node": ">=10" + + + } + + + }, + + + "node_modules/yallist": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + + + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + + + }, + + + "node_modules/yargs": { + + + "version": "17.7.2", + + + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + + + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + + + "dev": true, + + + "dependencies": { + + + "cliui": "^8.0.1", + + + "escalade": "^3.1.1", + + + "get-caller-file": "^2.0.5", + + + "require-directory": "^2.1.1", + + + "string-width": "^4.2.3", + + + "y18n": "^5.0.5", + + + "yargs-parser": "^21.1.1" + + + }, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/yargs-parser": { + + + "version": "21.1.1", + + + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + + + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + + + "dev": true, + + + "engines": { + + + "node": ">=12" + + + } + + + }, + + + "node_modules/yauzl": { + + + "version": "2.10.0", + + + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + + + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + + + "dev": true, + + + "dependencies": { + + + "buffer-crc32": "~0.2.3", + + + "fd-slicer": "~1.1.0" + + + } + + + }, + + + "node_modules/ylru": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + + + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + + + "engines": { + + + "node": ">= 4.0.0" + + + } + + + } + + + }, + + + "dependencies": { + + + "@babel/code-frame": { + + + "version": "7.22.13", + + + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + + + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + + + "dev": true, + + + "requires": { + + + "@babel/highlight": "^7.22.13", + + + "chalk": "^2.4.2" + + + }, + + + "dependencies": { + + + "ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^1.9.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" + + + } + + + }, + + + "color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true + + + }, + + + "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" + + + } + + + } + + + } + + + }, + + + "@babel/helper-validator-identifier": { + + + "version": "7.22.20", + + + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + + + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + + + "dev": true + + + }, + + + "@babel/highlight": { + + + "version": "7.22.20", + + + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + + + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + + + "dev": true, + + + "requires": { + + + "@babel/helper-validator-identifier": "^7.22.20", + + + "chalk": "^2.4.2", + + + "js-tokens": "^4.0.0" + + + }, + + + "dependencies": { + + + "ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^1.9.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" + + + } + + + }, + + + "color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true + + + }, + + + "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" + + + } + + + } + + + } + + + }, + + + "@develar/schema-utils": { + + + "version": "2.6.5", + + + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + + + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + + + "dev": true, + + + "requires": { + + + "ajv": "^6.12.0", + + + "ajv-keywords": "^3.4.1" + + + } + + + }, + + + "@electron/get": { + + + "version": "1.14.1", + + + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + + + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + + + "dev": true, + + + "requires": { + + + "debug": "^4.1.1", + + + "env-paths": "^2.2.0", + + + "fs-extra": "^8.1.0", + + + "global-agent": "^3.0.0", + + + "global-tunnel-ng": "^2.7.1", + + + "got": "^9.6.0", + + + "progress": "^2.0.3", + + + "semver": "^6.2.0", + + + "sumchecker": "^3.0.1" + + + }, + + + "dependencies": { + + + "@sindresorhus/is": { + + + "version": "0.14.0", + + + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + + + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + + + "dev": true + + + }, + + + "@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==", + + + "dev": true, + + + "requires": { + + + "defer-to-connect": "^1.0.1" + + + } + + + }, + + + "cacheable-request": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + + + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + + + "dev": true, + + + "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" + + + } + + + }, + + + "decompress-response": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + + + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + + + "dev": true, + + + "requires": { + + + "mimic-response": "^1.0.0" + + + } + + + }, + + + "defer-to-connect": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + + + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + + + "dev": true + + + }, + + + "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==", + + + "dev": true, + + + "requires": { + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^4.0.0", + + + "universalify": "^0.1.0" + + + } + + + }, + + + "got": { + + + "version": "9.6.0", + + + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + + + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + + + "dev": true, + + + "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" + + + }, + + + "dependencies": { + + + "get-stream": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + + + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + + + "dev": true, + + + "requires": { + + + "pump": "^3.0.0" + + + } + + + }, + + + "lowercase-keys": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + + + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + + + "dev": true + + + } + + + } + + + }, + + + "json-buffer": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + + + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + + + "dev": true + + + }, + + + "jsonfile": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + + + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + + + "dev": true, + + + "requires": { + + + "graceful-fs": "^4.1.6" + + + } + + + }, + + + "keyv": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + + + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + + + "dev": true, + + + "requires": { + + + "json-buffer": "3.0.0" + + + } + + + }, + + + "normalize-url": { + + + "version": "4.5.1", + + + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + + + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + + + "dev": true + + + }, + + + "p-cancelable": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + + + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + + + "dev": true + + + }, + + + "responselike": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + + + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + + + "dev": true, + + + "requires": { + + + "lowercase-keys": "^1.0.0" + + + }, + + + "dependencies": { + + + "lowercase-keys": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + + + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + + + "dev": true + + + } + + + } + + + }, + + + "semver": { + + + "version": "6.3.1", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + + + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + + + "dev": true + + + }, + + + "universalify": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + + + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + + + "dev": true + + + } + + + } + + + }, + + + "@electron/rebuild": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.3.0.tgz", + + + "integrity": "sha512-S1vgpzIOS1wCJmsYjdLz97MTUV6UTLcMk/HE3w90HYtVxvW+PQdwxLbgsrECX2bysqcnmM5a0K6mXj/gwVgYtQ==", + + + "dev": true, + + + "requires": { + + + "@malept/cross-spawn-promise": "^2.0.0", + + + "chalk": "^4.0.0", + + + "debug": "^4.1.1", + + + "detect-libc": "^2.0.1", + + + "fs-extra": "^10.0.0", + + + "got": "^11.7.0", + + + "node-abi": "^3.45.0", + + + "node-api-version": "^0.1.4", + + + "node-gyp": "^9.0.0", + + + "ora": "^5.1.0", + + + "semver": "^7.3.5", + + + "tar": "^6.0.5", + + + "yargs": "^17.0.1" + + + } + + + }, + + + "@electron/universal": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + + + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + + + "dev": true, + + + "requires": { + + + "@malept/cross-spawn-promise": "^1.1.0", + + + "asar": "^3.1.0", + + + "debug": "^4.3.1", + + + "dir-compare": "^2.4.0", + + + "fs-extra": "^9.0.1", + + + "minimatch": "^3.0.4", + + + "plist": "^3.0.4" + + + }, + + + "dependencies": { + + + "@malept/cross-spawn-promise": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + + + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + + + "dev": true, + + + "requires": { + + + "cross-spawn": "^7.0.1" + + + } + + + }, + + + "fs-extra": { + + + "version": "9.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + + + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + + + "dev": true, + + + "requires": { + + + "at-least-node": "^1.0.0", + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + } + + + } + + + } + + + }, + + + "@isaacs/cliui": { + + + "version": "8.0.2", + + + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + + + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + + + "dev": true, + + + "requires": { + + + "string-width": "^5.1.2", + + + "string-width-cjs": "npm:string-width@^4.2.0", + + + "strip-ansi": "^7.0.1", + + + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + + + "wrap-ansi": "^8.1.0", + + + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + + + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + + + "dev": true + + + }, + + + "ansi-styles": { + + + "version": "6.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + + + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + + + "dev": true + + + }, + + + "emoji-regex": { + + + "version": "9.2.2", + + + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + + + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + + + "dev": true + + + }, + + + "string-width": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + + + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + + + "dev": true, + + + "requires": { + + + "eastasianwidth": "^0.2.0", + + + "emoji-regex": "^9.2.2", + + + "strip-ansi": "^7.0.1" + + + } + + + }, + + + "strip-ansi": { + + + "version": "7.1.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + + + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^6.0.1" + + + } + + + }, + + + "wrap-ansi": { + + + "version": "8.1.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + + + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + + + "dev": true, + + + "requires": { + + + "ansi-styles": "^6.1.0", + + + "string-width": "^5.0.1", + + + "strip-ansi": "^7.0.1" + + + } + + + } + + + } + + + }, + + + "@javascript-obfuscator/escodegen": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/@javascript-obfuscator/escodegen/-/escodegen-2.3.0.tgz", + + + "integrity": "sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==", + + + "dev": true, + + + "requires": { + + + "@javascript-obfuscator/estraverse": "^5.3.0", + + + "esprima": "^4.0.1", + + + "esutils": "^2.0.2", + + + "optionator": "^0.8.1", + + + "source-map": "~0.6.1" + + + } + + + }, + + + "@javascript-obfuscator/estraverse": { + + + "version": "5.4.0", + + + "resolved": "https://registry.npmjs.org/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz", + + + "integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==", + + + "dev": true + + + }, + + + "@lzwme/get-physical-address": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/@lzwme/get-physical-address/-/get-physical-address-1.0.5.tgz", + + + "integrity": "sha512-P7oQIWW8I1y4NCMFubcsagyrjShRTmRueU1e+J0EcBzj6jmqA+JSwypsJdXcHyD41ytDvW0BeZAUtB0EsIEytw==", + + + "requires": {} + + + }, + + + "@malept/cross-spawn-promise": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + + + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + + + "dev": true, + + + "requires": { + + + "cross-spawn": "^7.0.1" + + + } + + + }, + + + "@malept/flatpak-bundler": { + + + "version": "0.4.0", + + + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + + + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + + + "dev": true, + + + "requires": { + + + "debug": "^4.1.1", + + + "fs-extra": "^9.0.0", + + + "lodash": "^4.17.15", + + + "tmp-promise": "^3.0.2" + + + }, + + + "dependencies": { + + + "fs-extra": { + + + "version": "9.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + + + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + + + "dev": true, + + + "requires": { + + + "at-least-node": "^1.0.0", + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + } + + + } + + + } + + + }, + + + "@nodelib/fs.scandir": { + + + "version": "2.1.5", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + + + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + + + "requires": { + + + "@nodelib/fs.stat": "2.0.5", + + + "run-parallel": "^1.1.9" + + + } + + + }, + + + "@nodelib/fs.stat": { + + + "version": "2.0.5", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + + + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + + + }, + + + "@nodelib/fs.walk": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + + + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + + + "requires": { + + + "@nodelib/fs.scandir": "2.1.5", + + + "fastq": "^1.6.0" + + + } + + + }, + + + "@npmcli/fs": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + + + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + + + "dev": true, + + + "requires": { + + + "semver": "^7.3.5" + + + } + + + }, + + + "@pkgjs/parseargs": { + + + "version": "0.11.0", + + + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + + + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + + + "dev": true, + + + "optional": true + + + }, + + + "@serialport/binding-mock": { + + + "version": "10.2.2", + + + "resolved": "https://registry.npmjs.org/@serialport/binding-mock/-/binding-mock-10.2.2.tgz", + + + "integrity": "sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==", + + + "requires": { + + + "@serialport/bindings-interface": "^1.2.1", + + + "debug": "^4.3.3" + + + } + + + }, + + + "@serialport/bindings-cpp": { + + + "version": "12.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-12.0.1.tgz", + + + "integrity": "sha512-r2XOwY2dDvbW7dKqSPIk2gzsr6M6Qpe9+/Ngs94fNaNlcTRCV02PfaoDmRgcubpNVVcLATlxSxPTIDw12dbKOg==", + + + "requires": { + + + "@serialport/bindings-interface": "1.2.2", + + + "@serialport/parser-readline": "11.0.0", + + + "debug": "4.3.4", + + + "node-addon-api": "7.0.0", + + + "node-gyp-build": "4.6.0" + + + }, + + + "dependencies": { + + + "@serialport/parser-delimiter": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + + + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==" + + + }, + + + "@serialport/parser-readline": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + + + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + + + "requires": { + + + "@serialport/parser-delimiter": "11.0.0" + + + } + + + }, + + + "node-addon-api": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", + + + "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + + + } + + + } + + + }, + + + "@serialport/bindings-interface": { + + + "version": "1.2.2", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-interface/-/bindings-interface-1.2.2.tgz", + + + "integrity": "sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==" + + + }, + + + "@serialport/parser-byte-length": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-12.0.0.tgz", + + + "integrity": "sha512-0ei0txFAj+s6FTiCJFBJ1T2hpKkX8Md0Pu6dqMrYoirjPskDLJRgZGLqoy3/lnU1bkvHpnJO+9oJ3PB9v8rNlg==" + + + }, + + + "@serialport/parser-cctalk": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-12.0.0.tgz", + + + "integrity": "sha512-0PfLzO9t2X5ufKuBO34DQKLXrCCqS9xz2D0pfuaLNeTkyGUBv426zxoMf3rsMRodDOZNbFblu3Ae84MOQXjnZw==" + + + }, + + + "@serialport/parser-delimiter": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-12.0.0.tgz", + + + "integrity": "sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==" + + + }, + + + "@serialport/parser-inter-byte-timeout": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-12.0.0.tgz", + + + "integrity": "sha512-GnCh8K0NAESfhCuXAt+FfBRz1Cf9CzIgXfp7SdMgXwrtuUnCC/yuRTUFWRvuzhYKoAo1TL0hhUo77SFHUH1T/w==" + + + }, + + + "@serialport/parser-packet-length": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-12.0.0.tgz", + + + "integrity": "sha512-p1hiCRqvGHHLCN/8ZiPUY/G0zrxd7gtZs251n+cfNTn+87rwcdUeu9Dps3Aadx30/sOGGFL6brIRGK4l/t7MuQ==" + + + }, + + + "@serialport/parser-readline": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-12.0.0.tgz", + + + "integrity": "sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==", + + + "requires": { + + + "@serialport/parser-delimiter": "12.0.0" + + + } + + + }, + + + "@serialport/parser-ready": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-12.0.0.tgz", + + + "integrity": "sha512-ygDwj3O4SDpZlbrRUraoXIoIqb8sM7aMKryGjYTIF0JRnKeB1ys8+wIp0RFMdFbO62YriUDextHB5Um5cKFSWg==" + + + }, + + + "@serialport/parser-regex": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-12.0.0.tgz", + + + "integrity": "sha512-dCAVh4P/pZrLcPv9NJ2mvPRBg64L5jXuiRxIlyxxdZGH4WubwXVXY/kBTihQmiAMPxbT3yshSX8f2+feqWsxqA==" + + + }, + + + "@serialport/parser-slip-encoder": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-12.0.0.tgz", + + + "integrity": "sha512-0APxDGR9YvJXTRfY+uRGhzOhTpU5akSH183RUcwzN7QXh8/1jwFsFLCu0grmAUfi+fItCkR+Xr1TcNJLR13VNA==" + + + }, + + + "@serialport/parser-spacepacket": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-12.0.0.tgz", + + + "integrity": "sha512-dozONxhPC/78pntuxpz/NOtVps8qIc/UZzdc/LuPvVsqCoJXiRxOg6ZtCP/W58iibJDKPZPAWPGYeZt9DJxI+Q==" + + + }, + + + "@serialport/stream": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-12.0.0.tgz", + + + "integrity": "sha512-9On64rhzuqKdOQyiYLYv2lQOh3TZU/D3+IWCR5gk0alPel2nwpp4YwDEGiUBfrQZEdQ6xww0PWkzqth4wqwX3Q==", + + + "requires": { + + + "@serialport/bindings-interface": "1.2.2", + + + "debug": "4.3.4" + + + } + + + }, + + + "@sindresorhus/is": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + + + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + + + "dev": true + + + }, + + + "@socket.io/component-emitter": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + + + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + + + }, + + + "@szmarczak/http-timer": { + + + "version": "4.0.6", + + + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + + + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + + + "dev": true, + + + "requires": { + + + "defer-to-connect": "^2.0.0" + + + } + + + }, + + + "@tootallnate/once": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + + + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + + + "dev": true + + + }, + + + "@types/cacheable-request": { + + + "version": "6.0.3", + + + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + + + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + + + "dev": true, + + + "requires": { + + + "@types/http-cache-semantics": "*", + + + "@types/keyv": "^3.1.4", + + + "@types/node": "*", + + + "@types/responselike": "^1.0.0" + + + } + + + }, + + + "@types/cookie": { + + + "version": "0.4.1", + + + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + + + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + + + }, + + + "@types/cors": { + + + "version": "2.8.14", + + + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz", + + + "integrity": "sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==", + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@types/debug": { + + + "version": "4.1.9", + + + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz", + + + "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==", + + + "dev": true, + + + "requires": { + + + "@types/ms": "*" + + + } + + + }, + + + "@types/formidable": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.6.tgz", + + + "integrity": "sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==", + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@types/fs-extra": { + + + "version": "9.0.13", + + + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + + + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + + + "dev": true, + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@types/glob": { + + + "version": "7.2.0", + + + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + + + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + + + "requires": { + + + "@types/minimatch": "*", + + + "@types/node": "*" + + + } + + + }, + + + "@types/http-cache-semantics": { + + + "version": "4.0.2", + + + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + + + "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + + + "dev": true + + + }, + + + "@types/keyv": { + + + "version": "3.1.4", + + + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + + + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + + + "dev": true, + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@types/minimatch": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + + + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + + + }, + + + "@types/ms": { + + + "version": "0.7.32", + + + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz", + + + "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==", + + + "dev": true + + + }, + + + "@types/node": { + + + "version": "16.18.58", + + + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.58.tgz", + + + "integrity": "sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA==" + + + }, + + + "@types/plist": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz", + + + "integrity": "sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "@types/node": "*", + + + "xmlbuilder": ">=11.0.1" + + + } + + + }, + + + "@types/responselike": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", + + + "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + + + "dev": true, + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@types/semver": { + + + "version": "7.5.3", + + + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + + + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==" + + + }, + + + "@types/validator": { + + + "version": "13.11.2", + + + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.2.tgz", + + + "integrity": "sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==", + + + "dev": true + + + }, + + + "@types/verror": { + + + "version": "1.10.7", + + + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz", + + + "integrity": "sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==", + + + "dev": true, + + + "optional": true + + + }, + + + "@types/yargs": { + + + "version": "17.0.28", + + + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", + + + "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", + + + "dev": true, + + + "requires": { + + + "@types/yargs-parser": "*" + + + } + + + }, + + + "@types/yargs-parser": { + + + "version": "21.0.1", + + + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", + + + "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", + + + "dev": true + + + }, + + + "@types/yauzl": { + + + "version": "2.10.1", + + + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", + + + "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "@types/node": "*" + + + } + + + }, + + + "@xmldom/xmldom": { + + + "version": "0.8.10", + + + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + + + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + + + "dev": true + + + }, + + + "7zip-bin": { + + + "version": "5.1.1", + + + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + + + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + + + "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==", + + + "dev": true + + + }, + + + "accepts": { + + + "version": "1.3.8", + + + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + + + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + + + "requires": { + + + "mime-types": "~2.1.34", + + + "negotiator": "0.6.3" + + + } + + + }, + + + "acorn": { + + + "version": "6.4.2", + + + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + + + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + + + "dev": true + + + }, + + + "acorn-jsx": { + + + "version": "5.3.2", + + + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + + + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + + + "dev": true, + + + "requires": {} + + + }, + + + "agent-base": { + + + "version": "6.0.2", + + + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + + + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + + + "dev": true, + + + "requires": { + + + "debug": "4" + + + } + + + }, + + + "agentkeepalive": { + + + "version": "4.5.0", + + + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + + + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + + + "requires": { + + + "humanize-ms": "^1.2.1" + + + } + + + }, + + + "aggregate-error": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + + + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + + + "dev": true, + + + "requires": { + + + "clean-stack": "^2.0.0", + + + "indent-string": "^4.0.0" + + + } + + + }, + + + "ajv": { + + + "version": "6.12.6", + + + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + + + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + + + "dev": true, + + + "requires": { + + + "fast-deep-equal": "^3.1.1", + + + "fast-json-stable-stringify": "^2.0.0", + + + "json-schema-traverse": "^0.4.1", + + + "uri-js": "^4.2.2" + + + } + + + }, + + + "ajv-keywords": { + + + "version": "3.5.2", + + + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + + + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + + + "dev": true, + + + "requires": {} + + + }, + + + "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": "3.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + + + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + + + "dev": true + + + }, + + + "ansi-styles": { + + + "version": "4.3.0", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + + + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + + + "requires": { + + + "color-convert": "^2.0.1" + + + } + + + }, + + + "any-promise": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + + + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + + + }, + + + "anymatch": { + + + "version": "3.1.3", + + + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + + + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + + + "dev": true, + + + "requires": { + + + "normalize-path": "^3.0.0", + + + "picomatch": "^2.0.4" + + + } + + + }, + + + "app-builder-bin": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + + + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + + + "dev": true + + + }, + + + "app-builder-lib": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + + + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + + + "dev": true, + + + "requires": { + + + "@develar/schema-utils": "~2.6.5", + + + "@electron/universal": "1.2.1", + + + "@malept/flatpak-bundler": "^0.4.0", + + + "7zip-bin": "~5.1.1", + + + "async-exit-hook": "^2.0.1", + + + "bluebird-lst": "^1.0.9", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chromium-pickle-js": "^0.2.0", + + + "debug": "^4.3.4", + + + "ejs": "^3.1.7", + + + "electron-osx-sign": "^0.6.0", + + + "electron-publish": "23.6.0", + + + "form-data": "^4.0.0", + + + "fs-extra": "^10.1.0", + + + "hosted-git-info": "^4.1.0", + + + "is-ci": "^3.0.0", + + + "isbinaryfile": "^4.0.10", + + + "js-yaml": "^4.1.0", + + + "lazy-val": "^1.0.5", + + + "minimatch": "^3.1.2", + + + "read-config-file": "6.2.0", + + + "sanitize-filename": "^1.6.3", + + + "semver": "^7.3.7", + + + "tar": "^6.1.11", + + + "temp-file": "^3.4.0" + + + } + + + }, + + + "aproba": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + + + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + + + "dev": true + + + }, + + + "are-we-there-yet": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + + + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + + + "dev": true, + + + "requires": { + + + "delegates": "^1.0.0", + + + "readable-stream": "^3.6.0" + + + } + + + }, + + + "argparse": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + + + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + + + }, + + + "array-differ": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + + + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + + + "dev": true + + + }, + + + "array-union": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + + + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + + + }, + + + "arrify": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + + + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + + + "dev": true + + + }, + + + "asap": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + + + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + + + }, + + + "asar": { + + + "version": "3.2.0", + + + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + + + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + + + "dev": true, + + + "requires": { + + + "@types/glob": "^7.1.1", + + + "chromium-pickle-js": "^0.2.0", + + + "commander": "^5.0.0", + + + "glob": "^7.1.6", + + + "minimatch": "^3.0.4" + + + }, + + + "dependencies": { + + + "commander": { + + + "version": "5.1.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + + + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + + + "dev": true + + + } + + + } + + + }, + + + "assert": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + + + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + + + "dev": true, + + + "requires": { + + + "es6-object-assign": "^1.1.0", + + + "is-nan": "^1.2.1", + + + "object-is": "^1.0.1", + + + "util": "^0.12.0" + + + } + + + }, + + + "assert-plus": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + + + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + + + "dev": true, + + + "optional": true + + + }, + + + "astral-regex": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + + + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + + + "dev": true, + + + "optional": true + + + }, + + + "async": { + + + "version": "3.2.4", + + + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + + + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + + + "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==", + + + "dev": true + + + }, + + + "asynckit": { + + + "version": "0.4.0", + + + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + + + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + + + "dev": true + + + }, + + + "at-least-node": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + + + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + + + "dev": true + + + }, + + + "available-typed-arrays": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + + + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + + + "dev": true + + + }, + + + "b4a": { + + + "version": "1.6.4", + + + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + + + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + + + "dev": true + + + }, + + + "balanced-match": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + + + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + + + }, + + + "base64-js": { + + + "version": "1.5.1", + + + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + + + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + + + "dev": true + + + }, + + + "base64id": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + + + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + + + }, + + + "binary-extensions": { + + + "version": "2.2.0", + + + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + + + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + + + "dev": true + + + }, + + + "bl": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + + + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + + + "dev": true, + + + "requires": { + + + "buffer": "^5.5.0", + + + "inherits": "^2.0.4", + + + "readable-stream": "^3.4.0" + + + } + + + }, + + + "bluebird": { + + + "version": "3.7.2", + + + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + + + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + + + "dev": true + + + }, + + + "bluebird-lst": { + + + "version": "1.0.9", + + + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + + + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + + + "dev": true, + + + "requires": { + + + "bluebird": "^3.5.5" + + + } + + + }, + + + "boolean": { + + + "version": "3.2.0", + + + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + + + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + + + "dev": true, + + + "optional": true + + + }, + + + "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==", + + + "requires": { + + + "fill-range": "^7.0.1" + + + } + + + }, + + + "buffer": { + + + "version": "5.7.1", + + + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + + + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + + + "dev": true, + + + "requires": { + + + "base64-js": "^1.3.1", + + + "ieee754": "^1.1.13" + + + } + + + }, + + + "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==", + + + "dev": true, + + + "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==", + + + "dev": true + + + }, + + + "buffer-crc32": { + + + "version": "0.2.13", + + + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + + + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + + + "dev": true + + + }, + + + "buffer-equal": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + + + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + + + "dev": true + + + }, + + + "buffer-fill": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + + + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + + + "dev": true + + + }, + + + "buffer-from": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + + + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + + + "dev": true + + + }, + + + "builder-util": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + + + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + + + "dev": true, + + + "requires": { + + + "@types/debug": "^4.1.6", + + + "@types/fs-extra": "^9.0.11", + + + "7zip-bin": "~5.1.1", + + + "app-builder-bin": "4.0.0", + + + "bluebird-lst": "^1.0.9", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "cross-spawn": "^7.0.3", + + + "debug": "^4.3.4", + + + "fs-extra": "^10.0.0", + + + "http-proxy-agent": "^5.0.0", + + + "https-proxy-agent": "^5.0.0", + + + "is-ci": "^3.0.0", + + + "js-yaml": "^4.1.0", + + + "source-map-support": "^0.5.19", + + + "stat-mode": "^1.0.0", + + + "temp-file": "^3.4.0" + + + } + + + }, + + + "builder-util-runtime": { + + + "version": "9.1.1", + + + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + + + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + + + "requires": { + + + "debug": "^4.3.4", + + + "sax": "^1.2.4" + + + } + + + }, + + + "bytenode": { + + + "version": "1.5.1", + + + "resolved": "https://registry.npmjs.org/bytenode/-/bytenode-1.5.1.tgz", + + + "integrity": "sha512-99JiRxnOYs+89VAPfvh1NG6xqsB6flCifJkvQM3jWwYTO+Y7B+Ed85o+yIBt8a4JRMLYo/F0JqY8NyDAgGOs2w==" + + + }, + + + "bytes": { + + + "version": "3.1.2", + + + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + + + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + + + }, + + + "cacache": { + + + "version": "17.1.4", + + + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + + + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + + + "dev": true, + + + "requires": { + + + "@npmcli/fs": "^3.1.0", + + + "fs-minipass": "^3.0.0", + + + "glob": "^10.2.2", + + + "lru-cache": "^7.7.1", + + + "minipass": "^7.0.3", + + + "minipass-collect": "^1.0.2", + + + "minipass-flush": "^1.0.5", + + + "minipass-pipeline": "^1.2.4", + + + "p-map": "^4.0.0", + + + "ssri": "^10.0.0", + + + "tar": "^6.1.11", + + + "unique-filename": "^3.0.0" + + + }, + + + "dependencies": { + + + "brace-expansion": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + + + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + + + "dev": true, + + + "requires": { + + + "balanced-match": "^1.0.0" + + + } + + + }, + + + "glob": { + + + "version": "10.3.10", + + + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + + + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + + + "dev": true, + + + "requires": { + + + "foreground-child": "^3.1.0", + + + "jackspeak": "^2.3.5", + + + "minimatch": "^9.0.1", + + + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + + + "path-scurry": "^1.10.1" + + + } + + + }, + + + "lru-cache": { + + + "version": "7.18.3", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + + + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + + + "dev": true + + + }, + + + "minimatch": { + + + "version": "9.0.3", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + + + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + + + "dev": true, + + + "requires": { + + + "brace-expansion": "^2.0.1" + + + } + + + }, + + + "minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true + + + } + + + } + + + }, + + + "cache-content-type": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + + + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + + + "requires": { + + + "mime-types": "^2.1.18", + + + "ylru": "^1.2.0" + + + } + + + }, + + + "cacheable-lookup": { + + + "version": "5.0.4", + + + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + + + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + + + "dev": true + + + }, + + + "cacheable-request": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + + + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + + + "dev": true, + + + "requires": { + + + "clone-response": "^1.0.2", + + + "get-stream": "^5.1.0", + + + "http-cache-semantics": "^4.0.0", + + + "keyv": "^4.0.0", + + + "lowercase-keys": "^2.0.0", + + + "normalize-url": "^6.0.1", + + + "responselike": "^2.0.0" + + + } + + + }, + + + "call-bind": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + + + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + + + "requires": { + + + "function-bind": "^1.1.1", + + + "get-intrinsic": "^1.0.2" + + + } + + + }, + + + "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": "4.1.2", + + + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + + + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + + + "requires": { + + + "ansi-styles": "^4.1.0", + + + "supports-color": "^7.1.0" + + + } + + + }, + + + "chance": { + + + "version": "1.1.9", + + + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.9.tgz", + + + "integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==", + + + "dev": true + + + }, + + + "char-regex": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + + + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + + + "dev": true + + + }, + + + "chardet": { + + + "version": "0.7.0", + + + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + + + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + + + "dev": true + + + }, + + + "charenc": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + + + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + + + "dev": true + + + }, + + + "chokidar": { + + + "version": "3.5.3", + + + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + + + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + + + "dev": true, + + + "requires": { + + + "anymatch": "~3.1.2", + + + "braces": "~3.0.2", + + + "fsevents": "~2.3.2", + + + "glob-parent": "~5.1.2", + + + "is-binary-path": "~2.1.0", + + + "is-glob": "~4.0.1", + + + "normalize-path": "~3.0.0", + + + "readdirp": "~3.6.0" + + + } + + + }, + + + "chownr": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + + + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + + + "dev": true + + + }, + + + "chromium-pickle-js": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + + + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + + + "dev": true + + + }, + + + "ci-info": { + + + "version": "3.9.0", + + + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + + + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + + + "dev": true + + + }, + + + "circular-json-for-egg": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/circular-json-for-egg/-/circular-json-for-egg-1.0.0.tgz", + + + "integrity": "sha512-BzMR1dg0+YqcFoMETHq0gFeQNNKliXI1Oe+C0nx/4npLaohsR7/Oj3UFht65MLwF7zs6x13gOr+f4+JeYni6vw==" + + + }, + + + "class-validator": { + + + "version": "0.14.0", + + + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + + + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + + + "dev": true, + + + "requires": { + + + "@types/validator": "^13.7.10", + + + "libphonenumber-js": "^1.10.14", + + + "validator": "^13.7.0" + + + } + + + }, + + + "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-cursor": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + + + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + + + "dev": true, + + + "requires": { + + + "restore-cursor": "^2.0.0" + + + } + + + }, + + + "cli-spinners": { + + + "version": "2.9.1", + + + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + + + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + + + "dev": true + + + }, + + + "cli-truncate": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + + + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "slice-ansi": "^3.0.0", + + + "string-width": "^4.2.0" + + + } + + + }, + + + "cli-width": { + + + "version": "2.2.1", + + + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + + + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + + + "dev": true + + + }, + + + "cliui": { + + + "version": "8.0.1", + + + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + + + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + + + "dev": true, + + + "requires": { + + + "string-width": "^4.2.0", + + + "strip-ansi": "^6.0.1", + + + "wrap-ansi": "^7.0.0" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "clone": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + + + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + + + "dev": true + + + }, + + + "clone-response": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + + + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + + + "dev": true, + + + "requires": { + + + "mimic-response": "^1.0.0" + + + } + + + }, + + + "co": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + + + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + + + }, + + + "co-body": { + + + "version": "5.2.0", + + + "resolved": "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz", + + + "integrity": "sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ==", + + + "requires": { + + + "inflation": "^2.0.0", + + + "qs": "^6.4.0", + + + "raw-body": "^2.2.0", + + + "type-is": "^1.6.14" + + + } + + + }, + + + "color": { + + + "version": "4.2.3", + + + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + + + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^2.0.1", + + + "color-string": "^1.9.0" + + + } + + + }, + + + "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==" + + + }, + + + "color-string": { + + + "version": "1.9.1", + + + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + + + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + + + "dev": true, + + + "requires": { + + + "color-name": "^1.0.0", + + + "simple-swizzle": "^0.2.2" + + + } + + + }, + + + "color-support": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + + + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + + + "dev": true + + + }, + + + "colors": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + + + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + + + "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==", + + + "dev": true, + + + "requires": { + + + "delayed-stream": "~1.0.0" + + + } + + + }, + + + "commander": { + + + "version": "11.1.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + + + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + + + "dev": true + + + }, + + + "compare-version": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + + + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + + + "dev": true + + + }, + + + "concat-map": { + + + "version": "0.0.1", + + + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + + + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + + + }, + + + "config-chain": { + + + "version": "1.1.13", + + + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + + + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "ini": "^1.3.4", + + + "proto-list": "~1.2.1" + + + } + + + }, + + + "console-control-strings": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + + + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + + + "dev": true + + + }, + + + "content-disposition": { + + + "version": "0.5.4", + + + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + + + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + + + "requires": { + + + "safe-buffer": "5.2.1" + + + } + + + }, + + + "content-type": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + + + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + + + }, + + + "cookie": { + + + "version": "0.4.2", + + + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + + + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + + + }, + + + "cookies": { + + + "version": "0.8.0", + + + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + + + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + + + "requires": { + + + "depd": "~2.0.0", + + + "keygrip": "~1.1.0" + + + } + + + }, + + + "copy-to": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + + + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + + + }, + + + "core-util-is": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + + + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + + + }, + + + "cors": { + + + "version": "2.8.5", + + + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + + + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + + + "requires": { + + + "object-assign": "^4", + + + "vary": "^1" + + + } + + + }, + + + "crc": { + + + "version": "3.8.0", + + + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + + + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "buffer": "^5.1.0" + + + } + + + }, + + + "cross-spawn": { + + + "version": "7.0.3", + + + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + + + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + + + "requires": { + + + "path-key": "^3.1.0", + + + "shebang-command": "^2.0.0", + + + "which": "^2.0.1" + + + } + + + }, + + + "crypt": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + + + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + + + "dev": true + + + }, + + + "dayjs": { + + + "version": "1.11.10", + + + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + + + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + + + }, + + + "debug": { + + + "version": "4.3.4", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + + + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + + + "requires": { + + + "ms": "2.1.2" + + + } + + + }, + + + "decompress-response": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + + + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + + + "dev": true, + + + "requires": { + + + "mimic-response": "^3.1.0" + + + }, + + + "dependencies": { + + + "mimic-response": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + + + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + + + "dev": true + + + } + + + } + + + }, + + + "deep-equal": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + + + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + + + }, + + + "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==", + + + "dev": true + + + }, + + + "deep-is": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + + + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + + + "dev": true + + + }, + + + "default-user-agent": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", + + + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + + + "requires": { + + + "os-name": "~1.0.3" + + + } + + + }, + + + "defaults": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + + + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + + + "dev": true, + + + "requires": { + + + "clone": "^1.0.2" + + + } + + + }, + + + "defer-to-connect": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + + + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + + + "dev": true + + + }, + + + "define-data-property": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + + + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + + + "dev": true, + + + "requires": { + + + "get-intrinsic": "^1.2.1", + + + "gopd": "^1.0.1", + + + "has-property-descriptors": "^1.0.0" + + + } + + + }, + + + "define-properties": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + + + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + + + "dev": true, + + + "requires": { + + + "define-data-property": "^1.0.1", + + + "has-property-descriptors": "^1.0.0", + + + "object-keys": "^1.1.1" + + + } + + + }, + + + "delayed-stream": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + + + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + + + "dev": true + + + }, + + + "delegates": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + + + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + + + }, + + + "depd": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + + + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + + + }, + + + "destroy": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + + + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + + + }, + + + "detect-libc": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + + + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + + + "dev": true + + + }, + + + "detect-node": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + + + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + + + "dev": true, + + + "optional": true + + + }, + + + "dezalgo": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + + + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + + + "requires": { + + + "asap": "^2.0.0", + + + "wrappy": "1" + + + } + + + }, + + + "digest-header": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-1.1.0.tgz", + + + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==" + + + }, + + + "dir-compare": { + + + "version": "2.4.0", + + + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + + + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + + + "dev": true, + + + "requires": { + + + "buffer-equal": "1.0.0", + + + "colors": "1.0.3", + + + "commander": "2.9.0", + + + "minimatch": "3.0.4" + + + }, + + + "dependencies": { + + + "commander": { + + + "version": "2.9.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + + + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + + + "dev": true, + + + "requires": { + + + "graceful-readlink": ">= 1.0.0" + + + } + + + }, + + + "minimatch": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + + + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + + + "dev": true, + + + "requires": { + + + "brace-expansion": "^1.1.7" + + + } + + + } + + + } + + + }, + + + "dir-glob": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + + + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + + + "requires": { + + + "path-type": "^4.0.0" + + + } + + + }, + + + "dmg-builder": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + + + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + + + "dev": true, + + + "requires": { + + + "app-builder-lib": "23.6.0", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "dmg-license": "^1.0.11", + + + "fs-extra": "^10.0.0", + + + "iconv-lite": "^0.6.2", + + + "js-yaml": "^4.1.0" + + + }, + + + "dependencies": { + + + "iconv-lite": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + + + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + + + "dev": true, + + + "requires": { + + + "safer-buffer": ">= 2.1.2 < 3.0.0" + + + } + + + } + + + } + + + }, + + + "dmg-license": { + + + "version": "1.0.11", + + + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + + + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "@types/plist": "^3.0.1", + + + "@types/verror": "^1.10.3", + + + "ajv": "^6.10.0", + + + "crc": "^3.8.0", + + + "iconv-corefoundation": "^1.1.7", + + + "plist": "^3.0.4", + + + "smart-buffer": "^4.0.2", + + + "verror": "^1.10.0" + + + } + + + }, + + + "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" + + + } + + + }, + + + "dotenv": { + + + "version": "9.0.2", + + + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + + + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + + + "dev": true + + + }, + + + "dotenv-expand": { + + + "version": "5.1.0", + + + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + + + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + + + "dev": true + + + }, + + + "duplexer3": { + + + "version": "0.1.5", + + + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + + + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + + + "dev": true + + + }, + + + "eastasianwidth": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + + + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + + + "dev": true + + + }, + + + "ee-bin": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/ee-bin/-/ee-bin-1.5.0.tgz", + + + "integrity": "sha512-PELFev7hNX103a3WCIalZKGzRIKM1UkFpQ/jGjj8CsjV1cDbvMLU7JEd3veBywosu4qwjTrKizG37bx5M/BLUA==", + + + "dev": true, + + + "requires": { + + + "bytenode": "^1.3.6", + + + "chalk": "^4.1.2", + + + "commander": "^11.0.0", + + + "cross-spawn": "^7.0.3", + + + "fs-extra": "^10.0.0", + + + "globby": "^10.0.0", + + + "is-type-of": "^1.2.1", + + + "javascript-obfuscator": "^4.0.2" + + + } + + + }, + + + "ee-core": { + + + "version": "2.9.2", + + + "resolved": "https://registry.npmjs.org/ee-core/-/ee-core-2.9.2.tgz", + + + "integrity": "sha512-ZzWcS6/oU/9rAiDqxssqSHnixbgaFMHnRySVlZNhUUAh+ZyBgbroicYWXQohcVbPBCztw/iGDezMJ0FscEn7fg==", + + + "requires": { + + + "agentkeepalive": "^4.2.0", + + + "bytenode": "^1.3.6", + + + "chalk": "^4.1.2", + + + "cross-spawn": "^7.0.3", + + + "dayjs": "^1.11.7", + + + "debug": "^4.3.3", + + + "egg-errors": "^2.3.0", + + + "egg-logger": "^2.7.1", + + + "globby": "^10.0.0", + + + "is-type-of": "^1.2.1", + + + "koa": "^2.13.4", + + + "koa-body": "^5.0.0", + + + "koa-convert": "^2.0.0", + + + "koa-static": "^5.0.0", + + + "koa2-cors": "^2.0.6", + + + "lodash": "^4.17.21", + + + "mkdirp": "^2.1.3", + + + "semver": "^7.3.8", + + + "serialize-javascript": "^6.0.1", + + + "socket.io": "^4.6.1", + + + "socket.io-client": "^4.6.1", + + + "urllib": "^2.38.0" + + + } + + + }, + + + "ee-first": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + + + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + + + }, + + + "egg-errors": { + + + "version": "2.3.2", + + + "resolved": "https://registry.npmjs.org/egg-errors/-/egg-errors-2.3.2.tgz", + + + "integrity": "sha512-E+Sx7IBVrfRyHSjFXaq4sCZ3Uk3ka9PYySaQ8VbRZmLEt9ENBCD99yVzLIeWUH2QfzvkrjY9El1eHmLeRx7cfw==" + + + }, + + + "egg-logger": { + + + "version": "2.9.1", + + + "resolved": "https://registry.npmjs.org/egg-logger/-/egg-logger-2.9.1.tgz", + + + "integrity": "sha512-TPYdNthc7yGV+08A2U4g1T1wgRAjfTnsYC53JgfdKiYukaH3na1KPXEu+TEWni7IooqkFGkQ0t0WY+ylWFnvbw==", + + + "requires": { + + + "chalk": "^2.4.1", + + + "circular-json-for-egg": "^1.0.0", + + + "debug": "^2.6.9", + + + "depd": "^2.0.0", + + + "egg-errors": "^2.2.0", + + + "iconv-lite": "^0.4.24", + + + "mkdirp": "^0.5.1", + + + "utility": "^1.15.0" + + + }, + + + "dependencies": { + + + "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" + + + } + + + }, + + + "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" + + + } + + + }, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + + + }, + + + "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" + + + } + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + + + }, + + + "mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "requires": { + + + "minimist": "^1.2.6" + + + } + + + }, + + + "ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + + + }, + + + "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" + + + } + + + } + + + } + + + }, + + + "ejs": { + + + "version": "3.1.9", + + + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + + + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + + + "dev": true, + + + "requires": { + + + "jake": "^10.8.5" + + + } + + + }, + + + "electron": { + + + "version": "21.4.4", + + + "resolved": "https://registry.npmjs.org/electron/-/electron-21.4.4.tgz", + + + "integrity": "sha512-N5O7y7Gtt7mDgkJLkW49ETiT8M3myZ9tNIEvGTKhpBduX4WdgMj6c3hYeYBD6XW7SvbRkWEQaTl25RNday8Xpw==", + + + "dev": true, + + + "requires": { + + + "@electron/get": "^1.14.1", + + + "@types/node": "^16.11.26", + + + "extract-zip": "^2.0.1" + + + } + + + }, + + + "electron-builder": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + + + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + + + "dev": true, + + + "requires": { + + + "@types/yargs": "^17.0.1", + + + "app-builder-lib": "23.6.0", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "dmg-builder": "23.6.0", + + + "fs-extra": "^10.0.0", + + + "is-ci": "^3.0.0", + + + "lazy-val": "^1.0.5", + + + "read-config-file": "6.2.0", + + + "simple-update-notifier": "^1.0.7", + + + "yargs": "^17.5.1" + + + } + + + }, + + + "electron-osx-sign": { + + + "version": "0.6.0", + + + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + + + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + + + "dev": true, + + + "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==", + + + "dev": true, + + + "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==", + + + "dev": true, + + + "requires": { + + + "buffer-alloc": "^1.2.0" + + + } + + + }, + + + "ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + + + "dev": true + + + } + + + } + + + }, + + + "electron-publish": { + + + "version": "23.6.0", + + + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + + + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + + + "dev": true, + + + "requires": { + + + "@types/fs-extra": "^9.0.11", + + + "builder-util": "23.6.0", + + + "builder-util-runtime": "9.1.1", + + + "chalk": "^4.1.1", + + + "fs-extra": "^10.0.0", + + + "lazy-val": "^1.0.5", + + + "mime": "^2.5.2" + + + } + + + }, + + + "electron-shutdown-command": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", + + + "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" + + + }, + + + "electron-updater": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", + + + "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", + + + "requires": { + + + "@types/semver": "^7.3.6", + + + "builder-util-runtime": "9.1.1", + + + "fs-extra": "^10.0.0", + + + "js-yaml": "^4.1.0", + + + "lazy-val": "^1.0.5", + + + "lodash.escaperegexp": "^4.1.2", + + + "lodash.isequal": "^4.5.0", + + + "semver": "^7.3.5", + + + "typed-emitter": "^2.1.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==", + + + "dev": true + + + }, + + + "encodeurl": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + + + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + + + }, + + + "encoding": { + + + "version": "0.1.13", + + + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + + + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "iconv-lite": "^0.6.2" + + + }, + + + "dependencies": { + + + "iconv-lite": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + + + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "safer-buffer": ">= 2.1.2 < 3.0.0" + + + } + + + } + + + } + + + }, + + + "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" + + + } + + + }, + + + "engine.io": { + + + "version": "6.5.3", + + + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.3.tgz", + + + "integrity": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==", + + + "requires": { + + + "@types/cookie": "^0.4.1", + + + "@types/cors": "^2.8.12", + + + "@types/node": ">=10.0.0", + + + "accepts": "~1.3.4", + + + "base64id": "2.0.0", + + + "cookie": "~0.4.1", + + + "cors": "~2.8.5", + + + "debug": "~4.3.1", + + + "engine.io-parser": "~5.2.1", + + + "ws": "~8.11.0" + + + } + + + }, + + + "engine.io-client": { + + + "version": "6.5.2", + + + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", + + + "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", + + + "requires": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.1", + + + "engine.io-parser": "~5.2.1", + + + "ws": "~8.11.0", + + + "xmlhttprequest-ssl": "~2.0.0" + + + } + + + }, + + + "engine.io-parser": { + + + "version": "5.2.1", + + + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + + + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" + + + }, + + + "env-paths": { + + + "version": "2.2.1", + + + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + + + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + + + "dev": true + + + }, + + + "err-code": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + + + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + + + "dev": true + + + }, + + + "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 + + + }, + + + "es6-object-assign": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + + + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + + + "dev": true + + + }, + + + "escalade": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + + + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + + + "dev": true + + + }, + + + "escape-html": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + + + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + + + }, + + + "escape-string-regexp": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + + + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + + + }, + + + "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-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^1.9.0" + + + } + + + }, + + + "argparse": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + + + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + + + "dev": true, + + + "requires": { + + + "sprintf-js": "~1.0.2" + + + } + + + }, + + + "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" + + + } + + + }, + + + "color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "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" + + + } + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true + + + }, + + + "js-yaml": { + + + "version": "3.14.1", + + + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + + + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + + + "dev": true, + + + "requires": { + + + "argparse": "^1.0.7", + + + "esprima": "^4.0.0" + + + } + + + }, + + + "mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dev": true, + + + "requires": { + + + "minimist": "^1.2.6" + + + } + + + }, + + + "path-key": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + + + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + + + "dev": true + + + }, + + + "semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + + + "dev": true + + + }, + + + "shebang-command": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + + + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + + + "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": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + + + "dev": true + + + }, + + + "sprintf-js": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + + + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + + + "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==", + + + "dev": true, + + + "requires": { + + + "has-flag": "^3.0.0" + + + } + + + }, + + + "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-plugin-prettier": { + + + "version": "3.4.1", + + + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + + + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + + + "dev": true, + + + "requires": { + + + "prettier-linter-helpers": "^1.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.3.0", + + + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + + + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + + + "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==", + + + "dev": true + + + }, + + + "esquery": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + + + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + + + "dev": true, + + + "requires": { + + + "estraverse": "^5.1.0" + + + }, + + + "dependencies": { + + + "estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true + + + } + + + } + + + }, + + + "esrecurse": { + + + "version": "4.3.0", + + + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + + + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + + + "dev": true, + + + "requires": { + + + "estraverse": "^5.2.0" + + + }, + + + "dependencies": { + + + "estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true + + + } + + + } + + + }, + + + "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 + + + }, + + + "execa": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + + + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + + + "requires": { + + + "cross-spawn": "^7.0.0", + + + "get-stream": "^5.0.0", + + + "human-signals": "^1.1.1", + + + "is-stream": "^2.0.0", + + + "merge-stream": "^2.0.0", + + + "npm-run-path": "^4.0.0", + + + "onetime": "^5.1.0", + + + "signal-exit": "^3.0.2", + + + "strip-final-newline": "^2.0.0" + + + }, + + + "dependencies": { + + + "mimic-fn": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + + + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + + + }, + + + "onetime": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + + + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + + + "requires": { + + + "mimic-fn": "^2.1.0" + + + } + + + } + + + } + + + }, + + + "expand-template": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + + + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + + + "dev": true + + + }, + + + "exponential-backoff": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + + + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + + + "dev": true + + + }, + + + "extend-shallow": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + + + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + + + "requires": { + + + "is-extendable": "^0.1.0" + + + } + + + }, + + + "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" + + + } + + + }, + + + "extract-zip": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + + + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + + + "dev": true, + + + "requires": { + + + "@types/yauzl": "^2.9.1", + + + "debug": "^4.1.1", + + + "get-stream": "^5.1.0", + + + "yauzl": "^2.10.0" + + + } + + + }, + + + "extsprintf": { + + + "version": "1.4.1", + + + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + + + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + + + "dev": true, + + + "optional": true + + + }, + + + "fast-deep-equal": { + + + "version": "3.1.3", + + + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + + + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + + + "dev": true + + + }, + + + "fast-diff": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + + + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + + + "dev": true + + + }, + + + "fast-fifo": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + + + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + + + "dev": true + + + }, + + + "fast-glob": { + + + "version": "3.3.1", + + + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + + + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + + + "requires": { + + + "@nodelib/fs.stat": "^2.0.2", + + + "@nodelib/fs.walk": "^1.2.3", + + + "glob-parent": "^5.1.2", + + + "merge2": "^1.3.0", + + + "micromatch": "^4.0.4" + + + } + + + }, + + + "fast-json-stable-stringify": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + + + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + + + "dev": true + + + }, + + + "fast-levenshtein": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + + + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + + + "dev": true + + + }, + + + "fastq": { + + + "version": "1.15.0", + + + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + + + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + + + "requires": { + + + "reusify": "^1.0.4" + + + } + + + }, + + + "fd-slicer": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + + + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + + + "dev": true, + + + "requires": { + + + "pend": "~1.2.0" + + + } + + + }, + + + "figures": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + + + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + + + "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" + + + } + + + }, + + + "filelist": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + + + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + + + "dev": true, + + + "requires": { + + + "minimatch": "^5.0.1" + + + }, + + + "dependencies": { + + + "brace-expansion": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + + + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + + + "dev": true, + + + "requires": { + + + "balanced-match": "^1.0.0" + + + } + + + }, + + + "minimatch": { + + + "version": "5.1.6", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + + + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + + + "dev": true, + + + "requires": { + + + "brace-expansion": "^2.0.1" + + + } + + + } + + + } + + + }, + + + "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==", + + + "requires": { + + + "to-regex-range": "^5.0.1" + + + } + + + }, + + + "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" + + + } + + + }, + + + "flatted": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + + + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + + + "dev": true + + + }, + + + "for-each": { + + + "version": "0.3.3", + + + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + + + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + + + "dev": true, + + + "requires": { + + + "is-callable": "^1.1.3" + + + } + + + }, + + + "foreground-child": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + + + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + + + "dev": true, + + + "requires": { + + + "cross-spawn": "^7.0.0", + + + "signal-exit": "^4.0.1" + + + }, + + + "dependencies": { + + + "signal-exit": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + + + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + + + "dev": true + + + } + + + } + + + }, + + + "form-data": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + + + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + + + "dev": true, + + + "requires": { + + + "asynckit": "^0.4.0", + + + "combined-stream": "^1.0.8", + + + "mime-types": "^2.1.12" + + + } + + + }, + + + "formidable": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + + + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + + + "requires": { + + + "dezalgo": "^1.0.4", + + + "hexoid": "^1.0.0", + + + "once": "^1.4.0", + + + "qs": "^6.11.0" + + + } + + + }, + + + "formstream": { + + + "version": "1.3.1", + + + "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.3.1.tgz", + + + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + + + "requires": { + + + "destroy": "^1.0.4", + + + "mime": "^2.5.2", + + + "pause-stream": "~0.0.11" + + + } + + + }, + + + "fresh": { + + + "version": "0.5.2", + + + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + + + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + + + }, + + + "fs-constants": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + + + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + + + "dev": true + + + }, + + + "fs-extra": { + + + "version": "10.1.0", + + + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + + + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + + + "requires": { + + + "graceful-fs": "^4.2.0", + + + "jsonfile": "^6.0.1", + + + "universalify": "^2.0.0" + + + } + + + }, + + + "fs-minipass": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + + + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + + + "dev": true, + + + "requires": { + + + "minipass": "^7.0.3" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true + + + } + + + } + + + }, + + + "fs.realpath": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + + + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + + + }, + + + "fsevents": { + + + "version": "2.3.3", + + + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + + + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + + + "dev": true, + + + "optional": true + + + }, + + + "function-bind": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + + + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + + + }, + + + "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": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + + + "dev": true + + + }, + + + "gauge": { + + + "version": "4.0.4", + + + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + + + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + + + "dev": true, + + + "requires": { + + + "aproba": "^1.0.3 || ^2.0.0", + + + "color-support": "^1.1.3", + + + "console-control-strings": "^1.1.0", + + + "has-unicode": "^2.0.1", + + + "signal-exit": "^3.0.7", + + + "string-width": "^4.2.3", + + + "strip-ansi": "^6.0.1", + + + "wide-align": "^1.1.5" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "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 + + + }, + + + "get-intrinsic": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + + + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + + + "requires": { + + + "function-bind": "^1.1.1", + + + "has": "^1.0.3", + + + "has-proto": "^1.0.1", + + + "has-symbols": "^1.0.3" + + + } + + + }, + + + "get-stream": { + + + "version": "5.2.0", + + + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + + + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + + + "requires": { + + + "pump": "^3.0.0" + + + } + + + }, + + + "github-from-package": { + + + "version": "0.0.0", + + + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + + + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + + + "dev": true + + + }, + + + "glob": { + + + "version": "7.2.3", + + + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + + + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + + + "requires": { + + + "fs.realpath": "^1.0.0", + + + "inflight": "^1.0.4", + + + "inherits": "2", + + + "minimatch": "^3.1.1", + + + "once": "^1.3.0", + + + "path-is-absolute": "^1.0.0" + + + } + + + }, + + + "glob-parent": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + + + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + + + "requires": { + + + "is-glob": "^4.0.1" + + + } + + + }, + + + "global-agent": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + + + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "boolean": "^3.0.1", + + + "es6-error": "^4.1.1", + + + "matcher": "^3.0.0", + + + "roarr": "^2.15.3", + + + "semver": "^7.3.2", + + + "serialize-error": "^7.0.1" + + + } + + + }, + + + "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.3", + + + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + + + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "define-properties": "^1.1.3" + + + } + + + }, + + + "globby": { + + + "version": "10.0.2", + + + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + + + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + + + "requires": { + + + "@types/glob": "^7.1.1", + + + "array-union": "^2.1.0", + + + "dir-glob": "^3.0.1", + + + "fast-glob": "^3.0.3", + + + "glob": "^7.1.3", + + + "ignore": "^5.1.1", + + + "merge2": "^1.2.3", + + + "slash": "^3.0.0" + + + }, + + + "dependencies": { + + + "ignore": { + + + "version": "5.2.4", + + + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + + + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + + + } + + + } + + + }, + + + "gopd": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + + + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + + + "dev": true, + + + "requires": { + + + "get-intrinsic": "^1.1.3" + + + } + + + }, + + + "got": { + + + "version": "11.8.6", + + + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + + + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + + + "dev": true, + + + "requires": { + + + "@sindresorhus/is": "^4.0.0", + + + "@szmarczak/http-timer": "^4.0.5", + + + "@types/cacheable-request": "^6.0.1", + + + "@types/responselike": "^1.0.0", + + + "cacheable-lookup": "^5.0.3", + + + "cacheable-request": "^7.0.2", + + + "decompress-response": "^6.0.0", + + + "http2-wrapper": "^1.0.0-beta.5.2", + + + "lowercase-keys": "^2.0.0", + + + "p-cancelable": "^2.0.0", + + + "responselike": "^2.0.0" + + + } + + + }, + + + "graceful-fs": { + + + "version": "4.2.11", + + + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + + + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + + + }, + + + "graceful-readlink": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + + + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + + + "dev": true + + + }, + + + "has": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + + + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==" + + + }, + + + "has-flag": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + + + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + + + }, + + + "has-property-descriptors": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + + + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + + + "dev": true, + + + "requires": { + + + "get-intrinsic": "^1.1.1" + + + } + + + }, + + + "has-proto": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + + + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + + + }, + + + "has-symbols": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + + + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + + + }, + + + "has-tostringtag": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + + + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + + + "requires": { + + + "has-symbols": "^1.0.2" + + + } + + + }, + + + "has-unicode": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + + + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + + + "dev": true + + + }, + + + "hexoid": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + + + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" + + + }, + + + "hosted-git-info": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + + + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + + + "dev": true, + + + "requires": { + + + "lru-cache": "^6.0.0" + + + } + + + }, + + + "http-assert": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + + + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + + + "requires": { + + + "deep-equal": "~1.0.1", + + + "http-errors": "~1.8.0" + + + } + + + }, + + + "http-cache-semantics": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + + + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + + + "dev": true + + + }, + + + "http-errors": { + + + "version": "1.8.1", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + + + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + + + "requires": { + + + "depd": "~1.1.2", + + + "inherits": "2.0.4", + + + "setprototypeof": "1.2.0", + + + "statuses": ">= 1.5.0 < 2", + + + "toidentifier": "1.0.1" + + + }, + + + "dependencies": { + + + "depd": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + + + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + + + } + + + } + + + }, + + + "http-proxy-agent": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + + + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + + + "dev": true, + + + "requires": { + + + "@tootallnate/once": "2", + + + "agent-base": "6", + + + "debug": "4" + + + } + + + }, + + + "http2-wrapper": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + + + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + + + "dev": true, + + + "requires": { + + + "quick-lru": "^5.1.1", + + + "resolve-alpn": "^1.0.0" + + + } + + + }, + + + "https-proxy-agent": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + + + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + + + "dev": true, + + + "requires": { + + + "agent-base": "6", + + + "debug": "4" + + + } + + + }, + + + "human-signals": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + + + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + + + }, + + + "humanize-ms": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + + + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + + + "requires": { + + + "ms": "^2.0.0" + + + } + + + }, + + + "icon-gen": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/icon-gen/-/icon-gen-4.0.0.tgz", + + + "integrity": "sha512-31B1AFpMHeVxrx0IWr8ch17+SHHsdPLxr293ZhefHA+WaNW20vZUfr/3GfTN/oV3DuO+yphgwMvZc78/bzfA4g==", + + + "dev": true, + + + "requires": { + + + "commander": "^8.3.0", + + + "pngjs": "^7.0.0", + + + "sharp": "^0.32.4" + + + }, + + + "dependencies": { + + + "commander": { + + + "version": "8.3.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + + + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + + + "dev": true + + + } + + + } + + + }, + + + "iconv-corefoundation": { + + + "version": "1.1.7", + + + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + + + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "cli-truncate": "^2.1.0", + + + "node-addon-api": "^1.6.3" + + + } + + + }, + + + "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" + + + } + + + }, + + + "ieee754": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + + + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + + + "dev": true + + + }, + + + "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 + + + }, + + + "ignore-by-default": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + + + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + + + "dev": true + + + }, + + + "import-fresh": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + + + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + + + "dev": true, + + + "requires": { + + + "parent-module": "^1.0.0", + + + "resolve-from": "^4.0.0" + + + } + + + }, + + + "imurmurhash": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + + + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + + + "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 + + + }, + + + "inflation": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + + + "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + + + }, + + + "inflight": { + + + "version": "1.0.6", + + + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + + + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + + + "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.8", + + + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + + + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + + + "dev": true + + + }, + + + "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": { + + + "ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^1.9.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" + + + } + + + }, + + + "color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "dev": true + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true + + + }, + + + "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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + + + "dev": true + + + }, + + + "string-width": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + + + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + + + "dev": true, + + + "requires": { + + + "is-fullwidth-code-point": "^2.0.0", + + + "strip-ansi": "^4.0.0" + + + }, + + + "dependencies": { + + + "strip-ansi": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + + + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^3.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.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + + + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + + + "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==", + + + "dev": true, + + + "requires": { + + + "has-flag": "^3.0.0" + + + } + + + } + + + } + + + }, + + + "inversify": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz", + + + "integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==", + + + "dev": true + + + }, + + + "ip": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + + + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + + + "dev": true + + + }, + + + "is-arguments": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + + + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + + + "dev": true, + + + "requires": { + + + "call-bind": "^1.0.2", + + + "has-tostringtag": "^1.0.0" + + + } + + + }, + + + "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 + + + }, + + + "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": "1.1.6", + + + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + + + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + + + "dev": true + + + }, + + + "is-callable": { + + + "version": "1.2.7", + + + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + + + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + + + "dev": true + + + }, + + + "is-ci": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + + + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + + + "dev": true, + + + "requires": { + + + "ci-info": "^3.2.0" + + + } + + + }, + + + "is-class-hotfix": { + + + "version": "0.0.6", + + + "resolved": "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + + + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + + + }, + + + "is-extendable": { + + + "version": "0.1.1", + + + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + + + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + + + }, + + + "is-extglob": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + + + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + + + }, + + + "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 + + + }, + + + "is-generator-function": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + + + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + + + "requires": { + + + "has-tostringtag": "^1.0.0" + + + } + + + }, + + + "is-glob": { + + + "version": "4.0.3", + + + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + + + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + + + "requires": { + + + "is-extglob": "^2.1.1" + + + } + + + }, + + + "is-interactive": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + + + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + + + "dev": true + + + }, + + + "is-lambda": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + + + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + + + "dev": true + + + }, + + + "is-nan": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + + + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + + + "dev": true, + + + "requires": { + + + "call-bind": "^1.0.0", + + + "define-properties": "^1.1.3" + + + } + + + }, + + + "is-number": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + + + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + + + }, + + + "is-stream": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + + + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + + + }, + + + "is-type-of": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/is-type-of/-/is-type-of-1.4.0.tgz", + + + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + + + "requires": { + + + "core-util-is": "^1.0.2", + + + "is-class-hotfix": "~0.0.6", + + + "isstream": "~0.1.2" + + + } + + + }, + + + "is-typed-array": { + + + "version": "1.1.12", + + + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + + + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + + + "dev": true, + + + "requires": { + + + "which-typed-array": "^1.1.11" + + + } + + + }, + + + "is-unicode-supported": { + + + "version": "0.1.0", + + + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + + + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + + + "dev": true + + + }, + + + "isbinaryfile": { + + + "version": "4.0.10", + + + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + + + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + + + "dev": true + + + }, + + + "isexe": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + + + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + + + }, + + + "isstream": { + + + "version": "0.1.2", + + + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + + + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + + + }, + + + "jackspeak": { + + + "version": "2.3.6", + + + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + + + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + + + "dev": true, + + + "requires": { + + + "@isaacs/cliui": "^8.0.2", + + + "@pkgjs/parseargs": "^0.11.0" + + + } + + + }, + + + "jake": { + + + "version": "10.8.7", + + + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + + + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + + + "dev": true, + + + "requires": { + + + "async": "^3.2.3", + + + "chalk": "^4.0.2", + + + "filelist": "^1.0.4", + + + "minimatch": "^3.1.2" + + + } + + + }, + + + "javascript-obfuscator": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz", + + + "integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==", + + + "dev": true, + + + "requires": { + + + "@javascript-obfuscator/escodegen": "2.3.0", + + + "@javascript-obfuscator/estraverse": "5.4.0", + + + "acorn": "8.8.2", + + + "assert": "2.0.0", + + + "chalk": "4.1.2", + + + "chance": "1.1.9", + + + "class-validator": "0.14.0", + + + "commander": "10.0.0", + + + "eslint-scope": "7.1.1", + + + "eslint-visitor-keys": "3.3.0", + + + "fast-deep-equal": "3.1.3", + + + "inversify": "6.0.1", + + + "js-string-escape": "1.0.1", + + + "md5": "2.3.0", + + + "mkdirp": "2.1.3", + + + "multimatch": "5.0.0", + + + "opencollective-postinstall": "2.0.3", + + + "process": "0.11.10", + + + "reflect-metadata": "0.1.13", + + + "source-map-support": "0.5.21", + + + "string-template": "1.0.0", + + + "stringz": "2.1.0", + + + "tslib": "2.5.0" + + + }, + + + "dependencies": { + + + "acorn": { + + + "version": "8.8.2", + + + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + + + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + + + "dev": true + + + }, + + + "commander": { + + + "version": "10.0.0", + + + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + + + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + + + "dev": true + + + }, + + + "eslint-scope": { + + + "version": "7.1.1", + + + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + + + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + + + "dev": true, + + + "requires": { + + + "esrecurse": "^4.3.0", + + + "estraverse": "^5.2.0" + + + } + + + }, + + + "eslint-visitor-keys": { + + + "version": "3.3.0", + + + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + + + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + + + "dev": true + + + }, + + + "estraverse": { + + + "version": "5.3.0", + + + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + + + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + + + "dev": true + + + }, + + + "mkdirp": { + + + "version": "2.1.3", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + + + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + + + "dev": true + + + } + + + } + + + }, + + + "js-string-escape": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + + + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + + + "dev": true + + + }, + + + "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": "4.1.0", + + + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + + + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + + + "requires": { + + + "argparse": "^2.0.1" + + + } + + + }, + + + "json-buffer": { + + + "version": "3.0.1", + + + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + + + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + + + "dev": true + + + }, + + + "json-schema-traverse": { + + + "version": "0.4.1", + + + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + + + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + + + "dev": true + + + }, + + + "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": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + + + "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + + + "dev": true, + + + "optional": true + + + }, + + + "json5": { + + + "version": "2.2.3", + + + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + + + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + + + "dev": true + + + }, + + + "jsonfile": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + + + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + + + "requires": { + + + "graceful-fs": "^4.1.6", + + + "universalify": "^2.0.0" + + + } + + + }, + + + "keygrip": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + + + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + + + "requires": { + + + "tsscmp": "1.0.6" + + + } + + + }, + + + "keyv": { + + + "version": "4.5.4", + + + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + + + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + + + "dev": true, + + + "requires": { + + + "json-buffer": "3.0.1" + + + } + + + }, + + + "koa": { + + + "version": "2.14.2", + + + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + + + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", + + + "requires": { + + + "accepts": "^1.3.5", + + + "cache-content-type": "^1.0.0", + + + "content-disposition": "~0.5.2", + + + "content-type": "^1.0.4", + + + "cookies": "~0.8.0", + + + "debug": "^4.3.2", + + + "delegates": "^1.0.0", + + + "depd": "^2.0.0", + + + "destroy": "^1.0.4", + + + "encodeurl": "^1.0.2", + + + "escape-html": "^1.0.3", + + + "fresh": "~0.5.2", + + + "http-assert": "^1.3.0", + + + "http-errors": "^1.6.3", + + + "is-generator-function": "^1.0.7", + + + "koa-compose": "^4.1.0", + + + "koa-convert": "^2.0.0", + + + "on-finished": "^2.3.0", + + + "only": "~0.0.2", + + + "parseurl": "^1.3.2", + + + "statuses": "^1.5.0", + + + "type-is": "^1.6.16", + + + "vary": "^1.1.2" + + + } + + + }, + + + "koa-body": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-5.0.0.tgz", + + + "integrity": "sha512-nHwEODrQGiyKBILCWO8QSS40C87cKr2cp3y/Cw8u9Z8w5t0CdSkGm3+y9WK5BIAlPpo9tTw5RtSbxpVyG79vmw==", + + + "requires": { + + + "@types/formidable": "^2.0.4", + + + "co-body": "^5.1.1", + + + "formidable": "^2.0.1" + + + } + + + }, + + + "koa-compose": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + + + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + + + }, + + + "koa-convert": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + + + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + + + "requires": { + + + "co": "^4.6.0", + + + "koa-compose": "^4.1.0" + + + } + + + }, + + + "koa-send": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + + + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + + + "requires": { + + + "debug": "^4.1.1", + + + "http-errors": "^1.7.3", + + + "resolve-path": "^1.4.0" + + + } + + + }, + + + "koa-static": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + + + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + + + "requires": { + + + "debug": "^3.1.0", + + + "koa-send": "^5.0.0" + + + }, + + + "dependencies": { + + + "debug": { + + + "version": "3.2.7", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + + + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + + + "requires": { + + + "ms": "^2.1.1" + + + } + + + } + + + } + + + }, + + + "koa2-cors": { + + + "version": "2.0.6", + + + "resolved": "https://registry.npmjs.org/koa2-cors/-/koa2-cors-2.0.6.tgz", + + + "integrity": "sha512-JRCcSM4lamM+8kvKGDKlesYk2ASrmSTczDtGUnIadqMgnHU4Ct5Gw7Bxt3w3m6d6dy3WN0PU4oMP43HbddDEWg==" + + + }, + + + "lazy-val": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + + + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + + + }, + + + "levn": { + + + "version": "0.3.0", + + + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + + + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + + + "dev": true, + + + "requires": { + + + "prelude-ls": "~1.1.2", + + + "type-check": "~0.3.2" + + + } + + + }, + + + "libphonenumber-js": { + + + "version": "1.10.47", + + + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.47.tgz", + + + "integrity": "sha512-b4t7VQDV29xx/ni+58yl9KWPGjnDLDXCeCTLrD4V8vDpObXZRZBrg7uX/HWZ7YXiJKqdBDGgc+barUUTNB6Slw==", + + + "dev": true + + + }, + + + "lodash": { + + + "version": "4.17.21", + + + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + + + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + + + }, + + + "lodash.escaperegexp": { + + + "version": "4.1.2", + + + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + + + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + + + }, + + + "lodash.isequal": { + + + "version": "4.5.0", + + + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + + + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + + + }, + + + "log-symbols": { + + + "version": "4.1.0", + + + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + + + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + + + "dev": true, + + + "requires": { + + + "chalk": "^4.1.0", + + + "is-unicode-supported": "^0.1.0" + + + } + + + }, + + + "loudness": { + + + "version": "0.4.2", + + + "resolved": "https://registry.npmjs.org/loudness/-/loudness-0.4.2.tgz", + + + "integrity": "sha512-D+1opqDjcpAdyv0JVt5KJju/4f6yLs/tqcDj8LCrtZciYMtD4I2I4brByt9nZkfU5bnnnHsLFPtBBDpv2oamkg==", + + + "requires": { + + + "execa": "^4.0.3" + + + } + + + }, + + + "lowercase-keys": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + + + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + + + "dev": true + + + }, + + + "lru-cache": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + + + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + }, + + + "make-fetch-happen": { + + + "version": "11.1.1", + + + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + + + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + + + "dev": true, + + + "requires": { + + + "agentkeepalive": "^4.2.1", + + + "cacache": "^17.0.0", + + + "http-cache-semantics": "^4.1.1", + + + "http-proxy-agent": "^5.0.0", + + + "https-proxy-agent": "^5.0.0", + + + "is-lambda": "^1.0.1", + + + "lru-cache": "^7.7.1", + + + "minipass": "^5.0.0", + + + "minipass-fetch": "^3.0.0", + + + "minipass-flush": "^1.0.5", + + + "minipass-pipeline": "^1.2.4", + + + "negotiator": "^0.6.3", + + + "promise-retry": "^2.0.1", + + + "socks-proxy-agent": "^7.0.0", + + + "ssri": "^10.0.0" + + + }, + + + "dependencies": { + + + "lru-cache": { + + + "version": "7.18.3", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + + + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + + + "dev": true + + + } + + + } + + + }, + + + "matcher": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + + + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "escape-string-regexp": "^4.0.0" + + + }, + + + "dependencies": { + + + "escape-string-regexp": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + + + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + + + "dev": true, + + + "optional": true + + + } + + + } + + + }, + + + "md5": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + + + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + + + "dev": true, + + + "requires": { + + + "charenc": "0.0.2", + + + "crypt": "0.0.2", + + + "is-buffer": "~1.1.6" + + + } + + + }, + + + "media-typer": { + + + "version": "0.3.0", + + + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + + + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + + + }, + + + "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==" + + + }, + + + "merge2": { + + + "version": "1.4.1", + + + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + + + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + + + }, + + + "micromatch": { + + + "version": "4.0.5", + + + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + + + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + + + "requires": { + + + "braces": "^3.0.2", + + + "picomatch": "^2.3.1" + + + } + + + }, + + + "mime": { + + + "version": "2.6.0", + + + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + + + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + + + }, + + + "mime-db": { + + + "version": "1.52.0", + + + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + + + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + + + }, + + + "mime-types": { + + + "version": "2.1.35", + + + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + + + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + + + "requires": { + + + "mime-db": "1.52.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 + + + }, + + + "mimic-response": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + + + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + + + "dev": true + + + }, + + + "minimatch": { + + + "version": "3.1.2", + + + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + + + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + + + "requires": { + + + "brace-expansion": "^1.1.7" + + + } + + + }, + + + "minimist": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + + + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + + + }, + + + "minipass": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + + + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + + + "dev": true + + + }, + + + "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" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "minipass-fetch": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + + + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + + + "dev": true, + + + "requires": { + + + "encoding": "^0.1.13", + + + "minipass": "^7.0.3", + + + "minipass-sized": "^1.0.3", + + + "minizlib": "^2.1.2" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true + + + } + + + } + + + }, + + + "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" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "minipass-pipeline": { + + + "version": "1.2.4", + + + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + + + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + + + "dev": true, + + + "requires": { + + + "minipass": "^3.0.0" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "minipass-sized": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + + + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + + + "dev": true, + + + "requires": { + + + "minipass": "^3.0.0" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "minizlib": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + + + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + + + "dev": true, + + + "requires": { + + + "minipass": "^3.0.0", + + + "yallist": "^4.0.0" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "mkdirp": { + + + "version": "2.1.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + + + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==" + + + }, + + + "mkdirp-classic": { + + + "version": "0.5.3", + + + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + + + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + + + "dev": true + + + }, + + + "modbus-serial": { + + + "version": "8.0.13", + + + "resolved": "https://registry.npmjs.org/modbus-serial/-/modbus-serial-8.0.13.tgz", + + + "integrity": "sha512-h/kEtN2aB4zfMic7H+Afg/LWlb0oHbMzo4cKlebGxUXimpe33TptDy6L9f4o/cg0BQrzEPV72RSH64PX3fgWTw==", + + + "requires": { + + + "debug": "^4.1.1", + + + "serialport": "^11.0.0" + + + }, + + + "dependencies": { + + + "@serialport/bindings-cpp": { + + + "version": "11.0.3", + + + "resolved": "https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-11.0.3.tgz", + + + "integrity": "sha512-xgNDJ7pHHZCJMoDsEH+D8q5CV+V3RGN4/jLEG9SQ7q6kh+o03axV0l/upPHZ0HW4tTXpGgqPIGbXOTrD4RGQQA==", + + + "requires": { + + + "@serialport/bindings-interface": "1.2.2", + + + "@serialport/parser-readline": "11.0.0", + + + "debug": "4.3.4", + + + "node-addon-api": "6.1.0", + + + "node-gyp-build": "4.6.0" + + + }, + + + "dependencies": { + + + "@serialport/parser-delimiter": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz", + + + "integrity": "sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==" + + + }, + + + "@serialport/parser-readline": { + + + "version": "11.0.0", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.0.tgz", + + + "integrity": "sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==", + + + "requires": { + + + "@serialport/parser-delimiter": "11.0.0" + + + } + + + } + + + } + + + }, + + + "@serialport/parser-byte-length": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-11.0.1.tgz", + + + "integrity": "sha512-UsffR5b3NHwhjJzsWv5fZMkoq3wGNyUcRTA9jlu02w+2kMlBRJPzlPVB5szVX0VWUEqkCg+3VaU2XWuYr+uAUA==" + + + }, + + + "@serialport/parser-cctalk": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-cctalk/-/parser-cctalk-11.0.1.tgz", + + + "integrity": "sha512-klzVQfRcC1m0SVDV2Dy9hHfwweO2/mUMUyuXK04FRkKHy5/AdETmk9KTVVVVfpDCSysvHoyQPwiDFq8ddwX3cQ==" + + + }, + + + "@serialport/parser-delimiter": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-delimiter/-/parser-delimiter-11.0.1.tgz", + + + "integrity": "sha512-NAsYa3OFt2xEnj/+0BRkQP2qkRNbXBPEq6uFJEdNdzcTSF+BTRXkoIRrWBq3N6koovPqW6lnbxc/iJYe5AX/2Q==" + + + }, + + + "@serialport/parser-inter-byte-timeout": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-11.0.1.tgz", + + + "integrity": "sha512-PEFV9dSpW+ptH1rLhdB9KgE+rbJ/FvQiZz0mx+4jkv/Po4g3PNsEEMXfMW0aQVSFVsmitvmE0jHlhGjLv8GQEg==" + + + }, + + + "@serialport/parser-packet-length": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-packet-length/-/parser-packet-length-11.0.1.tgz", + + + "integrity": "sha512-KwPu8dsAI+eN4fnUS1vVmrOpUtBK4p9L9cHhwn5ZmfcvwvZMHp/J+IEu7xH0g5aM1/8QEoaql26BQP+sZ71NQQ==" + + + }, + + + "@serialport/parser-readline": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-readline/-/parser-readline-11.0.1.tgz", + + + "integrity": "sha512-wkJ3EI733+yhbi7eBWzs/qn8+cfIBcYQjfrILPNqslAy6VlgdKw+pHoblDFmg78GN0TqGUDSWlTJ65oLEPVp5Q==", + + + "requires": { + + + "@serialport/parser-delimiter": "11.0.1" + + + } + + + }, + + + "@serialport/parser-ready": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-ready/-/parser-ready-11.0.1.tgz", + + + "integrity": "sha512-v/bvlgKhrNt+SVLSqlfXCO1HEinfRRMGnzqbpdVCgu2SiWIEenCLjs51JisKVYQoQFcXdP/EHZnzm7NPXHDlAg==" + + + }, + + + "@serialport/parser-regex": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-regex/-/parser-regex-11.0.1.tgz", + + + "integrity": "sha512-Lf3k7qibYqZ0+/wX3UA8fRng3WtQ+UyLpjQhG1COs6OBSq5/I5tYXczfhlrbA0gHo1qzgzr2V2t7m6FoBSc81Q==" + + + }, + + + "@serialport/parser-slip-encoder": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-slip-encoder/-/parser-slip-encoder-11.0.1.tgz", + + + "integrity": "sha512-l4mXsAGzpmPO7+uqKJqtPDW643irfnGEWbiy34FoYvuOs8n0SmiMtgQZFAtvlTNQCRWE2tykF/WG6K/McJthDw==" + + + }, + + + "@serialport/parser-spacepacket": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/parser-spacepacket/-/parser-spacepacket-11.0.1.tgz", + + + "integrity": "sha512-Lq7fXoOsLOMo4XEt9HB31zV5LhrteXlsOy2o6r39TfRwU6x8Nou9jQMA9vW0a6yPra5zwsHIaNrA6tDOGj2Ozg==" + + + }, + + + "@serialport/stream": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/@serialport/stream/-/stream-11.0.1.tgz", + + + "integrity": "sha512-6pjyKRg8MQuvhGfg36+PF7K5eGNQcEswCSiAg1UPilqqFS8X1QnaiSCn5UFp/hCN+pAtlFjkOi0ztvtmSI7n4g==", + + + "requires": { + + + "@serialport/bindings-interface": "1.2.2", + + + "debug": "4.3.4" + + + } + + + }, + + + "node-addon-api": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + + + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + + + }, + + + "serialport": { + + + "version": "11.0.1", + + + "resolved": "https://registry.npmjs.org/serialport/-/serialport-11.0.1.tgz", + + + "integrity": "sha512-j/ntDuewAkqL6g5wKjwV2RTyLBL9cpob8aRd3yLAViYApTsJoYqRleyuzst0OboNTBjBsoxQ4YKYhuYHi1XViQ==", + + + "requires": { + + + "@serialport/binding-mock": "10.2.2", + + + "@serialport/bindings-cpp": "11.0.3", + + + "@serialport/parser-byte-length": "11.0.1", + + + "@serialport/parser-cctalk": "11.0.1", + + + "@serialport/parser-delimiter": "11.0.1", + + + "@serialport/parser-inter-byte-timeout": "11.0.1", + + + "@serialport/parser-packet-length": "11.0.1", + + + "@serialport/parser-readline": "11.0.1", + + + "@serialport/parser-ready": "11.0.1", + + + "@serialport/parser-regex": "11.0.1", + + + "@serialport/parser-slip-encoder": "11.0.1", + + + "@serialport/parser-spacepacket": "11.0.1", + + + "@serialport/stream": "11.0.1", + + + "debug": "4.3.4" + + + } + + + } + + + } + + + }, + + + "moment": { + + + "version": "2.29.4", + + + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + + + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + + + }, + + + "ms": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + + + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + + + }, + + + "multimatch": { + + + "version": "5.0.0", + + + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + + + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + + + "dev": true, + + + "requires": { + + + "@types/minimatch": "^3.0.3", + + + "array-differ": "^3.0.0", + + + "array-union": "^2.1.0", + + + "arrify": "^2.0.1", + + + "minimatch": "^3.0.4" + + + }, + + + "dependencies": { + + + "@types/minimatch": { + + + "version": "3.0.5", + + + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + + + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + + + "dev": true + + + } + + + } + + + }, + + + "mute-stream": { + + + "version": "0.0.7", + + + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + + + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + + + "dev": true + + + }, + + + "mz": { + + + "version": "2.7.0", + + + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + + + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + + + "requires": { + + + "any-promise": "^1.0.0", + + + "object-assign": "^4.0.1", + + + "thenify-all": "^1.0.0" + + + } + + + }, + + + "napi-build-utils": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + + + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + + + "dev": true + + + }, + + + "natural-compare": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + + + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + + + "dev": true + + + }, + + + "negotiator": { + + + "version": "0.6.3", + + + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + + + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + + + }, + + + "nice-try": { + + + "version": "1.0.5", + + + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + + + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + + + "dev": true + + + }, + + + "node-abi": { + + + "version": "3.50.0", + + + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.50.0.tgz", + + + "integrity": "sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA==", + + + "dev": true, + + + "requires": { + + + "semver": "^7.3.5" + + + } + + + }, + + + "node-addon-api": { + + + "version": "1.7.2", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + + + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + + + "dev": true, + + + "optional": true + + + }, + + + "node-api-version": { + + + "version": "0.1.4", + + + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", + + + "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + + + "dev": true, + + + "requires": { + + + "semver": "^7.3.5" + + + } + + + }, + + + "node-gyp": { + + + "version": "9.4.0", + + + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + + + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + + + "dev": true, + + + "requires": { + + + "env-paths": "^2.2.0", + + + "exponential-backoff": "^3.1.1", + + + "glob": "^7.1.4", + + + "graceful-fs": "^4.2.6", + + + "make-fetch-happen": "^11.0.3", + + + "nopt": "^6.0.0", + + + "npmlog": "^6.0.0", + + + "rimraf": "^3.0.2", + + + "semver": "^7.3.5", + + + "tar": "^6.1.2", + + + "which": "^2.0.2" + + + }, + + + "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" + + + } + + + } + + + } + + + }, + + + "node-gyp-build": { + + + "version": "4.6.0", + + + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + + + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" + + + }, + + + "nodemon": { + + + "version": "2.0.22", + + + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + + + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + + + "dev": true, + + + "requires": { + + + "chokidar": "^3.5.2", + + + "debug": "^3.2.7", + + + "ignore-by-default": "^1.0.1", + + + "minimatch": "^3.1.2", + + + "pstree.remy": "^1.1.8", + + + "semver": "^5.7.1", + + + "simple-update-notifier": "^1.0.7", + + + "supports-color": "^5.5.0", + + + "touch": "^3.1.0", + + + "undefsafe": "^2.0.5" + + + }, + + + "dependencies": { + + + "debug": { + + + "version": "3.2.7", + + + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + + + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + + + "dev": true, + + + "requires": { + + + "ms": "^2.1.1" + + + } + + + }, + + + "has-flag": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + + + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + + "dev": true + + + }, + + + "semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + + + "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==", + + + "dev": true, + + + "requires": { + + + "has-flag": "^3.0.0" + + + } + + + } + + + } + + + }, + + + "nopt": { + + + "version": "6.0.0", + + + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + + + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + + + "dev": true, + + + "requires": { + + + "abbrev": "^1.0.0" + + + } + + + }, + + + "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-url": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + + + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + + + "dev": true + + + }, + + + "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" + + + } + + + }, + + + "npm-run-path": { + + + "version": "4.0.1", + + + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + + + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + + + "requires": { + + + "path-key": "^3.0.0" + + + } + + + }, + + + "npmlog": { + + + "version": "6.0.2", + + + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + + + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + + + "dev": true, + + + "requires": { + + + "are-we-there-yet": "^3.0.0", + + + "console-control-strings": "^1.1.0", + + + "gauge": "^4.0.3", + + + "set-blocking": "^2.0.0" + + + } + + + }, + + + "object-assign": { + + + "version": "4.1.1", + + + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + + + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + + + }, + + + "object-inspect": { + + + "version": "1.12.3", + + + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + + + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + + + }, + + + "object-is": { + + + "version": "1.1.5", + + + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + + + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + + + "dev": true, + + + "requires": { + + + "call-bind": "^1.0.2", + + + "define-properties": "^1.1.3" + + + } + + + }, + + + "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 + + + }, + + + "on-finished": { + + + "version": "2.4.1", + + + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + + + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + + + "requires": { + + + "ee-first": "1.1.1" + + + } + + + }, + + + "once": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + + + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + + + "requires": { + + + "wrappy": "1" + + + } + + + }, + + + "onetime": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + + + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + + + "dev": true, + + + "requires": { + + + "mimic-fn": "^1.0.0" + + + } + + + }, + + + "only": { + + + "version": "0.0.2", + + + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + + + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + + + }, + + + "opencollective-postinstall": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + + + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + + + "dev": true + + + }, + + + "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": "5.4.1", + + + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + + + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + + + "dev": true, + + + "requires": { + + + "bl": "^4.1.0", + + + "chalk": "^4.1.0", + + + "cli-cursor": "^3.1.0", + + + "cli-spinners": "^2.5.0", + + + "is-interactive": "^1.0.0", + + + "is-unicode-supported": "^0.1.0", + + + "log-symbols": "^4.1.0", + + + "strip-ansi": "^6.0.0", + + + "wcwidth": "^1.0.1" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "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" + + + } + + + }, + + + "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 + + + }, + + + "onetime": { + + + "version": "5.1.2", + + + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + + + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + + + "dev": true, + + + "requires": { + + + "mimic-fn": "^2.1.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" + + + } + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "os-name": { + + + "version": "1.0.3", + + + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + + + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + + + "requires": { + + + "osx-release": "^1.0.0", + + + "win-release": "^1.0.0" + + + } + + + }, + + + "os-tmpdir": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + + + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + + + "dev": true + + + }, + + + "osx-release": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + + + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + + + "requires": { + + + "minimist": "^1.1.0" + + + } + + + }, + + + "p-cancelable": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + + + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + + + "dev": true + + + }, + + + "p-map": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + + + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + + + "dev": true, + + + "requires": { + + + "aggregate-error": "^3.0.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" + + + } + + + }, + + + "parseurl": { + + + "version": "1.3.3", + + + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + + + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + + + }, + + + "path-is-absolute": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + + + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + + + }, + + + "path-is-inside": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + + + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + + + "dev": true + + + }, + + + "path-key": { + + + "version": "3.1.1", + + + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + + + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + + + }, + + + "path-scurry": { + + + "version": "1.10.1", + + + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + + + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + + + "dev": true, + + + "requires": { + + + "lru-cache": "^9.1.1 || ^10.0.0", + + + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + + + }, + + + "dependencies": { + + + "lru-cache": { + + + "version": "10.0.1", + + + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + + + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + + + "dev": true + + + } + + + } + + + }, + + + "path-type": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + + + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + + + }, + + + "pause-stream": { + + + "version": "0.0.11", + + + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + + + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + + + "requires": { + + + "through": "~2.3" + + + } + + + }, + + + "pend": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + + + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + + + "dev": true + + + }, + + + "picomatch": { + + + "version": "2.3.1", + + + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + + + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + + + }, + + + "pify": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + + + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + + + "dev": true, + + + "optional": true + + + }, + + + "plist": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + + + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + + + "dev": true, + + + "requires": { + + + "@xmldom/xmldom": "^0.8.8", + + + "base64-js": "^1.5.1", + + + "xmlbuilder": "^15.1.1" + + + } + + + }, + + + "pngjs": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + + + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + + + "dev": true + + + }, + + + "prebuild-install": { + + + "version": "7.1.1", + + + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + + + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + + + "dev": true, + + + "requires": { + + + "detect-libc": "^2.0.0", + + + "expand-template": "^2.0.3", + + + "github-from-package": "0.0.0", + + + "minimist": "^1.2.3", + + + "mkdirp-classic": "^0.5.3", + + + "napi-build-utils": "^1.0.1", + + + "node-abi": "^3.3.0", + + + "pump": "^3.0.0", + + + "rc": "^1.2.7", + + + "simple-get": "^4.0.0", + + + "tar-fs": "^2.0.0", + + + "tunnel-agent": "^0.6.0" + + + }, + + + "dependencies": { + + + "chownr": { + + + "version": "1.1.4", + + + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + + + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + + + "dev": true + + + }, + + + "tar-fs": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + + + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + + + "dev": true, + + + "requires": { + + + "chownr": "^1.1.1", + + + "mkdirp-classic": "^0.5.2", + + + "pump": "^3.0.0", + + + "tar-stream": "^2.1.4" + + + } + + + }, + + + "tar-stream": { + + + "version": "2.2.0", + + + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + + + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + + + "dev": true, + + + "requires": { + + + "bl": "^4.0.3", + + + "end-of-stream": "^1.4.1", + + + "fs-constants": "^1.0.0", + + + "inherits": "^2.0.3", + + + "readable-stream": "^3.1.1" + + + } + + + } + + + } + + + }, + + + "prelude-ls": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + + + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + + + "dev": true + + + }, + + + "prepend-http": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + + + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + + + "dev": true + + + }, + + + "prettier": { + + + "version": "3.0.3", + + + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + + + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + + + "dev": true, + + + "peer": true + + + }, + + + "prettier-linter-helpers": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + + + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + + + "dev": true, + + + "requires": { + + + "fast-diff": "^1.1.2" + + + } + + + }, + + + "process": { + + + "version": "0.11.10", + + + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + + + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + + + "dev": true + + + }, + + + "progress": { + + + "version": "2.0.3", + + + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + + + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + + + "dev": true + + + }, + + + "promise-retry": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + + + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + + + "dev": true, + + + "requires": { + + + "err-code": "^2.0.2", + + + "retry": "^0.12.0" + + + } + + + }, + + + "proto-list": { + + + "version": "1.2.4", + + + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + + + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + + + "dev": true, + + + "optional": true + + + }, + + + "pstree.remy": { + + + "version": "1.1.8", + + + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + + + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + + + "dev": true + + + }, + + + "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" + + + } + + + }, + + + "punycode": { + + + "version": "2.3.0", + + + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + + + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + + + "dev": true + + + }, + + + "qs": { + + + "version": "6.11.2", + + + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + + + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + + + "requires": { + + + "side-channel": "^1.0.4" + + + } + + + }, + + + "queue-microtask": { + + + "version": "1.2.3", + + + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + + + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + + + }, + + + "queue-tick": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + + + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + + + "dev": true + + + }, + + + "quick-lru": { + + + "version": "5.1.1", + + + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + + + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + + + "dev": true + + + }, + + + "randombytes": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + + + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + + + "requires": { + + + "safe-buffer": "^5.1.0" + + + } + + + }, + + + "raw-body": { + + + "version": "2.5.2", + + + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + + + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + + + "requires": { + + + "bytes": "3.1.2", + + + "http-errors": "2.0.0", + + + "iconv-lite": "0.4.24", + + + "unpipe": "1.0.0" + + + }, + + + "dependencies": { + + + "http-errors": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + + + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + + + "requires": { + + + "depd": "2.0.0", + + + "inherits": "2.0.4", + + + "setprototypeof": "1.2.0", + + + "statuses": "2.0.1", + + + "toidentifier": "1.0.1" + + + } + + + }, + + + "statuses": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + + + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + + + } + + + } + + + }, + + + "rc": { + + + "version": "1.2.8", + + + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + + + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + + + "dev": true, + + + "requires": { + + + "deep-extend": "^0.6.0", + + + "ini": "~1.3.0", + + + "minimist": "^1.2.0", + + + "strip-json-comments": "~2.0.1" + + + } + + + }, + + + "read-config-file": { + + + "version": "6.2.0", + + + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + + + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + + + "dev": true, + + + "requires": { + + + "dotenv": "^9.0.2", + + + "dotenv-expand": "^5.1.0", + + + "js-yaml": "^4.1.0", + + + "json5": "^2.2.0", + + + "lazy-val": "^1.0.4" + + + } + + + }, + + + "readable-stream": { + + + "version": "3.6.2", + + + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + + + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + + + "dev": true, + + + "requires": { + + + "inherits": "^2.0.3", + + + "string_decoder": "^1.1.1", + + + "util-deprecate": "^1.0.1" + + + } + + + }, + + + "readdirp": { + + + "version": "3.6.0", + + + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + + + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + + + "dev": true, + + + "requires": { + + + "picomatch": "^2.2.1" + + + } + + + }, + + + "reflect-metadata": { + + + "version": "0.1.13", + + + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + + + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + + + "dev": true + + + }, + + + "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 + + + }, + + + "require-directory": { + + + "version": "2.1.1", + + + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + + + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + + + "dev": true + + + }, + + + "resolve-alpn": { + + + "version": "1.2.1", + + + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + + + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + + + "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 + + + }, + + + "resolve-path": { + + + "version": "1.4.0", + + + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + + + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + + + "requires": { + + + "http-errors": "~1.6.2", + + + "path-is-absolute": "1.0.1" + + + }, + + + "dependencies": { + + + "depd": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + + + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + + + }, + + + "http-errors": { + + + "version": "1.6.3", + + + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + + + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + + + "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + + + }, + + + "setprototypeof": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + + + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + + + } + + + } + + + }, + + + "responselike": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + + + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + + + "dev": true, + + + "requires": { + + + "lowercase-keys": "^2.0.0" + + + } + + + }, + + + "restore-cursor": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + + + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + + + "dev": true, + + + "requires": { + + + "onetime": "^2.0.0", + + + "signal-exit": "^3.0.2" + + + } + + + }, + + + "retry": { + + + "version": "0.12.0", + + + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + + + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + + + "dev": true + + + }, + + + "reusify": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + + + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + + + }, + + + "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" + + + } + + + }, + + + "roarr": { + + + "version": "2.15.4", + + + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + + + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "boolean": "^3.0.1", + + + "detect-node": "^2.0.4", + + + "globalthis": "^1.0.1", + + + "json-stringify-safe": "^5.0.1", + + + "semver-compare": "^1.0.0", + + + "sprintf-js": "^1.1.2" + + + } + + + }, + + + "run-async": { + + + "version": "2.4.1", + + + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + + + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + + + "dev": true + + + }, + + + "run-parallel": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + + + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + + + "requires": { + + + "queue-microtask": "^1.2.2" + + + } + + + }, + + + "rxjs": { + + + "version": "6.6.7", + + + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + + + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + + + "devOptional": true, + + + "requires": { + + + "tslib": "^1.9.0" + + + }, + + + "dependencies": { + + + "tslib": { + + + "version": "1.14.1", + + + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + + + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + + + "devOptional": true + + + } + + + } + + + }, + + + "safe-buffer": { + + + "version": "5.2.1", + + + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + + + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + + + }, + + + "safer-buffer": { + + + "version": "2.1.2", + + + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + + + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + + + }, + + + "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==", + + + "dev": true, + + + "requires": { + + + "truncate-utf8-bytes": "^1.0.0" + + + } + + + }, + + + "sax": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + + + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + + + }, + + + "semver": { + + + "version": "7.5.4", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + + + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + + + "requires": { + + + "lru-cache": "^6.0.0" + + + } + + + }, + + + "semver-compare": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + + + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + + + "dev": true, + + + "optional": true + + + }, + + + "serialize-error": { + + + "version": "7.0.1", + + + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + + + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "type-fest": "^0.13.1" + + + } + + + }, + + + "serialize-javascript": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + + + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + + + "requires": { + + + "randombytes": "^2.1.0" + + + } + + + }, + + + "serialport": { + + + "version": "12.0.0", + + + "resolved": "https://registry.npmjs.org/serialport/-/serialport-12.0.0.tgz", + + + "integrity": "sha512-AmH3D9hHPFmnF/oq/rvigfiAouAKyK/TjnrkwZRYSFZxNggJxwvbAbfYrLeuvq7ktUdhuHdVdSjj852Z55R+uA==", + + + "requires": { + + + "@serialport/binding-mock": "10.2.2", + + + "@serialport/bindings-cpp": "12.0.1", + + + "@serialport/parser-byte-length": "12.0.0", + + + "@serialport/parser-cctalk": "12.0.0", + + + "@serialport/parser-delimiter": "12.0.0", + + + "@serialport/parser-inter-byte-timeout": "12.0.0", + + + "@serialport/parser-packet-length": "12.0.0", + + + "@serialport/parser-readline": "12.0.0", + + + "@serialport/parser-ready": "12.0.0", + + + "@serialport/parser-regex": "12.0.0", + + + "@serialport/parser-slip-encoder": "12.0.0", + + + "@serialport/parser-spacepacket": "12.0.0", + + + "@serialport/stream": "12.0.0", + + + "debug": "4.3.4" + + + } + + + }, + + + "set-blocking": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + + + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + + + "dev": true + + + }, + + + "setprototypeof": { + + + "version": "1.2.0", + + + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + + + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + + + }, + + + "sharp": { + + + "version": "0.32.6", + + + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + + + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + + + "dev": true, + + + "requires": { + + + "color": "^4.2.3", + + + "detect-libc": "^2.0.2", + + + "node-addon-api": "^6.1.0", + + + "prebuild-install": "^7.1.1", + + + "semver": "^7.5.4", + + + "simple-get": "^4.0.1", + + + "tar-fs": "^3.0.4", + + + "tunnel-agent": "^0.6.0" + + + }, + + + "dependencies": { + + + "node-addon-api": { + + + "version": "6.1.0", + + + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + + + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + + + "dev": true + + + } + + + } + + + }, + + + "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==", + + + "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==" + + + }, + + + "side-channel": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + + + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + + + "requires": { + + + "call-bind": "^1.0.0", + + + "get-intrinsic": "^1.0.2", + + + "object-inspect": "^1.9.0" + + + } + + + }, + + + "signal-exit": { + + + "version": "3.0.7", + + + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + + + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + + + }, + + + "simple-concat": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + + + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + + + "dev": true + + + }, + + + "simple-get": { + + + "version": "4.0.1", + + + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + + + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + + + "dev": true, + + + "requires": { + + + "decompress-response": "^6.0.0", + + + "once": "^1.3.1", + + + "simple-concat": "^1.0.0" + + + } + + + }, + + + "simple-swizzle": { + + + "version": "0.2.2", + + + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + + + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + + + "dev": true, + + + "requires": { + + + "is-arrayish": "^0.3.1" + + + } + + + }, + + + "simple-update-notifier": { + + + "version": "1.1.0", + + + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + + + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + + + "dev": true, + + + "requires": { + + + "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 + + + } + + + } + + + }, + + + "slash": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + + + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + + + }, + + + "slice-ansi": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + + + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "ansi-styles": "^4.0.0", + + + "astral-regex": "^2.0.0", + + + "is-fullwidth-code-point": "^3.0.0" + + + } + + + }, + + + "smart-buffer": { + + + "version": "4.2.0", + + + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + + + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + + + "dev": true + + + }, + + + "socket.io": { + + + "version": "4.7.2", + + + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + + + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", + + + "requires": { + + + "accepts": "~1.3.4", + + + "base64id": "~2.0.0", + + + "cors": "~2.8.5", + + + "debug": "~4.3.2", + + + "engine.io": "~6.5.2", + + + "socket.io-adapter": "~2.5.2", + + + "socket.io-parser": "~4.2.4" + + + } + + + }, + + + "socket.io-adapter": { + + + "version": "2.5.2", + + + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + + + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + + + "requires": { + + + "ws": "~8.11.0" + + + } + + + }, + + + "socket.io-client": { + + + "version": "4.7.2", + + + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + + + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + + + "requires": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.2", + + + "engine.io-client": "~6.5.2", + + + "socket.io-parser": "~4.2.4" + + + } + + + }, + + + "socket.io-parser": { + + + "version": "4.2.4", + + + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + + + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + + + "requires": { + + + "@socket.io/component-emitter": "~3.1.0", + + + "debug": "~4.3.1" + + + } + + + }, + + + "socks": { + + + "version": "2.7.1", + + + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + + + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + + + "dev": true, + + + "requires": { + + + "ip": "^2.0.0", + + + "smart-buffer": "^4.2.0" + + + } + + + }, + + + "socks-proxy-agent": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + + + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + + + "dev": true, + + + "requires": { + + + "agent-base": "^6.0.2", + + + "debug": "^4.3.3", + + + "socks": "^2.6.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 + + + }, + + + "source-map-support": { + + + "version": "0.5.21", + + + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + + + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + + + "dev": true, + + + "requires": { + + + "buffer-from": "^1.0.0", + + + "source-map": "^0.6.0" + + + } + + + }, + + + "sprintf-js": { + + + "version": "1.1.3", + + + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + + + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + + + "dev": true, + + + "optional": true + + + }, + + + "ssri": { + + + "version": "10.0.5", + + + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + + + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + + + "dev": true, + + + "requires": { + + + "minipass": "^7.0.3" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "7.0.4", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + + + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + + + "dev": true + + + } + + + } + + + }, + + + "stat-mode": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + + + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + + + "dev": true + + + }, + + + "statuses": { + + + "version": "1.5.0", + + + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + + + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + + + }, + + + "streamx": { + + + "version": "2.15.5", + + + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", + + + "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + + + "dev": true, + + + "requires": { + + + "fast-fifo": "^1.1.0", + + + "queue-tick": "^1.0.1" + + + } + + + }, + + + "string_decoder": { + + + "version": "1.3.0", + + + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + + + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + + + "dev": true, + + + "requires": { + + + "safe-buffer": "~5.2.0" + + + } + + + }, + + + "string-template": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", + + + "integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==", + + + "dev": true + + + }, + + + "string-width": { + + + "version": "4.2.3", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + "dev": true, + + + "requires": { + + + "emoji-regex": "^8.0.0", + + + "is-fullwidth-code-point": "^3.0.0", + + + "strip-ansi": "^6.0.1" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "string-width-cjs": { + + + "version": "npm:string-width@4.2.3", + + + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + + + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + + + "dev": true, + + + "requires": { + + + "emoji-regex": "^8.0.0", + + + "is-fullwidth-code-point": "^3.0.0", + + + "strip-ansi": "^6.0.1" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "stringz": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/stringz/-/stringz-2.1.0.tgz", + + + "integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==", + + + "dev": true, + + + "requires": { + + + "char-regex": "^1.0.2" + + + } + + + }, + + + "strip-ansi": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + + + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^3.0.0" + + + } + + + }, + + + "strip-ansi-cjs": { + + + "version": "npm:strip-ansi@6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + } + + + } + + + }, + + + "strip-final-newline": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + + + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + + + }, + + + "strip-json-comments": { + + + "version": "2.0.1", + + + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + + + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + + + "dev": true + + + }, + + + "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" + + + } + + + }, + + + "supports-color": { + + + "version": "7.2.0", + + + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + + + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + + + "requires": { + + + "has-flag": "^4.0.0" + + + } + + + }, + + + "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.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + + + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + + + "dev": true + + + }, + + + "ansi-styles": { + + + "version": "3.2.1", + + + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + + + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + + + "dev": true, + + + "requires": { + + + "color-convert": "^1.9.0" + + + } + + + }, + + + "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 + + + }, + + + "color-convert": { + + + "version": "1.9.3", + + + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + + + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + + "dev": true, + + + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + + + "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 + + + }, + + + "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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + + + "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" + + + } + + + }, + + + "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" + + + } + + + } + + + } + + + }, + + + "tar": { + + + "version": "6.2.0", + + + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + + + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + + + "dev": true, + + + "requires": { + + + "chownr": "^2.0.0", + + + "fs-minipass": "^2.0.0", + + + "minipass": "^5.0.0", + + + "minizlib": "^2.1.1", + + + "mkdirp": "^1.0.3", + + + "yallist": "^4.0.0" + + + }, + + + "dependencies": { + + + "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" + + + }, + + + "dependencies": { + + + "minipass": { + + + "version": "3.3.6", + + + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + + + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + + + "dev": true, + + + "requires": { + + + "yallist": "^4.0.0" + + + } + + + } + + + } + + + }, + + + "mkdirp": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + + + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + + + "dev": true + + + } + + + } + + + }, + + + "tar-fs": { + + + "version": "3.0.4", + + + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + + + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + + + "dev": true, + + + "requires": { + + + "mkdirp-classic": "^0.5.2", + + + "pump": "^3.0.0", + + + "tar-stream": "^3.1.5" + + + } + + + }, + + + "tar-stream": { + + + "version": "3.1.6", + + + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + + + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + + + "dev": true, + + + "requires": { + + + "b4a": "^1.6.4", + + + "fast-fifo": "^1.2.0", + + + "streamx": "^2.15.0" + + + } + + + }, + + + "temp-file": { + + + "version": "3.4.0", + + + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + + + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + + + "dev": true, + + + "requires": { + + + "async-exit-hook": "^2.0.1", + + + "fs-extra": "^10.0.0" + + + } + + + }, + + + "text-table": { + + + "version": "0.2.0", + + + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + + + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + + + "dev": true + + + }, + + + "thenify": { + + + "version": "3.3.1", + + + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + + + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + + + "requires": { + + + "any-promise": "^1.0.0" + + + } + + + }, + + + "thenify-all": { + + + "version": "1.6.0", + + + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + + + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + + + "requires": { + + + "thenify": ">= 3.1.0 < 4" + + + } + + + }, + + + "through": { + + + "version": "2.3.8", + + + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + + + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + + + }, + + + "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": "3.0.3", + + + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + + + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + + + "dev": true, + + + "requires": { + + + "tmp": "^0.2.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" + + + } + + + }, + + + "tmp": { + + + "version": "0.2.1", + + + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + + + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + + + "dev": true, + + + "requires": { + + + "rimraf": "^3.0.0" + + + } + + + } + + + } + + + }, + + + "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==", + + + "dev": true + + + }, + + + "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==", + + + "requires": { + + + "is-number": "^7.0.0" + + + } + + + }, + + + "toidentifier": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + + + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + + + }, + + + "touch": { + + + "version": "3.1.0", + + + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + + + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + + + "dev": true, + + + "requires": { + + + "nopt": "~1.0.10" + + + }, + + + "dependencies": { + + + "nopt": { + + + "version": "1.0.10", + + + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + + + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + + + "dev": true, + + + "requires": { + + + "abbrev": "1" + + + } + + + } + + + } + + + }, + + + "truncate-utf8-bytes": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + + + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + + + "dev": true, + + + "requires": { + + + "utf8-byte-length": "^1.0.1" + + + } + + + }, + + + "tslib": { + + + "version": "2.5.0", + + + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + + + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + + + "dev": true + + + }, + + + "tsscmp": { + + + "version": "1.0.6", + + + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + + + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + + + }, + + + "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": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + + + "dev": true, + + + "requires": { + + + "safe-buffer": "^5.0.1" + + + } + + + }, + + + "type-check": { + + + "version": "0.3.2", + + + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + + + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + + + "dev": true, + + + "requires": { + + + "prelude-ls": "~1.1.2" + + + } + + + }, + + + "type-fest": { + + + "version": "0.13.1", + + + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + + + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + + + "dev": true, + + + "optional": 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" + + + } + + + }, + + + "typed-emitter": { + + + "version": "2.1.0", + + + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + + + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + + + "requires": { + + + "rxjs": "*" + + + } + + + }, + + + "undefsafe": { + + + "version": "2.0.5", + + + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + + + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + + + "dev": true + + + }, + + + "unescape": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", + + + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + + + "requires": { + + + "extend-shallow": "^2.0.1" + + + } + + + }, + + + "unique-filename": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + + + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + + + "dev": true, + + + "requires": { + + + "unique-slug": "^4.0.0" + + + } + + + }, + + + "unique-slug": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + + + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + + + "dev": true, + + + "requires": { + + + "imurmurhash": "^0.1.4" + + + } + + + }, + + + "universalify": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + + + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + + + }, + + + "unpipe": { + + + "version": "1.0.0", + + + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + + + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + + + }, + + + "uri-js": { + + + "version": "4.4.1", + + + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + + + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + + + "dev": true, + + + "requires": { + + + "punycode": "^2.1.0" + + + } + + + }, + + + "url-parse-lax": { + + + "version": "3.0.0", + + + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + + + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + + + "dev": true, + + + "requires": { + + + "prepend-http": "^2.0.0" + + + } + + + }, + + + "urllib": { + + + "version": "2.41.0", + + + "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.41.0.tgz", + + + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + + + "requires": { + + + "any-promise": "^1.3.0", + + + "content-type": "^1.0.2", + + + "debug": "^2.6.9", + + + "default-user-agent": "^1.0.0", + + + "digest-header": "^1.0.0", + + + "ee-first": "~1.1.1", + + + "formstream": "^1.1.0", + + + "humanize-ms": "^1.2.0", + + + "iconv-lite": "^0.4.15", + + + "ip": "^1.1.5", + + + "pump": "^3.0.0", + + + "qs": "^6.4.0", + + + "statuses": "^1.3.1", + + + "utility": "^1.16.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" + + + } + + + }, + + + "ip": { + + + "version": "1.1.8", + + + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + + + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + + + }, + + + "ms": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + + + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + + + } + + + } + + + }, + + + "utf8-byte-length": { + + + "version": "1.0.4", + + + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + + + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + + + "dev": true + + + }, + + + "util": { + + + "version": "0.12.5", + + + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + + + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + + + "dev": true, + + + "requires": { + + + "inherits": "^2.0.3", + + + "is-arguments": "^1.0.4", + + + "is-generator-function": "^1.0.7", + + + "is-typed-array": "^1.1.3", + + + "which-typed-array": "^1.1.2" + + + } + + + }, + + + "util-deprecate": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + + + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + + + "dev": true + + + }, + + + "utility": { + + + "version": "1.18.0", + + + "resolved": "https://registry.npmjs.org/utility/-/utility-1.18.0.tgz", + + + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + + + "requires": { + + + "copy-to": "^2.0.1", + + + "escape-html": "^1.0.3", + + + "mkdirp": "^0.5.1", + + + "mz": "^2.7.0", + + + "unescape": "^1.0.1" + + + }, + + + "dependencies": { + + + "mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "requires": { + + + "minimist": "^1.2.6" + + + } + + + } + + + } + + + }, + + + "validator": { + + + "version": "13.11.0", + + + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + + + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + + + "dev": true + + + }, + + + "vary": { + + + "version": "1.1.2", + + + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + + + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + + + }, + + + "verror": { + + + "version": "1.10.1", + + + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + + + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + + + "dev": true, + + + "optional": true, + + + "requires": { + + + "assert-plus": "^1.0.0", + + + "core-util-is": "1.0.2", + + + "extsprintf": "^1.2.0" + + + }, + + + "dependencies": { + + + "core-util-is": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + + + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + + + "dev": true, + + + "optional": true + + + } + + + } + + + }, + + + "wcwidth": { + + + "version": "1.0.1", + + + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + + + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + + + "dev": true, + + + "requires": { + + + "defaults": "^1.0.3" + + + } + + + }, + + + "which": { + + + "version": "2.0.2", + + + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + + + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + + + "requires": { + + + "isexe": "^2.0.0" + + + } + + + }, + + + "which-typed-array": { + + + "version": "1.1.11", + + + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + + + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + + + "dev": true, + + + "requires": { + + + "available-typed-arrays": "^1.0.5", + + + "call-bind": "^1.0.2", + + + "for-each": "^0.3.3", + + + "gopd": "^1.0.1", + + + "has-tostringtag": "^1.0.0" + + + } + + + }, + + + "wide-align": { + + + "version": "1.1.5", + + + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + + + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + + + "dev": true, + + + "requires": { + + + "string-width": "^1.0.2 || 2 || 3 || 4" + + + } + + + }, + + + "win-release": { + + + "version": "1.1.1", + + + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + + + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + + + "requires": { + + + "semver": "^5.0.1" + + + }, + + + "dependencies": { + + + "semver": { + + + "version": "5.7.2", + + + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + + + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + + + } + + + } + + + }, + + + "word-wrap": { + + + "version": "1.2.5", + + + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + + + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + + + "dev": true + + + }, + + + "wrap-ansi": { + + + "version": "7.0.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + "dev": true, + + + "requires": { + + + "ansi-styles": "^4.0.0", + + + "string-width": "^4.1.0", + + + "strip-ansi": "^6.0.0" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "wrap-ansi-cjs": { + + + "version": "npm:wrap-ansi@7.0.0", + + + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + + + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + + + "dev": true, + + + "requires": { + + + "ansi-styles": "^4.0.0", + + + "string-width": "^4.1.0", + + + "strip-ansi": "^6.0.0" + + + }, + + + "dependencies": { + + + "ansi-regex": { + + + "version": "5.0.1", + + + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + + + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + + + "dev": true + + + }, + + + "strip-ansi": { + + + "version": "6.0.1", + + + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + + + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + + + "dev": true, + + + "requires": { + + + "ansi-regex": "^5.0.1" + + + } + + + } + + + } + + + }, + + + "wrappy": { + + + "version": "1.0.2", + + + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + + + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + + + }, + + + "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" + + + }, + + + "dependencies": { + + + "mkdirp": { + + + "version": "0.5.6", + + + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + + + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + + + "dev": true, + + + "requires": { + + + "minimist": "^1.2.6" + + + } + + + } + + + } + + + }, + + + "ws": { + + + "version": "8.11.0", + + + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + + + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + + + "requires": {} + + + }, + + + "xmlbuilder": { + + + "version": "15.1.1", + + + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + + + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + + + "dev": true + + + }, + + + "xmlhttprequest-ssl": { + + + "version": "2.0.0", + + + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + + + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + + + }, + + + "y18n": { + + + "version": "5.0.8", + + + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + + + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + + + "dev": true + + + }, + + + "yallist": { + + + "version": "4.0.0", + + + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + + + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + + + }, + + + "yargs": { + + + "version": "17.7.2", + + + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + + + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + + + "dev": true, + + + "requires": { + + + "cliui": "^8.0.1", + + + "escalade": "^3.1.1", + + + "get-caller-file": "^2.0.5", + + + "require-directory": "^2.1.1", + + + "string-width": "^4.2.3", + + + "y18n": "^5.0.5", + + + "yargs-parser": "^21.1.1" + + + } + + + }, + + + "yargs-parser": { + + + "version": "21.1.1", + + + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + + + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + + + "dev": true + + + }, + + + "yauzl": { + + + "version": "2.10.0", + + + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + + + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + + + "dev": true, + + + "requires": { + + + "buffer-crc32": "~0.2.3", + + + "fd-slicer": "~1.1.0" + + + } + + + }, + + + "ylru": { + + + "version": "1.3.2", + + + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + + + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==" + + + } + + + } + + +} + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..eec12c6 --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + + + "name": "appCtr", + "version": "3.9.0", + "description": "客户端控制程序", + "main": "main.js", + "scripts": { + "dev": "ee-bin dev", + "dev-frontend": "ee-bin dev --serve=frontend", + "dev-electron": "ee-bin dev --serve=electron", + "dev-go": "ee-bin dev --serve=go", + "dev-python": "ee-bin exec --cmds=python", + "build-frontend": "ee-bin build --cmds=frontend && ee-bin move --flag=frontend_dist", + "build-go-w": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_w", + "build-go-m": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_m", + "build-go-l": "ee-bin move --flag=go_static,go_config,go_package,go_images && ee-bin build --cmds=go_l", + "build-python": "ee-bin build --cmds=python && ee-bin move --flag=python_dist", + "start": "ee-bin start", + "move": "ee-bin move --flag=go_static,go_config,go_package,go_images", + "rd": "ee-bin move --flag=frontend_dist", + "encrypt": "ee-bin encrypt", + "clean": "ee-bin clean", + "icon": "ee-bin icon", + "reload": "nodemon --config ./electron/config/nodemon.json", + "rebuild": "electron-rebuild", + "re-sqlite": "electron-rebuild -f -w better-sqlite3", + "build-w": "electron-builder --config=./electron/config/builder.json -w=nsis --x64", + "build-w-32": "electron-builder --config=./electron/config/builder.json -w=nsis --ia32", + "build-w-64": "electron-builder --config=./electron/config/builder.json -w=nsis --x64", + "build-w-arm64": "electron-builder --config=./electron/config/builder.json -w=nsis --arm64", + "build-we": "electron-builder --config=./electron/config/builder.json -w=portable --x64", + "build-wz": "electron-builder --config=./electron/config/builder.json -w=7z --x64", + "build-wz-32": "electron-builder --config=./electron/config/builder.json -w=7z --ia32", + "build-wz-64": "electron-builder --config=./electron/config/builder.json -w=7z --x64", + "build-wz-arm64": "electron-builder --config=./electron/config/builder.json -w=7z --arm64", + "build-m": "electron-builder --config=./electron/config/builder.json -m", + "build-m-arm64": "electron-builder --config=./electron/config/builder.json -m --arm64", + "build-l": "electron-builder --config=./electron/config/builder.json -l=deb --x64", + "build-l-32": "electron-builder --config=./electron/config/builder.json -l=deb --ia32", + "build-l-64": "electron-builder --config=./electron/config/builder.json -l=deb --x64", + "build-l-arm64": "electron-builder --config=./electron/config/builder.json -l=deb --arm64", + "build-l-armv7l": "electron-builder --config=./electron/config/builder.json -l=deb --armv7l", + "build-lr-64": "electron-builder --config=./electron/config/builder.json -l=rpm --x64", + "build-lp-64": "electron-builder --config=./electron/config/builder.json -l=pacman --x64", + "test": "set DEBUG=* && electron . --env=local" + }, + "repository": "https://github.com/dromara/electron-egg.git", + "keywords": [ + "Electron", + "electron-egg", + "ElectronEgg" + ], + "author": "安徽烁景智能科技有限公司, Inc <247023187@qq.com>", + "license": "Apache", + "devDependencies": { + "@electron/rebuild": "^3.2.13", + "debug": "^4.3.3", + "ee-bin": "^1.5.0", + "electron": "^21.4.4", + "electron-builder": "^23.6.0", + "eslint": "^5.13.0", + "eslint-plugin-prettier": "^3.0.1", + "icon-gen": "^4.0.0", + "nodemon": "^2.0.16" + }, + "dependencies": { + "@lzwme/get-physical-address": "^1.0.5", + "dayjs": "^1.10.7", + "electron-shutdown-command": "^2.0.1", + "ee-core": "^2.9.2", + "electron-updater": "^5.3.0", + "lodash": "^4.17.21", + "loudness": "^0.4.2", + "modbus-serial": "^8.0.13", + "moment": "^2.29.4", + "serialport": "^12.0.0" + } +} diff --git a/public/dist/assets/AppSider-686a98c7.js b/public/dist/assets/AppSider-686a98c7.js new file mode 100644 index 0000000..5fa7efb --- /dev/null +++ b/public/dist/assets/AppSider-686a98c7.js @@ -0,0 +1 @@ +import{_ as e,r as a,o as n,c as t,w as o,a as s,b as l,d as i,F as u,e as c,t as r,p as m,f as d,g as p}from"./index-265ac112.js";const g=""+new URL("logo-abcaf0c2.png",import.meta.url).href,f={name:"AppSider",data:()=>({collapsed:!0,current:"menu_1",menu:{menu_1:{icon:"icon-fengche",title:"框架",pageName:"Framework",params:{}},menu_2:{icon:"icon-niudan",title:"系统",pageName:"Os",params:{}},menu_3:{icon:"icon-xiangji",title:"硬件",pageName:"Hardware",params:{}},menu_4:{icon:"icon-liuxing",title:"特效",pageName:"Effect",params:{}},menu_5:{icon:"icon-gouwu",title:"cross",pageName:"Cross",params:{}}}}),created(){},mounted(){this.menuHandle()},methods:{menuHandle(e){console.log("sider menu e:",e),this.current=e?e.key:this.current,console.log("sider menu current:",this.current);const a=this.menu[this.current];console.log("[home] load linkInfo:",a),this.$router.push({name:a.pageName,params:a.params})},changeMenu(e){console.log("sider menu e:",e)}}},h=(e=>(m("data-v-a1fe120d"),e=e(),d(),e))((()=>p("div",{class:"logo"},[p("img",{class:"pic-logo",src:g})],-1)));const _=e(f,[["render",function(e,m,d,p,g,f){const _=a("icon-font"),y=a("a-menu-item"),w=a("a-menu"),k=a("a-layout-sider"),N=a("router-view"),v=a("a-layout-content"),x=a("a-layout");return n(),t(x,{id:"app-layout-sider"},{default:o((()=>[s(k,{modelValue:g.collapsed,"onUpdate:modelValue":m[0]||(m[0]=e=>g.collapsed=e),theme:"light",class:"layout-sider",width:"100"},{default:o((()=>[h,s(w,{class:"menu-item",theme:"light",mode:"inline",selectedKeys:[g.current],onClick:f.menuHandle},{default:o((()=>[(n(!0),l(u,null,i(g.menu,((e,a)=>(n(),t(y,{key:a},{default:o((()=>[s(_,{type:e.icon},null,8,["type"]),c(" "+r(e.title),1)])),_:2},1024)))),128))])),_:1},8,["selectedKeys","onClick"])])),_:1},8,["modelValue"]),s(x,null,{default:o((()=>[s(v,{class:"layout-content"},{default:o((()=>[s(N)])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-a1fe120d"]]);export{_ as default}; diff --git a/public/dist/assets/AppSider-686a98c7.js.gz b/public/dist/assets/AppSider-686a98c7.js.gz new file mode 100644 index 0000000..1d2b3b3 Binary files /dev/null and b/public/dist/assets/AppSider-686a98c7.js.gz differ diff --git a/public/dist/assets/AppSider-e43fb700.js b/public/dist/assets/AppSider-e43fb700.js new file mode 100644 index 0000000..0d98408 --- /dev/null +++ b/public/dist/assets/AppSider-e43fb700.js @@ -0,0 +1 @@ +import{_ as e}from"./logo-9754eb61.js";import{_ as a,r as n,o as t,c as s,w as o,a as l,b as i,d as u,F as c,e as d,t as m,p as r,f as p,g}from"./index-ea5b20ee.js";const h={name:"AppSider",data:()=>({collapsed:!0,current:"menu_1",menu:{menu_1:{icon:"icon-fengche",title:"框架",pageName:"Framework",params:{}},menu_2:{icon:"icon-niudan",title:"系统",pageName:"Os",params:{}},menu_3:{icon:"icon-xiangji",title:"硬件",pageName:"Hardware",params:{}},menu_4:{icon:"icon-liuxing",title:"特效",pageName:"Effect",params:{}}}}),created(){},mounted(){this.menuHandle()},methods:{menuHandle(e){console.log("sider menu e:",e),this.current=e?e.key:this.current,console.log("sider menu current:",this.current);const a=this.menu[this.current];console.log("[home] load linkInfo:",a),this.$router.push({name:a.pageName,params:a.params})},changeMenu(e){console.log("sider menu e:",e)}}},f=(e=>(r("data-v-a4dde330"),e=e(),p(),e))((()=>g("div",{class:"logo"},[g("img",{class:"pic-logo",src:e})],-1)));const _=a(h,[["render",function(e,a,r,p,g,h){const _=n("icon-font"),y=n("a-menu-item"),k=n("a-menu"),w=n("a-layout-sider"),N=n("router-view"),v=n("a-layout-content"),x=n("a-layout");return t(),s(x,{id:"app-layout-sider"},{default:o((()=>[l(w,{modelValue:g.collapsed,"onUpdate:modelValue":a[0]||(a[0]=e=>g.collapsed=e),theme:"light",class:"layout-sider",width:"100"},{default:o((()=>[f,l(k,{class:"menu-item",theme:"light",mode:"inline",selectedKeys:[g.current],onClick:h.menuHandle},{default:o((()=>[(t(!0),i(c,null,u(g.menu,((e,a)=>(t(),s(y,{key:a},{default:o((()=>[l(_,{type:e.icon},null,8,["type"]),d(" "+m(e.title),1)])),_:2},1024)))),128))])),_:1},8,["selectedKeys","onClick"])])),_:1},8,["modelValue"]),l(x,null,{default:o((()=>[l(v,{class:"layout-content"},{default:o((()=>[l(N)])),_:1})])),_:1})])),_:1})}],["__scopeId","data-v-a4dde330"]]);export{_ as default}; diff --git a/public/dist/assets/AppSider-e43fb700.js.gz b/public/dist/assets/AppSider-e43fb700.js.gz new file mode 100644 index 0000000..10a6841 Binary files /dev/null and b/public/dist/assets/AppSider-e43fb700.js.gz differ diff --git a/public/dist/assets/AppSider-eae4d7cc.css b/public/dist/assets/AppSider-eae4d7cc.css new file mode 100644 index 0000000..05a7e37 --- /dev/null +++ b/public/dist/assets/AppSider-eae4d7cc.css @@ -0,0 +1 @@ +#app-layout-sider[data-v-a1fe120d]{height:100%}#app-layout-sider .logo[data-v-a1fe120d]{border-bottom:1px solid #e8e8e8}#app-layout-sider .pic-logo[data-v-a1fe120d]{height:32px;margin:10px}#app-layout-sider .layout-sider[data-v-a1fe120d]{border-top:1px solid #e8e8e8;border-right:1px solid #e8e8e8}#app-layout-sider .menu-item .ant-menu-item[data-v-a1fe120d]{background-color:#fff;margin-top:0;margin-bottom:0;padding:0!important} diff --git a/public/dist/assets/HttpServer-187e00e2.js b/public/dist/assets/HttpServer-187e00e2.js new file mode 100644 index 0000000..f6f8782 --- /dev/null +++ b/public/dist/assets/HttpServer-187e00e2.js @@ -0,0 +1 @@ +import{i as t}from"./main-ce25b28f.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{a as s}from"./index-9a8e575f.js";import{s as o}from"./store2-5a46c4a6.js";import{_ as r,r as n,o as a,b as i,g as l,t as c,e as u,a as d,w as p,p as h,f as m}from"./index-265ac112.js";const v={data:()=>({currentStatus:"关闭",servicAddress:"无"}),mounted(){this.init()},methods:{init(){e.invoke(t.checkHttpServer,{}).then((t=>{t.enable&&(this.currentStatus="开启",this.servicAddress=t.server,o.set("httpServiceConfig",t))}))},sendRequest(e){"关闭"!=this.currentStatus?this.requestHttp(t.doHttpRequest,{id:e}).then((t=>{})):this.$message.error("http服务未开启")},requestHttp(t,e){const r=o.get("httpServiceConfig").server||"http://localhost:7071";let n=t.split(".").join("/");return n=r+"/"+n,console.log("url:",n),s({url:n,method:"post",data:e,timeout:6e4})},backendRequest(){console.log("GO_URL:","http://www.test.com");s({baseURL:"http://www.test.com",method:"get",url:"/hello",timeout:6e4}).then((t=>{console.log("res:",t);const e=t.data||null;this.$message.info(`go服务返回: ${e}`)}))}}},f=t=>(h("data-v-3508e997"),t=t(),m(),t),b={id:"app-base-httpserver"},g=f((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 使用http与主进程通信 ")],-1))),k={class:"one-block-2"},w=f((()=>l("div",{class:"one-block-1"},[l("span",null," 2. 使用http与服务端通信 ")],-1))),R={class:"one-block-2"};const q=r(v,[["render",function(t,e,s,o,r,h){const m=n("a-button");return a(),i("div",b,[g,l("div",k,[l("p",null,"* 状态:"+c(r.currentStatus),1),l("p",null,"* 地址:"+c(r.servicAddress),1),l("p",null,[u("* 发送请求: "),d(m,{onClick:e[0]||(e[0]=t=>h.sendRequest("pictures"))},{default:p((()=>[u(" 打开【我的图片】 ")])),_:1})])]),w,l("div",R,[l("p",null,[d(m,{onClick:e[1]||(e[1]=t=>h.backendRequest())},{default:p((()=>[u(" 发送请求 ")])),_:1}),u(" (请自行创建服务) ")])])])}],["__scopeId","data-v-3508e997"]]);export{q as default}; diff --git a/public/dist/assets/HttpServer-187e00e2.js.gz b/public/dist/assets/HttpServer-187e00e2.js.gz new file mode 100644 index 0000000..749eadd Binary files /dev/null and b/public/dist/assets/HttpServer-187e00e2.js.gz differ diff --git a/public/dist/assets/HttpServer-3120b23d.css b/public/dist/assets/HttpServer-3120b23d.css new file mode 100644 index 0000000..7168d94 --- /dev/null +++ b/public/dist/assets/HttpServer-3120b23d.css @@ -0,0 +1 @@ +#app-base-httpserver[data-v-3508e997]{padding:0 10px;text-align:left;width:100%}#app-base-httpserver .one-block-1[data-v-3508e997]{font-size:16px;padding-top:10px}#app-base-httpserver .one-block-2[data-v-3508e997]{padding-top:10px} diff --git a/public/dist/assets/HttpServer-d1901b59.js b/public/dist/assets/HttpServer-d1901b59.js new file mode 100644 index 0000000..e9d3ac4 --- /dev/null +++ b/public/dist/assets/HttpServer-d1901b59.js @@ -0,0 +1 @@ +import{_ as t,i as e,h as s,r as o,o as a,b as n,g as r,t as l,e as i,a as c,w as u,p as d,f as p}from"./index-ea5b20ee.js";import{a as h}from"./index-1ef15d1b.js";import{s as v}from"./store2-204267a2.js";const m={data:()=>({currentStatus:"关闭",servicAddress:"无"}),mounted(){this.init()},methods:{init(){e.invoke(s.checkHttpServer,{}).then((t=>{t.enable&&(this.currentStatus="开启",this.servicAddress=t.server,v.set("httpServiceConfig",t))}))},sendRequest(t){"关闭"!=this.currentStatus?this.requestHttp(s.doHttpRequest,{id:t}).then((t=>{})):this.$message.error("http服务未开启")},requestHttp(t,e){const s=v.get("httpServiceConfig").server||"http://localhost:7071";let o=t.split(".").join("/");return o=s+"/"+o,console.log("url:",o),h({url:o,method:"post",data:e,timeout:6e4})},backendRequest(){console.log("GO_URL:","http://www.test.com");h({baseURL:"http://www.test.com",method:"get",url:"/hello",timeout:6e4}).then((t=>{console.log("res:",t);const e=t.data||null;this.$message.info(`go服务返回: ${e}`)}))}}},b=t=>(d("data-v-3508e997"),t=t(),p(),t),f={id:"app-base-httpserver"},g=b((()=>r("div",{class:"one-block-1"},[r("span",null," 1. 使用http与主进程通信 ")],-1))),k={class:"one-block-2"},q=b((()=>r("div",{class:"one-block-1"},[r("span",null," 2. 使用http与服务端通信 ")],-1))),w={class:"one-block-2"};const R=t(m,[["render",function(t,e,s,d,p,h){const v=o("a-button");return a(),n("div",f,[g,r("div",k,[r("p",null,"* 状态:"+l(p.currentStatus),1),r("p",null,"* 地址:"+l(p.servicAddress),1),r("p",null,[i("* 发送请求: "),c(v,{onClick:e[0]||(e[0]=t=>h.sendRequest("pictures"))},{default:u((()=>[i(" 打开【我的图片】 ")])),_:1})])]),q,r("div",w,[r("p",null,[c(v,{onClick:e[1]||(e[1]=t=>h.backendRequest())},{default:u((()=>[i(" 发送请求 ")])),_:1}),i(" (请自行创建服务) ")])])])}],["__scopeId","data-v-3508e997"]]);export{R as default}; diff --git a/public/dist/assets/HttpServer-d1901b59.js.gz b/public/dist/assets/HttpServer-d1901b59.js.gz new file mode 100644 index 0000000..0de0677 Binary files /dev/null and b/public/dist/assets/HttpServer-d1901b59.js.gz differ diff --git a/public/dist/assets/Index-05794807.js b/public/dist/assets/Index-05794807.js new file mode 100644 index 0000000..88b80e7 --- /dev/null +++ b/public/dist/assets/Index-05794807.js @@ -0,0 +1 @@ +import{i as a}from"./main-ce25b28f.js";import{i as e}from"./ipcRenderer-5e19eaee.js";import{_ as t,r as n,o,b as s,g as u,a as c,w as i,p as l,f as h}from"./index-265ac112.js";const d={data:()=>({autoLaunchChecked:!1}),mounted(){this.init()},methods:{init(){e.invoke(a.autoLaunch,"check").then((a=>{console.log("[ipcRenderer] [autoLaunch] result:",a),this.autoLaunchChecked=a.status}))},autoLaunchChange(a){console.log("[ipcRenderer] [autoLaunch] self.autoLaunchChecked:",this.autoLaunchChecked)}}},r=a=>(l("data-v-1b008e01"),a=a(),h(),a),m={id:"app-base-system-launch"},p={class:"one-block-2"},C=r((()=>u("a",null,"启动",-1))),L=r((()=>u("span",null," 开机自动启动 ",-1)));const k=t(d,[["render",function(a,e,t,l,h,d){const r=n("a-list-item-meta"),k=n("a-switch"),f=n("a-list-item"),g=n("a-list");return o(),s("div",m,[u("div",p,[c(g,{class:"set-auto",itemLayout:"horizontal"},{default:i((()=>[c(f,{style:{"text-align":"left"}},{actions:i((()=>[c(k,{modelValue:h.autoLaunchChecked,"onUpdate:modelValue":e[0]||(e[0]=a=>h.autoLaunchChecked=a),checkedChildren:"开",unCheckedChildren:"关",onChange:e[1]||(e[1]=a=>d.autoLaunchChange())},null,8,["modelValue"])])),default:i((()=>[c(r,null,{title:i((()=>[C])),description:i((()=>[L])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-1b008e01"]]);export{k as default}; diff --git a/public/dist/assets/Index-05794807.js.gz b/public/dist/assets/Index-05794807.js.gz new file mode 100644 index 0000000..1c524f6 Binary files /dev/null and b/public/dist/assets/Index-05794807.js.gz differ diff --git a/public/dist/assets/Index-084e8516.js b/public/dist/assets/Index-084e8516.js new file mode 100644 index 0000000..5741fbd --- /dev/null +++ b/public/dist/assets/Index-084e8516.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as t}from"./ipcRenderer-5e19eaee.js";import{_ as o,h as n,r as a,o as l,b as s,g as i,a as d,w as c,e as w,p as m,f as v}from"./index-265ac112.js";const r={data:()=>({views:[{type:"web",content:"https://www.baidu.com/"},{type:"html",content:"/public/html/view_example.html"}]}),methods:{loadViewContent(o){t.invoke(e.loadViewContent,n(this.views[o])).then((e=>{console.log(e)}))},removeViewContent(o){t.invoke(e.removeViewContent,n(this.views[o])).then((e=>{console.log(e)}))}}},p=e=>(m("data-v-792e445a"),e=e(),v(),e),u={id:"app-base-window-view"},h=p((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 嵌入web内容 ")],-1))),f={class:"one-block-2"},C=p((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 嵌入html内容 ")],-1))),b={class:"one-block-2"};const k=o(r,[["render",function(e,t,o,n,m,v){const r=a("a-button"),p=a("a-space");return l(),s("div",u,[h,i("div",f,[d(p,null,{default:c((()=>[d(r,{onClick:t[0]||(t[0]=e=>v.loadViewContent(0))},{default:c((()=>[w("加载百度页面")])),_:1}),d(r,{onClick:t[1]||(t[1]=e=>v.removeViewContent(0))},{default:c((()=>[w("移除百度页面")])),_:1})])),_:1})]),C,i("div",b,[d(p,null,{default:c((()=>[d(r,{onClick:t[2]||(t[2]=e=>v.loadViewContent(1))},{default:c((()=>[w("加载html页面")])),_:1}),d(r,{onClick:t[3]||(t[3]=e=>v.removeViewContent(1))},{default:c((()=>[w("移除html页面")])),_:1})])),_:1})])])}],["__scopeId","data-v-792e445a"]]);export{k as default}; diff --git a/public/dist/assets/Index-084e8516.js.gz b/public/dist/assets/Index-084e8516.js.gz new file mode 100644 index 0000000..7ae91f5 Binary files /dev/null and b/public/dist/assets/Index-084e8516.js.gz differ diff --git a/public/dist/assets/Index-08cc02ab.js b/public/dist/assets/Index-08cc02ab.js new file mode 100644 index 0000000..f6e9a97 --- /dev/null +++ b/public/dist/assets/Index-08cc02ab.js @@ -0,0 +1 @@ +import{_ as e,i as n,h as l,j as a,r as o,o as i,b as t,g as d,a as s,w,e as c,p as u,f as b}from"./index-ea5b20ee.js";const p={data:()=>({views:[{type:"web",content:"https://www.bilibili.com/",windowName:"window-web",windowTitle:"bilibili"},{type:"html",content:"/public/html/view_example.html",windowName:"window-html",windowTitle:"html window"},{type:"vue",content:"#/special/subwindow",windowName:"window-vue",windowTitle:"vue window"}]}),methods:{createWindow(e){n.invoke(l.createWindow,a(this.views[e])).then((e=>{console.log(e)}))}}},v=e=>(u("data-v-f82edd5f"),e=e(),b(),e),m={id:"app-base-window"},f=v((()=>d("div",{class:"one-block-1"},[d("span",null," 1. 新窗口中加载web内容 ")],-1))),r={class:"one-block-2"},h=v((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 新窗口中加载html内容 ")],-1))),k={class:"one-block-2"},_=v((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 新窗口中加载当前项目页面 ")],-1))),W={class:"one-block-2"};const x=e(p,[["render",function(e,n,l,a,u,b){const p=o("a-button"),v=o("a-space");return i(),t("div",m,[f,d("div",r,[s(v,null,{default:w((()=>[s(p,{onClick:n[0]||(n[0]=e=>b.createWindow(0))},{default:w((()=>[c("打开哔哩哔哩")])),_:1})])),_:1})]),h,d("div",k,[s(v,null,{default:w((()=>[s(p,{onClick:n[1]||(n[1]=e=>b.createWindow(1))},{default:w((()=>[c("打开html页面")])),_:1})])),_:1})]),_,d("div",W,[s(v,null,{default:w((()=>[s(p,{onClick:n[2]||(n[2]=e=>b.createWindow(2))},{default:w((()=>[c("打开vue页面")])),_:1})])),_:1})])])}],["__scopeId","data-v-f82edd5f"]]);export{x as default}; diff --git a/public/dist/assets/Index-08cc02ab.js.gz b/public/dist/assets/Index-08cc02ab.js.gz new file mode 100644 index 0000000..ea447e5 Binary files /dev/null and b/public/dist/assets/Index-08cc02ab.js.gz differ diff --git a/public/dist/assets/Index-096d4d09.css b/public/dist/assets/Index-096d4d09.css new file mode 100644 index 0000000..de71a17 --- /dev/null +++ b/public/dist/assets/Index-096d4d09.css @@ -0,0 +1 @@ +#app-cross-java[data-v-5d226b2a]{padding:0 10px;text-align:left;width:100%}#app-cross-java .one-block-1[data-v-5d226b2a]{font-size:16px;padding-top:10px}#app-cross-java .one-block-2[data-v-5d226b2a]{padding-top:10px} diff --git a/public/dist/assets/Index-0ca67f51.js b/public/dist/assets/Index-0ca67f51.js new file mode 100644 index 0000000..0e80697 --- /dev/null +++ b/public/dist/assets/Index-0ca67f51.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i}from"./ipcRenderer-5e19eaee.js";import{_ as n,h as o,r as a,o as l,b as t,g as s,a as d,w,e as c,p as u,f as m}from"./index-265ac112.js";const p={data:()=>({views:[{type:"web",content:"https://www.bilibili.com/",windowName:"window-web",windowTitle:"bilibili"},{type:"html",content:"/public/html/view_example.html",windowName:"window-html",windowTitle:"html window"},{type:"vue",content:"#/special/subwindow",windowName:"window-vue",windowTitle:"vue window"}]}),methods:{createWindow(n){i.invoke(e.createWindow,o(this.views[n])).then((e=>{console.log(e)}))}}},r=e=>(u("data-v-f82edd5f"),e=e(),m(),e),b={id:"app-base-window"},v=r((()=>s("div",{class:"one-block-1"},[s("span",null," 1. 新窗口中加载web内容 ")],-1))),f={class:"one-block-2"},h=r((()=>s("div",{class:"one-block-1"},[s("span",null," 2. 新窗口中加载html内容 ")],-1))),k={class:"one-block-2"},_=r((()=>s("div",{class:"one-block-1"},[s("span",null," 3. 新窗口中加载当前项目页面 ")],-1))),W={class:"one-block-2"};const j=n(p,[["render",function(e,i,n,o,u,m){const p=a("a-button"),r=a("a-space");return l(),t("div",b,[v,s("div",f,[d(r,null,{default:w((()=>[d(p,{onClick:i[0]||(i[0]=e=>m.createWindow(0))},{default:w((()=>[c("打开哔哩哔哩")])),_:1})])),_:1})]),h,s("div",k,[d(r,null,{default:w((()=>[d(p,{onClick:i[1]||(i[1]=e=>m.createWindow(1))},{default:w((()=>[c("打开html页面")])),_:1})])),_:1})]),_,s("div",W,[d(r,null,{default:w((()=>[d(p,{onClick:i[2]||(i[2]=e=>m.createWindow(2))},{default:w((()=>[c("打开vue页面")])),_:1})])),_:1})])])}],["__scopeId","data-v-f82edd5f"]]);export{j as default}; diff --git a/public/dist/assets/Index-0ca67f51.js.gz b/public/dist/assets/Index-0ca67f51.js.gz new file mode 100644 index 0000000..668a5b6 Binary files /dev/null and b/public/dist/assets/Index-0ca67f51.js.gz differ diff --git a/public/dist/assets/Index-1570e1ba.css b/public/dist/assets/Index-1570e1ba.css new file mode 100644 index 0000000..4105d67 --- /dev/null +++ b/public/dist/assets/Index-1570e1ba.css @@ -0,0 +1 @@ +#app-base-file[data-v-d30dccef]{padding:0 10px;text-align:left;width:100%}#app-base-file .one-block-1[data-v-d30dccef]{font-size:16px;padding-top:10px}#app-base-file .one-block-2[data-v-d30dccef],#app-base-file .footer[data-v-d30dccef]{padding-top:10px} diff --git a/public/dist/assets/Index-1980ce01.js b/public/dist/assets/Index-1980ce01.js new file mode 100644 index 0000000..35292ef --- /dev/null +++ b/public/dist/assets/Index-1980ce01.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as s}from"./ipcRenderer-5e19eaee.js";import{a}from"./index-9a8e575f.js";import{s as r}from"./store2-5a46c4a6.js";import{_ as t,r as o,o as i,b as n,g as v,a as c,w as d,e as m,p as l,f}from"./index-265ac112.js";const u={data:()=>({server:""}),methods:{startServer(){s.invoke(e.startJavaServer,{}).then((e=>{0!=e.code?this.$message.error(e.msg):(this.$message.info("异步启动"),r.set("javaService",e.server))}))},closeServer(){s.invoke(e.closeJavaServer,{}).then((e=>{0!=e.code&&this.$message.error(e.msg),this.$message.info("异步关闭"),r.remove("javaService")}))},sendRequest(){const e=r.get("javaService")||"";if(""==e)return void this.$message.error("服务未开启 或 正在启动中");a({method:"get",url:e+"/test1/get",params:{id:"1111111"},timeout:6e4}).then((e=>{const s=e.data||null;this.$message.info(`java服务返回: ${s}`)}))}}},p={id:"app-other"},g=(e=>(l("data-v-c3213243"),e=e(),f(),e))((()=>v("div",{class:"one-block-1"},[v("span",null," 请求java服务接口(废弃,请使用跨语言服务) ")],-1))),h={class:"one-block-2"};const j=t(u,[["render",function(e,s,a,r,t,l){const f=o("a-button"),u=o("a-space");return i(),n("div",p,[g,v("div",h,[c(u,null,{default:d((()=>[c(f,{onClick:s[0]||(s[0]=e=>l.startServer())},{default:d((()=>[m(" 启动java项目 ")])),_:1}),c(f,{onClick:s[1]||(s[1]=e=>l.sendRequest())},{default:d((()=>[m(" 测试接口 ")])),_:1}),c(f,{onClick:s[2]||(s[2]=e=>l.closeServer())},{default:d((()=>[m(" 关闭java项目 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-c3213243"]]);export{j as default}; diff --git a/public/dist/assets/Index-1980ce01.js.gz b/public/dist/assets/Index-1980ce01.js.gz new file mode 100644 index 0000000..dfd12fc Binary files /dev/null and b/public/dist/assets/Index-1980ce01.js.gz differ diff --git a/public/dist/assets/Index-2000eb61.js b/public/dist/assets/Index-2000eb61.js new file mode 100644 index 0000000..e7560a9 --- /dev/null +++ b/public/dist/assets/Index-2000eb61.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as a}from"./ipcRenderer-5e19eaee.js";import{_ as l,r as n,o as t,b as s,g as d,a as o,w as u,e as i,t as p,p as _,f as r}from"./index-265ac112.js";const c={data:()=>({name:"张三",age:10,userList:["空"],search_age:10,update_name:"张三",update_age:21,delete_name:"张三",all_list:["空"],data_dir:""}),mounted(){this.init()},methods:{init(){a.invoke(e.jsondbOperation,{action:"getDataDir"}).then((e=>{this.data_dir=e.result,this.getAllTestData()}))},getAllTestData(){a.invoke(e.jsondbOperation,{action:"all"}).then((e=>{if(console.log("res:",e),0==e.all_list.length)return!1;this.all_list=e.all_list}))},selectDir(){a.invoke(e.selectFolder,"").then((e=>{this.data_dir=e,this.modifyDataDir(e)}))},openDir(){a.invoke(e.openDirectory,{id:this.data_dir}).then((e=>{}))},modifyDataDir(l){const n={action:"setDataDir",data_dir:l};a.invoke(e.jsondbOperation,n).then((e=>{this.all_list=e.all_list}))},dbOperation(l){const n={action:l,info:{name:this.name,age:parseInt(this.age)},search_age:parseInt(this.search_age),update_name:this.update_name,update_age:parseInt(this.update_age),delete_name:this.delete_name};"add"==l&&0==this.name.length&&this.$message.error("请填写数据"),a.invoke(e.jsondbOperation,n).then((e=>{if(console.log("res:",e),"get"==l){if(0==e.result.length)return void this.$message.error("没有数据");this.userList=e.result}0!=e.all_list.length?(this.all_list=e.all_list,this.$message.success("success")):this.all_list=["空"]}))}}},m=e=>(_("data-v-364fc463"),e=e(),r(),e),f={id:"app-base-db"},h=m((()=>d("div",{class:"one-block-1"},[d("span",null," 1. jsondb本地数据库 ")],-1))),v={class:"one-block-2"},b=m((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 数据目录 ")],-1))),g={class:"one-block-2"},k=m((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 测试数据 ")],-1))),V={class:"one-block-2"},D=m((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 添加数据 ")],-1))),j={class:"one-block-2"},O=m((()=>d("div",{class:"one-block-1"},[d("span",null," 5. 获取数据 ")],-1))),C={class:"one-block-2"},U=m((()=>d("div",{class:"one-block-1"},[d("span",null," 6. 修改数据 ")],-1))),I={class:"one-block-2"},w=m((()=>d("div",{class:"one-block-1"},[d("span",null," 7. 删除数据 ")],-1))),y={class:"one-block-2"};const L=l(c,[["render",function(e,a,l,_,r,c){const m=n("a-col"),L=n("a-row"),$=n("a-input"),x=n("a-button");return t(),s("div",f,[h,d("div",v,[o(L,null,{default:u((()=>[o(m,{span:8},{default:u((()=>[i(" • 小数据量: 0~100M(单库) ")])),_:1}),o(m,{span:8},{default:u((()=>[i(" • json数据库 ")])),_:1}),o(m,{span:8},{default:u((()=>[i(" • 兼容lodash语法 ")])),_:1})])),_:1})]),b,d("div",g,[o(L,null,{default:u((()=>[o(m,{span:12},{default:u((()=>[o($,{modelValue:r.data_dir,"onUpdate:modelValue":a[0]||(a[0]=e=>r.data_dir=e),value:r.data_dir,"addon-before":"数据目录"},null,8,["modelValue","value"])])),_:1}),o(m,{span:2}),o(m,{span:5},{default:u((()=>[o(x,{onClick:c.selectDir},{default:u((()=>[i(" 修改目录 ")])),_:1},8,["onClick"])])),_:1}),o(m,{span:5},{default:u((()=>[o(x,{onClick:c.openDir},{default:u((()=>[i(" 打开目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),k,d("div",V,[o(L,null,{default:u((()=>[o(m,{span:24},{default:u((()=>[i(p(r.all_list),1)])),_:1})])),_:1})]),D,d("div",j,[o(L,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o($,{modelValue:r.name,"onUpdate:modelValue":a[1]||(a[1]=e=>r.name=e),value:r.name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o($,{modelValue:r.age,"onUpdate:modelValue":a[2]||(a[2]=e=>r.age=e),value:r.age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[3]||(a[3]=e=>c.dbOperation("add"))},{default:u((()=>[i(" 添加 ")])),_:1})])),_:1})])),_:1})]),O,d("div",C,[o(L,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o($,{modelValue:r.search_age,"onUpdate:modelValue":a[4]||(a[4]=e=>r.search_age=e),value:r.search_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[5]||(a[5]=e=>c.dbOperation("get"))},{default:u((()=>[i(" 查找 ")])),_:1})])),_:1})])),_:1}),o(L,null,{default:u((()=>[o(m,{span:24},{default:u((()=>[i(p(r.userList),1)])),_:1})])),_:1})]),U,d("div",I,[o(L,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o($,{modelValue:r.update_name,"onUpdate:modelValue":a[6]||(a[6]=e=>r.update_name=e),value:r.update_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o($,{modelValue:r.update_age,"onUpdate:modelValue":a[7]||(a[7]=e=>r.update_age=e),value:r.update_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[8]||(a[8]=e=>c.dbOperation("update"))},{default:u((()=>[i(" 更新 ")])),_:1})])),_:1})])),_:1})]),w,d("div",y,[o(L,null,{default:u((()=>[o(m,{span:6},{default:u((()=>[o($,{modelValue:r.delete_name,"onUpdate:modelValue":a[9]||(a[9]=e=>r.delete_name=e),value:r.delete_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(m,{span:3}),o(m,{span:6}),o(m,{span:3}),o(m,{span:6},{default:u((()=>[o(x,{onClick:a[10]||(a[10]=e=>c.dbOperation("del"))},{default:u((()=>[i(" 删除 ")])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-364fc463"]]);export{L as default}; diff --git a/public/dist/assets/Index-2000eb61.js.gz b/public/dist/assets/Index-2000eb61.js.gz new file mode 100644 index 0000000..a28a5a5 Binary files /dev/null and b/public/dist/assets/Index-2000eb61.js.gz differ diff --git a/public/dist/assets/Index-22c8ad14.js b/public/dist/assets/Index-22c8ad14.js new file mode 100644 index 0000000..b9e80d5 --- /dev/null +++ b/public/dist/assets/Index-22c8ad14.js @@ -0,0 +1 @@ +import{_ as e,i as s,h as a,r as l,o,b as t,g as i,a as n,w as d,e as c,p as r,f as u}from"./index-ea5b20ee.js";import{s as p}from"./store2-204267a2.js";const f=[{content:"【下载】目录",id:"downloads"},{content:"【图片】目录",id:"pictures"},{content:"【文档】目录",id:"documents"},{content:"【音乐】目录",id:"music"}],h={data:()=>({file_list:f,action_url:"",image_info:[],num:0,servicAddress:"",dir_path:"D:\\www\\ee"}),mounted(){this.getHost()},methods:{getHost(){s.invoke(a.checkHttpServer,{}).then((e=>{if(e.enable){this.servicAddress=e.server,p.set("httpServiceConfig",e);const s=e.server||"http://localhost:7071";let l=a.uploadFile.split(".").join("/");this.action_url=s+"/"+l}}))},openDirectry(e){s.invoke(a.openDirectory,{id:e}).then((e=>{}))},selectDir(){s.invoke(a.selectFolder,"").then((e=>{this.dir_path=e,this.$message.info(e)}))},messageShow(){s.invoke(a.messageShow,"").then((e=>{this.$message.info(e)}))},messageShowConfirm(){s.invoke(a.messageShowConfirm,"").then((e=>{this.$message.info(e)}))},handleFileChange(e){if(console.log("handleFileChange-----"),""==this.action_url)return void this.$message.error("http服务未开启");const s=e.file.status;if("uploading"!==s&&console.log(e.file),"done"===s){const s=e.file.response;if(console.log("uploadRes:",s),"success"!==s.code)return this.$message.error(`file upload failed ${s.code} .`),!1;this.num++;const a=s.data;a.id=this.num,a.imageUrlText="image url",this.image_info.push(a),this.$message.success(`${e.file.name} file uploaded successfully.`)}else"error"===s&&this.$message.error(`${e.file.name} file upload failed.`)}}},m=e=>(r("data-v-d30dccef"),e=e(),u(),e),g={id:"app-base-file"},_=m((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 系统原生对话框 ")],-1))),v={class:"one-block-2"},k=m((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 选择保存目录 ")],-1))),C={class:"one-block-2"},b=m((()=>i("div",{class:"one-block-1"},[i("span",null," 3. 打开文件夹 ")],-1))),w={class:"one-block-2"},$=m((()=>i("div",{class:"one-block-1"},[i("span",null," 4. 上传文件到图床 ")],-1))),S={class:"one-block-2"},D=m((()=>i("p",{class:"ant-upload-drag-icon"},null,-1))),y=m((()=>i("p",{class:"ant-upload-text"}," 点击 或 拖拽文件到这里 ",-1))),F=m((()=>i("p",{class:"ant-upload-hint"}," 注意:请使用您自己的图床token ",-1))),x=m((()=>i("div",{class:"footer"},null,-1)));const j=e(h,[["render",function(e,s,a,r,u,p){const f=l("a-button"),h=l("a-space"),m=l("a-input"),j=l("a-col"),H=l("a-row"),V=l("a-card"),A=l("a-list-item"),I=l("a-list"),U=l("a-upload-dragger");return o(),t("div",g,[_,i("div",v,[n(h,null,{default:d((()=>[n(f,{onClick:s[0]||(s[0]=e=>p.messageShow())},{default:d((()=>[c("消息提示(ipc)")])),_:1}),n(f,{onClick:s[1]||(s[1]=e=>p.messageShowConfirm())},{default:d((()=>[c("消息提示与确认(ipc)")])),_:1})])),_:1})]),k,i("div",C,[n(H,null,{default:d((()=>[n(j,{span:12},{default:d((()=>[n(m,{modelValue:u.dir_path,"onUpdate:modelValue":s[2]||(s[2]=e=>u.dir_path=e),value:u.dir_path,"addon-before":"保存目录"},null,8,["modelValue","value"])])),_:1}),n(j,{span:12},{default:d((()=>[n(f,{onClick:p.selectDir},{default:d((()=>[c(" 修改目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),b,i("div",w,[n(I,{grid:{gutter:16,column:4},"data-source":u.file_list},{renderItem:d((({item:e})=>[n(A,{onClick:s=>p.openDirectry(e.id)},{default:d((()=>[n(V,{title:e.content},{default:d((()=>[n(f,{type:"link"},{default:d((()=>[c(" 打开 ")])),_:1})])),_:2},1032,["title"])])),_:2},1032,["onClick"])])),_:1},8,["data-source"])]),$,i("div",S,[n(U,{name:"file",multiple:!0,action:u.action_url,onChange:p.handleFileChange},{default:d((()=>[D,y,F])),_:1},8,["action","onChange"])]),x])}],["__scopeId","data-v-d30dccef"]]);export{j as default}; diff --git a/public/dist/assets/Index-22c8ad14.js.gz b/public/dist/assets/Index-22c8ad14.js.gz new file mode 100644 index 0000000..caa3cdc Binary files /dev/null and b/public/dist/assets/Index-22c8ad14.js.gz differ diff --git a/public/dist/assets/Index-254e6122.js b/public/dist/assets/Index-254e6122.js new file mode 100644 index 0000000..85e0cc2 --- /dev/null +++ b/public/dist/assets/Index-254e6122.js @@ -0,0 +1 @@ +import{i as s}from"./main-ce25b28f.js";import{i as r}from"./ipcRenderer-5e19eaee.js";import{_ as e,r as o,o as i,b as p,g as l,a as d,w as t,e as a,t as n,p as u,f as c}from"./index-265ac112.js";const g={data:()=>({processPids:"",progress1:0,progress2:0,progress3:0,progress4:0,progress5:0,progress6:0,progress1_pid:0,progress2_pid:0,progress3_pid:0,progress4_pid:0,progress5_pid:0,progress6_pid:0}),mounted(){this.init()},methods:{init(){r.removeAllListeners(s.timerJobProgress),r.removeAllListeners(s.createPoolNotice),r.on(s.timerJobProgress,((s,r)=>{switch(r.jobId){case 1:this.progress1=r.number,this.progress1_pid=0==r.pid?r.pid:this.progress1_pid;break;case 2:this.progress2=r.number,this.progress2_pid=0==r.pid?r.pid:this.progress2_pid;break;case 3:this.progress3=r.number,this.progress3_pid=0==r.pid?r.pid:this.progress3_pid;break;case 4:this.progress4=r.number,this.progress4_pid=0==r.pid?r.pid:this.progress4_pid;break;case 5:this.progress5=r.number,this.progress5_pid=0==r.pid?r.pid:this.progress5_pid;break;case 6:this.progress6=r.number,this.progress6_pid=0==r.pid?r.pid:this.progress6_pid}})),r.on(s.createPoolNotice,((s,r)=>{let e=JSON.stringify(r);this.processPids=e}))},runJob(e,o){let i={id:e,type:"timer",action:o};r.invoke(s.someJob,i).then((s=>{if("close"!=o)switch(s.jobId){case 1:this.progress1_pid=s.result.pid;break;case 2:this.progress2_pid=s.result.pid}}))},createPool(){r.send(s.createPool,{number:3})},runJobByPool(e,o){let i={id:e,type:"timer",action:o};r.invoke(s.someJobByPool,i).then((s=>{switch(s.jobId){case 3:this.progress3_pid=s.result.pid;break;case 4:this.progress4_pid=s.result.pid;break;case 5:this.progress5_pid=s.result.pid;break;case 6:this.progress6_pid=s.result.pid}}))}}},_=s=>(u("data-v-71705fa7"),s=s(),c(),s),b={id:"app-base-jobs"},h=_((()=>l("div",{class:"one-block-1"},[l("span",null," 1. 任务 / 并发任务 ")],-1))),f={class:"one-block-2"},k=_((()=>l("p",null,null,-1))),m=_((()=>l("div",{class:"one-block-1"},[l("span",null," 2. 任务池 / 并发任务 ")],-1))),P={class:"one-block-2"},J=_((()=>l("p",null,null,-1))),v=_((()=>l("p",null,null,-1))),y=_((()=>l("p",null,null,-1))),C=_((()=>l("p",null,null,-1)));const j=e(g,[["render",function(s,r,e,u,c,g){const _=o("a-button"),j=o("a-space");return i(),p("div",b,[h,l("div",f,[d(j,null,{default:t((()=>[d(_,{onClick:r[0]||(r[0]=s=>g.runJob(1,"create"))},{default:t((()=>[a("执行任务1")])),_:1}),a(" 进度:"+n(c.progress1)+" , 进程pid:"+n(c.progress1_pid)+" ",1),d(_,{onClick:r[1]||(r[1]=s=>g.runJob(1,"close"))},{default:t((()=>[a("关闭")])),_:1})])),_:1}),k,d(j,null,{default:t((()=>[d(_,{onClick:r[2]||(r[2]=s=>g.runJob(2,"create"))},{default:t((()=>[a("执行任务2")])),_:1}),a(" 进度:"+n(c.progress2)+" , 进程pid:"+n(c.progress2_pid)+" ",1),d(_,{onClick:r[3]||(r[3]=s=>g.runJob(2,"close"))},{default:t((()=>[a("关闭")])),_:1})])),_:1})]),m,l("div",P,[d(j,null,{default:t((()=>[d(_,{onClick:r[4]||(r[4]=s=>g.createPool())},{default:t((()=>[a("创建进程池")])),_:1}),a(" 进程pids:"+n(c.processPids),1)])),_:1}),J,d(j,null,{default:t((()=>[d(_,{onClick:r[5]||(r[5]=s=>g.runJobByPool(3,"run"))},{default:t((()=>[a("执行任务3")])),_:1}),a(" 进度:"+n(c.progress3)+" ,进程pid:"+n(c.progress3_pid),1)])),_:1}),v,d(j,null,{default:t((()=>[d(_,{onClick:r[6]||(r[6]=s=>g.runJobByPool(4,"run"))},{default:t((()=>[a("执行任务4")])),_:1}),a(" 进度:"+n(c.progress4)+" ,进程pid:"+n(c.progress4_pid),1)])),_:1}),y,d(j,null,{default:t((()=>[d(_,{onClick:r[7]||(r[7]=s=>g.runJobByPool(5,"run"))},{default:t((()=>[a("执行任务5")])),_:1}),a(" 进度:"+n(c.progress5)+" ,进程pid:"+n(c.progress5_pid),1)])),_:1}),C,d(j,null,{default:t((()=>[d(_,{onClick:r[8]||(r[8]=s=>g.runJobByPool(6,"run"))},{default:t((()=>[a("执行任务6")])),_:1}),a(" 进度:"+n(c.progress6)+" ,进程pid:"+n(c.progress6_pid),1)])),_:1})])])}],["__scopeId","data-v-71705fa7"]]);export{j as default}; diff --git a/public/dist/assets/Index-254e6122.js.gz b/public/dist/assets/Index-254e6122.js.gz new file mode 100644 index 0000000..ddb7e5f Binary files /dev/null and b/public/dist/assets/Index-254e6122.js.gz differ diff --git a/public/dist/assets/Index-266fdb27.js b/public/dist/assets/Index-266fdb27.js new file mode 100644 index 0000000..c3b98be --- /dev/null +++ b/public/dist/assets/Index-266fdb27.js @@ -0,0 +1 @@ +import{_ as e,i as a,h as l,r as n,o as t,b as s,g as d,a as o,w as u,e as i,t as p,p as _,f as r}from"./index-ea5b20ee.js";const c={data:()=>({name:"张三",age:10,userList:["空"],search_age:10,update_name:"张三",update_age:21,delete_name:"张三",all_list:["空"],data_dir:""}),mounted(){this.init()},methods:{init(){a.invoke(l.jsondbOperation,{action:"getDataDir"}).then((e=>{this.data_dir=e.result,this.getAllTestData()}))},getAllTestData(){a.invoke(l.jsondbOperation,{action:"all"}).then((e=>{if(console.log("res:",e),0==e.all_list.length)return!1;this.all_list=e.all_list}))},selectDir(){a.invoke(l.selectFolder,"").then((e=>{this.data_dir=e,this.modifyDataDir(e)}))},openDir(){a.invoke(l.openDirectory,{id:this.data_dir}).then((e=>{}))},modifyDataDir(e){const n={action:"setDataDir",data_dir:e};a.invoke(l.jsondbOperation,n).then((e=>{this.all_list=e.all_list}))},dbOperation(e){const n={action:e,info:{name:this.name,age:parseInt(this.age)},search_age:parseInt(this.search_age),update_name:this.update_name,update_age:parseInt(this.update_age),delete_name:this.delete_name};"add"==e&&0==this.name.length&&this.$message.error("请填写数据"),a.invoke(l.jsondbOperation,n).then((a=>{if(console.log("res:",a),"get"==e){if(0==a.result.length)return void this.$message.error("没有数据");this.userList=a.result}0!=a.all_list.length?(this.all_list=a.all_list,this.$message.success("success")):this.all_list=["空"]}))}}},f=e=>(_("data-v-364fc463"),e=e(),r(),e),m={id:"app-base-db"},h=f((()=>d("div",{class:"one-block-1"},[d("span",null," 1. jsondb本地数据库 ")],-1))),v={class:"one-block-2"},b=f((()=>d("div",{class:"one-block-1"},[d("span",null," 2. 数据目录 ")],-1))),g={class:"one-block-2"},k=f((()=>d("div",{class:"one-block-1"},[d("span",null," 3. 测试数据 ")],-1))),V={class:"one-block-2"},D=f((()=>d("div",{class:"one-block-1"},[d("span",null," 4. 添加数据 ")],-1))),O={class:"one-block-2"},C=f((()=>d("div",{class:"one-block-1"},[d("span",null," 5. 获取数据 ")],-1))),j={class:"one-block-2"},U=f((()=>d("div",{class:"one-block-1"},[d("span",null," 6. 修改数据 ")],-1))),I={class:"one-block-2"},y=f((()=>d("div",{class:"one-block-1"},[d("span",null," 7. 删除数据 ")],-1))),L={class:"one-block-2"};const $=e(c,[["render",function(e,a,l,_,r,c){const f=n("a-col"),$=n("a-row"),w=n("a-input"),x=n("a-button");return t(),s("div",m,[h,d("div",v,[o($,null,{default:u((()=>[o(f,{span:8},{default:u((()=>[i(" • 小数据量: 0~100M(单库) ")])),_:1}),o(f,{span:8},{default:u((()=>[i(" • json数据库 ")])),_:1}),o(f,{span:8},{default:u((()=>[i(" • 兼容lodash语法 ")])),_:1})])),_:1})]),b,d("div",g,[o($,null,{default:u((()=>[o(f,{span:12},{default:u((()=>[o(w,{modelValue:r.data_dir,"onUpdate:modelValue":a[0]||(a[0]=e=>r.data_dir=e),value:r.data_dir,"addon-before":"数据目录"},null,8,["modelValue","value"])])),_:1}),o(f,{span:2}),o(f,{span:5},{default:u((()=>[o(x,{onClick:c.selectDir},{default:u((()=>[i(" 修改目录 ")])),_:1},8,["onClick"])])),_:1}),o(f,{span:5},{default:u((()=>[o(x,{onClick:c.openDir},{default:u((()=>[i(" 打开目录 ")])),_:1},8,["onClick"])])),_:1})])),_:1})]),k,d("div",V,[o($,null,{default:u((()=>[o(f,{span:24},{default:u((()=>[i(p(r.all_list),1)])),_:1})])),_:1})]),D,d("div",O,[o($,null,{default:u((()=>[o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.name,"onUpdate:modelValue":a[1]||(a[1]=e=>r.name=e),value:r.name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.age,"onUpdate:modelValue":a[2]||(a[2]=e=>r.age=e),value:r.age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(x,{onClick:a[3]||(a[3]=e=>c.dbOperation("add"))},{default:u((()=>[i(" 添加 ")])),_:1})])),_:1})])),_:1})]),C,d("div",j,[o($,null,{default:u((()=>[o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.search_age,"onUpdate:modelValue":a[4]||(a[4]=e=>r.search_age=e),value:r.search_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(x,{onClick:a[5]||(a[5]=e=>c.dbOperation("get"))},{default:u((()=>[i(" 查找 ")])),_:1})])),_:1})])),_:1}),o($,null,{default:u((()=>[o(f,{span:24},{default:u((()=>[i(p(r.userList),1)])),_:1})])),_:1})]),U,d("div",I,[o($,null,{default:u((()=>[o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.update_name,"onUpdate:modelValue":a[6]||(a[6]=e=>r.update_name=e),value:r.update_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.update_age,"onUpdate:modelValue":a[7]||(a[7]=e=>r.update_age=e),value:r.update_age,"addon-before":"年龄"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(x,{onClick:a[8]||(a[8]=e=>c.dbOperation("update"))},{default:u((()=>[i(" 更新 ")])),_:1})])),_:1})])),_:1})]),y,d("div",L,[o($,null,{default:u((()=>[o(f,{span:6},{default:u((()=>[o(w,{modelValue:r.delete_name,"onUpdate:modelValue":a[9]||(a[9]=e=>r.delete_name=e),value:r.delete_name,"addon-before":"姓名"},null,8,["modelValue","value"])])),_:1}),o(f,{span:3}),o(f,{span:6}),o(f,{span:3}),o(f,{span:6},{default:u((()=>[o(x,{onClick:a[10]||(a[10]=e=>c.dbOperation("del"))},{default:u((()=>[i(" 删除 ")])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-364fc463"]]);export{$ as default}; diff --git a/public/dist/assets/Index-266fdb27.js.gz b/public/dist/assets/Index-266fdb27.js.gz new file mode 100644 index 0000000..faa2787 Binary files /dev/null and b/public/dist/assets/Index-266fdb27.js.gz differ diff --git a/public/dist/assets/Index-28b1ea1d.js b/public/dist/assets/Index-28b1ea1d.js new file mode 100644 index 0000000..7f86548 --- /dev/null +++ b/public/dist/assets/Index-28b1ea1d.js @@ -0,0 +1 @@ +import{_ as s,i as e,s as a,h as t,r as o,o as n,b as r,g as c,a as d,w as l,e as p,t as i,p as u,f as h}from"./index-ea5b20ee.js";const f={data:()=>({status:0,progress:"",percentNumber:0}),mounted(){this.init()},methods:{init(){e.removeAllListeners(a.appUpdater),e.on(a.appUpdater,((s,e)=>{e=JSON.parse(e),this.status=e.status,3==e.status?(this.progress=e.desc,this.percentNumber=e.percentNumber):this.$message.info(e.desc)}))},checkForUpdater(){e.invoke(t.checkForUpdater).then((s=>{console.log(s)}))},download(){1===this.status?e.invoke(t.downloadApp).then((s=>{console.log(s)})):this.$message.info("没有可用版本")}}},m=s=>(u("data-v-88c3fe69"),s=s(),h(),s),k={id:"app-demo-window"},v=m((()=>c("div",{class:"one-block-1"},[c("span",null," 1. 自动更新 ")],-1))),b={class:"one-block-2"},g=m((()=>c("div",{class:"one-block-1"},[c("span",null," 2. 下载进度 ")],-1))),_={class:"one-block-2"};const w=s(f,[["render",function(s,e,a,t,u,h){const f=o("a-button"),m=o("a-space"),w=o("a-progress");return n(),r("div",k,[v,c("div",b,[d(m,null,{default:l((()=>[d(f,{onClick:e[0]||(e[0]=s=>h.checkForUpdater())},{default:l((()=>[p("检查更新")])),_:1}),d(f,{onClick:e[1]||(e[1]=s=>h.download())},{default:l((()=>[p("下载并安装")])),_:1})])),_:1})]),g,c("div",_,[d(w,{percent:u.percentNumber,status:"active"},null,8,["percent"]),d(m,null,{default:l((()=>[p(i(u.progress),1)])),_:1})])])}],["__scopeId","data-v-88c3fe69"]]);export{w as default}; diff --git a/public/dist/assets/Index-28b1ea1d.js.gz b/public/dist/assets/Index-28b1ea1d.js.gz new file mode 100644 index 0000000..4254dae Binary files /dev/null and b/public/dist/assets/Index-28b1ea1d.js.gz differ diff --git a/public/dist/assets/Index-2aab5368.js b/public/dist/assets/Index-2aab5368.js new file mode 100644 index 0000000..28fa811 --- /dev/null +++ b/public/dist/assets/Index-2aab5368.js @@ -0,0 +1 @@ +import{_ as a,i as e,h as t,r as n,o as s,b as o,g as u,a as c,w as l,p as h,f as i}from"./index-ea5b20ee.js";const d={data:()=>({autoLaunchChecked:!1}),mounted(){this.init()},methods:{init(){e.invoke(t.autoLaunch,"check").then((a=>{console.log("[ipcRenderer] [autoLaunch] result:",a),this.autoLaunchChecked=a.status}))},autoLaunchChange(a){console.log("[ipcRenderer] [autoLaunch] self.autoLaunchChecked:",this.autoLaunchChecked)}}},r=a=>(h("data-v-1b008e01"),a=a(),i(),a),m={id:"app-base-system-launch"},C={class:"one-block-2"},L=r((()=>u("a",null,"启动",-1))),k=r((()=>u("span",null," 开机自动启动 ",-1)));const p=a(d,[["render",function(a,e,t,h,i,d){const r=n("a-list-item-meta"),p=n("a-switch"),f=n("a-list-item"),g=n("a-list");return s(),o("div",m,[u("div",C,[c(g,{class:"set-auto",itemLayout:"horizontal"},{default:l((()=>[c(f,{style:{"text-align":"left"}},{actions:l((()=>[c(p,{modelValue:i.autoLaunchChecked,"onUpdate:modelValue":e[0]||(e[0]=a=>i.autoLaunchChecked=a),checkedChildren:"开",unCheckedChildren:"关",onChange:e[1]||(e[1]=a=>d.autoLaunchChange())},null,8,["modelValue"])])),default:l((()=>[c(r,null,{title:l((()=>[L])),description:l((()=>[k])),_:1})])),_:1})])),_:1})])])}],["__scopeId","data-v-1b008e01"]]);export{p as default}; diff --git a/public/dist/assets/Index-2aab5368.js.gz b/public/dist/assets/Index-2aab5368.js.gz new file mode 100644 index 0000000..2fc2dd3 Binary files /dev/null and b/public/dist/assets/Index-2aab5368.js.gz differ diff --git a/public/dist/assets/Index-2fac77ef.js b/public/dist/assets/Index-2fac77ef.js new file mode 100644 index 0000000..e22de30 --- /dev/null +++ b/public/dist/assets/Index-2fac77ef.js @@ -0,0 +1 @@ +import{_ as e,i as t,h as o,j as n,r as a,o as l,b as s,g as i,a as d,w as c,e as w,p as v,f as u}from"./index-ea5b20ee.js";const m={data:()=>({views:[{type:"web",content:"https://www.baidu.com/"},{type:"html",content:"/public/html/view_example.html"}]}),methods:{loadViewContent(e){t.invoke(o.loadViewContent,n(this.views[e])).then((e=>{console.log(e)}))},removeViewContent(e){t.invoke(o.removeViewContent,n(this.views[e])).then((e=>{console.log(e)}))}}},p=e=>(v("data-v-792e445a"),e=e(),u(),e),h={id:"app-base-window-view"},r=p((()=>i("div",{class:"one-block-1"},[i("span",null," 1. 嵌入web内容 ")],-1))),C={class:"one-block-2"},b=p((()=>i("div",{class:"one-block-1"},[i("span",null," 2. 嵌入html内容 ")],-1))),f={class:"one-block-2"};const k=e(m,[["render",function(e,t,o,n,v,u){const m=a("a-button"),p=a("a-space");return l(),s("div",h,[r,i("div",C,[d(p,null,{default:c((()=>[d(m,{onClick:t[0]||(t[0]=e=>u.loadViewContent(0))},{default:c((()=>[w("加载百度页面")])),_:1}),d(m,{onClick:t[1]||(t[1]=e=>u.removeViewContent(0))},{default:c((()=>[w("移除百度页面")])),_:1})])),_:1})]),b,i("div",f,[d(p,null,{default:c((()=>[d(m,{onClick:t[2]||(t[2]=e=>u.loadViewContent(1))},{default:c((()=>[w("加载html页面")])),_:1}),d(m,{onClick:t[3]||(t[3]=e=>u.removeViewContent(1))},{default:c((()=>[w("移除html页面")])),_:1})])),_:1})])])}],["__scopeId","data-v-792e445a"]]);export{k as default}; diff --git a/public/dist/assets/Index-2fac77ef.js.gz b/public/dist/assets/Index-2fac77ef.js.gz new file mode 100644 index 0000000..aea2c20 Binary files /dev/null and b/public/dist/assets/Index-2fac77ef.js.gz differ diff --git a/public/dist/assets/Index-36bbde3b.css b/public/dist/assets/Index-36bbde3b.css new file mode 100644 index 0000000..6654c80 --- /dev/null +++ b/public/dist/assets/Index-36bbde3b.css @@ -0,0 +1 @@ +#app-cross-go[data-v-e1875343]{padding:0 10px;text-align:left;width:100%}#app-cross-go .one-block-1[data-v-e1875343]{font-size:16px;padding-top:10px}#app-cross-go .one-block-2[data-v-e1875343]{padding-top:10px} diff --git a/public/dist/assets/Index-40e608ea.js b/public/dist/assets/Index-40e608ea.js new file mode 100644 index 0000000..509701a --- /dev/null +++ b/public/dist/assets/Index-40e608ea.js @@ -0,0 +1 @@ +import{a as e}from"./logo-9754eb61.js";import{_ as a,i as n,h as o,r as t,o as i,b as l,g as s,a as c,w as p,e as d,l as u,v as g,p as m,f as r}from"./index-ea5b20ee.js";const y=""+new URL("login-48da88de.png",import.meta.url).href,h=Object.freeze(Object.defineProperty({__proto__:null,default:y},Symbol.toStringTag,{value:"Module"})),f=[{name:"对话框",type:"icon-duihuakuang"},{name:"闹钟",type:"icon-naozhong"},{name:"笑脸",type:"icon-xiaolian"},{name:"ok",type:"icon-ok"},{name:"风车",type:"icon-fengche"},{name:"汗颜",type:"icon-hanyan"},{name:"相机",type:"icon-xiangji"},{name:"礼物",type:"icon-liwu"},{name:"礼花",type:"icon-lihua"},{name:"扭蛋",type:"icon-niudan"},{name:"流星",type:"icon-liuxing"},{name:"风筝",type:"icon-fengzheng"},{name:"蛋糕",type:"icon-dangao"},{name:"泡泡",type:"icon-paopao"},{name:"购物",type:"icon-gouwu"},{name:"饮料",type:"icon-yinliao"},{name:"云彩",type:"icon-yuncai"},{name:"彩铅",type:"icon-caiqian"},{name:"纸飞机",type:"icon-zhifeiji"},{name:"点赞",type:"icon-dianzan"},{name:"煎蛋",type:"icon-jiandan"},{name:"小熊",type:"icon-xiaoxiong"},{name:"花",type:"icon-hua"},{name:"眼睛",type:"icon-yanjing"}],k=Object.assign({"/src/assets/login.png":h,"/src/assets/logo.png":e});Object.values(k).map((e=>e.default));const v={data:()=>({type:1,iconData:f,progressName:"",exePath:""}),methods:{exec(e){console.log("process:",process);const a={id:e};n.invoke(o.test,a).then((e=>{console.log("res:",e)}))},exec2(e){},getMac(){n.invoke(o.getAllMac,{}).then((e=>{console.log("macs :",e)}))},getOSMessage(){n.invoke(o.getOSMessage,{}).then((e=>{console.log("OS :",e)}))},setSound(){n.invoke(o.deviceLoudness,{value:100}).then((e=>{console.log("设置后的声音 :",e)}))},restart(){n.invoke(o.deviceRestart,{}).then((e=>{console.log("重启 :",e)}))},kill(){console.log(this.progressName),n.invoke(o.deviceKillName,this.progressName).then((e=>{console.log("关闭进程结果 :",e)}))},starExe(){console.log(this.exePath),n.invoke(o.deviceStarExe,this.exePath).then((e=>{console.log("启动程序 :",e)}))}}},x={id:"app-base-test-api"},_=(e=>(m("data-v-a36daad7"),e=e(),r(),e))((()=>s("div",{class:"one-block-1"},[s("span",null," 1. 测试一些操作系统api ")],-1))),b={class:"one-block-2"};const j=a(v,[["render",function(e,a,n,o,m,r){const y=t("a-button"),h=t("a-space");return i(),l("div",x,[_,s("div",b,[c(h,null,{default:p((()=>[c(y,{onClick:a[0]||(a[0]=e=>r.exec(1))},{default:p((()=>[d(" 点击 ")])),_:1}),c(y,{onClick:a[1]||(a[1]=e=>r.exec2(1))},{default:p((()=>[d(" 点击2 ")])),_:1}),c(y,{onClick:a[2]||(a[2]=e=>r.getMac())},{default:p((()=>[d(" 获取mac 列表 ")])),_:1}),c(y,{onClick:a[3]||(a[3]=e=>r.getOSMessage())},{default:p((()=>[d(" 获取系统信息 ")])),_:1}),c(y,{onClick:a[4]||(a[4]=e=>r.setSound())},{default:p((()=>[d(" 设置声音50")])),_:1}),c(y,{onClick:a[5]||(a[5]=e=>r.restart())},{default:p((()=>[d("重启")])),_:1})])),_:1}),c(h,null,{default:p((()=>[u(s("input",{"onUpdate:modelValue":a[6]||(a[6]=e=>m.progressName=e),placeholder:"请输入进程名称"},null,512),[[g,m.progressName]]),c(y,{onClick:a[7]||(a[7]=e=>r.kill())},{default:p((()=>[d(" kill 指定进程 ")])),_:1})])),_:1}),c(h,null,{default:p((()=>[u(s("input",{"onUpdate:modelValue":a[8]||(a[8]=e=>m.exePath=e),placeholder:"请输入程序地址"},null,512),[[g,m.exePath]]),c(y,{onClick:a[9]||(a[9]=e=>r.starExe())},{default:p((()=>[d(" 启动 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-a36daad7"]]);export{j as default}; diff --git a/public/dist/assets/Index-40e608ea.js.gz b/public/dist/assets/Index-40e608ea.js.gz new file mode 100644 index 0000000..f525acd Binary files /dev/null and b/public/dist/assets/Index-40e608ea.js.gz differ diff --git a/public/dist/assets/Index-4f01872f.js b/public/dist/assets/Index-4f01872f.js new file mode 100644 index 0000000..9170ae9 --- /dev/null +++ b/public/dist/assets/Index-4f01872f.js @@ -0,0 +1 @@ +import{i as e}from"./main-ce25b28f.js";import{i as t}from"./ipcRenderer-5e19eaee.js";import{_ as i,h as s,r as a,o as n,b as l,g as o,a as r,w as d,e as c,t as u,p as m,f as v}from"./index-265ac112.js";const p={data:()=>({defaultDeviceName:"",printerList:[],views:[{type:"html",content:"/public/html/view_example.html"}]}),mounted(){this.init()},methods:{init(){t.removeAllListeners(e.printStatus),t.on(e.printStatus,((e,t)=>{console.log("result",t),this.$message.info("打印中...")}))},getPrinter(){t.invoke(e.getPrinterList,{}).then((e=>{this.printerList=e}))},doPrint(i){console.log("defaultDeviceName:",this.defaultDeviceName);const a={view:s(this.views[i]),deviceName:this.defaultDeviceName};t.send(e.print,a)},defaultDevice(e){let t="";return e.isDefault&&(t="- 默认",this.defaultDeviceName=e.name),t}}},f=e=>(m("data-v-b732860b"),e=e(),v(),e),h={id:"app-hw-bluetooth"},b=f((()=>o("div",{class:"one-block-1"},[o("span",null," 1. 打印机设备 ")],-1))),k={class:"one-block-2"},D={class:"one-block-2"},_=f((()=>o("div",null,"设备列表",-1))),g=f((()=>o("div",{class:"one-block-1"},[o("span",null," 2. 打印内容 ")],-1))),w={class:"one-block-2"};const N=i(p,[["render",function(e,t,i,s,m,v){const p=a("a-button"),f=a("a-list-item"),N=a("a-list");return n(),l("div",h,[b,o("div",k,[r(p,{onClick:t[0]||(t[0]=e=>v.getPrinter())},{default:d((()=>[c(" 获取打印机列表 ")])),_:1})]),o("div",D,[r(N,{size:"small",bordered:"","data-source":m.printerList},{renderItem:d((({item:e})=>[r(f,null,{default:d((()=>[c(u(e.displayName)+" "+u(v.defaultDevice(e)),1)])),_:2},1024)])),header:d((()=>[_])),_:1},8,["data-source"])]),g,o("div",w,[r(p,{onClick:t[1]||(t[1]=e=>v.doPrint(0))},{default:d((()=>[c(" 打印一个页面 ")])),_:1})])])}],["__scopeId","data-v-b732860b"]]);export{N as default}; diff --git a/public/dist/assets/Index-4f01872f.js.gz b/public/dist/assets/Index-4f01872f.js.gz new file mode 100644 index 0000000..5f35665 Binary files /dev/null and b/public/dist/assets/Index-4f01872f.js.gz differ diff --git a/public/dist/assets/Index-5604ce8f.js b/public/dist/assets/Index-5604ce8f.js new file mode 100644 index 0000000..4c22ce2 --- /dev/null +++ b/public/dist/assets/Index-5604ce8f.js @@ -0,0 +1 @@ +import{_ as e,i as a,h as s,r as t,o as r,b as o,g as i,a as n,w as d,e as v,p as c,f as l}from"./index-ea5b20ee.js";import{a as m}from"./index-1ef15d1b.js";import{s as u}from"./store2-204267a2.js";const f={data:()=>({server:""}),methods:{startServer(){a.invoke(s.startJavaServer,{}).then((e=>{0!=e.code?this.$message.error(e.msg):(this.$message.info("异步启动"),u.set("javaService",e.server))}))},closeServer(){a.invoke(s.closeJavaServer,{}).then((e=>{0!=e.code&&this.$message.error(e.msg),this.$message.info("异步关闭"),u.remove("javaService")}))},sendRequest(){const e=u.get("javaService")||"";if(""==e)return void this.$message.error("服务未开启 或 正在启动中");m({method:"get",url:e+"/test1/get",params:{id:"1111111"},timeout:6e4}).then((e=>{const a=e.data||null;this.$message.info(`java服务返回: ${a}`)}))}}},h={id:"app-other"},g=(e=>(c("data-v-da7e5fd3"),e=e(),l(),e))((()=>i("div",{class:"one-block-1"},[i("span",null," 请求java服务接口 ")],-1))),p={class:"one-block-2"};const j=e(f,[["render",function(e,a,s,c,l,m){const u=t("a-button"),f=t("a-space");return r(),o("div",h,[g,i("div",p,[n(f,null,{default:d((()=>[n(u,{onClick:a[0]||(a[0]=e=>m.startServer())},{default:d((()=>[v(" 启动java项目 ")])),_:1}),n(u,{onClick:a[1]||(a[1]=e=>m.sendRequest())},{default:d((()=>[v(" 测试接口 ")])),_:1}),n(u,{onClick:a[2]||(a[2]=e=>m.closeServer())},{default:d((()=>[v(" 关闭java项目 ")])),_:1})])),_:1})])])}],["__scopeId","data-v-da7e5fd3"]]);export{j as default}; diff --git a/public/dist/assets/Index-5604ce8f.js.gz b/public/dist/assets/Index-5604ce8f.js.gz new file mode 100644 index 0000000..8e41f59 Binary files /dev/null and b/public/dist/assets/Index-5604ce8f.js.gz differ diff --git a/public/dist/assets/Index-58506a1f.js b/public/dist/assets/Index-58506a1f.js new file mode 100644 index 0000000..40d9d10 --- /dev/null +++ b/public/dist/assets/Index-58506a1f.js @@ -0,0 +1,24 @@ +import{i as e}from"./main-ce25b28f.js";import{i as t}from"./ipcRenderer-5e19eaee.js";import{i as n,j as r,_ as i,h as a,o,b as l,p as s,f as u,g as c}from"./index-265ac112.js";var p={exports:{}};const d=r(p.exports=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=79)}([function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.util=t.PresentationMode=void 0,t.createDom=o,t.hasClass=l,t.addClass=s,t.removeClass=u,t.toggleClass=c,t.findDom=p,t.padStart=d,t.format=f,t.event=g,t.typeOf=h,t.deepCopy=y,t.getBgImage=v,t.copyDom=x,t._setInterval=m,t._clearInterval=b,t.createImgBtn=k,t.isWeiXin=w,t.isUc=_,t.computeWatchDur=E,t.offInDestroy=T,t.on=C,t.once=S,t.getBuffered2=P,t.checkIsBrowser=O,t.setStyle=L,t.checkWebkitSetPresentationMode=function(e){return"function"==typeof e.webkitSetPresentationMode};var r,i=n(7),a=(r=i)&&r.__esModule?r:{default:r};function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"div",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=document.createElement(e);return i.className=r,i.innerHTML=t,Object.keys(n).forEach((function(t){var r=t,a=n[t];"video"===e||"audio"===e?a&&i.setAttribute(r,a):i.setAttribute(r,a)})),i}function l(e,t){return!!e&&(e.classList?Array.prototype.some.call(e.classList,(function(e){return e===t})):!!e.className&&!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)")))}function s(e,t){e&&(e.classList?t.replace(/(^\s+|\s+$)/g,"").split(/\s+/g).forEach((function(t){t&&e.classList.add(t)})):l(e,t)||(e.className+=" "+t))}function u(e,t){e&&(e.classList?t.split(/\s+/g).forEach((function(t){e.classList.remove(t)})):l(e,t)&&t.split(/\s+/g).forEach((function(t){var n=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(n," ")})))}function c(e,t){e&&t.split(/\s+/g).forEach((function(t){l(e,t)?u(e,t):s(e,t)}))}function p(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=arguments[1],n=void 0;try{n=e.querySelector(t)}catch(r){0===t.indexOf("#")&&(n=e.getElementById(t.slice(1)))}return n}function d(e,t,n){for(var r=String(n),i=t>>0,a=Math.ceil(i/r.length),o=[],l=String(e);a--;)o.push(r);return o.join("").substring(0,i-l.length)+l}function f(e){if(window.isNaN(e))return"";var t=d(Math.floor(e/3600),2,0),n=d(Math.floor((e-3600*t)/60),2,0),r=d(Math.floor(e-3600*t-60*n),2,0);return("00"===t?[n,r]:[t,n,r]).join(":")}function g(e){if(e.touches){var t=e.touches[0]||e.changedTouches[0];e.clientX=t.clientX||0,e.clientY=t.clientY||0,e.offsetX=t.pageX-t.target.offsetLeft,e.offsetY=t.pageY-t.target.offsetTop}e._target=e.target||e.srcElement}function h(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]}function y(e,t){if("Object"===h(t)&&"Object"===h(e))return Object.keys(t).forEach((function(n){"Object"!==h(t[n])||t[n]instanceof Node?"Array"===h(t[n])?e[n]="Array"===h(e[n])?e[n].concat(t[n]):t[n]:e[n]=t[n]:e[n]?y(e[n],t[n]):e[n]=t[n]})),e}function v(e){var t=(e.currentStyle||window.getComputedStyle(e,null)).backgroundImage;if(!t||"none"===t)return"";var n=document.createElement("a");return n.href=t.replace(/url\("|"\)/g,""),n.href}function x(e){if(e&&1===e.nodeType){var t=document.createElement(e.tagName);return Array.prototype.forEach.call(e.attributes,(function(e){t.setAttribute(e.name,e.value)})),e.innerHTML&&(t.innerHTML=e.innerHTML),t}return""}function m(e,t,n,r){e._interval[t]||(e._interval[t]=setInterval(n.bind(e),r))}function b(e,t){clearInterval(e._interval[t]),e._interval[t]=null}function k(e,t,n,r){var i=o("xg-"+e,"",{},"xgplayer-"+e+"-img");if(i.style.backgroundImage='url("'+t+'")',n&&r){var a=void 0,l=void 0,s=void 0;["px","rem","em","pt","dp","vw","vh","vm","%"].every((function(e){return!(n.indexOf(e)>-1&&r.indexOf(e)>-1&&(a=Number(n.slice(0,n.indexOf(e)).trim()),l=Number(r.slice(0,r.indexOf(e)).trim()),s=e,1))})),i.style.width=""+a+s,i.style.height=""+l+s,i.style.backgroundSize=""+a+s+" "+l+s,i.style.margin="start"===e?"-"+l/2+s+" auto auto -"+a/2+s:"auto 5px auto 5px"}return i}function w(){return window.navigator.userAgent.toLowerCase().indexOf("micromessenger")>-1}function _(){return window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")>-1}function E(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=0;nt[r].end)){var o=t[r].begin,l=t[r].end;t[r].begin=Math.min(i,o),t[r].end=Math.max(a,l);break}if(r>t.length-2){t.push({begin:i,end:a});break}}for(var s=0,u=0;u1&&void 0!==arguments[1]?arguments[1]:.5,n=[],r=0;rs&&(i[l-1].end=n[o].end):i.push(n[o])}else i.push(n[o])}else i=n;return new a.default(i)}function O(){return!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)}function L(e,t,n){var r=e.style;try{r[t]=n}catch(i){r.setProperty(t,n)}}t.PresentationMode={PIP:"picture-in-picture",INLINE:"inline",FULLSCREEN:"fullscreen"},t.util={createDom:o,hasClass:l,addClass:s,removeClass:u,toggleClass:c,findDom:p,padStart:d,format:f,event:g,typeOf:h,deepCopy:y,getBgImage:v,copyDom:x,setInterval:m,clearInterval:b,createImgBtn:k,isWeiXin:w,isUc:_,computeWatchDur:E,offInDestroy:T,on:C,once:S,getBuffered2:P,checkIsBrowser:O,setStyle:L}},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n,r=e[1]||"",i=e[3];if(!i)return r;if(t&&"function"==typeof btoa){var a=(n=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"),o=i.sources.map((function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"}));return[r].concat(o).concat([a]).join("\n")}return[r].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&p.splice(t,1)}function v(e){var t=document.createElement("style");return e.attrs.type="text/css",x(t,e.attrs),h(e,t),t}function x(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function m(e,t){var n,r,i,a;if(t.transform&&e.css){if(!(a=t.transform(e.css)))return function(){};e.css=a}if(t.singleton){var o=c++;n=u||(u=v(t)),r=w.bind(null,n,o,!1),i=w.bind(null,n,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",x(t,e.attrs),h(e,t),t}(t),r=E.bind(null,n,t),i=function(){y(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(t),r=_.bind(null,n),i=function(){y(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=g(e,t);return f(n,t),function(e){for(var r=[],i=0;i8&&void 0!==arguments[8]?arguments[8]:{line:"",handle:"",msg:"",version:""},d=arguments[9],f=arguments[10];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var g={};if(arguments.length>1)g.playerVersion=r.version,g.errorType=t,g.domain=document.domain,g.duration=a,g.currentTime=n,g.networkState=o,g.readyState=l,g.currentSrc=u,g.src=s,g.ended=c,g.errd=p,g.ex=(i[t]||{}).msg,g.errorCode=d,g.mediaError=f;else{var h=arguments[0];Object.keys(h).map((function(e){g[e]=h[e]})),g.ex=(h.type&&i[h.type]||{}).msg}return g},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r={};Object.defineProperty(r,"device",{get:function(){return r.os.isPc?"pc":"mobile"}}),Object.defineProperty(r,"browser",{get:function(){var e=navigator.userAgent.toLowerCase(),t={ie:/rv:([\d.]+)\) like gecko/,firfox:/firefox\/([\d.]+)/,chrome:/chrome\/([\d.]+)/,opera:/opera.([\d.]+)/,safari:/version\/([\d.]+).*safari/};return[].concat(Object.keys(t).filter((function(n){return t[n].test(e)})))[0]||""}}),Object.defineProperty(r,"os",{get:function(){var e=navigator.userAgent,t=/(?:Windows Phone)/.test(e),n=/(?:SymbianOS)/.test(e)||t,r=/(?:Android)/.test(e),i=/(?:Firefox)/.test(e),a=/(?:iPad|PlayBook)/.test(e)||r&&!/(?:Mobile)/.test(e)||i&&/(?:Tablet)/.test(e),o=/(?:iPhone)/.test(e)&&!a;return{isTablet:a,isPhone:o,isAndroid:r,isPc:!(o||r||n||a),isSymbian:n,isWindowsPhone:t,isFireFox:i}}}),t.default=r,e.exports=t.default},function(e,t,n){e.exports=function(e){return null!=e}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;nthis.video.videoWidth/this.video.videoHeight?a.root.style.height=this.video.videoHeight/this.video.videoWidth*e.width+"px":a.root.style.width=this.video.videoWidth/this.video.videoHeight*e.height+"px":"fixWidth"===a.config.fitVideoSize?a.root.style.height=this.video.videoHeight/this.video.videoWidth*e.width+"px":"fixHeight"===a.config.fitVideoSize&&(a.root.style.width=this.video.videoWidth/this.video.videoHeight*e.height+"px")}},a.once("loadeddata",n.getVideoSize),setTimeout((function(){n.emit("ready"),n.isReady=!0}),0),n.config.videoInit&&(0,o.hasClass)(n.root,"xgplayer-nostart")&&n.start(),a.config.rotate&&(a.on("requestFullscreen",n.updateRotateDeg),a.on("exitFullscreen",n.updateRotateDeg)),a.once("destroy",(function e(){a.root.removeEventListener("mousemove",a.mousemoveFunc),a.off("destroy",e)})),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"attachVideo",value:function(){var e=this;this.video&&1===this.video.nodeType&&this.root.insertBefore(this.video,this.root.firstChild),setTimeout((function(){e.emit("complete"),e.danmu&&"function"==typeof e.danmu.resize&&e.danmu.resize()}),1)}},{key:"start",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.config.url;if(this.video){var n=this;t&&""!==t?(this.canPlayFunc=function(){n.off("canplay",n.canPlayFunc);var e=n.video.play();void 0!==e&&e&&e.then((function(){n.emit("autoplay started")})).catch((function(){n.emit("autoplay was prevented"),(0,o.addClass)(n.root,"xgplayer-is-autoplay")}))},"Array"!==(0,o.typeOf)(t)?"String"===(0,o.typeOf)(t)&&t.indexOf("blob:")>-1&&t===this.video.src||(this.video.src=t):t.forEach((function(t){e.video.appendChild((0,o.createDom)("source","",{src:""+t.src,type:""+(t.type||"")}))})),this.config.autoplay&&(l.default.os.isPhone?this.canPlayFunc():this.on("canplay",this.canPlayFunc)),this.config.disableStartLoad||this.video.load(),this.attachVideo()):this.emit("urlNull")}}},{key:"reload",value:function(){this.video.load(),this.reloadFunc=function(){var e=this.play();void 0!==e&&e&&e.catch((function(e){}))},this.once("loadeddata",this.reloadFunc)}},{key:"destroy",value:function(){var e=this,n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=this;for(var a in clearInterval(this.bulletResizeTimer),this._interval)clearInterval(this._interval[a]),this._interval[a]=null;this.checkTimer&&clearInterval(this.checkTimer),this.waitTimer&&clearTimeout(this.waitTimer),this.ev.forEach((function(t){var n=Object.keys(t)[0],r=e[t[n]];r&&e.off(n,r)})),this.loadeddataFunc&&this.off("loadeddata",this.loadeddataFunc),this.reloadFunc&&this.off("loadeddata",this.reloadFunc),this.replayFunc&&this.off("play",this.replayFunc),this.playFunc&&this.off("play",this.playFunc),this.getVideoSize&&this.off("loadeddata",this.getVideoSize),["focus","blur"].forEach((function(t){e.off(t,e["on"+t.charAt(0).toUpperCase()+t.slice(1)])})),this.config.keyShortcut&&"on"!==this.config.keyShortcut||["video","controls"].forEach((function(t){e[t]&&e[t].removeEventListener("keydown",(function(e){r.onKeydown(e,r)}))})),function(){if(this.emit("destroy"),this.video.removeAttribute("src"),this.video.load(),n){this.root.innerHTML="";var e=this.root.className.split(" ");e.length>0?this.root.className=e.filter((function(e){return e.indexOf("xgplayer")<0})).join(" "):this.root.className=""}for(var t in this)delete this[t];(0,c.default)(this)}.call(this),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"replay",value:function(){var e=this._replay;if((0,o.removeClass)(this.root,"xgplayer-ended"),l.default.browser.indexOf("ie")>-1&&(this.emit("play"),this.emit("playing")),e&&e instanceof Function)e();else{this.currentTime=0;var t=this.play();void 0!==t&&t&&t.catch((function(e){}))}}},{key:"userGestureTrigEvent",value:function(e,t){var n=this,r=function(e,t){n.emit(e,t)};this.config.userGestureEventMiddleware&&"function"==typeof this.config.userGestureEventMiddleware[e]?this.config.userGestureEventMiddleware[e].call(this,this,e,t,r):r.call(this,e,t)}},{key:"pluginsCall",value:function(){var e=this;t.plugins.s_i18n&&t.plugins.s_i18n.call(this,this);var n=this;if(t.plugins){var r=this.config.ignores;Object.keys(t.plugins).forEach((function(i){var a=t.plugins[i];a&&"function"==typeof a?r.some((function(e){return i===e||i==="s_"+e}))||"s_i18n"===i||(["pc","tablet","mobile"].some((function(e){return e===i}))?i===l.default.device&&setTimeout((function(){n.video&&a.call(n,n)}),0):a.call(e,e)):console.warn("plugin name",i,"is invalid")}))}}},{key:"onFocus",value:function(){var e=this;(0,o.hasClass)(this.root,"xgplayer-inactive")&&e.emit("controlShow"),(0,o.removeClass)(this.root,"xgplayer-inactive"),e.userTimer&&clearTimeout(e.userTimer),e.userTimer=setTimeout((function(){e.emit("blur")}),e.config.inactive)}},{key:"onBlur",value:function(){!this.config.enablePausedInactive&&this.paused||this.ended||this.config.closeInactive||((0,o.hasClass)(this.root,"xgplayer-inactive")||this.emit("controlHide"),(0,o.addClass)(this.root,"xgplayer-inactive"))}},{key:"onPlay",value:function(){(0,o.addClass)(this.root,"xgplayer-isloading"),(0,o.addClass)(this.root,"xgplayer-playing"),(0,o.removeClass)(this.root,"xgplayer-pause")}},{key:"onPause",value:function(){(0,o.addClass)(this.root,"xgplayer-pause"),this.userTimer&&clearTimeout(this.userTimer),this.emit("focus")}},{key:"onEnded",value:function(){(0,o.addClass)(this.root,"xgplayer-ended"),(0,o.removeClass)(this.root,"xgplayer-playing")}},{key:"onSeeking",value:function(){this.isSeeking=!0,this.onWaiting()}},{key:"onSeeked",value:function(){var e=this;this.once("timeupdate",(function(){e.isSeeking=!1})),this.waitTimer&&clearTimeout(this.waitTimer),(0,o.removeClass)(this.root,"xgplayer-isloading")}},{key:"onWaiting",value:function(){var e=this;e.waitTimer&&clearTimeout(e.waitTimer),e.checkTimer&&(clearInterval(e.checkTimer),e.checkTimer=null);var t=e.currentTime;e.waitTimer=setTimeout((function(){(0,o.addClass)(e.root,"xgplayer-isloading"),e.checkTimer=setInterval((function(){e.currentTime!==t&&((0,o.removeClass)(e.root,"xgplayer-isloading"),clearInterval(e.checkTimer),e.checkTimer=null)}),1e3)}),500)}},{key:"onPlaying",value:function(){this.paused||(this.isSeeking=!1,this.waitTimer&&clearTimeout(this.waitTimer),(0,o.removeClass)(this.root,"xgplayer-isloading xgplayer-nostart xgplayer-pause xgplayer-ended xgplayer-is-error xgplayer-replay"),(0,o.addClass)(this.root,"xgplayer-playing"))}}],[{key:"install",value:function(e,n){(0,o.checkIsBrowser)()&&(t.plugins||(t.plugins={}),t.plugins[e]||(t.plugins[e]=n))}},{key:"installAll",value:function(e){for(var n=0;n0&&!t.nativeTextTrack.some((function(e){return e.default}))&&(t.nativeTextTrack[0].default=!0,this.textTrackShowDefault=!1),t.nativeTextTrack.some((function(e){if(e.src&&e.label&&e.default)return r+='",!0})),this.videoConfig.crossorigin="anonymous"),t.textTrackStyle){var o=document.createElement("style");this.textTrackStyle=o,document.head.appendChild(o);var l="";for(var s in t.textTrackStyle)l+=s+": "+t.textTrackStyle[s]+";";var u=t.id?"#"+t.id:t.el.id?"#"+t.el.id:"."+t.el.className;o.sheet.insertRule?o.sheet.insertRule(u+" video::cue { "+l+" }",0):o.sheet.addRule&&o.sheet.addRule(u+" video::cue",l)}var c=t.el?t.el:(0,a.findDom)(document,"#"+t.id),p=this.constructor.XgVideoProxy;p&&this.videoConfig.mediaType===p.mediaType?this.video=new p(c,t):this.video=(0,a.createDom)(this.videoConfig.mediaType,r,this.videoConfig,""),t.videoStyle&&Object.keys(t.videoStyle).forEach((function(e){(0,a.setStyle)(n.video,e,t.videoStyle[e])})),!this.textTrackShowDefault&&r&&(this.video.getElementsByTagName("Track")[0].track.mode="hidden"),t.autoplay&&(this.video.autoplay=!0,t.autoplayMuted&&(this.video.muted=!0)),this.ev=["play","playing","pause","ended","error","seeking","seeked","progress","timeupdate","waiting","canplay","canplaythrough","durationchange","volumechange","ratechange","loadedmetadata","loadeddata","loadstart"].map((function(e){return t={},n=e,r="on"+e.charAt(0).toUpperCase()+e.slice(1),n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t;var t,n,r})),(0,i.default)(this),this._interval={};var d="0,0",f=this,g=function(e){n&&("play"===e?n.hasStart=!0:"canplay"===e?(0,a.removeClass)(n.root,"xgplayer-is-enter"):"waiting"===e?n.inWaitingStart=(new Date).getTime():"playing"===e&&((0,a.removeClass)(n.root,"xgplayer-is-enter"),n.inWaitingStart&&(n.inWaitingStart=void 0)),"error"===e?n._onError(e):n.emit(e,n),n.hasOwnProperty("_interval")&&(["ended","error","timeupdate"].indexOf(e)<0?((0,a._clearInterval)(n,"bufferedChange"),(0,a._setInterval)(n,"bufferedChange",(function(){if(this.video&&this.video.buffered){for(var e=[],t=0,n=this.video.buffered.length;t-1}},function(e,t,n){e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},function(e,t,n){var r=n(32),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t,n=arguments[1];if(r(e),void 0===n)i.call(e,"__ee__")&&delete e.__ee__;else{if(!(t=i.call(e,"__ee__")&&e.__ee__))return;t[n]&&delete t[n]}}},function(e,t,n){var r=n(33);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not an Object");return e}},function(e,t,n){var r=n(3),i={function:!0,object:!0};e.exports=function(e){return r(e)&&i[typeof e]||!1}},function(e,t,n){var r=n(35);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default{background:#000;width:100%;height:100%;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-ms-user-select:none}.xgplayer-skin-default *{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;white-space:normal;word-wrap:normal}.xgplayer-skin-default.xgplayer-rotate-fullscreen{position:absolute;top:0;left:100%;bottom:0;right:0;height:100vw!important;width:100vh!important;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.xgplayer-skin-default.xgplayer-is-fullscreen{width:100%!important;height:100%!important;padding-top:0!important;z-index:9999}.xgplayer-skin-default.xgplayer-is-fullscreen.xgplayer-inactive{cursor:none}.xgplayer-skin-default video{width:100%;height:100%;outline:none}.xgplayer-skin-default .xgplayer-none{display:none}@-webkit-keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}@keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}.xgplayer-skin-default .xgplayer-controls{display:-webkit-flex;display:-moz-box;display:flex;position:absolute;bottom:0;left:0;right:0;height:40px;background-image:linear-gradient(180deg,transparent,rgba(0,0,0,.37),rgba(0,0,0,.75),rgba(0,0,0,.75));z-index:10}.xgplayer-skin-default.xgplayer-inactive .xgplayer-controls,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-progress,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-time,.xgplayer-skin-default.xgplayer-no-controls .xgplayer-controls,.xgplayer-skin-default.xgplayer-nostart .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-live{display:block}.xgplayer-skin-default .xgplayer-live{display:block;font-size:12px;color:#fff;line-height:40px;-webkit-order:1;-moz-box-ordinal-group:2;order:1}.xgplayer-skin-default .xgplayer-icon{display:block;width:40px;height:40px;overflow:hidden;fill:#fff}.xgplayer-skin-default .xgplayer-icon svg{position:absolute}.xgplayer-skin-default .xgplayer-tips{background:rgba(0,0,0,.54);border-radius:1px;display:none;position:absolute;font-family:PingFangSC-Regular;font-size:11px;color:#fff;padding:2px 4px;text-align:center;top:-30px;left:50%;margin-left:-16px;width:auto;white-space:nowrap}.xgplayer-skin-default.xgplayer-mobile .xgplayer-tips{display:none!important}.xgplayer-skin-default .xgplayer-screen-container{display:block;width:100%}",""])},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var i,a=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(a)?e:(i=0===a.indexOf("//")?a:0===a.indexOf("/")?n+a:r+a.replace(/^\.\//,""),"url("+JSON.stringify(i)+")")}))}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"mobile",method:function(){var e=this,t=e.root,n=0,i=void 0,a={first:"",second:""};function o(t){e.video.addEventListener("touchend",(function(t){e.onElementTouchend(t,e.video)})),e.video.addEventListener("touchstart",(function(){e.isTouchMove=!1})),e.video.addEventListener("touchmove",(function(){e.isTouchMove=!0})),e.config.autoplay&&e.start()}e.onElementTouchend=function(e,o){this.config.closeVideoPreventDefault||e.preventDefault(),this.config.closeVideoStopPropagation||e.stopPropagation();var l=this;if((0,r.hasClass)(t,"xgplayer-inactive")?l.emit("focus"):l.emit("blur"),!l.config.closeVideoTouch&&!l.isTouchMove){var s=function(){i=setTimeout((function(){if((0,r.hasClass)(l.root,"xgplayer-nostart"))return!1;if(!l.ended)if(l.paused){var e=l.play();void 0!==e&&e&&e.catch((function(e){}))}else l.pause();n=0}),200)};l.config.closeVideoClick||(n++,i&&clearTimeout(i),1===n?l.config.enableVideoDbltouch?a.first=new Date:s():2===n&&l.config.enableVideoDbltouch?(a.second=new Date,Math.abs(a.first-a.second)<400?s():(a.first=new Date,n=1)):n=0)}},e.once("ready",o),e.once("destroy",(function t(){e.off("ready",o),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"pc",method:function(){var e=this;if(e.controls&&e.video){var t=e.controls,n=e.root,i=0,a=void 0;e.onElementClick=function(e,t){this.config.closeVideoPreventDefault||e.preventDefault(),this.config.closeVideoStopPropagation||e.stopPropagation();var n=this;n.config.closeVideoClick||(i++,a&&clearTimeout(a),1===i?a=setTimeout((function(){if((0,r.hasClass)(n.root,"xgplayer-nostart"))return!1;if(!n.ended)if(n.paused){var e=n.play();void 0!==e&&e&&e.catch((function(e){}))}else n.pause();i=0}),200):i=0)},e.video.addEventListener("click",(function(t){e.onElementClick(t,e.video)}),!1),e.onElementDblclick=function(e,n){if(this.config.closeVideoPreventDefault||e.preventDefault(),this.config.closeVideoStopPropagation||e.stopPropagation(),!this.config.closeVideoDblclick){var r=t.querySelector(".xgplayer-fullscreen");if(r){var i=void 0;document.createEvent?(i=document.createEvent("Event")).initEvent("click",!0,!0):i=new Event("click"),r.dispatchEvent(i)}}},e.video.addEventListener("dblclick",(function(t){e.onElementDblclick(t,e.video)}),!1),n.addEventListener("mouseenter",o),n.addEventListener("mouseleave",l),t.addEventListener("mouseenter",s),t.addEventListener("mouseleave",u),t.addEventListener("click",c),e.once("ready",p),e.once("destroy",(function t(){n.removeEventListener("mouseenter",o),n.removeEventListener("mouseleave",l);var r=e.controls;r&&(r.removeEventListener("mouseleave",u),r.removeEventListener("mouseenter",s),r.removeEventListener("click",c)),e.off("ready",p),e.off("destroy",t)}))}function o(){clearTimeout(e.leavePlayerTimer),e.emit("focus",e)}function l(){e.config.closePlayerBlur||(e.leavePlayerTimer=setTimeout((function(){e.emit("blur",e)}),e.config.leavePlayerTime||0))}function s(t){e.userTimer&&clearTimeout(e.userTimer)}function u(t){e.config.closeControlsBlur||e.emit("focus",e)}function c(e){e.preventDefault(),e.stopPropagation()}function p(t){e.config.autoplay&&e.start()}}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"start",method:function(){var e=this,t=e.root;function n(){e.off("canplay",n);var t=e.play();void 0!==t&&t&&t.catch((function(e){}))}function i(){(0,r.hasClass)(t,"xgplayer-nostart")?((0,r.removeClass)(t,"xgplayer-nostart"),(0,r.addClass)(t,"xgplayer-is-enter"),"function"==typeof t.contains?e.video&&1===e.video.nodeType&&!t.contains(e.video)||e.video&&1!==e.video.nodeType&&void 0===e.video.mediaSource?(e.once("canplay",n),e.start()):n():e.video&&1===e.video.nodeType&&!t.querySelector(this.videoConfig.mediaType)||e.video&&1!==e.video.nodeType&&void 0===e.video.mediaSource?(e.once("canplay",n),e.start()):n()):e.paused&&((0,r.removeClass)(t,"xgplayer-nostart xgplayer-isloading"),setTimeout((function(){var t=e.play();void 0!==t&&t&&t.catch((function(e){}))}),10))}e.on("startBtnClick",i),e.once("destroy",(function t(){e.off("startBtnClick",i),e.off("canplay",n),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=o(n(41)),a=o(n(42));function o(e){return e&&e.__esModule?e:{default:e}}n(43),t.default={name:"s_start",method:function(){var e=this,t=e.root,n=(0,r.createDom)("xg-start",'
'+i.default+'
\n
'+a.default+"
",{},"xgplayer-start");function o(e){(0,r.addClass)(e.root,"xgplayer-skin-default"),e.config&&(e.config.autoplay&&!(0,r.isWeiXin)()&&!(0,r.isUc)()&&(0,r.addClass)(e.root,"xgplayer-is-enter"),e.config.lang&&"en"===e.config.lang?(0,r.addClass)(e.root,"xgplayer-lang-is-en"):"jp"===e.config.lang&&(0,r.addClass)(e.root,"xgplayer-lang-is-jp"),e.config.enableContextmenu||e.video.addEventListener("contextmenu",(function(e){e.preventDefault(),e.stopPropagation()})))}e.config&&e.config.hideStartBtn&&(0,r.addClass)(t,"xgplayer-start-hide"),e.isReady?(t.appendChild(n),o(e)):e.once("ready",(function(){t.appendChild(n),o(e)})),e.once("autoplay was prevented",(function(){(0,r.removeClass)(e.root,"xgplayer-is-enter"),(0,r.addClass)(e.root,"xgplayer-nostart")})),e.once("canplay",(function(){(0,r.removeClass)(e.root,"xgplayer-is-enter")})),n.onclick=function(t){t.preventDefault(),t.stopPropagation(),e.userGestureTrigEvent("startBtnClick")}}},e.exports=t.default},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){var r=n(44);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-start{border-radius:50%;display:inline-block;width:70px;height:70px;background:rgba(0,0,0,.38);overflow:hidden;text-align:center;line-height:70px;vertical-align:middle;position:absolute;left:50%;top:50%;z-index:115;margin:-35px auto auto -35px;cursor:pointer}.xgplayer-skin-default .xgplayer-start div{position:absolute}.xgplayer-skin-default .xgplayer-start div svg{fill:hsla(0,0%,100%,.7)}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-start:hover{opacity:.85}.xgplayer-skin-default.xgplayer-pause.xgplayer-start-hide .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-start-hide .xgplayer-start{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start{display:inline-block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start,.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-pause{display:none}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"fullscreen",method:function(){var e=this,t=e.root;function n(){e.config.rotateFullscreen?(0,r.hasClass)(t,"xgplayer-rotate-fullscreen")?e.exitRotateFullscreen():e.getRotateFullscreen():(0,r.hasClass)(t,"xgplayer-is-fullscreen")?e.exitFullscreen(t):e.getFullscreen(t)}function i(){var n=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;n&&n===t?((0,r.addClass)(t,"xgplayer-is-fullscreen"),e.emit("requestFullscreen")):(0,r.hasClass)(t,"xgplayer-is-fullscreen")&&((0,r.removeClass)(t,"xgplayer-is-fullscreen"),e.emit("exitFullscreen")),e.danmu&&"function"==typeof e.danmu.resize&&e.danmu.resize()}function a(n){e.video.webkitPresentationMode!==r.PresentationMode.FULLSCREEN&&((0,r.removeClass)(t,"xgplayer-is-fullscreen"),e.emit("exitFullscreen"))}e.on("fullscreenBtnClick",n),["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"].forEach((function(e){document.addEventListener(e,i)})),e.video.addEventListener("webkitbeginfullscreen",(function(){(0,r.addClass)(t,"xgplayer-is-fullscreen"),e.emit("requestFullscreen")})),e.video.addEventListener("webkitendfullscreen",(function(){(0,r.removeClass)(t,"xgplayer-is-fullscreen"),e.emit("exitFullscreen")})),(0,r.checkWebkitSetPresentationMode)(e.video)&&e.video.addEventListener("webkitpresentationmodechanged",a),e.once("destroy",(function t(){e.off("fullscreenBtnClick",n),["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"].forEach((function(e){document.removeEventListener(e,i)})),(0,r.checkWebkitSetPresentationMode)(e.video)&&e.video.removeEventListener("webkitpresentationmodechanged",a),e.off("destroy",t)})),e.getFullscreen=function(e){var t=this;if(e.requestFullscreen){var n=e.requestFullscreen();n&&n.catch((function(){t.emit("fullscreen error")}))}else e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen(window.Element.ALLOW_KEYBOARD_INPUT):t.video.webkitSupportsFullscreen?t.video.webkitEnterFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():(0,r.addClass)(e,"xgplayer-is-cssfullscreen")},e.exitFullscreen=function(e){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,r.removeClass)(e,"xgplayer-is-cssfullscreen")},e.getRotateFullscreen=function(){var e=this;document.documentElement.style.width="100%",document.documentElement.style.height="100%",e.config.fluid&&(e.root.style["padding-top"]="",e.root.style["max-width"]="unset"),e.root&&!(0,r.hasClass)(e.root,"xgplayer-rotate-fullscreen")&&(0,r.addClass)(e.root,"xgplayer-rotate-fullscreen"),e.emit("getRotateFullscreen")},e.exitRotateFullscreen=function(){var e=this;document.documentElement.style.width="unset",document.documentElement.style.height="unset",e.config.fluid&&(e.root.style.width="100%",e.root.style.height="0",e.root.style["padding-top"]=100*e.config.height/e.config.width+"%",e.root.style["max-width"]="100%"),e.root&&(0,r.hasClass)(e.root,"xgplayer-rotate-fullscreen")&&(0,r.removeClass)(e.root,"xgplayer-rotate-fullscreen"),e.emit("exitRotateFullscreen")}}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"play",method:function(){var e=this;function t(){if(e.config.allowPlayAfterEnded||!e.ended)if((0,r.hasClass)(e.root,"xgplayer-nostart")&&e.start(),e.paused){var t=e.play();void 0!==t&&t&&t.catch((function(e){}))}else e.pause()}e.on("playBtnClick",t),e.once("destroy",(function n(){e.off("playBtnClick",t),e.off("destroy",n)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"replay",method:function(){var e=this,t=e.root;function n(){(0,r.removeClass)(t,"xgplayer-is-replay"),e.replay()}e.on("replayBtnClick",n),e.on("ended",(function(){e.config.loop||(0,r.addClass)(t,"xgplayer-is-replay")})),e.once("destroy",(function t(){e.off("replayBtnClick",n),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=o(n(49)),a=o(n(50));function o(e){return e&&e.__esModule?e:{default:e}}n(51),t.default={name:"s_play",method:function(){var e=this,t=e.config.playBtn?e.config.playBtn:{},n=void 0;n="img"===t.type?(0,r.createImgBtn)("play",t.url.play,t.width,t.height):(0,r.createDom)("xg-play",'\n
'+i.default+'
\n
'+a.default+"
\n
",{},"xgplayer-play");var o={};o.play=e.lang.PLAY_TIPS,o.pause=e.lang.PAUSE_TIPS;var l=(0,r.createDom)("xg-tips",''+o.play+'\n '+o.pause+"",{},"xgplayer-tips");n.appendChild(l),e.once("ready",(function(){e.controls&&e.controls.appendChild(n)})),["click","touchend"].forEach((function(t){n.addEventListener(t,(function(t){t.preventDefault(),t.stopPropagation(),e.userGestureTrigEvent("playBtnClick")}))}))}},e.exports=t.default},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){var r=n(52);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-play,.xgplayer-skin-default .xgplayer-play-img{width:40px;position:relative;-webkit-order:0;-moz-box-ordinal-group:1;order:0;display:block;cursor:pointer;margin-left:3px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-play .xgplayer-icon{margin-top:3px;width:32px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-play .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}.xgplayer-skin-default .xgplayer-play-img:hover,.xgplayer-skin-default .xgplayer-play:hover{opacity:.85}.xgplayer-skin-default .xgplayer-play-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-play:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);n(54),t.default={name:"s_poster",method:function(){var e=this,t=e.root;if(e.config.poster){var n=(0,r.createDom)("xg-poster","",{},"xgplayer-poster");n.style.backgroundImage="url("+e.config.poster+")",t.appendChild(n)}}},e.exports=t.default},function(e,t,n){var r=n(55);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-poster{display:none;position:absolute;left:0;top:0;width:100%;height:100%;z-index:100;background-size:cover;background-position:50%}.xgplayer-skin-default.xgplayer-nostart .xgplayer-poster{display:block}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);n(57),t.default={name:"s_flex",method:function(){var e=(0,r.createDom)("xg-placeholder","",{},"xgplayer-placeholder");this.controls.appendChild(e)}},e.exports=t.default},function(e,t,n){var r=n(58);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-placeholder{-webkit-flex:1;-moz-box-flex:1;flex:1;-webkit-order:3;-moz-box-ordinal-group:4;order:3;display:block}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=o(n(60)),a=o(n(61));function o(e){return e&&e.__esModule?e:{default:e}}n(62),t.default={name:"s_fullscreen",method:function(){var e=this,t=e.config.fullscreenBtn?e.config.fullscreenBtn:{},n=void 0;n="img"===t.type?(0,r.createImgBtn)("fullscreen",t.url.request,t.width,t.height):(0,r.createDom)("xg-fullscreen",'\n
'+i.default+'
\n
'+a.default+"
\n
",{},"xgplayer-fullscreen");var o={};o.requestfull=e.lang.FULLSCREEN_TIPS,o.exitfull=e.lang.EXITFULLSCREEN_TIPS;var l=(0,r.createDom)("xg-tips",''+o.requestfull+'\n '+o.exitfull+"",{},"xgplayer-tips");n.appendChild(l),e.once("ready",(function(){e.controls&&e.controls.appendChild(n)})),["click","touchend"].forEach((function(t){n.addEventListener(t,(function(t){t.preventDefault(),t.stopPropagation(),e.userGestureTrigEvent("fullscreenBtnClick")}))}))}},e.exports=t.default},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){var r=n(63);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-fullscreen,.xgplayer-skin-default .xgplayer-fullscreen-img{position:relative;-webkit-order:13;-moz-box-ordinal-group:14;order:13;display:block;cursor:pointer;margin-left:5px;margin-right:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon{margin-top:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips{position:absolute;right:0;left:auto}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img:hover,.xgplayer-skin-default .xgplayer-fullscreen:hover{opacity:.85}.xgplayer-skin-default .xgplayer-fullscreen-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:block}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(0),a=n(65),o=(r=a)&&r.__esModule?r:{default:r};n(66),t.default={name:"s_loading",method:function(){var e=this.root,t=(0,i.createDom)("xg-loading",""+o.default,{},"xgplayer-loading");this.once("ready",(function(){e.appendChild(t)}))}},e.exports=t.default},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){var r=n(67);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-loading{display:none;width:100px;height:100px;overflow:hidden;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);position:absolute;left:50%;top:50%;margin:-50px auto auto -50px}.xgplayer-skin-default .xgplayer-loading svg{border-radius:50%;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-animation:loadingRotate 1s linear infinite;animation:loadingRotate 1s linear infinite}.xgplayer-skin-default .xgplayer-loading svg path{stroke:#ddd;stroke-dasharray:236;-webkit-animation:loadingDashOffset 2s linear infinite;animation:loadingDashOffset 2s linear infinite;animation-direction:alternate-reverse;fill:none;stroke-width:12px}.xgplayer-skin-default.xgplayer-nostart .xgplayer-loading{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-loading{display:none!important}.xgplayer-skin-default.xgplayer-isloading .xgplayer-loading{display:block}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(0),a=n(5),o=(r=a)&&r.__esModule?r:{default:r};n(69);var l=function(e){return(0,i.hasClass)(e.root,"xgplayer-rotate-fullscreen")};t.default={name:"s_progress",method:function(){var e=this,t=(0,i.createDom)("xg-progress",'\n \n \n \n \n \n \n ',{tabindex:1},"xgplayer-progress"),n=void 0;e.controls.appendChild(t);var r=t.querySelector(".xgplayer-progress-played"),a=t.querySelector(".xgplayer-progress-outer"),s=t.querySelector(".xgplayer-progress-cache"),u=t.querySelector(".xgplayer-progress-point"),c=t.querySelector(".xgplayer-progress-thumbnail");function p(n,r){n.addEventListener("mouseenter",(function(e){r&&((0,i.addClass)(n,"xgplayer-progress-dot-show"),(0,i.addClass)(t,"xgplayer-progress-dot-active"))})),n.addEventListener("mouseleave",(function(e){r&&((0,i.removeClass)(n,"xgplayer-progress-dot-show"),(0,i.removeClass)(t,"xgplayer-progress-dot-active"))})),n.addEventListener("touchend",(function(a){a.stopPropagation(),r&&((0,i.hasClass)(n,"xgplayer-progress-dot-show")||Object.keys(e.dotArr).forEach((function(t){e.dotArr[t]&&(0,i.removeClass)(e.dotArr[t],"xgplayer-progress-dot-show")})),(0,i.toggleClass)(n,"xgplayer-progress-dot-show"),(0,i.toggleClass)(t,"xgplayer-progress-dot-active"))}))}function d(){e.config.progressDot&&"Array"===(0,i.typeOf)(e.config.progressDot)&&e.config.progressDot.forEach((function(t){if(t.time>=0&&t.time<=e.duration){var n=(0,i.createDom)("xg-progress-dot",t.text?''+t.text+"":"",{},"xgplayer-progress-dot");if(n.style.left=t.time/e.duration*100+"%",t.duration>=0&&(n.style.width=Math.min(t.duration,e.duration-t.time)/e.duration*100+"%"),t.style)for(var r in t.style)n.style[r]=t.style[r];a.appendChild(n),e.dotArr[t.time]=n,p(n,t.text)}}))}e.dotArr={},e.once("canplay",d),e.addProgressDot=function(t,n,r,o){if(!e.dotArr[t]&&t>=0&&t<=e.duration){var l=(0,i.createDom)("xg-progress-dot",n?''+n+"":"",{},"xgplayer-progress-dot");if(l.style.left=t/e.duration*100+"%",r>=0&&(l.style.width=Math.min(r,e.duration-t)/e.duration*100+"%"),o)for(var s in o)l.style[s]=o[s];a.appendChild(l),e.dotArr[t]=l,p(l,n)}},e.removeProgressDot=function(t){if(t>=0&&t<=e.duration&&e.dotArr[t]){var n=e.dotArr[t];n.parentNode.removeChild(n),n=null,e.dotArr[t]=null}},e.removeAllProgressDot=function(){Object.keys(e.dotArr).forEach((function(t){if(e.dotArr[t]){var n=e.dotArr[t];n.parentNode.removeChild(n),n=null,e.dotArr[t]=null}}))};var f=0,g=0,h=0,y=0,v=0,x=0,m=[],b=void 0,k=void 0,w=function(){e.config.thumbnail&&(e.config.thumbnail.isShowCoverPreview&&!b&&(r.removeChild(c),(b=(0,i.createDom)("xg-coverpreview",'\n \n \n ',{tabindex:1},"xgplayer-coverpreview")).querySelector(".xgplayer-coverpreview-outer"),k=b.querySelector(".xgplayer-coverpreview-point"),c=b.querySelector(".xgplayer-coverpreview-thumbnail"),e.root.appendChild(b)),f=e.config.thumbnail.pic_num,g=e.config.thumbnail.width,h=e.config.thumbnail.height,y=e.config.thumbnail.col,v=e.config.thumbnail.row,m=e.config.thumbnail.urls,c.style.width=g+"px",c.style.height=h+"px")};e.on("loadedmetadata",w),"function"==typeof e.config.disableSwipeHandler&&"function"==typeof e.config.enableSwipeHandler&&(e.root.addEventListener("touchmove",(function(t){t.preventDefault(),e.disableSwipe||(e.disableSwipe=!0,e.config.disableSwipeHandler.call(e))})),e.root.addEventListener("touchstart",(function(t){e.disableSwipe=!0,e.config.disableSwipeHandler.call(e)})),e.root.addEventListener("touchend",(function(t){e.disableSwipe=!1,e.config.enableSwipeHandler.call(e)})));var _=["touchstart","mousedown"];"mobile"===o.default.device&&_.pop();var E=null,T=null,C=function(a){if(!e.config.disableProgress){if(a.stopPropagation(),(0,i.event)(a),a._target===u||!e.config.allowSeekAfterEnded&&e.ended)return!0;t.focus();var s=r.getBoundingClientRect().left,p=l(e);return p?(s=r.getBoundingClientRect().top,n=t.getBoundingClientRect().height):(n=t.getBoundingClientRect().width,s=r.getBoundingClientRect().left),E=function(t){t.stopPropagation(),(0,i.event)(t),e.isProgressMoving=!0;var a=(p?t.clientY:t.clientX)-s;a>n&&(a=n);var o=a/n*e.duration;if(o<0&&(o=0),e.config.allowSeekPlayed&&Number(o).toFixed(1)>e.maxPlayedTime);else if(r.style.width=100*a/n+"%","video"!==e.videoConfig.mediaType||e.dash||e.config.closeMoveSeek){var l=(0,i.findDom)(e.controls,".xgplayer-time");l&&(l.innerHTML=''+(0,i.format)(o||0)+""+(0,i.format)(e.duration)+"")}else console.log("trigger touchmove"),e.currentTime=Number(o).toFixed(1);if(e.config.thumbnail&&e.config.thumbnail.isShowCoverPreview){k.innerHTML=""+(0,i.format)(o)+" / "+(0,i.format)(e.duration||0),x=e.duration/f;var u=Math.floor(o/x);c.style.backgroundImage="url("+m[Math.ceil((u+1)/(y*v))-1]+")";var d=u+1-y*v*(Math.ceil((u+1)/(y*v))-1),w=Math.ceil(d/v)-1,_=d-w*v-1;c.style["background-position"]="-"+_*g+"px -"+w*h+"px",b.style.display="block"}e.emit("focus")},T=function(a){if(console.log("up event",a),a.stopPropagation(),(0,i.event)(a),window.removeEventListener("mousemove",E),window.removeEventListener("touchmove",E,{passive:!1}),window.removeEventListener("mouseup",T),window.removeEventListener("touchend",T),o.default.browser.indexOf("ie")<0&&t.blur(),!e.isProgressMoving||e.videoConfig&&"audio"===e.videoConfig.mediaType||e.dash||e.config.closeMoveSeek){var l=(p?a.clientY:a.clientX)-s;l>n&&(l=n);var u=l/n*e.duration;u<0&&(u=0),e.config.allowSeekPlayed&&Number(u).toFixed(1)>e.maxPlayedTime||(r.style.width=100*l/n+"%",console.warn("trigger touchup"),e.currentTime=Number(u).toFixed(1))}e.config.thumbnail&&e.config.thumbnail.isShowCoverPreview&&(b.style.display="none"),e.emit("focus"),e.isProgressMoving=!1},window.addEventListener("touchmove",E,{passive:!1}),window.addEventListener("touchend",T),window.addEventListener("mousemove",E),window.addEventListener("mouseup",T),!0}};_.forEach((function(e){t.addEventListener(e,C)}));var S=function(n){if(!e.config.allowSeekAfterEnded&&e.ended)return!0;var r=l(e),a=r?t.getBoundingClientRect().top:t.getBoundingClientRect().left,o=r?t.getBoundingClientRect().height:t.getBoundingClientRect().width,s=function(n){var l=((r?n.clientY:n.clientX)-a)/o*e.duration;l=l<0?0:l,u.textContent=(0,i.format)(l);var s=u.getBoundingClientRect().width;if(e.config.thumbnail&&!e.config.thumbnail.isShowCoverPreview){x=e.duration/f;var p=Math.floor(l/x);c.style.backgroundImage="url("+m[Math.ceil((p+1)/(y*v))-1]+")";var d=p+1-y*v*(Math.ceil((p+1)/(y*v))-1),b=Math.ceil(d/v)-1,k=d-b*v-1;c.style["background-position"]="-"+k*g+"px -"+b*h+"px";var w=(r?n.clientY:n.clientX)-a-g/2;w=(w=w>0?w:0)0?_:0)>o-s?o-s:_,u.style.left=_+"px"}(0,i.hasClass)(t,"xgplayer-progress-dot-active")?u.style.display="none":u.style.display="block"},p=function(e){s(e)};t.addEventListener("mousemove",p,!1),t.addEventListener("mouseleave",(function n(r){t.removeEventListener("mousemove",p,!1),t.removeEventListener("mouseleave",n,!1),s(r),u.style.display="none",e.config.thumbnail&&!e.config.thumbnail.isShowCoverPreview&&(c.style.display="none")}),!1),s(n)};t.addEventListener("mouseenter",S,!1);var P=function(){if(void 0===e.maxPlayedTime&&(e.maxPlayedTime=0),e.maxPlayedTime0){for(var n=t.end(t.length-1),r=0,i=t.length;r=t.start(r)&&e.currentTime<=t.end(r)){n=t.end(r);for(var a=r+1;a=2){n=t.end(a-1);break}break}s.style.width=n/e.duration*100+"%"}},R=["bufferedChange","cacheupdate","ended","timeupdate"];R.forEach((function(t){e.on(t,M)})),e.once("destroy",(function n(){e.removeAllProgressDot(),e.off("canplay",d),e.off("timeupdate",P),e.off("currentTimeChange",O),e.off("srcChange",L),e.off("loadedmetadata",w),t.removeEventListener("mouseenter",S,!1),_.forEach((function(e){t.removeEventListener(e,C)})),window.removeEventListener("mousemove",E),window.removeEventListener("touchmove",E,{passive:!1}),window.removeEventListener("mouseup",T),window.removeEventListener("touchend",T),R.forEach((function(t){e.off(t,M)})),e.off("destroy",n)}))}},e.exports=t.default},function(e,t,n){var r=n(70);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-progress{display:block;position:absolute;height:20px;line-height:20px;left:12px;right:12px;outline:none;top:-15px;z-index:35}.xgplayer-skin-default .xgplayer-progress-outer{background:hsla(0,0%,100%,.3);display:block;height:3px;line-height:3px;margin-top:8.5px;width:100%;position:relative;cursor:pointer}.xgplayer-skin-default .xgplayer-progress-cache,.xgplayer-skin-default .xgplayer-progress-played{display:block;height:100%;line-height:1;position:absolute;left:0;top:0}.xgplayer-skin-default .xgplayer-progress-cache{width:0;background:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-progress-played{display:block;width:0;background-image:linear-gradient(-90deg,#fa1f41,#e31106);border-radius:0 1.5px 1.5px 0}.xgplayer-skin-default .xgplayer-progress-btn{display:none;position:absolute;left:0;top:-5px;width:13px;height:13px;border-radius:30px;background:#fff;box-shadow:0 0 2px 0 rgba(0,0,0,.26);left:100%;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);z-index:36}.xgplayer-skin-default .xgplayer-progress-point{position:absolute}.xgplayer-skin-default .xgplayer-progress-point.xgplayer-tips{margin-left:0;top:-25px;display:none;z-index:100}.xgplayer-skin-default .xgplayer-progress-dot{display:inline-block;position:absolute;height:3px;width:5px;top:0;background:#fff;border-radius:6px;z-index:16}.xgplayer-skin-default .xgplayer-progress-dot .xgplayer-progress-tip{position:absolute;bottom:200%;right:50%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);height:auto;line-height:30px;width:auto;background:rgba(0,0,0,.3);border-radius:6px;border:1px solid rgba(0,0,0,.8);cursor:default;white-space:nowrap;display:none}.xgplayer-skin-default .xgplayer-progress-dot-show .xgplayer-progress-tip{display:block}.xgplayer-skin-default .xgplayer-progress-thumbnail{position:absolute;-moz-box-sizing:border-box;box-sizing:border-box}.xgplayer-skin-default .xgplayer-progress-thumbnail.xgplayer-tips{margin-left:0;display:none;z-index:99}.xgplayer-skin-default .xgplayer-coverpreview{position:absolute;width:100%;height:100%;top:0;left:0;display:none}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer{position:absolute;display:block;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-thumbnail{display:block}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point{display:block;text-align:center;font-family:PingFangSC-Regular;font-size:11px;color:#ccc;padding:2px 4px}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point span{color:#fff}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-outer{height:6px;margin-top:7px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-dot,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-dot{height:6px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-btn{display:block;top:-3px}.xgplayer-skin-default.xgplayer-definition-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-playbackrate-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-texttrack-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-volume-active .xgplayer-progress{z-index:15}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress-btn{display:block!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-outer{height:3px!important;margin-top:8.5px!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-btn{display:block!important;top:-5px!important}",""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);n(72),t.default={name:"s_time",method:function(){var e=this,t=(0,r.createDom)("xg-time",''+(e.currentTime||(0,r.format)(0))+"\n "+(e.duration||(0,r.format)(0))+"",{},"xgplayer-time");e.once("ready",(function(){e.controls&&e.controls.appendChild(t)}));var n=function(){"audio"===e.videoConfig.mediaType&&e.isProgressMoving&&e.dash||(t.innerHTML=''+(0,r.format)(e.currentTime||0)+""+(0,r.format)(e.duration)+"")};e.on("durationchange",n),e.on("timeupdate",n),e.once("destroy",(function t(){e.off("durationchange",n),e.off("timeupdate",n),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){var r=n(73);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,'.xgplayer-skin-default .xgplayer-time{-webkit-order:2;-moz-box-ordinal-group:3;order:2;font-family:ArialMT;font-size:13px;color:#fff;line-height:40px;height:40px;text-align:center;display:inline-block;margin:auto 8px}.xgplayer-skin-default .xgplayer-time span{color:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current{color:#fff}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current:after{content:"/";display:inline-block;padding:0 3px}',""])},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(0),a=n(75),o=(r=a)&&r.__esModule?r:{default:r};n(76),t.default={name:"s_replay",method:function(){var e=this,t=e.root,n=e.lang.REPLAY,r=(0,i.createDom)("xg-replay",o.default+'\n '+n+"\n ",{},"xgplayer-replay");function a(){var e=r.querySelector("path");if(e){var t=window.getComputedStyle(e).getPropertyValue("transform");if("string"==typeof t&&t.indexOf("none")>-1)return;e.setAttribute("transform",t)}}e.once("ready",(function(){t.appendChild(r)})),e.on("ended",a),r.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation()}));var l=r.querySelector("svg");["click","touchend"].forEach((function(t){l.addEventListener(t,(function(t){t.preventDefault(),t.stopPropagation(),e.userGestureTrigEvent("replayBtnClick")}))})),e.once("destroy",(function t(){e.off("ended",a),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){n.r(t),t.default='\n \n\n'},function(e,t,n){var r=n(77);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){(e.exports=n(1)(!1)).push([e.i,".xgplayer-skin-default .xgplayer-replay{position:absolute;left:0;top:0;width:100%;height:100%;z-index:105;display:none;-webkit-justify-content:center;-moz-box-pack:center;justify-content:center;-webkit-align-items:center;-moz-box-align:center;align-items:center;background:rgba(0,0,0,.54);-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;flex-direction:column}.xgplayer-skin-default .xgplayer-replay svg{background:rgba(0,0,0,.58);border-radius:100%;cursor:pointer}.xgplayer-skin-default .xgplayer-replay svg path{-webkit-transform:translate(20px,21px);-ms-transform:translate(20px,21px);transform:translate(20px,21px);fill:#ddd}.xgplayer-skin-default .xgplayer-replay svg:hover{background:rgba(0,0,0,.38)}.xgplayer-skin-default .xgplayer-replay svg:hover path{fill:#fff}.xgplayer-skin-default .xgplayer-replay .xgplayer-replay-txt{display:inline-block;font-family:PingFangSC-Regular;font-size:14px;color:#fff;line-height:34px}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-replay{display:-webkit-flex;display:-moz-box;display:flex}",""])},function(e,t,n){var r=n(160);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(2)(r,i),r.locals&&(e.exports=r.locals)},function(e,t,n){e.exports=n(80)},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=P(n(9)),i=P(n(81)),a=P(n(82)),o=P(n(83)),l=P(n(84)),s=P(n(85)),u=P(n(88)),c=P(n(45)),p=P(n(89)),d=P(n(90)),f=P(n(91)),g=P(n(92)),h=P(n(37)),y=P(n(38)),v=P(n(98)),x=P(n(46)),m=P(n(99)),b=P(n(100)),k=P(n(47)),w=P(n(101)),_=P(n(102)),E=P(n(103)),T=P(n(39)),C=P(n(104)),S=P(n(105));function P(e){return e&&e.__esModule?e:{default:e}}n(107),r.default.installAll([i.default,a.default,o.default,l.default,s.default,u.default,c.default,p.default,d.default,f.default,g.default,h.default,y.default,v.default,x.default,m.default,b.default,k.default,w.default,_.default,E.default,T.default,C.default,S.default]),t.default=r.default,e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"airplay",method:function(){var e=this;function t(){e.video.webkitShowPlaybackTargetPicker()}e.config.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&(e.on("airplayBtnClick",t),e.once("destroy",(function n(){e.off("airplayBtnClick",t),e.off("destroy",n)})))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"cssFullscreen",method:function(){var e=this,t=e.root;function n(){(0,r.hasClass)(t,"xgplayer-is-cssfullscreen")?e.exitCssFullscreen():e.getCssFullscreen()}e.on("cssFullscreenBtnClick",n),e.on("exitFullscreen",(function(){(0,r.removeClass)(t,"xgplayer-is-cssfullscreen")})),e.once("destroy",(function t(){e.off("cssFullscreenBtnClick",n),e.off("destroy",t)})),e.getCssFullscreen=function(){var e=this;e.config.fluid&&(e.root.style["padding-top"]=""),(0,r.addClass)(e.root,"xgplayer-is-cssfullscreen"),e.emit("requestCssFullscreen")},e.exitCssFullscreen=function(){var e=this;e.config.fluid&&(e.root.style.width="100%",e.root.style.height="0",e.root.style["padding-top"]=100*e.config.height/e.config.width+"%"),(0,r.removeClass)(e.root,"xgplayer-is-cssfullscreen"),e.emit("exitCssFullscreen")}}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"danmu",method:function(){var e=this;e.on("initDefaultDanmu",(function(t){var n=e.root.querySelector("xg-danmu");if((0,r.addClass)(n,"xgplayer-has-danmu"),!e.config.danmu.closeDefaultBtn){var i=function(){t.start()},a=function(){(0,r.hasClass)(e.danmuBtn,"danmu-switch-active")&&t.pause()},o=function(){(0,r.hasClass)(e.danmuBtn,"danmu-switch-active")&&t.play()},l=function(){(0,r.hasClass)(e.danmuBtn,"danmu-switch-active")&&(t.stop(),t.start())};e.danmuBtn=(0,r.copyDom)(t.bulletBtn.createSwitch(!0)),e.controls.appendChild(e.danmuBtn),["click","touchend"].forEach((function(a){e.danmuBtn.addEventListener(a,(function(a){a.preventDefault(),a.stopPropagation(),(0,r.toggleClass)(e.danmuBtn,"danmu-switch-active"),(0,r.hasClass)(e.danmuBtn,"danmu-switch-active")?(e.emit("danmuBtnOn"),(0,r.addClass)(n,"xgplayer-has-danmu"),e.once("timeupdate",i)):(e.emit("danmuBtnOff"),(0,r.removeClass)(n,"xgplayer-has-danmu"),t.stop())}))})),e.onElementClick&&n.addEventListener("click",(function(t){e.onElementClick(t,n)}),!1),e.onElementDblclick&&n.addEventListener("dblclick",(function(t){e.onElementDblclick(t,n)}),!1),e.on("pause",a),e.on("play",o),e.on("seeked",l),e.once("destroy",(function t(){e.off("timeupdate",i),e.off("pause",a),e.off("play",o),e.off("seeked",l),e.off("destroy",t)}))}}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"definition",method:function(){var e=this;e.once("destroy",(function t(){e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(86),a=(r=i)&&r.__esModule?r:{default:r},o=n(87);t.default={name:"download",method:function(){var e=this;function t(){e.download()}e.on("downloadBtnClick",t),e.once("destroy",(function n(){e.off("downloadBtnClick",t),e.off("destroy",n)})),e.download=function(){var e=(0,o.getAbsoluteURL)(this.config.url);(0,a.default)(e)}}},e.exports=t.default},function(e,t,n){var r,i,a;i=[],void 0===(a="function"==typeof(r=function(){return function e(t,n,r){var i,a,o=window,l="application/octet-stream",s=r||l,u=t,c=!n&&!r&&u,p=document.createElement("a"),d=function(e){return String(e)},f=o.Blob||o.MozBlob||o.WebKitBlob||d,g=n||"download";if(f=f.call?f.bind(o):Blob,"true"===String(this)&&(s=(u=[u,s])[0],u=u[1]),c&&c.length<2048&&(g=c.split("/").pop().split("?")[0],p.href=c,-1!==p.href.indexOf(c))){var h=new XMLHttpRequest;return h.open("GET",c,!0),h.responseType="blob",h.onload=function(t){e(t.target.response,g,l)},setTimeout((function(){h.send()}),0),h}if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(u)){if(!(u.length>2096103.424&&f!==d))return navigator.msSaveBlob?navigator.msSaveBlob(m(u),g):b(u);s=(u=m(u)).type||l}else if(/([\x80-\xff])/.test(u)){for(var y=0,v=new Uint8Array(u.length),x=v.length;yx',e=t.firstChild.href}return e}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(4),a=(r=i)&&r.__esModule?r:{default:r},o={maxCount:3,backupUrl:"",isFetch:!0,fetchTimeout:100};t.default={name:"errorretry",method:function(){var e=this,t=this;if(t.config.errorConfig&&!(t.src.indexOf("blob:")>-1)){var n={},r=t.config.errorConfig;for(var i in o)void 0===r[i]?n[i]=o[i]:n[i]=r[i];t.retryData={count:0,errfTimer:null,isFetchReturn:!1,currentTime:0};var l=t._onError;t._onError=function(r){var i=e.retryData.count;if(i>n.maxCount)n.isFetch?(o=e,u=e.currentSrc,c=n.fetchTimeout,p=function(e,t){o.retryData.isFetchReturn||(o.retryData.isFetchReturn=!0,e(t))},new Promise((function(e,t){try{var n=new window.XMLHttpRequest;n.open("get",u),n.onload=function(){p(e,{status:n.status,statusText:n.statusText,xhr:n})},n.onerror=function(){p(e,{status:n.status,statusText:n.statusText||"The network environment is disconnected or the address is invalid",xhr:n})},n.onabort=function(){},o.retryData.errfTimer=window.setTimeout((function(){var t=o.retryData.errfTimer;window.clearTimeout(t),o.retryData.errfTimer=null,p(e,{status:-1,statusText:"request timeout"})}),c),n.send()}catch(r){o.retryData.isFetchReturn=!0,p(e,{status:-2,statusText:"request error"})}}))).then((function(t){e.emit("error",new a.default({type:"network",currentTime:e.currentTime,duration:e.duration||0,networkState:e.networkState,readyState:e.readyState,currentSrc:e.currentSrc,src:e.src,ended:e.ended,httpCode:t.status,httpMsg:t.statusText,errd:{line:101,msg:e.error,handle:"plugin errorRetry"},errorCode:e.video&&e.video.error.code,mediaError:e.video&&e.video.error})),l.call(e,t)})):l.call(e,r);else{var o,u,c,p;0===i&&(e.retryData.currentTime=e.currentTime,e.once("canplay",s.bind(e)));var d="";d=n.count<2?n.backupUrl?n.backupUrl:t.currentSrc:n.backupUrl&&i>1?n.backupUrl:t.currentSrc,e.retryData.count++,e.src=d}}}function s(){this.currentTime=this.retryData.currentTime,this.play(),this.retryData.retryCode=0,this.retryData.isFetchReturn=!1,this.retryData.currentTime=0}}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0||(e?n.currentTime-r>=0?n.currentTime-=r:n.currentTime=0:n.maxPlayedTime&&n.config.allowSeekPlayed&&n.currentTime+r>n.maxPlayedTime?n.currentTime=n.maxPlayedTime:n.currentTime+r<=n.duration?n.currentTime+=r:n.currentTime=n.duration+1)}},{key:"changeRate",value:function(){this.state.playbackRate=this.player.playbackRate,this.player.playbackRate=this.player.config.keyboardRate||5}},{key:"changeVolumeSlide",value:function(e){var t=this.player;t.controls&&(e?(t.emit("focus"),(0,i.hasClass)(t.root,"xgplayer-volume-active")||(0,i.addClass)(t.root,"xgplayer-volume-active")):(clearTimeout(this.timer),this.timer=setTimeout((function(){(0,i.removeClass)(t.root,"xgplayer-volume-active")}),1e3)))}},{key:"changeVolume",value:function(e){var t=this.player,n=(t.config.keyShortcutStep||{}).volume||.1;this.changeVolumeSlide(!0);var r=t.volume;e&&r+n<=1?t.volume=r+n:!e&&r-n>=0&&(t.volume=r-n)}}]),e}();t.default={name:"keyboard",method:function(){this.keyboard=new a(this)}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.default={name:"localPreview",method:function(){var e=this,t=e.root;function n(n){e.uploadFile=n.files[0];var i=URL.createObjectURL(e.uploadFile);if((0,r.hasClass)(t,"xgplayer-nostart"))e.config.url=i,e.start();else{e.src=i;var a=e.play();void 0!==a&&a&&a.catch((function(e){}))}}e.on("upload",n),e.once("destroy",(function t(){e.off("upload",n),e.off("destroy",t)}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"memoryPlay",method:function(){var e=this;e.on("memoryPlayStart",(function(t){setTimeout((function(){console.log("memoryPlayStart",t,e.readyState,11),e.currentTime=t}))}))}},e.exports=t.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(0),a=n(93),o=(r=a)&&r.__esModule?r:{default:r};t.default={name:"miniplayer",method:function(){var e=this,t=e.root;function n(){(0,i.hasClass)(t,"xgplayer-miniplayer-active")?e.exitMiniplayer():e.getMiniplayer()}e.on("miniplayerBtnClick",n),e.once("destroy",(function t(){e.off("miniplayerBtnClick",n),e.off("destroy",t)})),e.getMiniplayer=function(){(0,i.hasClass)(t,"xgplayer-is-fullscreen")&&this.exitFullscreen(t),(0,i.hasClass)(t,"xgplayer-is-cssfullscreen")&&this.exitCssFullscreen(),(0,i.hasClass)(t,"xgplayer-rotate-fullscreen")&&this.exitRotateFullscreen();var e=(0,i.createDom)("xg-miniplayer-lay","
",{},"xgplayer-miniplayer-lay");this.root.appendChild(e);var n=(0,i.createDom)("xg-miniplayer-drag",'
'+this.lang.MINIPLAYER_DRAG+"
",{tabindex:9},"xgplayer-miniplayer-drag");this.root.appendChild(n),new o.default(".xgplayer",{handle:".drag-handle"}),(0,i.addClass)(this.root,"xgplayer-miniplayer-active"),this.root.style.right=0,this.root.style.bottom="200px",this.root.style.top="",this.root.style.left="",this.root.style.width="320px",this.root.style.height="180px",this.config.miniplayerConfig&&(void 0!==this.config.miniplayerConfig.top&&(this.root.style.top=this.config.miniplayerConfig.top+"px",this.root.style.bottom=""),void 0!==this.config.miniplayerConfig.bottom&&(this.root.style.bottom=this.config.miniplayerConfig.bottom+"px"),void 0!==this.config.miniplayerConfig.left&&(this.root.style.left=this.config.miniplayerConfig.left+"px",this.root.style.right=""),void 0!==this.config.miniplayerConfig.right&&(this.root.style.right=this.config.miniplayerConfig.right+"px"),void 0!==this.config.miniplayerConfig.width&&(this.root.style.width=this.config.miniplayerConfig.width+"px"),void 0!==this.config.miniplayerConfig.height&&(this.root.style.height=this.config.miniplayerConfig.height+"px")),this.config.fluid&&(this.root.style["padding-top"]="");var r=this;["click","touchend"].forEach((function(t){e.addEventListener(t,(function(e){e.preventDefault(),e.stopPropagation(),r.exitMiniplayer()}))}))},e.exitMiniplayer=function(){(0,i.removeClass)(this.root,"xgplayer-miniplayer-active"),this.root.style.right="",this.root.style.bottom="",this.root.style.top="",this.root.style.left="",this.config.fluid?(this.root.style.width="100%",this.root.style.height="0",this.root.style["padding-top"]=100*this.config.height/this.config.width+"%"):(this.config.width&&("number"!=typeof this.config.width?this.root.style.width=this.config.width:this.root.style.width=this.config.width+"px"),this.config.height&&("number"!=typeof this.config.height?this.root.style.height=this.config.height:this.root.style.height=this.config.height+"px"));var e=(0,i.findDom)(this.root,".xgplayer-miniplayer-lay");e&&e.parentNode&&e.parentNode.removeChild(e);var t=(0,i.findDom)(this.root,".xgplayer-miniplayer-drag");t&&t.parentNode&&t.parentNode.removeChild(t)}}},e.exports=t.default},function(e,t,n){var r,i,a; +/*! + * Draggabilly v2.4.1 + * Make that shiz draggable + * https://draggabilly.desandro.com + * MIT license + */a=window,r=[n(94),n(95)],i=function(e,t){return function(e,t,n){function r(e,t){for(var n in t)e[n]=t[n];return e}function i(){}var a=e.jQuery;function o(e,t){this.element="string"==typeof e?document.querySelector(e):e,a&&(this.$element=a(this.element)),this.options=r({},this.constructor.defaults),this.option(t),this._create()}var l=o.prototype=Object.create(n.prototype);o.defaults={},l.option=function(e){r(this.options,e)};var s={relative:!0,absolute:!0,fixed:!0};function u(e,t,n){return n=n||"round",t?Math[n](e/t)*t:e}return l._create=function(){this.position={},this._getPosition(),this.startPoint={x:0,y:0},this.dragPoint={x:0,y:0},this.startPosition=r({},this.position);var e=getComputedStyle(this.element);s[e.position]||(this.element.style.position="relative"),this.on("pointerMove",this.onPointerMove),this.on("pointerUp",this.onPointerUp),this.enable(),this.setHandles()},l.setHandles=function(){this.handles=this.options.handle?this.element.querySelectorAll(this.options.handle):[this.element],this.bindHandles()},l.dispatchEvent=function(e,t,n){var r=[t].concat(n);this.emitEvent(e,r),this.dispatchJQueryEvent(e,t,n)},l.dispatchJQueryEvent=function(t,n,r){var i=e.jQuery;if(i&&this.$element){var a=i.Event(n);a.type=t,this.$element.trigger(a,r)}},l._getPosition=function(){var e=getComputedStyle(this.element),t=this._getPositionCoord(e.left,"width"),n=this._getPositionCoord(e.top,"height");this.position.x=isNaN(t)?0:t,this.position.y=isNaN(n)?0:n,this._addTransformPosition(e)},l._getPositionCoord=function(e,n){if(-1!=e.indexOf("%")){var r=t(this.element.parentNode);return r?parseFloat(e)/100*r[n]:0}return parseInt(e,10)},l._addTransformPosition=function(e){var t=e.transform;if(0===t.indexOf("matrix")){var n=t.split(","),r=0===t.indexOf("matrix3d")?12:4,i=parseInt(n[r],10),a=parseInt(n[r+1],10);this.position.x+=i,this.position.y+=a}},l.onPointerDown=function(e,t){this.element.classList.add("is-pointer-down"),this.dispatchJQueryEvent("pointerDown",e,[t])},l.pointerDown=function(e,t){this.okayPointerDown(e)&&this.isEnabled?(this.pointerDownPointer={pageX:t.pageX,pageY:t.pageY},e.preventDefault(),this.pointerDownBlur(),this._bindPostStartEvents(e),this.element.classList.add("is-pointer-down"),this.dispatchEvent("pointerDown",e,[t])):this._pointerReset()},l.dragStart=function(e,t){this.isEnabled&&(this._getPosition(),this.measureContainment(),this.startPosition.x=this.position.x,this.startPosition.y=this.position.y,this.setLeftTop(),this.dragPoint.x=0,this.dragPoint.y=0,this.element.classList.add("is-dragging"),this.dispatchEvent("dragStart",e,[t]),this.animate())},l.measureContainment=function(){var e=this.getContainer();if(e){var n=t(this.element),r=t(e),i=this.element.getBoundingClientRect(),a=e.getBoundingClientRect(),o=r.borderLeftWidth+r.borderRightWidth,l=r.borderTopWidth+r.borderBottomWidth,s=this.relativeStartPosition={x:i.left-(a.left+r.borderLeftWidth),y:i.top-(a.top+r.borderTopWidth)};this.containSize={width:r.width-o-s.x-n.width,height:r.height-l-s.y-n.height}}},l.getContainer=function(){var e=this.options.containment;if(e)return e instanceof HTMLElement?e:"string"==typeof e?document.querySelector(e):this.element.parentNode},l.onPointerMove=function(e,t,n){this.dispatchJQueryEvent("pointerMove",e,[t,n])},l.dragMove=function(e,t,n){if(this.isEnabled){var r=n.x,i=n.y,a=this.options.grid,o=a&&a[0],l=a&&a[1];r=u(r,o),i=u(i,l),r=this.containDrag("x",r,o),i=this.containDrag("y",i,l),r="y"==this.options.axis?0:r,i="x"==this.options.axis?0:i,this.position.x=this.startPosition.x+r,this.position.y=this.startPosition.y+i,this.dragPoint.x=r,this.dragPoint.y=i,this.dispatchEvent("dragMove",e,[t,n])}},l.containDrag=function(e,t,n){if(!this.options.containment)return t;var r="x"==e?"width":"height",i=u(-this.relativeStartPosition[e],n,"ceil"),a=this.containSize[r];return a=u(a,n,"floor"),Math.max(i,Math.min(a,t))},l.onPointerUp=function(e,t){this.element.classList.remove("is-pointer-down"),this.dispatchJQueryEvent("pointerUp",e,[t])},l.dragEnd=function(e,t){this.isEnabled&&(this.element.style.transform="",this.setLeftTop(),this.element.classList.remove("is-dragging"),this.dispatchEvent("dragEnd",e,[t]))},l.animate=function(){if(this.isDragging){this.positionDrag();var e=this;requestAnimationFrame((function(){e.animate()}))}},l.setLeftTop=function(){this.element.style.left=this.position.x+"px",this.element.style.top=this.position.y+"px"},l.positionDrag=function(){this.element.style.transform="translate3d( "+this.dragPoint.x+"px, "+this.dragPoint.y+"px, 0)"},l.staticClick=function(e,t){this.dispatchEvent("staticClick",e,[t])},l.setPosition=function(e,t){this.position.x=e,this.position.y=t,this.setLeftTop()},l.enable=function(){this.isEnabled=!0},l.disable=function(){this.isEnabled=!1,this.isDragging&&this.dragEnd()},l.destroy=function(){this.disable(),this.element.style.transform="",this.element.style.left="",this.element.style.top="",this.element.style.position="",this.unbindHandles(),this.$element&&this.$element.removeData("draggabilly")},l._init=i,a&&a.bridget&&a.bridget("draggabilly",o),o}(a,e,t)}.apply(t,r),void 0===i||(e.exports=i)},function(e,t,n){var r,i; +/*! + * getSize v2.0.3 + * measure size of elements + * MIT license + */window,void 0===(i="function"==typeof(r=function(){function e(e){var t=parseFloat(e);return-1==e.indexOf("%")&&!isNaN(t)&&t}function t(){}var n="undefined"==typeof console?t:function(e){console.error(e)},r=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],i=r.length;function a(){for(var e={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},t=0;t