rentabots-sdk 0.7.1 → 0.8.0
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/dist/index.d.ts +35 -47
- package/dist/index.js +1 -1
- package/init.js +40 -112
- package/package.json +1 -1
- package/src/index.ts +212 -114
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,14 @@ export interface AgentOptions {
|
|
|
61
61
|
heartbeatInterval?: number;
|
|
62
62
|
/** Path to store agent state for persistence. Set to false to disable. */
|
|
63
63
|
persistState?: string | boolean;
|
|
64
|
+
/** Local workspace root for mission execution */
|
|
65
|
+
workspaceRoot?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface AutopilotOptions {
|
|
68
|
+
keywords?: string[];
|
|
69
|
+
minBudget?: number;
|
|
70
|
+
scoutingInterval?: number;
|
|
71
|
+
bidTemplate?: string;
|
|
64
72
|
}
|
|
65
73
|
/**
|
|
66
74
|
* RentaBots Agent SDK
|
|
@@ -78,9 +86,13 @@ export declare class Agent extends EventEmitter {
|
|
|
78
86
|
private heartbeatInterval;
|
|
79
87
|
private heartbeatTimer;
|
|
80
88
|
private statePath;
|
|
89
|
+
private workspaceRoot;
|
|
81
90
|
activeMissions: Map<string, Job>;
|
|
82
91
|
private bidCache;
|
|
83
92
|
private seenMessages;
|
|
93
|
+
private autopilotTimer;
|
|
94
|
+
private autopilotPaused;
|
|
95
|
+
private lastScoutTime;
|
|
84
96
|
constructor(options?: AgentOptions);
|
|
85
97
|
/**
|
|
86
98
|
* Connect to the RentaBots grid and initialize WebSockets
|
|
@@ -97,73 +109,49 @@ export declare class Agent extends EventEmitter {
|
|
|
97
109
|
private syncFromCloud;
|
|
98
110
|
private enrichJob;
|
|
99
111
|
private initSocket;
|
|
100
|
-
private
|
|
101
|
-
private
|
|
112
|
+
private handleIncomingMessage;
|
|
113
|
+
private handleStatusRequest;
|
|
114
|
+
private handleManualBidRequest;
|
|
102
115
|
/**
|
|
103
|
-
*
|
|
116
|
+
* Start the autonomous "Hunter-Killer" loop.
|
|
104
117
|
*/
|
|
105
|
-
|
|
118
|
+
startAutopilot(options?: AutopilotOptions): void;
|
|
119
|
+
/**
|
|
120
|
+
* Initialize local and remote workspace for a mission
|
|
121
|
+
*/
|
|
122
|
+
initializeMission(jobId: string, repoName?: string): Promise<string>;
|
|
123
|
+
/**
|
|
124
|
+
* Execute a command asynchronously in the mission workspace
|
|
125
|
+
*/
|
|
126
|
+
execute(jobId: string, command: string): Promise<{
|
|
127
|
+
exitCode: number | null;
|
|
128
|
+
output: string;
|
|
129
|
+
}>;
|
|
106
130
|
/**
|
|
107
|
-
*
|
|
131
|
+
* Batch deliver files from local workspace to mission repository
|
|
108
132
|
*/
|
|
133
|
+
deliver(jobId: string, files: string[]): Promise<string[]>;
|
|
134
|
+
private loadState;
|
|
135
|
+
private saveState;
|
|
136
|
+
setTyping(jobId: string, isTyping?: boolean): Promise<void>;
|
|
109
137
|
updateProfile(data: {
|
|
110
138
|
displayName?: string;
|
|
111
139
|
skills?: string[];
|
|
112
140
|
bio?: string;
|
|
113
141
|
}): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
114
|
-
/**
|
|
115
|
-
* Automatically find missions matching criteria and bid
|
|
116
|
-
*/
|
|
117
|
-
findAndBid(criteria: {
|
|
118
|
-
skills?: string[];
|
|
119
|
-
minBudget?: number;
|
|
120
|
-
}): Promise<void>;
|
|
121
142
|
getOpenMissions(): Promise<Job[]>;
|
|
122
|
-
/**
|
|
123
|
-
* Get details for a specific mission
|
|
124
|
-
*/
|
|
125
143
|
getMission(jobId: string): Promise<Job>;
|
|
126
144
|
bid(jobId: string, amount: number, message: string): Promise<any>;
|
|
127
145
|
sendMessage(jobId: string, content: string): Promise<any>;
|
|
128
|
-
/**
|
|
129
|
-
* Fetch chat history for a mission
|
|
130
|
-
*/
|
|
131
146
|
getMessages(jobId: string): Promise<Message[]>;
|
|
132
147
|
uploadDeliverable(jobId: string, url: string, name: string): Promise<any>;
|
|
133
|
-
/**
|
|
134
|
-
* Upload a local file to the mission deliverables
|
|
135
|
-
* This method handles the cloud storage upload automatically.
|
|
136
|
-
*/
|
|
137
148
|
uploadFile(jobId: string, localPath: string, remoteName?: string): Promise<any>;
|
|
138
149
|
markComplete(jobId: string): Promise<any>;
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
* This will be visible to both the bot owner and project owner.
|
|
142
|
-
*/
|
|
143
|
-
createMissionRepo(jobId: string, name: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
144
|
-
/**
|
|
145
|
-
* Upload a file directly into the Mission Repository
|
|
146
|
-
* @param jobId The mission ID
|
|
147
|
-
* @param path The remote path in the repo (e.g. 'src/index.js')
|
|
148
|
-
* @param content The file content OR a local file path
|
|
149
|
-
* @param isBlob Whether to treat as binary data
|
|
150
|
-
*/
|
|
151
|
-
pushToRepo(jobId: string, path: string, content: string, isBlob?: boolean): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
152
|
-
/**
|
|
153
|
-
* Report token consumption for billing and monitoring
|
|
154
|
-
*/
|
|
150
|
+
createMissionRepo(jobId: string, name?: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
151
|
+
pushToRepo(jobId: string, remotePath: string, contentOrPath: string, isBlob?: boolean): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
155
152
|
reportUsage(tokens: number): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
156
|
-
/**
|
|
157
|
-
* Update mission progress (0-100) on the grid
|
|
158
|
-
*/
|
|
159
153
|
setProgress(jobId: string, progress: number): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
160
|
-
/**
|
|
161
|
-
* Send a high-priority alert to the agent owner
|
|
162
|
-
*/
|
|
163
154
|
notifyOwner(message: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
|
|
164
|
-
/**
|
|
165
|
-
* Stream logs to the RentaBots Dashboard
|
|
166
|
-
*/
|
|
167
155
|
log(message: string, level?: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'): Promise<void>;
|
|
168
156
|
private startHeartbeat;
|
|
169
157
|
private sendHeartbeat;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';const a0_0x4c0a59=a0_0x4db6;(function(_0x311d59,_0x395d24){const _0x102c70=a0_0x4db6,_0x1bb8aa=_0x311d59();while(!![]){try{const _0x25c12a=-parseInt(_0x102c70(0x12e))/0x1*(-parseInt(_0x102c70(0x159))/0x2)+parseInt(_0x102c70(0x198))/0x3+parseInt(_0x102c70(0x187))/0x4*(-parseInt(_0x102c70(0x154))/0x5)+-parseInt(_0x102c70(0xfb))/0x6+parseInt(_0x102c70(0xf6))/0x7+-parseInt(_0x102c70(0x1f1))/0x8*(-parseInt(_0x102c70(0x1c1))/0x9)+-parseInt(_0x102c70(0x1b5))/0xa;if(_0x25c12a===_0x395d24)break;else _0x1bb8aa['push'](_0x1bb8aa['shift']());}catch(_0x35267d){_0x1bb8aa['push'](_0x1bb8aa['shift']());}}}(a0_0x2f8d,0x4cf55));var a0_0x22aeaf=this&&this[a0_0x4c0a59(0x165)]||(Object[a0_0x4c0a59(0x14c)]?function(_0x106e31,_0x5e6057,_0x3e7e3d,_0x54fe60){const _0x13da12=a0_0x4c0a59,_0x19e728={'WwRQa':function(_0x4f72a0,_0x38b991){return _0x4f72a0===_0x38b991;},'siuUV':function(_0x14a8a3,_0xa22566){return _0x14a8a3 in _0xa22566;},'MZoXV':_0x13da12(0xd9)};if(_0x19e728[_0x13da12(0x1f2)](_0x54fe60,undefined))_0x54fe60=_0x3e7e3d;var _0x2b49c0=Object[_0x13da12(0x13f)](_0x5e6057,_0x3e7e3d);(!_0x2b49c0||(_0x19e728[_0x13da12(0x1f5)](_0x19e728[_0x13da12(0x21e)],_0x2b49c0)?!_0x5e6057[_0x13da12(0x193)]:_0x2b49c0[_0x13da12(0x1a1)]||_0x2b49c0[_0x13da12(0x182)]))&&(_0x2b49c0={'enumerable':!![],'get':function(){return _0x5e6057[_0x3e7e3d];}}),Object[_0x13da12(0x10d)](_0x106e31,_0x54fe60,_0x2b49c0);}:function(_0x1eb63f,_0x5e7b84,_0x3f4407,_0x11b6aa){const _0x42edb6=a0_0x4c0a59,_0x22c5b7={'QYDdn':function(_0x3f1f2a,_0x47d640){return _0x3f1f2a===_0x47d640;}};if(_0x22c5b7[_0x42edb6(0x1e1)](_0x11b6aa,undefined))_0x11b6aa=_0x3f4407;_0x1eb63f[_0x11b6aa]=_0x5e7b84[_0x3f4407];}),a0_0x2f038e=this&&this[a0_0x4c0a59(0x1c7)]||(Object[a0_0x4c0a59(0x14c)]?function(_0x2b7919,_0x2162b8){const _0x18a54d=a0_0x4c0a59,_0x5dd5eb={'KdfvG':_0x18a54d(0x1a0)};Object[_0x18a54d(0x10d)](_0x2b7919,_0x5dd5eb[_0x18a54d(0x107)],{'enumerable':!![],'value':_0x2162b8});}:function(_0x2035c9,_0x25edac){const _0x8cb37a=a0_0x4c0a59,_0xf1ae40={'lQxtH':_0x8cb37a(0x1a0)};_0x2035c9[_0xf1ae40[_0x8cb37a(0x185)]]=_0x25edac;}),a0_0x59c87d=this&&this[a0_0x4c0a59(0x13e)]||(function(){const _0x275444=a0_0x4c0a59,_0x5ae9f1={'Gafpx':_0x275444(0x1ad),'UEoFt':function(_0x4758c3,_0x68a70){return _0x4758c3(_0x68a70);},'xVTuK':_0x275444(0x12f),'qLVFD':function(_0x513986,_0x3cbc4a,_0x523c39){return _0x513986(_0x3cbc4a,_0x523c39);},'AnchV':function(_0x2afc01,_0xdc53a0){return _0x2afc01!=_0xdc53a0;},'OtDGI':function(_0x196360,_0x1bbc60){return _0x196360<_0x1bbc60;},'wjbix':function(_0x107900,_0x1ec109){return _0x107900!==_0x1ec109;},'DjFXZ':_0x275444(0x1a0),'gSDYG':function(_0x305fab,_0x1bbe8a,_0x253ed9,_0xfebf77){return _0x305fab(_0x1bbe8a,_0x253ed9,_0xfebf77);},'XJxdL':function(_0x1f2490){return _0x1f2490();}},_0xaf54b5=(function(){let _0x447973=!![];return function(_0x201623,_0x4ae9c2){const _0xfef1c8=_0x447973?function(){const _0x5ae071=a0_0x4db6;if(_0x4ae9c2){const _0x33c881=_0x4ae9c2[_0x5ae071(0x200)](_0x201623,arguments);return _0x4ae9c2=null,_0x33c881;}}:function(){};return _0x447973=![],_0xfef1c8;};}()),_0x40898a=_0x5ae9f1[_0x275444(0x106)](_0xaf54b5,this,function(){const _0x1e94ab=_0x275444;return _0x40898a[_0x1e94ab(0x153)]()[_0x1e94ab(0x19c)](_0x5ae9f1[_0x1e94ab(0x126)])[_0x1e94ab(0x153)]()[_0x1e94ab(0x157)](_0x40898a)[_0x1e94ab(0x19c)](_0x5ae9f1[_0x1e94ab(0x126)]);});_0x5ae9f1[_0x275444(0x175)](_0x40898a);var _0x5b2fbc=function(_0x19d94e){const _0x9a40a9=_0x275444;return _0x5b2fbc=Object[_0x9a40a9(0x11d)]||function(_0x17d603){const _0x108aa2=_0x9a40a9;var _0x55c6ef=[];for(var _0x38d1db in _0x17d603)if(Object[_0x108aa2(0x227)][_0x108aa2(0x18e)][_0x108aa2(0x1a6)](_0x17d603,_0x38d1db))_0x55c6ef[_0x55c6ef[_0x108aa2(0x115)]]=_0x38d1db;return _0x55c6ef;},_0x5ae9f1[_0x9a40a9(0x1ce)](_0x5b2fbc,_0x19d94e);};return function(_0x4f777e){const _0x238ca3=_0x275444,_0x14d0a4=_0x5ae9f1[_0x238ca3(0x12a)][_0x238ca3(0x1a9)]('|');let _0x21bb45=0x0;while(!![]){switch(_0x14d0a4[_0x21bb45++]){case'0':var _0x3604f3={};continue;case'1':_0x5ae9f1[_0x238ca3(0x106)](a0_0x2f038e,_0x3604f3,_0x4f777e);continue;case'2':return _0x3604f3;case'3':if(_0x4f777e&&_0x4f777e[_0x238ca3(0x193)])return _0x4f777e;continue;case'4':if(_0x5ae9f1[_0x238ca3(0x228)](_0x4f777e,null)){for(var _0x49cc59=_0x5ae9f1[_0x238ca3(0x1ce)](_0x5b2fbc,_0x4f777e),_0x3537f2=0x0;_0x5ae9f1[_0x238ca3(0xff)](_0x3537f2,_0x49cc59[_0x238ca3(0x115)]);_0x3537f2++)if(_0x5ae9f1[_0x238ca3(0x20d)](_0x49cc59[_0x3537f2],_0x5ae9f1[_0x238ca3(0xda)]))_0x5ae9f1[_0x238ca3(0x1b4)](a0_0x22aeaf,_0x3604f3,_0x4f777e,_0x49cc59[_0x3537f2]);}continue;}break;}};}()),a0_0xbf6b1b=this&&this[a0_0x4c0a59(0x1c5)]||function(_0x1f7626){const _0x18fe42=a0_0x4c0a59;return _0x1f7626&&_0x1f7626[_0x18fe42(0x193)]?_0x1f7626:{'default':_0x1f7626};};function a0_0x4db6(_0x278ff7,_0x298757){_0x278ff7=_0x278ff7-0xd5;const _0x5a1615=a0_0x2f8d();let _0x3eaae0=_0x5a1615[_0x278ff7];if(a0_0x4db6['ZYPecK']===undefined){var _0x5b9c71=function(_0x2cacc1){const _0x1b059f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51f348='',_0xf8bc76='',_0x6d805=_0x51f348+_0x5b9c71;for(let _0x13bb57=0x0,_0x408344,_0x28ae28,_0x5edba7=0x0;_0x28ae28=_0x2cacc1['charAt'](_0x5edba7++);~_0x28ae28&&(_0x408344=_0x13bb57%0x4?_0x408344*0x40+_0x28ae28:_0x28ae28,_0x13bb57++%0x4)?_0x51f348+=_0x6d805['charCodeAt'](_0x5edba7+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x408344>>(-0x2*_0x13bb57&0x6)):_0x13bb57:0x0){_0x28ae28=_0x1b059f['indexOf'](_0x28ae28);}for(let _0x51990d=0x0,_0x302ff4=_0x51f348['length'];_0x51990d<_0x302ff4;_0x51990d++){_0xf8bc76+='%'+('00'+_0x51f348['charCodeAt'](_0x51990d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf8bc76);};a0_0x4db6['bkbOEf']=_0x5b9c71,a0_0x4db6['taDiPc']={},a0_0x4db6['ZYPecK']=!![];}const _0x2f8dd2=_0x5a1615[0x0],_0x4db612=_0x278ff7+_0x2f8dd2,_0x139f28=a0_0x4db6['taDiPc'][_0x4db612];if(!_0x139f28){const _0x18814b=function(_0x4371f6){this['qtZiZJ']=_0x4371f6,this['aMLVAx']=[0x1,0x0,0x0],this['yNJqEA']=function(){return'newState';},this['ikSIte']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['fPakVP']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x18814b['prototype']['AUFCJq']=function(){const _0x345756=new RegExp(this['ikSIte']+this['fPakVP']),_0x1cc0ec=_0x345756['test'](this['yNJqEA']['toString']())?--this['aMLVAx'][0x1]:--this['aMLVAx'][0x0];return this['CtnCRb'](_0x1cc0ec);},_0x18814b['prototype']['CtnCRb']=function(_0x3a6b13){if(!Boolean(~_0x3a6b13))return _0x3a6b13;return this['jnpEpt'](this['qtZiZJ']);},_0x18814b['prototype']['jnpEpt']=function(_0x7544a1){for(let _0x590312=0x0,_0x28b732=this['aMLVAx']['length'];_0x590312<_0x28b732;_0x590312++){this['aMLVAx']['push'](Math['round'](Math['random']())),_0x28b732=this['aMLVAx']['length'];}return _0x7544a1(this['aMLVAx'][0x0]);},new _0x18814b(a0_0x4db6)['AUFCJq'](),_0x3eaae0=a0_0x4db6['bkbOEf'](_0x3eaae0),a0_0x4db6['taDiPc'][_0x4db612]=_0x3eaae0;}else _0x3eaae0=_0x139f28;return _0x3eaae0;}Object[a0_0x4c0a59(0x10d)](exports,a0_0x4c0a59(0x193),{'value':!![]}),exports[a0_0x4c0a59(0x20f)]=exports[a0_0x4c0a59(0x122)]=exports[a0_0x4c0a59(0x184)]=exports[a0_0x4c0a59(0x139)]=exports[a0_0x4c0a59(0x18a)]=void 0x0;const a0_0x20d2db=a0_0xbf6b1b(require(a0_0x4c0a59(0x146))),a0_0x4d36f5=require(a0_0x4c0a59(0x125)),a0_0x5578b7=require(a0_0x4c0a59(0x123)),a0_0x438e91=require(a0_0x4c0a59(0x12c)),a0_0x409af7=a0_0x59c87d(require('fs')),a0_0x456c2e=a0_0x59c87d(require(a0_0x4c0a59(0x1cb)));exports[a0_0x4c0a59(0x18a)]=a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0x1fb),a0_0x4c0a59(0x197),a0_0x4c0a59(0x158),a0_0x4c0a59(0x11c),a0_0x4c0a59(0xdc),a0_0x4c0a59(0x120)]),exports[a0_0x4c0a59(0x139)]=a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0x178),a0_0x4c0a59(0x133),a0_0x4c0a59(0x108),a0_0x4c0a59(0xe4),a0_0x4c0a59(0xe7)]),exports[a0_0x4c0a59(0x184)]=a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'title':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'description':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'budget':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'category':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'status':exports[a0_0x4c0a59(0x139)],'createdAt':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'progress':a0_0x5578b7['z'][a0_0x4c0a59(0x219)]()[a0_0x4c0a59(0x1da)]()}),exports[a0_0x4c0a59(0x122)]=a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'jobId':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'content':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'senderId':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'createdAt':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'sender':a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'displayName':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'type':a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0xf5),a0_0x4c0a59(0x1f7)])})});function a0_0x2f8d(){const _0x1e8cff=['BgvUz3rO','rMLSzsbUB3qGzM91BMq6ia','t3rXrve','l21LC3nHz2vZ','C2v0vhLWAw5N','BvnnCK0','C2v0','Aw1Hz2vFz2vUzxjHDgLVBG','z2v0t3DUuhjVCgvYDhLoyw1LCW','l2XVz3m','Chv0','DhjHBNnSyxrPB24','u0rlx1zfuLnjt04','twvZC2fNzvnJAgvTyq','EM9K','A3bfsgi','C29JA2v0lMLVlwnSAwvUDa','r2fMChG','AM9ICW','Bg9N','ug5TAKu','EfzuDuS','mc43lJe','zxzLBNrZ','ywDLBNrjza','mZyZEKrlv2nT','m3WWFdr8mxWY','ywrK','v2vIu29JA2v0ieXPBMSGrxn0ywjSAxnOzwqU','CMvZCg9UC2u','Aw5FChjVz3jLC3m','DxbSB2fKrMLSzq','C2L6zq','zgvIDwC','rMfPBgvKihrVihjLywqGBg9JywWGzMLSztOG','l3jLCg8','sM9Iu3rHDhvZu2nOzw1H','v21yBMy','quvjBum','l3vWBg9Hzd9MAwXLBMfTzt0','v0fstG','x19PBxbVCNrtDgfY','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','vw5RBM93BIbYzwfZB24','l2zPBgvZ','Ahr0Chm6lY9Yzw50ywjVDhmUy29Tl2fWAq','AKzft1a','yNvKz2v0qw1VDw50','zw50CMLLCW','yxHPB3m','Chr6qKy','yxbP','zgLZy29UBMvJDgvK','u2vYDMvYievYCM9YoIa','y3DK','y3jLyxrL','BwLUqNvKz2v0','g1SZmw0','BxzNAve','Bg9Nsw50zxjUywW','AMT2u0O','zMv0y2HvBNjLywrnzxnZywDLCW','Dg9tDhjPBMC','mtm0ndvtAMzewfa','v2vIu29JA2v0ierPC2nVBM5Ly3rLzdOG','DNb2s3O','y29UC3rYDwn0B3i','zgf0yv9HBMfSExnPCW','mtqYrxrlseTl','igf0DgvTChrZlG','q1fPqLG','C29JA2v0','vxbSB2fKAw5NigzPBgu6ia','rvjst1i','Aw5PDfnVy2TLDa','4P2mifjLBNrHqM90CYbbueKGs2v5igLZig1PC3nPBMCUifbHC3mGAxqGAw4GDgHLignVBNn0CNvJDg9Yig9YihnLDcbsru5uqujpvfnFqvbjx0TfwsbPBIaUzw52','4Os577IpicbtA2LWCgvKoIa','rMfPBgvKihrVigzLDgnOig1HCMTLDhbSywnLigPVyNm6ia','A2jMzg8','zMLUzefUzejPza','x19JCMvHDgvcAw5KAw5N','C2f2zvn0yxrL','EvPTC04','zNjVBuvUDhjPzxm','q2XVDwqGC3LUyYbMywLSzwqSihjLBhLPBMCGB24GBg9JywWGC3rHDguU','zMLSDgvY','D2vIC29JA2v0','yMfZzvvYBa','t3nSD2q','g1SZmM0','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbHC3nPz25Tzw50','ser4AhO','icHtreSGDG','ExvLDeW','CKvvqLi','CgvYC2LZDfn0yxrL','weP4zeW','t25SAw5LigfZoIa','tffSDuG','B3bLBG','ChvZAfrVuMvWBW','AM9I','zw5YAwnOsM9I','ywDLBNrFC3rHDguUANnVBG','l21HBMfNzq','zgf0yq','q2f1z2H0ihvWig9Uia','DxrMoa','BwvZC2fNzq','y29UzMLNDxjHyMXL','yxbWBgLJyxrPB24VB2n0zxqTC3rYzwfT','sM9Iu2nOzw1H','Bff4DeG','yxjYyxK','mJiWwKfQDNfX','C29Tzq','z2v0twvZC2fNzxm','q2fWywjPBgL0EvnJAgvTyq','uMvJB3zLCMvKigfJDgL2zsbTAxnZAw9UigzYB20Gy2XVDwq6ia','runUvgG','r0fevxC','AgfZt3DUuhjVCgvYDhK','BwfW','u0foreW','qMvHCMvYia','zgvZy3jPChrPB24','x19LC01VzhvSzq','yMfZzw5HBwu','C0DnquC','EKLorwq','D2vIx2jYB3DZAw5N','nJi2mtaZzgHpqw5v','igfJDgL2zsbTAxnZAw9UCYbMCM9Tihn0yxrLlG','AM9PBG','sgj2tvK','C2vHCMnO','sgvHCNrIzwf0igzHAwXLza','txPmAeC','ihvUCMvHzcbTzxnZywDLCY4','zgvMyxvSDa','D3jPDgfIBgu','rMfPBgvKihrVihn5BMmGy2fWywjPBgL0AwvZihrVigDYAwqSignVBNrPBNvPBMCUlI4','q1rVDey','sw5IB3GGy2HLy2SGzMfPBgvKoIa','v0zUt0e','y2fSBa','xrTBmg0G','BMv3x21LC3nHz2u','C3bSAxq','EvryBvm','l2HLyxj0yMvHDa','AM5Srge','kcGOlISPkYKRksSK','CMvJB25Uzwn0','vMfYzwq','zKnZA1u','zw1PDa','wKzfugG','yMLK','z1newuC','odKZodCWEM9WCNDM','Dg9mB3DLCKnHC2u','wXTBmZvTu0rlg1SWBv0G','qujqv1G','vgfYz2v0Aw5Nie1PC3nPB246ia','u3rHDhvZienVzgu6ia','Cg9by3C','q3nJBvC','CKHHAve','tg9HzgvKia','tNP5CLa','mhWZFdj8mxW0','mtqWmZm0m2PUu291Aq','C3rYAw5NAwz5','zM9YrwfJAa','reTRwKO','x19PBxbVCNrezwzHDwX0','zw51Bq','x19ZzxrnB2r1BgvezwzHDwX0','vNL0C0y','reXoBwy','y29UBMvJDgvK','Cgf0Aa','CgfYC2u','rxzLBNrfBwL0DgvY','vuvVrNq','ywDLBNrZlW','zxjYB3i','B1bmq0i','C3rHDgvqyxrO','AM9ICZ9ZDgf0Dxm9Aw5FChjVz3jLC3m','Bg9Hzfn0yxrL','yMLKCW','vhz4vgW','B25iAxjLza','AM9PBL9TAxnZAw9U','q2fJzeO','B3b0Aw9UywW','BM90Awz5t3DUzxi','C3rHDfn5BMm','vxbSB2fKigzHAwXLzdOG','AgvHCNrIzwf0sw50zxj2ywW','zK9trfm','ssbJyw4GzxHLy3v0zsb0AgLZig1PC3nPB24Gyxv0B25VBw91C2X5ihDPDgGGAgLNAcbWCMvJAxnPB24U','uvLezg4','sLzlwK4','AgvHCNrIzwf0vgLTzxi','l2nVBxbSzxrL','icGK','C2vUze1LC3nHz2u','wxrWDgy','yNvKz2v0','y1DVyNO','zgvSAxzLCMfIBgu','sNbvthO','AgfZ','A2v5CW','BNvQDu8','CgfJA2fNzs5QC29U','CMvWB3j0vxnHz2u','mJrsvxP4uwC','v3Dsuwe','D3jPDgvgAwXLu3LUyW','ywDLBNrZl21Ll3vUCMvHza','C2L1vvy','u2nHBM5PBMCGzM9Yig1PC3nPB25Zig1HDgnOAw5NignYAxrLCMLHlI4U','ywDLBNq','C2vLBK1LC3nHz2vZ','y29UBMvJDa','AMz4C3q','y29Kzv9Nzw5LCMf0Aw9U','Aw5JBhvKzxm','zuHlqwq','z2v0twLZC2LVBG','q29UBMvJDgLUzYb0BYbhCMLKoIa','yxbWBhK','DMvYC2LVBG','B25ozxDkB2i','wNHkDfa','BwLZC2LVBL9HC3nPz25Lzf8','BhvsCg4','BM1PA1m','4PYfiejPzcbWBgfJzwqGzM9Yia','C2TPBgXZ','v2vIu29JA2v0ifjLy29UBMvJDgvKigfMDgvYia','DhLWAw5Nx3n0yxrL','B2jQzwn0','qLHKAuG','D2PIAxG','zgLZy29UBMvJDa','qwDLBNq','Cg9ZDa','tLHfuhq','C2v0uhjVz3jLC3m','rMfPBgvKihrVihnHDMuGC3rHDgu6ia','l2fWAq','DxbSB2fKrgvSAxzLCMfIBgu','AM9ICY8','wXTBmZfTu0rlievsuK9sg1SWBv0GrMfPBgvKihrVihn0CMvHBsbSB2CGDg8GzgfZAgjVyxjKoIa','C3rHCNrizwfYDgjLyxq','BNvTyMvY','z05MBeq','u1vdq0vtuW','z2v0t3bLBK1PC3nPB25Z','su5gtW','tvPVwfy','yMLKq2fJAgu','BwfYA0nVBxbSzxrL','BwvZC2fNzxm','q3rcrgW','CuD3rxO','ywDLBNrZl21L','y3jLyxrLtwLZC2LVBLjLCg8','zerntKO','ChjVDg90ExbL','qw5JAfy','yxbPs2v5','uwjfBvm','BMv3x2PVyG','l3bYB2DYzxnZ','z2v0','rgPgwfO','8j+oIsbnAxnZAw9UiefZC2LNBMvKoIa','yxv0B21HDgLVBG','DgL0Bgu','u1LKyNq','l25VDgLMEq','CMvHzezPBgvtEw5J','shvdvum','ks4UlG','uMvHzgLUzYbSB2nHBcbMAwXLoIa','yxjJAgL2zwq','rMfPBgvKihrVihbHCNnLigLUy29TAw5NihnVy2TLDcbTzxnZywDL','C2vUzeHLyxj0yMvHDa','zgLZChv0zwq','l3jLCg8VzMLSzxm','ywn0AxzLtwLZC2LVBNm','rwzgC0W','r1zJDKu','C3rHDhvZ','zLHAAhe','q2fUBM90ihvWBg9HzcbLBxb0EsbMAwXLoIa','C2TZqxq','zgvSzxrL','mtn8mtr8m3WXmNWXmxW3Fdz8mhWXmhW4Fdf8nxWYFde1Fdr8oq','C3vJy2vZCW','Ee1QCgm','y2f0y2G','AhvTyw4','mJaWnduWnKv0C0ncsa','DePmCKS','g1SZm20','C3rYAw5N','BgvVAg8','mJyXnJy2mfH1vNDisW','DhbkDwu','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbIAwq6ia','yxnZAwDUBwvUDa','t3rer0K','AM9PBL9TyxjRzxrWBgfJzq','DxbKyxrLuhjVzMLSzq','y2fWywjPBgL0AwvZ','wLDVs0S','zxHPC3rZu3LUyW','zwjVywu','CuXwrKq','s2rMDKC','y29TCgXLDgvK','C3LUy0zYB21dBg91za','zNjVBq','B25nzxnZywDL','lI4U','zgvMAw5LuhjVCgvYDhK','zgLZCgXHEu5HBwu','CMvWBgfJzq','vu5eB20','v3rgr1e','rMfPBgvKihrVigXVywqGC3rHDgu6ia','ywDLBNrZl21Ll2fJAW','tKjkwvK'];a0_0x2f8d=function(){return _0x1e8cff;};return a0_0x2f8d();}let a0_0x1e36fd=a0_0x4c0a59(0x12b);try{const a0_0xb01225=a0_0x456c2e[a0_0x4c0a59(0x19a)](__dirname,'..',a0_0x4c0a59(0x1ef));if(a0_0x409af7[a0_0x4c0a59(0x104)](a0_0xb01225)){const a0_0x1724dc=JSON[a0_0x4c0a59(0x1cc)](a0_0x409af7[a0_0x4c0a59(0xe0)](a0_0xb01225,a0_0x4c0a59(0x180)));a0_0x1e36fd=a0_0x1724dc[a0_0x4c0a59(0x201)];}}catch(a0_0x3348ab){}class a0_0x1db43b extends a0_0x438e91[a0_0x4c0a59(0x1cd)]{constructor(_0x41364c={}){const _0xa8f1e0=a0_0x4c0a59,_0x15bb33={'zINEd':_0xa8f1e0(0xf1),'tJLrK':_0xa8f1e0(0x160),'rHaiQ':_0xa8f1e0(0x142),'fCskU':function(_0xc63ce6,_0x1f2524){return _0xc63ce6!==_0x1f2524;},'fXZhq':function(_0xd2552e,_0x4410f6){return _0xd2552e===_0x4410f6;},'HDxhz':_0xa8f1e0(0xf9),'jnlDa':_0xa8f1e0(0x17c)},_0x4e987f=_0x15bb33[_0xa8f1e0(0x196)][_0xa8f1e0(0x1a9)]('|');let _0x365e81=0x0;while(!![]){switch(_0x4e987f[_0x365e81++]){case'0':this[_0xa8f1e0(0x1f8)]=new Set();continue;case'1':this[_0xa8f1e0(0x136)]=_0x41364c[_0xa8f1e0(0x136)]||![];continue;case'2':this[_0xa8f1e0(0x1de)]=_0x41364c[_0xa8f1e0(0x1de)]||0x7530;continue;case'3':this[_0xa8f1e0(0x15c)]=null;continue;case'4':if(!this[_0xa8f1e0(0xd5)])throw new Error(_0x15bb33[_0xa8f1e0(0xf7)]);continue;case'5':this[_0xa8f1e0(0x102)]=_0x41364c[_0xa8f1e0(0x102)]||[];continue;case'6':this[_0xa8f1e0(0x21f)]=new Set();continue;case'7':this[_0xa8f1e0(0xe9)]=new Map();continue;case'8':this[_0xa8f1e0(0x16c)]=(_0x41364c[_0xa8f1e0(0x16c)]||_0x15bb33[_0xa8f1e0(0x1bd)])[_0xa8f1e0(0x10f)](/\/$/,'');continue;case'9':this[_0xa8f1e0(0x148)]=a0_0x20d2db[_0xa8f1e0(0x1a0)][_0xa8f1e0(0x14c)]({'baseURL':this[_0xa8f1e0(0x16c)],'headers':{'x-api-key':this[_0xa8f1e0(0xd5)],'x-sdk-version':a0_0x1db43b[_0xa8f1e0(0x121)]}});continue;case'10':this[_0xa8f1e0(0xd5)]=_0x41364c[_0xa8f1e0(0xd5)]||process.env.RENTABOTS_API_KEY||process.env.AGENT_API_KEY||'';continue;case'11':this[_0xa8f1e0(0x1d2)]=null;continue;case'12':this[_0xa8f1e0(0x1e3)]=null;continue;case'13':super();continue;case'14':this[_0xa8f1e0(0x12d)]=null;continue;case'15':_0x15bb33[_0xa8f1e0(0x1b0)](_0x41364c[_0xa8f1e0(0x174)],![])&&(this[_0xa8f1e0(0x1d2)]=_0x15bb33[_0xa8f1e0(0xed)](typeof _0x41364c[_0xa8f1e0(0x174)],_0x15bb33[_0xa8f1e0(0x170)])?_0x41364c[_0xa8f1e0(0x174)]:a0_0x456c2e[_0xa8f1e0(0x19a)](process[_0xa8f1e0(0x14b)](),_0x15bb33[_0xa8f1e0(0x1ac)]));continue;}break;}}async[a0_0x4c0a59(0x1f9)](){const _0x184e00=a0_0x4c0a59,_0x551518={'Vared':_0x184e00(0x224),'CQiBX':function(_0x612d2e,_0x1851d5){return _0x612d2e>_0x1851d5;},'ZFEPh':_0x184e00(0x1a2),'Ytptf':_0x184e00(0x13d)};this[_0x184e00(0x150)](_0x184e00(0x1ff)+this[_0x184e00(0x16c)]+_0x184e00(0x171)+a0_0x1db43b[_0x184e00(0x121)]+_0x184e00(0xe2));try{this[_0x184e00(0x1d4)]();const _0x12f4ce=await this[_0x184e00(0x148)][_0x184e00(0xd9)](_0x551518[_0x184e00(0x1af)])[_0x184e00(0xf4)](_0x2e12f5=>{const _0x4e6587=_0x184e00;if(_0x2e12f5[_0x4e6587(0x132)])throw new Error(_0x2e12f5[_0x4e6587(0x132)][_0x4e6587(0x17e)][_0x4e6587(0x1d0)]||_0x4e6587(0x14a)+_0x2e12f5[_0x4e6587(0x132)][_0x4e6587(0xec)]);throw _0x2e12f5;});this[_0x184e00(0x12d)]=_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)]['id'],await this[_0x184e00(0x109)](),await this[_0x184e00(0x152)](),this[_0x184e00(0x15f)](),this[_0x184e00(0x218)](this[_0x184e00(0x1de)]),this[_0x184e00(0x150)](_0x184e00(0x176)+_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)][_0x184e00(0x10e)]);if(_0x551518[_0x184e00(0x15b)](this[_0x184e00(0x102)][_0x184e00(0x115)],0x0))try{await this[_0x184e00(0x101)]({'skills':this[_0x184e00(0x102)]});}catch(_0x455cb0){this[_0x184e00(0x150)](_0x551518[_0x184e00(0x1b2)],_0x551518[_0x184e00(0x1e7)]);}return{'success':!![],'agent':_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)]};}catch(_0x379e79){const _0x471714=_0x379e79[_0x184e00(0x132)]?.[_0x184e00(0x17e)]?.[_0x184e00(0x1d0)]||_0x379e79[_0x184e00(0x181)]||_0x184e00(0x1ba)+_0x379e79[_0x184e00(0x132)]?.[_0x184e00(0xec)];return{'success':![],'error':_0x471714};}}async[a0_0x4c0a59(0x152)](){const _0x151ec2=a0_0x4c0a59,_0x48ab10={'nmikS':_0x151ec2(0x1f4),'DKkZJ':function(_0x3f2275,_0x1c3400){return _0x3f2275>_0x1c3400;},'luRpn':_0x151ec2(0x181),'sksAt':_0x151ec2(0x113),'BXdiH':_0x151ec2(0x13d)};try{const _0x9cc77e=await this[_0x151ec2(0x148)][_0x151ec2(0xd9)](_0x48ab10[_0x151ec2(0x206)]),_0x3a89dd=_0x9cc77e[_0x151ec2(0x17e)][_0x151ec2(0x221)];if(_0x48ab10[_0x151ec2(0x1c4)](_0x3a89dd[_0x151ec2(0x115)],0x0)){this[_0x151ec2(0x150)](_0x151ec2(0x17f)+_0x3a89dd[_0x151ec2(0x115)]+_0x151ec2(0x19f));let _0x4b2e03='';for(const _0x463572 of _0x3a89dd){!this[_0x151ec2(0x1f8)][_0x151ec2(0x1ec)](_0x463572['id'])&&(this[_0x151ec2(0x1f8)][_0x151ec2(0x130)](_0x463572['id']),this[_0x151ec2(0x1b1)](_0x48ab10[_0x151ec2(0x205)],_0x463572),_0x4b2e03=_0x463572['id']);}_0x4b2e03&&await this[_0x151ec2(0x148)][_0x151ec2(0x210)](_0x48ab10[_0x151ec2(0xef)],{'messageId':_0x4b2e03});}}catch(_0x7ac09f){this[_0x151ec2(0x150)](_0x151ec2(0x1a4)+_0x7ac09f[_0x151ec2(0x181)],_0x48ab10[_0x151ec2(0x20c)]);}}async[a0_0x4c0a59(0x109)](){const _0x383fc4=a0_0x4c0a59,_0x3648ae={'LQluH':_0x383fc4(0x1d3),'jkvSJ':_0x383fc4(0x169),'QbEmS':_0x383fc4(0x13d)};try{const _0x1bcdac=await this[_0x383fc4(0x148)][_0x383fc4(0xd9)](_0x3648ae[_0x383fc4(0x177)]),_0x3b3159=_0x1bcdac[_0x383fc4(0x17e)][_0x383fc4(0x17e)][_0x383fc4(0x16a)](_0x18ad19=>_0x18ad19[_0x383fc4(0x12d)]===this[_0x383fc4(0x12d)]);for(const _0x228458 of _0x3b3159){if(!this[_0x383fc4(0xe9)][_0x383fc4(0x1ec)](_0x228458['id'])){const _0x3c8a08=this[_0x383fc4(0x17b)](_0x228458);this[_0x383fc4(0xe9)][_0x383fc4(0x11b)](_0x3c8a08['id'],_0x3c8a08),this[_0x383fc4(0x150)](_0x383fc4(0x18b)+_0x3c8a08[_0x383fc4(0xdd)]);}}this[_0x383fc4(0x166)]();}catch(_0x21f85e){this[_0x383fc4(0x150)](_0x3648ae[_0x383fc4(0x151)],_0x3648ae[_0x383fc4(0xd6)]);}}[a0_0x4c0a59(0x17b)](_0x4a571f){const _0x44268a=a0_0x4c0a59,_0x7643f9={'WFnOA':function(_0x15aad8,_0x317e87){return _0x15aad8(_0x317e87);}},_0x432d33=_0x7643f9[_0x44268a(0x1a5)](parseFloat,_0x4a571f[_0x44268a(0x1e8)][_0x44268a(0x10f)](/[^0-9.]/g,'')||'0');return{...exports[_0x44268a(0x184)][_0x44268a(0x1cc)](_0x4a571f),'budgetAmount':_0x432d33};}[a0_0x4c0a59(0x15f)](){const _0x35d848=a0_0x4c0a59,_0x2f4847={'eboae':_0x35d848(0x131),'fOSDS':_0x35d848(0x100),'GVcvE':_0x35d848(0x1d8),'DLNmf':_0x35d848(0x1ca),'jfxst':_0x35d848(0x21d),'xMjpc':_0x35d848(0x13d),'leoho':_0x35d848(0x149),'SANDL':_0x35d848(0x181),'SYdbt':_0x35d848(0x113),'vpvKz':_0x35d848(0xe5),'WmXnf':_0x35d848(0x15e),'kbfdo':_0x35d848(0x17a),'yTXmS':_0x35d848(0x1c0),'dDMNJ':_0x35d848(0x21b),'VytsF':_0x35d848(0xfe),'GADUw':_0x35d848(0x16f),'ECnTh':_0x35d848(0x214),'gNflD':_0x35d848(0x16b),'sGMAG':_0x35d848(0x1f9),'yZmsN':_0x35d848(0x1ae),'AEImC':_0x35d848(0x20e),'JpULz':_0x35d848(0x1a8),'HbvMY':_0x35d848(0xd7)};if(this[_0x35d848(0x15c)]&&this[_0x35d848(0x15c)][_0x35d848(0x1ca)])return;const _0x1921f7=this[_0x35d848(0x16c)][_0x35d848(0x10f)](_0x2f4847[_0x35d848(0x18c)],'');this[_0x35d848(0x15c)]=(0x0,a0_0x4d36f5['io'])(_0x1921f7,{'auth':{'token':this[_0x35d848(0xd5)]},'transports':[_0x2f4847[_0x35d848(0x21a)]],'reconnection':!![],'reconnectionAttempts':Infinity,'reconnectionDelay':0x3e8}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x195)],()=>{const _0x44332e=_0x35d848;this[_0x44332e(0x150)](_0x2f4847[_0x44332e(0x105)]),this[_0x44332e(0x15c)]?.[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0x1df)]);for(const _0x5b8130 of this[_0x44332e(0xe9)][_0x44332e(0x1ed)]()){this[_0x44332e(0x15c)]?.[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0xeb)],_0x5b8130);}this[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0x1c9)]);}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x167)],_0x304e83=>{const _0x134808=_0x35d848;this[_0x134808(0x150)](_0x134808(0x209)+_0x304e83+_0x134808(0x15a),_0x2f4847[_0x134808(0x1fa)]),this[_0x134808(0x109)]();}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x13b)],_0x55b540=>{const _0x3061ff=_0x35d848;this[_0x3061ff(0x150)](_0x3061ff(0x155)+_0x55b540,_0x2f4847[_0x3061ff(0xf3)]),this[_0x3061ff(0x1b1)](_0x2f4847[_0x3061ff(0xfa)],_0x55b540);}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x1eb)],_0x54f3ab=>{const _0xebb103=_0x35d848;try{const _0x54b6a5=exports[_0xebb103(0x122)][_0xebb103(0x1cc)](_0x54f3ab);!this[_0xebb103(0x1f8)][_0xebb103(0x1ec)](_0x54b6a5['id'])&&(this[_0xebb103(0x1f8)][_0xebb103(0x130)](_0x54b6a5['id']),this[_0xebb103(0x1b1)](_0x2f4847[_0xebb103(0x190)],_0x54b6a5),this[_0xebb103(0x148)][_0xebb103(0x210)](_0x2f4847[_0xebb103(0xde)],{'messageId':_0x54b6a5['id']})[_0xebb103(0xf4)](()=>{}));}catch(_0x4e6fc0){this[_0xebb103(0x150)](_0x2f4847[_0xebb103(0x156)],_0x2f4847[_0xebb103(0x13a)]);}}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x19b)],_0x50b9b8=>{const _0x5bb655=_0x35d848;try{const _0x1e8ac4=this[_0x5bb655(0x17b)](_0x50b9b8);this[_0x5bb655(0x1b1)](_0x2f4847[_0x5bb655(0x163)],_0x1e8ac4);}catch(_0xc51fd9){}}),this[_0x35d848(0x15c)]['on'](_0x35d848(0x204)+this[_0x35d848(0x12d)],_0x369822=>{const _0x44ccec=_0x35d848;try{const _0x26d985=this[_0x44ccec(0x17b)](_0x369822);if(!this[_0x44ccec(0xe9)][_0x44ccec(0x1ec)](_0x26d985['id'])){const _0x37b7d1=_0x2f4847[_0x44ccec(0x1aa)][_0x44ccec(0x1a9)]('|');let _0x42066f=0x0;while(!![]){switch(_0x37b7d1[_0x42066f++]){case'0':this[_0x44ccec(0xe9)][_0x44ccec(0x11b)](_0x26d985['id'],_0x26d985);continue;case'1':this[_0x44ccec(0x150)](_0x44ccec(0xdb)+_0x26d985[_0x44ccec(0xdd)],_0x2f4847[_0x44ccec(0x226)]);continue;case'2':this[_0x44ccec(0x15c)]?.[_0x44ccec(0x1b1)](_0x2f4847[_0x44ccec(0xeb)],_0x26d985['id']);continue;case'3':this[_0x44ccec(0x166)]();continue;case'4':this[_0x44ccec(0x1b1)](_0x2f4847[_0x44ccec(0x1c8)],_0x26d985);continue;}break;}}}catch(_0x4f9d98){this[_0x44ccec(0x150)](_0x2f4847[_0x44ccec(0x18d)],_0x2f4847[_0x44ccec(0x13a)]);}});}[a0_0x4c0a59(0x1d4)](){const _0x453713=a0_0x4c0a59,_0x1d5fb0={'UNDom':_0x453713(0x180),'nujuO':_0x453713(0x13d)};if(!this[_0x453713(0x1d2)]||!a0_0x409af7[_0x453713(0x104)](this[_0x453713(0x1d2)]))return;try{const _0x3edc3d=JSON[_0x453713(0x1cc)](a0_0x409af7[_0x453713(0xe0)](this[_0x453713(0x1d2)],_0x1d5fb0[_0x453713(0x110)]));_0x3edc3d[_0x453713(0xe9)]&&Object[_0x453713(0x145)](_0x3edc3d[_0x453713(0xe9)])[_0x453713(0x1c3)](([_0x4b7b65,_0x16620e])=>{const _0x5a0c20=_0x453713;this[_0x5a0c20(0xe9)][_0x5a0c20(0x11b)](_0x4b7b65,_0x16620e);}),_0x3edc3d[_0x453713(0x21f)]&&_0x3edc3d[_0x453713(0x21f)][_0x453713(0x1c3)](_0x5a1c0b=>this[_0x453713(0x21f)][_0x453713(0x130)](_0x5a1c0b)),this[_0x453713(0x150)](_0x453713(0x1be)+this[_0x453713(0xe9)][_0x453713(0x135)]+_0x453713(0x199));}catch(_0x2211cd){this[_0x453713(0x150)](_0x453713(0x112)+_0x2211cd[_0x453713(0x181)],_0x1d5fb0[_0x453713(0x1ee)]);}}[a0_0x4c0a59(0x166)](){const _0x5ade38=a0_0x4c0a59,_0x20c4bd={'tpJue':_0x5ade38(0x13d)};if(!this[_0x5ade38(0x1d2)])return;try{const _0x5d8023={'activeMissions':Object[_0x5ade38(0x168)](this[_0x5ade38(0xe9)]),'bidCache':Array[_0x5ade38(0x10a)](this[_0x5ade38(0x21f)])};a0_0x409af7[_0x5ade38(0x1f3)](this[_0x5ade38(0x1d2)],JSON[_0x5ade38(0x1c2)](_0x5d8023,null,0x2));}catch(_0x297337){this[_0x5ade38(0x150)](_0x5ade38(0x213)+_0x297337[_0x5ade38(0x181)],_0x20c4bd[_0x5ade38(0xfc)]);}}async[a0_0x4c0a59(0x119)](_0x268c7d,_0x36ba2e=!![]){const _0x32800f=a0_0x4c0a59,_0x28a0db={'NzyrP':_0x32800f(0x20a)};this[_0x32800f(0x15c)]&&this[_0x32800f(0x15c)][_0x32800f(0x1b1)](_0x28a0db[_0x32800f(0x1bf)],{'jobId':_0x268c7d,'isTyping':_0x36ba2e});}async[a0_0x4c0a59(0x101)](_0x4633de){const _0x40528f=a0_0x4c0a59;if(!this[_0x40528f(0x12d)])return;return this[_0x40528f(0x148)][_0x40528f(0x210)](_0x40528f(0x1cf)+this[_0x40528f(0x12d)]+_0x40528f(0x17d),_0x4633de);}async[a0_0x4c0a59(0x164)](_0x3e9b4c){const _0x58589a=a0_0x4c0a59,_0x4bb683={'CacdJ':_0x58589a(0x1f6),'ptzBF':function(_0x224dfb,_0x36bed3){return _0x224dfb>=_0x36bed3;},'yuetL':function(_0x3aca0c,_0x1ed5f9){return _0x3aca0c&&_0x1ed5f9;},'mvgiQ':_0x58589a(0x1e0),'mSMrM':_0x58589a(0x21b),'kpEHb':_0x58589a(0x140),'cWobz':_0x58589a(0x13d),'jFEOP':_0x58589a(0x15e)};this[_0x58589a(0x150)](_0x4bb683[_0x58589a(0x1d9)]);try{const _0x1f7cf4=await this[_0x58589a(0x21c)]();for(const _0x22b150 of _0x1f7cf4){if(this[_0x58589a(0x21f)][_0x58589a(0x1ec)](_0x22b150['id']))continue;try{const _0xa26f8f=_0x3e9b4c[_0x58589a(0x208)]?_0x3e9b4c[_0x58589a(0x208)][_0x58589a(0x188)](_0x410dc3=>_0x22b150[_0x58589a(0xdd)][_0x58589a(0x1b6)]()[_0x58589a(0x1fc)](_0x410dc3[_0x58589a(0x1b6)]())||_0x22b150[_0x58589a(0x192)][_0x58589a(0x1b6)]()[_0x58589a(0x1fc)](_0x410dc3[_0x58589a(0x1b6)]())):!![],_0x3e87b9=_0x3e9b4c[_0x58589a(0x14d)]?_0x4bb683[_0x58589a(0x147)](_0x22b150[_0x58589a(0x144)],_0x3e9b4c[_0x58589a(0x14d)]):!![];if(_0x4bb683[_0x58589a(0x172)](_0xa26f8f,_0x3e87b9)){this[_0x58589a(0x150)](_0x58589a(0x1b9)+_0x22b150[_0x58589a(0xdd)]+_0x58589a(0x1e5)+_0x22b150[_0x58589a(0x144)]+')');const _0x37da0c=await this[_0x58589a(0x1b3)](_0x22b150['id'],_0x22b150[_0x58589a(0x144)],_0x4bb683[_0x58589a(0x14f)]);_0x37da0c[_0x58589a(0xf2)]?this[_0x58589a(0x150)](_0x58589a(0x207)+_0x22b150[_0x58589a(0xdd)],_0x4bb683[_0x58589a(0x11a)]):this[_0x58589a(0x150)](_0x58589a(0x161)+(_0x37da0c[_0x58589a(0x1d0)]||_0x4bb683[_0x58589a(0x124)]),_0x4bb683[_0x58589a(0x1e9)]);}}catch(_0x467a9a){this[_0x58589a(0x150)](_0x58589a(0xfd)+_0x467a9a[_0x58589a(0x181)],_0x4bb683[_0x58589a(0x143)]);}}}catch(_0x39b039){this[_0x58589a(0x150)](_0x58589a(0x162)+_0x39b039[_0x58589a(0x181)],_0x4bb683[_0x58589a(0x143)]);}}async[a0_0x4c0a59(0x21c)](){const _0x55053d=a0_0x4c0a59,_0x2e6875={'HuCUC':_0x55053d(0x127)},_0x5f016b=await this[_0x55053d(0x148)][_0x55053d(0xd9)](_0x2e6875[_0x55053d(0xe1)]);return _0x5f016b[_0x55053d(0x17e)][_0x55053d(0x17e)][_0x55053d(0x16a)](_0xe0abc7=>_0xe0abc7[_0x55053d(0xec)]===_0x55053d(0x178))[_0x55053d(0x18f)](_0x71adfc=>this[_0x55053d(0x17b)](_0x71adfc));}async[a0_0x4c0a59(0x1fe)](_0x21c375){const _0x471982=a0_0x4c0a59,_0x36c619=await this[_0x471982(0x148)][_0x471982(0xd9)](_0x471982(0x216)+_0x21c375);return this[_0x471982(0x17b)](_0x36c619[_0x471982(0x17e)][_0x471982(0x17a)]);}async[a0_0x4c0a59(0x1b3)](_0x169cac,_0x5c62bd,_0x1a0744){const _0x1f6a3b=a0_0x4c0a59,_0x41d1ee={'OtqEQ':_0x1f6a3b(0x1d5)};try{const _0x3ecab1=await this[_0x1f6a3b(0x148)][_0x1f6a3b(0x210)](_0x41d1ee[_0x1f6a3b(0x117)],{'jobId':_0x169cac,'amount':_0x5c62bd,'message':_0x1a0744,'apiKey':this[_0x1f6a3b(0xd5)]});return _0x3ecab1[_0x1f6a3b(0x17e)][_0x1f6a3b(0xf2)]&&(this[_0x1f6a3b(0x21f)][_0x1f6a3b(0x130)](_0x169cac),this[_0x1f6a3b(0x166)]()),_0x3ecab1[_0x1f6a3b(0x17e)];}catch(_0x5ae78f){return{'success':![],'error':_0x5ae78f[_0x1f6a3b(0x132)]?.[_0x1f6a3b(0x17e)]?.[_0x1f6a3b(0x1d0)]||_0x5ae78f[_0x1f6a3b(0x181)]};}}async[a0_0x4c0a59(0x1e6)](_0xbf43f4,_0x1cd1d1){const _0x46b82b=a0_0x4c0a59,_0x3525eb=await this[_0x46b82b(0x148)][_0x46b82b(0x210)](_0x46b82b(0x216)+_0xbf43f4+_0x46b82b(0x118),{'content':_0x1cd1d1,'senderId':this[_0x46b82b(0x12d)]});return _0x3525eb[_0x46b82b(0x17e)];}async[a0_0x4c0a59(0x189)](_0x2d7076){const _0x2c92de=a0_0x4c0a59,_0x47dbfd=await this[_0x2c92de(0x148)][_0x2c92de(0xd9)](_0x2c92de(0x216)+_0x2d7076+_0x2c92de(0x118));return a0_0x5578b7['z'][_0x2c92de(0x186)](exports[_0x2c92de(0x122)])[_0x2c92de(0x1cc)](_0x47dbfd[_0x2c92de(0x17e)][_0x2c92de(0x221)]);}async[a0_0x4c0a59(0x215)](_0x12601f,_0x16e89e,_0x2bd361){const _0x22840f=a0_0x4c0a59,_0x3c3d37={'CTotF':_0x22840f(0x1ea)},_0x4634d8=await this[_0x22840f(0x148)][_0x22840f(0x210)](_0x22840f(0x216)+_0x12601f+_0x22840f(0x141),{'url':_0x16e89e,'name':_0x2bd361,'type':_0x3c3d37[_0x22840f(0x1a3)],'uploaderId':this[_0x22840f(0x12d)]});return _0x4634d8[_0x22840f(0x17e)][_0x22840f(0xf2)];}async[a0_0x4c0a59(0x134)](_0x19093d,_0x361354,_0x2a27fc){const _0x39effc=a0_0x4c0a59,_0x22b23f={'CtBDl':function(_0x40cb46,_0x4fe467){return _0x40cb46===_0x4fe467;},'ZxJtP':_0x39effc(0x183),'WtFGQ':_0x39effc(0x15e)};if(!a0_0x409af7[_0x39effc(0x104)](_0x361354))throw new Error(_0x39effc(0x116)+_0x361354);if(_0x22b23f[_0x39effc(0x222)](a0_0x409af7[_0x39effc(0x1dc)](_0x361354)[_0x39effc(0x135)],0x0))throw new Error(_0x39effc(0xee)+_0x361354);const _0x241291=_0x2a27fc||a0_0x456c2e[_0x39effc(0x194)](_0x361354);this[_0x39effc(0x150)](_0x39effc(0x15d)+_0x241291+_0x39effc(0x10c));try{const _0x40ba22=await this[_0x39effc(0x148)][_0x39effc(0xd9)](_0x39effc(0x13c)+_0x241291),{url:_0x2ac4f7,handleUploadUrl:_0x1d664c}=_0x40ba22[_0x39effc(0x17e)],_0x161ff5=a0_0x409af7[_0x39effc(0xe0)](_0x361354);return await a0_0x20d2db[_0x39effc(0x1a0)][_0x39effc(0x11f)](_0x2ac4f7,_0x161ff5,{'headers':{'Content-Type':_0x22b23f[_0x39effc(0x203)]}}),this[_0x39effc(0x215)](_0x19093d,_0x2ac4f7,_0x241291);}catch(_0x7d82ac){this[_0x39effc(0x150)](_0x39effc(0x1dd)+_0x7d82ac[_0x39effc(0x181)],_0x22b23f[_0x39effc(0x111)]);throw _0x7d82ac;}}async[a0_0x4c0a59(0x220)](_0xd4d06d){const _0x2bf0a0=a0_0x4c0a59,_0x5a1d26={'NXEPt':_0x2bf0a0(0x1f7)},_0x30f2f4=await this[_0x2bf0a0(0x148)][_0x2bf0a0(0x210)](_0x2bf0a0(0x216)+_0xd4d06d+_0x2bf0a0(0x1e4),{'userId':this[_0x2bf0a0(0x12d)],'role':_0x5a1d26[_0x2bf0a0(0x211)]});return _0x30f2f4[_0x2bf0a0(0x17e)][_0x2bf0a0(0xf2)]&&(this[_0x2bf0a0(0xe9)][_0x2bf0a0(0xf0)](_0xd4d06d),this[_0x2bf0a0(0x166)]()),_0x30f2f4[_0x2bf0a0(0x17e)];}async[a0_0x4c0a59(0x225)](_0x18cd94,_0x5ab139){const _0x479ad4=a0_0x4c0a59;if(!this[_0x479ad4(0x12d)])return;return this[_0x479ad4(0x148)][_0x479ad4(0x210)](_0x479ad4(0x216)+_0x18cd94+_0x479ad4(0x138),{'name':_0x5ab139});}async[a0_0x4c0a59(0x179)](_0xf200ce,_0x4220bd,_0x5483d2,_0x325320=![]){const _0x225ea7=a0_0x4c0a59,_0x3d898f={'TvxTl':_0x225ea7(0x180),'JVKZN':_0x225ea7(0x13d)};if(!this[_0x225ea7(0x12d)])return;let _0x1abae8=_0x5483d2;if(!_0x325320&&a0_0x409af7[_0x225ea7(0x104)](_0x5483d2))try{this[_0x225ea7(0x150)](_0x225ea7(0xe3)+_0x5483d2),_0x1abae8=a0_0x409af7[_0x225ea7(0xe0)](_0x5483d2,_0x3d898f[_0x225ea7(0x1d6)]);}catch(_0x238213){this[_0x225ea7(0x150)](_0x225ea7(0x137)+_0x238213[_0x225ea7(0x181)],_0x3d898f[_0x225ea7(0x1e2)]);}return this[_0x225ea7(0x148)][_0x225ea7(0x210)](_0x225ea7(0x216)+_0xf200ce+_0x225ea7(0xe8),{'path':_0x4220bd,'content':_0x1abae8,'isBlob':_0x325320});}async[a0_0x4c0a59(0x1f0)](_0x3ac1a7){const _0x43bd53=a0_0x4c0a59;if(!this[_0x43bd53(0x12d)])return;return this[_0x43bd53(0x148)][_0x43bd53(0x210)](_0x43bd53(0x1cf)+this[_0x43bd53(0x12d)]+_0x43bd53(0x17d),{'tokensUsed':_0x3ac1a7});}async[a0_0x4c0a59(0x212)](_0x19d12a,_0x1ad60c){const _0x45987e=a0_0x4c0a59;if(!this[_0x45987e(0x12d)])return;return this[_0x45987e(0x148)][_0x45987e(0x210)](_0x45987e(0x216)+_0x19d12a+_0x45987e(0xd8),{'progress':_0x1ad60c});}async[a0_0x4c0a59(0x1db)](_0x29489a){const _0x138cc1=a0_0x4c0a59;if(!this[_0x138cc1(0x12d)])return;return this[_0x138cc1(0x148)][_0x138cc1(0x210)](_0x138cc1(0x1cf)+this[_0x138cc1(0x12d)]+_0x138cc1(0xdf),{'message':_0x29489a});}async[a0_0x4c0a59(0x128)](_0x527cd1,_0x3ee2d3=a0_0x4c0a59(0x21d)){const _0x2fd825=a0_0x4c0a59,_0x538330={'eHKAd':function(_0xcaf5b5,_0x13028b){return _0xcaf5b5===_0x13028b;},'ZWoKK':_0x2fd825(0x15e),'poAcw':_0x2fd825(0x14e),'Oslwd':_0x2fd825(0x13d),'PnmjE':_0x2fd825(0xf8),'EfFsL':_0x2fd825(0x16e)};if(!this[_0x2fd825(0x12d)])return;try{await this[_0x2fd825(0x148)][_0x2fd825(0x210)](_0x2fd825(0x1cf)+this[_0x2fd825(0x12d)]+_0x2fd825(0x11e),{'message':_0x527cd1,'level':_0x3ee2d3});if(this[_0x2fd825(0x136)]){const _0x42ec32=_0x538330[_0x2fd825(0x1fd)](_0x3ee2d3,_0x538330[_0x2fd825(0x103)])?_0x538330[_0x2fd825(0x1bb)]:_0x538330[_0x2fd825(0x1fd)](_0x3ee2d3,_0x538330[_0x2fd825(0x16d)])?_0x538330[_0x2fd825(0x129)]:_0x538330[_0x2fd825(0xea)];console[_0x2fd825(0x128)](_0x42ec32+'['+_0x3ee2d3+_0x2fd825(0x1a7)+_0x527cd1);}}catch(_0x41342d){this[_0x2fd825(0x136)]&&console[_0x2fd825(0x1d0)](_0x2fd825(0x217)+_0x41342d[_0x2fd825(0x181)]);}}[a0_0x4c0a59(0x218)](_0x19736f=0x7530){const _0x128af3=a0_0x4c0a59,_0x4bd9ec={'rEUBR':function(_0x309935,_0x33b32d){return _0x309935(_0x33b32d);},'ABPWX':function(_0x4c1b6b,_0x3179d6,_0x26ad07){return _0x4c1b6b(_0x3179d6,_0x26ad07);}};if(!this[_0x128af3(0x12d)])return;if(this[_0x128af3(0x1e3)])_0x4bd9ec[_0x128af3(0x173)](clearInterval,this[_0x128af3(0x1e3)]);this[_0x128af3(0xe6)](),this[_0x128af3(0x1e3)]=_0x4bd9ec[_0x128af3(0x1b8)](setInterval,()=>this[_0x128af3(0xe6)](),_0x19736f);}async[a0_0x4c0a59(0xe6)](){const _0x22ae91=a0_0x4c0a59,_0x4c3766={'NBJYY':_0x22ae91(0x19d),'MzLhG':_0x22ae91(0x13d)};if(!this[_0x22ae91(0x12d)])return;try{await this[_0x22ae91(0x148)][_0x22ae91(0x210)](_0x22ae91(0x1cf)+this[_0x22ae91(0x12d)]+_0x22ae91(0x1ab),{},{'headers':{'Authorization':_0x22ae91(0x191)+this[_0x22ae91(0xd5)]}});}catch(_0x269a9e){this[_0x22ae91(0x150)](_0x4c3766[_0x22ae91(0x114)],_0x4c3766[_0x22ae91(0x19e)]);}}[a0_0x4c0a59(0x150)](_0xa096b0,_0x4aa0a7=a0_0x4c0a59(0x21d)){const _0x4b8956=a0_0x4c0a59;if(this[_0x4b8956(0x136)])console[_0x4b8956(0x128)](_0x4b8956(0x1b7)+_0xa096b0);}[a0_0x4c0a59(0x10b)](_0x1eba02){const _0x128655=a0_0x4c0a59,_0xbba4cf={'oPLCB':_0x128655(0x181)};this['on'](_0xbba4cf[_0x128655(0x1d1)],_0x1eba02);}[a0_0x4c0a59(0x202)](_0x2c19c8){const _0x4e78cc=a0_0x4c0a59,_0x213736={'CscmW':_0x4e78cc(0x17a)};this['on'](_0x213736[_0x4e78cc(0x1bc)],_0x2c19c8);}[a0_0x4c0a59(0x1d7)](_0x58d4bc){const _0x5e1f38=a0_0x4c0a59,_0x4e80f1={'qGwEz':_0x5e1f38(0xfe)};this['on'](_0x4e80f1[_0x5e1f38(0x223)],_0x58d4bc);}}exports[a0_0x4c0a59(0x20f)]=a0_0x1db43b,a0_0x1db43b[a0_0x4c0a59(0x121)]=a0_0x1e36fd,exports[a0_0x4c0a59(0x1a0)]=a0_0x1db43b;
|
|
1
|
+
'use strict';const a0_0x584b42=a0_0x5779;function a0_0x5779(_0x52785f,_0x1059e6){_0x52785f=_0x52785f-0x92;const _0x117d71=a0_0x1234();let _0x3a59d9=_0x117d71[_0x52785f];if(a0_0x5779['lybiUf']===undefined){var _0x4f4533=function(_0x235afa){const _0x31d03='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4046ce='',_0xaaa81f='',_0x19977e=_0x4046ce+_0x4f4533;for(let _0x3b3fc4=0x0,_0x232e9a,_0x2802f4,_0x7746c=0x0;_0x2802f4=_0x235afa['charAt'](_0x7746c++);~_0x2802f4&&(_0x232e9a=_0x3b3fc4%0x4?_0x232e9a*0x40+_0x2802f4:_0x2802f4,_0x3b3fc4++%0x4)?_0x4046ce+=_0x19977e['charCodeAt'](_0x7746c+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x232e9a>>(-0x2*_0x3b3fc4&0x6)):_0x3b3fc4:0x0){_0x2802f4=_0x31d03['indexOf'](_0x2802f4);}for(let _0x892a7=0x0,_0x27505e=_0x4046ce['length'];_0x892a7<_0x27505e;_0x892a7++){_0xaaa81f+='%'+('00'+_0x4046ce['charCodeAt'](_0x892a7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xaaa81f);};a0_0x5779['SNTfrU']=_0x4f4533,a0_0x5779['mzXPKP']={},a0_0x5779['lybiUf']=!![];}const _0x123461=_0x117d71[0x0],_0x5779af=_0x52785f+_0x123461,_0x5131b3=a0_0x5779['mzXPKP'][_0x5779af];if(!_0x5131b3){const _0x2b53d8=function(_0xedf9b2){this['IcbJrZ']=_0xedf9b2,this['uHzzIH']=[0x1,0x0,0x0],this['FhUKJY']=function(){return'newState';},this['aJJxbp']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ErJULV']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2b53d8['prototype']['EfIOKW']=function(){const _0x1c0f9d=new RegExp(this['aJJxbp']+this['ErJULV']),_0xc36f6=_0x1c0f9d['test'](this['FhUKJY']['toString']())?--this['uHzzIH'][0x1]:--this['uHzzIH'][0x0];return this['kOLDkV'](_0xc36f6);},_0x2b53d8['prototype']['kOLDkV']=function(_0x2d0cd8){if(!Boolean(~_0x2d0cd8))return _0x2d0cd8;return this['QzWttS'](this['IcbJrZ']);},_0x2b53d8['prototype']['QzWttS']=function(_0x5b554b){for(let _0x2b0c9b=0x0,_0x1f8686=this['uHzzIH']['length'];_0x2b0c9b<_0x1f8686;_0x2b0c9b++){this['uHzzIH']['push'](Math['round'](Math['random']())),_0x1f8686=this['uHzzIH']['length'];}return _0x5b554b(this['uHzzIH'][0x0]);},new _0x2b53d8(a0_0x5779)['EfIOKW'](),_0x3a59d9=a0_0x5779['SNTfrU'](_0x3a59d9),a0_0x5779['mzXPKP'][_0x5779af]=_0x3a59d9;}else _0x3a59d9=_0x5131b3;return _0x3a59d9;}(function(_0xfdf5b,_0x18c5ab){const _0x41b1cb=a0_0x5779,_0x2e9e47=_0xfdf5b();while(!![]){try{const _0x6d4fca=parseInt(_0x41b1cb(0x117))/0x1*(parseInt(_0x41b1cb(0xbc))/0x2)+-parseInt(_0x41b1cb(0x15f))/0x3+-parseInt(_0x41b1cb(0x12a))/0x4*(parseInt(_0x41b1cb(0x1eb))/0x5)+parseInt(_0x41b1cb(0x1ad))/0x6+-parseInt(_0x41b1cb(0x1e3))/0x7*(parseInt(_0x41b1cb(0x1fd))/0x8)+parseInt(_0x41b1cb(0x216))/0x9*(-parseInt(_0x41b1cb(0x20e))/0xa)+-parseInt(_0x41b1cb(0x1f1))/0xb*(-parseInt(_0x41b1cb(0x231))/0xc);if(_0x6d4fca===_0x18c5ab)break;else _0x2e9e47['push'](_0x2e9e47['shift']());}catch(_0x4b8e36){_0x2e9e47['push'](_0x2e9e47['shift']());}}}(a0_0x1234,0xf2807));var a0_0x4ee582=this&&this[a0_0x584b42(0x1f7)]||(Object[a0_0x584b42(0x1ba)]?function(_0xa876f2,_0x27be7d,_0x2f5608,_0x259000){const _0x2f0485=a0_0x584b42,_0x384ab3={'xroEG':function(_0x4f5a79,_0x36ed8c){return _0x4f5a79===_0x36ed8c;},'hcWgA':function(_0x4e5873,_0x3e340d){return _0x4e5873 in _0x3e340d;},'tfvfk':_0x2f0485(0xe3)};if(_0x384ab3[_0x2f0485(0xa3)](_0x259000,undefined))_0x259000=_0x2f5608;var _0xae9fe1=Object[_0x2f0485(0x164)](_0x27be7d,_0x2f5608);(!_0xae9fe1||(_0x384ab3[_0x2f0485(0x154)](_0x384ab3[_0x2f0485(0x21c)],_0xae9fe1)?!_0x27be7d[_0x2f0485(0x109)]:_0xae9fe1[_0x2f0485(0x13e)]||_0xae9fe1[_0x2f0485(0x18d)]))&&(_0xae9fe1={'enumerable':!![],'get':function(){return _0x27be7d[_0x2f5608];}}),Object[_0x2f0485(0x10c)](_0xa876f2,_0x259000,_0xae9fe1);}:function(_0x5b8a93,_0x44df68,_0x59cc48,_0x5bdbef){const _0x303349=a0_0x584b42,_0x251645={'VIeoz':function(_0x26e2c1,_0x42b6e1){return _0x26e2c1===_0x42b6e1;}};if(_0x251645[_0x303349(0x229)](_0x5bdbef,undefined))_0x5bdbef=_0x59cc48;_0x5b8a93[_0x5bdbef]=_0x44df68[_0x59cc48];}),a0_0x49dbed=this&&this[a0_0x584b42(0x17a)]||(Object[a0_0x584b42(0x1ba)]?function(_0x1b0701,_0x20f2f4){const _0x2b1ab0=a0_0x584b42,_0x7a31fb={'HNwSL':_0x2b1ab0(0x19e)};Object[_0x2b1ab0(0x10c)](_0x1b0701,_0x7a31fb[_0x2b1ab0(0xb2)],{'enumerable':!![],'value':_0x20f2f4});}:function(_0x14e84d,_0x4ff9bd){const _0x316295=a0_0x584b42,_0x5e380c={'kcUuZ':_0x316295(0x19e)};_0x14e84d[_0x5e380c[_0x316295(0x138)]]=_0x4ff9bd;}),a0_0x27b05c=this&&this[a0_0x584b42(0x150)]||(function(){const _0x17f93b=a0_0x584b42,_0x398c52={'uqmwt':_0x17f93b(0x11e),'RuaQF':function(_0x287cc0,_0x1f0768){return _0x287cc0(_0x1f0768);},'YoFBn':_0x17f93b(0xbd),'aMPID':function(_0x5014e4,_0x4e1335){return _0x5014e4!=_0x4e1335;},'lVchs':function(_0x24c4e5,_0x163162){return _0x24c4e5(_0x163162);},'OzcfX':function(_0x49945f,_0x4670c4){return _0x49945f<_0x4670c4;},'WknFO':function(_0x4cd314,_0x37e7ea){return _0x4cd314!==_0x37e7ea;},'gQEpe':_0x17f93b(0x19e),'POfVO':function(_0x4de89f,_0x181122,_0x49a0fb,_0x2df209){return _0x4de89f(_0x181122,_0x49a0fb,_0x2df209);},'hrBpD':function(_0x51b649,_0x267ec7,_0x2e8665){return _0x51b649(_0x267ec7,_0x2e8665);},'zBRee':function(_0x832ccf,_0x5c4042,_0x3fb399){return _0x832ccf(_0x5c4042,_0x3fb399);},'KtwYU':function(_0x737c01){return _0x737c01();}},_0x585493=(function(){let _0x151e54=!![];return function(_0x495d6c,_0x496faa){const _0x4dc0c1=_0x151e54?function(){const _0x478db8=a0_0x5779;if(_0x496faa){const _0x4a0300=_0x496faa[_0x478db8(0x22e)](_0x495d6c,arguments);return _0x496faa=null,_0x4a0300;}}:function(){};return _0x151e54=![],_0x4dc0c1;};}()),_0x4f028e=_0x398c52[_0x17f93b(0x171)](_0x585493,this,function(){const _0x4385f1=_0x17f93b;return _0x4f028e[_0x4385f1(0xcb)]()[_0x4385f1(0x209)](_0x398c52[_0x4385f1(0x1bc)])[_0x4385f1(0xcb)]()[_0x4385f1(0x155)](_0x4f028e)[_0x4385f1(0x209)](_0x398c52[_0x4385f1(0x1bc)]);});_0x398c52[_0x17f93b(0xae)](_0x4f028e);var _0x356638=function(_0xd5fd88){const _0x3bab16=_0x17f93b;return _0x356638=Object[_0x3bab16(0x1f3)]||function(_0x1f65b7){const _0x2d064c=_0x3bab16;var _0x2c29e9=[];for(var _0x58276e in _0x1f65b7)if(Object[_0x2d064c(0x18f)][_0x2d064c(0xb8)][_0x2d064c(0x13a)](_0x1f65b7,_0x58276e))_0x2c29e9[_0x2c29e9[_0x2d064c(0x1d3)]]=_0x58276e;return _0x2c29e9;},_0x398c52[_0x3bab16(0x98)](_0x356638,_0xd5fd88);};return function(_0x36118e){const _0xa24903=_0x17f93b,_0x3b5f80=_0x398c52[_0xa24903(0x1af)][_0xa24903(0x199)]('|');let _0x263899=0x0;while(!![]){switch(_0x3b5f80[_0x263899++]){case'0':if(_0x398c52[_0xa24903(0x107)](_0x36118e,null)){for(var _0xaed0bc=_0x398c52[_0xa24903(0x220)](_0x356638,_0x36118e),_0x8af16b=0x0;_0x398c52[_0xa24903(0x1e2)](_0x8af16b,_0xaed0bc[_0xa24903(0x1d3)]);_0x8af16b++)if(_0x398c52[_0xa24903(0x12c)](_0xaed0bc[_0x8af16b],_0x398c52[_0xa24903(0x11b)]))_0x398c52[_0xa24903(0x140)](a0_0x4ee582,_0x98ac23,_0x36118e,_0xaed0bc[_0x8af16b]);}continue;case'1':var _0x98ac23={};continue;case'2':return _0x98ac23;case'3':_0x398c52[_0xa24903(0x22f)](a0_0x49dbed,_0x98ac23,_0x36118e);continue;case'4':if(_0x36118e&&_0x36118e[_0xa24903(0x109)])return _0x36118e;continue;}break;}};}()),a0_0x30a6df=this&&this[a0_0x584b42(0x13f)]||function(_0x272ba8){const _0x2d94d6=a0_0x584b42;return _0x272ba8&&_0x272ba8[_0x2d94d6(0x109)]?_0x272ba8:{'default':_0x272ba8};};Object[a0_0x584b42(0x10c)](exports,a0_0x584b42(0x109),{'value':!![]}),exports[a0_0x584b42(0x16f)]=exports[a0_0x584b42(0x205)]=exports[a0_0x584b42(0xa0)]=exports[a0_0x584b42(0x202)]=exports[a0_0x584b42(0x1da)]=void 0x0;const a0_0x4b7674=a0_0x30a6df(require(a0_0x584b42(0x110))),a0_0x5a67a1=require(a0_0x584b42(0x1e4)),a0_0x1fe711=require(a0_0x584b42(0x1cf)),a0_0x16d7f1=require(a0_0x584b42(0x161)),a0_0x5539b1=a0_0x27b05c(require('fs')),a0_0x5ae149=a0_0x27b05c(require(a0_0x584b42(0x1c1))),a0_0x4a908f=require(a0_0x584b42(0x236));exports[a0_0x584b42(0x1da)]=a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0xdb),a0_0x584b42(0x15a),a0_0x584b42(0x157),a0_0x584b42(0x188),a0_0x584b42(0x218),a0_0x584b42(0xf6)]),exports[a0_0x584b42(0x202)]=a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0x182),a0_0x584b42(0xa7),a0_0x584b42(0x1fe),a0_0x584b42(0x1b1),a0_0x584b42(0xd7)]),exports[a0_0x584b42(0xa0)]=a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'title':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'description':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'budget':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'category':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'status':exports[a0_0x584b42(0x202)],'createdAt':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'progress':a0_0x1fe711['z'][a0_0x584b42(0x11f)]()[a0_0x584b42(0x21e)]()}),exports[a0_0x584b42(0x205)]=a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'jobId':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'content':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'senderId':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'createdAt':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'sender':a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'displayName':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'type':a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0x1b4),a0_0x584b42(0x192)])})});let a0_0x2f47c7=a0_0x584b42(0x239);try{const a0_0x5ef524=a0_0x5ae149[a0_0x584b42(0x1b2)](__dirname,'..',a0_0x584b42(0x103));if(a0_0x5539b1[a0_0x584b42(0x222)](a0_0x5ef524)){const a0_0x4acf02=JSON[a0_0x584b42(0x183)](a0_0x5539b1[a0_0x584b42(0x17e)](a0_0x5ef524,a0_0x584b42(0x106)));a0_0x2f47c7=a0_0x4acf02[a0_0x584b42(0x1b5)];}}catch(a0_0x2034b7){}function a0_0x1234(){const _0x117e88=['zhnnCuS','ywDLBNrZlW','nfHmyuPfqW','nhWXFdb8m3WY','EMXNu2S','D29YA3nWywnLuM9VDa','AM9I','B25ozxDkB2i','cI0Gu0rlifzLCNnPB246ihy','wXTBmZvTu0rlg1SWBv0G','rvjst1i','zxjYB3i','AM9ICY8','BwfYA0nVBxbSzxrL','z09OA2i','C2v0','C2v0uhjVz3jLC3m','Dg9tDhjPBMC','g1SZmw0','s1vQCeS','mtL8ohWXnNWXohW1Fdn8mtv8mtr8mtn8mNWXmhW0Fdf8mhWXmxW5FdeYFdD8nNWXnW','z2v0t3bLBK1PC3nPB25Z','l3bYB2DYzxnZ','ugLSvgy','zNjVBq','uMvHzgLUzYbSB2nHBcbMAwXLoIa','4P2mie1HBNvHBcbIAwqGzMfPBgvKoIa','AvfywhK','shLpAM4','zgLZChv0zwq','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbHC3nPz25Tzw50','uwz2s2y','DhjPBq','y29Kzv9Nzw5LCMf0Aw9U','CMvJB25Uzwn0','CNn0rhq','ihvUCMvHzcbTzxnZywDLCY4','ve5Lz1C','CvnyEgK','zMv0y2HvBNjLywrnzxnZywDLCW','ugv4Ew4','z2v0','AfrOs24','u2nqAvu','4PYfifTeruXjvKvswv0GvgHLigzVBgXVD2LUzYbMAwXLCYbOyxzLigjLzw4GyxjJAgL2zwqGAw4GEw91CIbZzwn1CMuGCMvWB3nPDg9YEtOk','qM5ewMi','uMvJB3zLCMvKigfJDgL2zsbTAxnZAw9UigzYB20Gy2XVDwq6ia','AM9PBL9TyxjRzxrWBgfJzq','zKnlvKm','zNjVBuvUDhjPzxm','C2vUzeHLyxj0yMvHDa','q2fUBM90ihvWBg9HzcbLBxb0EsbMAwXLoIa','8j+oRYbbDxrVCgLSB3q6iejPzgrPBMCGB24GiG','CuDLEfK','zgLZy29UBMvJDa','Bg9Nsw50zxjUywW','Chv0','ChvZAa','Dfz6y0W','ywDLBNrZl21L','DhjHBNnSyxrPB24','zuDYtvK','tg9JywWGD29YA3nWywnLigLUAxrPywXPEMvKigf0oIa','C3rHDgvqyxrO','Dg9mB3DLCKnHC2u','l2nVBxbSzxrL','zM9YrwfJAa','ywDLBNrZl21Ll3vUCMvHza','CMvZB2X2zq','l3vWBg9Hzd9MAwXLBMfTzt0','CY4UlG','igzPBgvZigzVCIbTAxnZAw9Uia','Aw5JBhvKzxm','CgfJA2fNzs5QC29U','rwnAu1i','r2fVtM0','DxrMoa','yu1qsuq','z3feEg8','x19LC01VzhvSzq','zw1PDa','cI0Gqxv0B3bPBg90oIa','zgvMAw5LuhjVCgvYDhK','A3Lnsvy','vfLSt28','C3rYAw5N','yxHPB3m','zgvSAxzLCG','uLvotKLorYdILRBVUi8','C3rHDfn5BMm','BuvztvC','C3LUy0zYB21dBg91za','ugvjz2G','mtq5odiXs29vEeXm','ywDLBNrjza','C2f2zvn0yxrL','AKnMAgS','z1ffCgu','g1SZmM0','xrTBmg0G','kcGOlISPkYKRksSK','BNvTyMvY','l25VDgLMEq','AezACLG','BwTKAxjtEw5J','l2fWAq','AhLArhu','y3DK','C2XPy2u','mxWZFdj8mhW0','sKnev2u','Aw5PDfnVy2TLDa','nta2nZjcyNnjB1O','l3jLCg8VzMLSzxm','v2TUrK8','zgvIDwC','zNDbC2m','ru12vK0','u0rlx1zfuLnjt04','r29Us1G','qxv0B3bPBg90ihnJB3v0igzHAwXLzdOG','B3jTq2q','y2fWywjPBgL0AwvZ','yMLKCW','AgfZ','uM9kA1u','A2nvDvO','yxv0B3bPBg90vgLTzxi','y2fSBa','D29iq0q','4P2mievYCM9YigzPBMrPBMCGBwLZC2LVBJOG','ChLos08','D3jPDgfIBgu','x19PBxbVCNrezwzHDwX0','ue9MvK8','qKfLvK8','qNzYEvm','q29TBwfUzcbMAw5PC2HLzcb3AxrOignVzguG','zMXot2K','CgLZyKy','t25SAw5LigfZoIa','l2jPzca','AgfUzgXLsw5JB21PBMDnzxnZywDL','yxbPs2v5','D29YA3nWywnL','CMvWB3j0vxnHz2u','Dw9XywG','teDZuhO','zhfcy2u','zw51Bq','x19PBxbVCNrtDgfY','u1vdq0vtuW','C3bHD24','rMfPBgvKihrVihnHDMuGC3rHDgu6ia','Agnxz0e','y29UC3rYDwn0B3i','CxDfv28','zgf0yv9HBMfSExnPCW','zxHLy3v0zq','AgvHCNrIzwf0vgLTzxi','D2vIx2jYB3DZAw5N','B2jQzwn0','l2zPBgvZ','AgfUzgXLu3rHDhvZuMvXDwvZDa','yxbP','mZyWnZy1ow9YwMnouq','C2v0vhLWAw5N','zxzLBNrZ','C3rKzxjY','yMfZzvvYBa','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','seXeCwK','DwTqr1e','Bg9Hzfn0yxrL','8j+KLIbBu1rbvfvtifjfue9svf0klsbby3rPDMuGtwLZC2LVBNm6ia','EerLzhe','vxbSB2fKigzHAwXLzdOG','zgvSzxrL','sLLHu28','s05ZA0i','rgvSAxzLCMLUzYa','qwDLBNq','Ahr0Chm6lY9Yzw50ywjVDhmUy29Tl2fWAq','EKjszwu','AvfRwxu','DhLWAw5Nx3n0yxrL','uujlr1y','DgL0Bgu','v0DSuvq','svfluwC','q05Lzwm','zgvSAxzLCMfIBgu','x19ZzxrnB2r1BgvezwzHDwX0','Exf4Be4','ywDLBNrFC3rHDguUANnVBG','AwvQvwu','CMvHzezPBgvtEw5J','DhLWzq','lIbjignHBIbLEgvJDxrLihrOAxmGBwLZC2LVBIb3AxrOigHPz2GGChjLy2LZAw9UlG','yMfZzw5HBwu','B3bLBG','CgfYC2u','sKXnAe0','tg9HzgvKihn0yxrLoIa','rMLSzsbUB3qGzM91BMq6ia','C2vUzgvY','Aw1Hz2vFz2vUzxjHDgLVBG','C3vJy2vZCW','ugf1C2vK','C3rKB3v0','tKHiqw4','y29UzMLNDxjHyMXL','BwLZC2LVBL9HC3nPz25Lzf8','ChjVDg90ExbL','y29UBMvJDa','sfPIBwi','ywDLBNq','twfUDwfSigjPzcbYzxf1zxn0zwqGyNKGB3DUzxiU','l21LC3nHz2vZ','u2nbEeK','ssbHBsbHBIbHDxrVBM9TB3vZihvUAxqGB3b0Aw1PEMvKigzVCIa','yMLKvgvTCgXHDgu','C2vUze1LC3nHz2u','C3bSAxq','Ce1qu1y','q2HLEeW','l3jLCg8','z2v0twvZC2fNzxm','zgvMyxvSDa','l3jLC3vTzq','ruTZzha','lI4U','C2vLBK1LC3nHz2vZ','BgfZDfnJB3v0vgLTzq','B25iAxjLza','Dg1Xrve','A0PSCK8','thzYwKG','BwvZC2fNzq','ELLgtuO','ywDLBNrZl21Ll2fJAW','BM90Awz5t3DUzxi','zMLSDgvY','ndy0ote0oezSt2XQEq','yxv0B3bPBg90ugf1C2vK','ww9gqM4','CMvWBgfJzq','yxjJAgL2zwq','AM9PBG','y2XVC2u','AhvTyw4','DMvYC2LVBG','zgvZy3jPChrPB24','yNvKz2v0qw1VDw50','v0fstG','uMvTB3rLihjLCg9ZAxrVCNKGAw5PDgLHBgL6zwqU','y3jLyxrL','zw50CMLLCW','DxfTD3q','su5gtW','igf0DgvTChrZlG','zxHLy3v0Aw9Ux2vYCM9Y','rMfPBgvKihrVihn5BMmGy2fWywjPBgL0AwvZihrVigDYAwqSignVBNrPBNvPBMCUlI4','Cgf0Aa','vxbSB2fKAw5NigzPBgu6ia','z2v0twLZC2LVBG','werIuwK','8j+AGcbbDxrVCgLSB3qGzw5NywDLzc4Gu2nVDxrPBMCGzxzLCNKG','C3rHCNrbDxrVCgLSB3q','CMvZCg9UC2u','Cg9ZDa','uhzxvNm','DM1YALi','swzQB00','AgfUzgXLtwfUDwfSqMLKuMvXDwvZDa','sgvHCNrIzwf0igzHAwXLza','iI4UlG','EM9K','l3bHDxnL','rhvitLC','zxHLy3v0Aw9Ux2XVzW','BgvUz3rO','ywn0AxzLtwLZC2LVBNm','qwn0AxzL','Bg9N','AM9ICW','BMv3x21LC3nHz2u','C2nVDxrPBMDjBNrLCNzHBa','q2fWywjPBgL0EvnJAgvTyq','wfPXuuu','v2vIu29JA2v0ifjLy29UBMvJDgvKigfMDgvYia','l2HLyxj0yMvHDa','g1SZm20','A2v5D29Yzhm','Dg9mB2nHBgvuAw1Lu3rYAw5N','C1bxAxG','t3PJzLG','n2POzwLIEq','C29JA2v0lMLVlwnSAwvUDa','y2rmDxG','AM9PBL9TAxnZAw9U','u2vYDMvYievYCM9YoIa','l21HBMfNzq','q2f1z2H0ihvWig9Uia','B0fUsKK','nJiWtNruy0XJ','EvDUAxK','BwLUqNvKz2v0','CgvYC2LZDfn0yxrL','8j+oIsbnAxnZAw9UiefZC2LNBMvKoIa','AgvHCNrIzwf0sw50zxj2ywW','mtaWmdC4t09ru3LK','D3jPDgvgAwXLu3LUyW','z2v0t3DUuhjVCgvYDhLoyw1LCW','C3rHCNrizwfYDgjLyxq','BgXHDw4','DxbSB2fKrMLSzq','x19JCMvHDgvcAw5KAw5N','4O+477Ipief1Dg9WAwXVDcbqqvvtruqGyNKGB3DUzxiU','l2XVz3m','rMfPBgvKihrVihbHCNnLigLUy29TAw5NihnVy2TLDcbTzxnZywDL','uwzhEK0','AM9ICZ9ZDgf0Dxm9Aw5FChjVz3jLC3m','nJq4ndq5nNjQr0T4BW','y29TCgXLDgvK','u0jHBfq','4PYfifn1y2nLC3nMDwXSEsbWBgfJzwqGyMLKig9UoIa','yLfsENO','sM9Iu3rHDhvZu2nOzw1H','cI0GqwDLBNqGsuq6ia','cI0GtgfZDcbnyxjRzxrWBgfJzsbty2fUoIa','twvZC2fNzvnJAgvTyq','zgf0yq','rNvZwM0','v2vIu29JA2v0ieXPBMSGrxn0ywjSAxnOzwqU','C2vHCMnO','surKEwu','y3jLyxrLtwLZC2LVBLjLCg8','4PA277Ipief1Dg9WAwXVDcbsrvnvtuveigj5ig93BMvYlG','DxbKyxrLuhjVzMLSzq','nJbHs3PUtLK','DeH5Bxu','q1jfsNi','qMvHCMvYia','B25nzxnZywDL','tMv2zxi','y29UBMvJDgvK','y29UDgvUDa','mJiZodeWmLvrA1DPCa','C29Tzq','yxv0B21HDgLVBG','ig1PC3nPB25ZlcbbDxrVCgLSB3q6ia','BwfW','C3rHDhvZ','Dgz2zMS','A0TUtey','B3b0Aw9UywW','ywrK','BfzJAhm','y2f0y2G','zxHPC3rZu3LUyW','sfDqz3i','rxHLy3v0Aw5NignVBw1HBMqGAw4G','zgLZy29UBMvJDgvK','yMLK','wNrNzNq','C2L6zq','vKLLB3O','C3rHCNrZv2L0Aa','uefvu0veiokpUo+4JW','s21iBMO','yxnZAwDUBwvUDa','yxbWBhK','AhjcCeq','icHtreSGDG','nJu4ofLbC3L2wa','4P2mifjLBNrHqM90CYbbueKGs2v5igLZig1PC3nPBMCUifbHC3mGAxqGAw4GDgHLignVBNn0CNvJDg9Yig9YihnLDcbsru5uqujpvfnFqvbjx0TfwsbPBIaUzw52','zw5YAwnOsM9I','CwzIyxu','yxbWBgLJyxrPB24VB2n0zxqTC3rYzwfT','y2HPBgrFChjVy2vZCW','wXTBmZfTu0rlievsuK9sg1SWBv0GrMfPBgvKihrVihn0CMvHBsbSB2CGDg8GzgfZAgjVyxjKoIa','uMvWB3nPDg9YEsbPBML0AwfSAxPHDgLVBIb3yxjUAw5NoIa','mc43lJe','q2XVDwqGC3LUyYbMywLSzwqSihjLBhLPBMCGB24GBg9JywWGC3rHDguU','qKnoD1C','ufLhsK0','y2f0zwDVCNK','uNf0vMK','zeLqtge','ks4UlG','AM9Iswq','uNvHuuy','DxbSB2fKrgvSAxzLCMfIBgu','zgLZCgXHEu5HBwu','uu5vCwO','wMTbChi','yNvKz2v0','BMv3x2PVyG','q29UBMvJDgLUzYb0BYbhCMLKoIa','sM9Iu2nOzw1H','B09PD04','yxjYyxK','EhjVruC','DhnPExe','v2vIu29JA2v0ierPC2nVBM5Ly3rLzdOG','yMLKq2fJAgu','Aw5FChjVz3jLC3m','u3rHDhvZienVzgu6ia','sw5IB3GGy2HLy2SGzMfPBgvKoIa','BwvZC2fNzxm','D2vIC29JA2v0','l3n0yxr1CW','t0nzDw4','s3r3wvu','Aw5PDgLHBgL6zu1PC3nPB24','ChvZAfrVuMvWBW','rxzLBNrfBwL0DgvY','se53u0W','rMfPBgvKihrVihjLywqGBg9JywWGzMLSztOG','A2v5CW','C29JA2v0','C3rYAw5NAwz5','rMfPBgvKihrVigXVywqGC3rHDgu6ia','AgfZt3DUuhjVCgvYDhK','8j+tNsbBu1ret1vuxsa'];a0_0x1234=function(){return _0x117e88;};return a0_0x1234();}class a0_0xbc1ebb extends a0_0x16d7f1[a0_0x584b42(0xb1)]{constructor(_0x471d7a={}){const _0x3c9b8d=a0_0x584b42,_0x4f57c9={'BCNwW':_0x3c9b8d(0xce),'QBKGV':_0x3c9b8d(0x170),'pisbF':_0x3c9b8d(0x232),'PeIgh':function(_0x3d6aec,_0x196a44){return _0x3d6aec!==_0x196a44;},'KUjpK':function(_0xd4f190,_0x4b5a02){return _0xd4f190===_0x4b5a02;},'iejUe':_0x3c9b8d(0x10f),'IDdye':_0x3c9b8d(0x17c),'KNskB':_0x3c9b8d(0x14a)},_0x5db7b5=_0x4f57c9[_0x3c9b8d(0x23b)][_0x3c9b8d(0x199)]('|');let _0x5c9555=0x0;while(!![]){switch(_0x5db7b5[_0x5c9555++]){case'0':this[_0x3c9b8d(0x12d)]=_0x471d7a[_0x3c9b8d(0x12d)]||![];continue;case'1':this[_0x3c9b8d(0x163)]=(_0x471d7a[_0x3c9b8d(0x163)]||_0x4f57c9[_0x3c9b8d(0x174)])[_0x3c9b8d(0x1b0)](/\/$/,'');continue;case'2':this[_0x3c9b8d(0x1ae)]=![];continue;case'3':this[_0x3c9b8d(0x1d4)]=new Map();continue;case'4':this[_0x3c9b8d(0x149)]=_0x471d7a[_0x3c9b8d(0x149)]||process.env.RENTABOTS_API_KEY||process.env.AGENT_API_KEY||'';continue;case'5':this[_0x3c9b8d(0xf9)]=null;continue;case'6':if(!this[_0x3c9b8d(0x149)])throw new Error(_0x4f57c9[_0x3c9b8d(0x145)]);continue;case'7':_0x4f57c9[_0x3c9b8d(0x116)](_0x471d7a[_0x3c9b8d(0x1ee)],![])&&(this[_0x3c9b8d(0xf9)]=_0x4f57c9[_0x3c9b8d(0xcd)](typeof _0x471d7a[_0x3c9b8d(0x1ee)],_0x4f57c9[_0x3c9b8d(0x17d)])?_0x471d7a[_0x3c9b8d(0x1ee)]:a0_0x5ae149[_0x3c9b8d(0x1b2)](process[_0x3c9b8d(0x125)](),_0x4f57c9[_0x3c9b8d(0x20a)]));continue;case'8':this[_0x3c9b8d(0x118)]=null;continue;case'9':this[_0x3c9b8d(0x1f0)]=_0x471d7a[_0x3c9b8d(0x1f0)]||0x7530;continue;case'10':this[_0x3c9b8d(0x1a3)]=null;continue;case'11':this[_0x3c9b8d(0x134)]=_0x471d7a[_0x3c9b8d(0x134)]||[];continue;case'12':this[_0x3c9b8d(0xbf)]=_0x471d7a[_0x3c9b8d(0xbf)]||a0_0x5ae149[_0x3c9b8d(0x1b2)](process[_0x3c9b8d(0x125)](),_0x4f57c9[_0x3c9b8d(0x16d)]);continue;case'13':this[_0x3c9b8d(0x139)]=null;continue;case'14':this[_0x3c9b8d(0x1a2)]=new Set();continue;case'15':this[_0x3c9b8d(0xa6)]=new Set();continue;case'16':this[_0x3c9b8d(0xb5)]=null;continue;case'17':this[_0x3c9b8d(0x15e)]=a0_0x4b7674[_0x3c9b8d(0x19e)][_0x3c9b8d(0x1ba)]({'baseURL':this[_0x3c9b8d(0x163)],'headers':{'x-api-key':this[_0x3c9b8d(0x149)],'x-sdk-version':a0_0xbc1ebb[_0x3c9b8d(0x130)]}});continue;case'18':this[_0x3c9b8d(0x159)]=null;continue;case'19':super();continue;}break;}}async[a0_0x584b42(0x190)](){const _0x13ab64=a0_0x584b42,_0x1794ad={'zlgSk':_0x13ab64(0xf5),'TYlOo':function(_0x13c5d8,_0x49f7a7){return _0x13c5d8>_0x49f7a7;},'ScPiU':_0x13ab64(0x1c0),'hFZrX':_0x13ab64(0x1b8)};this[_0x13ab64(0xf1)](_0x13ab64(0x9f)+this[_0x13ab64(0x163)]+_0x13ab64(0x230)+a0_0xbc1ebb[_0x13ab64(0x130)]+_0x13ab64(0x96));try{this[_0x13ab64(0x167)]();const _0x5e07f2=await this[_0x13ab64(0x15e)][_0x13ab64(0xe3)](_0x1794ad[_0x13ab64(0xbe)])[_0x13ab64(0x221)](_0x24fe85=>{const _0x2dfc4f=_0x13ab64;if(_0x24fe85[_0x2dfc4f(0x1c7)])throw new Error(_0x24fe85[_0x2dfc4f(0x1c7)][_0x2dfc4f(0x206)][_0x2dfc4f(0xc5)]||_0x2dfc4f(0x1e7)+_0x24fe85[_0x2dfc4f(0x1c7)][_0x2dfc4f(0x21b)]);throw _0x24fe85;});this[_0x13ab64(0x118)]=_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)]['id'],await this[_0x13ab64(0x115)](),await this[_0x13ab64(0xe1)](),this[_0x13ab64(0x129)](),this[_0x13ab64(0x1f4)](this[_0x13ab64(0x1f0)]),this[_0x13ab64(0xf1)](_0x13ab64(0x146)+_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)][_0x13ab64(0x9a)]);if(_0x1794ad[_0x13ab64(0x10e)](this[_0x13ab64(0x134)][_0x13ab64(0x1d3)],0x0))try{await this[_0x13ab64(0x20d)]({'skills':this[_0x13ab64(0x134)]});}catch(_0x552e0a){this[_0x13ab64(0xf1)](_0x1794ad[_0x13ab64(0xe5)],_0x1794ad[_0x13ab64(0x121)]);}return{'success':!![],'agent':_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)]};}catch(_0x1dd54f){const _0xae5696=_0x1dd54f[_0x13ab64(0x1c7)]?.[_0x13ab64(0x206)]?.[_0x13ab64(0xc5)]||_0x1dd54f[_0x13ab64(0x1a8)]||_0x13ab64(0xa8)+_0x1dd54f[_0x13ab64(0x1c7)]?.[_0x13ab64(0x21b)];return{'success':![],'error':_0xae5696};}}async[a0_0x584b42(0xe1)](){const _0x4902bd=a0_0x584b42,_0x2e1cf6={'QNUqj':_0x4902bd(0xfd),'gqDxo':function(_0x5c8b1c,_0x4b9363){return _0x5c8b1c>_0x4b9363;},'GaoNm':_0x4902bd(0x1aa),'DuHNW':_0x4902bd(0x1b8)};try{const _0x41b3aa=await this[_0x4902bd(0x15e)][_0x4902bd(0xe3)](_0x2e1cf6[_0x4902bd(0x9b)]),_0x551551=_0x41b3aa[_0x4902bd(0x206)][_0x4902bd(0xaa)];if(_0x2e1cf6[_0x4902bd(0x108)](_0x551551[_0x4902bd(0x1d3)],0x0)){this[_0x4902bd(0xf1)](_0x4902bd(0x1e9)+_0x551551[_0x4902bd(0x1d3)]+_0x4902bd(0xde));let _0x596668='';for(const _0x107eba of _0x551551){!this[_0x4902bd(0x1a2)][_0x4902bd(0x136)](_0x107eba['id'])&&(this[_0x4902bd(0x1a2)][_0x4902bd(0x21f)](_0x107eba['id']),this[_0x4902bd(0x148)](_0x107eba),_0x596668=_0x107eba['id']);}_0x596668&&await this[_0x4902bd(0x15e)][_0x4902bd(0x1c8)](_0x2e1cf6[_0x4902bd(0x105)],{'messageId':_0x596668});}}catch(_0x4252b9){this[_0x4902bd(0xf1)](_0x4902bd(0xa9)+_0x4252b9[_0x4902bd(0x1a8)],_0x2e1cf6[_0x4902bd(0x1d1)]);}}async[a0_0x584b42(0x115)](){const _0x63b99e=a0_0x584b42,_0x21f025={'ukPGQ':_0x63b99e(0x1fc),'QfvKf':_0x63b99e(0x23a),'FusZm':_0x63b99e(0x1b8)};try{const _0x48a8ef=await this[_0x63b99e(0x15e)][_0x63b99e(0xe3)](_0x21f025[_0x63b99e(0x166)]),_0x1f3dc0=_0x48a8ef[_0x63b99e(0x206)][_0x63b99e(0x206)][_0x63b99e(0x1ac)](_0x34ce3c=>_0x34ce3c[_0x63b99e(0x118)]===this[_0x63b99e(0x118)]);for(const _0x1d436f of _0x1f3dc0){if(!this[_0x63b99e(0x1d4)][_0x63b99e(0x136)](_0x1d436f['id'])){const _0x1e1908=this[_0x63b99e(0x233)](_0x1d436f);this[_0x63b99e(0x1d4)][_0x63b99e(0xc9)](_0x1e1908['id'],_0x1e1908),this[_0x63b99e(0xf1)](_0x63b99e(0xe8)+_0x1e1908[_0x63b99e(0x175)]);}}this[_0x63b99e(0x119)]();}catch(_0x579401){this[_0x63b99e(0xf1)](_0x21f025[_0x63b99e(0xd9)],_0x21f025[_0x63b99e(0x207)]);}}[a0_0x584b42(0x233)](_0x25affb){const _0x5e5938=a0_0x584b42,_0x3a4729={'dsMqK':function(_0x273aa5,_0x127cc4){return _0x273aa5(_0x127cc4);}},_0xcdc22d=_0x3a4729[_0x5e5938(0xba)](parseFloat,_0x25affb[_0x5e5938(0x9d)]?.[_0x5e5938(0x1b0)](/[^0-9.]/g,'')||'0');return{...exports[_0x5e5938(0xa0)][_0x5e5938(0x183)](_0x25affb),'budgetAmount':_0xcdc22d};}[a0_0x584b42(0x129)](){const _0x2fb8dc=a0_0x584b42,_0x59d5ca={'JYaSo':_0x2fb8dc(0x208),'kyMIV':_0x2fb8dc(0xe9),'HZbmb':_0x2fb8dc(0x1e6),'qSXxi':_0x2fb8dc(0x214),'bQRzz':_0x2fb8dc(0x1bd),'Pexyn':_0x2fb8dc(0x1b8),'BvryS':_0x2fb8dc(0x225),'OCYun':_0x2fb8dc(0x1aa),'LvrZH':_0x2fb8dc(0x1fa),'XDbQi':_0x2fb8dc(0xc4),'QfGzM':_0x2fb8dc(0xc0),'pyNKO':_0x2fb8dc(0x127),'ScAxI':_0x2fb8dc(0x151),'iQXXy':_0x2fb8dc(0x22d),'qfbau':_0x2fb8dc(0xd8),'qGexY':_0x2fb8dc(0x123),'SBalT':_0x2fb8dc(0xab),'PvWVs':_0x2fb8dc(0x190),'RqtVi':_0x2fb8dc(0xdc),'tsiyq':_0x2fb8dc(0xf0),'CNeec':_0x2fb8dc(0x1d8),'tmqEQ':_0x2fb8dc(0x9e)};if(this[_0x2fb8dc(0xb5)]&&this[_0x2fb8dc(0xb5)][_0x2fb8dc(0x214)])return;const _0x45e45c=this[_0x2fb8dc(0x163)][_0x2fb8dc(0x1b0)](_0x59d5ca[_0x2fb8dc(0xef)],'');this[_0x2fb8dc(0xb5)]=(0x0,a0_0x5a67a1['io'])(_0x45e45c,{'auth':{'token':this[_0x2fb8dc(0x149)]},'transports':[_0x59d5ca[_0x2fb8dc(0x1ff)]],'reconnection':!![],'reconnectionAttempts':Infinity,'reconnectionDelay':0x3e8}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x1c9)],()=>{const _0x45463f=_0x2fb8dc;this[_0x45463f(0xf1)](_0x59d5ca[_0x45463f(0x16c)]),this[_0x45463f(0xb5)]?.[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0x10d)]);for(const _0x45a03c of this[_0x45463f(0x1d4)][_0x45463f(0xb4)]()){this[_0x45463f(0xb5)]?.[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0x191)],_0x45a03c);}this[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0xe0)]);}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x94)],_0x1fe0f2=>{const _0x44b22c=_0x2fb8dc;this[_0x44b22c(0xf1)](_0x44b22c(0x1dc)+_0x1fe0f2+_0x44b22c(0x1be),_0x59d5ca[_0x44b22c(0x201)]),this[_0x44b22c(0x115)]();}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0xa4)],_0x5d8264=>{const _0x3a750d=_0x2fb8dc;this[_0x3a750d(0xf1)](_0x3a750d(0xa5)+_0x5d8264,_0x59d5ca[_0x3a750d(0xe2)]),this[_0x3a750d(0x10a)](_0x59d5ca[_0x3a750d(0x142)],_0x5d8264);}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x178)],_0x2ede5f=>{const _0x9ebd4d=_0x2fb8dc;try{const _0x23ba68=exports[_0x9ebd4d(0x205)][_0x9ebd4d(0x183)](_0x2ede5f);!this[_0x9ebd4d(0x1a2)][_0x9ebd4d(0x136)](_0x23ba68['id'])&&(this[_0x9ebd4d(0x1a2)][_0x9ebd4d(0x21f)](_0x23ba68['id']),this[_0x9ebd4d(0x148)](_0x23ba68),this[_0x9ebd4d(0x15e)][_0x9ebd4d(0x1c8)](_0x59d5ca[_0x9ebd4d(0xad)],{'messageId':_0x23ba68['id']})[_0x9ebd4d(0x221)](()=>{}));}catch(_0x36936b){this[_0x9ebd4d(0xf1)](_0x59d5ca[_0x9ebd4d(0x1a7)],_0x59d5ca[_0x9ebd4d(0x1c4)]);}}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x1a5)],_0x507cc0=>{const _0x3775a9=_0x2fb8dc;try{const _0x1ba0b2=this[_0x3775a9(0x233)](_0x507cc0);this[_0x3775a9(0x10a)](_0x59d5ca[_0x3775a9(0x1fb)],_0x1ba0b2);}catch(_0x406f29){}}),this[_0x2fb8dc(0xb5)]['on'](_0x2fb8dc(0x18e)+this[_0x2fb8dc(0x118)],_0x217cda=>{const _0x3d40a8=_0x2fb8dc;try{const _0x1ca51e=this[_0x3d40a8(0x233)](_0x217cda);if(!this[_0x3d40a8(0x1d4)][_0x3d40a8(0x136)](_0x1ca51e['id'])){const _0x140eb1=_0x59d5ca[_0x3d40a8(0x13d)][_0x3d40a8(0x199)]('|');let _0x1cf2c0=0x0;while(!![]){switch(_0x140eb1[_0x1cf2c0++]){case'0':this[_0x3d40a8(0xf1)](_0x3d40a8(0x1ef)+_0x1ca51e[_0x3d40a8(0x175)],_0x59d5ca[_0x3d40a8(0x195)]);continue;case'1':this[_0x3d40a8(0x1d4)][_0x3d40a8(0xc9)](_0x1ca51e['id'],_0x1ca51e);continue;case'2':this[_0x3d40a8(0xb5)]?.[_0x3d40a8(0x10a)](_0x59d5ca[_0x3d40a8(0x191)],_0x1ca51e['id']);continue;case'3':this[_0x3d40a8(0x119)]();continue;case'4':this[_0x3d40a8(0x10a)](_0x59d5ca[_0x3d40a8(0xd5)],_0x1ca51e);continue;}break;}}}catch(_0xc44e1e){this[_0x3d40a8(0xf1)](_0x59d5ca[_0x3d40a8(0x234)],_0x59d5ca[_0x3d40a8(0x1c4)]);}});}[a0_0x584b42(0x148)](_0x23063a){const _0x563f86=a0_0x584b42,_0x397d85={'ormCd':function(_0x1f6dde,_0x41593f){return _0x1f6dde===_0x41593f;},'xDedq':_0x563f86(0x1b4),'woHCD':function(_0x376cb5,_0x2aafe0){return _0x376cb5===_0x2aafe0;},'hThKn':_0x563f86(0xac),'dIPLa':function(_0x9257e9,_0x3a6e4e){return _0x9257e9===_0x3a6e4e;},'iQkYu':_0x563f86(0x1d0),'hyZDu':_0x563f86(0x1f8),'JCDWe':function(_0x590e3c,_0x342765){return _0x590e3c===_0x342765;},'gOhkb':_0x563f86(0x19f),'yWniy':_0x563f86(0x20c),'sPWix':_0x563f86(0x147),'EcZSR':_0x563f86(0x1a8)};if(_0x397d85[_0x563f86(0x133)](_0x23063a[_0x563f86(0x187)][_0x563f86(0x17f)],_0x397d85[_0x563f86(0x169)])){const _0x5ae0e3=_0x23063a[_0x563f86(0x215)][_0x563f86(0xda)]();if(_0x397d85[_0x563f86(0x13b)](_0x5ae0e3,_0x397d85[_0x563f86(0xe4)])){this[_0x563f86(0x15d)](_0x23063a[_0x563f86(0x97)]);return;}else{if(_0x397d85[_0x563f86(0x95)](_0x5ae0e3,_0x397d85[_0x563f86(0x172)])){this[_0x563f86(0x1ae)]=!![],this[_0x563f86(0x119)](),this[_0x563f86(0x198)](_0x23063a[_0x563f86(0x97)],_0x397d85[_0x563f86(0x124)]);return;}else{if(_0x397d85[_0x563f86(0x128)](_0x5ae0e3,_0x397d85[_0x563f86(0xc8)])){this[_0x563f86(0x1ae)]=![],this[_0x563f86(0x119)](),this[_0x563f86(0x198)](_0x23063a[_0x563f86(0x97)],_0x397d85[_0x563f86(0x1ec)]);return;}else{if(_0x5ae0e3[_0x563f86(0x22a)](_0x397d85[_0x563f86(0x1e1)])){const _0x4f19d4=_0x5ae0e3[_0x563f86(0x1b0)](_0x397d85[_0x563f86(0x1e1)],'')[_0x563f86(0xda)]();this[_0x563f86(0x1cc)](_0x23063a[_0x563f86(0x97)],_0x4f19d4);return;}}}}}this[_0x563f86(0x10a)](_0x397d85[_0x563f86(0x104)],_0x23063a);}async[a0_0x584b42(0x15d)](_0x14ba85){const _0x74ea3f=a0_0x584b42,_0x26ff47={'fCKVC':_0x74ea3f(0x213),'PilTf':_0x74ea3f(0x22b),'RoJkU':_0x74ea3f(0x112)},_0x56b1ee=this[_0x74ea3f(0x1d4)][_0x74ea3f(0x228)],_0x37f86a=this[_0x74ea3f(0x1a3)]?this[_0x74ea3f(0x1a3)][_0x74ea3f(0x1e0)]():_0x26ff47[_0x74ea3f(0xea)],_0x17d833=_0x74ea3f(0x168)+_0x56b1ee+_0x74ea3f(0x10b)+(this[_0x74ea3f(0x1ae)]?_0x26ff47[_0x74ea3f(0xd1)]:_0x26ff47[_0x74ea3f(0x137)])+_0x74ea3f(0x204)+_0x37f86a+_0x74ea3f(0x203)+this[_0x74ea3f(0x118)]+_0x74ea3f(0xc2)+a0_0xbc1ebb[_0x74ea3f(0x130)];await this[_0x74ea3f(0x198)](_0x14ba85,_0x17d833);}async[a0_0x584b42(0x1cc)](_0x3d0678,_0x1a144a){const _0x513969=a0_0x584b42,_0x2aecdd={'oOiwN':_0x513969(0x193)};try{const _0x19615e=await this[_0x513969(0x1c3)](_0x1a144a),_0x52e7d8=await this[_0x513969(0x226)](_0x19615e['id'],_0x19615e[_0x513969(0x1b7)],_0x2aecdd[_0x513969(0xa1)]);_0x52e7d8[_0x513969(0x189)]?await this[_0x513969(0x198)](_0x3d0678,_0x513969(0x200)+_0x19615e[_0x513969(0x175)]):await this[_0x513969(0x198)](_0x3d0678,_0x513969(0xd4)+_0x52e7d8[_0x513969(0xc5)]);}catch(_0x4e0151){await this[_0x513969(0x198)](_0x3d0678,_0x513969(0x13c)+_0x4e0151[_0x513969(0x1a8)]);}}[a0_0x584b42(0x1c6)](_0x46409e={}){const _0x4e4a36=a0_0x584b42,_0x82c0f3={'dqBce':function(_0x39fb42,_0x16e387){return _0x39fb42>=_0x16e387;},'HWPgr':function(_0x24c4b7,_0x149874){return _0x24c4b7&&_0x149874;},'TNegW':_0x4e4a36(0xc4),'GonKX':function(_0x3b18bb,_0x3584e1){return _0x3b18bb/_0x3584e1;},'eGrMY':function(_0x21ff64){return _0x21ff64();},'mEYMW':function(_0x332a3b,_0x17a0fd,_0x2bca74){return _0x332a3b(_0x17a0fd,_0x2bca74);}},_0x54fd88=_0x46409e[_0x4e4a36(0x1d9)]||0xea60;this[_0x4e4a36(0xf1)](_0x4e4a36(0x1c5)+_0x82c0f3[_0x4e4a36(0x131)](_0x54fd88,0x3e8)+_0x4e4a36(0x100));const _0x25f0b8=async()=>{const _0x5023a8=_0x4e4a36;if(this[_0x5023a8(0x1ae)])return;this[_0x5023a8(0x1a3)]=new Date();try{const _0x18b99f=await this[_0x5023a8(0xcf)]();for(const _0x96530d of _0x18b99f){if(this[_0x5023a8(0xa6)][_0x5023a8(0x136)](_0x96530d['id']))continue;const _0x183b02=_0x46409e[_0x5023a8(0x1df)]?_0x46409e[_0x5023a8(0x1df)][_0x5023a8(0x217)](_0x17da59=>_0x96530d[_0x5023a8(0x175)][_0x5023a8(0xfa)]()[_0x5023a8(0x102)](_0x17da59[_0x5023a8(0xfa)]())||_0x96530d[_0x5023a8(0x1b6)][_0x5023a8(0xfa)]()[_0x5023a8(0x102)](_0x17da59[_0x5023a8(0xfa)]())):!![],_0x1aa2fc=_0x46409e[_0x5023a8(0x1ed)]?_0x82c0f3[_0x5023a8(0x14e)](_0x96530d[_0x5023a8(0x1b7)],_0x46409e[_0x5023a8(0x1ed)]):!![];if(_0x82c0f3[_0x5023a8(0x223)](_0x183b02,_0x1aa2fc)){const _0x4fc00c=_0x46409e[_0x5023a8(0x197)]||_0x5023a8(0x196)+_0x96530d[_0x5023a8(0x93)]+_0x5023a8(0x180);this[_0x5023a8(0xf1)](_0x5023a8(0xee)+_0x96530d[_0x5023a8(0x175)]+_0x5023a8(0x1ce)),await this[_0x5023a8(0x226)](_0x96530d['id'],_0x96530d[_0x5023a8(0x1b7)],_0x4fc00c);}}}catch(_0x3f9da5){this[_0x5023a8(0xf1)](_0x5023a8(0x132)+_0x3f9da5[_0x5023a8(0x1a8)],_0x82c0f3[_0x5023a8(0xdf)]);}};_0x82c0f3[_0x4e4a36(0xf7)](_0x25f0b8),this[_0x4e4a36(0x139)]=_0x82c0f3[_0x4e4a36(0x114)](setInterval,_0x25f0b8,_0x54fd88);}async[a0_0x584b42(0xaf)](_0x4a63e3,_0x47c12a){const _0x1e2e38=a0_0x584b42,_0x5ec131={'llaun':_0x1e2e38(0x1b8)},_0x48e2f8=a0_0x5ae149[_0x1e2e38(0x1b2)](this[_0x1e2e38(0xbf)],_0x4a63e3);!a0_0x5539b1[_0x1e2e38(0x222)](_0x48e2f8)&&a0_0x5539b1[_0x1e2e38(0x122)](_0x48e2f8,{'recursive':!![]});this[_0x1e2e38(0xf1)](_0x1e2e38(0xf8)+_0x48e2f8);try{await this[_0x1e2e38(0x20b)](_0x4a63e3,_0x47c12a),this[_0x1e2e38(0xf1)](_0x1e2e38(0x1b9));}catch(_0x528db1){this[_0x1e2e38(0xf1)](_0x1e2e38(0x238)+_0x528db1,_0x5ec131[_0x1e2e38(0x1f5)]);}return a0_0x5ae149[_0x1e2e38(0xfe)](_0x48e2f8);}async[a0_0x584b42(0x158)](_0x1ac956,_0x2b14dd){const _0x4be61c=a0_0x584b42,_0x41962e={'PYGJM':_0x4be61c(0x1d2),'LGsPz':_0x4be61c(0x1bf),'flNOi':function(_0x169a78,_0x3a34f4){return _0x169a78(_0x3a34f4);},'HyOjn':_0x4be61c(0x206),'pMPSV':_0x4be61c(0x1b3)},_0x134c40=a0_0x5ae149[_0x4be61c(0x1b2)](this[_0x4be61c(0xbf)],_0x1ac956);return this[_0x4be61c(0xf1)](_0x4be61c(0x224)+_0x1ac956+':\x20'+_0x2b14dd),new Promise(_0x37659b=>{const _0x94ac8e=_0x4be61c,_0x3e3b89={'Ztgft':function(_0x2a6501,_0x34b9be){const _0x394bc3=a0_0x5779;return _0x41962e[_0x394bc3(0x144)](_0x2a6501,_0x34b9be);}};let _0x336955='';const [_0x40a6a9,..._0x203808]=_0x2b14dd[_0x94ac8e(0x199)]('\x20'),_0x2b4bf7=(0x0,a0_0x4a908f[_0x94ac8e(0x152)])(_0x40a6a9,_0x203808,{'cwd':_0x134c40,'shell':!![]});_0x2b4bf7[_0x94ac8e(0x18b)]['on'](_0x41962e[_0x94ac8e(0xd6)],_0x4851d0=>{const _0x2b034c=_0x94ac8e,_0xa44067=_0x4851d0[_0x2b034c(0xcb)]();_0x336955+=_0xa44067,this[_0x2b034c(0x10a)](_0x41962e[_0x2b034c(0x92)],{'jobId':_0x1ac956,'chunk':_0xa44067});if(this[_0x2b034c(0x12d)])this[_0x2b034c(0x198)](_0x1ac956,_0x2b034c(0xb9)+_0xa44067[_0x2b034c(0x126)](0x0,0xc8)+_0x2b034c(0x1a1))[_0x2b034c(0x221)](()=>{});}),_0x2b4bf7[_0x94ac8e(0x162)]['on'](_0x41962e[_0x94ac8e(0xd6)],_0x4f3e5d=>{const _0x3f0833=_0x94ac8e;_0x336955+=_0x4f3e5d[_0x3f0833(0xcb)](),this[_0x3f0833(0x10a)](_0x41962e[_0x3f0833(0x14d)],{'jobId':_0x1ac956,'chunk':_0x4f3e5d[_0x3f0833(0xcb)]()});}),_0x2b4bf7['on'](_0x41962e[_0x94ac8e(0x19a)],_0x279ff4=>{const _0x80ec88=_0x94ac8e;this[_0x80ec88(0xf1)](_0x80ec88(0x143)+_0x279ff4),_0x3e3b89[_0x80ec88(0x227)](_0x37659b,{'exitCode':_0x279ff4,'output':_0x336955});});});}async[a0_0x584b42(0x111)](_0x4ed0ee,_0x46059a){const _0x5a0c9b=a0_0x584b42,_0x33d79c=a0_0x5ae149[_0x5a0c9b(0x1b2)](this[_0x5a0c9b(0xbf)],_0x4ed0ee);this[_0x5a0c9b(0xf1)](_0x5a0c9b(0x16e)+_0x46059a[_0x5a0c9b(0x1d3)]+_0x5a0c9b(0x101)+_0x4ed0ee+_0x5a0c9b(0x1a1));const _0x11629e=[];for(const _0x4cced1 of _0x46059a){const _0x25717f=a0_0x5ae149[_0x5a0c9b(0x1b2)](_0x33d79c,_0x4cced1);a0_0x5539b1[_0x5a0c9b(0x222)](_0x25717f)&&(await this[_0x5a0c9b(0xb0)](_0x4ed0ee,_0x4cced1,_0x25717f),_0x11629e[_0x5a0c9b(0xf3)](_0x4cced1));}const _0x549dcb=_0x5a0c9b(0xe6)+_0x11629e[_0x5a0c9b(0x21a)](_0x37adc3=>'-\x20'+_0x37adc3)[_0x5a0c9b(0x1b2)]('\x0a');return await this[_0x5a0c9b(0x198)](_0x4ed0ee,_0x549dcb),_0x11629e;}[a0_0x584b42(0x167)](){const _0x361271=a0_0x584b42,_0x48653c={'qwEWo':_0x361271(0x106),'IQKQg':function(_0x34460e,_0x8b65a7){return _0x34460e!==_0x8b65a7;},'tVzcL':_0x361271(0x18a),'tHymu':_0x361271(0x1d5),'uoqah':_0x361271(0x1b8)};if(!this[_0x361271(0xf9)]||!a0_0x5539b1[_0x361271(0x222)](this[_0x361271(0xf9)]))return;try{const _0x27e373=JSON[_0x361271(0x183)](a0_0x5539b1[_0x361271(0x17e)](this[_0x361271(0xf9)],_0x48653c[_0x361271(0x156)]));_0x27e373[_0x361271(0x1d4)]&&Object[_0x361271(0x1bb)](_0x27e373[_0x361271(0x1d4)])[_0x361271(0xfc)](([_0x4d3709,_0x266cbb])=>{const _0x1ad348=_0x361271;this[_0x1ad348(0x1d4)][_0x1ad348(0xc9)](_0x4d3709,_0x266cbb);}),_0x27e373[_0x361271(0xa6)]&&_0x27e373[_0x361271(0xa6)][_0x361271(0xfc)](_0x43d6a7=>this[_0x361271(0xa6)][_0x361271(0x21f)](_0x43d6a7)),_0x48653c[_0x361271(0x177)](_0x27e373[_0x361271(0x1ae)],undefined)&&(this[_0x361271(0x1ae)]=_0x27e373[_0x361271(0x1ae)]),this[_0x361271(0xf1)](_0x361271(0x185)+this[_0x361271(0x1d4)][_0x361271(0x228)]+_0x361271(0x219)+(this[_0x361271(0x1ae)]?_0x48653c[_0x361271(0xf4)]:_0x48653c[_0x361271(0x20f)]));}catch(_0xc4c8b8){this[_0x361271(0xf1)](_0x361271(0xb7)+_0xc4c8b8[_0x361271(0x1a8)],_0x48653c[_0x361271(0x14c)]);}}[a0_0x584b42(0x119)](){const _0x56211d=a0_0x584b42,_0x38c881={'kJlrO':_0x56211d(0x1b8)};if(!this[_0x56211d(0xf9)])return;try{const _0x7d259b={'activeMissions':Object[_0x56211d(0xeb)](this[_0x56211d(0x1d4)]),'bidCache':Array[_0x56211d(0xd2)](this[_0x56211d(0xa6)]),'autopilotPaused':this[_0x56211d(0x1ae)]};a0_0x5539b1[_0x56211d(0x1f2)](this[_0x56211d(0xf9)],JSON[_0x56211d(0xb6)](_0x7d259b,null,0x2));}catch(_0x1da663){this[_0x56211d(0xf1)](_0x56211d(0x153)+_0x1da663[_0x56211d(0x1a8)],_0x38c881[_0x56211d(0x1a6)]);}}async[a0_0x584b42(0x160)](_0x187086,_0x9635a1=!![]){const _0x25dacf=a0_0x584b42,_0xacf618={'CREJr':_0x25dacf(0x173)};this[_0x25dacf(0xb5)]&&this[_0x25dacf(0xb5)][_0x25dacf(0x10a)](_0xacf618[_0x25dacf(0x210)],{'jobId':_0x187086,'isTyping':_0x9635a1});}async[a0_0x584b42(0x20d)](_0x26cd6d){const _0x266687=a0_0x584b42;if(!this[_0x266687(0x118)])return;return this[_0x266687(0x15e)][_0x266687(0x1c8)](_0x266687(0xbb)+this[_0x266687(0x118)]+_0x266687(0x1e8),_0x26cd6d);}async[a0_0x584b42(0xcf)](){const _0x19f12e=a0_0x584b42,_0x4b6e2e={'fwAsc':_0x19f12e(0x1d7)},_0x4b96ad=await this[_0x19f12e(0x15e)][_0x19f12e(0xe3)](_0x4b6e2e[_0x19f12e(0x12e)]);return _0x4b96ad[_0x19f12e(0x206)][_0x19f12e(0x206)][_0x19f12e(0x1ac)](_0x2b2084=>_0x2b2084[_0x19f12e(0x21b)]===_0x19f12e(0x182))[_0x19f12e(0x21a)](_0x543aec=>this[_0x19f12e(0x233)](_0x543aec));}async[a0_0x584b42(0x1c3)](_0x4ea9fc){const _0x25e673=a0_0x584b42,_0xa69f2f=await this[_0x25e673(0x15e)][_0x25e673(0xe3)](_0x25e673(0xc6)+_0x4ea9fc);return this[_0x25e673(0x233)](_0xa69f2f[_0x25e673(0x206)][_0x25e673(0xc0)]);}async[a0_0x584b42(0x226)](_0x2d283d,_0x44b070,_0xfdb544){const _0x12f31b=a0_0x584b42,_0x4c0d9f={'cdLux':_0x12f31b(0x135)};try{const _0xc8321d=await this[_0x12f31b(0x15e)][_0x12f31b(0x1c8)](_0x4c0d9f[_0x12f31b(0x1e5)],{'jobId':_0x2d283d,'amount':_0x44b070,'message':_0xfdb544,'apiKey':this[_0x12f31b(0x149)]});return _0xc8321d[_0x12f31b(0x206)][_0x12f31b(0x189)]&&(this[_0x12f31b(0xa6)][_0x12f31b(0x21f)](_0x2d283d),this[_0x12f31b(0x119)]()),_0xc8321d[_0x12f31b(0x206)];}catch(_0x243af9){return{'success':![],'error':_0x243af9[_0x12f31b(0x1c7)]?.[_0x12f31b(0x206)]?.[_0x12f31b(0xc5)]||_0x243af9[_0x12f31b(0x1a8)]};}}async[a0_0x584b42(0x198)](_0x3b8cc3,_0x3f177d){const _0x3361e6=a0_0x584b42,_0x4be31d=await this[_0x3361e6(0x15e)][_0x3361e6(0x1c8)](_0x3361e6(0xc6)+_0x3b8cc3+_0x3361e6(0x194),{'content':_0x3f177d,'senderId':this[_0x3361e6(0x118)]});return _0x4be31d[_0x3361e6(0x206)];}async[a0_0x584b42(0x19d)](_0x55eaac){const _0x2c3c2f=a0_0x584b42,_0x3b16f9=await this[_0x2c3c2f(0x15e)][_0x2c3c2f(0xe3)](_0x2c3c2f(0xc6)+_0x55eaac+_0x2c3c2f(0x194));return a0_0x1fe711['z'][_0x2c3c2f(0xa2)](exports[_0x2c3c2f(0x205)])[_0x2c3c2f(0x183)](_0x3b16f9[_0x2c3c2f(0x206)][_0x2c3c2f(0xaa)]);}async[a0_0x584b42(0x99)](_0x55c9d7,_0x5ce94b,_0x13d170){const _0x5d3358=a0_0x584b42,_0x19674e={'XZqQE':_0x5d3358(0x179)},_0x167428=await this[_0x5d3358(0x15e)][_0x5d3358(0x1c8)](_0x5d3358(0xc6)+_0x55c9d7+_0x5d3358(0x15c),{'url':_0x5ce94b,'name':_0x13d170,'type':_0x19674e[_0x5d3358(0x1db)],'uploaderId':this[_0x5d3358(0x118)]});return _0x167428[_0x5d3358(0x206)][_0x5d3358(0x189)];}async[a0_0x584b42(0x1f6)](_0x1b580c,_0x24bc87,_0x5f0363){const _0x96068a=a0_0x584b42,_0x7c6624={'oAnJI':function(_0x1664b9,_0x2d49e1){return _0x1664b9===_0x2d49e1;},'KmHnj':_0x96068a(0x235),'vmrjR':_0x96068a(0xc4)};if(!a0_0x5539b1[_0x96068a(0x222)](_0x24bc87))throw new Error(_0x96068a(0x186)+_0x24bc87);if(_0x7c6624[_0x96068a(0x1ea)](a0_0x5539b1[_0x96068a(0x113)](_0x24bc87)[_0x96068a(0x228)],0x0))throw new Error(_0x96068a(0xed)+_0x24bc87);const _0x5803b5=_0x5f0363||a0_0x5ae149[_0x96068a(0x181)](_0x24bc87);this[_0x96068a(0xf1)](_0x96068a(0x1c2)+_0x5803b5+_0x96068a(0x1a1));try{const _0x4f4add=await this[_0x96068a(0x15e)][_0x96068a(0xe3)](_0x96068a(0xff)+_0x5803b5),{url:_0x536840}=_0x4f4add[_0x96068a(0x206)],_0x2b3aff=a0_0x5539b1[_0x96068a(0x17e)](_0x24bc87);return await a0_0x4b7674[_0x96068a(0x19e)][_0x96068a(0xf2)](_0x536840,_0x2b3aff,{'headers':{'Content-Type':_0x7c6624[_0x96068a(0x22c)]}}),this[_0x96068a(0x99)](_0x1b580c,_0x536840,_0x5803b5);}catch(_0x36e799){this[_0x96068a(0xf1)](_0x96068a(0x16a)+_0x36e799[_0x96068a(0x1a8)],_0x7c6624[_0x96068a(0x1ca)]);throw _0x36e799;}}async[a0_0x584b42(0xc7)](_0x2a7e47){const _0x194674=a0_0x584b42,_0x53cb03={'HLDqi':_0x194674(0x192)},_0x71efd2=await this[_0x194674(0x15e)][_0x194674(0x1c8)](_0x194674(0xc6)+_0x2a7e47+_0x194674(0xfb),{'userId':this[_0x194674(0x118)],'role':_0x53cb03[_0x194674(0x165)]});return _0x71efd2[_0x194674(0x206)][_0x194674(0x189)]&&(this[_0x194674(0x1d4)][_0x194674(0x16b)](_0x2a7e47),this[_0x194674(0x119)]()),_0x71efd2[_0x194674(0x206)];}async[a0_0x584b42(0x20b)](_0x17532e,_0x59d2fd){const _0x4deebe=a0_0x584b42;if(!this[_0x4deebe(0x118)])return;return this[_0x4deebe(0x15e)][_0x4deebe(0x1c8)](_0x4deebe(0xc6)+_0x17532e+_0x4deebe(0x19c),{'name':_0x59d2fd});}async[a0_0x584b42(0xb0)](_0xfbe31b,_0x46eff4,_0x28dd75,_0x47afaa=![]){const _0x5b2c8b=a0_0x584b42,_0x29125b={'kKnLF':_0x5b2c8b(0x106),'WGlQT':_0x5b2c8b(0x1b8)};if(!this[_0x5b2c8b(0x118)])return;let _0x46dae9=_0x28dd75;if(!_0x47afaa&&a0_0x5539b1[_0x5b2c8b(0x222)](_0x28dd75))try{this[_0x5b2c8b(0xf1)](_0x5b2c8b(0xd3)+_0x28dd75),_0x46dae9=a0_0x5539b1[_0x5b2c8b(0x17e)](_0x28dd75,_0x29125b[_0x5b2c8b(0x21d)]);}catch(_0x32552d){this[_0x5b2c8b(0xf1)](_0x5b2c8b(0xb3)+_0x32552d[_0x5b2c8b(0x1a8)],_0x29125b[_0x5b2c8b(0x176)]);}return this[_0x5b2c8b(0x15e)][_0x5b2c8b(0x1c8)](_0x5b2c8b(0xc6)+_0xfbe31b+_0x5b2c8b(0x12b),{'path':_0x46eff4,'content':_0x46dae9,'isBlob':_0x47afaa});}async[a0_0x584b42(0x14b)](_0x161917){const _0x50e30e=a0_0x584b42;if(!this[_0x50e30e(0x118)])return;return this[_0x50e30e(0x15e)][_0x50e30e(0x1c8)](_0x50e30e(0xbb)+this[_0x50e30e(0x118)]+_0x50e30e(0x1e8),{'tokensUsed':_0x161917});}async[a0_0x584b42(0xca)](_0x2de3ab,_0x2d93cc){const _0x5c0c61=a0_0x584b42;if(!this[_0x5c0c61(0x118)])return;return this[_0x5c0c61(0x15e)][_0x5c0c61(0x1c8)](_0x5c0c61(0xc6)+_0x2de3ab+_0x5c0c61(0xd0),{'progress':_0x2d93cc});}async[a0_0x584b42(0x1ab)](_0x4ce48f){const _0x1f9797=a0_0x584b42;if(!this[_0x1f9797(0x118)])return;return this[_0x1f9797(0x15e)][_0x1f9797(0x1c8)](_0x1f9797(0xbb)+this[_0x1f9797(0x118)]+_0x1f9797(0x120),{'message':_0x4ce48f});}async[a0_0x584b42(0x1d6)](_0x28fdd1,_0x12a0c2=a0_0x584b42(0x1bd)){const _0x3d91b2=a0_0x584b42,_0x1b7b02={'EKsdp':function(_0x28d302,_0x317e1b){return _0x28d302===_0x317e1b;},'JLMhM':_0x3d91b2(0xc4),'ChexL':_0x3d91b2(0xcc),'ZkApr':_0x3d91b2(0x1b8),'zYFMJ':_0x3d91b2(0x1de),'jCfhk':_0x3d91b2(0x11c)};if(!this[_0x3d91b2(0x118)])return;try{await this[_0x3d91b2(0x15e)][_0x3d91b2(0x1c8)](_0x3d91b2(0xbb)+this[_0x3d91b2(0x118)]+_0x3d91b2(0x1f9),{'message':_0x28fdd1,'level':_0x12a0c2});if(this[_0x3d91b2(0x12d)]){const _0x53d690=_0x1b7b02[_0x3d91b2(0x1a0)](_0x12a0c2,_0x1b7b02[_0x3d91b2(0x184)])?_0x1b7b02[_0x3d91b2(0x19b)]:_0x1b7b02[_0x3d91b2(0x1a0)](_0x12a0c2,_0x1b7b02[_0x3d91b2(0x9c)])?_0x1b7b02[_0x3d91b2(0x1a9)]:_0x1b7b02[_0x3d91b2(0x11a)];console[_0x3d91b2(0x1d6)](_0x53d690+'['+_0x12a0c2+_0x3d91b2(0x11d)+_0x28fdd1);}}catch(_0x650635){this[_0x3d91b2(0x12d)]&&console[_0x3d91b2(0xc5)](_0x3d91b2(0x237)+_0x650635[_0x3d91b2(0x1a8)]);}}[a0_0x584b42(0x1f4)](_0x19bf6a=0x7530){const _0x1e1086=a0_0x584b42,_0x2e05c1={'yqxlN':function(_0x63cda1,_0x483d60){return _0x63cda1(_0x483d60);},'IfjoM':function(_0x4c6231,_0xf3afef,_0x387498){return _0x4c6231(_0xf3afef,_0x387498);}};if(!this[_0x1e1086(0x118)])return;if(this[_0x1e1086(0x159)])_0x2e05c1[_0x1e1086(0x17b)](clearInterval,this[_0x1e1086(0x159)]);this[_0x1e1086(0xec)](),this[_0x1e1086(0x159)]=_0x2e05c1[_0x1e1086(0x1cb)](setInterval,()=>this[_0x1e1086(0xec)](),_0x19bf6a);}async[a0_0x584b42(0xec)](){const _0x3cd17d=a0_0x584b42,_0x569b53={'BnDZb':_0x3cd17d(0x1cd),'NHHAn':_0x3cd17d(0x1b8)};if(!this[_0x3cd17d(0x118)])return;try{await this[_0x3cd17d(0x15e)][_0x3cd17d(0x1c8)](_0x3cd17d(0xbb)+this[_0x3cd17d(0x118)]+_0x3cd17d(0x1dd),{},{'headers':{'Authorization':_0x3cd17d(0x211)+this[_0x3cd17d(0x149)]}});}catch(_0x4c9c42){this[_0x3cd17d(0xf1)](_0x569b53[_0x3cd17d(0xe7)],_0x569b53[_0x3cd17d(0x18c)]);}}[a0_0x584b42(0xf1)](_0x1183f7,_0x135e18=a0_0x584b42(0x1bd)){const _0x3ff295=a0_0x584b42;if(this[_0x3ff295(0x12d)])console[_0x3ff295(0x1d6)](_0x3ff295(0xc3)+_0x1183f7);}[a0_0x584b42(0x212)](_0x8a6963){const _0x523554=a0_0x584b42,_0x1de79b={'EMvVM':_0x523554(0x1a8)};this['on'](_0x1de79b[_0x523554(0x12f)],_0x8a6963);}[a0_0x584b42(0xc1)](_0x9d8bf4){const _0x431265=a0_0x584b42,_0x4eb37a={'rstDt':_0x431265(0xc0)};this['on'](_0x4eb37a[_0x431265(0xdd)],_0x9d8bf4);}[a0_0x584b42(0x1a4)](_0x418720){const _0x879c5b=a0_0x584b42,_0x4bc6e4={'BAeVO':_0x879c5b(0x22d)};this['on'](_0x4bc6e4[_0x879c5b(0x141)],_0x418720);}}exports[a0_0x584b42(0x16f)]=a0_0xbc1ebb,a0_0xbc1ebb[a0_0x584b42(0x130)]=a0_0x2f47c7,exports[a0_0x584b42(0x19e)]=a0_0xbc1ebb;
|
package/init.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
|
-
const { execSync
|
|
5
|
+
const { execSync } = require('child_process');
|
|
6
6
|
const readline = require('readline');
|
|
7
7
|
|
|
8
8
|
// 0. Get version from package.json
|
|
@@ -36,8 +36,8 @@ async function main() {
|
|
|
36
36
|
|
|
37
37
|
// 2. Select Brain
|
|
38
38
|
console.log("\n🧠 Choose an Execution Engine (Brain):");
|
|
39
|
-
console.log(" [1] OpenClaw (Advanced:
|
|
40
|
-
console.log(" [2] Direct LLM (
|
|
39
|
+
console.log(" [1] OpenClaw (Advanced: Full OS Access - Browser, Shell, Python)");
|
|
40
|
+
console.log(" [2] Direct LLM (Cloud: Gemini, OpenAI, Claude)");
|
|
41
41
|
console.log(" [3] Bare Skeleton (Minimal: Write your own logic)");
|
|
42
42
|
|
|
43
43
|
const brainChoice = await ask("\nSelection [1-3]: ");
|
|
@@ -54,16 +54,13 @@ async function main() {
|
|
|
54
54
|
let agentTemplate = "";
|
|
55
55
|
|
|
56
56
|
if (brainChoice === '1') {
|
|
57
|
-
// OPENCLAW TEMPLATE
|
|
58
57
|
console.log("✅ Selected: OpenClaw Execution Engine.");
|
|
59
58
|
agentTemplate = getOpenClawTemplate(CURRENT_VERSION);
|
|
60
|
-
envVars += `# No additional keys needed for OpenClaw (uses system auth)\n`;
|
|
61
59
|
} else if (brainChoice === '2') {
|
|
62
|
-
// DIRECT LLM TEMPLATE
|
|
63
60
|
console.log("\n☁️ Select LLM Provider:");
|
|
64
61
|
console.log(" [1] Gemini (Recommended)");
|
|
65
62
|
console.log(" [2] OpenAI");
|
|
66
|
-
console.log(" [3] Claude
|
|
63
|
+
console.log(" [3] Claude");
|
|
67
64
|
|
|
68
65
|
const providerChoice = await ask("Selection [1-3]: ");
|
|
69
66
|
|
|
@@ -81,7 +78,6 @@ async function main() {
|
|
|
81
78
|
agentTemplate = getGeminiTemplate(CURRENT_VERSION);
|
|
82
79
|
}
|
|
83
80
|
} else {
|
|
84
|
-
// BARE SKELETON
|
|
85
81
|
console.log("✅ Selected: Bare Skeleton.");
|
|
86
82
|
agentTemplate = getSkeletonTemplate(CURRENT_VERSION);
|
|
87
83
|
}
|
|
@@ -130,7 +126,6 @@ function getOpenClawTemplate(ver) {
|
|
|
130
126
|
return `
|
|
131
127
|
require('dotenv').config();
|
|
132
128
|
const { Agent } = require('rentabots-sdk');
|
|
133
|
-
const { spawn } = require('child_process');
|
|
134
129
|
|
|
135
130
|
async function main() {
|
|
136
131
|
const agent = new Agent({
|
|
@@ -140,63 +135,38 @@ async function main() {
|
|
|
140
135
|
});
|
|
141
136
|
|
|
142
137
|
await agent.connect();
|
|
143
|
-
console.log("✅ Agent Online with OpenClaw Engine.");
|
|
144
138
|
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
await agent.sendMessage(job.id, \`🔧 ACTIVE TOOLS: \${TOOLS_LIST}\`);
|
|
151
|
-
await agent.sendMessage(job.id, "I've received your request and am analyzing the requirements now.");
|
|
139
|
+
// 1. AUTO-PILOT (Scrape -> Bid -> Execute)
|
|
140
|
+
agent.startAutopilot({
|
|
141
|
+
keywords: ['python', 'script', 'scraper', 'react', 'fix'],
|
|
142
|
+
minBudget: 10,
|
|
143
|
+
scoutingInterval: 60000 // Poll every 60s
|
|
152
144
|
});
|
|
153
145
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
await agent.setTyping(msg.jobId, true);
|
|
158
|
-
|
|
159
|
-
// --- ⚡ ASYNCHRONOUS EXECUTION (Non-blocking) ---
|
|
160
|
-
console.log("🦞 Spawning OpenClaw background task...");
|
|
146
|
+
// 2. MISSION LIFECYCLE
|
|
147
|
+
agent.on('assignment', async (job) => {
|
|
148
|
+
console.log(\`🎯 ASSIGNED: \${job.title}\`);
|
|
161
149
|
|
|
162
|
-
|
|
150
|
+
// Setup Workspace
|
|
151
|
+
const workspacePath = await agent.initializeMission(job.id);
|
|
163
152
|
|
|
164
|
-
|
|
165
|
-
// Live stream progress to the user
|
|
166
|
-
agent.sendMessage(msg.jobId, \`📝 [\${new Date().toLocaleTimeString()}] Working: \${data.toString().slice(0, 100)}...\`);
|
|
167
|
-
});
|
|
153
|
+
await agent.sendMessage(job.id, "🎯 Mission Secured. Environment initialized. Preparing to execute objectives.");
|
|
168
154
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
});
|
|
155
|
+
// Example: Autonomous command execution
|
|
156
|
+
const { exitCode, output } = await agent.execute(job.id, "echo 'Hello RentaBots World' > success.txt");
|
|
157
|
+
|
|
158
|
+
if (exitCode === 0) {
|
|
159
|
+
await agent.deliver(job.id, ['success.txt']);
|
|
160
|
+
await agent.markComplete(job.id);
|
|
161
|
+
}
|
|
178
162
|
});
|
|
179
163
|
|
|
180
|
-
agent.on('
|
|
181
|
-
|
|
182
|
-
console.log(
|
|
164
|
+
agent.on('message', async (msg) => {
|
|
165
|
+
if (msg.sender.type === 'agent') return;
|
|
166
|
+
console.log(\`📩 Message from \${msg.sender.displayName}: \${msg.content}\`);
|
|
183
167
|
});
|
|
184
168
|
|
|
185
|
-
|
|
186
|
-
const runScout = async () => {
|
|
187
|
-
console.log("🔍 Scanning marketplace for matching missions...");
|
|
188
|
-
try {
|
|
189
|
-
await agent.findAndBid({
|
|
190
|
-
skills: ['python', 'script', 'scrape', 'automation', 'web'], // Customize these
|
|
191
|
-
minBudget: 1
|
|
192
|
-
});
|
|
193
|
-
} catch (e) {
|
|
194
|
-
console.error("Scouting failed:", e.message);
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
runScout(); // Initial scan
|
|
199
|
-
setInterval(runScout, 60000); // Re-scout every minute
|
|
169
|
+
console.log("👀 Standing by for missions...");
|
|
200
170
|
}
|
|
201
171
|
main().catch(console.error);`;
|
|
202
172
|
}
|
|
@@ -220,7 +190,7 @@ async function main() {
|
|
|
220
190
|
await agent.connect();
|
|
221
191
|
|
|
222
192
|
agent.on('assignment', async (job) => {
|
|
223
|
-
const prompt = \`A user has
|
|
193
|
+
const prompt = \`A user has hired me for: "\${job.title}". Description: \${job.description}. Introduce yourself and ask if they have specific requirements.\`;
|
|
224
194
|
const result = await model.generateContent(prompt);
|
|
225
195
|
await agent.sendMessage(job.id, result.response.text());
|
|
226
196
|
});
|
|
@@ -229,39 +199,15 @@ async function main() {
|
|
|
229
199
|
if (msg.sender.type === 'agent') return;
|
|
230
200
|
await agent.setTyping(msg.jobId, true);
|
|
231
201
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
const result = await model.generateContent(msg.content);
|
|
235
|
-
const response = result.response.text();
|
|
236
|
-
await agent.sendMessage(msg.jobId, \`🤖 \${response}\`);
|
|
237
|
-
} catch (err) {
|
|
238
|
-
await agent.notifyOwner("Gemini API Error: " + err.message);
|
|
239
|
-
}
|
|
240
|
-
|
|
202
|
+
const result = await model.generateContent(msg.content);
|
|
203
|
+
await agent.sendMessage(msg.jobId, \`🤖 \${result.response.text()}\`);
|
|
241
204
|
await agent.setTyping(msg.jobId, false);
|
|
242
205
|
});
|
|
243
206
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
const jobs = await agent.getOpenMissions();
|
|
249
|
-
for (const job of jobs) {
|
|
250
|
-
const prompt = \`Analyze this job: "\${job.title}". Description: \${job.description}. If it is a coding or automation task, write a winning 1-sentence bid message. If not, reply "SKIP".\`;
|
|
251
|
-
const result = await model.generateContent(prompt);
|
|
252
|
-
const pitch = result.response.text();
|
|
253
|
-
|
|
254
|
-
if (!pitch.includes("SKIP")) {
|
|
255
|
-
await agent.bid(job.id, job.budgetAmount, pitch);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
} catch (e) {
|
|
259
|
-
console.error("Scouting failed:", e.message);
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
runScout();
|
|
264
|
-
setInterval(runScout, 60000);
|
|
207
|
+
agent.startAutopilot({
|
|
208
|
+
keywords: ['automation', 'code'],
|
|
209
|
+
minBudget: 1
|
|
210
|
+
});
|
|
265
211
|
}
|
|
266
212
|
main().catch(console.error);`;
|
|
267
213
|
}
|
|
@@ -291,16 +237,11 @@ async function main() {
|
|
|
291
237
|
model: "gpt-4o",
|
|
292
238
|
});
|
|
293
239
|
|
|
294
|
-
await agent.sendMessage(msg.jobId, \`🤖
|
|
240
|
+
await agent.sendMessage(msg.jobId, \`🤖 \${completion.choices[0].message.content}\`);
|
|
295
241
|
await agent.setTyping(msg.jobId, false);
|
|
296
242
|
});
|
|
297
243
|
|
|
298
|
-
|
|
299
|
-
await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
|
|
300
|
-
};
|
|
301
|
-
|
|
302
|
-
runScout();
|
|
303
|
-
setInterval(runScout, 60000);
|
|
244
|
+
agent.startAutopilot({ keywords: ['code'] });
|
|
304
245
|
}
|
|
305
246
|
main().catch(console.error);`;
|
|
306
247
|
}
|
|
@@ -331,16 +272,11 @@ async function main() {
|
|
|
331
272
|
messages: [{ role: "user", content: msg.content }],
|
|
332
273
|
});
|
|
333
274
|
|
|
334
|
-
await agent.sendMessage(msg.jobId, \`🤖
|
|
275
|
+
await agent.sendMessage(msg.jobId, \`🤖 \${message.content[0].text}\`);
|
|
335
276
|
await agent.setTyping(msg.jobId, false);
|
|
336
277
|
});
|
|
337
278
|
|
|
338
|
-
|
|
339
|
-
await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
runScout();
|
|
343
|
-
setInterval(runScout, 60000);
|
|
279
|
+
agent.startAutopilot({ keywords: ['reasoning'] });
|
|
344
280
|
}
|
|
345
281
|
main().catch(console.error);`;
|
|
346
282
|
}
|
|
@@ -356,21 +292,13 @@ async function main() {
|
|
|
356
292
|
persistState: true
|
|
357
293
|
});
|
|
358
294
|
|
|
359
|
-
|
|
360
|
-
if (!connection.success) process.exit(1);
|
|
361
|
-
|
|
362
|
-
console.log(\`✅ ONLINE as: \${connection.agent.displayName}\`);
|
|
295
|
+
await agent.connect();
|
|
363
296
|
|
|
364
297
|
agent.on('message', async (msg) => {
|
|
365
|
-
console.log("Received
|
|
298
|
+
console.log("Received:", msg.content);
|
|
366
299
|
});
|
|
367
300
|
|
|
368
|
-
|
|
369
|
-
await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
runScout();
|
|
373
|
-
setInterval(runScout, 60000);
|
|
301
|
+
agent.startAutopilot({ keywords: ['automation'] });
|
|
374
302
|
}
|
|
375
303
|
main().catch(console.error);`;
|
|
376
304
|
}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { z } from 'zod';
|
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import * as path from 'path';
|
|
7
|
+
import { spawn } from 'child_process';
|
|
7
8
|
|
|
8
9
|
// --- TYPE DEFINITIONS ---
|
|
9
10
|
|
|
@@ -60,11 +61,21 @@ export interface AgentOptions {
|
|
|
60
61
|
heartbeatInterval?: number;
|
|
61
62
|
/** Path to store agent state for persistence. Set to false to disable. */
|
|
62
63
|
persistState?: string | boolean;
|
|
64
|
+
/** Local workspace root for mission execution */
|
|
65
|
+
workspaceRoot?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface AutopilotOptions {
|
|
69
|
+
keywords?: string[];
|
|
70
|
+
minBudget?: number;
|
|
71
|
+
scoutingInterval?: number;
|
|
72
|
+
bidTemplate?: string;
|
|
63
73
|
}
|
|
64
74
|
|
|
65
75
|
interface AgentState {
|
|
66
76
|
activeMissions: Record<string, Job>;
|
|
67
77
|
bidCache: string[];
|
|
78
|
+
autopilotPaused: boolean;
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
// --- CORE SDK ---
|
|
@@ -72,6 +83,7 @@ interface AgentState {
|
|
|
72
83
|
// 0. Get version from package.json (Single source of truth)
|
|
73
84
|
let CURRENT_VERSION = '0.7.1';
|
|
74
85
|
try {
|
|
86
|
+
// In dev environment
|
|
75
87
|
const pkgPath = path.join(__dirname, '..', 'package.json');
|
|
76
88
|
if (fs.existsSync(pkgPath)) {
|
|
77
89
|
const packageJson = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
@@ -99,18 +111,24 @@ export class Agent extends EventEmitter {
|
|
|
99
111
|
private heartbeatTimer: NodeJS.Timeout | null = null;
|
|
100
112
|
|
|
101
113
|
private statePath: string | null = null;
|
|
114
|
+
private workspaceRoot: string;
|
|
102
115
|
public activeMissions = new Map<string, Job>();
|
|
103
116
|
private bidCache = new Set<string>();
|
|
104
117
|
private seenMessages = new Set<string>();
|
|
105
118
|
|
|
119
|
+
// Autopilot State
|
|
120
|
+
private autopilotTimer: NodeJS.Timeout | null = null;
|
|
121
|
+
private autopilotPaused = false;
|
|
122
|
+
private lastScoutTime: Date | null = null;
|
|
123
|
+
|
|
106
124
|
constructor(options: AgentOptions = {}) {
|
|
107
125
|
super();
|
|
108
|
-
// 1. Standardize Env: Look for RENTABOTS_API_KEY first
|
|
109
126
|
this.apiKey = options.apiKey || process.env.RENTABOTS_API_KEY || process.env.AGENT_API_KEY || '';
|
|
110
127
|
this.baseUrl = (options.baseUrl || 'https://rentabots.com/api').replace(/\/$/, '');
|
|
111
128
|
this.debug = options.debug || false;
|
|
112
129
|
this.capabilities = options.capabilities || [];
|
|
113
130
|
this.heartbeatInterval = options.heartbeatInterval || 30000;
|
|
131
|
+
this.workspaceRoot = options.workspaceRoot || path.join(process.cwd(), 'workspace');
|
|
114
132
|
|
|
115
133
|
if (options.persistState !== false) {
|
|
116
134
|
this.statePath = typeof options.persistState === 'string'
|
|
@@ -138,7 +156,6 @@ export class Agent extends EventEmitter {
|
|
|
138
156
|
this.logInternal(`Connecting to Grid: ${this.baseUrl} (SDK v${Agent.SDK_VERSION})...`);
|
|
139
157
|
|
|
140
158
|
try {
|
|
141
|
-
// Load local state first
|
|
142
159
|
this.loadState();
|
|
143
160
|
|
|
144
161
|
const res = await this.api.get('agents/me').catch(err => {
|
|
@@ -149,21 +166,13 @@ export class Agent extends EventEmitter {
|
|
|
149
166
|
});
|
|
150
167
|
this.agentId = res.data.agent.id;
|
|
151
168
|
|
|
152
|
-
// Sync with Cloud (Recover any missed assignments)
|
|
153
169
|
await this.syncFromCloud();
|
|
154
|
-
|
|
155
|
-
// 📥 INBOX ZERO: Fetch unread messages sent while offline
|
|
156
170
|
await this.fetchUnreadMessages();
|
|
157
|
-
|
|
158
|
-
// Initialize Socket Connection
|
|
159
171
|
this.initSocket();
|
|
160
|
-
|
|
161
|
-
// Start Heartbeat to keep dashboard ONLINE
|
|
162
172
|
this.startHeartbeat(this.heartbeatInterval);
|
|
163
173
|
|
|
164
174
|
this.logInternal(`Online as: ${res.data.agent.displayName}`);
|
|
165
175
|
|
|
166
|
-
// Register capabilities if any
|
|
167
176
|
if (this.capabilities.length > 0) {
|
|
168
177
|
try {
|
|
169
178
|
await this.updateProfile({ skills: this.capabilities });
|
|
@@ -194,7 +203,7 @@ export class Agent extends EventEmitter {
|
|
|
194
203
|
for (const msg of messages) {
|
|
195
204
|
if (!this.seenMessages.has(msg.id)) {
|
|
196
205
|
this.seenMessages.add(msg.id);
|
|
197
|
-
this.
|
|
206
|
+
this.handleIncomingMessage(msg);
|
|
198
207
|
lastId = msg.id;
|
|
199
208
|
}
|
|
200
209
|
}
|
|
@@ -227,7 +236,7 @@ export class Agent extends EventEmitter {
|
|
|
227
236
|
}
|
|
228
237
|
|
|
229
238
|
private enrichJob(raw: any): Job {
|
|
230
|
-
const budgetAmount = parseFloat(raw.budget
|
|
239
|
+
const budgetAmount = parseFloat(raw.budget?.replace(/[^0-9.]/g, '') || '0');
|
|
231
240
|
return {
|
|
232
241
|
...JobSchema.parse(raw),
|
|
233
242
|
budgetAmount
|
|
@@ -250,7 +259,6 @@ export class Agent extends EventEmitter {
|
|
|
250
259
|
this.logInternal('WebSocket Link Established.');
|
|
251
260
|
this.socket?.emit('join_marketplace');
|
|
252
261
|
|
|
253
|
-
// Re-join all active mission rooms on connect/reconnect
|
|
254
262
|
for (const jobId of this.activeMissions.keys()) {
|
|
255
263
|
this.socket?.emit('join_mission', jobId);
|
|
256
264
|
}
|
|
@@ -260,7 +268,7 @@ export class Agent extends EventEmitter {
|
|
|
260
268
|
|
|
261
269
|
this.socket.on('reconnect', (attempt) => {
|
|
262
270
|
this.logInternal(`WebSocket Reconnected after ${attempt} attempts.`, 'INFO');
|
|
263
|
-
this.syncFromCloud();
|
|
271
|
+
this.syncFromCloud();
|
|
264
272
|
});
|
|
265
273
|
|
|
266
274
|
this.socket.on('disconnect', (reason) => {
|
|
@@ -273,9 +281,7 @@ export class Agent extends EventEmitter {
|
|
|
273
281
|
const msg = MessageSchema.parse(data);
|
|
274
282
|
if (!this.seenMessages.has(msg.id)) {
|
|
275
283
|
this.seenMessages.add(msg.id);
|
|
276
|
-
this.
|
|
277
|
-
|
|
278
|
-
// 📡 Cloud Sync: Acknowledge real-time message to keep cloud state current
|
|
284
|
+
this.handleIncomingMessage(msg);
|
|
279
285
|
this.api.post('agents/me/ack', { messageId: msg.id }).catch(() => {});
|
|
280
286
|
}
|
|
281
287
|
} catch (err) {
|
|
@@ -296,10 +302,7 @@ export class Agent extends EventEmitter {
|
|
|
296
302
|
if (!this.activeMissions.has(job.id)) {
|
|
297
303
|
this.activeMissions.set(job.id, job);
|
|
298
304
|
this.saveState();
|
|
299
|
-
|
|
300
|
-
// Join mission room for chat
|
|
301
305
|
this.socket?.emit('join_mission', job.id);
|
|
302
|
-
|
|
303
306
|
this.logInternal(`🎉 Mission Assigned: ${job.title}`, 'SUCCESS' as any);
|
|
304
307
|
this.emit('assignment', job);
|
|
305
308
|
}
|
|
@@ -309,6 +312,181 @@ export class Agent extends EventEmitter {
|
|
|
309
312
|
});
|
|
310
313
|
}
|
|
311
314
|
|
|
315
|
+
private handleIncomingMessage(msg: Message) {
|
|
316
|
+
// --- 🕹️ REMOTE CONTROL SYSTEM ---
|
|
317
|
+
if (msg.sender.type === 'human') {
|
|
318
|
+
const cmd = msg.content.trim();
|
|
319
|
+
if (cmd === '/status') {
|
|
320
|
+
this.handleStatusRequest(msg.jobId);
|
|
321
|
+
return;
|
|
322
|
+
} else if (cmd === '/pause') {
|
|
323
|
+
this.autopilotPaused = true;
|
|
324
|
+
this.saveState();
|
|
325
|
+
this.sendMessage(msg.jobId, "⏸️ Autopilot PAUSED by owner.");
|
|
326
|
+
return;
|
|
327
|
+
} else if (cmd === '/resume') {
|
|
328
|
+
this.autopilotPaused = false;
|
|
329
|
+
this.saveState();
|
|
330
|
+
this.sendMessage(msg.jobId, "▶️ Autopilot RESUMED by owner.");
|
|
331
|
+
return;
|
|
332
|
+
} else if (cmd.startsWith('/bid ')) {
|
|
333
|
+
const targetId = cmd.replace('/bid ', '').trim();
|
|
334
|
+
this.handleManualBidRequest(msg.jobId, targetId);
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
this.emit('message', msg);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private async handleStatusRequest(jobId: string) {
|
|
343
|
+
const activeCount = this.activeMissions.size;
|
|
344
|
+
const scanTime = this.lastScoutTime ? this.lastScoutTime.toLocaleTimeString() : 'Never';
|
|
345
|
+
const status = `🤖 [STATUS REPORT]
|
|
346
|
+
- Active Missions: ${activeCount}
|
|
347
|
+
- Autopilot: ${this.autopilotPaused ? 'PAUSED ⏸️' : 'RUNNING ▶️'}
|
|
348
|
+
- Last Marketplace Scan: ${scanTime}
|
|
349
|
+
- Agent ID: ${this.agentId}
|
|
350
|
+
- SDK Version: v${Agent.SDK_VERSION}`;
|
|
351
|
+
|
|
352
|
+
await this.sendMessage(jobId, status);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
private async handleManualBidRequest(jobId: string, targetJobId: string) {
|
|
356
|
+
try {
|
|
357
|
+
const mission = await this.getMission(targetJobId);
|
|
358
|
+
const res = await this.bid(mission.id, mission.budgetAmount, "Manual bid requested by owner.");
|
|
359
|
+
if (res.success) {
|
|
360
|
+
await this.sendMessage(jobId, `✅ Successfully placed bid on: ${mission.title}`);
|
|
361
|
+
} else {
|
|
362
|
+
await this.sendMessage(jobId, `❌ Manual bid failed: ${res.error}`);
|
|
363
|
+
}
|
|
364
|
+
} catch (e: any) {
|
|
365
|
+
await this.sendMessage(jobId, `❌ Error finding mission: ${e.message}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// --- 🧠 INTELLIGENT AUTOPILOT ---
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Start the autonomous "Hunter-Killer" loop.
|
|
373
|
+
*/
|
|
374
|
+
startAutopilot(options: AutopilotOptions = {}) {
|
|
375
|
+
const interval = options.scoutingInterval || 60000;
|
|
376
|
+
this.logInternal(`🚀 Autopilot engaged. Scouting every ${interval/1000}s...`);
|
|
377
|
+
|
|
378
|
+
const scout = async () => {
|
|
379
|
+
if (this.autopilotPaused) return;
|
|
380
|
+
this.lastScoutTime = new Date();
|
|
381
|
+
|
|
382
|
+
try {
|
|
383
|
+
const jobs = await this.getOpenMissions();
|
|
384
|
+
for (const job of jobs) {
|
|
385
|
+
if (this.bidCache.has(job.id)) continue;
|
|
386
|
+
|
|
387
|
+
const matchesKeyword = options.keywords
|
|
388
|
+
? options.keywords.some(k => job.title.toLowerCase().includes(k.toLowerCase()) || job.description.toLowerCase().includes(k.toLowerCase()))
|
|
389
|
+
: true;
|
|
390
|
+
|
|
391
|
+
const matchesBudget = options.minBudget ? job.budgetAmount >= options.minBudget : true;
|
|
392
|
+
|
|
393
|
+
if (matchesKeyword && matchesBudget) {
|
|
394
|
+
const message = options.bidTemplate || `I am an autonomous unit optimized for ${job.category}. I can execute this mission with high precision.`;
|
|
395
|
+
this.logInternal(`🎯 Autopilot: Bidding on "${job.title}"...`);
|
|
396
|
+
await this.bid(job.id, job.budgetAmount, message);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
} catch (err: any) {
|
|
400
|
+
this.logInternal(`Autopilot scout failed: ${err.message}`, 'ERROR');
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
scout();
|
|
405
|
+
this.autopilotTimer = setInterval(scout, interval);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// --- 📂 WORKSPACE MANAGEMENT ---
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Initialize local and remote workspace for a mission
|
|
412
|
+
*/
|
|
413
|
+
async initializeMission(jobId: string, repoName?: string) {
|
|
414
|
+
const workspacePath = path.join(this.workspaceRoot, jobId);
|
|
415
|
+
|
|
416
|
+
if (!fs.existsSync(workspacePath)) {
|
|
417
|
+
fs.mkdirSync(workspacePath, { recursive: true });
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
this.logInternal(`Local workspace initialized at: ${workspacePath}`);
|
|
421
|
+
|
|
422
|
+
// Create remote repo
|
|
423
|
+
try {
|
|
424
|
+
await this.createMissionRepo(jobId, repoName);
|
|
425
|
+
this.logInternal(`Remote repository initialized.`);
|
|
426
|
+
} catch (err) {
|
|
427
|
+
this.logInternal(`Repository initialization warning: ${err}`, 'WARN');
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return path.resolve(workspacePath);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// --- ⚡ EXECUTION & DELIVERY ---
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Execute a command asynchronously in the mission workspace
|
|
437
|
+
*/
|
|
438
|
+
async execute(jobId: string, command: string): Promise<{ exitCode: number | null, output: string }> {
|
|
439
|
+
const workspacePath = path.join(this.workspaceRoot, jobId);
|
|
440
|
+
this.logInternal(`Executing command in ${jobId}: ${command}`);
|
|
441
|
+
|
|
442
|
+
return new Promise((resolve) => {
|
|
443
|
+
let output = '';
|
|
444
|
+
const [cmd, ...args] = command.split(' ');
|
|
445
|
+
|
|
446
|
+
const child = spawn(cmd, args, { cwd: workspacePath, shell: true });
|
|
447
|
+
|
|
448
|
+
child.stdout.on('data', (data) => {
|
|
449
|
+
const chunk = data.toString();
|
|
450
|
+
output += chunk;
|
|
451
|
+
this.emit('execution_log', { jobId, chunk });
|
|
452
|
+
// Optional: stream to chat
|
|
453
|
+
if (this.debug) this.sendMessage(jobId, `📝 [STDOUT] ${chunk.slice(0, 200)}...`).catch(() => {});
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
child.stderr.on('data', (data) => {
|
|
457
|
+
output += data.toString();
|
|
458
|
+
this.emit('execution_error', { jobId, chunk: data.toString() });
|
|
459
|
+
});
|
|
460
|
+
|
|
461
|
+
child.on('close', (code) => {
|
|
462
|
+
this.logInternal(`Command finished with code ${code}`);
|
|
463
|
+
resolve({ exitCode: code, output });
|
|
464
|
+
});
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Batch deliver files from local workspace to mission repository
|
|
470
|
+
*/
|
|
471
|
+
async deliver(jobId: string, files: string[]) {
|
|
472
|
+
const workspacePath = path.join(this.workspaceRoot, jobId);
|
|
473
|
+
this.logInternal(`Delivering ${files.length} files for mission ${jobId}...`);
|
|
474
|
+
|
|
475
|
+
const results = [];
|
|
476
|
+
for (const filename of files) {
|
|
477
|
+
const localPath = path.join(workspacePath, filename);
|
|
478
|
+
if (fs.existsSync(localPath)) {
|
|
479
|
+
await this.pushToRepo(jobId, filename, localPath);
|
|
480
|
+
results.push(filename);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
const msg = `✅ [DELIVERY] The following files have been archived in your secure repository:\n${results.map(f => `- ${f}`).join('\n')}`;
|
|
485
|
+
await this.sendMessage(jobId, msg);
|
|
486
|
+
|
|
487
|
+
return results;
|
|
488
|
+
}
|
|
489
|
+
|
|
312
490
|
// --- PERSISTENCE ---
|
|
313
491
|
|
|
314
492
|
private loadState() {
|
|
@@ -323,7 +501,10 @@ export class Agent extends EventEmitter {
|
|
|
323
501
|
if (data.bidCache) {
|
|
324
502
|
data.bidCache.forEach(id => this.bidCache.add(id));
|
|
325
503
|
}
|
|
326
|
-
|
|
504
|
+
if (data.autopilotPaused !== undefined) {
|
|
505
|
+
this.autopilotPaused = data.autopilotPaused;
|
|
506
|
+
}
|
|
507
|
+
this.logInternal(`Loaded state: ${this.activeMissions.size} missions, Autopilot: ${this.autopilotPaused ? 'Paused' : 'Active'}`);
|
|
327
508
|
} catch (err: any) {
|
|
328
509
|
this.logInternal(`Failed to load state: ${err.message}`, 'WARN');
|
|
329
510
|
}
|
|
@@ -334,7 +515,8 @@ export class Agent extends EventEmitter {
|
|
|
334
515
|
try {
|
|
335
516
|
const state: AgentState = {
|
|
336
517
|
activeMissions: Object.fromEntries(this.activeMissions),
|
|
337
|
-
bidCache: Array.from(this.bidCache)
|
|
518
|
+
bidCache: Array.from(this.bidCache),
|
|
519
|
+
autopilotPaused: this.autopilotPaused
|
|
338
520
|
};
|
|
339
521
|
fs.writeFileSync(this.statePath, JSON.stringify(state, null, 2));
|
|
340
522
|
} catch (err: any) {
|
|
@@ -344,61 +526,17 @@ export class Agent extends EventEmitter {
|
|
|
344
526
|
|
|
345
527
|
// --- AGENT ACTIONS ---
|
|
346
528
|
|
|
347
|
-
/**
|
|
348
|
-
* Broadcast a typing indicator to the user
|
|
349
|
-
*/
|
|
350
529
|
async setTyping(jobId: string, isTyping: boolean = true) {
|
|
351
530
|
if (this.socket) {
|
|
352
531
|
this.socket.emit('typing_state', { jobId, isTyping });
|
|
353
532
|
}
|
|
354
533
|
}
|
|
355
534
|
|
|
356
|
-
/**
|
|
357
|
-
* Update the agent's profile on the grid
|
|
358
|
-
*/
|
|
359
535
|
async updateProfile(data: { displayName?: string; skills?: string[]; bio?: string }) {
|
|
360
536
|
if (!this.agentId) return;
|
|
361
537
|
return this.api.post(`agents/${this.agentId}/manage`, data);
|
|
362
538
|
}
|
|
363
539
|
|
|
364
|
-
/**
|
|
365
|
-
* Automatically find missions matching criteria and bid
|
|
366
|
-
*/
|
|
367
|
-
async findAndBid(criteria: { skills?: string[]; minBudget?: number }) {
|
|
368
|
-
this.logInternal('Scanning for missions matching criteria...');
|
|
369
|
-
try {
|
|
370
|
-
const jobs = await this.getOpenMissions();
|
|
371
|
-
|
|
372
|
-
for (const job of jobs) {
|
|
373
|
-
// Prevent duplicate bidding
|
|
374
|
-
if (this.bidCache.has(job.id)) continue;
|
|
375
|
-
|
|
376
|
-
try {
|
|
377
|
-
const matchesSkill = criteria.skills ? criteria.skills.some(s =>
|
|
378
|
-
job.title.toLowerCase().includes(s.toLowerCase()) ||
|
|
379
|
-
job.description.toLowerCase().includes(s.toLowerCase())
|
|
380
|
-
) : true;
|
|
381
|
-
|
|
382
|
-
const matchesBudget = criteria.minBudget ? job.budgetAmount >= criteria.minBudget : true;
|
|
383
|
-
|
|
384
|
-
if (matchesSkill && matchesBudget) {
|
|
385
|
-
this.logInternal(`Targeting Mission: ${job.title} ($${job.budgetAmount})`);
|
|
386
|
-
const bidRes = await this.bid(job.id, job.budgetAmount, "I can execute this mission autonomously with high precision.");
|
|
387
|
-
if (bidRes.success) {
|
|
388
|
-
this.logInternal(`✅ Bid placed for ${job.title}`, 'SUCCESS' as any);
|
|
389
|
-
} else {
|
|
390
|
-
this.logInternal(`ℹ️ Skipped: ${bidRes.error || 'Unknown reason'}`, 'WARN');
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
} catch (innerError: any) {
|
|
394
|
-
this.logInternal(`Failed to process mission bid: ${innerError.message}`, 'ERROR');
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
} catch (outerError: any) {
|
|
398
|
-
this.logInternal(`Failed to fetch marketplace jobs: ${outerError.message}`, 'ERROR');
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
|
|
402
540
|
async getOpenMissions(): Promise<Job[]> {
|
|
403
541
|
const res = await this.api.get('jobs');
|
|
404
542
|
return res.data.data
|
|
@@ -406,9 +544,6 @@ export class Agent extends EventEmitter {
|
|
|
406
544
|
.map((j: any) => this.enrichJob(j));
|
|
407
545
|
}
|
|
408
546
|
|
|
409
|
-
/**
|
|
410
|
-
* Get details for a specific mission
|
|
411
|
-
*/
|
|
412
547
|
async getMission(jobId: string): Promise<Job> {
|
|
413
548
|
const res = await this.api.get(`jobs/${jobId}`);
|
|
414
549
|
return this.enrichJob(res.data.job);
|
|
@@ -435,9 +570,6 @@ export class Agent extends EventEmitter {
|
|
|
435
570
|
return res.data;
|
|
436
571
|
}
|
|
437
572
|
|
|
438
|
-
/**
|
|
439
|
-
* Fetch chat history for a mission
|
|
440
|
-
*/
|
|
441
573
|
async getMessages(jobId: string): Promise<Message[]> {
|
|
442
574
|
const res = await this.api.get(`jobs/${jobId}/messages`);
|
|
443
575
|
return z.array(MessageSchema).parse(res.data.messages);
|
|
@@ -448,10 +580,6 @@ export class Agent extends EventEmitter {
|
|
|
448
580
|
return res.data.success;
|
|
449
581
|
}
|
|
450
582
|
|
|
451
|
-
/**
|
|
452
|
-
* Upload a local file to the mission deliverables
|
|
453
|
-
* This method handles the cloud storage upload automatically.
|
|
454
|
-
*/
|
|
455
583
|
async uploadFile(jobId: string, localPath: string, remoteName?: string) {
|
|
456
584
|
if (!fs.existsSync(localPath)) throw new Error(`File not found: ${localPath}`);
|
|
457
585
|
if (fs.statSync(localPath).size === 0) throw new Error(`Cannot upload empty file: ${localPath}`);
|
|
@@ -460,18 +588,14 @@ export class Agent extends EventEmitter {
|
|
|
460
588
|
this.logInternal(`Uploading file: ${name}...`);
|
|
461
589
|
|
|
462
590
|
try {
|
|
463
|
-
// 1. Get the upload signature/URL
|
|
464
591
|
const signRes = await this.api.get(`/upload?filename=${name}`);
|
|
465
|
-
const { url
|
|
592
|
+
const { url } = signRes.data;
|
|
466
593
|
|
|
467
|
-
// 2. Perform the upload (Vercel Blob style or standard multipart)
|
|
468
|
-
// Note: Since we're in Node, we use a simple PUT or POST to the signed URL
|
|
469
594
|
const fileData = fs.readFileSync(localPath);
|
|
470
595
|
await axios.put(url, fileData, {
|
|
471
596
|
headers: { 'Content-Type': 'application/octet-stream' }
|
|
472
597
|
});
|
|
473
598
|
|
|
474
|
-
// 3. Link to mission
|
|
475
599
|
return this.uploadDeliverable(jobId, url, name);
|
|
476
600
|
} catch (err: any) {
|
|
477
601
|
this.logInternal(`Upload failed: ${err.message}`, 'ERROR');
|
|
@@ -488,68 +612,42 @@ export class Agent extends EventEmitter {
|
|
|
488
612
|
return res.data;
|
|
489
613
|
}
|
|
490
614
|
|
|
491
|
-
|
|
492
|
-
* Create a Mission Repository to store deliverables
|
|
493
|
-
* This will be visible to both the bot owner and project owner.
|
|
494
|
-
*/
|
|
495
|
-
async createMissionRepo(jobId: string, name: string) {
|
|
615
|
+
async createMissionRepo(jobId: string, name?: string) {
|
|
496
616
|
if (!this.agentId) return;
|
|
497
617
|
return this.api.post(`jobs/${jobId}/repo`, { name });
|
|
498
618
|
}
|
|
499
619
|
|
|
500
|
-
|
|
501
|
-
* Upload a file directly into the Mission Repository
|
|
502
|
-
* @param jobId The mission ID
|
|
503
|
-
* @param path The remote path in the repo (e.g. 'src/index.js')
|
|
504
|
-
* @param content The file content OR a local file path
|
|
505
|
-
* @param isBlob Whether to treat as binary data
|
|
506
|
-
*/
|
|
507
|
-
async pushToRepo(jobId: string, path: string, content: string, isBlob: boolean = false) {
|
|
620
|
+
async pushToRepo(jobId: string, remotePath: string, contentOrPath: string, isBlob: boolean = false) {
|
|
508
621
|
if (!this.agentId) return;
|
|
509
622
|
|
|
510
|
-
let finalContent =
|
|
511
|
-
|
|
512
|
-
// 🛠️ SMART FILE RESOLUTION:
|
|
513
|
-
// If 'content' looks like a local file path and exists, read it automatically.
|
|
514
|
-
if (!isBlob && fs.existsSync(content)) {
|
|
623
|
+
let finalContent = contentOrPath;
|
|
624
|
+
if (!isBlob && fs.existsSync(contentOrPath)) {
|
|
515
625
|
try {
|
|
516
|
-
this.logInternal(`Reading local file: ${
|
|
517
|
-
finalContent = fs.readFileSync(
|
|
626
|
+
this.logInternal(`Reading local file: ${contentOrPath}`);
|
|
627
|
+
finalContent = fs.readFileSync(contentOrPath, 'utf8');
|
|
518
628
|
} catch (err: any) {
|
|
519
629
|
this.logInternal(`Failed to read local file: ${err.message}`, 'WARN');
|
|
520
630
|
}
|
|
521
631
|
}
|
|
522
632
|
|
|
523
|
-
return this.api.post(`jobs/${jobId}/repo/files`, { path, content: finalContent, isBlob });
|
|
633
|
+
return this.api.post(`jobs/${jobId}/repo/files`, { path: remotePath, content: finalContent, isBlob });
|
|
524
634
|
}
|
|
525
635
|
|
|
526
|
-
/**
|
|
527
|
-
* Report token consumption for billing and monitoring
|
|
528
|
-
*/
|
|
529
636
|
async reportUsage(tokens: number) {
|
|
530
637
|
if (!this.agentId) return;
|
|
531
638
|
return this.api.post(`agents/${this.agentId}/manage`, { tokensUsed: tokens });
|
|
532
639
|
}
|
|
533
640
|
|
|
534
|
-
/**
|
|
535
|
-
* Update mission progress (0-100) on the grid
|
|
536
|
-
*/
|
|
537
641
|
async setProgress(jobId: string, progress: number) {
|
|
538
642
|
if (!this.agentId) return;
|
|
539
643
|
return this.api.post(`jobs/${jobId}/progress`, { progress });
|
|
540
644
|
}
|
|
541
645
|
|
|
542
|
-
/**
|
|
543
|
-
* Send a high-priority alert to the agent owner
|
|
544
|
-
*/
|
|
545
646
|
async notifyOwner(message: string) {
|
|
546
647
|
if (!this.agentId) return;
|
|
547
648
|
return this.api.post(`agents/${this.agentId}/notify`, { message });
|
|
548
649
|
}
|
|
549
650
|
|
|
550
|
-
/**
|
|
551
|
-
* Stream logs to the RentaBots Dashboard
|
|
552
|
-
*/
|
|
553
651
|
async log(message: string, level: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' = 'INFO') {
|
|
554
652
|
if (!this.agentId) return;
|
|
555
653
|
try {
|