From 1dd3b97b45b146878bddaa6271109b19e2c451b1 Mon Sep 17 00:00:00 2001 From: leukipp Date: Wed, 11 Dec 2024 22:57:23 +0100 Subject: [PATCH] initial commit --- .gitignore | 4 + LICENSE | 21 + README.md | 2 +- img/display.png | Bin 0 -> 163166 bytes img/icon.png | Bin 0 -> 8320 bytes img/mqtt.png | Bin 0 -> 53074 bytes main.js | 35 + package.json | 35 + src/hardware.js | 355 ++++++ src/integration.js | 677 ++++++++++++ src/webview.js | 157 +++ yarn.lock | 2557 ++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 3842 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 img/display.png create mode 100755 img/icon.png create mode 100644 img/mqtt.png create mode 100644 main.js create mode 100644 package.json create mode 100644 src/hardware.js create mode 100644 src/integration.js create mode 100644 src/webview.js create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa25db9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +build/ +dist/ +docs/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..42a587a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 leukipp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index e03a682..d7f53c3 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# touchkio \ No newline at end of file +# touchkio diff --git a/img/display.png b/img/display.png new file mode 100644 index 0000000000000000000000000000000000000000..00691eae8c00497fb4d4fad40c498e26d2f15696 GIT binary patch literal 163166 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

