Manus Agent commited on
Commit
2961072
·
1 Parent(s): af15641

Deploy WhatsApp Server to Hugging Face Space (Clean)

Browse files
Files changed (5) hide show
  1. Dockerfile +40 -0
  2. README.md +158 -5
  3. index.js +496 -0
  4. package-lock.json +2204 -0
  5. package.json +18 -0
Dockerfile ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # استخدام نسخة Node.js مستقرة
2
+ FROM node:18-slim
3
+
4
+ # تثبيت التبعيات اللازمة لـ Chromium
5
+ RUN apt-get update && apt-get install -y \
6
+ chromium \
7
+ fonts-ipafont-gothic \
8
+ fonts-wqy-zenhei \
9
+ fonts-thai-tlwg \
10
+ fonts-kacst \
11
+ fonts-freefont-ttf \
12
+ libxss1 \
13
+ --no-install-recommends \
14
+ && rm -rf /var/lib/apt/lists/*
15
+
16
+ # إعداد متغيرات البيئة لـ Puppeteer
17
+ ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
18
+ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
19
+
20
+ # إنشاء مستخدم جديد (Hugging Face يتطلب مستخدم غير جذري بـ UID 1000)
21
+ RUN useradd -m -u 1000 user
22
+ USER user
23
+ ENV HOME=/home/user \
24
+ PATH=/home/user/.local/bin:$PATH
25
+
26
+ WORKDIR $HOME/app
27
+
28
+ # نسخ ملفات التبعيات وتثبيتها
29
+ COPY --chown=user package*.json ./
30
+ RUN npm install
31
+
32
+ # نسخ باقي ملفات المشروع
33
+ COPY --chown=user . .
34
+
35
+ # Hugging Face يستخدم المنفذ 7860 افتراضياً
36
+ ENV WHATSAPP_PORT=7860
37
+ EXPOSE 7860
38
+
39
+ # أمر التشغيل
40
+ CMD ["node", "index.js"]
README.md CHANGED
@@ -1,10 +1,163 @@
1
  ---
2
- title: Whatsapp Server
3
- emoji: 🏃
4
- colorFrom: pink
5
- colorTo: gray
6
  sdk: docker
7
  pinned: false
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: WhatsApp Server
3
+ emoji: 📱
4
+ colorFrom: green
5
+ colorTo: blue
6
  sdk: docker
7
  pinned: false
8
  ---
9
 
10
+ # 🚀 7STAR WhatsApp Notification Server
11
+
12
+ سيرفر إشعارات واتساب لنظام 7STAR CRM. يستخدم الذكاء الاصطناعي (Amazon Nova) لكتابة رسائل احترافية.
13
+
14
+ ## 📋 المتطلبات
15
+
16
+ 1. **Node.js** v18 أو أحدث
17
+ 2. **Google Chrome** (يُستخدم في الخلفية)
18
+ 3. **OpenRouter API Key** (مجاني)
19
+
20
+ ## 🛠️ التثبيت
21
+
22
+ ```bash
23
+ cd whatsapp-server
24
+ npm install
25
+ ```
26
+
27
+ ## ⚙️ الإعداد
28
+
29
+ تأكد من وجود `VITE_OPENROUTER_API_KEY` في ملف `.env` في المجلد الرئيسي للمشروع.
30
+
31
+ ## 🚀 التشغيل
32
+
33
+ ```bash
34
+ npm start
35
+ ```
36
+
37
+ ### عند التشغيل لأول مرة:
38
+ 1. سيظهر **QR Code** في الـ Terminal
39
+ 2. افتح **WhatsApp** على تليفونك
40
+ 3. اذهب إلى **الإعدادات → الأجهزة المرتبطة → ربط جهاز**
41
+ 4. امسح الـ QR Code
42
+ 5. انتظر رسالة "✅ WhatsApp Client جاهز للعمل!"
43
+
44
+ > 💡 بعد المسح لأول مرة، الـ session يتحفظ تلقائياً ومش هتحتاج تمسح تاني.
45
+
46
+ ## 📡 API Endpoints
47
+
48
+ ### 1. حالة الاتصال
49
+ ```
50
+ GET http://localhost:3001/status
51
+ ```
52
+ يرجع:
53
+ ```json
54
+ {
55
+ "connected": true,
56
+ "qrCode": null,
57
+ "adminPhone": "201108279642"
58
+ }
59
+ ```
60
+
61
+ ### 2. إرسال إشعار (مع AI)
62
+ ```
63
+ POST http://localhost:3001/notify
64
+ ```
65
+ يرجع:
66
+ ```json
67
+ {
68
+ "eventType": "new_order",
69
+ "data": {
70
+ "customer_name": "أحمد محمد",
71
+ "total_amount": 500,
72
+ "product_name": "Netflix Premium"
73
+ },
74
+ "useAI": true
75
+ }
76
+ ```
77
+
78
+ **أنواع الأحداث المدعومة:**
79
+ - `new_order` - طلب جديد
80
+ - `order_cancelled` - إلغاء طلب
81
+ - `sales_up` - زيادة المبيعات
82
+ - `sales_down` - انخفاض المبيعات
83
+ - `new_product` - منتج جديد
84
+ - `low_stock` - مخزون منخفض
85
+ - `new_customer` - عميل جديد
86
+ - `daily_stats` - إحصائيات يومية
87
+ - `custom` - رسالة مخصصة
88
+
89
+ ### 3. إرسال رسالة مخصصة
90
+ ```
91
+ POST http://localhost:3001/send
92
+ ```
93
+ يرجع:
94
+ ```json
95
+ {
96
+ "message": "مرحباً! هذه رسالة تجريبية",
97
+ "phone": "201012345678"
98
+ }
99
+ ```
100
+
101
+ ### 4. رسالة تجريبية
102
+
103
+ ```
104
+ GET http://localhost:3001/test
105
+ ```
106
+
107
+ ## 🔧 التكامل مع React App
108
+
109
+ التطبيق يستدعي السيرفر تلقائياً عند:
110
+ - ✅ إنشاء طلب جديد
111
+ - ✅ إضافة منتج جديد
112
+ - 🔄 إلغاء طلب (قريباً)
113
+ - 🔄 تحليل المبيعات اليومي (قريباً)
114
+
115
+ ## ⚠️ ملاحظات مهمة
116
+
117
+ 1. **لا تبعت رسائل كتير** - حافظ على أقل من 50 رسالة/يوم
118
+ 2. **خلي فاصل بين الرسائل** - 30 ثانية على الأقل
119
+ 3. **استخدم رقم مش مهم** - الحظر وارد
120
+ 4. **الـ Session يتحفظ** في مجلد `whatsapp-session/`
121
+
122
+ ## 🔐 الأمان
123
+
124
+ - الرقم المستهدف محدد في الكود: `+201108279642`
125
+ - السيرفر يعمل على `localhost:3001` فقط
126
+ - لا يمكن الوصول له من الخارج بدون إعداد إضافي
127
+
128
+ ## 📂 هيكل الملفات
129
+
130
+ ```
131
+ whatsapp-server/
132
+ ├── index.js # السيرفر الرئيسي
133
+ ├── package.json # المكتبات
134
+ ├── README.md # التوثيق
135
+ └── whatsapp-session/ # بيانات الـ Session (تُنشأ تلقائياً)
136
+ ```
137
+
138
+ ## 🆘 حل المشاكل
139
+
140
+ ### الـ QR Code لا يظهر:
141
+ ```bash
142
+ # احذف مجلد الـ session وأعد التشغيل
143
+ rm -rf whatsapp-session
144
+ npm start
145
+ ```
146
+
147
+ ### خطأ في Chrome:
148
+ ```bash
149
+ # تأكد من وجود Chrome
150
+ # على Windows: C:\Program Files\Google\Chrome\Application\chrome.exe
151
+ # على Mac: /Applications/Google Chrome.app
152
+ # على Linux: /usr/bin/google-chrome
153
+ ```
154
+
155
+ ### الاتصال ينقطع:
156
+ - تأكد من أن الإنترنت شغال
157
+ - تأكد من أن الواتساب على تليفونك متصل
158
+ - أعد تشغيل السيرفر
159
+
160
+ ---
161
+
162
+ **تم التطوير بواسطة:** Youssef Elsayed
163
+ **للدعم:** youssef.official.2411@gmail.com
index.js ADDED
@@ -0,0 +1,496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // WhatsApp Notification Server for 7STAR CRM
2
+ // ==========================================
3
+
4
+ import pkg from 'whatsapp-web.js';
5
+ const { Client, LocalAuth } = pkg;
6
+ import qrcode from 'qrcode-terminal';
7
+ import express from 'express';
8
+ import cors from 'cors';
9
+ import dotenv from 'dotenv';
10
+ import { fileURLToPath } from 'url';
11
+ import { dirname, join } from 'path';
12
+ import { readFileSync, existsSync } from 'fs';
13
+
14
+ // Load .env from parent directory
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ const parentEnvPath = join(__dirname, '..', '.env');
18
+
19
+ if (existsSync(parentEnvPath)) {
20
+ const envContent = readFileSync(parentEnvPath, 'utf-8');
21
+ envContent.split('\n').forEach(line => {
22
+ const [key, ...valueParts] = line.split('=');
23
+ if (key && valueParts.length > 0) {
24
+ process.env[key.trim()] = valueParts.join('=').trim();
25
+ }
26
+ });
27
+ }
28
+
29
+ dotenv.config();
30
+
31
+ const app = express();
32
+ app.use(cors());
33
+ app.use(express.json());
34
+
35
+ // ====================================
36
+ // Configuration
37
+ // ====================================
38
+ const ADMIN_PHONE = process.env.ADMIN_PHONE || '201108279642'; // رقمك بدون + أو 00
39
+ const OPENROUTER_API_KEY = process.env.VITE_OPENROUTER_API_KEY;
40
+ const AI_MODEL = 'amazon/nova-lite-v1'; // Amazon Nova Lite - Free
41
+ const PORT = process.env.WHATSAPP_PORT || 3001;
42
+
43
+ // ====================================
44
+ // WhatsApp Client Setup
45
+ // ====================================
46
+ let isClientReady = false;
47
+ let qrCodeData = null;
48
+
49
+ const client = new Client({
50
+ authStrategy: new LocalAuth({
51
+ dataPath: './whatsapp-session'
52
+ }),
53
+ puppeteer: {
54
+ headless: true,
55
+ args: [
56
+ '--no-sandbox',
57
+ '--disable-setuid-sandbox',
58
+ '--disable-dev-shm-usage',
59
+ '--disable-accelerated-2d-canvas',
60
+ '--no-first-run',
61
+ '--no-zygote',
62
+ '--disable-gpu'
63
+ ]
64
+ }
65
+ });
66
+
67
+ // QR Code Event
68
+ client.on('qr', (qr) => {
69
+ qrCodeData = qr;
70
+ console.log('\n📱 امسح الـ QR Code ده من تطبيق WhatsApp على تليفونك:\n');
71
+ qrcode.generate(qr, { small: true });
72
+ console.log('\n⏳ في انتظار مسح الـ QR Code...\n');
73
+ });
74
+
75
+ // Ready Event
76
+ client.on('ready', () => {
77
+ isClientReady = true;
78
+ qrCodeData = null;
79
+ console.log('\n✅ WhatsApp Client جاهز للعمل!');
80
+ console.log(`📞 سيتم إرسال الإشعارات إلى: +${ADMIN_PHONE}`);
81
+ console.log(`🌐 السيرفر شغال على: http://localhost:${PORT}\n`);
82
+ });
83
+
84
+ // Authentication Success
85
+ client.on('authenticated', () => {
86
+ console.log('🔐 تم التحقق بنجاح!');
87
+ });
88
+
89
+ // Disconnected Event
90
+ client.on('disconnected', (reason) => {
91
+ isClientReady = false;
92
+ console.log('❌ تم قطع الاتصال:', reason);
93
+ console.log('🔄 جاري إعادة الاتصال...');
94
+ client.initialize();
95
+ });
96
+
97
+ // ====================================
98
+ // AI Message Generator (OpenRouter - Amazon Nova)
99
+ // ====================================
100
+ async function generateAIMessage(eventType, data) {
101
+ if (!OPENROUTER_API_KEY) {
102
+ console.log('⚠️ لم يتم تعيين VITE_OPENROUTER_API_KEY، سيتم استخدام رسالة افتراضية');
103
+ return generateDefaultMessage(eventType, data);
104
+ }
105
+
106
+ const prompt = `أنت مساعد ذكي لنظام 7STAR CRM. اكتب رسالة واتساب قصيرة ومنسقة بالإيموجي للحدث التالي:
107
+
108
+ نوع الحدث: ${eventType}
109
+ البيانات: ${JSON.stringify(data, null, 2)}
110
+
111
+ القواعد:
112
+ - اكتب بالعربية
113
+ - استخدم إيموجي مناسبة
114
+ - اجعل الرسالة مختصرة وواضحة
115
+ - لا تستخدم Markdown (لا نجوم أو هاشتاجات)
116
+ - اجعلها تبدو احترافية
117
+ - أضف توقيع "✨ 7STAR CRM" في النهاية
118
+
119
+ اكتب الرسالة فقط بدون أي مقدمة.`;
120
+
121
+ try {
122
+ console.log('🤖 جاري توليد الرسالة بالذكاء الاصطناعي...');
123
+
124
+ const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
125
+ method: 'POST',
126
+ headers: {
127
+ 'Authorization': `Bearer ${OPENROUTER_API_KEY}`,
128
+ 'Content-Type': 'application/json',
129
+ 'HTTP-Referer': 'https://7star-crm.com',
130
+ 'X-Title': '7STAR CRM WhatsApp Notifications'
131
+ },
132
+ body: JSON.stringify({
133
+ model: AI_MODEL,
134
+ messages: [
135
+ {
136
+ role: 'system',
137
+ content: 'أنت مساعد ذكي متخصص في كتابة رسائل واتساب احترافية ومختصرة باللغة العربية. تستخدم الإيموجي بشكل م��اسب وتجعل الرسائل واضحة ومنسقة.'
138
+ },
139
+ {
140
+ role: 'user',
141
+ content: prompt
142
+ }
143
+ ],
144
+ temperature: 0.7,
145
+ max_tokens: 500
146
+ })
147
+ });
148
+
149
+ const result = await response.json();
150
+
151
+ if (result.choices && result.choices[0]?.message?.content) {
152
+ console.log('✅ تم توليد الرسالة بنجاح');
153
+ return result.choices[0].message.content.trim();
154
+ }
155
+
156
+ if (result.error) {
157
+ console.error('❌ خطأ من OpenRouter:', result.error);
158
+ }
159
+ } catch (error) {
160
+ console.error('❌ خطأ في توليد الرسالة:', error.message);
161
+ }
162
+
163
+ return generateDefaultMessage(eventType, data);
164
+ }
165
+
166
+ // Default Message Templates
167
+ function generateDefaultMessage(eventType, data) {
168
+ const templates = {
169
+ new_order: `
170
+ 🛒 طلب جديد!
171
+
172
+ 👤 العميل: ${data.customer_name || 'غير محدد'}
173
+ 📱 الهاتف: ${data.customer_phone || 'غير محدد'}
174
+ 💰 المبلغ: ${data.total_amount || 0} ج.م
175
+ 📦 المنتج: ${data.product_name || 'غير محدد'}
176
+ 📅 التاريخ: ${new Date().toLocaleDateString('ar-EG')}
177
+
178
+ ✨ 7STAR CRM
179
+ `,
180
+ order_cancelled: `
181
+ ❌ تم إلغاء طلب
182
+
183
+ 🆔 رقم الطلب: ${data.order_id || 'غير محدد'}
184
+ 👤 العميل: ${data.customer_name || 'غير محدد'}
185
+ 💰 المبلغ: ${data.total_amount || 0} ج.م
186
+ 📝 السبب: ${data.reason || 'غير محدد'}
187
+
188
+ ⚠️ 7STAR CRM
189
+ `,
190
+ sales_up: `
191
+ 📈 أخبار سارة!
192
+
193
+ المبيعات زادت بنسبة ${data.percentage || 0}%
194
+ مقارنة بالفترة السابقة
195
+
196
+ 💰 إجمالي اليوم: ${data.today_total || 0} ج.م
197
+ 📊 إجمالي الأمس: ${data.yesterday_total || 0} ج.م
198
+
199
+ 🎉 استمروا!
200
+ ✨ 7STAR CRM
201
+ `,
202
+ sales_down: `
203
+ 📉 تنبيه هام!
204
+
205
+ المبيعات انخفضت بنسبة ${data.percentage || 0}%
206
+ مقارنة بالفترة السابقة
207
+
208
+ 💰 إجمالي اليوم: ${data.today_total || 0} ج.م
209
+ 📊 إجمالي الأمس: ${data.yesterday_total || 0} ج.م
210
+
211
+ ⚠️ يرجى المتابعة
212
+ ✨ 7STAR CRM
213
+ `,
214
+ new_product: `
215
+ 🆕 منتج جديد!
216
+
217
+ 📦 الاسم: ${data.name || 'غير محدد'}
218
+ 💰 السعر: ${data.price || 0} ج.م
219
+ 📝 الوصف: ${data.description || 'لا يوجد وصف'}
220
+
221
+ ✨ 7STAR CRM
222
+ `,
223
+ low_stock: `
224
+ ⚠️ تنبيه المخزون!
225
+
226
+ 📦 المنتج: ${data.product_name || 'غير محدد'}
227
+ 📊 الكمية المتبقية: ${data.remaining || 0}
228
+ 🔴 الحد الأدنى: ${data.threshold || 10}
229
+
230
+ يرجى إعادة التخزين قريباً!
231
+ ✨ 7STAR CRM
232
+ `,
233
+ new_customer: `
234
+ 👤 عميل جديد!
235
+
236
+ 📛 الاسم: ${data.name || 'غير محدد'}
237
+ 📱 الهاتف: ${data.phone || 'غير محدد'}
238
+ 📧 الإيميل: ${data.email || 'غير محدد'}
239
+
240
+ مرحباً بالعميل الجديد! 🎉
241
+ ✨ 7STAR CRM
242
+ `,
243
+ daily_stats: `
244
+ 📊 إحصائيات اليوم
245
+
246
+ 🛒 الطلبات: ${data.orders_count || 0}
247
+ 💰 الإيرادات: ${data.revenue || 0} ج.م
248
+ 📈 الأرباح: ${data.profit || 0} ج.م
249
+ 👥 عملاء جدد: ${data.new_customers || 0}
250
+
251
+ 📅 ${new Date().toLocaleDateString('ar-EG')}
252
+ ✨ 7STAR CRM
253
+ `,
254
+ custom: data.message || 'إشعار من 7STAR CRM'
255
+ };
256
+
257
+ return templates[eventType] || templates.custom;
258
+ }
259
+
260
+ // ====================================
261
+ // Send WhatsApp Message
262
+ // ====================================
263
+ async function sendWhatsAppMessage(phone, message) {
264
+ if (!isClientReady) {
265
+ throw new Error('WhatsApp Client غير متصل. يرجى مسح الـ QR Code أولاً.');
266
+ }
267
+
268
+ const chatId = `${phone}@c.us`;
269
+
270
+ try {
271
+ await client.sendMessage(chatId, message);
272
+ console.log(`✅ تم إرسال الرسالة إلى: ${phone}`);
273
+ return true;
274
+ } catch (error) {
275
+ console.error(`❌ فشل إرسال الرسالة:`, error.message);
276
+ throw error;
277
+ }
278
+ }
279
+
280
+ // ====================================
281
+ // API Endpoints
282
+ // ====================================
283
+
284
+ // Status endpoint
285
+ app.get('/status', (req, res) => {
286
+ res.json({
287
+ connected: isClientReady,
288
+ qrCode: qrCodeData,
289
+ adminPhone: ADMIN_PHONE
290
+ });
291
+ });
292
+
293
+ // QR Code page - Open in browser to scan
294
+ app.get('/qr', (req, res) => {
295
+ if (isClientReady) {
296
+ res.send(`
297
+ <!DOCTYPE html>
298
+ <html dir="rtl" lang="ar">
299
+ <head>
300
+ <meta charset="UTF-8">
301
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
302
+ <title>7STAR WhatsApp - متصل</title>
303
+ <style>
304
+ body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background: linear-gradient(135deg, #25D366, #128C7E); }
305
+ .container { background: white; padding: 40px; border-radius: 20px; text-align: center; box-shadow: 0 10px 40px rgba(0,0,0,0.2); }
306
+ h1 { color: #25D366; margin-bottom: 20px; }
307
+ .status { font-size: 80px; margin: 20px 0; }
308
+ p { color: #666; font-size: 18px; }
309
+ </style>
310
+ </head>
311
+ <body>
312
+ <div class="container">
313
+ <div class="status">✅</div>
314
+ <h1>WhatsApp متصل بنجاح!</h1>
315
+ <p>سيتم إرسال الإشعارات إلى: <strong>+${ADMIN_PHONE}</strong></p>
316
+ </div>
317
+ </body>
318
+ </html>
319
+ `);
320
+ return;
321
+ }
322
+
323
+ if (!qrCodeData) {
324
+ res.send(`
325
+ <!DOCTYPE html>
326
+ <html dir="rtl" lang="ar">
327
+ <head>
328
+ <meta charset="UTF-8">
329
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
330
+ <title>7STAR WhatsApp - انتظار</title>
331
+ <meta http-equiv="refresh" content="3">
332
+ <style>
333
+ body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background: linear-gradient(135deg, #667eea, #764ba2); }
334
+ .container { background: white; padding: 40px; border-radius: 20px; text-align: center; box-shadow: 0 10px 40px rgba(0,0,0,0.2); }
335
+ .loader { border: 5px solid #f3f3f3; border-top: 5px solid #667eea; border-radius: 50%; width: 50px; height: 50px; animation: spin 1s linear infinite; margin: 20px auto; }
336
+ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
337
+ h1 { color: #667eea; }
338
+ p { color: #666; }
339
+ </style>
340
+ </head>
341
+ <body>
342
+ <div class="container">
343
+ <div class="loader"></div>
344
+ <h1>جاري تهيئة WhatsApp...</h1>
345
+ <p>الصفحة ستتحدث تلقائياً</p>
346
+ </div>
347
+ </body>
348
+ </html>
349
+ `);
350
+ return;
351
+ }
352
+
353
+ // Generate QR Code as image using an online service
354
+ const qrImageUrl = `https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${encodeURIComponent(qrCodeData)}`;
355
+
356
+ res.send(`
357
+ <!DOCTYPE html>
358
+ <html dir="rtl" lang="ar">
359
+ <head>
360
+ <meta charset="UTF-8">
361
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
362
+ <title>7STAR WhatsApp - مسح QR Code</title>
363
+ <meta http-equiv="refresh" content="30">
364
+ <style>
365
+ body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background: linear-gradient(135deg, #25D366, #128C7E); }
366
+ .container { background: white; padding: 40px; border-radius: 20px; text-align: center; box-shadow: 0 10px 40px rgba(0,0,0,0.2); max-width: 90%; }
367
+ h1 { color: #25D366; margin-bottom: 10px; }
368
+ .qr-container { background: white; padding: 20px; border-radius: 10px; display: inline-block; margin: 20px 0; }
369
+ .qr-container img { max-width: 300px; height: auto; }
370
+ .steps { text-align: right; background: #f5f5f5; padding: 20px; border-radius: 10px; margin-top: 20px; }
371
+ .steps h3 { color: #333; margin-bottom: 10px; }
372
+ .steps ol { margin: 0; padding-right: 20px; }
373
+ .steps li { margin: 10px 0; color: #666; }
374
+ .phone { font-size: 14px; color: #999; margin-top: 20px; }
375
+ </style>
376
+ </head>
377
+ <body>
378
+ <div class="container">
379
+ <h1>📱 مسح QR Code</h1>
380
+ <p>امسح الكود التالي من تطبيق WhatsApp</p>
381
+
382
+ <div class="qr-container">
383
+ <img src="${qrImageUrl}" alt="QR Code" />
384
+ </div>
385
+
386
+ <div class="steps">
387
+ <h3>الخطوات:</h3>
388
+ <ol>
389
+ <li>افتح <strong>WhatsApp</strong> على تليفونك</li>
390
+ <li>اضغط على <strong>الثلاث نقط</strong> (أعلى اليمين)</li>
391
+ <li>اختار <strong>الأجهزة المرتبطة</strong></li>
392
+ <li>اضغط <strong>ربط جهاز</strong></li>
393
+ <li>امسح الـ <strong>QR Code</strong> أعلاه</li>
394
+ </ol>
395
+ </div>
396
+
397
+ <p class="phone">رقم الإشعارات: +${ADMIN_PHONE}</p>
398
+ </div>
399
+ </body>
400
+ </html>
401
+ `);
402
+ });
403
+
404
+ // Send notification endpoint
405
+ app.post('/notify', async (req, res) => {
406
+ try {
407
+ const { eventType, data, useAI = true, customPhone } = req.body;
408
+
409
+ if (!eventType) {
410
+ return res.status(400).json({ error: 'eventType مطلوب' });
411
+ }
412
+
413
+ const phone = customPhone || ADMIN_PHONE;
414
+
415
+ // Generate message
416
+ let message;
417
+ if (useAI) {
418
+ message = await generateAIMessage(eventType, data);
419
+ } else {
420
+ message = generateDefaultMessage(eventType, data);
421
+ }
422
+
423
+ // Send message
424
+ await sendWhatsAppMessage(phone, message);
425
+
426
+ res.json({
427
+ success: true,
428
+ message: 'تم إرسال الإشعار بنجاح',
429
+ sentMessage: message
430
+ });
431
+
432
+ } catch (error) {
433
+ console.error('❌ خطأ:', error.message);
434
+ res.status(500).json({
435
+ error: error.message,
436
+ connected: isClientReady
437
+ });
438
+ }
439
+ });
440
+
441
+ // Send custom message endpoint
442
+ app.post('/send', async (req, res) => {
443
+ try {
444
+ const { phone, message } = req.body;
445
+
446
+ if (!message) {
447
+ return res.status(400).json({ error: 'message مطلوب' });
448
+ }
449
+
450
+ const targetPhone = phone || ADMIN_PHONE;
451
+ await sendWhatsAppMessage(targetPhone, message);
452
+
453
+ res.json({
454
+ success: true,
455
+ message: 'تم إرسال الرسالة بنجاح'
456
+ });
457
+
458
+ } catch (error) {
459
+ res.status(500).json({ error: error.message });
460
+ }
461
+ });
462
+
463
+ // Test notification
464
+ app.get('/test', async (req, res) => {
465
+ try {
466
+ const testMessage = `
467
+ 🧪 رسالة تجريبية
468
+
469
+ ✅ سيرفر الواتساب يعمل بنجاح!
470
+ 📅 ${new Date().toLocaleString('ar-EG')}
471
+
472
+ ✨ 7STAR CRM
473
+ `;
474
+ await sendWhatsAppMessage(ADMIN_PHONE, testMessage);
475
+ res.json({ success: true, message: 'تم إرسال رسالة تجريبية' });
476
+ } catch (error) {
477
+ res.status(500).json({ error: error.message });
478
+ }
479
+ });
480
+
481
+ // ====================================
482
+ // Start Server
483
+ // ====================================
484
+ const HOST = process.env.HOST || '0.0.0.0'; // Listen on all interfaces for production
485
+
486
+ app.listen(PORT, HOST, () => {
487
+ console.log('\n========================================');
488
+ console.log(' 🚀 7STAR WhatsApp Server');
489
+ console.log('========================================\n');
490
+ console.log(`📡 السيرفر يعمل على: http://${HOST}:${PORT}`);
491
+ console.log(`📞 رقم الإشعارات: +${ADMIN_PHONE}`);
492
+ console.log('\n⏳ جاري تهيئة WhatsApp Client...\n');
493
+ });
494
+
495
+ // Initialize WhatsApp Client
496
+ client.initialize();
package-lock.json ADDED
@@ -0,0 +1,2204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "7star-whatsapp-server",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "7star-whatsapp-server",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "cors": "^2.8.5",
12
+ "dotenv": "^16.3.1",
13
+ "express": "^4.18.2",
14
+ "qrcode-terminal": "^0.12.0",
15
+ "whatsapp-web.js": "^1.25.0"
16
+ }
17
+ },
18
+ "node_modules/@pedroslopez/moduleraid": {
19
+ "version": "5.0.2",
20
+ "resolved": "https://registry.npmjs.org/@pedroslopez/moduleraid/-/moduleraid-5.0.2.tgz",
21
+ "integrity": "sha512-wtnBAETBVYZ9GvcbgdswRVSLkFkYAGv1KzwBBTeRXvGT9sb9cPllOgFFWXCn9PyARQ0H+Ijz6mmoRrGateUDxQ==",
22
+ "license": "MIT"
23
+ },
24
+ "node_modules/@types/node": {
25
+ "version": "25.0.3",
26
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz",
27
+ "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
28
+ "license": "MIT",
29
+ "optional": true,
30
+ "dependencies": {
31
+ "undici-types": "~7.16.0"
32
+ }
33
+ },
34
+ "node_modules/@types/yauzl": {
35
+ "version": "2.10.3",
36
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
37
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
38
+ "license": "MIT",
39
+ "optional": true,
40
+ "dependencies": {
41
+ "@types/node": "*"
42
+ }
43
+ },
44
+ "node_modules/accepts": {
45
+ "version": "1.3.8",
46
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
47
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
48
+ "license": "MIT",
49
+ "dependencies": {
50
+ "mime-types": "~2.1.34",
51
+ "negotiator": "0.6.3"
52
+ },
53
+ "engines": {
54
+ "node": ">= 0.6"
55
+ }
56
+ },
57
+ "node_modules/agent-base": {
58
+ "version": "6.0.2",
59
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
60
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
61
+ "license": "MIT",
62
+ "dependencies": {
63
+ "debug": "4"
64
+ },
65
+ "engines": {
66
+ "node": ">= 6.0.0"
67
+ }
68
+ },
69
+ "node_modules/agent-base/node_modules/debug": {
70
+ "version": "4.4.3",
71
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
72
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
73
+ "license": "MIT",
74
+ "dependencies": {
75
+ "ms": "^2.1.3"
76
+ },
77
+ "engines": {
78
+ "node": ">=6.0"
79
+ },
80
+ "peerDependenciesMeta": {
81
+ "supports-color": {
82
+ "optional": true
83
+ }
84
+ }
85
+ },
86
+ "node_modules/agent-base/node_modules/ms": {
87
+ "version": "2.1.3",
88
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
89
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
90
+ "license": "MIT"
91
+ },
92
+ "node_modules/archiver": {
93
+ "version": "5.3.2",
94
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz",
95
+ "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==",
96
+ "license": "MIT",
97
+ "optional": true,
98
+ "dependencies": {
99
+ "archiver-utils": "^2.1.0",
100
+ "async": "^3.2.4",
101
+ "buffer-crc32": "^0.2.1",
102
+ "readable-stream": "^3.6.0",
103
+ "readdir-glob": "^1.1.2",
104
+ "tar-stream": "^2.2.0",
105
+ "zip-stream": "^4.1.0"
106
+ },
107
+ "engines": {
108
+ "node": ">= 10"
109
+ }
110
+ },
111
+ "node_modules/archiver-utils": {
112
+ "version": "2.1.0",
113
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
114
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
115
+ "license": "MIT",
116
+ "optional": true,
117
+ "dependencies": {
118
+ "glob": "^7.1.4",
119
+ "graceful-fs": "^4.2.0",
120
+ "lazystream": "^1.0.0",
121
+ "lodash.defaults": "^4.2.0",
122
+ "lodash.difference": "^4.5.0",
123
+ "lodash.flatten": "^4.4.0",
124
+ "lodash.isplainobject": "^4.0.6",
125
+ "lodash.union": "^4.6.0",
126
+ "normalize-path": "^3.0.0",
127
+ "readable-stream": "^2.0.0"
128
+ },
129
+ "engines": {
130
+ "node": ">= 6"
131
+ }
132
+ },
133
+ "node_modules/archiver-utils/node_modules/readable-stream": {
134
+ "version": "2.3.8",
135
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
136
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
137
+ "license": "MIT",
138
+ "optional": true,
139
+ "dependencies": {
140
+ "core-util-is": "~1.0.0",
141
+ "inherits": "~2.0.3",
142
+ "isarray": "~1.0.0",
143
+ "process-nextick-args": "~2.0.0",
144
+ "safe-buffer": "~5.1.1",
145
+ "string_decoder": "~1.1.1",
146
+ "util-deprecate": "~1.0.1"
147
+ }
148
+ },
149
+ "node_modules/archiver-utils/node_modules/safe-buffer": {
150
+ "version": "5.1.2",
151
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
152
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
153
+ "license": "MIT",
154
+ "optional": true
155
+ },
156
+ "node_modules/archiver-utils/node_modules/string_decoder": {
157
+ "version": "1.1.1",
158
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
159
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
160
+ "license": "MIT",
161
+ "optional": true,
162
+ "dependencies": {
163
+ "safe-buffer": "~5.1.0"
164
+ }
165
+ },
166
+ "node_modules/array-flatten": {
167
+ "version": "1.1.1",
168
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
169
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
170
+ "license": "MIT"
171
+ },
172
+ "node_modules/async": {
173
+ "version": "3.2.6",
174
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
175
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
176
+ "license": "MIT",
177
+ "optional": true
178
+ },
179
+ "node_modules/balanced-match": {
180
+ "version": "1.0.2",
181
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
182
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
183
+ "license": "MIT"
184
+ },
185
+ "node_modules/base64-js": {
186
+ "version": "1.5.1",
187
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
188
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
189
+ "funding": [
190
+ {
191
+ "type": "github",
192
+ "url": "https://github.com/sponsors/feross"
193
+ },
194
+ {
195
+ "type": "patreon",
196
+ "url": "https://www.patreon.com/feross"
197
+ },
198
+ {
199
+ "type": "consulting",
200
+ "url": "https://feross.org/support"
201
+ }
202
+ ],
203
+ "license": "MIT"
204
+ },
205
+ "node_modules/big-integer": {
206
+ "version": "1.6.52",
207
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
208
+ "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
209
+ "license": "Unlicense",
210
+ "optional": true,
211
+ "engines": {
212
+ "node": ">=0.6"
213
+ }
214
+ },
215
+ "node_modules/binary": {
216
+ "version": "0.3.0",
217
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
218
+ "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
219
+ "license": "MIT",
220
+ "optional": true,
221
+ "dependencies": {
222
+ "buffers": "~0.1.1",
223
+ "chainsaw": "~0.1.0"
224
+ },
225
+ "engines": {
226
+ "node": "*"
227
+ }
228
+ },
229
+ "node_modules/bl": {
230
+ "version": "4.1.0",
231
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
232
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
233
+ "license": "MIT",
234
+ "dependencies": {
235
+ "buffer": "^5.5.0",
236
+ "inherits": "^2.0.4",
237
+ "readable-stream": "^3.4.0"
238
+ }
239
+ },
240
+ "node_modules/bluebird": {
241
+ "version": "3.4.7",
242
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
243
+ "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
244
+ "license": "MIT",
245
+ "optional": true
246
+ },
247
+ "node_modules/body-parser": {
248
+ "version": "1.20.4",
249
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
250
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
251
+ "license": "MIT",
252
+ "dependencies": {
253
+ "bytes": "~3.1.2",
254
+ "content-type": "~1.0.5",
255
+ "debug": "2.6.9",
256
+ "depd": "2.0.0",
257
+ "destroy": "~1.2.0",
258
+ "http-errors": "~2.0.1",
259
+ "iconv-lite": "~0.4.24",
260
+ "on-finished": "~2.4.1",
261
+ "qs": "~6.14.0",
262
+ "raw-body": "~2.5.3",
263
+ "type-is": "~1.6.18",
264
+ "unpipe": "~1.0.0"
265
+ },
266
+ "engines": {
267
+ "node": ">= 0.8",
268
+ "npm": "1.2.8000 || >= 1.4.16"
269
+ }
270
+ },
271
+ "node_modules/brace-expansion": {
272
+ "version": "1.1.12",
273
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
274
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
275
+ "license": "MIT",
276
+ "dependencies": {
277
+ "balanced-match": "^1.0.0",
278
+ "concat-map": "0.0.1"
279
+ }
280
+ },
281
+ "node_modules/buffer": {
282
+ "version": "5.7.1",
283
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
284
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
285
+ "funding": [
286
+ {
287
+ "type": "github",
288
+ "url": "https://github.com/sponsors/feross"
289
+ },
290
+ {
291
+ "type": "patreon",
292
+ "url": "https://www.patreon.com/feross"
293
+ },
294
+ {
295
+ "type": "consulting",
296
+ "url": "https://feross.org/support"
297
+ }
298
+ ],
299
+ "license": "MIT",
300
+ "dependencies": {
301
+ "base64-js": "^1.3.1",
302
+ "ieee754": "^1.1.13"
303
+ }
304
+ },
305
+ "node_modules/buffer-crc32": {
306
+ "version": "0.2.13",
307
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
308
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
309
+ "license": "MIT",
310
+ "engines": {
311
+ "node": "*"
312
+ }
313
+ },
314
+ "node_modules/buffer-indexof-polyfill": {
315
+ "version": "1.0.2",
316
+ "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
317
+ "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
318
+ "license": "MIT",
319
+ "optional": true,
320
+ "engines": {
321
+ "node": ">=0.10"
322
+ }
323
+ },
324
+ "node_modules/buffers": {
325
+ "version": "0.1.1",
326
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
327
+ "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
328
+ "optional": true,
329
+ "engines": {
330
+ "node": ">=0.2.0"
331
+ }
332
+ },
333
+ "node_modules/bytes": {
334
+ "version": "3.1.2",
335
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
336
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
337
+ "license": "MIT",
338
+ "engines": {
339
+ "node": ">= 0.8"
340
+ }
341
+ },
342
+ "node_modules/call-bind-apply-helpers": {
343
+ "version": "1.0.2",
344
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
345
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
346
+ "license": "MIT",
347
+ "dependencies": {
348
+ "es-errors": "^1.3.0",
349
+ "function-bind": "^1.1.2"
350
+ },
351
+ "engines": {
352
+ "node": ">= 0.4"
353
+ }
354
+ },
355
+ "node_modules/call-bound": {
356
+ "version": "1.0.4",
357
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
358
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
359
+ "license": "MIT",
360
+ "dependencies": {
361
+ "call-bind-apply-helpers": "^1.0.2",
362
+ "get-intrinsic": "^1.3.0"
363
+ },
364
+ "engines": {
365
+ "node": ">= 0.4"
366
+ },
367
+ "funding": {
368
+ "url": "https://github.com/sponsors/ljharb"
369
+ }
370
+ },
371
+ "node_modules/chainsaw": {
372
+ "version": "0.1.0",
373
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
374
+ "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
375
+ "license": "MIT/X11",
376
+ "optional": true,
377
+ "dependencies": {
378
+ "traverse": ">=0.3.0 <0.4"
379
+ },
380
+ "engines": {
381
+ "node": "*"
382
+ }
383
+ },
384
+ "node_modules/chownr": {
385
+ "version": "1.1.4",
386
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
387
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
388
+ "license": "ISC"
389
+ },
390
+ "node_modules/compress-commons": {
391
+ "version": "4.1.2",
392
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
393
+ "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==",
394
+ "license": "MIT",
395
+ "optional": true,
396
+ "dependencies": {
397
+ "buffer-crc32": "^0.2.13",
398
+ "crc32-stream": "^4.0.2",
399
+ "normalize-path": "^3.0.0",
400
+ "readable-stream": "^3.6.0"
401
+ },
402
+ "engines": {
403
+ "node": ">= 10"
404
+ }
405
+ },
406
+ "node_modules/concat-map": {
407
+ "version": "0.0.1",
408
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
409
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
410
+ "license": "MIT"
411
+ },
412
+ "node_modules/content-disposition": {
413
+ "version": "0.5.4",
414
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
415
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
416
+ "license": "MIT",
417
+ "dependencies": {
418
+ "safe-buffer": "5.2.1"
419
+ },
420
+ "engines": {
421
+ "node": ">= 0.6"
422
+ }
423
+ },
424
+ "node_modules/content-type": {
425
+ "version": "1.0.5",
426
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
427
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
428
+ "license": "MIT",
429
+ "engines": {
430
+ "node": ">= 0.6"
431
+ }
432
+ },
433
+ "node_modules/cookie": {
434
+ "version": "0.7.2",
435
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
436
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
437
+ "license": "MIT",
438
+ "engines": {
439
+ "node": ">= 0.6"
440
+ }
441
+ },
442
+ "node_modules/cookie-signature": {
443
+ "version": "1.0.7",
444
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
445
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
446
+ "license": "MIT"
447
+ },
448
+ "node_modules/core-util-is": {
449
+ "version": "1.0.3",
450
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
451
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
452
+ "license": "MIT",
453
+ "optional": true
454
+ },
455
+ "node_modules/cors": {
456
+ "version": "2.8.5",
457
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
458
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
459
+ "license": "MIT",
460
+ "dependencies": {
461
+ "object-assign": "^4",
462
+ "vary": "^1"
463
+ },
464
+ "engines": {
465
+ "node": ">= 0.10"
466
+ }
467
+ },
468
+ "node_modules/crc-32": {
469
+ "version": "1.2.2",
470
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
471
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
472
+ "license": "Apache-2.0",
473
+ "optional": true,
474
+ "bin": {
475
+ "crc32": "bin/crc32.njs"
476
+ },
477
+ "engines": {
478
+ "node": ">=0.8"
479
+ }
480
+ },
481
+ "node_modules/crc32-stream": {
482
+ "version": "4.0.3",
483
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz",
484
+ "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==",
485
+ "license": "MIT",
486
+ "optional": true,
487
+ "dependencies": {
488
+ "crc-32": "^1.2.0",
489
+ "readable-stream": "^3.4.0"
490
+ },
491
+ "engines": {
492
+ "node": ">= 10"
493
+ }
494
+ },
495
+ "node_modules/cross-fetch": {
496
+ "version": "3.1.5",
497
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
498
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
499
+ "license": "MIT",
500
+ "dependencies": {
501
+ "node-fetch": "2.6.7"
502
+ }
503
+ },
504
+ "node_modules/cross-fetch/node_modules/node-fetch": {
505
+ "version": "2.6.7",
506
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
507
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
508
+ "license": "MIT",
509
+ "dependencies": {
510
+ "whatwg-url": "^5.0.0"
511
+ },
512
+ "engines": {
513
+ "node": "4.x || >=6.0.0"
514
+ },
515
+ "peerDependencies": {
516
+ "encoding": "^0.1.0"
517
+ },
518
+ "peerDependenciesMeta": {
519
+ "encoding": {
520
+ "optional": true
521
+ }
522
+ }
523
+ },
524
+ "node_modules/debug": {
525
+ "version": "2.6.9",
526
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
527
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
528
+ "license": "MIT",
529
+ "dependencies": {
530
+ "ms": "2.0.0"
531
+ }
532
+ },
533
+ "node_modules/depd": {
534
+ "version": "2.0.0",
535
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
536
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
537
+ "license": "MIT",
538
+ "engines": {
539
+ "node": ">= 0.8"
540
+ }
541
+ },
542
+ "node_modules/destroy": {
543
+ "version": "1.2.0",
544
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
545
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
546
+ "license": "MIT",
547
+ "engines": {
548
+ "node": ">= 0.8",
549
+ "npm": "1.2.8000 || >= 1.4.16"
550
+ }
551
+ },
552
+ "node_modules/devtools-protocol": {
553
+ "version": "0.0.1045489",
554
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1045489.tgz",
555
+ "integrity": "sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==",
556
+ "license": "BSD-3-Clause"
557
+ },
558
+ "node_modules/dotenv": {
559
+ "version": "16.6.1",
560
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
561
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
562
+ "license": "BSD-2-Clause",
563
+ "engines": {
564
+ "node": ">=12"
565
+ },
566
+ "funding": {
567
+ "url": "https://dotenvx.com"
568
+ }
569
+ },
570
+ "node_modules/dunder-proto": {
571
+ "version": "1.0.1",
572
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
573
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
574
+ "license": "MIT",
575
+ "dependencies": {
576
+ "call-bind-apply-helpers": "^1.0.1",
577
+ "es-errors": "^1.3.0",
578
+ "gopd": "^1.2.0"
579
+ },
580
+ "engines": {
581
+ "node": ">= 0.4"
582
+ }
583
+ },
584
+ "node_modules/duplexer2": {
585
+ "version": "0.1.4",
586
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
587
+ "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
588
+ "license": "BSD-3-Clause",
589
+ "optional": true,
590
+ "dependencies": {
591
+ "readable-stream": "^2.0.2"
592
+ }
593
+ },
594
+ "node_modules/duplexer2/node_modules/readable-stream": {
595
+ "version": "2.3.8",
596
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
597
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
598
+ "license": "MIT",
599
+ "optional": true,
600
+ "dependencies": {
601
+ "core-util-is": "~1.0.0",
602
+ "inherits": "~2.0.3",
603
+ "isarray": "~1.0.0",
604
+ "process-nextick-args": "~2.0.0",
605
+ "safe-buffer": "~5.1.1",
606
+ "string_decoder": "~1.1.1",
607
+ "util-deprecate": "~1.0.1"
608
+ }
609
+ },
610
+ "node_modules/duplexer2/node_modules/safe-buffer": {
611
+ "version": "5.1.2",
612
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
613
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
614
+ "license": "MIT",
615
+ "optional": true
616
+ },
617
+ "node_modules/duplexer2/node_modules/string_decoder": {
618
+ "version": "1.1.1",
619
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
620
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
621
+ "license": "MIT",
622
+ "optional": true,
623
+ "dependencies": {
624
+ "safe-buffer": "~5.1.0"
625
+ }
626
+ },
627
+ "node_modules/ee-first": {
628
+ "version": "1.1.1",
629
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
630
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
631
+ "license": "MIT"
632
+ },
633
+ "node_modules/encodeurl": {
634
+ "version": "2.0.0",
635
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
636
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
637
+ "license": "MIT",
638
+ "engines": {
639
+ "node": ">= 0.8"
640
+ }
641
+ },
642
+ "node_modules/end-of-stream": {
643
+ "version": "1.4.5",
644
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
645
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
646
+ "license": "MIT",
647
+ "dependencies": {
648
+ "once": "^1.4.0"
649
+ }
650
+ },
651
+ "node_modules/es-define-property": {
652
+ "version": "1.0.1",
653
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
654
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
655
+ "license": "MIT",
656
+ "engines": {
657
+ "node": ">= 0.4"
658
+ }
659
+ },
660
+ "node_modules/es-errors": {
661
+ "version": "1.3.0",
662
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
663
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
664
+ "license": "MIT",
665
+ "engines": {
666
+ "node": ">= 0.4"
667
+ }
668
+ },
669
+ "node_modules/es-object-atoms": {
670
+ "version": "1.1.1",
671
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
672
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
673
+ "license": "MIT",
674
+ "dependencies": {
675
+ "es-errors": "^1.3.0"
676
+ },
677
+ "engines": {
678
+ "node": ">= 0.4"
679
+ }
680
+ },
681
+ "node_modules/escape-html": {
682
+ "version": "1.0.3",
683
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
684
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
685
+ "license": "MIT"
686
+ },
687
+ "node_modules/etag": {
688
+ "version": "1.8.1",
689
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
690
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
691
+ "license": "MIT",
692
+ "engines": {
693
+ "node": ">= 0.6"
694
+ }
695
+ },
696
+ "node_modules/express": {
697
+ "version": "4.22.1",
698
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
699
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
700
+ "license": "MIT",
701
+ "dependencies": {
702
+ "accepts": "~1.3.8",
703
+ "array-flatten": "1.1.1",
704
+ "body-parser": "~1.20.3",
705
+ "content-disposition": "~0.5.4",
706
+ "content-type": "~1.0.4",
707
+ "cookie": "~0.7.1",
708
+ "cookie-signature": "~1.0.6",
709
+ "debug": "2.6.9",
710
+ "depd": "2.0.0",
711
+ "encodeurl": "~2.0.0",
712
+ "escape-html": "~1.0.3",
713
+ "etag": "~1.8.1",
714
+ "finalhandler": "~1.3.1",
715
+ "fresh": "~0.5.2",
716
+ "http-errors": "~2.0.0",
717
+ "merge-descriptors": "1.0.3",
718
+ "methods": "~1.1.2",
719
+ "on-finished": "~2.4.1",
720
+ "parseurl": "~1.3.3",
721
+ "path-to-regexp": "~0.1.12",
722
+ "proxy-addr": "~2.0.7",
723
+ "qs": "~6.14.0",
724
+ "range-parser": "~1.2.1",
725
+ "safe-buffer": "5.2.1",
726
+ "send": "~0.19.0",
727
+ "serve-static": "~1.16.2",
728
+ "setprototypeof": "1.2.0",
729
+ "statuses": "~2.0.1",
730
+ "type-is": "~1.6.18",
731
+ "utils-merge": "1.0.1",
732
+ "vary": "~1.1.2"
733
+ },
734
+ "engines": {
735
+ "node": ">= 0.10.0"
736
+ },
737
+ "funding": {
738
+ "type": "opencollective",
739
+ "url": "https://opencollective.com/express"
740
+ }
741
+ },
742
+ "node_modules/extract-zip": {
743
+ "version": "2.0.1",
744
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
745
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
746
+ "license": "BSD-2-Clause",
747
+ "dependencies": {
748
+ "debug": "^4.1.1",
749
+ "get-stream": "^5.1.0",
750
+ "yauzl": "^2.10.0"
751
+ },
752
+ "bin": {
753
+ "extract-zip": "cli.js"
754
+ },
755
+ "engines": {
756
+ "node": ">= 10.17.0"
757
+ },
758
+ "optionalDependencies": {
759
+ "@types/yauzl": "^2.9.1"
760
+ }
761
+ },
762
+ "node_modules/extract-zip/node_modules/debug": {
763
+ "version": "4.4.3",
764
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
765
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
766
+ "license": "MIT",
767
+ "dependencies": {
768
+ "ms": "^2.1.3"
769
+ },
770
+ "engines": {
771
+ "node": ">=6.0"
772
+ },
773
+ "peerDependenciesMeta": {
774
+ "supports-color": {
775
+ "optional": true
776
+ }
777
+ }
778
+ },
779
+ "node_modules/extract-zip/node_modules/ms": {
780
+ "version": "2.1.3",
781
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
782
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
783
+ "license": "MIT"
784
+ },
785
+ "node_modules/fd-slicer": {
786
+ "version": "1.1.0",
787
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
788
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
789
+ "license": "MIT",
790
+ "dependencies": {
791
+ "pend": "~1.2.0"
792
+ }
793
+ },
794
+ "node_modules/finalhandler": {
795
+ "version": "1.3.2",
796
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
797
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
798
+ "license": "MIT",
799
+ "dependencies": {
800
+ "debug": "2.6.9",
801
+ "encodeurl": "~2.0.0",
802
+ "escape-html": "~1.0.3",
803
+ "on-finished": "~2.4.1",
804
+ "parseurl": "~1.3.3",
805
+ "statuses": "~2.0.2",
806
+ "unpipe": "~1.0.0"
807
+ },
808
+ "engines": {
809
+ "node": ">= 0.8"
810
+ }
811
+ },
812
+ "node_modules/fluent-ffmpeg": {
813
+ "version": "2.1.3",
814
+ "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz",
815
+ "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==",
816
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
817
+ "license": "MIT",
818
+ "dependencies": {
819
+ "async": "^0.2.9",
820
+ "which": "^1.1.1"
821
+ },
822
+ "engines": {
823
+ "node": ">=18"
824
+ }
825
+ },
826
+ "node_modules/fluent-ffmpeg/node_modules/async": {
827
+ "version": "0.2.10",
828
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
829
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="
830
+ },
831
+ "node_modules/forwarded": {
832
+ "version": "0.2.0",
833
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
834
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
835
+ "license": "MIT",
836
+ "engines": {
837
+ "node": ">= 0.6"
838
+ }
839
+ },
840
+ "node_modules/fresh": {
841
+ "version": "0.5.2",
842
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
843
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
844
+ "license": "MIT",
845
+ "engines": {
846
+ "node": ">= 0.6"
847
+ }
848
+ },
849
+ "node_modules/fs-constants": {
850
+ "version": "1.0.0",
851
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
852
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
853
+ "license": "MIT"
854
+ },
855
+ "node_modules/fs-extra": {
856
+ "version": "10.1.0",
857
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
858
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
859
+ "license": "MIT",
860
+ "optional": true,
861
+ "dependencies": {
862
+ "graceful-fs": "^4.2.0",
863
+ "jsonfile": "^6.0.1",
864
+ "universalify": "^2.0.0"
865
+ },
866
+ "engines": {
867
+ "node": ">=12"
868
+ }
869
+ },
870
+ "node_modules/fs.realpath": {
871
+ "version": "1.0.0",
872
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
873
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
874
+ "license": "ISC"
875
+ },
876
+ "node_modules/fstream": {
877
+ "version": "1.0.12",
878
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
879
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
880
+ "deprecated": "This package is no longer supported.",
881
+ "license": "ISC",
882
+ "optional": true,
883
+ "dependencies": {
884
+ "graceful-fs": "^4.1.2",
885
+ "inherits": "~2.0.0",
886
+ "mkdirp": ">=0.5 0",
887
+ "rimraf": "2"
888
+ },
889
+ "engines": {
890
+ "node": ">=0.6"
891
+ }
892
+ },
893
+ "node_modules/fstream/node_modules/rimraf": {
894
+ "version": "2.7.1",
895
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
896
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
897
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
898
+ "license": "ISC",
899
+ "optional": true,
900
+ "dependencies": {
901
+ "glob": "^7.1.3"
902
+ },
903
+ "bin": {
904
+ "rimraf": "bin.js"
905
+ }
906
+ },
907
+ "node_modules/function-bind": {
908
+ "version": "1.1.2",
909
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
910
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
911
+ "license": "MIT",
912
+ "funding": {
913
+ "url": "https://github.com/sponsors/ljharb"
914
+ }
915
+ },
916
+ "node_modules/get-intrinsic": {
917
+ "version": "1.3.0",
918
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
919
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
920
+ "license": "MIT",
921
+ "dependencies": {
922
+ "call-bind-apply-helpers": "^1.0.2",
923
+ "es-define-property": "^1.0.1",
924
+ "es-errors": "^1.3.0",
925
+ "es-object-atoms": "^1.1.1",
926
+ "function-bind": "^1.1.2",
927
+ "get-proto": "^1.0.1",
928
+ "gopd": "^1.2.0",
929
+ "has-symbols": "^1.1.0",
930
+ "hasown": "^2.0.2",
931
+ "math-intrinsics": "^1.1.0"
932
+ },
933
+ "engines": {
934
+ "node": ">= 0.4"
935
+ },
936
+ "funding": {
937
+ "url": "https://github.com/sponsors/ljharb"
938
+ }
939
+ },
940
+ "node_modules/get-proto": {
941
+ "version": "1.0.1",
942
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
943
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
944
+ "license": "MIT",
945
+ "dependencies": {
946
+ "dunder-proto": "^1.0.1",
947
+ "es-object-atoms": "^1.0.0"
948
+ },
949
+ "engines": {
950
+ "node": ">= 0.4"
951
+ }
952
+ },
953
+ "node_modules/get-stream": {
954
+ "version": "5.2.0",
955
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
956
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
957
+ "license": "MIT",
958
+ "dependencies": {
959
+ "pump": "^3.0.0"
960
+ },
961
+ "engines": {
962
+ "node": ">=8"
963
+ },
964
+ "funding": {
965
+ "url": "https://github.com/sponsors/sindresorhus"
966
+ }
967
+ },
968
+ "node_modules/glob": {
969
+ "version": "7.2.3",
970
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
971
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
972
+ "deprecated": "Glob versions prior to v9 are no longer supported",
973
+ "license": "ISC",
974
+ "dependencies": {
975
+ "fs.realpath": "^1.0.0",
976
+ "inflight": "^1.0.4",
977
+ "inherits": "2",
978
+ "minimatch": "^3.1.1",
979
+ "once": "^1.3.0",
980
+ "path-is-absolute": "^1.0.0"
981
+ },
982
+ "engines": {
983
+ "node": "*"
984
+ },
985
+ "funding": {
986
+ "url": "https://github.com/sponsors/isaacs"
987
+ }
988
+ },
989
+ "node_modules/gopd": {
990
+ "version": "1.2.0",
991
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
992
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
993
+ "license": "MIT",
994
+ "engines": {
995
+ "node": ">= 0.4"
996
+ },
997
+ "funding": {
998
+ "url": "https://github.com/sponsors/ljharb"
999
+ }
1000
+ },
1001
+ "node_modules/graceful-fs": {
1002
+ "version": "4.2.11",
1003
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
1004
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1005
+ "license": "ISC",
1006
+ "optional": true
1007
+ },
1008
+ "node_modules/has-symbols": {
1009
+ "version": "1.1.0",
1010
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1011
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
1012
+ "license": "MIT",
1013
+ "engines": {
1014
+ "node": ">= 0.4"
1015
+ },
1016
+ "funding": {
1017
+ "url": "https://github.com/sponsors/ljharb"
1018
+ }
1019
+ },
1020
+ "node_modules/hasown": {
1021
+ "version": "2.0.2",
1022
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1023
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1024
+ "license": "MIT",
1025
+ "dependencies": {
1026
+ "function-bind": "^1.1.2"
1027
+ },
1028
+ "engines": {
1029
+ "node": ">= 0.4"
1030
+ }
1031
+ },
1032
+ "node_modules/http-errors": {
1033
+ "version": "2.0.1",
1034
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
1035
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
1036
+ "license": "MIT",
1037
+ "dependencies": {
1038
+ "depd": "~2.0.0",
1039
+ "inherits": "~2.0.4",
1040
+ "setprototypeof": "~1.2.0",
1041
+ "statuses": "~2.0.2",
1042
+ "toidentifier": "~1.0.1"
1043
+ },
1044
+ "engines": {
1045
+ "node": ">= 0.8"
1046
+ },
1047
+ "funding": {
1048
+ "type": "opencollective",
1049
+ "url": "https://opencollective.com/express"
1050
+ }
1051
+ },
1052
+ "node_modules/https-proxy-agent": {
1053
+ "version": "5.0.1",
1054
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
1055
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
1056
+ "license": "MIT",
1057
+ "dependencies": {
1058
+ "agent-base": "6",
1059
+ "debug": "4"
1060
+ },
1061
+ "engines": {
1062
+ "node": ">= 6"
1063
+ }
1064
+ },
1065
+ "node_modules/https-proxy-agent/node_modules/debug": {
1066
+ "version": "4.4.3",
1067
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1068
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1069
+ "license": "MIT",
1070
+ "dependencies": {
1071
+ "ms": "^2.1.3"
1072
+ },
1073
+ "engines": {
1074
+ "node": ">=6.0"
1075
+ },
1076
+ "peerDependenciesMeta": {
1077
+ "supports-color": {
1078
+ "optional": true
1079
+ }
1080
+ }
1081
+ },
1082
+ "node_modules/https-proxy-agent/node_modules/ms": {
1083
+ "version": "2.1.3",
1084
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1085
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1086
+ "license": "MIT"
1087
+ },
1088
+ "node_modules/iconv-lite": {
1089
+ "version": "0.4.24",
1090
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1091
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1092
+ "license": "MIT",
1093
+ "dependencies": {
1094
+ "safer-buffer": ">= 2.1.2 < 3"
1095
+ },
1096
+ "engines": {
1097
+ "node": ">=0.10.0"
1098
+ }
1099
+ },
1100
+ "node_modules/ieee754": {
1101
+ "version": "1.2.1",
1102
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1103
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
1104
+ "funding": [
1105
+ {
1106
+ "type": "github",
1107
+ "url": "https://github.com/sponsors/feross"
1108
+ },
1109
+ {
1110
+ "type": "patreon",
1111
+ "url": "https://www.patreon.com/feross"
1112
+ },
1113
+ {
1114
+ "type": "consulting",
1115
+ "url": "https://feross.org/support"
1116
+ }
1117
+ ],
1118
+ "license": "BSD-3-Clause"
1119
+ },
1120
+ "node_modules/inflight": {
1121
+ "version": "1.0.6",
1122
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1123
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1124
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
1125
+ "license": "ISC",
1126
+ "dependencies": {
1127
+ "once": "^1.3.0",
1128
+ "wrappy": "1"
1129
+ }
1130
+ },
1131
+ "node_modules/inherits": {
1132
+ "version": "2.0.4",
1133
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1134
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1135
+ "license": "ISC"
1136
+ },
1137
+ "node_modules/ipaddr.js": {
1138
+ "version": "1.9.1",
1139
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1140
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1141
+ "license": "MIT",
1142
+ "engines": {
1143
+ "node": ">= 0.10"
1144
+ }
1145
+ },
1146
+ "node_modules/isarray": {
1147
+ "version": "1.0.0",
1148
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1149
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
1150
+ "license": "MIT",
1151
+ "optional": true
1152
+ },
1153
+ "node_modules/isexe": {
1154
+ "version": "2.0.0",
1155
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1156
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1157
+ "license": "ISC"
1158
+ },
1159
+ "node_modules/jsonfile": {
1160
+ "version": "6.2.0",
1161
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
1162
+ "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
1163
+ "license": "MIT",
1164
+ "optional": true,
1165
+ "dependencies": {
1166
+ "universalify": "^2.0.0"
1167
+ },
1168
+ "optionalDependencies": {
1169
+ "graceful-fs": "^4.1.6"
1170
+ }
1171
+ },
1172
+ "node_modules/lazystream": {
1173
+ "version": "1.0.1",
1174
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
1175
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
1176
+ "license": "MIT",
1177
+ "optional": true,
1178
+ "dependencies": {
1179
+ "readable-stream": "^2.0.5"
1180
+ },
1181
+ "engines": {
1182
+ "node": ">= 0.6.3"
1183
+ }
1184
+ },
1185
+ "node_modules/lazystream/node_modules/readable-stream": {
1186
+ "version": "2.3.8",
1187
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
1188
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
1189
+ "license": "MIT",
1190
+ "optional": true,
1191
+ "dependencies": {
1192
+ "core-util-is": "~1.0.0",
1193
+ "inherits": "~2.0.3",
1194
+ "isarray": "~1.0.0",
1195
+ "process-nextick-args": "~2.0.0",
1196
+ "safe-buffer": "~5.1.1",
1197
+ "string_decoder": "~1.1.1",
1198
+ "util-deprecate": "~1.0.1"
1199
+ }
1200
+ },
1201
+ "node_modules/lazystream/node_modules/safe-buffer": {
1202
+ "version": "5.1.2",
1203
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1204
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1205
+ "license": "MIT",
1206
+ "optional": true
1207
+ },
1208
+ "node_modules/lazystream/node_modules/string_decoder": {
1209
+ "version": "1.1.1",
1210
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1211
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1212
+ "license": "MIT",
1213
+ "optional": true,
1214
+ "dependencies": {
1215
+ "safe-buffer": "~5.1.0"
1216
+ }
1217
+ },
1218
+ "node_modules/listenercount": {
1219
+ "version": "1.0.1",
1220
+ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
1221
+ "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
1222
+ "license": "ISC",
1223
+ "optional": true
1224
+ },
1225
+ "node_modules/lodash.defaults": {
1226
+ "version": "4.2.0",
1227
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
1228
+ "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
1229
+ "license": "MIT",
1230
+ "optional": true
1231
+ },
1232
+ "node_modules/lodash.difference": {
1233
+ "version": "4.5.0",
1234
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
1235
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
1236
+ "license": "MIT",
1237
+ "optional": true
1238
+ },
1239
+ "node_modules/lodash.flatten": {
1240
+ "version": "4.4.0",
1241
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
1242
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
1243
+ "license": "MIT",
1244
+ "optional": true
1245
+ },
1246
+ "node_modules/lodash.isplainobject": {
1247
+ "version": "4.0.6",
1248
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1249
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
1250
+ "license": "MIT",
1251
+ "optional": true
1252
+ },
1253
+ "node_modules/lodash.union": {
1254
+ "version": "4.6.0",
1255
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
1256
+ "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
1257
+ "license": "MIT",
1258
+ "optional": true
1259
+ },
1260
+ "node_modules/math-intrinsics": {
1261
+ "version": "1.1.0",
1262
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1263
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
1264
+ "license": "MIT",
1265
+ "engines": {
1266
+ "node": ">= 0.4"
1267
+ }
1268
+ },
1269
+ "node_modules/media-typer": {
1270
+ "version": "0.3.0",
1271
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1272
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1273
+ "license": "MIT",
1274
+ "engines": {
1275
+ "node": ">= 0.6"
1276
+ }
1277
+ },
1278
+ "node_modules/merge-descriptors": {
1279
+ "version": "1.0.3",
1280
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
1281
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
1282
+ "license": "MIT",
1283
+ "funding": {
1284
+ "url": "https://github.com/sponsors/sindresorhus"
1285
+ }
1286
+ },
1287
+ "node_modules/methods": {
1288
+ "version": "1.1.2",
1289
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1290
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1291
+ "license": "MIT",
1292
+ "engines": {
1293
+ "node": ">= 0.6"
1294
+ }
1295
+ },
1296
+ "node_modules/mime": {
1297
+ "version": "1.6.0",
1298
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1299
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1300
+ "license": "MIT",
1301
+ "bin": {
1302
+ "mime": "cli.js"
1303
+ },
1304
+ "engines": {
1305
+ "node": ">=4"
1306
+ }
1307
+ },
1308
+ "node_modules/mime-db": {
1309
+ "version": "1.52.0",
1310
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1311
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1312
+ "license": "MIT",
1313
+ "engines": {
1314
+ "node": ">= 0.6"
1315
+ }
1316
+ },
1317
+ "node_modules/mime-types": {
1318
+ "version": "2.1.35",
1319
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1320
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1321
+ "license": "MIT",
1322
+ "dependencies": {
1323
+ "mime-db": "1.52.0"
1324
+ },
1325
+ "engines": {
1326
+ "node": ">= 0.6"
1327
+ }
1328
+ },
1329
+ "node_modules/minimatch": {
1330
+ "version": "3.1.2",
1331
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1332
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1333
+ "license": "ISC",
1334
+ "dependencies": {
1335
+ "brace-expansion": "^1.1.7"
1336
+ },
1337
+ "engines": {
1338
+ "node": "*"
1339
+ }
1340
+ },
1341
+ "node_modules/minimist": {
1342
+ "version": "1.2.8",
1343
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1344
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1345
+ "license": "MIT",
1346
+ "optional": true,
1347
+ "funding": {
1348
+ "url": "https://github.com/sponsors/ljharb"
1349
+ }
1350
+ },
1351
+ "node_modules/mkdirp": {
1352
+ "version": "0.5.6",
1353
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1354
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1355
+ "license": "MIT",
1356
+ "optional": true,
1357
+ "dependencies": {
1358
+ "minimist": "^1.2.6"
1359
+ },
1360
+ "bin": {
1361
+ "mkdirp": "bin/cmd.js"
1362
+ }
1363
+ },
1364
+ "node_modules/mkdirp-classic": {
1365
+ "version": "0.5.3",
1366
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
1367
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
1368
+ "license": "MIT"
1369
+ },
1370
+ "node_modules/ms": {
1371
+ "version": "2.0.0",
1372
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1373
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1374
+ "license": "MIT"
1375
+ },
1376
+ "node_modules/negotiator": {
1377
+ "version": "0.6.3",
1378
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1379
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1380
+ "license": "MIT",
1381
+ "engines": {
1382
+ "node": ">= 0.6"
1383
+ }
1384
+ },
1385
+ "node_modules/node-fetch": {
1386
+ "version": "2.7.0",
1387
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1388
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1389
+ "license": "MIT",
1390
+ "dependencies": {
1391
+ "whatwg-url": "^5.0.0"
1392
+ },
1393
+ "engines": {
1394
+ "node": "4.x || >=6.0.0"
1395
+ },
1396
+ "peerDependencies": {
1397
+ "encoding": "^0.1.0"
1398
+ },
1399
+ "peerDependenciesMeta": {
1400
+ "encoding": {
1401
+ "optional": true
1402
+ }
1403
+ }
1404
+ },
1405
+ "node_modules/node-webpmux": {
1406
+ "version": "3.1.7",
1407
+ "resolved": "https://registry.npmjs.org/node-webpmux/-/node-webpmux-3.1.7.tgz",
1408
+ "integrity": "sha512-ySkL4lBCto86OyQ0blAGzylWSECcn5I0lM3bYEhe75T8Zxt/BFUMHa8ktUguR7zwXNdS/Hms31VfSsYKN1383g==",
1409
+ "license": "ISC"
1410
+ },
1411
+ "node_modules/normalize-path": {
1412
+ "version": "3.0.0",
1413
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1414
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1415
+ "license": "MIT",
1416
+ "optional": true,
1417
+ "engines": {
1418
+ "node": ">=0.10.0"
1419
+ }
1420
+ },
1421
+ "node_modules/object-assign": {
1422
+ "version": "4.1.1",
1423
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1424
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1425
+ "license": "MIT",
1426
+ "engines": {
1427
+ "node": ">=0.10.0"
1428
+ }
1429
+ },
1430
+ "node_modules/object-inspect": {
1431
+ "version": "1.13.4",
1432
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
1433
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
1434
+ "license": "MIT",
1435
+ "engines": {
1436
+ "node": ">= 0.4"
1437
+ },
1438
+ "funding": {
1439
+ "url": "https://github.com/sponsors/ljharb"
1440
+ }
1441
+ },
1442
+ "node_modules/on-finished": {
1443
+ "version": "2.4.1",
1444
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1445
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1446
+ "license": "MIT",
1447
+ "dependencies": {
1448
+ "ee-first": "1.1.1"
1449
+ },
1450
+ "engines": {
1451
+ "node": ">= 0.8"
1452
+ }
1453
+ },
1454
+ "node_modules/once": {
1455
+ "version": "1.4.0",
1456
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1457
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1458
+ "license": "ISC",
1459
+ "dependencies": {
1460
+ "wrappy": "1"
1461
+ }
1462
+ },
1463
+ "node_modules/parseurl": {
1464
+ "version": "1.3.3",
1465
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1466
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1467
+ "license": "MIT",
1468
+ "engines": {
1469
+ "node": ">= 0.8"
1470
+ }
1471
+ },
1472
+ "node_modules/path-is-absolute": {
1473
+ "version": "1.0.1",
1474
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1475
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1476
+ "license": "MIT",
1477
+ "engines": {
1478
+ "node": ">=0.10.0"
1479
+ }
1480
+ },
1481
+ "node_modules/path-to-regexp": {
1482
+ "version": "0.1.12",
1483
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
1484
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
1485
+ "license": "MIT"
1486
+ },
1487
+ "node_modules/pend": {
1488
+ "version": "1.2.0",
1489
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1490
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
1491
+ "license": "MIT"
1492
+ },
1493
+ "node_modules/process-nextick-args": {
1494
+ "version": "2.0.1",
1495
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1496
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1497
+ "license": "MIT",
1498
+ "optional": true
1499
+ },
1500
+ "node_modules/progress": {
1501
+ "version": "2.0.3",
1502
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1503
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1504
+ "license": "MIT",
1505
+ "engines": {
1506
+ "node": ">=0.4.0"
1507
+ }
1508
+ },
1509
+ "node_modules/proxy-addr": {
1510
+ "version": "2.0.7",
1511
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1512
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1513
+ "license": "MIT",
1514
+ "dependencies": {
1515
+ "forwarded": "0.2.0",
1516
+ "ipaddr.js": "1.9.1"
1517
+ },
1518
+ "engines": {
1519
+ "node": ">= 0.10"
1520
+ }
1521
+ },
1522
+ "node_modules/proxy-from-env": {
1523
+ "version": "1.1.0",
1524
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1525
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
1526
+ "license": "MIT"
1527
+ },
1528
+ "node_modules/pump": {
1529
+ "version": "3.0.3",
1530
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
1531
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
1532
+ "license": "MIT",
1533
+ "dependencies": {
1534
+ "end-of-stream": "^1.1.0",
1535
+ "once": "^1.3.1"
1536
+ }
1537
+ },
1538
+ "node_modules/puppeteer": {
1539
+ "version": "18.2.1",
1540
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.2.1.tgz",
1541
+ "integrity": "sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==",
1542
+ "deprecated": "< 24.15.0 is no longer supported",
1543
+ "hasInstallScript": true,
1544
+ "license": "Apache-2.0",
1545
+ "dependencies": {
1546
+ "https-proxy-agent": "5.0.1",
1547
+ "progress": "2.0.3",
1548
+ "proxy-from-env": "1.1.0",
1549
+ "puppeteer-core": "18.2.1"
1550
+ },
1551
+ "engines": {
1552
+ "node": ">=14.1.0"
1553
+ }
1554
+ },
1555
+ "node_modules/puppeteer-core": {
1556
+ "version": "18.2.1",
1557
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-18.2.1.tgz",
1558
+ "integrity": "sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==",
1559
+ "license": "Apache-2.0",
1560
+ "dependencies": {
1561
+ "cross-fetch": "3.1.5",
1562
+ "debug": "4.3.4",
1563
+ "devtools-protocol": "0.0.1045489",
1564
+ "extract-zip": "2.0.1",
1565
+ "https-proxy-agent": "5.0.1",
1566
+ "proxy-from-env": "1.1.0",
1567
+ "rimraf": "3.0.2",
1568
+ "tar-fs": "2.1.1",
1569
+ "unbzip2-stream": "1.4.3",
1570
+ "ws": "8.9.0"
1571
+ },
1572
+ "engines": {
1573
+ "node": ">=14.1.0"
1574
+ }
1575
+ },
1576
+ "node_modules/puppeteer-core/node_modules/debug": {
1577
+ "version": "4.3.4",
1578
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1579
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1580
+ "license": "MIT",
1581
+ "dependencies": {
1582
+ "ms": "2.1.2"
1583
+ },
1584
+ "engines": {
1585
+ "node": ">=6.0"
1586
+ },
1587
+ "peerDependenciesMeta": {
1588
+ "supports-color": {
1589
+ "optional": true
1590
+ }
1591
+ }
1592
+ },
1593
+ "node_modules/puppeteer-core/node_modules/ms": {
1594
+ "version": "2.1.2",
1595
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1596
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1597
+ "license": "MIT"
1598
+ },
1599
+ "node_modules/qrcode-terminal": {
1600
+ "version": "0.12.0",
1601
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
1602
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
1603
+ "bin": {
1604
+ "qrcode-terminal": "bin/qrcode-terminal.js"
1605
+ }
1606
+ },
1607
+ "node_modules/qs": {
1608
+ "version": "6.14.1",
1609
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
1610
+ "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
1611
+ "license": "BSD-3-Clause",
1612
+ "dependencies": {
1613
+ "side-channel": "^1.1.0"
1614
+ },
1615
+ "engines": {
1616
+ "node": ">=0.6"
1617
+ },
1618
+ "funding": {
1619
+ "url": "https://github.com/sponsors/ljharb"
1620
+ }
1621
+ },
1622
+ "node_modules/range-parser": {
1623
+ "version": "1.2.1",
1624
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1625
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1626
+ "license": "MIT",
1627
+ "engines": {
1628
+ "node": ">= 0.6"
1629
+ }
1630
+ },
1631
+ "node_modules/raw-body": {
1632
+ "version": "2.5.3",
1633
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
1634
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
1635
+ "license": "MIT",
1636
+ "dependencies": {
1637
+ "bytes": "~3.1.2",
1638
+ "http-errors": "~2.0.1",
1639
+ "iconv-lite": "~0.4.24",
1640
+ "unpipe": "~1.0.0"
1641
+ },
1642
+ "engines": {
1643
+ "node": ">= 0.8"
1644
+ }
1645
+ },
1646
+ "node_modules/readable-stream": {
1647
+ "version": "3.6.2",
1648
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
1649
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
1650
+ "license": "MIT",
1651
+ "dependencies": {
1652
+ "inherits": "^2.0.3",
1653
+ "string_decoder": "^1.1.1",
1654
+ "util-deprecate": "^1.0.1"
1655
+ },
1656
+ "engines": {
1657
+ "node": ">= 6"
1658
+ }
1659
+ },
1660
+ "node_modules/readdir-glob": {
1661
+ "version": "1.1.3",
1662
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
1663
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
1664
+ "license": "Apache-2.0",
1665
+ "optional": true,
1666
+ "dependencies": {
1667
+ "minimatch": "^5.1.0"
1668
+ }
1669
+ },
1670
+ "node_modules/readdir-glob/node_modules/brace-expansion": {
1671
+ "version": "2.0.2",
1672
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
1673
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
1674
+ "license": "MIT",
1675
+ "optional": true,
1676
+ "dependencies": {
1677
+ "balanced-match": "^1.0.0"
1678
+ }
1679
+ },
1680
+ "node_modules/readdir-glob/node_modules/minimatch": {
1681
+ "version": "5.1.6",
1682
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
1683
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
1684
+ "license": "ISC",
1685
+ "optional": true,
1686
+ "dependencies": {
1687
+ "brace-expansion": "^2.0.1"
1688
+ },
1689
+ "engines": {
1690
+ "node": ">=10"
1691
+ }
1692
+ },
1693
+ "node_modules/rimraf": {
1694
+ "version": "3.0.2",
1695
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1696
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1697
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
1698
+ "license": "ISC",
1699
+ "dependencies": {
1700
+ "glob": "^7.1.3"
1701
+ },
1702
+ "bin": {
1703
+ "rimraf": "bin.js"
1704
+ },
1705
+ "funding": {
1706
+ "url": "https://github.com/sponsors/isaacs"
1707
+ }
1708
+ },
1709
+ "node_modules/safe-buffer": {
1710
+ "version": "5.2.1",
1711
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1712
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1713
+ "funding": [
1714
+ {
1715
+ "type": "github",
1716
+ "url": "https://github.com/sponsors/feross"
1717
+ },
1718
+ {
1719
+ "type": "patreon",
1720
+ "url": "https://www.patreon.com/feross"
1721
+ },
1722
+ {
1723
+ "type": "consulting",
1724
+ "url": "https://feross.org/support"
1725
+ }
1726
+ ],
1727
+ "license": "MIT"
1728
+ },
1729
+ "node_modules/safer-buffer": {
1730
+ "version": "2.1.2",
1731
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1732
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1733
+ "license": "MIT"
1734
+ },
1735
+ "node_modules/send": {
1736
+ "version": "0.19.2",
1737
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
1738
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
1739
+ "license": "MIT",
1740
+ "dependencies": {
1741
+ "debug": "2.6.9",
1742
+ "depd": "2.0.0",
1743
+ "destroy": "1.2.0",
1744
+ "encodeurl": "~2.0.0",
1745
+ "escape-html": "~1.0.3",
1746
+ "etag": "~1.8.1",
1747
+ "fresh": "~0.5.2",
1748
+ "http-errors": "~2.0.1",
1749
+ "mime": "1.6.0",
1750
+ "ms": "2.1.3",
1751
+ "on-finished": "~2.4.1",
1752
+ "range-parser": "~1.2.1",
1753
+ "statuses": "~2.0.2"
1754
+ },
1755
+ "engines": {
1756
+ "node": ">= 0.8.0"
1757
+ }
1758
+ },
1759
+ "node_modules/send/node_modules/ms": {
1760
+ "version": "2.1.3",
1761
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1762
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1763
+ "license": "MIT"
1764
+ },
1765
+ "node_modules/serve-static": {
1766
+ "version": "1.16.3",
1767
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
1768
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
1769
+ "license": "MIT",
1770
+ "dependencies": {
1771
+ "encodeurl": "~2.0.0",
1772
+ "escape-html": "~1.0.3",
1773
+ "parseurl": "~1.3.3",
1774
+ "send": "~0.19.1"
1775
+ },
1776
+ "engines": {
1777
+ "node": ">= 0.8.0"
1778
+ }
1779
+ },
1780
+ "node_modules/setimmediate": {
1781
+ "version": "1.0.5",
1782
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
1783
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
1784
+ "license": "MIT",
1785
+ "optional": true
1786
+ },
1787
+ "node_modules/setprototypeof": {
1788
+ "version": "1.2.0",
1789
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1790
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1791
+ "license": "ISC"
1792
+ },
1793
+ "node_modules/side-channel": {
1794
+ "version": "1.1.0",
1795
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1796
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1797
+ "license": "MIT",
1798
+ "dependencies": {
1799
+ "es-errors": "^1.3.0",
1800
+ "object-inspect": "^1.13.3",
1801
+ "side-channel-list": "^1.0.0",
1802
+ "side-channel-map": "^1.0.1",
1803
+ "side-channel-weakmap": "^1.0.2"
1804
+ },
1805
+ "engines": {
1806
+ "node": ">= 0.4"
1807
+ },
1808
+ "funding": {
1809
+ "url": "https://github.com/sponsors/ljharb"
1810
+ }
1811
+ },
1812
+ "node_modules/side-channel-list": {
1813
+ "version": "1.0.0",
1814
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1815
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1816
+ "license": "MIT",
1817
+ "dependencies": {
1818
+ "es-errors": "^1.3.0",
1819
+ "object-inspect": "^1.13.3"
1820
+ },
1821
+ "engines": {
1822
+ "node": ">= 0.4"
1823
+ },
1824
+ "funding": {
1825
+ "url": "https://github.com/sponsors/ljharb"
1826
+ }
1827
+ },
1828
+ "node_modules/side-channel-map": {
1829
+ "version": "1.0.1",
1830
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1831
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1832
+ "license": "MIT",
1833
+ "dependencies": {
1834
+ "call-bound": "^1.0.2",
1835
+ "es-errors": "^1.3.0",
1836
+ "get-intrinsic": "^1.2.5",
1837
+ "object-inspect": "^1.13.3"
1838
+ },
1839
+ "engines": {
1840
+ "node": ">= 0.4"
1841
+ },
1842
+ "funding": {
1843
+ "url": "https://github.com/sponsors/ljharb"
1844
+ }
1845
+ },
1846
+ "node_modules/side-channel-weakmap": {
1847
+ "version": "1.0.2",
1848
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1849
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1850
+ "license": "MIT",
1851
+ "dependencies": {
1852
+ "call-bound": "^1.0.2",
1853
+ "es-errors": "^1.3.0",
1854
+ "get-intrinsic": "^1.2.5",
1855
+ "object-inspect": "^1.13.3",
1856
+ "side-channel-map": "^1.0.1"
1857
+ },
1858
+ "engines": {
1859
+ "node": ">= 0.4"
1860
+ },
1861
+ "funding": {
1862
+ "url": "https://github.com/sponsors/ljharb"
1863
+ }
1864
+ },
1865
+ "node_modules/statuses": {
1866
+ "version": "2.0.2",
1867
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
1868
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
1869
+ "license": "MIT",
1870
+ "engines": {
1871
+ "node": ">= 0.8"
1872
+ }
1873
+ },
1874
+ "node_modules/string_decoder": {
1875
+ "version": "1.3.0",
1876
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
1877
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1878
+ "license": "MIT",
1879
+ "dependencies": {
1880
+ "safe-buffer": "~5.2.0"
1881
+ }
1882
+ },
1883
+ "node_modules/tar-fs": {
1884
+ "version": "2.1.1",
1885
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
1886
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
1887
+ "license": "MIT",
1888
+ "dependencies": {
1889
+ "chownr": "^1.1.1",
1890
+ "mkdirp-classic": "^0.5.2",
1891
+ "pump": "^3.0.0",
1892
+ "tar-stream": "^2.1.4"
1893
+ }
1894
+ },
1895
+ "node_modules/tar-stream": {
1896
+ "version": "2.2.0",
1897
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
1898
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
1899
+ "license": "MIT",
1900
+ "dependencies": {
1901
+ "bl": "^4.0.3",
1902
+ "end-of-stream": "^1.4.1",
1903
+ "fs-constants": "^1.0.0",
1904
+ "inherits": "^2.0.3",
1905
+ "readable-stream": "^3.1.1"
1906
+ },
1907
+ "engines": {
1908
+ "node": ">=6"
1909
+ }
1910
+ },
1911
+ "node_modules/through": {
1912
+ "version": "2.3.8",
1913
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1914
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
1915
+ "license": "MIT"
1916
+ },
1917
+ "node_modules/toidentifier": {
1918
+ "version": "1.0.1",
1919
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1920
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1921
+ "license": "MIT",
1922
+ "engines": {
1923
+ "node": ">=0.6"
1924
+ }
1925
+ },
1926
+ "node_modules/tr46": {
1927
+ "version": "0.0.3",
1928
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1929
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
1930
+ "license": "MIT"
1931
+ },
1932
+ "node_modules/traverse": {
1933
+ "version": "0.3.9",
1934
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
1935
+ "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
1936
+ "license": "MIT/X11",
1937
+ "optional": true,
1938
+ "engines": {
1939
+ "node": "*"
1940
+ }
1941
+ },
1942
+ "node_modules/type-is": {
1943
+ "version": "1.6.18",
1944
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1945
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1946
+ "license": "MIT",
1947
+ "dependencies": {
1948
+ "media-typer": "0.3.0",
1949
+ "mime-types": "~2.1.24"
1950
+ },
1951
+ "engines": {
1952
+ "node": ">= 0.6"
1953
+ }
1954
+ },
1955
+ "node_modules/unbzip2-stream": {
1956
+ "version": "1.4.3",
1957
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
1958
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
1959
+ "license": "MIT",
1960
+ "dependencies": {
1961
+ "buffer": "^5.2.1",
1962
+ "through": "^2.3.8"
1963
+ }
1964
+ },
1965
+ "node_modules/undici-types": {
1966
+ "version": "7.16.0",
1967
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
1968
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
1969
+ "license": "MIT",
1970
+ "optional": true
1971
+ },
1972
+ "node_modules/universalify": {
1973
+ "version": "2.0.1",
1974
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
1975
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
1976
+ "license": "MIT",
1977
+ "optional": true,
1978
+ "engines": {
1979
+ "node": ">= 10.0.0"
1980
+ }
1981
+ },
1982
+ "node_modules/unpipe": {
1983
+ "version": "1.0.0",
1984
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1985
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1986
+ "license": "MIT",
1987
+ "engines": {
1988
+ "node": ">= 0.8"
1989
+ }
1990
+ },
1991
+ "node_modules/unzipper": {
1992
+ "version": "0.10.14",
1993
+ "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
1994
+ "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
1995
+ "license": "MIT",
1996
+ "optional": true,
1997
+ "dependencies": {
1998
+ "big-integer": "^1.6.17",
1999
+ "binary": "~0.3.0",
2000
+ "bluebird": "~3.4.1",
2001
+ "buffer-indexof-polyfill": "~1.0.0",
2002
+ "duplexer2": "~0.1.4",
2003
+ "fstream": "^1.0.12",
2004
+ "graceful-fs": "^4.2.2",
2005
+ "listenercount": "~1.0.1",
2006
+ "readable-stream": "~2.3.6",
2007
+ "setimmediate": "~1.0.4"
2008
+ }
2009
+ },
2010
+ "node_modules/unzipper/node_modules/readable-stream": {
2011
+ "version": "2.3.8",
2012
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
2013
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
2014
+ "license": "MIT",
2015
+ "optional": true,
2016
+ "dependencies": {
2017
+ "core-util-is": "~1.0.0",
2018
+ "inherits": "~2.0.3",
2019
+ "isarray": "~1.0.0",
2020
+ "process-nextick-args": "~2.0.0",
2021
+ "safe-buffer": "~5.1.1",
2022
+ "string_decoder": "~1.1.1",
2023
+ "util-deprecate": "~1.0.1"
2024
+ }
2025
+ },
2026
+ "node_modules/unzipper/node_modules/safe-buffer": {
2027
+ "version": "5.1.2",
2028
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2029
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2030
+ "license": "MIT",
2031
+ "optional": true
2032
+ },
2033
+ "node_modules/unzipper/node_modules/string_decoder": {
2034
+ "version": "1.1.1",
2035
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2036
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2037
+ "license": "MIT",
2038
+ "optional": true,
2039
+ "dependencies": {
2040
+ "safe-buffer": "~5.1.0"
2041
+ }
2042
+ },
2043
+ "node_modules/util-deprecate": {
2044
+ "version": "1.0.2",
2045
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2046
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2047
+ "license": "MIT"
2048
+ },
2049
+ "node_modules/utils-merge": {
2050
+ "version": "1.0.1",
2051
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2052
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
2053
+ "license": "MIT",
2054
+ "engines": {
2055
+ "node": ">= 0.4.0"
2056
+ }
2057
+ },
2058
+ "node_modules/vary": {
2059
+ "version": "1.1.2",
2060
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2061
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
2062
+ "license": "MIT",
2063
+ "engines": {
2064
+ "node": ">= 0.8"
2065
+ }
2066
+ },
2067
+ "node_modules/webidl-conversions": {
2068
+ "version": "3.0.1",
2069
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
2070
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
2071
+ "license": "BSD-2-Clause"
2072
+ },
2073
+ "node_modules/whatsapp-web.js": {
2074
+ "version": "1.34.2",
2075
+ "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.34.2.tgz",
2076
+ "integrity": "sha512-M8/HV2CmQ6T67NQblDJZUA9jt9ZDOLZKO67kKQ6r9eDpkzNqVNa1uK8nNxt1hB0NqndkFGAXdcO1tq+z2hYV5A==",
2077
+ "license": "Apache-2.0",
2078
+ "dependencies": {
2079
+ "@pedroslopez/moduleraid": "^5.0.2",
2080
+ "fluent-ffmpeg": "2.1.3",
2081
+ "mime": "^3.0.0",
2082
+ "node-fetch": "^2.6.9",
2083
+ "node-webpmux": "3.1.7",
2084
+ "puppeteer": "^18.2.1"
2085
+ },
2086
+ "engines": {
2087
+ "node": ">=18.0.0"
2088
+ },
2089
+ "optionalDependencies": {
2090
+ "archiver": "^5.3.1",
2091
+ "fs-extra": "^10.1.0",
2092
+ "unzipper": "^0.10.11"
2093
+ }
2094
+ },
2095
+ "node_modules/whatsapp-web.js/node_modules/mime": {
2096
+ "version": "3.0.0",
2097
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
2098
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
2099
+ "license": "MIT",
2100
+ "bin": {
2101
+ "mime": "cli.js"
2102
+ },
2103
+ "engines": {
2104
+ "node": ">=10.0.0"
2105
+ }
2106
+ },
2107
+ "node_modules/whatwg-url": {
2108
+ "version": "5.0.0",
2109
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
2110
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
2111
+ "license": "MIT",
2112
+ "dependencies": {
2113
+ "tr46": "~0.0.3",
2114
+ "webidl-conversions": "^3.0.0"
2115
+ }
2116
+ },
2117
+ "node_modules/which": {
2118
+ "version": "1.3.1",
2119
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2120
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2121
+ "license": "ISC",
2122
+ "dependencies": {
2123
+ "isexe": "^2.0.0"
2124
+ },
2125
+ "bin": {
2126
+ "which": "bin/which"
2127
+ }
2128
+ },
2129
+ "node_modules/wrappy": {
2130
+ "version": "1.0.2",
2131
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2132
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2133
+ "license": "ISC"
2134
+ },
2135
+ "node_modules/ws": {
2136
+ "version": "8.9.0",
2137
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz",
2138
+ "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==",
2139
+ "license": "MIT",
2140
+ "engines": {
2141
+ "node": ">=10.0.0"
2142
+ },
2143
+ "peerDependencies": {
2144
+ "bufferutil": "^4.0.1",
2145
+ "utf-8-validate": "^5.0.2"
2146
+ },
2147
+ "peerDependenciesMeta": {
2148
+ "bufferutil": {
2149
+ "optional": true
2150
+ },
2151
+ "utf-8-validate": {
2152
+ "optional": true
2153
+ }
2154
+ }
2155
+ },
2156
+ "node_modules/yauzl": {
2157
+ "version": "2.10.0",
2158
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
2159
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
2160
+ "license": "MIT",
2161
+ "dependencies": {
2162
+ "buffer-crc32": "~0.2.3",
2163
+ "fd-slicer": "~1.1.0"
2164
+ }
2165
+ },
2166
+ "node_modules/zip-stream": {
2167
+ "version": "4.1.1",
2168
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz",
2169
+ "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==",
2170
+ "license": "MIT",
2171
+ "optional": true,
2172
+ "dependencies": {
2173
+ "archiver-utils": "^3.0.4",
2174
+ "compress-commons": "^4.1.2",
2175
+ "readable-stream": "^3.6.0"
2176
+ },
2177
+ "engines": {
2178
+ "node": ">= 10"
2179
+ }
2180
+ },
2181
+ "node_modules/zip-stream/node_modules/archiver-utils": {
2182
+ "version": "3.0.4",
2183
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz",
2184
+ "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==",
2185
+ "license": "MIT",
2186
+ "optional": true,
2187
+ "dependencies": {
2188
+ "glob": "^7.2.3",
2189
+ "graceful-fs": "^4.2.0",
2190
+ "lazystream": "^1.0.0",
2191
+ "lodash.defaults": "^4.2.0",
2192
+ "lodash.difference": "^4.5.0",
2193
+ "lodash.flatten": "^4.4.0",
2194
+ "lodash.isplainobject": "^4.0.6",
2195
+ "lodash.union": "^4.6.0",
2196
+ "normalize-path": "^3.0.0",
2197
+ "readable-stream": "^3.6.0"
2198
+ },
2199
+ "engines": {
2200
+ "node": ">= 10"
2201
+ }
2202
+ }
2203
+ }
2204
+ }
package.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "7star-whatsapp-server",
3
+ "version": "1.0.0",
4
+ "description": "WhatsApp notification server for 7STAR CRM",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "start": "node index.js",
9
+ "dev": "node --watch index.js"
10
+ },
11
+ "dependencies": {
12
+ "whatsapp-web.js": "^1.25.0",
13
+ "qrcode-terminal": "^0.12.0",
14
+ "express": "^4.18.2",
15
+ "cors": "^2.8.5",
16
+ "dotenv": "^16.3.1"
17
+ }
18
+ }