├── config.json ├── .gitattributes ├── server.js ├── package.json ├── sharding.js ├── README.md ├── .gitignore ├── index.js └── yarn.lock /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "?" 3 | } 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const server = express(); 3 | server.all("/", (req, res) => { 4 | res.send("Bot online."); 5 | }); 6 | 7 | let keepAlive = () => { 8 | server.listen(3000, () => { 9 | console.log("Server is Ready!"); 10 | }); 11 | }; 12 | 13 | module.exports = keepAlive; 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cure-bot", 3 | "version": "1.0.0", 4 | "description": "CuRe Bot is a custom response bot for discord.", 5 | "main": "bot.js", 6 | "scripts": { 7 | "dev": "nodemon sharding.js", 8 | "start": "node sharding.js" 9 | }, 10 | "author": "Joshua Martinez", 11 | "license": "MIT", 12 | "dependencies": { 13 | "axios": "^0.27.2", 14 | "blapi": "^2.2.2", 15 | "discord.js": "^12.5.3", 16 | "dotenv": "^16.0.1", 17 | "express": "^4.18.1", 18 | "memory-cache": "^0.2.0", 19 | "statcord.js": "^3.4.3" 20 | }, 21 | "devDependencies": { 22 | "nodemon": "^2.0.19" 23 | } 24 | } -------------------------------------------------------------------------------- /sharding.js: -------------------------------------------------------------------------------- 1 | require("./server")(); 2 | require("dotenv").config(); 3 | const Discord = require("discord.js"); 4 | const config = require("./config"); 5 | const Statcord = require("statcord.js"); 6 | 7 | const manager = new Discord.ShardingManager('./index.js', { token: process.env.bot_token}); 8 | 9 | const statcord = new Statcord.ShardingClient({ 10 | key: process.env.statcord, 11 | manager 12 | }); 13 | 14 | manager.spawn(2); 15 | 16 | manager.on("shardCreate", (shard) => { 17 | console.log(`Shard ${shard.id} launched`); 18 | }); 19 | 20 | statcord.on("autopost-start", () => { 21 | console.log("Started statcord autopost."); 22 | }); 23 | 24 | statcord.on("post", status => { 25 | if (!status) console.log("Posted to statcord."); 26 | else console.error(status); 27 | }); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CuRe Bot 2 | 3 | ### **Cu**stom **Re**sponse Bot 4 | 5 | CuRe your FAQs with CuRe Bot! 6 | CuRe Bot is a custom response bot for Discord designed with ease of use and simplicity in mind. 7 | 8 | ### [Invite](https://cure.jkm.sh/invite) - [Support Server](https://cure.jkm.sh/server) - [Upvote](https://top.gg/bot/592968118905733120/vote) 9 | 10 | Prefix: `?` 11 | 12 | Commands: 13 | 14 | - `?help` 15 | - Need help using the bot? Join the [CuRe Bot Support Server](https://cure.jkm.sh/server). 16 | - `?create [your trigger here] - [your response here]` 17 | - This command creates a trigger. Whenever a user sends a message containing the "trigger" string, the bot will respond with the "response" string. 18 | - `?list` 19 | - Displays the server's trigger and response list. 20 | - `?remove [trigger index]` 21 | - Deletes a trigger from the server. To get a trigger's index, use the `?list` command. 22 | - `?ping` 23 | 24 | Here is CuRe Bot in action! 25 | ![Example](https://doggo.ninja/OQkE4N.gif) 26 | This was done with the following trigger and response: 27 | Trigger: "open a ticket" 28 | Response: "You can open by running \`-ticket open help\`." 29 | Bot command: `` ?create open a ticket - You can open by running `-ticket open help`. `` 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Optional REPL history 57 | .node_repl_history 58 | 59 | # Output of 'npm pack' 60 | *.tgz 61 | 62 | # Yarn Integrity file 63 | .yarn-integrity 64 | 65 | # dotenv environment variables file 66 | .env 67 | .env.test 68 | 69 | # parcel-bundler cache (https://parceljs.org/) 70 | .cache 71 | 72 | # next.js build output 73 | .next 74 | 75 | # nuxt.js build output 76 | .nuxt 77 | 78 | # vuepress build output 79 | .vuepress/dist 80 | 81 | # Serverless directories 82 | .serverless/ 83 | 84 | # FuseBox cache 85 | .fusebox/ 86 | 87 | # DynamoDB Local files 88 | .dynamodb/ 89 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const Discord = require("discord.js"); 3 | const Statcord = require("statcord.js"); 4 | const blapi = require("blapi"); 5 | const config = require("./config.json"); 6 | const bot = new Discord.Client({ disableEveryone: true }); 7 | const axios = require("axios"); 8 | var cache = require("memory-cache"); 9 | bot.login(process.env.bot_token); 10 | 11 | const enabled = true; 12 | const STAGING = false; 13 | 14 | const permissionsError = 15 | "You need `MANAGE_MESSAGES` permissions in order to run this command."; 16 | 17 | bot.on("ready", () => { 18 | console.log(`Shard ${bot.shard.ids} ready (${bot.guilds.cache.size} guilds)`); 19 | 20 | const botListAPIKeys = { 21 | "top.gg": process.env.topgg_token, 22 | //'botlist.space': process.env.botlistspace_token, 23 | //'botsfordiscord.com': process.env.botsfordiscord_token, 24 | "discord.bots.gg": process.env.discordbotsgg_token, 25 | "discord.boats": process.env.discordboats_token, 26 | "discordbotlist.scom": process.env.discordbotlistcom_token, 27 | }; 28 | 29 | //post stats every hour 30 | setInterval(() => { 31 | bot.shard 32 | .fetchClientValues("guilds.cache.size") 33 | .then((shards) => { 34 | const guildCount = shards.reduce((x, y) => x + y); 35 | const shardCount = shards.length; 36 | blapi.manualPost( 37 | guildCount, 38 | bot.user.id, 39 | botListAPIKeys, 40 | null, 41 | shardCount, 42 | null 43 | ); 44 | }) 45 | .catch((err) => { 46 | //stats will get posted from last shard 47 | if (err.name.includes("SHARDING_IN_PROCESS")) { 48 | return; 49 | } 50 | console.error(err); 51 | }); 52 | }, 3600000); 53 | }); 54 | 55 | const statcordPost = async (cmd, message) => { 56 | try { 57 | 58 | Statcord.ShardingClient.postCommand(cmd, message.author.id, bot); 59 | } catch (e) { 60 | console.log("Failed to post command stats to statcord."); 61 | } 62 | }; 63 | 64 | bot.on("message", async (message) => { 65 | if (message.author.bot || message.guild == null) return; 66 | let messageBody = message.content.split(" "); 67 | if (message.content.substring(0, 1) !== config.prefix) return; 68 | const cmd = messageBody[0].substring(1); 69 | 70 | if (cmd == "help") { 71 | statcordPost("help", message); 72 | const embed = new Discord.MessageEmbed() 73 | .setColor("#2F3136") 74 | .setTitle("**CuRe Bot**") 75 | .setDescription( 76 | "CuRe Bot is a ***Cu***stom ***Re***sponse Bot for Discord." 77 | ) 78 | .addField( 79 | config.prefix + "create `your trigger here` - `your response here`", 80 | "**Creates a message trigger.** Whenever a message contains the trigger string, the bot will respond with the response string.\nThe trigger and response arguments are separated by ` - `.\n_Want features like random responses, automatic trigger message deletion, author mentions in responses, wildcards, DM responses, delayed responses, and more?_ Join the [bot support server](https://discord.gg/vhVPtYN6Dw) to get access to them!" 81 | ) 82 | .addField( 83 | config.prefix + "list", 84 | "Displays the server's **trigger list**." 85 | ) 86 | .addField( 87 | config.prefix + "remove `trigger index`", 88 | "**Deletes a trigger.**\nTo get a trigger's index, run `" + 89 | config.prefix + 90 | "list`." 91 | ) 92 | .addField( 93 | config.prefix + "ping", 94 | "Displays the latency of bot to the Discord's servers." 95 | ) 96 | //.addField(config.prefix + "stats", "Shows the bot's usage statistics.") 97 | .addField( 98 | "Enjoy using CuRe?", 99 | "[Upvote CuRe](https://top.gg/bot/592968118905733120/vote)\n[Bot Invite](https://cure.jkm.sh/invite)" 100 | ) 101 | 102 | .addField( 103 | "Need help?", 104 | "Join the [CuRe Bot Support Server](https://cure.jkm.sh/server)" 105 | ) 106 | .setTimestamp() 107 | .setURL("https://cure.jkm.sh") 108 | .setFooter("💙 CuRe Bot"); 109 | 110 | return message.channel.send(embed); 111 | } else if (cmd == "list") { 112 | statcordPost("list", message); 113 | return message.channel.send( 114 | "View this server's triggers at the following link: https://cure.jkm.sh/triggers?guild=" + 115 | message.guild.id 116 | ); 117 | } else if (cmd == "ping") { 118 | statcordPost("ping", message); 119 | const m = await message.channel.send("Pong 🏓"); 120 | return m.edit( 121 | `Pong 🏓\nBot latency is ${ 122 | m.createdTimestamp - message.createdTimestamp 123 | }ms. Discord API Latency is ${bot.ws.ping}ms` 124 | ); 125 | } else if (cmd == "stats") { 126 | statcordPost("stats", message); 127 | let guildNum = 0; 128 | let channelNum = 0; 129 | let memberNum = 0; 130 | bot.guilds.cache.map((guild) => { 131 | guildNum++; 132 | guild.channels.cache.map((channel) => { 133 | channelNum++; 134 | }); 135 | memberNum += guild.memberCount; 136 | }); 137 | return message.channel.send( 138 | "I help **" + 139 | memberNum + 140 | " users** in **" + 141 | channelNum + 142 | " channels** of** " + 143 | guildNum + 144 | " servers!**" 145 | ); 146 | } 147 | }); 148 | 149 | const checkManageMessagePerms = (message) => { 150 | if (!message.channel.permissionsFor(message.member).has("MANAGE_MESSAGES")) { 151 | return true; 152 | } 153 | return false; 154 | }; 155 | 156 | //add trigger 157 | bot.on("message", async (message) => { 158 | if (message.author.bot || message.guild == null) return; 159 | const guild = message.guild.id; 160 | if ( 161 | message.content.substring(0, config.prefix.length + "create".length) == 162 | config.prefix + "create" 163 | ) { 164 | statcordPost("create", message); 165 | let content = message.content 166 | .substring(config.prefix.length + "create".length + 1) 167 | .split(" - "); 168 | if (content.length < 2) { 169 | return await message.channel.send( 170 | "You did not include an argument. Try again." 171 | ); 172 | } 173 | 174 | if (checkManageMessagePerms(message)) { 175 | return message.channel.send(permissionsError); 176 | } 177 | 178 | axios 179 | .get(process.env.storage_service + guild) 180 | .then(async function (response) { 181 | let after; 182 | if (JSON.stringify(response.data) == "{}") { 183 | after = JSON.parse( 184 | '{"' + 185 | content[0] + //trigger 186 | '":"' + 187 | content[1] + //response 188 | '"}' 189 | ); 190 | } else { 191 | let before = JSON.stringify(response.data); 192 | after = JSON.parse( 193 | before.substring(0, before.length - 1) + 194 | ',"' + 195 | content[0] + //trigger 196 | '":"' + 197 | content[1] + //response 198 | '"}' 199 | ); 200 | } 201 | pushNewTriggerList(message, after); 202 | }) 203 | .catch(async function (error) { 204 | console.log( 205 | "Error retrieving trigger list. Cannot add new trigger.\n" + error 206 | ); 207 | //if not triggers exist bc of 404 error try again here 208 | after = JSON.parse( 209 | '{"' + 210 | content[0] + //trigger 211 | '":"' + 212 | content[1] + //response 213 | '"}' 214 | ); 215 | pushNewTriggerList(message, after); 216 | }); 217 | } 218 | }); 219 | 220 | async function pushNewTriggerList(message, updatedList, removeTrigger = false) { 221 | const guild = message.guild.id; 222 | axios 223 | .put(process.env.storage_service + guild, updatedList) 224 | .then(async function (response) { 225 | let addOrDelete = "added"; 226 | if (removeTrigger) { 227 | addOrDelete = "removed"; 228 | } 229 | cache.del(guild); 230 | return await message.channel.send( 231 | "Trigger " + 232 | addOrDelete + 233 | " successfully. To see the new trigger list run `" + 234 | config.prefix + 235 | "list`.\nIt can take up to 30 seconds for the updated trigger list to take effect." 236 | ); 237 | }) 238 | .catch(async function (error) { 239 | return await message.channel.send( 240 | "Error adding new trigger. \n" + error 241 | ); 242 | }); 243 | } 244 | 245 | //remove trigger cmd 246 | bot.on("message", async (message) => { 247 | if (message.author.bot || message.guild == null) return; 248 | 249 | const guild = message.guild.id; 250 | const args = message.content.split(" "); 251 | const command = args[0]; 252 | if ( 253 | command == config.prefix + "remove" || 254 | command == config.prefix + "delete" 255 | ) { 256 | if (args[1] == null || isNaN(args[1])) { 257 | return message.channel.send( 258 | "Error: Specify a trigger index to remove.\nCommand Usage: `"+config.prefix +"remove [trigger index]`\nTo see the trigger list run `" + 259 | config.prefix + 260 | "list`.\n\nRun `"+config.prefix +"help` for more information." 261 | ); 262 | } 263 | if (checkManageMessagePerms(message)) { 264 | return message.channel.send(permissionsError); 265 | } 266 | statcordPost("remove", message); 267 | //check if number and is in bounds 268 | axios 269 | .get(process.env.storage_service + guild) 270 | .then(async function (response) { 271 | let before = response.data; 272 | let keys = Object.keys(response.data); 273 | if (args[1] > keys.length - 1 || args[1] < 0) { 274 | return message.channel.send( 275 | "Trigger index out of bounds.\nTo see the trigger list run `" + 276 | config.prefix + 277 | "list`." 278 | ); 279 | } 280 | let remover = keys[args[1]]; 281 | delete before[remover]; 282 | pushNewTriggerList(message, before, true); 283 | }) 284 | .catch(async function (error) { 285 | return console.log( 286 | "Error retrieving trigger list. Cannot remove trigger. \n" + error 287 | ); 288 | }); 289 | } 290 | }); 291 | 292 | const triggerCheck = async (message, triggers) => { 293 | const messageContent = message.content.toLowerCase(); 294 | 295 | const contains = (testString, subString) => { 296 | var subStringParts = subString.split("{*}"); 297 | var testRegex = new RegExp(subStringParts.join(".*")); 298 | return testRegex.test(testString); 299 | }; 300 | 301 | const checkTriggerDelete = (trigger, message) => { 302 | if (trigger.includes("{DELETE}")) { 303 | statcordPost("DELETE", message); 304 | try { 305 | message.delete(); 306 | } catch (e) { 307 | message.reply( 308 | "Error deleting message. Please contact an administrator to grant CuRe `MANAGE_MESSAGE` permissions in this channel." 309 | ); 310 | } 311 | } 312 | }; 313 | 314 | const parseResponse = (response, message) => { 315 | if (response.includes("{AUTHOR}")) { 316 | statcordPost("AUTHOR", message); 317 | return response.split("{AUTHOR}").join(message.author); 318 | } else { 319 | return response; 320 | } 321 | }; 322 | //reply, dm 323 | const sendTrigger = (message, trigger, response) => { 324 | statcordPost("RESPONSE", message); 325 | 326 | let delay = 0; 327 | if (response.match(/{DELAY: [1-9]\d*}/)) { 328 | const start = response.indexOf("{DELAY: ") + 8; 329 | const end = response.indexOf("}"); 330 | const delay = new Number(response.substring(start, end)); 331 | } 332 | 333 | const findDelay = (response) => { 334 | if (response.match(/{DELAY: [1-9]\d*}/)) { 335 | statcordPost("DM RESPONSE", message); 336 | const start = response.indexOf("{DELAY: ") + 8; 337 | const end = response.indexOf("}"); 338 | return Number(response.substring(start, end)); 339 | } 340 | return 0; 341 | }; 342 | 343 | const parseResponse = (response) => { 344 | let newResponse = response.replace("{DM}", ""); 345 | newResponse = 346 | response.substring(0, response.indexOf("{DELAY: ")) + 347 | response.substring(response.indexOf("}") + 1); 348 | return newResponse; 349 | }; 350 | setTimeout(() => { 351 | //DM response 352 | try { 353 | if (response.includes("{DM}")) { 354 | statcordPost("DM RESPONSE", message); 355 | return message.author.send(parseResponse(response)); 356 | } 357 | //normal response 358 | return message.channel.send(parseResponse(response)); 359 | } catch (e) { 360 | console.log("Error sending trigger. Missing permissions."); 361 | } 362 | }, findDelay(response) * 1000); 363 | }; 364 | 365 | for (i = 0; i < Object.keys(triggers).length; i++) { 366 | const trigger = Object.keys(triggers)[i]; 367 | const parsedTrigger = trigger.toLowerCase().replace("{delete}", ""); 368 | if ( 369 | trigger.includes("{*}") 370 | ? contains(messageContent, parsedTrigger) 371 | : messageContent.includes(parsedTrigger) 372 | ) { 373 | const response = triggers[trigger]; 374 | if (response.indexOf("{RANDOM}") == 0) { 375 | statcordPost("RANDOM", message); 376 | const options = response 377 | .slice("{RANDOM}".length + 1, response.length - 1) 378 | .split(", "); 379 | //random response 380 | await sendTrigger( 381 | message, 382 | trigger, 383 | parseResponse( 384 | options[Math.floor(Math.random() * options.length)], 385 | message 386 | ) 387 | ); 388 | } 389 | //normal response 390 | else { 391 | await sendTrigger(message, trigger, parseResponse(response, message)); 392 | } 393 | //check if trigger should be deleted 394 | return checkTriggerDelete(trigger, message); 395 | } 396 | } 397 | }; 398 | 399 | //message trigger functionality 400 | if (enabled) { 401 | bot.on("message", async (message) => { 402 | //ignore if bot or if prefixed 403 | if ( 404 | message.author.bot || 405 | message.content.substring(0, 1) == config.prefix || 406 | message.guild == null 407 | ) { 408 | return; 409 | } 410 | 411 | const guild = message.guild.id; 412 | if (cache.get(guild)) { 413 | return triggerCheck(message, cache.get(guild)); 414 | } else { 415 | //guild not in cache 416 | await axios 417 | .get(process.env.storage_service + guild) 418 | .then(async function (response) { 419 | cache.put(guild, response.data, 60000); 420 | return triggerCheck(message, cache.get(guild)); 421 | }) 422 | .catch(async function (error) { 423 | //console.log("Error fetching trigger list. Cannot put into cache.); 424 | }); 425 | } 426 | }); 427 | } 428 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@discordjs/collection@^0.1.6": 6 | version "0.1.6" 7 | resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c" 8 | integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== 9 | 10 | "@discordjs/form-data@^3.0.1": 11 | version "3.0.1" 12 | resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" 13 | integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== 14 | dependencies: 15 | asynckit "^0.4.0" 16 | combined-stream "^1.0.8" 17 | mime-types "^2.1.12" 18 | 19 | abbrev@1: 20 | version "1.1.1" 21 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 22 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 23 | 24 | abort-controller@^3.0.0: 25 | version "3.0.0" 26 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 27 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 28 | dependencies: 29 | event-target-shim "^5.0.0" 30 | 31 | accepts@~1.3.8: 32 | version "1.3.8" 33 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 34 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 35 | dependencies: 36 | mime-types "~2.1.34" 37 | negotiator "0.6.3" 38 | 39 | anymatch@~3.1.2: 40 | version "3.1.2" 41 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 42 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 43 | dependencies: 44 | normalize-path "^3.0.0" 45 | picomatch "^2.0.4" 46 | 47 | array-flatten@1.1.1: 48 | version "1.1.1" 49 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 50 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 51 | 52 | asynckit@^0.4.0: 53 | version "0.4.0" 54 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 55 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 56 | 57 | axios@^0.27.2: 58 | version "0.27.2" 59 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" 60 | integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== 61 | dependencies: 62 | follow-redirects "^1.14.9" 63 | form-data "^4.0.0" 64 | 65 | balanced-match@^1.0.0: 66 | version "1.0.2" 67 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 68 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 69 | 70 | binary-extensions@^2.0.0: 71 | version "2.2.0" 72 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 73 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 74 | 75 | blapi@^2.2.2: 76 | version "2.2.2" 77 | resolved "https://registry.yarnpkg.com/blapi/-/blapi-2.2.2.tgz#c31bd00e7e42539c7c0380fd52cacb9b81597812" 78 | integrity sha512-KM8dFIqZfI/vK4Rr+W8FJ/hx2N8yg1e9A/RK9CWJAy6sKJZJ2nRuqdYt/6od6jUy8AHpieYJaRREeIEbhKAgDw== 79 | dependencies: 80 | centra "^2.5.0" 81 | 82 | body-parser@1.20.0: 83 | version "1.20.0" 84 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" 85 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== 86 | dependencies: 87 | bytes "3.1.2" 88 | content-type "~1.0.4" 89 | debug "2.6.9" 90 | depd "2.0.0" 91 | destroy "1.2.0" 92 | http-errors "2.0.0" 93 | iconv-lite "0.4.24" 94 | on-finished "2.4.1" 95 | qs "6.10.3" 96 | raw-body "2.5.1" 97 | type-is "~1.6.18" 98 | unpipe "1.0.0" 99 | 100 | brace-expansion@^1.1.7: 101 | version "1.1.11" 102 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 103 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 104 | dependencies: 105 | balanced-match "^1.0.0" 106 | concat-map "0.0.1" 107 | 108 | braces@~3.0.2: 109 | version "3.0.2" 110 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 111 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 112 | dependencies: 113 | fill-range "^7.0.1" 114 | 115 | bytes@3.1.2: 116 | version "3.1.2" 117 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 118 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 119 | 120 | call-bind@^1.0.0: 121 | version "1.0.2" 122 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 123 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 124 | dependencies: 125 | function-bind "^1.1.1" 126 | get-intrinsic "^1.0.2" 127 | 128 | centra@^2.5.0: 129 | version "2.5.0" 130 | resolved "https://registry.yarnpkg.com/centra/-/centra-2.5.0.tgz#854c30f9a3ff50da49fa69a8cb441aa25aa1e8e8" 131 | integrity sha512-CnSF1HD8vOOgNbE4P2fZEhdhfAohvpcF3DSdSvEcSHDAZvr+Xfw73isT8SXJJc3VMBqSwjXhr29/ikHUgFcypg== 132 | 133 | chokidar@^3.5.2: 134 | version "3.5.3" 135 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 136 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 137 | dependencies: 138 | anymatch "~3.1.2" 139 | braces "~3.0.2" 140 | glob-parent "~5.1.2" 141 | is-binary-path "~2.1.0" 142 | is-glob "~4.0.1" 143 | normalize-path "~3.0.0" 144 | readdirp "~3.6.0" 145 | optionalDependencies: 146 | fsevents "~2.3.2" 147 | 148 | combined-stream@^1.0.8: 149 | version "1.0.8" 150 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 151 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 152 | dependencies: 153 | delayed-stream "~1.0.0" 154 | 155 | concat-map@0.0.1: 156 | version "0.0.1" 157 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 158 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 159 | 160 | content-disposition@0.5.4: 161 | version "0.5.4" 162 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 163 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 164 | dependencies: 165 | safe-buffer "5.2.1" 166 | 167 | content-type@~1.0.4: 168 | version "1.0.4" 169 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 170 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 171 | 172 | cookie-signature@1.0.6: 173 | version "1.0.6" 174 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 175 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 176 | 177 | cookie@0.5.0: 178 | version "0.5.0" 179 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 180 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 181 | 182 | debug@2.6.9: 183 | version "2.6.9" 184 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 185 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 186 | dependencies: 187 | ms "2.0.0" 188 | 189 | debug@^3.2.7: 190 | version "3.2.7" 191 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 192 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 193 | dependencies: 194 | ms "^2.1.1" 195 | 196 | delayed-stream@~1.0.0: 197 | version "1.0.0" 198 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 199 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 200 | 201 | depd@2.0.0: 202 | version "2.0.0" 203 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 204 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 205 | 206 | destroy@1.2.0: 207 | version "1.2.0" 208 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 209 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 210 | 211 | discord.js@^12.5.3: 212 | version "12.5.3" 213 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-12.5.3.tgz#56820d473c24320871df9ea0bbc6b462f21cf85c" 214 | integrity sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw== 215 | dependencies: 216 | "@discordjs/collection" "^0.1.6" 217 | "@discordjs/form-data" "^3.0.1" 218 | abort-controller "^3.0.0" 219 | node-fetch "^2.6.1" 220 | prism-media "^1.2.9" 221 | setimmediate "^1.0.5" 222 | tweetnacl "^1.0.3" 223 | ws "^7.4.4" 224 | 225 | dotenv@^16.0.1: 226 | version "16.0.1" 227 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" 228 | integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== 229 | 230 | ee-first@1.1.1: 231 | version "1.1.1" 232 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 233 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 234 | 235 | encodeurl@~1.0.2: 236 | version "1.0.2" 237 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 238 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 239 | 240 | escape-html@~1.0.3: 241 | version "1.0.3" 242 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 243 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 244 | 245 | etag@~1.8.1: 246 | version "1.8.1" 247 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 248 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 249 | 250 | event-target-shim@^5.0.0: 251 | version "5.0.1" 252 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 253 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 254 | 255 | express@^4.18.1: 256 | version "4.18.1" 257 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" 258 | integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== 259 | dependencies: 260 | accepts "~1.3.8" 261 | array-flatten "1.1.1" 262 | body-parser "1.20.0" 263 | content-disposition "0.5.4" 264 | content-type "~1.0.4" 265 | cookie "0.5.0" 266 | cookie-signature "1.0.6" 267 | debug "2.6.9" 268 | depd "2.0.0" 269 | encodeurl "~1.0.2" 270 | escape-html "~1.0.3" 271 | etag "~1.8.1" 272 | finalhandler "1.2.0" 273 | fresh "0.5.2" 274 | http-errors "2.0.0" 275 | merge-descriptors "1.0.1" 276 | methods "~1.1.2" 277 | on-finished "2.4.1" 278 | parseurl "~1.3.3" 279 | path-to-regexp "0.1.7" 280 | proxy-addr "~2.0.7" 281 | qs "6.10.3" 282 | range-parser "~1.2.1" 283 | safe-buffer "5.2.1" 284 | send "0.18.0" 285 | serve-static "1.15.0" 286 | setprototypeof "1.2.0" 287 | statuses "2.0.1" 288 | type-is "~1.6.18" 289 | utils-merge "1.0.1" 290 | vary "~1.1.2" 291 | 292 | fill-range@^7.0.1: 293 | version "7.0.1" 294 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 295 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 296 | dependencies: 297 | to-regex-range "^5.0.1" 298 | 299 | finalhandler@1.2.0: 300 | version "1.2.0" 301 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 302 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 303 | dependencies: 304 | debug "2.6.9" 305 | encodeurl "~1.0.2" 306 | escape-html "~1.0.3" 307 | on-finished "2.4.1" 308 | parseurl "~1.3.3" 309 | statuses "2.0.1" 310 | unpipe "~1.0.0" 311 | 312 | follow-redirects@^1.14.9: 313 | version "1.15.1" 314 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" 315 | integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== 316 | 317 | form-data@^4.0.0: 318 | version "4.0.0" 319 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 320 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 321 | dependencies: 322 | asynckit "^0.4.0" 323 | combined-stream "^1.0.8" 324 | mime-types "^2.1.12" 325 | 326 | forwarded@0.2.0: 327 | version "0.2.0" 328 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 329 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 330 | 331 | fresh@0.5.2: 332 | version "0.5.2" 333 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 334 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 335 | 336 | fsevents@~2.3.2: 337 | version "2.3.2" 338 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 339 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 340 | 341 | function-bind@^1.1.1: 342 | version "1.1.1" 343 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 344 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 345 | 346 | get-intrinsic@^1.0.2: 347 | version "1.1.2" 348 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" 349 | integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== 350 | dependencies: 351 | function-bind "^1.1.1" 352 | has "^1.0.3" 353 | has-symbols "^1.0.3" 354 | 355 | glob-parent@~5.1.2: 356 | version "5.1.2" 357 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 358 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 359 | dependencies: 360 | is-glob "^4.0.1" 361 | 362 | has-flag@^3.0.0: 363 | version "3.0.0" 364 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 365 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 366 | 367 | has-symbols@^1.0.3: 368 | version "1.0.3" 369 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 370 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 371 | 372 | has@^1.0.3: 373 | version "1.0.3" 374 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 375 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 376 | dependencies: 377 | function-bind "^1.1.1" 378 | 379 | http-errors@2.0.0: 380 | version "2.0.0" 381 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 382 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 383 | dependencies: 384 | depd "2.0.0" 385 | inherits "2.0.4" 386 | setprototypeof "1.2.0" 387 | statuses "2.0.1" 388 | toidentifier "1.0.1" 389 | 390 | iconv-lite@0.4.24: 391 | version "0.4.24" 392 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 393 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 394 | dependencies: 395 | safer-buffer ">= 2.1.2 < 3" 396 | 397 | ignore-by-default@^1.0.1: 398 | version "1.0.1" 399 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 400 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 401 | 402 | inherits@2.0.4: 403 | version "2.0.4" 404 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 405 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 406 | 407 | ipaddr.js@1.9.1: 408 | version "1.9.1" 409 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 410 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 411 | 412 | is-binary-path@~2.1.0: 413 | version "2.1.0" 414 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 415 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 416 | dependencies: 417 | binary-extensions "^2.0.0" 418 | 419 | is-extglob@^2.1.1: 420 | version "2.1.1" 421 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 422 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 423 | 424 | is-glob@^4.0.1, is-glob@~4.0.1: 425 | version "4.0.3" 426 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 427 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 428 | dependencies: 429 | is-extglob "^2.1.1" 430 | 431 | is-number@^7.0.0: 432 | version "7.0.0" 433 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 434 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 435 | 436 | media-typer@0.3.0: 437 | version "0.3.0" 438 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 439 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 440 | 441 | memory-cache@^0.2.0: 442 | version "0.2.0" 443 | resolved "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a" 444 | integrity sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA== 445 | 446 | merge-descriptors@1.0.1: 447 | version "1.0.1" 448 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 449 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 450 | 451 | methods@~1.1.2: 452 | version "1.1.2" 453 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 454 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 455 | 456 | mime-db@1.52.0: 457 | version "1.52.0" 458 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 459 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 460 | 461 | mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: 462 | version "2.1.35" 463 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 464 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 465 | dependencies: 466 | mime-db "1.52.0" 467 | 468 | mime@1.6.0: 469 | version "1.6.0" 470 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 471 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 472 | 473 | minimatch@^3.0.4: 474 | version "3.1.2" 475 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 476 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 477 | dependencies: 478 | brace-expansion "^1.1.7" 479 | 480 | ms@2.0.0: 481 | version "2.0.0" 482 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 483 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 484 | 485 | ms@2.1.3, ms@^2.1.1: 486 | version "2.1.3" 487 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 488 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 489 | 490 | negotiator@0.6.3: 491 | version "0.6.3" 492 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 493 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 494 | 495 | node-fetch@^2.6.1, node-fetch@^2.6.7: 496 | version "2.6.7" 497 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 498 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 499 | dependencies: 500 | whatwg-url "^5.0.0" 501 | 502 | nodemon@^2.0.19: 503 | version "2.0.19" 504 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.19.tgz#cac175f74b9cb8b57e770d47841995eebe4488bd" 505 | integrity sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A== 506 | dependencies: 507 | chokidar "^3.5.2" 508 | debug "^3.2.7" 509 | ignore-by-default "^1.0.1" 510 | minimatch "^3.0.4" 511 | pstree.remy "^1.1.8" 512 | semver "^5.7.1" 513 | simple-update-notifier "^1.0.7" 514 | supports-color "^5.5.0" 515 | touch "^3.1.0" 516 | undefsafe "^2.0.5" 517 | 518 | nopt@~1.0.10: 519 | version "1.0.10" 520 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 521 | integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== 522 | dependencies: 523 | abbrev "1" 524 | 525 | normalize-path@^3.0.0, normalize-path@~3.0.0: 526 | version "3.0.0" 527 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 528 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 529 | 530 | object-inspect@^1.9.0: 531 | version "1.12.2" 532 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 533 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 534 | 535 | on-finished@2.4.1: 536 | version "2.4.1" 537 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 538 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 539 | dependencies: 540 | ee-first "1.1.1" 541 | 542 | parseurl@~1.3.3: 543 | version "1.3.3" 544 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 545 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 546 | 547 | path-to-regexp@0.1.7: 548 | version "0.1.7" 549 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 550 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 551 | 552 | picomatch@^2.0.4, picomatch@^2.2.1: 553 | version "2.3.1" 554 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 555 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 556 | 557 | prism-media@^1.2.9: 558 | version "1.3.4" 559 | resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.4.tgz#7951f26a9186b791dc8c820ff07310ec46a8a5f1" 560 | integrity sha512-eW7LXORkTCQznZs+eqe9VjGOrLBxcBPXgNyHXMTSRVhphvd/RrxgIR7WaWt4fkLuhshcdT5KHL88LAfcvS3f5g== 561 | 562 | proxy-addr@~2.0.7: 563 | version "2.0.7" 564 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 565 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 566 | dependencies: 567 | forwarded "0.2.0" 568 | ipaddr.js "1.9.1" 569 | 570 | pstree.remy@^1.1.8: 571 | version "1.1.8" 572 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 573 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 574 | 575 | qs@6.10.3: 576 | version "6.10.3" 577 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 578 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== 579 | dependencies: 580 | side-channel "^1.0.4" 581 | 582 | range-parser@~1.2.1: 583 | version "1.2.1" 584 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 585 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 586 | 587 | raw-body@2.5.1: 588 | version "2.5.1" 589 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 590 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 591 | dependencies: 592 | bytes "3.1.2" 593 | http-errors "2.0.0" 594 | iconv-lite "0.4.24" 595 | unpipe "1.0.0" 596 | 597 | readdirp@~3.6.0: 598 | version "3.6.0" 599 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 600 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 601 | dependencies: 602 | picomatch "^2.2.1" 603 | 604 | safe-buffer@5.2.1: 605 | version "5.2.1" 606 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 607 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 608 | 609 | "safer-buffer@>= 2.1.2 < 3": 610 | version "2.1.2" 611 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 612 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 613 | 614 | semver@^5.7.1: 615 | version "5.7.1" 616 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 617 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 618 | 619 | semver@~7.0.0: 620 | version "7.0.0" 621 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 622 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 623 | 624 | send@0.18.0: 625 | version "0.18.0" 626 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 627 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 628 | dependencies: 629 | debug "2.6.9" 630 | depd "2.0.0" 631 | destroy "1.2.0" 632 | encodeurl "~1.0.2" 633 | escape-html "~1.0.3" 634 | etag "~1.8.1" 635 | fresh "0.5.2" 636 | http-errors "2.0.0" 637 | mime "1.6.0" 638 | ms "2.1.3" 639 | on-finished "2.4.1" 640 | range-parser "~1.2.1" 641 | statuses "2.0.1" 642 | 643 | serve-static@1.15.0: 644 | version "1.15.0" 645 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 646 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 647 | dependencies: 648 | encodeurl "~1.0.2" 649 | escape-html "~1.0.3" 650 | parseurl "~1.3.3" 651 | send "0.18.0" 652 | 653 | setimmediate@^1.0.5: 654 | version "1.0.5" 655 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 656 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 657 | 658 | setprototypeof@1.2.0: 659 | version "1.2.0" 660 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 661 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 662 | 663 | side-channel@^1.0.4: 664 | version "1.0.4" 665 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 666 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 667 | dependencies: 668 | call-bind "^1.0.0" 669 | get-intrinsic "^1.0.2" 670 | object-inspect "^1.9.0" 671 | 672 | simple-update-notifier@^1.0.7: 673 | version "1.0.7" 674 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" 675 | integrity sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew== 676 | dependencies: 677 | semver "~7.0.0" 678 | 679 | statcord.js@^3.4.3: 680 | version "3.4.3" 681 | resolved "https://registry.yarnpkg.com/statcord.js/-/statcord.js-3.4.3.tgz#01381c7b4a6ba3883ca9111cb3a2a2c439d8a5a8" 682 | integrity sha512-WdNIr2ehF9/h/Yw33IY3EBOXrCji5gzbKdOrAEc6kcWkuBpBOhZEHttc98UJ9VkdbPMs/BaHBrAnfX5BhTMCig== 683 | dependencies: 684 | node-fetch "^2.6.7" 685 | systeminformation "^5.7.12" 686 | 687 | statuses@2.0.1: 688 | version "2.0.1" 689 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 690 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 691 | 692 | supports-color@^5.5.0: 693 | version "5.5.0" 694 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 695 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 696 | dependencies: 697 | has-flag "^3.0.0" 698 | 699 | systeminformation@^5.7.12: 700 | version "5.12.4" 701 | resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.12.4.tgz#2afb07d1f5ea0549f69877f5553fda2a19f1ea89" 702 | integrity sha512-wmzAUdjk7IqqdjmtCT8STaZrfXb9aZmcgqjRo8oLTF6CYs7KaRStex92i5cUziaDQ+04v5xK8iqlHcrKFVZAJQ== 703 | 704 | to-regex-range@^5.0.1: 705 | version "5.0.1" 706 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 707 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 708 | dependencies: 709 | is-number "^7.0.0" 710 | 711 | toidentifier@1.0.1: 712 | version "1.0.1" 713 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 714 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 715 | 716 | touch@^3.1.0: 717 | version "3.1.0" 718 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 719 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 720 | dependencies: 721 | nopt "~1.0.10" 722 | 723 | tr46@~0.0.3: 724 | version "0.0.3" 725 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 726 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 727 | 728 | tweetnacl@^1.0.3: 729 | version "1.0.3" 730 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" 731 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 732 | 733 | type-is@~1.6.18: 734 | version "1.6.18" 735 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 736 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 737 | dependencies: 738 | media-typer "0.3.0" 739 | mime-types "~2.1.24" 740 | 741 | undefsafe@^2.0.5: 742 | version "2.0.5" 743 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 744 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 745 | 746 | unpipe@1.0.0, unpipe@~1.0.0: 747 | version "1.0.0" 748 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 749 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 750 | 751 | utils-merge@1.0.1: 752 | version "1.0.1" 753 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 754 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 755 | 756 | vary@~1.1.2: 757 | version "1.1.2" 758 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 759 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 760 | 761 | webidl-conversions@^3.0.0: 762 | version "3.0.1" 763 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 764 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 765 | 766 | whatwg-url@^5.0.0: 767 | version "5.0.0" 768 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 769 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 770 | dependencies: 771 | tr46 "~0.0.3" 772 | webidl-conversions "^3.0.0" 773 | 774 | ws@^7.4.4: 775 | version "7.5.9" 776 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" 777 | integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== 778 | --------------------------------------------------------------------------------