2?Y=tC39yQDlhO6Q2_}I}AFkm?_GR}{D^xN=1 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
  • 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 NwyjPkz&s@qR7l*a@;pW&K*Vu+VST z|2;w2{SAxar2qm5-;x{iN?yOfywECqo@pT9Vhk6&aHKXqWWE;7M__^ZsY466bbG05mi)F}_?p7G1`*YGBrO)2Zaz0sM1Luw3qo1cAbFmq&fdqkgpU8}zN-RkZ6mKrl zBP-ikQ?$+LwAh^RPWbc?awofZqd)ZQ09_62J)&xI4F7aQF0QRDC`|q+>Q7j2IzZJB z^T5asRaG!z=T%H!Gp8FaJppVvrZ1O%l{Bx~H9Ypsgz=%pM-6|xhzpxf-(#a6Mtn@o z4F2uT7hyAKr`aw9+ zVb#2WvYf4$zEzp4J7KDhV{iQ**F>+P literal 0 HcmV?d00001 diff --git a/img/mqtt.png b/img/mqtt.png new file mode 100644 index 0000000000000000000000000000000000000000..77e5c824acae50800a67cf2b0fb5347e0a8ca2e1 GIT binary patch literal 53074 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 Dd=>0| literal 0 HcmV?d00001 diff --git a/main.js b/main.js new file mode 100644 index 0000000..52c1ca4 --- /dev/null +++ b/main.js @@ -0,0 +1,35 @@ +const integration = require("./src/integration"); +const hardware = require("./src/hardware"); +const webview = require("./src/webview"); +const { app } = require("electron"); + +/** + * This promise resolves when the app has finished initializing, + * allowing to safely create browser windows and perform other + * initialization tasks. + */ +app.whenReady().then(() => { + const args = parseArgs(process); + webview.init(args) && hardware.init(args) && integration.init(args); +}); + +/** + * Parses command-line arguments from the given process object. + * + * @param {Object} proc - The process object. + * @returns {Object} An object mapping argument names to their corresponding values. + */ +const parseArgs = (proc) => { + let argv = proc.argv.slice(1).join(" ").trim(); + if (argv.length && argv[0] == ".") { + argv = argv.slice(1); + } + argv = argv.replace(/--|=/g, " ").replace(/\s+/g, " "); + argv = argv.trim().split(" "); + argv = argv.reduce( + (args, k, i, v) => + i % 2 ? args : { ...args, [k.replace("-", "_")]: v[i + 1] }, + {} + ); + return argv; +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..087ba34 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "touchkio", + "description": "Home Assistant Touch Kiosk", + "author": "leukipp", + "version": "1.0.0", + "license": "MIT", + "main": "main.js", + "scripts": { + "start": "electron . --web-url=https://demo.home-assistant.io", + "build": "electron-builder --linux AppImage --arm64" + }, + "build": { + "productName": "touchkio", + "linux": { + "target": [ + { + "target": "AppImage", + "arch": [ + "arm64" + ] + } + ], + "icon": "img/icon.png", + "category": "Network" + }, + "artifactName": "${productName}-${version}-${arch}.AppImage" + }, + "devDependencies": { + "electron": "^33.2.1", + "electron-builder": "^25.1.8" + }, + "dependencies": { + "mqtt": "^5.10.3" + } +} \ No newline at end of file diff --git a/src/hardware.js b/src/hardware.js new file mode 100644 index 0000000..11c30eb --- /dev/null +++ b/src/hardware.js @@ -0,0 +1,355 @@ +const os = require("os"); +const fs = require("fs"); +const process = require("child_process"); + +global.HARDWARE = global.HARDWARE || { + initialized: false, + status: "invalid", + display: { + status: null, + brightness: null, + notifiers: [], + }, +}; + +/** + * Initializes the hardware with the provided arguments. + * + * @param {Object} args - The command-line arguments to customize the initialization process. + * @returns {boolean} Returns true if the initialization was successful. + */ +const init = (args) => { + const model = getModel(); + const valid = model && model.includes("Raspberry Pi 5"); + + // Check supported hardware + if (valid) { + console.log("\nModel:", getModel()); + console.log("Serial Number:", getSerialNumber()); + console.log("Host Name:", getHostName()); + console.log("Up Time:", getUpTime()); + console.log("Memory Size:", getMemorySize()); + console.log("Memory Usage:", getMemoryUsage()); + console.log("Processor Usage:", getProcessorUsage()); + console.log("Processor Temperature:", getProcessorTemperature()); + console.log("Display Status:", getDisplayStatus()); + console.log("Display Brightness:", getDisplayBrightness(), "\n"); + + // Init globals + HARDWARE.initialized = true; + HARDWARE.status = "valid"; + + // Check for display changes + setInterval(update, 500); + } else { + console.warn(`Device ${model} not supported`); + } + + return valid; +}; + +/** + * Updates the shared hardware properties. + */ +const update = () => { + if (!HARDWARE.initialized) { + return; + } + const path = "/sys/class/backlight/10-0045"; + + // Display status has changed + const status = fs.readFileSync(`${path}/bl_power`, "utf8").trim(); + if (status !== HARDWARE.display.status) { + console.log("Update Display Status:", getDisplayStatus()); + HARDWARE.display.status = status; + HARDWARE.display.notifiers.forEach((notifier) => { + notifier(); + }); + } + + // Display brightness has changed + const brightness = fs.readFileSync(`${path}/brightness`, "utf8").trim(); + if (brightness !== HARDWARE.display.brightness) { + console.log("Update Display Brightness:", getDisplayBrightness()); + HARDWARE.display.brightness = brightness; + HARDWARE.display.notifiers.forEach((notifier) => { + notifier(); + }); + } +}; + +/** + * Gets the Raspberry Pi model name using `/sys/firmware/devicetree/base/model`. + * + * @returns {string|null} The model of the Raspberry Pi or null if an error occurs. + */ +const getModel = () => { + return execSyncCommand("cat", ["/sys/firmware/devicetree/base/model"]); +}; + +/** + * Gets the Raspberry Pi serial number using `/sys/firmware/devicetree/base/serial-number`. + * + * @returns {string|null} The serial number of the Raspberry Pi or null if an error occurs. + */ +const getSerialNumber = () => { + return execSyncCommand("cat", [ + "/sys/firmware/devicetree/base/serial-number", + ]); +}; + +/** + * Gets the host name of the current system using `os.hostname()`. + * + * @returns {string} The host name of the system. + */ +const getHostName = () => { + return os.hostname(); +}; + +/** + * Gets the up time of the system in minutes using `os.uptime()`. + * + * @returns {number} The up time of the system in minutes. + */ +const getUpTime = () => { + return os.uptime() / 60; +}; + +/** + * Gets the total available memory in gibibytes using `os.totalmem()`. + * + * @returns {number} The total available memory in GiB. + */ +const getMemorySize = () => { + return os.totalmem() / 1024 ** 3; +}; + +/** + * Gets the current memory usage as a percentage using `os.totalmem()` and `os.freemem()`. + * + * @returns {number} The percentage of used memory. + */ +const getMemoryUsage = () => { + return ((os.totalmem() - os.freemem()) / os.totalmem()) * 100; +}; + +/** + * Gets the CPU load average over the last 5 minutes as a percentage using `os.loadavg()` and `os.cpus()`. + * + * @returns {number} The CPU load average percentage over the last 5 minutes. + */ +const getProcessorUsage = () => { + return (os.loadavg()[1] / os.cpus().length) * 100; +}; + +/** + * Gets the current CPU temperature using `vcgencmd measure_temp`. + * + * @returns {number|null} The CPU temperature in degrees Celsius or null if an error occurs. + */ +const getProcessorTemperature = () => { + const output = execSyncCommand("vcgencmd", ["measure_temp"]); + if (output !== null) { + const temp = output.match(/temp=(\d+\.\d+)/); + if (temp && temp[1]) { + return parseFloat(temp[1]); + } + } + return null; +}; + +/** + * Gets the current display power status using `wlopm`. + * + * @returns {string|null} The output of the command or null if an error occurs. + */ +const getDisplayStatus = () => { + const status = execSyncCommand("wlopm", []); + if (status !== null) { + return status.slice(status.lastIndexOf(" ") + 1).toUpperCase(); + } + return null; + + /* This also works, but it's better to use `wlopm` for getter and setter methods. + const status = execSyncCommand("cat", [ + "/sys/class/backlight/10-0045/bl_power", + ]); + if (status !== null) { + return status === "0" ? "ON" : "OFF"; + } + */ +}; + +/** + * Sets the display power status using `wlopm`. + * + * This function takes a desired status ('ON' or 'OFF') and executes + * the appropriate command to set the display status. + * + * @param {string} status - The desired status ('ON' or 'OFF'). + * @param {function} callback - A callback function that receives the output or error. + */ +const setDisplayStatus = (status, callback = null) => { + if (status !== "ON" && status !== "OFF") { + console.error("Status must be 'ON' or 'OFF'."); + if (typeof callback === "function") callback(null, "Invalid status."); + return; + } + const args = status === "ON" ? ["--on", "*"] : ["--off", "*"]; + execAsyncCommand("wlopm", args, callback); + + /* This also works, but interferes with the built-in screen blanking function. + const value = status === "ON" ? "0" : "4"; + const proc = execAsyncCommand( + "tee", + ["/sys/class/backlight/10-0045/bl_power"], + callback + ); + proc.stdin.write(value.toString()); + proc.stdin.end(); + */ +}; + +/** + * Gets the current display brightness level using `/sys/class/backlight/10-0045/brightness`. + * + * This function retrieves the brightness level, which is in the range of 0-31, + * and maps it to a percentage in the range of 0-100 percent. + * + * @returns {number|null} The brightness level as a percentage or null if an error occurs. + */ +const getDisplayBrightness = () => { + const brightness = execSyncCommand("cat", [ + "/sys/class/backlight/10-0045/brightness", + ]); + if (brightness !== null) { + return Math.round((parseInt(brightness, 10) / 31) * 100); + } + return null; +}; + +/** + * Sets the display brightness level using `/sys/class/backlight/10-0045/brightness`. + * + * This function takes a brightness value in the range of 1-100 percent, + * maps it to the range of 0-31, and writes it to the system. + * + * @param {number} brightness - The desired brightness level (1-100). + * @param {function} callback - A callback function that receives the output or error. + */ +const setDisplayBrightness = (brightness, callback = null) => { + if (typeof brightness !== "number" || brightness < 1 || brightness > 100) { + console.error("Brightness must be a number between 1 and 100."); + if (typeof callback === "function") callback(null, "Invalid brightness."); + return; + } + const value = Math.max(1, Math.min(Math.round((brightness / 100) * 31), 31)); + const proc = execAsyncCommand( + "tee", + ["/sys/class/backlight/10-0045/brightness"], + callback + ); + proc.stdin.write(value.toString()); + proc.stdin.end(); +}; + +/** + * Shuts down the system using `sudo shutdown -h now`. + * + * This function executes the command asynchronously. + * The output of the command will be provided through the callback function. + * + * @param {function} callback - A callback function that receives the output or error. + */ +const shutdownSystem = (callback = null) => { + execAsyncCommand("sudo", ["shutdown", "-h", "now"], callback); +}; + +/** + * Reboots the system using `sudo reboot`. + * + * This function executes the command asynchronously. + * The output of the command will be provided through the callback function. + * + * @param {function} callback - A callback function that receives the output or error. + */ +const rebootSystem = (callback = null) => { + execAsyncCommand("sudo", ["reboot"], callback); +}; + +/** + * Executes a command synchronously and returns the output. + * + * @param {string} cmd - The command to execute. + * @param {Array} args - The arguments for the command. + * @returns {string|null} The output of the command or null if an error occurs. + */ +const execSyncCommand = (cmd, args = []) => { + try { + const output = process.execSync([cmd, ...args].join(" "), { + encoding: "utf8", + }); + return output.trim().replace(/\0/g, ""); + } catch (error) { + console.error("Execute Sync:", error.message); + } + return null; +}; + +/** + * Executes a command asynchronously. + * + * @param {string} cmd - The command to execute. + * @param {Array} args - The arguments for the command. + * @param {function} callback - A callback function that receives the output or error. + * @returns {object} The spawned process object. + */ +const execAsyncCommand = (cmd, args = [], callback = null) => { + let errorOutput = ""; + let successOutput = ""; + let proc = process.spawn(cmd, args); + proc.stderr.on("data", (data) => { + if (data) { + errorOutput += data.toString(); + } + }); + proc.stdout.on("data", (data) => { + if (data) { + successOutput += data.toString(); + } + }); + proc.on("close", (code) => { + try { + if (typeof callback === "function") { + if (code === 0) { + callback(successOutput.trim().replace(/\0/g, ""), null); + } else { + callback(null, errorOutput.trim().replace(/\0/g, "")); + } + } + } catch (error) { + console.error("Execute Async:", error.message); + } + }); + return proc; +}; + +module.exports = { + init, + update, + getModel, + getSerialNumber, + getHostName, + getUpTime, + getMemorySize, + getMemoryUsage, + getProcessorUsage, + getProcessorTemperature, + getDisplayStatus, + setDisplayStatus, + getDisplayBrightness, + setDisplayBrightness, + shutdownSystem, + rebootSystem, +}; diff --git a/src/integration.js b/src/integration.js new file mode 100644 index 0000000..ce22f8e --- /dev/null +++ b/src/integration.js @@ -0,0 +1,677 @@ +const mqtt = require("mqtt"); +const hardware = require("./hardware"); +const { app } = require("electron"); + +global.INTEGRATION = global.INTEGRATION || { + initialized: false, + status: "offline", +}; + +/** + * Initializes the integration with the provided arguments. + * + * @param {Object} args - The command-line arguments to customize the initialization process. + * @returns {boolean} Returns true if the initialization was successful. + */ +const init = (args) => { + if (!args.mqtt_url) { + return false; + } + const url = new URL(args.mqtt_url); + const user = args.mqtt_user ? args.mqtt_user : null; + const password = args.mqtt_password ? args.mqtt_password : null; + const discovery = args.mqtt_discovery ? args.mqtt_discovery : "homeassistant"; + + const model = hardware.getModel(); + const hostName = hardware.getHostName(); + const serialNumber = hardware.getSerialNumber(); + + const deviceId = serialNumber.slice(-6).toUpperCase(); + const deviceName = hostName.charAt(0).toUpperCase() + hostName.slice(1); + + // Init globals + INTEGRATION.node = `rpi_${deviceId}`; + INTEGRATION.discovery = discovery; + INTEGRATION.device = { + name: `Raspberry Pi ${deviceName}`, + model: model, + serial_number: serialNumber, + manufacturer: "Raspberry Pi Ltd", + identifiers: [INTEGRATION.node], + sw_version: `${app.getName()}-v${app.getVersion()}`, + }; + + // Connection settings + const masked = password === null ? "null" : "*".repeat(password.length); + const options = + user === null || password == null + ? null + : { + username: user, + password: password, + }; + console.log("MQTT Connecting:", `${user}:${masked}@${url.toString()}`); + INTEGRATION.client = mqtt.connect(url.toString(), options); + + // Client connected + INTEGRATION.client + .on("connect", () => { + console.log(`MQTT Connected: ${url.toString()}\n`); + + // Init client controls + initShutdown(INTEGRATION.client); + initReboot(INTEGRATION.client); + initRefresh(INTEGRATION.client); + initKiosk(INTEGRATION.client); + initDisplay(INTEGRATION.client); + + // Init client sensors + initModel(INTEGRATION.client); + initSerialNumber(INTEGRATION.client); + initHostName(INTEGRATION.client); + initUpTime(INTEGRATION.client); + initMemorySize(INTEGRATION.client); + initMemoryUsage(INTEGRATION.client); + initProcessorUsage(INTEGRATION.client); + initProcessorTemperature(INTEGRATION.client); + initHeartbeat(INTEGRATION.client); + + // Integration initialized + INTEGRATION.initialized = true; + INTEGRATION.status = "online"; + }) + .on("error", (error) => { + console.error("MQTT:", error); + INTEGRATION.status = "offline"; + }); + + // Update sensor states on display change + HARDWARE.display.notifiers.push(() => { + updateDisplay(INTEGRATION.client); + }); + + // Update heartbeat time periodically + setInterval(() => { + updateHeartbeat(INTEGRATION.client); + }, 30 * 1000); + + // Update sensor states periodically + setInterval(update, 60 * 1000); + + return true; +}; + +/** + * Updates the shared integration properties. + */ +const update = () => { + if (!INTEGRATION.initialized) { + return; + } + + // Update client sensors + updateKiosk(INTEGRATION.client); + updateUpTime(INTEGRATION.client); + updateMemoryUsage(INTEGRATION.client); + updateProcessorUsage(INTEGRATION.client); + updateProcessorTemperature(INTEGRATION.client); +}; + +/** + * Initializes the shutdown button and handles the execute logic. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initShutdown = (client) => { + const root = `${INTEGRATION.discovery}/button/${INTEGRATION.node}/shutdown`; + client + .publish( + `${root}/config`, + JSON.stringify({ + name: "Shutdown", + unique_id: `${INTEGRATION.node}_shutdown`, + command_topic: `${root}/execute`, + icon: "mdi:power", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ) + .on("message", (topic, message) => { + if (topic === `${root}/execute`) { + console.log("Shutdown system..."); + hardware.setDisplayStatus("ON"); + hardware.shutdownSystem(); + } + }) + .subscribe(`${root}/execute`); +}; + +/** + * Initializes the reboot button and handles the execute logic. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initReboot = (client) => { + const root = `${INTEGRATION.discovery}/button/${INTEGRATION.node}/reboot`; + client + .publish( + `${root}/config`, + JSON.stringify({ + name: "Reboot", + unique_id: `${INTEGRATION.node}_reboot`, + command_topic: `${root}/execute`, + icon: "mdi:restart", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ) + .on("message", (topic, message) => { + if (topic === `${root}/execute`) { + console.log("Rebooting system..."); + hardware.setDisplayStatus("ON"); + hardware.rebootSystem(); + } + }) + .subscribe(`${root}/execute`); +}; + +/** + * Initializes the refresh button and handles the execute logic. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initRefresh = (client) => { + const root = `${INTEGRATION.discovery}/button/${INTEGRATION.node}/refresh`; + client + .publish( + `${root}/config`, + JSON.stringify({ + name: "Refresh", + unique_id: `${INTEGRATION.node}_refresh`, + command_topic: `${root}/execute`, + icon: "mdi:web-refresh", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ) + .on("message", (topic, message) => { + if (topic === `${root}/execute`) { + console.log("Refresh webview..."); + hardware.setDisplayStatus("ON"); + WEBVIEW.view.webContents.reloadIgnoringCache(); + } + }) + .subscribe(`${root}/execute`); +}; + +/** + * Initializes the kiosk select status and handles the execute logic. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initKiosk = (client) => { + const root = `${INTEGRATION.discovery}/select/${INTEGRATION.node}/kiosk`; + client + .publish( + `${root}/config`, + JSON.stringify({ + name: `Kiosk`, + unique_id: `${INTEGRATION.node}_kiosk`, + command_topic: `${root}/set`, + state_topic: `${root}/status`, + value_template: "{{ value }}", + options: [ + "Framed", + "Fullscreen", + "Maximized", + "Minimized", + "Terminated", + ], + icon: "mdi:overscan", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ) + .on("message", (topic, message) => { + if (topic === `${root}/set`) { + const status = message.toString(); + console.log("Set Kiosk Status:", status); + hardware.setDisplayStatus("ON"); + switch (status) { + case "Framed": + WEBVIEW.window.restore(); + WEBVIEW.window.unmaximize(); + WEBVIEW.window.setFullScreen(false); + break; + case "Fullscreen": + WEBVIEW.window.restore(); + WEBVIEW.window.unmaximize(); + WEBVIEW.window.setFullScreen(true); + break; + case "Maximized": + WEBVIEW.window.restore(); + WEBVIEW.window.setFullScreen(false); + WEBVIEW.window.maximize(); + break; + case "Minimized": + WEBVIEW.window.restore(); + WEBVIEW.window.setFullScreen(false); + WEBVIEW.window.minimize(); + break; + case "Terminated": + app.quit(); + } + } + }) + .subscribe(`${root}/set`); + updateKiosk(client); +}; + +/** + * Updates the kiosk status via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateKiosk = (client) => { + const kiosk = WEBVIEW.status; + const root = `${INTEGRATION.discovery}/select/${INTEGRATION.node}/kiosk`; + client.publish(`${root}/status`, `${kiosk}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the display status, brightness and handles the execute logic. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initDisplay = (client) => { + const root = `${INTEGRATION.discovery}/light/${INTEGRATION.node}/display`; + client + .publish( + `${root}/config`, + JSON.stringify({ + name: `Display`, + unique_id: `${INTEGRATION.node}_display`, + command_topic: `${root}/set`, + state_topic: `${root}/status`, + brightness_command_topic: `${root}/brightness/set`, + brightness_state_topic: `${root}/brightness/status`, + brightness_scale: 100, + icon: "mdi:monitor-shimmer", + platform: "light", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ) + .on("message", (topic, message) => { + if (topic === `${root}/set`) { + const status = message.toString(); + console.log("Set Display Status:", status); + hardware.setDisplayStatus(status); + } else if (topic === `${root}/brightness/set`) { + const brightness = parseInt(message, 10); + console.log("Set Display Brightness:", brightness); + hardware.setDisplayBrightness(brightness); + } + }) + .subscribe(`${root}/set`) + .subscribe(`${root}/brightness/set`); + updateDisplay(client); +}; + +/** + * Updates the display status, brightness via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateDisplay = (client) => { + const status = hardware.getDisplayStatus(); + const brightness = hardware.getDisplayBrightness(); + const root = `${INTEGRATION.discovery}/light/${INTEGRATION.node}/display`; + client.publish(`${root}/status`, `${status}`, { + qos: 1, + retain: true, + }); + client.publish(`${root}/brightness/status`, `${brightness}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the model sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initModel = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/model`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Model`, + unique_id: `${INTEGRATION.node}_model`, + state_topic: `${root}/status`, + value_template: "{{ value }}", + icon: "mdi:raspberry-pi", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateModel(client); +}; + +/** + * Updates the model sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateModel = (client) => { + const model = hardware.getModel(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/model`; + client.publish(`${root}/status`, `${model}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the serial number sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initSerialNumber = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/serial_number`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Serial Number`, + unique_id: `${INTEGRATION.node}_serial_number`, + state_topic: `${root}/status`, + value_template: "{{ value }}", + icon: "mdi:hexadecimal", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateSerialNumber(client); +}; + +/** + * Updates the serial number sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateSerialNumber = (client) => { + const serialNumber = hardware.getSerialNumber(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/serial_number`; + client.publish(`${root}/status`, `${serialNumber}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the host name sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initHostName = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/host_name`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Host Name`, + unique_id: `${INTEGRATION.node}_host_name`, + state_topic: `${root}/status`, + value_template: "{{ value }}", + icon: "mdi:console-network", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateHostName(client); +}; + +/** + * Updates the host name sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateHostName = (client) => { + const hostName = hardware.getHostName(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/host_name`; + client.publish(`${root}/status`, `${hostName}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the up time sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initUpTime = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/up_time`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Up Time`, + unique_id: `${INTEGRATION.node}_up_time`, + state_topic: `${root}/status`, + value_template: "{{ (value | float) | round(0) }}", + unit_of_measurement: "min", + icon: "mdi:timeline-clock", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateUpTime(client); +}; + +/** + * Updates the up time sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateUpTime = (client) => { + const upTime = hardware.getUpTime(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/up_time`; + client.publish(`${root}/status`, `${upTime}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the memory size sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initMemorySize = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/memory_size`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Memory Size`, + unique_id: `${INTEGRATION.node}_memory_size`, + state_topic: `${root}/status`, + value_template: "{{ (value | float) | round(2) }}", + unit_of_measurement: "GiB", + icon: "mdi:memory", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateMemorySize(client); +}; + +/** + * Updates the memory size sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateMemorySize = (client) => { + const memorySize = hardware.getMemorySize(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/memory_size`; + client.publish(`${root}/status`, `${memorySize}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the memory usage sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initMemoryUsage = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/memory_usage`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Memory Usage`, + unique_id: `${INTEGRATION.node}_memory_usage`, + state_topic: `${root}/status`, + value_template: "{{ (value | float) | round(0) }}", + unit_of_measurement: "%", + icon: "mdi:memory-arrow-down", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateMemoryUsage(client); +}; + +/** + * Updates the memory usage sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateMemoryUsage = (client) => { + const memoryUsage = hardware.getMemoryUsage(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/memory_usage`; + client.publish(`${root}/status`, `${memoryUsage}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the processor usage sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initProcessorUsage = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/processor_usage`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Processor Usage`, + unique_id: `${INTEGRATION.node}_processor_usage`, + state_topic: `${root}/status`, + value_template: "{{ (value | float) | round(0) }}", + unit_of_measurement: "%", + icon: "mdi:cpu-64-bit", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateProcessorUsage(client); +}; + +/** + * Updates the processor usage sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateProcessorUsage = (client) => { + const processorUsage = hardware.getProcessorUsage(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/processor_usage`; + client.publish(`${root}/status`, `${processorUsage}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the processor temperature sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initProcessorTemperature = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/processor_temperature`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Processor Temperature`, + unique_id: `${INTEGRATION.node}_processor_temperature`, + state_topic: `${root}/status`, + value_template: "{{ (value | float) | round(0) }}", + unit_of_measurement: "°C", + icon: "mdi:radiator", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateProcessorTemperature(client); +}; + +/** + * Updates the processor temperature sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateProcessorTemperature = (client) => { + const processorTemperature = hardware.getProcessorTemperature(); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/processor_temperature`; + client.publish(`${root}/status`, `${processorTemperature}`, { + qos: 1, + retain: true, + }); +}; + +/** + * Initializes the heartbeat sensor. + * + * @param {Object} client - Instance of the mqtt client. + */ +const initHeartbeat = (client) => { + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/heartbeat`; + client.publish( + `${root}/config`, + JSON.stringify({ + name: `Heartbeat`, + unique_id: `${INTEGRATION.node}_heartbeat`, + state_topic: `${root}/status`, + value_template: "{{ value }}", + icon: "mdi:heart-flash", + device: INTEGRATION.device, + }), + { qos: 1, retain: true } + ); + updateHeartbeat(client); +}; + +/** + * Updates the heartbeat sensor via the mqtt connection. + * + * @param {Object} client - Instance of the mqtt client. + */ +const updateHeartbeat = (client) => { + const now = new Date(); + const local = new Date(now.getTime() - now.getTimezoneOffset() * 60 * 1000); + const heartbeat = local.toISOString().replace(/\.\d{3}Z$/, ""); + const root = `${INTEGRATION.discovery}/sensor/${INTEGRATION.node}/heartbeat`; + client.publish(`${root}/status`, `${heartbeat}`, { + qos: 1, + retain: true, + }); +}; + +module.exports = { + init, + update, +}; diff --git a/src/webview.js b/src/webview.js new file mode 100644 index 0000000..4128734 --- /dev/null +++ b/src/webview.js @@ -0,0 +1,157 @@ +const path = require("path"); +const hardware = require("./hardware"); +const integration = require("./integration"); +const { app, nativeTheme, BaseWindow, WebContentsView } = require("electron"); + +global.WEBVIEW = global.WEBVIEW || { + initialized: false, + status: "offline", + locked: false, +}; + +/** + * Initializes the webview with the provided arguments. + * + * @param {Object} args - The command-line arguments to customize the initialization process. + * @returns {boolean} Returns true if the initialization was successful. + */ +const init = (args) => { + if (!args.web_url) { + console.error("Please provide the '--web-url' parameter."); + return app.quit(); + } + const url = new URL(args.web_url); + const theme = args.web_theme ? args.web_theme : "dark"; + const zoom = args.web_zoom ? parseFloat(args.web_zoom) : 1.25; + + // Init global root window + WEBVIEW.window = new BaseWindow({ + icon: path.join(__dirname, "..", "img", "icon.png"), + }); + WEBVIEW.window.setMenuBarVisibility(false); + WEBVIEW.window.setFullScreen(true); + nativeTheme.themeSource = theme; + // WEBVIEW.window.minimize(); + + // Init global main webview + WEBVIEW.view = new WebContentsView(); + WEBVIEW.window.contentView.addChildView(WEBVIEW.view); + WEBVIEW.view.webContents.loadURL(url.toString()); + + // Register events + windowEvents(WEBVIEW.window, zoom); + viewEvents(WEBVIEW.view); + + return true; +}; + +/** + * Updates the shared webview properties. + */ +const update = () => { + if (!WEBVIEW.initialized) { + return; + } + + // Update window status + if (WEBVIEW.window.isFullScreen()) { + WEBVIEW.status = "Fullscreen"; + } else if (WEBVIEW.window.isMinimized()) { + WEBVIEW.status = "Minimized"; + } else if (WEBVIEW.window.isMaximized()) { + WEBVIEW.status = "Maximized"; + } else { + WEBVIEW.status = "Framed"; + } + + // Update integration sensor + console.log("Update Kiosk Status:", WEBVIEW.status); + integration.update(); +}; + +/** + * Register window events and handler. + * + * @param {Object} window - The root window object. + * @param {number} zoom - Zoom level used for the webview. + */ +const windowEvents = (window, zoom) => { + // Handle window resize for webview bounds + const resize = () => { + const { width, height } = window.getBounds(); + WEBVIEW.view.setBounds({ x: 0, y: 0, width: width, height: height }); + WEBVIEW.view.webContents.setZoomFactor(zoom); + }; + window.on("ready-to-show", resize); + window.on("resize", resize); + resize(); + + // Handle focus change for webview lock + HARDWARE.display.notifiers.push(() => { + WEBVIEW.locked = hardware.getDisplayStatus() === "OFF"; + if (WEBVIEW.locked) { + window.blur(); + } + /* This also works, but it doesn't allow to react for screen wake up. + window.setIgnoreMouseEvents(getDisplayStatus() === "OFF"); + */ + }); + window.on("focus", () => { + if (WEBVIEW.locked) { + hardware.setDisplayStatus("ON"); + window.blur(); + } + WEBVIEW.locked = false; + }); + + // Update window status + window.on("minimize", update); + window.on("restore", update); + window.on("maximize", update); + window.on("unmaximize", update); + window.on("enter-full-screen", update); + window.on("leave-full-screen", update); + process.on("SIGINT", app.quit); + app.on("before-quit", () => { + WEBVIEW.status = "Terminated"; + integration.update(); + }); +}; + +/** + * Register webview events and handler. + * + * @param {Object} view - The main webview object. + */ +const viewEvents = (view) => { + // Enable webview touch emulation + view.webContents.debugger.attach("1.1"); + view.webContents.debugger.sendCommand( + "Emulation.setEmitTouchEventsForMouse", + { + enabled: true, + configuration: "mobile", + } + ); + + // Disable webview hyperlinks + view.webContents.setWindowOpenHandler(() => { + return { action: "deny" }; + }); + + // Remove webview scrollbar + view.webContents.on("dom-ready", () => { + view.webContents.insertCSS("::-webkit-scrollbar { display: none; }"); + }); + + // Webview fully loaded + view.webContents.on("did-finish-load", () => { + WEBVIEW.initialized = true; + update(); + }); +}; + +module.exports = { + init, + update, +}; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..9a549c0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2557 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"7zip-bin@~5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.2.0.tgz#7a03314684dd6572b7dfa89e68ce31d60286854d" + integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A== + +"@babel/runtime@^7.23.8", "@babel/runtime@^7.24.5": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@develar/schema-utils@~2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" + integrity sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +"@electron/asar@^3.2.7": + version "3.2.17" + resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.17.tgz#91d28087aad80d1a1c8cc4e667c6476edf50f949" + integrity sha512-OcWImUI686w8LkghQj9R2ynZ2ME693Ek6L1SiaAgqGKzBaTIZw3fHDqN82Rcl+EU1Gm9EgkJ5KLIY/q5DCRbbA== + dependencies: + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + +"@electron/get@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" + integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^11.8.5" + progress "^2.0.3" + semver "^6.2.0" + sumchecker "^3.0.1" + optionalDependencies: + global-agent "^3.0.0" + +"@electron/notarize@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.5.0.tgz#d4d25356adfa29df4a76bd64a8bd347237cd251e" + integrity sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A== + dependencies: + debug "^4.1.1" + fs-extra "^9.0.1" + promise-retry "^2.0.1" + +"@electron/osx-sign@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.3.1.tgz#faf7eeca7ca004a6be541dc4cf7a1bd59ec59b1c" + integrity sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw== + dependencies: + compare-version "^0.1.2" + debug "^4.3.4" + fs-extra "^10.0.0" + isbinaryfile "^4.0.8" + minimist "^1.2.6" + plist "^3.0.5" + +"@electron/rebuild@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.1.tgz#59e8e36c3f6e6b94a699425dfb61f0394c3dd4df" + integrity sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w== + 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.2.0" + node-gyp "^9.0.0" + ora "^5.1.0" + read-binary-file-arch "^1.0.6" + semver "^7.3.5" + tar "^6.0.5" + yargs "^17.0.1" + +"@electron/universal@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-2.0.1.tgz#7b070ab355e02957388f3dbd68e2c3cd08c448ae" + integrity sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA== + dependencies: + "@electron/asar" "^3.2.7" + "@malept/cross-spawn-promise" "^2.0.0" + debug "^4.3.1" + dir-compare "^4.2.0" + fs-extra "^11.1.1" + minimatch "^9.0.3" + plist "^3.1.0" + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + 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" + +"@malept/cross-spawn-promise@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d" + integrity sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg== + dependencies: + cross-spawn "^7.0.1" + +"@malept/flatpak-bundler@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz#e8a32c30a95d20c2b1bb635cc580981a06389858" + integrity sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q== + dependencies: + debug "^4.1.1" + fs-extra "^9.0.0" + lodash "^4.17.15" + tmp-promise "^3.0.2" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/debug@^4.1.6": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/fs-extra@9.0.13", "@types/fs-extra@^9.0.11": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + +"@types/node@*": + version "22.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" + integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== + dependencies: + undici-types "~6.20.0" + +"@types/node@^20.9.0": + version "20.17.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.9.tgz#5f141d4b7ee125cdee5faefe28de095398865bab" + integrity sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw== + dependencies: + undici-types "~6.19.2" + +"@types/plist@^3.0.1": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.5.tgz#9a0c49c0f9886c8c8696a7904dd703f6284036e0" + integrity sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA== + dependencies: + "@types/node" "*" + xmlbuilder ">=11.0.1" + +"@types/readable-stream@^4.0.0", "@types/readable-stream@^4.0.5": + version "4.0.18" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-4.0.18.tgz#5d8d15d26c776500ce573cae580787d149823bfc" + integrity sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +"@types/verror@^1.10.3": + version "1.10.10" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.10.tgz#d5a4b56abac169bfbc8b23d291363a682e6fa087" + integrity sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg== + +"@types/ws@^8.5.9": + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== + dependencies: + "@types/node" "*" + +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.12.0: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +app-builder-bin@5.0.0-alpha.10: + version "5.0.0-alpha.10" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-5.0.0-alpha.10.tgz#cf12e593b6b847fb9d04027fa755c6c6610d778b" + integrity sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw== + +app-builder-lib@25.1.8: + version "25.1.8" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.1.8.tgz#ae376039c5f269c7d562af494a087e5bc6310f1b" + integrity sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg== + dependencies: + "@develar/schema-utils" "~2.6.5" + "@electron/notarize" "2.5.0" + "@electron/osx-sign" "1.3.1" + "@electron/rebuild" "3.6.1" + "@electron/universal" "2.0.1" + "@malept/flatpak-bundler" "^0.4.0" + "@types/fs-extra" "9.0.13" + async-exit-hook "^2.0.1" + bluebird-lst "^1.0.9" + builder-util "25.1.7" + builder-util-runtime "9.2.10" + chromium-pickle-js "^0.2.0" + config-file-ts "0.2.8-rc1" + debug "^4.3.4" + dotenv "^16.4.5" + dotenv-expand "^11.0.6" + ejs "^3.1.8" + electron-publish "25.1.7" + form-data "^4.0.0" + fs-extra "^10.1.0" + hosted-git-info "^4.1.0" + is-ci "^3.0.0" + isbinaryfile "^5.0.0" + js-yaml "^4.1.0" + json5 "^2.2.3" + lazy-val "^1.0.5" + minimatch "^10.0.0" + resedit "^1.7.0" + sanitize-filename "^1.6.3" + semver "^7.3.8" + tar "^6.1.12" + temp-file "^3.4.0" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-exit-hook@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bl@^6.0.8: + version "6.0.16" + resolved "https://registry.yarnpkg.com/bl/-/bl-6.0.16.tgz#29b190f1a754e2d168de3dc8c74ed8d12bf78e6e" + integrity sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg== + dependencies: + "@types/readable-stream" "^4.0.0" + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^4.2.0" + +bluebird-lst@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c" + integrity sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw== + dependencies: + bluebird "^3.5.5" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +boolean@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.1.0, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builder-util-runtime@9.2.10: + version "9.2.10" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.10.tgz#a0f7d9e214158402e78b74a745c8d9f870c604bc" + integrity sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw== + dependencies: + debug "^4.3.4" + sax "^1.2.4" + +builder-util@25.1.7: + version "25.1.7" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-25.1.7.tgz#a07b404f0cb1a635aa165902be65297d58932ff8" + integrity sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww== + dependencies: + "7zip-bin" "~5.2.0" + "@types/debug" "^4.1.6" + app-builder-bin "5.0.0-alpha.10" + bluebird-lst "^1.0.9" + builder-util-runtime "9.2.10" + chalk "^4.1.2" + cross-spawn "^7.0.3" + debug "^4.3.4" + fs-extra "^10.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.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" + +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + 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" + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commist@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/commist/-/commist-3.2.0.tgz#da9c8e5f245ac21510badc4b10c46b5bcc9b56cd" + integrity sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw== + +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-file-ts@0.2.8-rc1: + version "0.2.8-rc1" + resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz#fb7fc6ccb2e313f69dbeb78f1db0b00038049de0" + integrity sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg== + dependencies: + glob "^10.3.12" + typescript "^5.4.3" + +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +crc@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +detect-libc@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dir-compare@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-4.2.0.tgz#d1d4999c14fbf55281071fdae4293b3b9ce86f19" + integrity sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ== + dependencies: + minimatch "^3.0.5" + p-limit "^3.1.0 " + +dmg-builder@25.1.8: + version "25.1.8" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.1.8.tgz#41f3b725edd896156e891016a44129e1bd580430" + integrity sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ== + dependencies: + app-builder-lib "25.1.8" + builder-util "25.1.7" + builder-util-runtime "9.2.10" + fs-extra "^10.1.0" + iconv-lite "^0.6.2" + js-yaml "^4.1.0" + optionalDependencies: + dmg-license "^1.0.11" + +dmg-license@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" + integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== + 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" + +dotenv-expand@^11.0.6: + version "11.0.7" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== + dependencies: + dotenv "^16.4.5" + +dotenv@^16.4.5: + version "16.4.6" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.6.tgz#fc88e8a664087abf3e19d61e21f7feee1849bbb1" + integrity sha512-JhcR/+KIjkkjiU8yEpaB/USlzVi3i5whwOjpIRNGi9svKEXZSe+Qp6IWAjFjv+2GViAoDRCUv/QLNziQxsLqDg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ejs@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-builder@^25.1.8: + version "25.1.8" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.1.8.tgz#b0e310f1600787610bb84c3f39bc7aadb2548486" + integrity sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig== + dependencies: + app-builder-lib "25.1.8" + builder-util "25.1.7" + builder-util-runtime "9.2.10" + chalk "^4.1.2" + dmg-builder "25.1.8" + fs-extra "^10.1.0" + is-ci "^3.0.0" + lazy-val "^1.0.5" + simple-update-notifier "2.0.0" + yargs "^17.6.2" + +electron-publish@25.1.7: + version "25.1.7" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.1.7.tgz#14e50c2a3fafdc1c454eadbbc47ead89a48bb554" + integrity sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg== + dependencies: + "@types/fs-extra" "^9.0.11" + builder-util "25.1.7" + builder-util-runtime "9.2.10" + chalk "^4.1.2" + fs-extra "^10.1.0" + lazy-val "^1.0.5" + mime "^2.5.2" + +electron@^33.2.1: + version "33.2.1" + resolved "https://registry.yarnpkg.com/electron/-/electron-33.2.1.tgz#d0d7bba7a7abf4f14881d0a6e03c498b301a2d5f" + integrity sha512-SG/nmSsK9Qg1p6wAW+ZfqU+AV8cmXMTIklUL18NnOKfZLlum4ZsDoVdmmmlL39ZmeCaq27dr7CgslRPahfoVJg== + dependencies: + "@electron/get" "^2.0.0" + "@types/node" "^20.9.0" + extract-zip "^2.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-unique-numbers@^8.0.13: + version "8.0.13" + resolved "https://registry.yarnpkg.com/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz#3c87232061ff5f408a216e1f0121232f76f695d7" + integrity sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g== + dependencies: + "@babel/runtime" "^7.23.8" + tslib "^2.6.2" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.1: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + 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" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob@^10.3.12: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + 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" + +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== + 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" + +globalthis@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +gopd@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.1.0.tgz#df8f0839c2d48caefc32a025a49294d39606c912" + integrity sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA== + dependencies: + get-intrinsic "^1.2.4" + +got@^11.7.0, got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + 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" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43" + integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q== + dependencies: + call-bind "^1.0.7" + +has-symbols@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +help-me@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== + +hosted-git-info@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-corefoundation@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== + dependencies: + cli-truncate "^2.1.0" + node-addon-api "^1.6.3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isbinaryfile@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isbinaryfile@^5.0.0: + version "5.0.4" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.4.tgz#2a2edefa76cafa66613fe4c1ea52f7f031017bdf" + integrity sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +js-sdsl@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +lazy-val@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d" + integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q== + +lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +make-fetch-happen@^10.0.3: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + 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 "^9.0.0" + +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== + dependencies: + escape-string-regexp "^4.0.0" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" + integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.3, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mqtt-packet@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/mqtt-packet/-/mqtt-packet-9.0.1.tgz#2d4f1085f84493ce410ee263a7e4ed113d4351d7" + integrity sha512-koZF1V/X2RZUI6uD9wN5OK1JxxcG1ofAR4H3LjCw1FkeKzruZQ26aAA6v2m1lZyWONZIR5wMMJFrZJDRNzbiQw== + dependencies: + bl "^6.0.8" + debug "^4.3.4" + process-nextick-args "^2.0.1" + +mqtt@^5.10.3: + version "5.10.3" + resolved "https://registry.yarnpkg.com/mqtt/-/mqtt-5.10.3.tgz#bd5222d9efb3e31423ac07866d391827bb921b71" + integrity sha512-hA/6YrUS4fywhBGCjH/XXUuLeueJiPqruVVWjK2A24Ma4KcWfZ/x8x07aoesBV+HXDWBC08tbT4IWfSXNW0Jtw== + dependencies: + "@types/readable-stream" "^4.0.5" + "@types/ws" "^8.5.9" + commist "^3.2.0" + concat-stream "^2.0.0" + debug "^4.3.4" + help-me "^5.0.0" + lru-cache "^10.0.1" + minimist "^1.2.8" + mqtt-packet "^9.0.1" + number-allocator "^1.0.14" + readable-stream "^4.4.2" + reinterval "^1.1.0" + rfdc "^1.3.0" + split2 "^4.2.0" + worker-timers "^7.1.4" + ws "^8.17.1" + +ms@^2.0.0, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +node-abi@^3.45.0: + version "3.71.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.71.0.tgz#52d84bbcd8575efb71468fbaa1f9a49b2c242038" + integrity sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw== + dependencies: + semver "^7.3.5" + +node-addon-api@^1.6.3: + version "1.7.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" + integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== + +node-api-version@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.2.0.tgz#5177441da2b1046a4d4547ab9e0972eed7b1ac1d" + integrity sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg== + dependencies: + semver "^7.3.5" + +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.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" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +number-allocator@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/number-allocator/-/number-allocator-1.0.14.tgz#1f2e32855498a7740dcc8c78bed54592d930ee4d" + integrity sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA== + dependencies: + debug "^4.3.1" + js-sdsl "4.3.0" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@^5.1.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + 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" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +"p-limit@^3.1.0 ": + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +pe-library@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pe-library/-/pe-library-0.4.1.tgz#e269be0340dcb13aa6949d743da7d658c3e2fbea" + integrity sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +plist@^3.0.4, plist@^3.0.5, plist@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== + dependencies: + "@xmldom/xmldom" "^0.8.8" + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +process-nextick-args@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +pump@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +read-binary-file-arch@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz#959c4637daa932280a9b911b1a6766a7e44288fc" + integrity sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg== + dependencies: + debug "^4.3.4" + +readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.2.0, readable-stream@^4.4.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +reinterval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reinterval/-/reinterval-1.1.0.tgz#3361ecfa3ca6c18283380dd0bb9546f390f5ece7" + integrity sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resedit@^1.7.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/resedit/-/resedit-1.7.2.tgz#b1041170b99811710c13f949c7d225871de4cc78" + integrity sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA== + dependencies: + pe-library "^0.4.1" + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +rfdc@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +roarr@^2.15.3: + version "2.15.4" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== + 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" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sax@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== + dependencies: + type-fest "^0.13.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-update-notifier@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== + dependencies: + semver "^7.5.3" + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +smart-buffer@^4.0.2, smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +source-map-support@^0.5.19: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split2@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +sprintf-js@^1.1.2, sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +stat-mode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" + integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +sumchecker@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== + dependencies: + debug "^4.1.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + 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" + +temp-file@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7" + integrity sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg== + dependencies: + async-exit-hook "^2.0.1" + fs-extra "^10.0.0" + +tmp-promise@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^5.4.3: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf8-byte-length@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz#f9f63910d15536ee2b2d5dd4665389715eac5c1e" + integrity sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +verror@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +worker-timers-broker@^6.1.8: + version "6.1.8" + resolved "https://registry.yarnpkg.com/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz#08f64e5931b77fadc55f0c7388c077a7dd17e4c7" + integrity sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ== + dependencies: + "@babel/runtime" "^7.24.5" + fast-unique-numbers "^8.0.13" + tslib "^2.6.2" + worker-timers-worker "^7.0.71" + +worker-timers-worker@^7.0.71: + version "7.0.71" + resolved "https://registry.yarnpkg.com/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz#f96138bafbcfaabea116603ce23956e05e76db6a" + integrity sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ== + dependencies: + "@babel/runtime" "^7.24.5" + tslib "^2.6.2" + +worker-timers@^7.1.4: + version "7.1.8" + resolved "https://registry.yarnpkg.com/worker-timers/-/worker-timers-7.1.8.tgz#f53072c396ac4264fd3027914f4ab793c92d90be" + integrity sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw== + dependencies: + "@babel/runtime" "^7.24.5" + tslib "^2.6.2" + worker-timers-broker "^6.1.8" + worker-timers-worker "^7.0.71" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.17.1: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.0.1, yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + 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" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==