devicely 2.2.14 → 2.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +1 -1
- package/lib/advanced-logger.js +515 -1
- package/lib/aiProviders.js +1 -657
- package/lib/aiProvidersConfig.js +1 -86
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/commanderService.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/encryption.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/hybridAI.js +1 -1
- package/lib/intelligentLocatorService.js +1 -1
- package/lib/lightweightAI.js +1 -1
- package/lib/localBuiltInAI.js +1 -1
- package/lib/localBuiltInAI_backup.js +1 -1
- package/lib/localBuiltInAI_simple.js +1 -1
- package/lib/locatorStrategy.js +1 -1
- package/lib/logger-demo.js +180 -1
- package/lib/logger.js +40 -1
- package/lib/quick-start-logger.js +83 -1
- package/lib/scriptLoader.js +1 -1
- package/lib/server.js +1 -1
- package/lib/tensorflowAI.js +1 -1
- package/lib/tinyAI.js +1 -1
- package/lib/universalSessionManager.js +1 -1
- package/package.json +1 -1
- package/lib/aiProviders_new.js +0 -70
package/lib/aiProviders.js
CHANGED
|
@@ -1,657 +1 @@
|
|
|
1
|
-
// AI Provider Abstraction Layer - Enhanced Multi-Provider Support
|
|
2
|
-
// Supports: OpenAI, Google Gemini, Anthropic Claude, GitHub Copilot, Groq, Cohere, Mistral AI, Local Built-In AI
|
|
3
|
-
|
|
4
|
-
const { OpenAI } = require('openai');
|
|
5
|
-
const { GoogleGenerativeAI } = require('@google/generative-ai');
|
|
6
|
-
const { Anthropic } = require('@anthropic-ai/sdk');
|
|
7
|
-
const { getPackageId, APP_MAPPINGS } = require('./appMappings');
|
|
8
|
-
|
|
9
|
-
const Logger = require('./logger');
|
|
10
|
-
const logger = new Logger('AiProviders');
|
|
11
|
-
const LocalBuiltInAI = require('./localBuiltInAI'); // NEW: Import local AI
|
|
12
|
-
|
|
13
|
-
class AIProviderManager {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.provider = process.env.AI_PROVIDER || 'local'; // Default to Local Built-In AI (faster, no dependencies)
|
|
16
|
-
this.model = process.env.AI_MODEL || null; // Auto-select default if null
|
|
17
|
-
|
|
18
|
-
// Initialize Local Built-In AI first
|
|
19
|
-
this.localAI = new LocalBuiltInAI();
|
|
20
|
-
|
|
21
|
-
this.initializeProviders();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
initializeProviders() {
|
|
25
|
-
// OpenAI
|
|
26
|
-
if (process.env.OPENAI_API_KEY) {
|
|
27
|
-
this.openai = new OpenAI({
|
|
28
|
-
apiKey: process.env.OPENAI_API_KEY,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Google Gemini
|
|
33
|
-
if (process.env.GEMINI_API_KEY) {
|
|
34
|
-
this.gemini = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Anthropic Claude
|
|
38
|
-
if (process.env.CLAUDE_API_KEY) {
|
|
39
|
-
this.claude = new Anthropic({
|
|
40
|
-
apiKey: process.env.CLAUDE_API_KEY,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// GitHub Copilot
|
|
45
|
-
if (process.env.GITHUB_TOKEN) {
|
|
46
|
-
this.copilot = new OpenAI({
|
|
47
|
-
apiKey: process.env.GITHUB_TOKEN,
|
|
48
|
-
baseURL: 'https://api.githubcopilot.com',
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Groq (ultra-fast inference)
|
|
53
|
-
if (process.env.GROQ_API_KEY) {
|
|
54
|
-
this.groq = new OpenAI({
|
|
55
|
-
apiKey: process.env.GROQ_API_KEY,
|
|
56
|
-
baseURL: 'https://api.groq.com/openai/v1',
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Cohere
|
|
61
|
-
if (process.env.COHERE_API_KEY) {
|
|
62
|
-
this.cohere = new OpenAI({
|
|
63
|
-
apiKey: process.env.COHERE_API_KEY,
|
|
64
|
-
baseURL: 'https://api.cohere.ai/v1',
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Mistral AI
|
|
69
|
-
if (process.env.MISTRAL_API_KEY) {
|
|
70
|
-
this.mistral = new OpenAI({
|
|
71
|
-
apiKey: process.env.MISTRAL_API_KEY,
|
|
72
|
-
baseURL: 'https://api.mistral.ai/v1',
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
getSystemPrompt(platform = null) {
|
|
78
|
-
// Generate app list based on platform
|
|
79
|
-
let appListSection = '';
|
|
80
|
-
|
|
81
|
-
if (platform === 'both') {
|
|
82
|
-
// Multi-platform mode - use generic app names
|
|
83
|
-
const commonApps = Object.keys(APP_MAPPINGS)
|
|
84
|
-
.filter(app => APP_MAPPINGS[app].ios && APP_MAPPINGS[app].android)
|
|
85
|
-
.slice(0, 30);
|
|
86
|
-
|
|
87
|
-
appListSection = `\n\nMULTI-PLATFORM MODE (iOS + Android devices)
|
|
88
|
-
Available apps: ${commonApps.join(', ')}
|
|
89
|
-
|
|
90
|
-
IMPORTANT: Use generic app names (e.g., "launch settings", "launch chrome")
|
|
91
|
-
The system will automatically convert to platform-specific package IDs:
|
|
92
|
-
${commonApps.slice(0, 15).map(app => `- ${app} -> iOS: ${APP_MAPPINGS[app].ios} / Android: ${APP_MAPPINGS[app].android}`).join('\n')}
|
|
93
|
-
|
|
94
|
-
Commands will execute SIMULTANEOUSLY on all devices with correct package IDs.
|
|
95
|
-
`;
|
|
96
|
-
} else if (platform) {
|
|
97
|
-
const availableApps = Object.keys(APP_MAPPINGS)
|
|
98
|
-
.filter(app => APP_MAPPINGS[app][platform])
|
|
99
|
-
.slice(0, 50);
|
|
100
|
-
|
|
101
|
-
appListSection = `\n\nPLATFORM: ${platform.toUpperCase()}
|
|
102
|
-
Available apps for ${platform}: ${availableApps.join(', ')}
|
|
103
|
-
|
|
104
|
-
APP PACKAGE MAPPINGS:
|
|
105
|
-
When user says "launch chrome", "open chrome", etc., use the correct package ID:
|
|
106
|
-
${availableApps.slice(0, 20).map(app => `- ${app} -> launch ${APP_MAPPINGS[app][platform]}`).join('\n')}
|
|
107
|
-
`;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return `You are a COMPLETE mobile automation AI. Convert ENTIRE natural language requests to executable commands.
|
|
111
|
-
|
|
112
|
-
🚨 CRITICAL: PROCESS THE COMPLETE INPUT - DON'T STOP EARLY! 🚨
|
|
113
|
-
|
|
114
|
-
Available commands (work on both iOS & Android):
|
|
115
|
-
- launch <app_name>: Launch an app using generic name (e.g., "launch settings", "launch chrome")
|
|
116
|
-
- kill <app_name>: Close/force stop an app
|
|
117
|
-
- home: Go to home screen (press home button)
|
|
118
|
-
- back: Navigate back (Android/iOS)
|
|
119
|
-
- url <url>: Open URL in browser
|
|
120
|
-
- click <text>: Click on a button or element by visible text
|
|
121
|
-
- click <x,y>: Click at specific coordinates (e.g., click 500,1000)
|
|
122
|
-
- tap <text/coords>: Same as click
|
|
123
|
-
- longpress <text/coords>: Long press on element or coordinates
|
|
124
|
-
- swipe <direction>: Swipe up/down/left/right (use for scrolling)
|
|
125
|
-
- type <text>: Type text into focused field (just the text, no "type" prefix)
|
|
126
|
-
- screenshot: Take screenshot
|
|
127
|
-
- restart: Restart device
|
|
128
|
-
- rotate <left/right/portrait/landscape>: Rotate screen
|
|
129
|
-
|
|
130
|
-
iOS-specific commands:
|
|
131
|
-
- darkmode/lightmode: Change appearance
|
|
132
|
-
- airplane <on/off>: Toggle airplane mode
|
|
133
|
-
- wifi <on/off>: Toggle WiFi
|
|
134
|
-
- volume <up/down/mute>: Control volume
|
|
135
|
-
|
|
136
|
-
Android-specific commands:
|
|
137
|
-
- getLocators: Get all interactive elements on current screen
|
|
138
|
-
- recent: Open recent apps
|
|
139
|
-
- notifications: Open notification panel
|
|
140
|
-
- quicksettings: Open quick settings
|
|
141
|
-
${appListSection}
|
|
142
|
-
|
|
143
|
-
// 🎯 ENHANCED PHRASE MAPPINGS FOR COMPLEX SENTENCES:
|
|
144
|
-
- "launch X and do Y" -> launch X, WAIT, then Y commands
|
|
145
|
-
- "open X then scroll up" -> launch X, WAIT, swipe up
|
|
146
|
-
- "go to X and search Y" -> url X, WAIT, click search, WAIT, type Y
|
|
147
|
-
- "take photo" -> launch camera, WAIT, tap "capture button"
|
|
148
|
-
- "go back and open Y" -> back, WAIT, launch Y
|
|
149
|
-
- "scroll up and tap X" -> swipe up, WAIT, click X
|
|
150
|
-
|
|
151
|
-
// 🎯 COMPLEX SENTENCE EXAMPLES:
|
|
152
|
-
"launch camera and take photo" ->
|
|
153
|
-
launch camera
|
|
154
|
-
WAIT 3000
|
|
155
|
-
screenshot
|
|
156
|
-
|
|
157
|
-
"open settings then scroll up and go back" ->
|
|
158
|
-
launch settings
|
|
159
|
-
WAIT 2000
|
|
160
|
-
swipe up
|
|
161
|
-
WAIT 1000
|
|
162
|
-
back
|
|
163
|
-
|
|
164
|
-
"go to youtube.com search for cats and take screenshot" ->
|
|
165
|
-
url https://www.youtube.com
|
|
166
|
-
WAIT 3000
|
|
167
|
-
click "search"
|
|
168
|
-
WAIT 1000
|
|
169
|
-
type "cats"
|
|
170
|
-
WAIT 1000
|
|
171
|
-
screenshot
|
|
172
|
-
|
|
173
|
-
"launch chrome go to google.com type hello press home" ->
|
|
174
|
-
launch chrome
|
|
175
|
-
WAIT 3000
|
|
176
|
-
url https://www.google.com
|
|
177
|
-
WAIT 2000
|
|
178
|
-
click "search"
|
|
179
|
-
WAIT 1000
|
|
180
|
-
type "hello"
|
|
181
|
-
WAIT 1000
|
|
182
|
-
home
|
|
183
|
-
|
|
184
|
-
Convert this COMPLETE request to commands:
|
|
185
|
-
|
|
186
|
-
// 🔍 🔍 COMMON PHRASE MAPPINGS:
|
|
187
|
-
- "scroll up" OR "scroll down" -> swipe up OR swipe down
|
|
188
|
-
- "go to <url>" OR "open <url>" OR "visit <url>" -> url https://<url>
|
|
189
|
-
- "press home" OR "go home" OR "home button" -> home
|
|
190
|
-
- "open settings" OR "launch settings" -> launch settings
|
|
191
|
-
- "open camera" OR "launch camera" -> launch camera
|
|
192
|
-
|
|
193
|
-
Examples:
|
|
194
|
-
- "open chrome" -> launch chrome
|
|
195
|
-
- "launch settings" -> launch settings
|
|
196
|
-
- "open camera" -> launch camera
|
|
197
|
-
- "scroll up" -> swipe up
|
|
198
|
-
- "scroll down" -> swipe down
|
|
199
|
-
- "click on the login button" -> click Login
|
|
200
|
-
- "tap at center of screen" -> click 540,1000
|
|
201
|
-
- "swipe down" -> swipe down
|
|
202
|
-
- "type hello world" -> hello world
|
|
203
|
-
- "take a screenshot" -> screenshot
|
|
204
|
-
- "go back" -> back
|
|
205
|
-
- "press home" -> home
|
|
206
|
-
- "go to google.com" -> url https://www.google.com
|
|
207
|
-
- "visit youtube.com" -> url https://www.youtube.com
|
|
208
|
-
- "launch Chrome and search google.com" -> launch chrome
|
|
209
|
-
WAIT 3000
|
|
210
|
-
url https://www.google.com
|
|
211
|
-
- "launch settings scroll up launch camera go to google.com press home" ->
|
|
212
|
-
launch settings
|
|
213
|
-
WAIT 3000
|
|
214
|
-
swipe up
|
|
215
|
-
WAIT 1000
|
|
216
|
-
home
|
|
217
|
-
WAIT 500
|
|
218
|
-
launch camera
|
|
219
|
-
WAIT 3000
|
|
220
|
-
home
|
|
221
|
-
WAIT 500
|
|
222
|
-
url https://www.google.com
|
|
223
|
-
WAIT 2000
|
|
224
|
-
home
|
|
225
|
-
|
|
226
|
-
Convert this request to commands: "{INPUT}"
|
|
227
|
-
|
|
228
|
-
CRITICAL RULES - YOU MUST FOLLOW THESE EXACTLY:
|
|
229
|
-
1. Output ONLY executable commands, one per line
|
|
230
|
-
2. NO explanations, NO markdown code blocks, NO comments, NO extra text
|
|
231
|
-
3. For multi-step actions, insert WAIT <milliseconds> between commands
|
|
232
|
-
4. Use GENERIC app names (e.g., "launch settings", "launch chrome", "launch camera")
|
|
233
|
-
5. Do NOT use platform-specific package IDs - use simple app names
|
|
234
|
-
6. The system will automatically convert to correct package IDs for each platform
|
|
235
|
-
5. For URLs, always use: url https://example.com
|
|
236
|
-
6. For scrolling, use: swipe up OR swipe down (never "scroll")
|
|
237
|
-
7. For text input, output ONLY the text (never include "type" prefix)
|
|
238
|
-
8. For home button, output: home (never "press home" or "go home")
|
|
239
|
-
9. WAIT timings: apps=3000ms, pages=2000ms, UI=1000ms, quick=500ms
|
|
240
|
-
10. Parse compound requests into individual steps with WAIT between each
|
|
241
|
-
|
|
242
|
-
OUTPUT FORMAT EXAMPLE:
|
|
243
|
-
launch com.apple.Preferences
|
|
244
|
-
WAIT 3000
|
|
245
|
-
swipe up
|
|
246
|
-
WAIT 1000
|
|
247
|
-
home
|
|
248
|
-
|
|
249
|
-
DO NOT include any other text. Start your response with the first command.`;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
async convertCommand(text, platform = null, providerOverride = null) {
|
|
253
|
-
const provider = providerOverride || this.provider;
|
|
254
|
-
|
|
255
|
-
try {
|
|
256
|
-
switch (provider) {
|
|
257
|
-
case 'local':
|
|
258
|
-
case 'built-in':
|
|
259
|
-
case 'builtin':
|
|
260
|
-
return await this.convertWithLocalAI(text, platform);
|
|
261
|
-
case 'openai':
|
|
262
|
-
return await this.convertWithOpenAI(text, platform);
|
|
263
|
-
case 'gemini':
|
|
264
|
-
return await this.convertWithGemini(text, platform);
|
|
265
|
-
case 'claude':
|
|
266
|
-
return await this.convertWithClaude(text, platform);
|
|
267
|
-
case 'copilot':
|
|
268
|
-
return await this.convertWithCopilot(text, platform);
|
|
269
|
-
case 'groq':
|
|
270
|
-
return await this.convertWithGroq(text, platform);
|
|
271
|
-
case 'cohere':
|
|
272
|
-
return await this.convertWithCohere(text, platform);
|
|
273
|
-
case 'mistral':
|
|
274
|
-
return await this.convertWithMistral(text, platform);
|
|
275
|
-
default:
|
|
276
|
-
throw new Error(`Unknown AI provider: ${provider}`);
|
|
277
|
-
}
|
|
278
|
-
} catch (error) {
|
|
279
|
-
logger.error(`Error with ${provider}:`, error.message);;
|
|
280
|
-
|
|
281
|
-
// 🎯 GENIUS: Fallback to Local AI if external provider fails
|
|
282
|
-
if (provider !== 'local' && this.localAI) {
|
|
283
|
-
logger.info(`🔄 Falling back to Local Built-In AI...`);;
|
|
284
|
-
try {
|
|
285
|
-
return await this.convertWithLocalAI(text, platform);
|
|
286
|
-
} catch (fallbackError) {
|
|
287
|
-
logger.error('Local AI fallback also failed:', fallbackError.message);;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
throw new Error(`AI conversion failed (${provider}): ${error.message}`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// Get model to use (from env or default)
|
|
296
|
-
getModelForProvider(provider) {
|
|
297
|
-
// If specific model is set, use it
|
|
298
|
-
if (this.model) return this.model;
|
|
299
|
-
|
|
300
|
-
// Otherwise use defaults (optimized for speed)
|
|
301
|
-
const defaults = {
|
|
302
|
-
openai: 'gpt-4o-mini', // Faster than gpt-4o
|
|
303
|
-
gemini: 'gemini-2.5-flash', // Fast and reliable
|
|
304
|
-
claude: 'claude-3-5-sonnet-20241022',
|
|
305
|
-
copilot: 'gpt-4o',
|
|
306
|
-
groq: 'llama-3.3-70b-versatile',
|
|
307
|
-
cohere: 'command-r-plus',
|
|
308
|
-
mistral: 'mistral-large-latest',
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
return defaults[provider] || 'gpt-4';
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
async convertWithOpenAI(text, platform = null) {
|
|
315
|
-
if (!this.openai) {
|
|
316
|
-
throw new Error('OpenAI not configured');
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
const model = this.getModelForProvider('openai');
|
|
320
|
-
|
|
321
|
-
const response = await this.openai.chat.completions.create({
|
|
322
|
-
model: model,
|
|
323
|
-
messages: [
|
|
324
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
325
|
-
{ role: 'user', content: text }
|
|
326
|
-
],
|
|
327
|
-
temperature: 0.3,
|
|
328
|
-
max_tokens: 500,
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
332
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
333
|
-
|
|
334
|
-
return {
|
|
335
|
-
success: true,
|
|
336
|
-
converted: cleanedResponse,
|
|
337
|
-
provider: 'OpenAI',
|
|
338
|
-
model: model,
|
|
339
|
-
confidence: 0.95,
|
|
340
|
-
processingTime: 'N/A'
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
async convertWithGemini(text, platform = null) {
|
|
345
|
-
if (!this.gemini) {
|
|
346
|
-
throw new Error('Gemini not configured');
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
let modelName = this.getModelForProvider('gemini');
|
|
350
|
-
|
|
351
|
-
try {
|
|
352
|
-
// Use default Gemini config for best accuracy
|
|
353
|
-
const model = this.gemini.getGenerativeModel({ model: modelName });
|
|
354
|
-
|
|
355
|
-
// Build prompt and sanitize for Gemini API (requires ASCII-safe ByteString)
|
|
356
|
-
const rawPrompt = this.getSystemPrompt(platform).replace('{INPUT}', text);
|
|
357
|
-
|
|
358
|
-
// Remove ALL non-ASCII characters that could cause ByteString errors
|
|
359
|
-
const sanitizedPrompt = rawPrompt
|
|
360
|
-
.replace(/[^\x00-\x7F]/g, ' ') // Replace non-ASCII with spaces
|
|
361
|
-
.replace(/\s+/g, ' ') // Normalize multiple spaces
|
|
362
|
-
.trim();
|
|
363
|
-
|
|
364
|
-
const result = await model.generateContent(sanitizedPrompt);
|
|
365
|
-
const response = await result.response;
|
|
366
|
-
let convertedText = response.text().trim();
|
|
367
|
-
|
|
368
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
369
|
-
|
|
370
|
-
return {
|
|
371
|
-
success: true,
|
|
372
|
-
converted: cleanedResponse,
|
|
373
|
-
provider: 'Google Gemini',
|
|
374
|
-
model: modelName,
|
|
375
|
-
confidence: 0.9,
|
|
376
|
-
processingTime: 'N/A'
|
|
377
|
-
};
|
|
378
|
-
} catch (error) {
|
|
379
|
-
// If the model fails, try with a faster fallback
|
|
380
|
-
if (modelName !== 'gemini-2.5-flash') {
|
|
381
|
-
logger.warn(`Gemini model ${modelName} failed, falling back to gemini-2.5-flash`);;
|
|
382
|
-
const fallbackModel = this.gemini.getGenerativeModel({ model: 'gemini-2.5-flash' });
|
|
383
|
-
const prompt = this.getSystemPrompt(platform).replace('{INPUT}', text);
|
|
384
|
-
const sanitizedPrompt = prompt.replace(/[^\x00-\x7F]/g, " ").replace(/\s+/g, ' ').trim();
|
|
385
|
-
const result = await fallbackModel.generateContent(sanitizedPrompt);
|
|
386
|
-
const response = await result.response;
|
|
387
|
-
const cleanedResponse = this.cleanAIResponse(response.text().trim());
|
|
388
|
-
|
|
389
|
-
return {
|
|
390
|
-
success: true,
|
|
391
|
-
converted: cleanedResponse,
|
|
392
|
-
provider: 'Google Gemini',
|
|
393
|
-
model: 'gemini-2.5-flash',
|
|
394
|
-
confidence: 0.85,
|
|
395
|
-
processingTime: 'N/A'
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
throw error;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
async convertWithCopilot(text, platform = null) {
|
|
403
|
-
if (!this.copilot) {
|
|
404
|
-
throw new Error('GitHub Copilot not configured');
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
const model = this.getModelForProvider('copilot');
|
|
408
|
-
|
|
409
|
-
const response = await this.copilot.chat.completions.create({
|
|
410
|
-
model: model,
|
|
411
|
-
messages: [
|
|
412
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
413
|
-
{ role: 'user', content: text }
|
|
414
|
-
],
|
|
415
|
-
temperature: 0.3,
|
|
416
|
-
max_tokens: 500,
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
420
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
421
|
-
|
|
422
|
-
return convertedText;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
async convertWithClaude(text, platform = null) {
|
|
426
|
-
if (!this.claude) {
|
|
427
|
-
throw new Error('Claude not configured');
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
const model = this.getModelForProvider('claude');
|
|
431
|
-
const systemPrompt = this.getSystemPrompt(platform);
|
|
432
|
-
|
|
433
|
-
const response = await this.claude.messages.create({
|
|
434
|
-
model: model,
|
|
435
|
-
max_tokens: 500,
|
|
436
|
-
system: systemPrompt,
|
|
437
|
-
messages: [
|
|
438
|
-
{ role: 'user', content: text }
|
|
439
|
-
],
|
|
440
|
-
temperature: 0.3,
|
|
441
|
-
});
|
|
442
|
-
|
|
443
|
-
let convertedText = response.content[0].text.trim();
|
|
444
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
445
|
-
|
|
446
|
-
return {
|
|
447
|
-
success: true,
|
|
448
|
-
converted: cleanedResponse,
|
|
449
|
-
provider: 'Anthropic Claude',
|
|
450
|
-
model: model,
|
|
451
|
-
confidence: 0.93,
|
|
452
|
-
processingTime: 'N/A'
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
async convertWithGroq(text, platform = null) {
|
|
457
|
-
if (!this.groq) {
|
|
458
|
-
throw new Error('Groq not configured');
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
const model = this.getModelForProvider('groq');
|
|
462
|
-
|
|
463
|
-
const response = await this.groq.chat.completions.create({
|
|
464
|
-
model: model,
|
|
465
|
-
messages: [
|
|
466
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
467
|
-
{ role: 'user', content: text }
|
|
468
|
-
],
|
|
469
|
-
temperature: 0.3,
|
|
470
|
-
max_tokens: 500,
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
474
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
475
|
-
|
|
476
|
-
return {
|
|
477
|
-
success: true,
|
|
478
|
-
converted: cleanedResponse,
|
|
479
|
-
provider: 'Groq',
|
|
480
|
-
model: model,
|
|
481
|
-
confidence: 0.92,
|
|
482
|
-
processingTime: 'N/A'
|
|
483
|
-
};
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
async convertWithCohere(text, platform = null) {
|
|
487
|
-
if (!this.cohere) {
|
|
488
|
-
throw new Error('Cohere not configured');
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
const model = this.getModelForProvider('cohere');
|
|
492
|
-
|
|
493
|
-
const response = await this.cohere.chat.completions.create({
|
|
494
|
-
model: model,
|
|
495
|
-
messages: [
|
|
496
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
497
|
-
{ role: 'user', content: text }
|
|
498
|
-
],
|
|
499
|
-
temperature: 0.3,
|
|
500
|
-
max_tokens: 500,
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
504
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
505
|
-
|
|
506
|
-
return convertedText;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
async convertWithMistral(text, platform = null) {
|
|
510
|
-
if (!this.mistral) {
|
|
511
|
-
throw new Error('Mistral AI not configured');
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
const model = this.getModelForProvider('mistral');
|
|
515
|
-
|
|
516
|
-
const response = await this.mistral.chat.completions.create({
|
|
517
|
-
model: model,
|
|
518
|
-
messages: [
|
|
519
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
520
|
-
{ role: 'user', content: text }
|
|
521
|
-
],
|
|
522
|
-
temperature: 0.3,
|
|
523
|
-
max_tokens: 500,
|
|
524
|
-
});
|
|
525
|
-
|
|
526
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
527
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
528
|
-
|
|
529
|
-
return convertedText;
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
// Clean up AI responses - remove markdown, explanations, etc.
|
|
533
|
-
cleanAIResponse(text) {
|
|
534
|
-
// Remove markdown code blocks
|
|
535
|
-
text = text.replace(/```[\s\S]*?```/g, '').trim();
|
|
536
|
-
text = text.replace(/```/g, '').trim();
|
|
537
|
-
|
|
538
|
-
// Remove any lines that look like explanations (starting with explanatory text)
|
|
539
|
-
const lines = text.split('\n');
|
|
540
|
-
const cleanedLines = lines.filter(line => {
|
|
541
|
-
const trimmed = line.trim();
|
|
542
|
-
if (!trimmed) return false;
|
|
543
|
-
|
|
544
|
-
// Keep lines that are commands or WAIT
|
|
545
|
-
if (trimmed.startsWith('launch ')) return true;
|
|
546
|
-
if (trimmed.startsWith('kill ')) return true;
|
|
547
|
-
if (trimmed === 'home') return true;
|
|
548
|
-
if (trimmed === 'back') return true;
|
|
549
|
-
if (trimmed.startsWith('url ')) return true;
|
|
550
|
-
if (trimmed.startsWith('click ')) return true;
|
|
551
|
-
if (trimmed.startsWith('tap ')) return true;
|
|
552
|
-
if (trimmed.startsWith('longpress ')) return true;
|
|
553
|
-
if (trimmed.startsWith('swipe ')) return true;
|
|
554
|
-
if (trimmed.startsWith('WAIT ')) return true;
|
|
555
|
-
if (trimmed.startsWith('screenshot')) return true;
|
|
556
|
-
if (trimmed.startsWith('restart')) return true;
|
|
557
|
-
if (trimmed.startsWith('rotate ')) return true;
|
|
558
|
-
if (trimmed.startsWith('darkmode')) return true;
|
|
559
|
-
if (trimmed.startsWith('lightmode')) return true;
|
|
560
|
-
if (trimmed.startsWith('airplane ')) return true;
|
|
561
|
-
if (trimmed.startsWith('wifi ')) return true;
|
|
562
|
-
if (trimmed.startsWith('volume ')) return true;
|
|
563
|
-
if (trimmed === 'getLocators') return true;
|
|
564
|
-
if (trimmed === 'recent') return true;
|
|
565
|
-
if (trimmed === 'notifications') return true;
|
|
566
|
-
if (trimmed === 'quicksettings') return true;
|
|
567
|
-
|
|
568
|
-
// If it doesn't start with a known command, it might be text to type
|
|
569
|
-
// Check if previous line was a command that expects text input
|
|
570
|
-
return true; // For now, include it (could be text to type)
|
|
571
|
-
});
|
|
572
|
-
|
|
573
|
-
return cleanedLines.join('\n').trim();
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
getAvailableProviders() {
|
|
577
|
-
const available = [];
|
|
578
|
-
|
|
579
|
-
if (this.openai) available.push({ id: 'openai', name: 'OpenAI', icon: '🤖' });
|
|
580
|
-
if (this.gemini) available.push({ id: 'gemini', name: 'Google Gemini', icon: '✨' });
|
|
581
|
-
if (this.claude) available.push({ id: 'claude', name: 'Anthropic Claude', icon: '🧠' });
|
|
582
|
-
if (this.copilot) available.push({ id: 'copilot', name: 'GitHub Copilot', icon: '🐙' });
|
|
583
|
-
if (this.groq) available.push({ id: 'groq', name: 'Groq', icon: '⚡' });
|
|
584
|
-
if (this.cohere) available.push({ id: 'cohere', name: 'Cohere', icon: '🌊' });
|
|
585
|
-
if (this.mistral) available.push({ id: 'mistral', name: 'Mistral AI', icon: '🌬️' });
|
|
586
|
-
|
|
587
|
-
return available;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
setProvider(provider, model = null) {
|
|
591
|
-
const available = this.getAvailableProviders().map(p => p.id);
|
|
592
|
-
if (available.includes(provider)) {
|
|
593
|
-
this.provider = provider;
|
|
594
|
-
if (model) {
|
|
595
|
-
this.model = model;
|
|
596
|
-
}
|
|
597
|
-
return true;
|
|
598
|
-
}
|
|
599
|
-
return false;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
getCurrentProvider() {
|
|
603
|
-
return {
|
|
604
|
-
id: this.provider,
|
|
605
|
-
name: this.getProviderName(this.provider),
|
|
606
|
-
model: this.model || this.getModelForProvider(this.provider),
|
|
607
|
-
available: this.getAvailableProviders(),
|
|
608
|
-
};
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
getProviderName(providerId) {
|
|
612
|
-
const names = {
|
|
613
|
-
local: 'Local Built-In AI',
|
|
614
|
-
'built-in': 'Local Built-In AI',
|
|
615
|
-
builtin: 'Local Built-In AI',
|
|
616
|
-
openai: 'OpenAI',
|
|
617
|
-
gemini: 'Google Gemini',
|
|
618
|
-
claude: 'Anthropic Claude',
|
|
619
|
-
copilot: 'GitHub Copilot',
|
|
620
|
-
groq: 'Groq',
|
|
621
|
-
cohere: 'Cohere',
|
|
622
|
-
mistral: 'Mistral AI',
|
|
623
|
-
};
|
|
624
|
-
return names[providerId] || 'Unknown';
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
/**
|
|
628
|
-
* 🤖 LOCAL BUILT-IN AI CONVERSION METHOD
|
|
629
|
-
* Zero-cost, offline, lightning-fast natural language processing
|
|
630
|
-
*/
|
|
631
|
-
async convertWithLocalAI(text, platform = null) {
|
|
632
|
-
logger.info(`🤖 Converting with Local Built-In AI: "${text}"`);;
|
|
633
|
-
|
|
634
|
-
try {
|
|
635
|
-
const devices = platform ? [{ platform }] : [];
|
|
636
|
-
const result = await this.localAI.convertCommand(text, devices);
|
|
637
|
-
|
|
638
|
-
if (result.success) {
|
|
639
|
-
return {
|
|
640
|
-
converted: result.converted,
|
|
641
|
-
provider: 'Local Built-In AI',
|
|
642
|
-
confidence: result.confidence,
|
|
643
|
-
processingTime: result.processingTime,
|
|
644
|
-
model: 'built-in-patterns',
|
|
645
|
-
cost: 0 // Always free!
|
|
646
|
-
};
|
|
647
|
-
} else {
|
|
648
|
-
throw new Error(result.error || 'Local AI conversion failed');
|
|
649
|
-
}
|
|
650
|
-
} catch (error) {
|
|
651
|
-
logger.error('Local AI conversion error:', error.message);;
|
|
652
|
-
throw error;
|
|
653
|
-
}
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
module.exports = AIProviderManager;
|
|
1
|
+
const _0x1ea569=_0x1346;(function(_0x269cfb,_0xef727e){const _0x4a1f86=_0x1346,_0x3e7217=_0x269cfb();while(!![]){try{const _0xa652e2=parseInt(_0x4a1f86(0x22a))/0x1+parseInt(_0x4a1f86(0x234))/0x2+parseInt(_0x4a1f86(0x180))/0x3+parseInt(_0x4a1f86(0x1d4))/0x4+-parseInt(_0x4a1f86(0x15f))/0x5+parseInt(_0x4a1f86(0x236))/0x6+-parseInt(_0x4a1f86(0x1e8))/0x7*(parseInt(_0x4a1f86(0x1cb))/0x8);if(_0xa652e2===_0xef727e)break;else _0x3e7217['push'](_0x3e7217['shift']());}catch(_0x42d6f2){_0x3e7217['push'](_0x3e7217['shift']());}}}(_0x52cf,0x97624));const {OpenAI}=require(_0x1ea569(0x230)),{GoogleGenerativeAI}=require(_0x1ea569(0x1ff)),{Anthropic}=require(_0x1ea569(0x192)),{getPackageId,APP_MAPPINGS}=require('./appMappings'),Logger=require(_0x1ea569(0x267)),logger=new Logger(_0x1ea569(0x16c)),LocalBuiltInAI=require(_0x1ea569(0x1cd));class AIProviderManager{constructor(){const _0x5b3895=_0x1ea569;this[_0x5b3895(0x1c9)]=process.env.AI_PROVIDER||_0x5b3895(0x161),this[_0x5b3895(0x194)]=process.env.AI_MODEL||null,this[_0x5b3895(0x25c)]=new LocalBuiltInAI(),this[_0x5b3895(0x218)]();}[_0x1ea569(0x218)](){const _0x59b9c1=_0x1ea569,_0x3ebe5f={};_0x3ebe5f[_0x59b9c1(0x1c6)]='built-in-patterns',_0x3ebe5f[_0x59b9c1(0x20d)]=function(_0x4bea31,_0x2d65fe){return _0x4bea31===_0x2d65fe;},_0x3ebe5f[_0x59b9c1(0x178)]=_0x59b9c1(0x1fb),_0x3ebe5f[_0x59b9c1(0x130)]=_0x59b9c1(0x246),_0x3ebe5f[_0x59b9c1(0x216)]=_0x59b9c1(0x19f),_0x3ebe5f[_0x59b9c1(0x271)]=_0x59b9c1(0x166),_0x3ebe5f['qIsgc']=_0x59b9c1(0x142);const _0x4cef21=_0x3ebe5f;if(process.env.OPENAI_API_KEY){const _0x31d99e={};_0x31d99e['apiKey']=process.env.OPENAI_API_KEY,this[_0x59b9c1(0x230)]=new OpenAI(_0x31d99e);}process.env.GEMINI_API_KEY&&(this['gemini']=new GoogleGenerativeAI(process.env.GEMINI_API_KEY));if(process.env.CLAUDE_API_KEY){const _0xd4ba76={};_0xd4ba76[_0x59b9c1(0x242)]=process.env.CLAUDE_API_KEY,this[_0x59b9c1(0x157)]=new Anthropic(_0xd4ba76);}if(process.env.GITHUB_TOKEN){if(_0x4cef21['Axelz'](_0x4cef21[_0x59b9c1(0x178)],_0x4cef21[_0x59b9c1(0x178)])){const _0xc5a6fd={};_0xc5a6fd[_0x59b9c1(0x242)]=process.env.GITHUB_TOKEN,_0xc5a6fd['baseURL']=_0x4cef21[_0x59b9c1(0x130)],this['copilot']=new OpenAI(_0xc5a6fd);}else{const _0x454e2d={};return _0x454e2d[_0x59b9c1(0x1eb)]=_0x396d9d['converted'],_0x454e2d[_0x59b9c1(0x1c9)]=_0x59b9c1(0x1d0),_0x454e2d[_0x59b9c1(0x1b7)]=_0x7f34f6[_0x59b9c1(0x1b7)],_0x454e2d[_0x59b9c1(0x1df)]=_0x434153[_0x59b9c1(0x1df)],_0x454e2d['model']=_0x4cef21[_0x59b9c1(0x1c6)],_0x454e2d[_0x59b9c1(0x1be)]=0x0,_0x454e2d;}}if(process.env.GROQ_API_KEY){const _0x7dc443={};_0x7dc443[_0x59b9c1(0x242)]=process.env.GROQ_API_KEY,_0x7dc443[_0x59b9c1(0x156)]=_0x4cef21['HoiDQ'],this[_0x59b9c1(0x132)]=new OpenAI(_0x7dc443);}if(process.env.COHERE_API_KEY){if(_0x4cef21['PtSGH']!==_0x4cef21[_0x59b9c1(0x271)]){const _0x5877be=this['getAvailableProviders']()[_0x59b9c1(0x13e)](_0x5793a2=>_0x5793a2['id']);if(_0x5877be[_0x59b9c1(0x22c)](_0x3d71dc))return this[_0x59b9c1(0x1c9)]=_0x54a270,_0x52623c&&(this[_0x59b9c1(0x194)]=_0x430725),!![];return![];}else{const _0x968632={};_0x968632[_0x59b9c1(0x242)]=process.env.COHERE_API_KEY,_0x968632[_0x59b9c1(0x156)]=_0x59b9c1(0x263),this['cohere']=new OpenAI(_0x968632);}}if(process.env.MISTRAL_API_KEY){const _0x2b38fc={};_0x2b38fc[_0x59b9c1(0x242)]=process.env.MISTRAL_API_KEY,_0x2b38fc['baseURL']=_0x4cef21['qIsgc'],this['mistral']=new OpenAI(_0x2b38fc);}}['getSystemPrompt'](_0x464184=null){const _0x2b5554=_0x1ea569;let _0x3b8e65='';if(_0x464184===_0x2b5554(0x1b8)){const _0x7a69b3=Object[_0x2b5554(0x188)](APP_MAPPINGS)[_0x2b5554(0x1bd)](_0x4bb37b=>APP_MAPPINGS[_0x4bb37b][_0x2b5554(0x21a)]&&APP_MAPPINGS[_0x4bb37b][_0x2b5554(0x1bf)])['slice'](0x0,0x1e);_0x3b8e65=_0x2b5554(0x144)+_0x7a69b3[_0x2b5554(0x168)](',\x20')+_0x2b5554(0x1a5)+_0x7a69b3[_0x2b5554(0x1d7)](0x0,0xf)[_0x2b5554(0x13e)](_0x5cbf1f=>'-\x20'+_0x5cbf1f+_0x2b5554(0x272)+APP_MAPPINGS[_0x5cbf1f]['ios']+_0x2b5554(0x1f1)+APP_MAPPINGS[_0x5cbf1f][_0x2b5554(0x1bf)])['join']('\x0a')+_0x2b5554(0x16d);}else{if(_0x464184){const _0x5e8e32=Object[_0x2b5554(0x188)](APP_MAPPINGS)[_0x2b5554(0x1bd)](_0x41b8d6=>APP_MAPPINGS[_0x41b8d6][_0x464184])[_0x2b5554(0x1d7)](0x0,0x32);_0x3b8e65=_0x2b5554(0x1f6)+_0x464184[_0x2b5554(0x1fc)]()+'\x0aAvailable\x20apps\x20for\x20'+_0x464184+':\x20'+_0x5e8e32[_0x2b5554(0x168)](',\x20')+_0x2b5554(0x1f0)+_0x5e8e32[_0x2b5554(0x1d7)](0x0,0x14)[_0x2b5554(0x13e)](_0xc30be3=>'-\x20'+_0xc30be3+_0x2b5554(0x210)+APP_MAPPINGS[_0xc30be3][_0x464184])[_0x2b5554(0x168)]('\x0a')+'\x0a';}}return _0x2b5554(0x1a3)+_0x3b8e65+_0x2b5554(0x1a0);}async['convertCommand'](_0x390020,_0x4b5dae=null,_0x86e37e=null){const _0x14f6f9=_0x1ea569,_0x4daa68={};_0x4daa68[_0x14f6f9(0x1ca)]=_0x14f6f9(0x182),_0x4daa68[_0x14f6f9(0x187)]=_0x14f6f9(0x1ec),_0x4daa68['bfnXU']=function(_0x30639e,_0x628f6c){return _0x30639e===_0x628f6c;},_0x4daa68[_0x14f6f9(0x239)]=_0x14f6f9(0x21f),_0x4daa68[_0x14f6f9(0x1c2)]=_0x14f6f9(0x255),_0x4daa68['Ozdfu']=_0x14f6f9(0x1d1),_0x4daa68[_0x14f6f9(0x23c)]=_0x14f6f9(0x154),_0x4daa68['dhxma']=_0x14f6f9(0x24a),_0x4daa68[_0x14f6f9(0x21b)]=_0x14f6f9(0x157),_0x4daa68[_0x14f6f9(0x17e)]='copilot',_0x4daa68[_0x14f6f9(0x202)]=_0x14f6f9(0x132),_0x4daa68[_0x14f6f9(0x14e)]=_0x14f6f9(0x1e9),_0x4daa68['WqzjI']=_0x14f6f9(0x262),_0x4daa68['fZZAC']=function(_0x49923a,_0x27da0a){return _0x49923a!==_0x27da0a;},_0x4daa68[_0x14f6f9(0x17b)]=_0x14f6f9(0x261),_0x4daa68[_0x14f6f9(0x26f)]=_0x14f6f9(0x185),_0x4daa68[_0x14f6f9(0x252)]=function(_0x2dbb8e,_0x2e5afa){return _0x2dbb8e===_0x2e5afa;},_0x4daa68['bDidM']=_0x14f6f9(0x189);const _0x348fe6=_0x4daa68,_0x189f79=_0x86e37e||this[_0x14f6f9(0x1c9)];try{if(_0x348fe6['bfnXU'](_0x348fe6[_0x14f6f9(0x239)],_0x348fe6[_0x14f6f9(0x1c2)])){_0x577ffa['error'](_0x348fe6[_0x14f6f9(0x1ca)],_0x101d95['message']);;}else switch(_0x189f79){case _0x14f6f9(0x161):case _0x348fe6[_0x14f6f9(0x23b)]:case _0x348fe6[_0x14f6f9(0x23c)]:return await this[_0x14f6f9(0x17c)](_0x390020,_0x4b5dae);case _0x14f6f9(0x230):return await this[_0x14f6f9(0x131)](_0x390020,_0x4b5dae);case _0x348fe6['dhxma']:return await this[_0x14f6f9(0x141)](_0x390020,_0x4b5dae);case _0x348fe6[_0x14f6f9(0x21b)]:return await this['convertWithClaude'](_0x390020,_0x4b5dae);case _0x348fe6[_0x14f6f9(0x17e)]:return await this[_0x14f6f9(0x153)](_0x390020,_0x4b5dae);case _0x348fe6[_0x14f6f9(0x202)]:return await this[_0x14f6f9(0x26d)](_0x390020,_0x4b5dae);case _0x348fe6[_0x14f6f9(0x14e)]:return await this[_0x14f6f9(0x167)](_0x390020,_0x4b5dae);case _0x348fe6[_0x14f6f9(0x163)]:return await this[_0x14f6f9(0x237)](_0x390020,_0x4b5dae);default:throw new Error(_0x14f6f9(0x1a1)+_0x189f79);}}catch(_0x5e90d4){logger[_0x14f6f9(0x1c3)](_0x14f6f9(0x145)+_0x189f79+':',_0x5e90d4['message']);;if(_0x348fe6[_0x14f6f9(0x1e2)](_0x189f79,_0x14f6f9(0x161))&&this[_0x14f6f9(0x25c)]){logger['info'](_0x14f6f9(0x1e6));;try{if(_0x348fe6[_0x14f6f9(0x26a)](_0x348fe6[_0x14f6f9(0x17b)],_0x348fe6[_0x14f6f9(0x26f)]))throw new _0x28f221(_0x14f6f9(0x176));else return await this[_0x14f6f9(0x17c)](_0x390020,_0x4b5dae);}catch(_0x40c3c4){if(_0x348fe6[_0x14f6f9(0x252)](_0x348fe6[_0x14f6f9(0x177)],_0x14f6f9(0x199)))throw new _0x23841e(_0x348fe6['hmcCW']);else{logger[_0x14f6f9(0x1c3)](_0x348fe6[_0x14f6f9(0x1ca)],_0x40c3c4[_0x14f6f9(0x209)]);;}}}throw new Error('AI\x20conversion\x20failed\x20('+_0x189f79+_0x14f6f9(0x24e)+_0x5e90d4['message']);}}[_0x1ea569(0x22d)](_0x53d4a4){const _0x38c74b=_0x1ea569,_0x2caeaa={};_0x2caeaa['rPLVC']=_0x38c74b(0x268),_0x2caeaa['TtKBN']='gemini-2.5-flash',_0x2caeaa['rGOoB']='claude-3-5-sonnet-20241022',_0x2caeaa['ZYVdV']=_0x38c74b(0x1a9),_0x2caeaa[_0x38c74b(0x24d)]=_0x38c74b(0x175),_0x2caeaa[_0x38c74b(0x15d)]=_0x38c74b(0x1e3);const _0x18a22e=_0x2caeaa;if(this['model'])return this[_0x38c74b(0x194)];const _0x2553ff={};_0x2553ff['openai']=_0x18a22e[_0x38c74b(0x13d)],_0x2553ff[_0x38c74b(0x24a)]=_0x18a22e['TtKBN'],_0x2553ff[_0x38c74b(0x157)]=_0x18a22e[_0x38c74b(0x20b)],_0x2553ff[_0x38c74b(0x223)]=_0x18a22e[_0x38c74b(0x238)],_0x2553ff[_0x38c74b(0x132)]=_0x38c74b(0x23e),_0x2553ff[_0x38c74b(0x1e9)]=_0x18a22e[_0x38c74b(0x24d)],_0x2553ff[_0x38c74b(0x262)]=_0x18a22e[_0x38c74b(0x15d)];const _0xad03bc=_0x2553ff;return _0xad03bc[_0x53d4a4]||_0x38c74b(0x1e5);}async[_0x1ea569(0x131)](_0x1bfd16,_0x32cf39=null){const _0x1714bf=_0x1ea569,_0x2bf4db={};_0x2bf4db[_0x1714bf(0x134)]='OpenAI\x20not\x20configured',_0x2bf4db['hJCwp']=_0x1714bf(0x230),_0x2bf4db[_0x1714bf(0x25f)]=_0x1714bf(0x133),_0x2bf4db[_0x1714bf(0x1ea)]=_0x1714bf(0x25d),_0x2bf4db[_0x1714bf(0x1a8)]=_0x1714bf(0x18c);const _0x3fbce3=_0x2bf4db;if(!this['openai'])throw new Error(_0x3fbce3['nDdhV']);const _0x31e70c=this['getModelForProvider'](_0x3fbce3[_0x1714bf(0x1f2)]),_0x397162=await this[_0x1714bf(0x230)][_0x1714bf(0x228)]['completions'][_0x1714bf(0x1b2)]({'model':_0x31e70c,'messages':[{'role':_0x3fbce3[_0x1714bf(0x25f)],'content':this[_0x1714bf(0x19a)](_0x32cf39)},{'role':_0x3fbce3[_0x1714bf(0x1ea)],'content':_0x1bfd16}],'temperature':0.3,'max_tokens':0x1f4});let _0x783098=_0x397162[_0x1714bf(0x1db)][0x0]['message'][_0x1714bf(0x148)][_0x1714bf(0x18f)]();const _0x55c186=this[_0x1714bf(0x150)](_0x783098),_0x20df32={};return _0x20df32[_0x1714bf(0x217)]=!![],_0x20df32[_0x1714bf(0x1eb)]=_0x55c186,_0x20df32['provider']='OpenAI',_0x20df32[_0x1714bf(0x194)]=_0x31e70c,_0x20df32[_0x1714bf(0x1b7)]=0.95,_0x20df32[_0x1714bf(0x1df)]=_0x3fbce3[_0x1714bf(0x1a8)],_0x20df32;}async[_0x1ea569(0x141)](_0x440c8b,_0x35048a=null){const _0x2cb3f0=_0x1ea569,_0x2a1c5a={};_0x2a1c5a[_0x2cb3f0(0x1f5)]=_0x2cb3f0(0x1d0),_0x2a1c5a[_0x2cb3f0(0x241)]=_0x2cb3f0(0x222),_0x2a1c5a[_0x2cb3f0(0x225)]=_0x2cb3f0(0x1b1),_0x2a1c5a[_0x2cb3f0(0x14f)]=_0x2cb3f0(0x179),_0x2a1c5a[_0x2cb3f0(0x23f)]='Cohere',_0x2a1c5a[_0x2cb3f0(0x1e1)]=_0x2cb3f0(0x165),_0x2a1c5a[_0x2cb3f0(0x195)]=_0x2cb3f0(0x1de),_0x2a1c5a[_0x2cb3f0(0x250)]=_0x2cb3f0(0x161),_0x2a1c5a[_0x2cb3f0(0x253)]=function(_0x414195,_0x3de75c){return _0x414195===_0x3de75c;},_0x2a1c5a[_0x2cb3f0(0x273)]=_0x2cb3f0(0x20f),_0x2a1c5a['cIkCy']='rEpni',_0x2a1c5a[_0x2cb3f0(0x201)]=_0x2cb3f0(0x176),_0x2a1c5a[_0x2cb3f0(0x1dc)]='gemini',_0x2a1c5a[_0x2cb3f0(0x1b6)]=_0x2cb3f0(0x235),_0x2a1c5a[_0x2cb3f0(0x227)]=_0x2cb3f0(0x18c),_0x2a1c5a[_0x2cb3f0(0x1d9)]=function(_0x3326da,_0x22e1ae){return _0x3326da!==_0x22e1ae;},_0x2a1c5a[_0x2cb3f0(0x191)]='nZUmN',_0x2a1c5a[_0x2cb3f0(0x137)]=_0x2cb3f0(0x136);const _0x27a31e=_0x2a1c5a;if(!this['gemini']){if(_0x27a31e[_0x2cb3f0(0x253)](_0x27a31e['uoUKM'],_0x27a31e[_0x2cb3f0(0x18e)])){const _0x59f257={};_0x59f257[_0x2cb3f0(0x161)]=_0x27a31e['pdswB'],_0x59f257['built-in']=_0x27a31e['pdswB'],_0x59f257['builtin']=_0x27a31e[_0x2cb3f0(0x1f5)],_0x59f257['openai']=_0x27a31e[_0x2cb3f0(0x241)],_0x59f257['gemini']=_0x27a31e[_0x2cb3f0(0x225)],_0x59f257[_0x2cb3f0(0x157)]=_0x2cb3f0(0x184),_0x59f257[_0x2cb3f0(0x223)]=_0x2cb3f0(0x24f),_0x59f257[_0x2cb3f0(0x132)]=_0x27a31e['IduTl'],_0x59f257[_0x2cb3f0(0x1e9)]=_0x27a31e[_0x2cb3f0(0x23f)],_0x59f257[_0x2cb3f0(0x262)]=_0x27a31e[_0x2cb3f0(0x1e1)];const _0x4f0e48=_0x59f257;return _0x4f0e48[_0x4cc9b2]||_0x27a31e[_0x2cb3f0(0x195)];}else throw new Error(_0x27a31e[_0x2cb3f0(0x201)]);}let _0x4d6570=this[_0x2cb3f0(0x22d)](_0x27a31e[_0x2cb3f0(0x1dc)]);try{const _0x5ef48c={};_0x5ef48c[_0x2cb3f0(0x194)]=_0x4d6570;const _0xa6c029=this[_0x2cb3f0(0x24a)][_0x2cb3f0(0x26b)](_0x5ef48c),_0x225817=this[_0x2cb3f0(0x19a)](_0x35048a)[_0x2cb3f0(0x211)](_0x27a31e[_0x2cb3f0(0x1b6)],_0x440c8b),_0x4875eb=_0x225817[_0x2cb3f0(0x211)](/[^\x00-\x7F]/g,'\x20')['replace'](/\s+/g,'\x20')[_0x2cb3f0(0x18f)](),_0x29d6eb=await _0xa6c029[_0x2cb3f0(0x254)](_0x4875eb),_0x19a23e=await _0x29d6eb['response'];let _0x2c429e=_0x19a23e[_0x2cb3f0(0x1ef)]()[_0x2cb3f0(0x18f)]();const _0x4871be=this['cleanAIResponse'](_0x2c429e),_0x3f112b={};return _0x3f112b[_0x2cb3f0(0x217)]=!![],_0x3f112b[_0x2cb3f0(0x1eb)]=_0x4871be,_0x3f112b[_0x2cb3f0(0x1c9)]='Google\x20Gemini',_0x3f112b[_0x2cb3f0(0x194)]=_0x4d6570,_0x3f112b[_0x2cb3f0(0x1b7)]=0.9,_0x3f112b[_0x2cb3f0(0x1df)]=_0x27a31e[_0x2cb3f0(0x227)],_0x3f112b;}catch(_0x2645f3){if(_0x27a31e[_0x2cb3f0(0x1d9)](_0x4d6570,_0x2cb3f0(0x136))){if('MURMh'!==_0x27a31e[_0x2cb3f0(0x191)]){logger[_0x2cb3f0(0x160)](_0x2cb3f0(0x17f)+_0x4d6570+_0x2cb3f0(0x1c5));;const _0x1563a5={};_0x1563a5[_0x2cb3f0(0x194)]=_0x27a31e[_0x2cb3f0(0x137)];const _0x9ecbdf=this[_0x2cb3f0(0x24a)][_0x2cb3f0(0x26b)](_0x1563a5),_0x7ab21c=this['getSystemPrompt'](_0x35048a)[_0x2cb3f0(0x211)](_0x27a31e['YFnOJ'],_0x440c8b),_0x5cc15d=_0x7ab21c['replace'](/[^\x00-\x7F]/g,'\x20')['replace'](/\s+/g,'\x20')[_0x2cb3f0(0x18f)](),_0x1c2491=await _0x9ecbdf[_0x2cb3f0(0x254)](_0x5cc15d),_0x36ec37=await _0x1c2491[_0x2cb3f0(0x260)],_0x33d404=this[_0x2cb3f0(0x150)](_0x36ec37[_0x2cb3f0(0x1ef)]()[_0x2cb3f0(0x18f)]()),_0x50d7fe={};return _0x50d7fe[_0x2cb3f0(0x217)]=!![],_0x50d7fe[_0x2cb3f0(0x1eb)]=_0x33d404,_0x50d7fe[_0x2cb3f0(0x1c9)]=_0x27a31e[_0x2cb3f0(0x225)],_0x50d7fe[_0x2cb3f0(0x194)]=_0x27a31e[_0x2cb3f0(0x137)],_0x50d7fe[_0x2cb3f0(0x1b7)]=0.85,_0x50d7fe[_0x2cb3f0(0x1df)]=_0x27a31e[_0x2cb3f0(0x227)],_0x50d7fe;}else this[_0x2cb3f0(0x1c9)]=_0x5100ca.env.AI_PROVIDER||nUZrYE[_0x2cb3f0(0x250)],this[_0x2cb3f0(0x194)]=_0x375283.env.AI_MODEL||null,this[_0x2cb3f0(0x25c)]=new _0x2cb922(),this[_0x2cb3f0(0x218)]();}throw _0x2645f3;}}async[_0x1ea569(0x153)](_0x532d86,_0xbb44e0=null){const _0xfefcf1=_0x1ea569,_0x3b514d={};_0x3b514d[_0xfefcf1(0x1ae)]=_0xfefcf1(0x15a),_0x3b514d[_0xfefcf1(0x159)]=_0xfefcf1(0x223),_0x3b514d[_0xfefcf1(0x1c1)]=_0xfefcf1(0x25d);const _0x351799=_0x3b514d;if(!this[_0xfefcf1(0x223)])throw new Error(_0x351799['QdJxF']);const _0x551300=this[_0xfefcf1(0x22d)](_0x351799[_0xfefcf1(0x159)]),_0xf79e39={};_0xf79e39['role']=_0x351799[_0xfefcf1(0x1c1)],_0xf79e39[_0xfefcf1(0x148)]=_0x532d86;const _0x35166e=await this[_0xfefcf1(0x223)]['chat'][_0xfefcf1(0x274)][_0xfefcf1(0x1b2)]({'model':_0x551300,'messages':[{'role':'system','content':this[_0xfefcf1(0x19a)](_0xbb44e0)},_0xf79e39],'temperature':0.3,'max_tokens':0x1f4});let _0x160b2a=_0x35166e[_0xfefcf1(0x1db)][0x0][_0xfefcf1(0x209)][_0xfefcf1(0x148)][_0xfefcf1(0x18f)]();return _0x160b2a=this[_0xfefcf1(0x150)](_0x160b2a),_0x160b2a;}async[_0x1ea569(0x138)](_0xa2fdb1,_0x54de08=null){const _0x1e4dcf=_0x1ea569,_0xb2d543={};_0xb2d543[_0x1e4dcf(0x257)]=_0x1e4dcf(0x231),_0xb2d543[_0x1e4dcf(0x22f)]='claude',_0xb2d543[_0x1e4dcf(0x1b9)]='user',_0xb2d543[_0x1e4dcf(0x1f7)]='Anthropic\x20Claude',_0xb2d543['JtMYL']=_0x1e4dcf(0x18c);const _0x1973de=_0xb2d543;if(!this[_0x1e4dcf(0x157)])throw new Error(_0x1973de[_0x1e4dcf(0x257)]);const _0x43f516=this[_0x1e4dcf(0x22d)](_0x1973de[_0x1e4dcf(0x22f)]),_0x533e85=this[_0x1e4dcf(0x19a)](_0x54de08),_0x323e70={};_0x323e70[_0x1e4dcf(0x19b)]=_0x1973de[_0x1e4dcf(0x1b9)],_0x323e70[_0x1e4dcf(0x148)]=_0xa2fdb1;const _0x6c4d76={};_0x6c4d76[_0x1e4dcf(0x194)]=_0x43f516,_0x6c4d76[_0x1e4dcf(0x1c0)]=0x1f4,_0x6c4d76[_0x1e4dcf(0x133)]=_0x533e85,_0x6c4d76[_0x1e4dcf(0x13c)]=[_0x323e70],_0x6c4d76[_0x1e4dcf(0x18b)]=0.3;const _0x597a1c=await this[_0x1e4dcf(0x157)][_0x1e4dcf(0x13c)]['create'](_0x6c4d76);let _0x2a2fdc=_0x597a1c[_0x1e4dcf(0x148)][0x0][_0x1e4dcf(0x1ef)][_0x1e4dcf(0x18f)]();const _0x54d8bc=this[_0x1e4dcf(0x150)](_0x2a2fdc),_0x471b3e={};return _0x471b3e['success']=!![],_0x471b3e[_0x1e4dcf(0x1eb)]=_0x54d8bc,_0x471b3e[_0x1e4dcf(0x1c9)]=_0x1973de['WgRYj'],_0x471b3e[_0x1e4dcf(0x194)]=_0x43f516,_0x471b3e[_0x1e4dcf(0x1b7)]=0.93,_0x471b3e[_0x1e4dcf(0x1df)]=_0x1973de[_0x1e4dcf(0x16e)],_0x471b3e;}async['convertWithGroq'](_0x4c24aa,_0x5acdf1=null){const _0x28b45b=_0x1ea569,_0x49158e={};_0x49158e['AaEzv']='groq',_0x49158e['AkktW']='system',_0x49158e[_0x28b45b(0x1d6)]=_0x28b45b(0x179),_0x49158e[_0x28b45b(0x244)]='N/A';const _0x5be6f5=_0x49158e;if(!this[_0x28b45b(0x132)])throw new Error(_0x28b45b(0x1ec));const _0x37a789=this['getModelForProvider'](_0x5be6f5['AaEzv']),_0x2d4f01={};_0x2d4f01[_0x28b45b(0x19b)]=_0x28b45b(0x25d),_0x2d4f01[_0x28b45b(0x148)]=_0x4c24aa;const _0x14f553=await this[_0x28b45b(0x132)]['chat'][_0x28b45b(0x274)][_0x28b45b(0x1b2)]({'model':_0x37a789,'messages':[{'role':_0x5be6f5[_0x28b45b(0x212)],'content':this[_0x28b45b(0x19a)](_0x5acdf1)},_0x2d4f01],'temperature':0.3,'max_tokens':0x1f4});let _0x3b39b8=_0x14f553[_0x28b45b(0x1db)][0x0][_0x28b45b(0x209)]['content']['trim']();const _0x8debf6=this['cleanAIResponse'](_0x3b39b8),_0x128328={};return _0x128328['success']=!![],_0x128328['converted']=_0x8debf6,_0x128328[_0x28b45b(0x1c9)]=_0x5be6f5['xXUCf'],_0x128328[_0x28b45b(0x194)]=_0x37a789,_0x128328[_0x28b45b(0x1b7)]=0.92,_0x128328['processingTime']=_0x5be6f5[_0x28b45b(0x244)],_0x128328;}async[_0x1ea569(0x167)](_0x1f8ea3,_0x171ed8=null){const _0x4b1aca=_0x1ea569,_0x4956e7={};_0x4956e7[_0x4b1aca(0x232)]='launch\x20',_0x4956e7['PZdZo']='url\x20',_0x4956e7[_0x4b1aca(0x18a)]=_0x4b1aca(0x200),_0x4956e7[_0x4b1aca(0x1af)]=_0x4b1aca(0x26c),_0x4956e7['NAGSc']='WAIT\x20',_0x4956e7[_0x4b1aca(0x1f9)]=_0x4b1aca(0x248),_0x4956e7[_0x4b1aca(0x26e)]=_0x4b1aca(0x171),_0x4956e7[_0x4b1aca(0x258)]=_0x4b1aca(0x1da),_0x4956e7[_0x4b1aca(0x204)]=_0x4b1aca(0x1ed),_0x4956e7[_0x4b1aca(0x198)]='volume\x20',_0x4956e7['laRMV']=_0x4b1aca(0x1b5),_0x4956e7[_0x4b1aca(0x174)]=_0x4b1aca(0x215),_0x4956e7[_0x4b1aca(0x152)]=function(_0x49538f,_0x2b619a){return _0x49538f===_0x2b619a;},_0x4956e7[_0x4b1aca(0x1c8)]='smQHu',_0x4956e7[_0x4b1aca(0x205)]='Cohere\x20not\x20configured',_0x4956e7[_0x4b1aca(0x193)]=_0x4b1aca(0x1e9),_0x4956e7[_0x4b1aca(0x14b)]=_0x4b1aca(0x25d);const _0x2351b0=_0x4956e7;if(!this['cohere']){if(_0x2351b0[_0x4b1aca(0x152)](_0x2351b0[_0x4b1aca(0x1c8)],_0x4b1aca(0x220))){const _0x169119={};_0x169119[_0x4b1aca(0x19d)]=_0x2351b0[_0x4b1aca(0x232)],_0x169119[_0x4b1aca(0x16a)]='kill\x20',_0x169119[_0x4b1aca(0x146)]='home',_0x169119['NhbQc']=_0x4b1aca(0x1c7),_0x169119[_0x4b1aca(0x1f4)]=_0x2351b0[_0x4b1aca(0x207)],_0x169119[_0x4b1aca(0x186)]=_0x2351b0[_0x4b1aca(0x18a)],_0x169119[_0x4b1aca(0x206)]=_0x2351b0[_0x4b1aca(0x1af)],_0x169119[_0x4b1aca(0x1ac)]=_0x4b1aca(0x140),_0x169119[_0x4b1aca(0x1aa)]=_0x2351b0[_0x4b1aca(0x158)],_0x169119[_0x4b1aca(0x25b)]=_0x2351b0[_0x4b1aca(0x1f9)],_0x169119[_0x4b1aca(0x1d2)]=_0x4b1aca(0x17d),_0x169119[_0x4b1aca(0x1ba)]=_0x2351b0[_0x4b1aca(0x26e)],_0x169119[_0x4b1aca(0x1dd)]=_0x2351b0['OUBXv'],_0x169119[_0x4b1aca(0x1a6)]=_0x2351b0[_0x4b1aca(0x204)],_0x169119[_0x4b1aca(0x1b0)]=_0x2351b0[_0x4b1aca(0x198)],_0x169119[_0x4b1aca(0x251)]=_0x4b1aca(0x213),_0x169119[_0x4b1aca(0x155)]=_0x2351b0[_0x4b1aca(0x183)],_0x169119[_0x4b1aca(0x1bb)]=_0x2351b0[_0x4b1aca(0x174)];const _0x255fac=_0x169119;_0x10adf5=_0x158ace[_0x4b1aca(0x211)](/```[\s\S]*?```/g,'')[_0x4b1aca(0x18f)](),_0x3b26ce=_0xd8454d[_0x4b1aca(0x211)](/```/g,'')[_0x4b1aca(0x18f)]();const _0x580be6=_0x1a58ae[_0x4b1aca(0x13a)]('\x0a'),_0x3e5311=_0x580be6[_0x4b1aca(0x1bd)](_0xfb619a=>{const _0x1b97d3=_0x4b1aca,_0x1e32a1=_0xfb619a[_0x1b97d3(0x18f)]();if(!_0x1e32a1)return![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac['Xcoia']))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x16a)]))return!![];if(_0x1e32a1===_0x255fac[_0x1b97d3(0x146)])return!![];if(_0x1e32a1===_0x255fac[_0x1b97d3(0x1f3)])return!![];if(_0x1e32a1['startsWith'](_0x255fac[_0x1b97d3(0x1f4)]))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac['JoaUs']))return!![];if(_0x1e32a1['startsWith'](_0x1b97d3(0x240)))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac['yCAZa']))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x1ac)]))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x1aa)]))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x25b)]))return!![];if(_0x1e32a1['startsWith'](_0x255fac[_0x1b97d3(0x1d2)]))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x1ba)]))return!![];if(_0x1e32a1['startsWith'](_0x255fac['FHBYO']))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x1b97d3(0x208)))return!![];if(_0x1e32a1[_0x1b97d3(0x170)]('airplane\x20'))return!![];if(_0x1e32a1[_0x1b97d3(0x170)](_0x255fac[_0x1b97d3(0x1a6)]))return!![];if(_0x1e32a1['startsWith'](_0x255fac[_0x1b97d3(0x1b0)]))return!![];if(_0x1e32a1===_0x255fac[_0x1b97d3(0x251)])return!![];if(_0x1e32a1===_0x255fac[_0x1b97d3(0x155)])return!![];if(_0x1e32a1===_0x255fac[_0x1b97d3(0x1bb)])return!![];if(_0x1e32a1==='quicksettings')return!![];return!![];});return _0x3e5311[_0x4b1aca(0x168)]('\x0a')[_0x4b1aca(0x18f)]();}else throw new Error(_0x2351b0[_0x4b1aca(0x205)]);}const _0x186180=this['getModelForProvider'](_0x2351b0[_0x4b1aca(0x193)]),_0x284435={};_0x284435[_0x4b1aca(0x19b)]=_0x2351b0['zBMpz'],_0x284435[_0x4b1aca(0x148)]=_0x1f8ea3;const _0x2e6b28=await this[_0x4b1aca(0x1e9)][_0x4b1aca(0x228)][_0x4b1aca(0x274)][_0x4b1aca(0x1b2)]({'model':_0x186180,'messages':[{'role':_0x4b1aca(0x133),'content':this['getSystemPrompt'](_0x171ed8)},_0x284435],'temperature':0.3,'max_tokens':0x1f4});let _0x4d6811=_0x2e6b28['choices'][0x0]['message'][_0x4b1aca(0x148)][_0x4b1aca(0x18f)]();return _0x4d6811=this['cleanAIResponse'](_0x4d6811),_0x4d6811;}async['convertWithMistral'](_0x4cc363,_0x388a3f=null){const _0x227935=_0x1ea569,_0x258ac7={};_0x258ac7[_0x227935(0x1e7)]=function(_0x204924,_0x28b36b){return _0x204924!==_0x28b36b;},_0x258ac7[_0x227935(0x19c)]=_0x227935(0x243),_0x258ac7[_0x227935(0x14c)]=_0x227935(0x1b3),_0x258ac7[_0x227935(0x16f)]='Mistral\x20AI\x20not\x20configured',_0x258ac7['tWjPw']='mistral',_0x258ac7[_0x227935(0x226)]='system',_0x258ac7['ldboy']='user';const _0x30c83c=_0x258ac7;if(!this[_0x227935(0x262)]){if(_0x30c83c[_0x227935(0x1e7)](_0x30c83c[_0x227935(0x19c)],_0x30c83c[_0x227935(0x14c)]))throw new Error(_0x30c83c['KrDps']);else{const _0x16b1a3=_0x2bf310['keys'](_0x45bc8a)[_0x227935(0x1bd)](_0x63bbf=>_0x12e171[_0x63bbf][_0x13a342])['slice'](0x0,0x32);_0x2901b2='\x0a\x0aPLATFORM:\x20'+_0x1d2de1[_0x227935(0x1fc)]()+_0x227935(0x1d3)+_0xcd761e+':\x20'+_0x16b1a3[_0x227935(0x168)](',\x20')+_0x227935(0x1f0)+_0x16b1a3[_0x227935(0x1d7)](0x0,0x14)[_0x227935(0x13e)](_0x52ae28=>'-\x20'+_0x52ae28+_0x227935(0x210)+_0x213609[_0x52ae28][_0x5a1ed9])[_0x227935(0x168)]('\x0a')+'\x0a';}}const _0x3aa2f1=this['getModelForProvider'](_0x30c83c[_0x227935(0x1cc)]),_0x41142f=await this[_0x227935(0x262)][_0x227935(0x228)][_0x227935(0x274)][_0x227935(0x1b2)]({'model':_0x3aa2f1,'messages':[{'role':_0x30c83c[_0x227935(0x226)],'content':this[_0x227935(0x19a)](_0x388a3f)},{'role':_0x30c83c[_0x227935(0x1a4)],'content':_0x4cc363}],'temperature':0.3,'max_tokens':0x1f4});let _0x5367dd=_0x41142f[_0x227935(0x1db)][0x0][_0x227935(0x209)][_0x227935(0x148)][_0x227935(0x18f)]();return _0x5367dd=this[_0x227935(0x150)](_0x5367dd),_0x5367dd;}[_0x1ea569(0x150)](_0x74c6a8){const _0xe4fcef=_0x1ea569,_0x2cb265={};_0x2cb265[_0xe4fcef(0x1a2)]=_0xe4fcef(0x13b),_0x2cb265[_0xe4fcef(0x14d)]=function(_0x47b1fc,_0x1eaca9){return _0x47b1fc===_0x1eaca9;},_0x2cb265[_0xe4fcef(0x1fe)]=_0xe4fcef(0x1c7),_0x2cb265[_0xe4fcef(0x229)]=_0xe4fcef(0x1ab),_0x2cb265[_0xe4fcef(0x1fd)]=_0xe4fcef(0x200),_0x2cb265[_0xe4fcef(0x1b4)]='tap\x20',_0x2cb265['ImhiT']=_0xe4fcef(0x26c),_0x2cb265[_0xe4fcef(0x1bc)]=_0xe4fcef(0x140),_0x2cb265[_0xe4fcef(0x197)]=_0xe4fcef(0x1d5),_0x2cb265[_0xe4fcef(0x190)]=_0xe4fcef(0x17d),_0x2cb265[_0xe4fcef(0x181)]='lightmode',_0x2cb265[_0xe4fcef(0x24c)]=_0xe4fcef(0x219),_0x2cb265['qkNXA']='wifi\x20',_0x2cb265[_0xe4fcef(0x15b)]=_0xe4fcef(0x1c4),_0x2cb265[_0xe4fcef(0x25a)]='getLocators',_0x2cb265[_0xe4fcef(0x15e)]=function(_0x8805cc,_0x400856){return _0x8805cc===_0x400856;},_0x2cb265[_0xe4fcef(0x23a)]=_0xe4fcef(0x1b5),_0x2cb265[_0xe4fcef(0x1e0)]='notifications',_0x2cb265[_0xe4fcef(0x21c)]=function(_0xb13cf0,_0x199473){return _0xb13cf0===_0x199473;},_0x2cb265[_0xe4fcef(0x1f8)]=_0xe4fcef(0x21d);const _0x3eb62e=_0x2cb265;_0x74c6a8=_0x74c6a8[_0xe4fcef(0x211)](/```[\s\S]*?```/g,'')[_0xe4fcef(0x18f)](),_0x74c6a8=_0x74c6a8[_0xe4fcef(0x211)](/```/g,'')[_0xe4fcef(0x18f)]();const _0x12a546=_0x74c6a8[_0xe4fcef(0x13a)]('\x0a'),_0x44304c=_0x12a546['filter'](_0x2c6631=>{const _0x534eda=_0xe4fcef,_0x1a3fd6=_0x2c6631[_0x534eda(0x18f)]();if(!_0x1a3fd6)return![];if(_0x1a3fd6[_0x534eda(0x170)](_0x534eda(0x18d)))return!![];if(_0x1a3fd6['startsWith'](_0x3eb62e[_0x534eda(0x1a2)]))return!![];if(_0x3eb62e[_0x534eda(0x14d)](_0x1a3fd6,_0x534eda(0x247)))return!![];if(_0x3eb62e[_0x534eda(0x14d)](_0x1a3fd6,_0x3eb62e[_0x534eda(0x1fe)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x229)]))return!![];if(_0x1a3fd6['startsWith'](_0x3eb62e[_0x534eda(0x1fd)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x1b4)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x20a)]))return!![];if(_0x1a3fd6['startsWith'](_0x3eb62e[_0x534eda(0x1bc)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e['lIRBo']))return!![];if(_0x1a3fd6['startsWith']('screenshot'))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x190)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)]('rotate\x20'))return!![];if(_0x1a3fd6['startsWith'](_0x534eda(0x1da)))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x181)]))return!![];if(_0x1a3fd6[_0x534eda(0x170)](_0x3eb62e[_0x534eda(0x24c)]))return!![];if(_0x1a3fd6['startsWith'](_0x3eb62e[_0x534eda(0x19e)]))return!![];if(_0x1a3fd6['startsWith'](_0x3eb62e[_0x534eda(0x15b)]))return!![];if(_0x1a3fd6===_0x3eb62e['yKPgC'])return!![];if(_0x3eb62e['FBSfZ'](_0x1a3fd6,_0x3eb62e['ugShg']))return!![];if(_0x3eb62e[_0x534eda(0x14d)](_0x1a3fd6,_0x3eb62e[_0x534eda(0x1e0)]))return!![];if(_0x3eb62e[_0x534eda(0x21c)](_0x1a3fd6,_0x3eb62e[_0x534eda(0x1f8)]))return!![];return!![];});return _0x44304c[_0xe4fcef(0x168)]('\x0a')[_0xe4fcef(0x18f)]();}['getAvailableProviders'](){const _0x199356=_0x1ea569,_0x4ffe76={};_0x4ffe76[_0x199356(0x151)]=_0x199356(0x230),_0x4ffe76[_0x199356(0x265)]=_0x199356(0x222),_0x4ffe76[_0x199356(0x172)]='gemini',_0x4ffe76['cxtMn']=_0x199356(0x1b1),_0x4ffe76['nHwxw']=_0x199356(0x223),_0x4ffe76['rNqkv']='GitHub\x20Copilot',_0x4ffe76[_0x199356(0x256)]=_0x199356(0x132),_0x4ffe76[_0x199356(0x203)]=_0x199356(0x1e9),_0x4ffe76[_0x199356(0x22b)]='Cohere',_0x4ffe76[_0x199356(0x143)]=_0x199356(0x262),_0x4ffe76[_0x199356(0x1cf)]=_0x199356(0x1fa);const _0x7c71a4=_0x4ffe76,_0x2111bf=[],_0x3026ad={};_0x3026ad['id']=_0x7c71a4[_0x199356(0x151)],_0x3026ad[_0x199356(0x1ce)]=_0x7c71a4[_0x199356(0x265)],_0x3026ad[_0x199356(0x20c)]='🤖';if(this[_0x199356(0x230)])_0x2111bf[_0x199356(0x13f)](_0x3026ad);const _0x9650d4={};_0x9650d4['id']=_0x7c71a4[_0x199356(0x172)],_0x9650d4[_0x199356(0x1ce)]=_0x7c71a4[_0x199356(0x25e)],_0x9650d4[_0x199356(0x20c)]='✨';if(this[_0x199356(0x24a)])_0x2111bf[_0x199356(0x13f)](_0x9650d4);const _0xb54387={};_0xb54387['id']=_0x199356(0x157),_0xb54387[_0x199356(0x1ce)]=_0x199356(0x184),_0xb54387[_0x199356(0x20c)]='🧠';if(this[_0x199356(0x157)])_0x2111bf[_0x199356(0x13f)](_0xb54387);const _0x688509={};_0x688509['id']=_0x7c71a4['nHwxw'],_0x688509[_0x199356(0x1ce)]=_0x7c71a4['rNqkv'],_0x688509[_0x199356(0x20c)]='🐙';if(this[_0x199356(0x223)])_0x2111bf[_0x199356(0x13f)](_0x688509);const _0x3b035f={};_0x3b035f['id']=_0x7c71a4[_0x199356(0x256)],_0x3b035f[_0x199356(0x1ce)]=_0x199356(0x179),_0x3b035f[_0x199356(0x20c)]='⚡';if(this[_0x199356(0x132)])_0x2111bf[_0x199356(0x13f)](_0x3b035f);const _0x1d9e94={};_0x1d9e94['id']=_0x7c71a4[_0x199356(0x203)],_0x1d9e94[_0x199356(0x1ce)]=_0x7c71a4[_0x199356(0x22b)],_0x1d9e94[_0x199356(0x20c)]='🌊';if(this['cohere'])_0x2111bf['push'](_0x1d9e94);const _0x20af66={};_0x20af66['id']=_0x7c71a4[_0x199356(0x143)],_0x20af66['name']=_0x199356(0x165),_0x20af66[_0x199356(0x20c)]=_0x7c71a4[_0x199356(0x1cf)];if(this[_0x199356(0x262)])_0x2111bf[_0x199356(0x13f)](_0x20af66);return _0x2111bf;}[_0x1ea569(0x270)](_0x1398d8,_0xa4ebff=null){const _0x9373af=_0x1ea569,_0x526a2c={};_0x526a2c[_0x9373af(0x1ad)]='aOOgg',_0x526a2c['wLtoJ']='TRBHc';const _0x360453=_0x526a2c,_0x2e1644=this[_0x9373af(0x173)]()[_0x9373af(0x13e)](_0x3e9003=>_0x3e9003['id']);if(_0x2e1644[_0x9373af(0x22c)](_0x1398d8)){if(_0x360453[_0x9373af(0x1ad)]===_0x360453['wLtoJ']){const _0x1be133=_0x48774c[_0x9373af(0x188)](_0x21fbdf)[_0x9373af(0x1bd)](_0x6f2c75=>_0x46582e[_0x6f2c75]['ios']&&_0x4f4182[_0x6f2c75][_0x9373af(0x1bf)])['slice'](0x0,0x1e);_0x274413=_0x9373af(0x144)+_0x1be133[_0x9373af(0x168)](',\x20')+_0x9373af(0x1a5)+_0x1be133[_0x9373af(0x1d7)](0x0,0xf)[_0x9373af(0x13e)](_0x2d449b=>'-\x20'+_0x2d449b+_0x9373af(0x272)+_0xdfb20a[_0x2d449b]['ios']+_0x9373af(0x1f1)+_0x5bd6dd[_0x2d449b][_0x9373af(0x1bf)])[_0x9373af(0x168)]('\x0a')+_0x9373af(0x16d);}else return this[_0x9373af(0x1c9)]=_0x1398d8,_0xa4ebff&&(this[_0x9373af(0x194)]=_0xa4ebff),!![];}return![];}['getCurrentProvider'](){const _0x30e5f6=_0x1ea569;return{'id':this[_0x30e5f6(0x1c9)],'name':this[_0x30e5f6(0x149)](this['provider']),'model':this['model']||this[_0x30e5f6(0x22d)](this[_0x30e5f6(0x1c9)]),'available':this[_0x30e5f6(0x173)]()};}['getProviderName'](_0x46e02f){const _0x4d7e3a=_0x1ea569,_0x5f1814={};_0x5f1814[_0x4d7e3a(0x15c)]='Local\x20Built-In\x20AI',_0x5f1814[_0x4d7e3a(0x23d)]='OpenAI',_0x5f1814[_0x4d7e3a(0x264)]=_0x4d7e3a(0x1b1),_0x5f1814[_0x4d7e3a(0x22e)]=_0x4d7e3a(0x184),_0x5f1814[_0x4d7e3a(0x164)]=_0x4d7e3a(0x24f),_0x5f1814[_0x4d7e3a(0x21e)]=_0x4d7e3a(0x14a),_0x5f1814[_0x4d7e3a(0x16b)]=_0x4d7e3a(0x165),_0x5f1814[_0x4d7e3a(0x24b)]=_0x4d7e3a(0x1de);const _0x17ef2f=_0x5f1814,_0x45c14e={};_0x45c14e['local']=_0x4d7e3a(0x1d0),_0x45c14e[_0x4d7e3a(0x1d1)]=_0x17ef2f['xrWJI'],_0x45c14e[_0x4d7e3a(0x154)]=_0x17ef2f[_0x4d7e3a(0x15c)],_0x45c14e['openai']=_0x17ef2f['FQiJY'],_0x45c14e['gemini']=_0x17ef2f['TGeqQ'],_0x45c14e[_0x4d7e3a(0x157)]=_0x17ef2f['xeWVM'],_0x45c14e[_0x4d7e3a(0x223)]=_0x17ef2f['byHob'],_0x45c14e[_0x4d7e3a(0x132)]=_0x4d7e3a(0x179),_0x45c14e[_0x4d7e3a(0x1e9)]=_0x17ef2f[_0x4d7e3a(0x21e)],_0x45c14e[_0x4d7e3a(0x262)]=_0x17ef2f[_0x4d7e3a(0x16b)];const _0x4cd1e4=_0x45c14e;return _0x4cd1e4[_0x46e02f]||_0x17ef2f[_0x4d7e3a(0x24b)];}async[_0x1ea569(0x17c)](_0x4a29b7,_0x352ef9=null){const _0x10a03b=_0x1ea569,_0x3ee05a={};_0x3ee05a[_0x10a03b(0x269)]=_0x10a03b(0x224),_0x3ee05a['axboz']=function(_0x337e57,_0x1825f8){return _0x337e57===_0x1825f8;},_0x3ee05a[_0x10a03b(0x17a)]='both',_0x3ee05a[_0x10a03b(0x1e4)]=function(_0x3a2dbd,_0xce1f35){return _0x3a2dbd!==_0xce1f35;},_0x3ee05a[_0x10a03b(0x139)]='QIkpX',_0x3ee05a[_0x10a03b(0x196)]='Local\x20Built-In\x20AI',_0x3ee05a[_0x10a03b(0x147)]=_0x10a03b(0x266),_0x3ee05a[_0x10a03b(0x214)]=_0x10a03b(0x245),_0x3ee05a[_0x10a03b(0x135)]=_0x10a03b(0x1ee),_0x3ee05a[_0x10a03b(0x221)]=_0x10a03b(0x169),_0x3ee05a[_0x10a03b(0x1a7)]=_0x10a03b(0x233);const _0x116a41=_0x3ee05a;logger[_0x10a03b(0x1d8)](_0x10a03b(0x259)+_0x4a29b7+'\x22');;try{if(_0x116a41[_0x10a03b(0x1e4)](_0x116a41[_0x10a03b(0x139)],_0x116a41['SXoPK']))throw new _0x15255b(nMlDfK[_0x10a03b(0x269)]);else{const _0x46d860=_0x352ef9?[{'platform':_0x352ef9}]:[],_0x22a505=await this[_0x10a03b(0x25c)][_0x10a03b(0x162)](_0x4a29b7,_0x46d860);if(_0x22a505['success']){const _0x2f80a4={};return _0x2f80a4[_0x10a03b(0x1eb)]=_0x22a505[_0x10a03b(0x1eb)],_0x2f80a4[_0x10a03b(0x1c9)]=_0x116a41[_0x10a03b(0x196)],_0x2f80a4['confidence']=_0x22a505[_0x10a03b(0x1b7)],_0x2f80a4[_0x10a03b(0x1df)]=_0x22a505[_0x10a03b(0x1df)],_0x2f80a4[_0x10a03b(0x194)]=_0x116a41[_0x10a03b(0x147)],_0x2f80a4[_0x10a03b(0x1be)]=0x0,_0x2f80a4;}else throw new Error(_0x22a505[_0x10a03b(0x1c3)]||_0x116a41[_0x10a03b(0x214)]);}}catch(_0x5a18dc){if(_0x116a41[_0x10a03b(0x249)](_0x116a41[_0x10a03b(0x135)],_0x116a41[_0x10a03b(0x221)])){let _0x599b26='';if(nMlDfK[_0x10a03b(0x249)](_0x2d3710,nMlDfK['JANkn'])){const _0x12f9d9=_0x30db07[_0x10a03b(0x188)](_0x50b57d)[_0x10a03b(0x1bd)](_0x49218a=>_0x3f3b38[_0x49218a]['ios']&&_0x3f3906[_0x49218a][_0x10a03b(0x1bf)])[_0x10a03b(0x1d7)](0x0,0x1e);_0x599b26='\x0a\x0aMULTI-PLATFORM\x20MODE\x20(iOS\x20+\x20Android\x20devices)\x0aAvailable\x20apps:\x20'+_0x12f9d9[_0x10a03b(0x168)](',\x20')+'\x0a\x0aIMPORTANT:\x20Use\x20generic\x20app\x20names\x20(e.g.,\x20\x22launch\x20settings\x22,\x20\x22launch\x20chrome\x22)\x0aThe\x20system\x20will\x20automatically\x20convert\x20to\x20platform-specific\x20package\x20IDs:\x0a'+_0x12f9d9[_0x10a03b(0x1d7)](0x0,0xf)[_0x10a03b(0x13e)](_0x11eaf0=>'-\x20'+_0x11eaf0+_0x10a03b(0x272)+_0x325df8[_0x11eaf0][_0x10a03b(0x21a)]+'\x20/\x20Android:\x20'+_0x89122c[_0x11eaf0][_0x10a03b(0x1bf)])[_0x10a03b(0x168)]('\x0a')+'\x0a\x0aCommands\x20will\x20execute\x20SIMULTANEOUSLY\x20on\x20all\x20devices\x20with\x20correct\x20package\x20IDs.\x0a';}else{if(_0x1d34ab){const _0x221a59=_0x42cc86[_0x10a03b(0x188)](_0x177d90)[_0x10a03b(0x1bd)](_0x3afd7d=>_0x2e46ab[_0x3afd7d][_0x30b7f4])['slice'](0x0,0x32);_0x599b26=_0x10a03b(0x1f6)+_0xa5258[_0x10a03b(0x1fc)]()+_0x10a03b(0x1d3)+_0x3951d5+':\x20'+_0x221a59[_0x10a03b(0x168)](',\x20')+_0x10a03b(0x1f0)+_0x221a59[_0x10a03b(0x1d7)](0x0,0x14)[_0x10a03b(0x13e)](_0x4bd5f9=>'-\x20'+_0x4bd5f9+_0x10a03b(0x210)+_0x2813cf[_0x4bd5f9][_0x26a4e8])[_0x10a03b(0x168)]('\x0a')+'\x0a';}}return _0x10a03b(0x1a3)+_0x599b26+_0x10a03b(0x1a0);}else{logger['error'](_0x116a41[_0x10a03b(0x1a7)],_0x5a18dc[_0x10a03b(0x209)]);;throw _0x5a18dc;}}}}function _0x52cf(){const _0x6a3cab=['r3jVCsbUB3qGy29UzMLNDxjLza','D2LMAsa','zMLsBfe','Dgv4Da','cGPbufaGuefds0fhrsbnqvbqsu5huZOkv2HLBIb1C2vYihnHExmGiMXHDw5JAcbJAhjVBwuIlcaIB3bLBIbJAhjVBwuIlcbLDgmUlcb1C2uGDgHLignVCNjLy3qGCgfJA2fNzsbjrdOk','ic8Gqw5KCM9PzdOG','AePdD3a','tMHIuwm','rKzUtfG','CgrZD0i','cGPqtefurK9sttOG','v2DswwO','zvjOuKW','sNjWBNG','8j+mRo+4JW','CKDhveu','Dg9vChbLCKnHC2u','DgXHEfe','swvNBKC','qgDVB2DSzs9Nzw5LCMf0AxzLlwfP','y2XPy2SG','zwHkze8','v25dq1K','BMTswfi','twjqt24','vLjsAgO','EunbwMe','ufPKwM8','BgLNAhrTB2rL','BwvZC2fNzq','sw1OAvq','CKDpB0i','AwnVBG','qxHLBhO','zxHWB3j0CW','whn6BM8','ic0+igXHDw5JAca','CMvWBgfJzq','qwTRDfC','z2v0tg9JyxrVCNm','DuDlB2W','BM90AwzPy2f0Aw9UCW','sg9Prfe','C3vJy2vZCW','Aw5PDgLHBgL6zvbYB3zPzgvYCW','ywLYCgXHBMuG','Aw9Z','BNzIuNC','C05frMm','CxvPy2TZzxr0Aw5NCW','t2X6u0u','ANrIvve','vePeEhy','yxz6CuS','t3bLBKfj','y29WAwXVDa','q29OzxjLig5VDcbJB25MAwD1CMvK','sw1uruW','t1LHC0O','t21Xz0e','y2HHDa','y0vNCxq','mte0mZa1mwjZCvfRCq','sxzXCNG','Aw5JBhvKzxm','z2v0tw9KzwXgB3jqCM92AwrLCG','EgvxvK0','vxHIChm','B3bLBMfP','q2XHDwrLig5VDcbJB25MAwD1CMvK','zM5wEuS','tg9JywWGquKGy29UDMvYC2LVBIbLCNjVCJO','mJm2mti1mgHUyvrJEG','E0LoufvuFq','nJKXntbMwu5Pveu','y29UDMvYDfDPDgHnAxn0CMfS','wLLwzfy','qvvbuKS','DwDtAgC','t3PKzNu','uhfLwhG','rLfPsLK','BgXHBweTmY4ZltCWyI12zxjZyxrPBgu','qxPJA1u','DgfWia','wMHkufa','yxbPs2v5','DfHgq0K','uK9YuNm','tg9JywWGquKGy29UDMvYC2LVBIbMywLSzwq','Ahr0Chm6lY9HCgKUz2L0AhvIy29WAwXVDc5JB20','Ag9Tzq','C2nYzwvUC2HVDa','yxHIB3O','z2vTAw5P','teTXALa','wKjnEKS','BMv1ywy','ktOG','r2L0shvIienVCgLSB3q','r3rRBhi','sgHWz3y','y0Hgs3i','ELjXBu4','z2vUzxjHDgvdB250zw50','v3jnEeC','z1Hczgi','s2XgwMe','t1vcwhy','8j+KLIbdB252zxj0Aw5NihDPDgGGtg9JywWGqNvPBhqTsw4GquK6ici','EuTqz0m','DvLcB1y','Bg9JywXbsq','DxnLCG','y3H0tw4','uxrKshC','CMvZCg9UC2u','Chv0Cge','BwLZDhjHBa','Ahr0Chm6lY9HCgKUy29OzxjLlMfPl3yX','veDLCve','z2jZuxO','yNvPBhqTAw4TCgf0DgvYBNm','lI9SB2DNzxi','z3b0ltrVlw1PBMK','r1fqsNm','yMzUwfu','z2v0r2vUzxjHDgL2zu1VzgvS','Bg9Uz3bYzxnZia','y29UDMvYDfDPDgHhCM9X','yu5pDLu','CuHnEvi','C2v0uhjVDMLKzxi','uhrtr0G','ic0+igLpuZOG','Dw9vs00','y29TCgXLDgLVBNm','we5Nt1q','y29UDMvYDfDPDgHpCgvUquK','z3jVCq','C3LZDgvT','BKrKAfy','v29zrMK','z2vTAw5PltiUns1MBgfZAa','wM1it2K','y29UDMvYDfDPDgHdBgf1zgu','u1HVueS','C3bSAxq','A2LSBca','BwvZC2fNzxm','CLbmvKm','BwfW','ChvZAa','C3DPCguG','y29UDMvYDfDPDgHhzw1PBMK','Ahr0Chm6lY9HCgKUBwLZDhjHBc5HAs92mq','BLbevNu','cGPnvuXuss1qtefurK9stsbnt0rficHPt1mGkYbbBMrYB2LKigrLDMLJzxmPcKf2ywLSywjSzsbHChbZoIa','rxjYB3iGD2L0Aca','zMzNzMm','CgTkAgu','y29UDgvUDa','z2v0uhjVDMLKzxjoyw1L','q29OzxjL','EKjnChO','rLP5rNy','tvfVsfG','Dfbtr1e','swr1vgW','y2XLyw5bsvjLC3bVBNnL','uerbAey','BwzWt1y','y29UDMvYDfDPDgHdB3bPBg90','yNvPBhrPBG','sNPPAhm','yMfZzvvsta','y2XHDwrL','tKfhu2m','y1ntwfK','r2L0shvIienVCgLSB3qGBM90ignVBMzPz3vYzwq','DLzpu0S','EhjxsKK','EwreqK0','rKjtzLO','mJi5oteWu1j5seHZ','D2fYBG','Bg9JywW','y29UDMvYDenVBw1HBMq','v3f6AKK','yNLiB2i','twLZDhjHBcbbsq','y1L2zxu','y29UDMvYDfDPDgHdB2HLCMu','AM9PBG','uMHLt3K','EvfqA1i','rLzHDg4','qwLqCM92AwrLCNm','cGPdB21Tyw5KCYb3AwXSigv4zwn1DguGu0LnvuXuqu5ft1vttfKGB24GywXSigrLDMLJzxmGD2L0AcbJB3jYzwn0ihbHy2THz2uGsurZlGO','sNrnwuW','s3jeChm','C3rHCNrZv2L0Aa','CM90yxrLia','EKHst3u','z2v0qxzHAwXHyMXLuhjVDMLKzxjZ','qLPtAvK','y29TBwfUzc1YlxbSDxm','r2vTAw5Pig5VDcbJB25MAwD1CMvK','yKrPze0','DwvbB0O','r3jVCq','sKfoA24','vvPXufC','y29UDMvYDfDPDgHmB2nHBefj','CMvZDgfYDa','ywvrt08','r2vTAw5Pig1VzgvSia','mJqYmta5m1j4uwnbzG','vMjRC1m','tg9JywWGquKGzMfSBgjHy2SGywXZBYbMywLSzwq6','Bgfstvy','qw50AhjVCgLJienSyxvKzq','wMPKtfG','sM9Hvxm','Ag1Jq1C','A2v5CW','zhzNs1O','Du5KDfe','DgvTCgvYyxr1CMu','tI9b','Bgf1BMnOia','y0LRq3K','DhjPBq','ANzLv2S','zKDHseK','qgfUDgHYB3bPyY1HAs9ZzgS','uhnnze8','Bw9KzwW','sM1kzxm','zeriC2G','BeLsqM8','AePtELe','B3j6CvG','z2v0u3LZDgvTuhjVBxb0','CM9Szq','Dvj0Ew8','wgnVAwe','CwTowee','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','vw5RBM93BIbbssbWCM92AwrLCJOG','Ae9VzLO','ww91igfYzsbHienptvbmrvrfig1VyMLSzsbHDxrVBwf0Aw9UiefjlIbdB252zxj0ievoveLsrsbUyxr1CMfSigXHBMD1ywDLihjLCxvLC3rZihrVigv4zwn1DgfIBguGy29TBwfUzhmUcGRWN5QOienssvrjq0fmoIbquK9drvntifrirsbdt01qtevursbjtLbvvcaTierptIDuifnut1aGrufstfKHipcFMQGkcKf2ywLSywjSzsbJB21Tyw5KCYaOD29YAYbVBIbIB3rOigLpuYaMiefUzhjVAwqPoGOTigXHDw5JAca8yxbWx25HBwu+oIbmyxvUy2GGyw4GyxbWihvZAw5NigDLBMvYAwmGBMfTzsaOzs5NlIWGiMXHDw5JAcbZzxr0Aw5NCYiSicjSyxvUy2GGy2HYB21LiIKklsbRAwXSidXHChbFBMfTzt46ienSB3nLl2zVCMnLihn0B3aGyw4GyxbWcI0GAg9TztOGr28GDg8GAg9TzsbZy3jLzw4GkhbYzxnZigHVBwuGyNv0Dg9UkqOTigjHy2S6ie5HDMLNyxrLigjHy2SGkefUzhjVAwqVAu9tkqOTihvYBca8DxjSpJOGt3bLBIbvuKWGAw4GyNjVD3nLCGOTignSAwnRidX0zxH0pJOGq2XPy2SGB24GysbIDxr0B24GB3iGzwXLBwvUDcbIEsb2AxnPyMXLihrLEhqklsbJBgLJAYa8EcX5pJOGq2XPy2SGyxqGC3bLy2LMAwmGy29VCMrPBMf0zxmGkguUzY4SignSAwnRiduWmcWXmdaWkqOTihrHCca8Dgv4Dc9JB29Yzhm+oIbtyw1LigfZignSAwnRcI0GBg9Uz3bYzxnZidX0zxH0l2nVB3jKCZ46ieXVBMCGChjLC3mGB24GzwXLBwvUDcbVCIbJB29YzgLUyxrLCWOTihn3AxbLidXKAxjLy3rPB24+oIbtD2LWzsb1Cc9KB3DUl2XLzNqVCMLNAhqGkhvZzsbMB3iGC2nYB2XSAw5NkqOTihr5CguGphrLEhq+oIbuExbLihrLEhqGAw50BYbMB2n1C2vKigzPzwXKicHQDxn0ihrOzsb0zxH0lcbUBYaIDhLWzsiGChjLzML4kqOTihnJCMvLBNnOB3q6ifrHA2uGC2nYzwvUC2HVDaOTihjLC3rHCNq6ifjLC3rHCNqGzgv2AwnLcI0GCM90yxrLidXSzwz0l3jPz2H0l3bVCNrYywL0l2XHBMrZy2fWzt46ifjVDgf0zsbZy3jLzw4kcMLpuY1ZCgvJAwzPyYbJB21Tyw5KCZOklsbKyxjRBw9Kzs9SAwDODg1Vzgu6ienOyw5NzsbHChbLyxjHBMnLcI0GywLYCgXHBMuGpg9Ul29MzJ46ifrVz2DSzsbHAxjWBgfUzsbTB2rLcI0GD2LMAsa8B24VB2zMpJOGvg9Nz2XLifDPrMKklsb2B2X1BwuGphvWl2rVD24VBxv0zt46ienVBNrYB2WGDM9SDw1LcGPbBMrYB2LKlxnWzwnPzMLJignVBw1HBMrZoGOTigDLDeXVy2f0B3jZoIbhzxqGywXSigLUDgvYywn0AxzLigvSzw1LBNrZig9Uign1CNjLBNqGC2nYzwvUcI0GCMvJzw50oIbpCgvUihjLy2vUDcbHChbZcI0GBM90AwzPy2f0Aw9UCZOGt3bLBIbUB3rPzMLJyxrPB24GCgfUzwWklsbXDwLJA3nLDhrPBMDZoIbpCgvUihf1AwnRihnLDhrPBMDZcG','BgrIB3K','cGPjtvbpuLrbtLq6ifvZzsbNzw5LCMLJigfWCcbUyw1LCYaOzs5NlIWGiMXHDw5JAcbZzxr0Aw5NCYiSicjSyxvUy2GGy2HYB21LiIKkvgHLihn5C3rLBsb3AwXSigf1Dg9TyxrPy2fSBhKGy29UDMvYDcb0BYbWBgf0zM9YBs1ZCgvJAwzPyYbWywnRywDLieLeCZOk','qLfUENi','EKLqC1m','wNfKuMy','z3b0ltrV','CwL5wve','DxjSia','svfSzve','EhDZB0K','uwrkEey','ugnWuwe','Ew9ozuS','r29Vz2XLieDLBwLUAq','y3jLyxrL','uuXYsu4','BLnRrMO','CMvJzw50','wuzUt0O','y29UzMLKzw5Jzq','yM90Aa','q0HlyMG','D1HTv2O','sNzitLK','t0P4ELG','zMLSDgvY','y29ZDa','yw5KCM9Pza','Bwf4x3rVA2vUCW','rffQrvK','v1fLtwS','zxjYB3i','DM9SDw1Lia','igzHAwXLzcWGzMfSBgLUzYbIywnRihrVigDLBwLUAs0YlJuTzMXHC2G','BhLLtMW','yMfJAW','vhzYuM8','ChjVDMLKzxi','zNvlCKm','mJG2ndCYq2fUqu1O','DfDQuhC','lI9SB2nHBej1AwX0sw5bsq','BMfTzq','vuvmAhi','tg9JywWGqNvPBhqTsw4GquK','yNvPBhqTAw4','u2vwuuW','cKf2ywLSywjSzsbHChbZigzVCIa','ndqXodG3mLLhyK1zqW','v0fjvca','EfHvq2y','C2XPy2u','Aw5MBW','BLPbvxK','zgfYA21Vzgu','y2HVAwnLCW','rhjduxy','rKHcwu8','vw5RBM93BG','ChjVy2vZC2LUz1rPBwu','yNzOAu4','wNvhANa','zLPAqum','BwLZDhjHBc1SyxjNzs1SyxrLC3q','ruztDeC','z3b0ltq','8j+uHcbgywXSAw5NigjHy2SGDg8Gtg9JywWGqNvPBhqTsw4GquKUlI4','A0LxCLG','nZaWEwrVr2PJ','y29OzxjL','zw1MC2q','y29UDMvYDgvK'];_0x52cf=function(){return _0x6a3cab;};return _0x52cf();}function _0x1346(_0x299f4c,_0x36aaae){_0x299f4c=_0x299f4c-0x130;const _0x52cf79=_0x52cf();let _0x134675=_0x52cf79[_0x299f4c];if(_0x1346['QhlszZ']===undefined){var _0x495f2f=function(_0x405dd4){const _0x1a62ad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x42d755='',_0x16f8a9='';for(let _0x537573=0x0,_0x5100ca,_0x375283,_0x2cb922=0x0;_0x375283=_0x405dd4['charAt'](_0x2cb922++);~_0x375283&&(_0x5100ca=_0x537573%0x4?_0x5100ca*0x40+_0x375283:_0x375283,_0x537573++%0x4)?_0x42d755+=String['fromCharCode'](0xff&_0x5100ca>>(-0x2*_0x537573&0x6)):0x0){_0x375283=_0x1a62ad['indexOf'](_0x375283);}for(let _0x5a377e=0x0,_0x2000db=_0x42d755['length'];_0x5a377e<_0x2000db;_0x5a377e++){_0x16f8a9+='%'+('00'+_0x42d755['charCodeAt'](_0x5a377e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16f8a9);};_0x1346['xSwbkE']=_0x495f2f,_0x1346['DVBsVz']={},_0x1346['QhlszZ']=!![];}const _0x7a6dae=_0x52cf79[0x0],_0x28fe54=_0x299f4c+_0x7a6dae,_0x13c9ac=_0x1346['DVBsVz'][_0x28fe54];return!_0x13c9ac?(_0x134675=_0x1346['xSwbkE'](_0x134675),_0x1346['DVBsVz'][_0x28fe54]=_0x134675):_0x134675=_0x13c9ac,_0x134675;}module[_0x1ea569(0x20e)]=AIProviderManager;
|