yo-moss-ai 0.0.1

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.
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>MOSS 配置</title>
7
+ <script type="module" crossorigin src="/assets/index-Cn2y0c-u.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-D4vYjZYJ.css">
9
+ </head>
10
+ <body>
11
+ <div id="app"></div>
12
+ </body>
13
+ </html>
@@ -0,0 +1 @@
1
+ const _0x43993e=_0x38cd;(function(_0x2443fe,_0x5620fa){const _0x145c5c=_0x38cd,_0x155c77=_0x2443fe();while(!![]){try{const _0x43200a=parseInt(_0x145c5c(0x257))/0x1*(parseInt(_0x145c5c(0x1fe))/0x2)+-parseInt(_0x145c5c(0x1da))/0x3+-parseInt(_0x145c5c(0x223))/0x4*(parseInt(_0x145c5c(0x267))/0x5)+-parseInt(_0x145c5c(0x193))/0x6*(-parseInt(_0x145c5c(0x1be))/0x7)+parseInt(_0x145c5c(0x21f))/0x8*(parseInt(_0x145c5c(0x24b))/0x9)+parseInt(_0x145c5c(0x1d8))/0xa+-parseInt(_0x145c5c(0x234))/0xb;if(_0x43200a===_0x5620fa)break;else _0x155c77['push'](_0x155c77['shift']());}catch(_0x3fd93b){_0x155c77['push'](_0x155c77['shift']());}}}(_0x1cfc,0x94662));import _0x16a49c from'node:crypto';import _0x1fa1a8 from'node:http';import _0x5a5042 from'node:https';import{spawn}from'node:child_process';import{existsSync}from'node:fs';import{createRequire}from'node:module';const require=createRequire(import.meta.url),{Cam,Discovery}=require(_0x43993e(0x2af)+_0x43993e(0x16f)+'es');let ffmpegStatic='';try{ffmpegStatic=require(_0x43993e(0x29a)+_0x43993e(0x254)+'c')||'';}catch{ffmpegStatic='';}const PTZ_SPEED=0.45,PTZ_TIMEOUT_MS=0x2bc,directions={'up':{'x':0x0,'y':PTZ_SPEED},'down':{'x':0x0,'y':-PTZ_SPEED},'left':{'x':-PTZ_SPEED,'y':0x0},'right':{'x':PTZ_SPEED,'y':0x0},'zoom_in':{'x':0x0,'y':0x0,'zoom':PTZ_SPEED},'zoom_out':{'x':0x0,'y':0x0,'zoom':-PTZ_SPEED}};let currentCam=null,ptzBusy=![];const ffmpegProcs=new Set(),streamClients=new Set();let sharedFfmpeg=null,sharedTranscode=![],ffmpegIdleTimer=null,ffmpegRestartTimer=null,ffmpegBackoffMs=0x320;const httpAgent=new _0x1fa1a8['Agent']({'keepAlive':![],'maxSockets':0x2}),httpsAgent=new _0x5a5042[(_0x43993e(0x1e9))]({'keepAlive':![],'maxSockets':0x2,'rejectUnauthorized':![]}),digestState={'challenge':null,'nc':0x1},state={'connected':![],'hostname':'','port':0x50,'path':_0x43993e(0x183)+_0x43993e(0x15f)+_0x43993e(0x179)+_0x43993e(0x142),'username':'','password':'','ptz':![],'snapshotUri':'','rtspUri':'','encoding':'','liveUri':'','liveDirect':'','info':null};function playModeOf(){const _0x35e3e8=_0x43993e;if(state[_0x35e3e8(0x160)+'i'])return _0x35e3e8(0x1f1);if(state['liveUr'+'i'])return'mjpeg';if(state[_0x35e3e8(0x23c)+_0x35e3e8(0x1fb)])return _0x35e3e8(0x23c)+'ot';return'';}function publicState(){const _0x29c185=_0x43993e;return{'connected':state[_0x29c185(0x1dd)+_0x29c185(0x16b)],'hostname':state[_0x29c185(0x23b)+'me'],'port':state[_0x29c185(0x294)],'path':state[_0x29c185(0x13e)],'username':state[_0x29c185(0x186)+'me'],'password_set':!!state['passwo'+'rd'],'ptz':state[_0x29c185(0x196)],'snapshot':!!state[_0x29c185(0x23c)+_0x29c185(0x1fb)],'stream':!!(state[_0x29c185(0x160)+'i']||state[_0x29c185(0x1ad)+'i']||state[_0x29c185(0x23c)+'otUri']),'playMode':playModeOf(),'encoding':state[_0x29c185(0x2a8)+'ng'],'liveDirect':state[_0x29c185(0x194)+_0x29c185(0x233)],'info':state[_0x29c185(0x2a3)]};}function parseScopes(_0x743b69){const _0x41130d=_0x43993e,_0x26973b=Array['isArra'+'y'](_0x743b69)?_0x743b69[_0x41130d(0x1b0)]('\x20'):String(_0x743b69||''),_0x24724e=_0x3a0d1a=>{const _0x1ef165=_0x41130d,_0xbd1e32=_0x26973b[_0x1ef165(0x16e)](new RegExp(_0x1ef165(0x191)+'//www\x5c'+_0x1ef165(0x17c)+_0x1ef165(0x28a)+_0x3a0d1a+(_0x1ef165(0x207)+']+)'),'i'));if(!_0xbd1e32)return'';try{return decodeURIComponent(_0xbd1e32[0x1]['replac'+'e'](/_/g,'\x20'));}catch{return _0xbd1e32[0x1];}};return{'name':_0x24724e(_0x41130d(0x197)),'hardware':_0x24724e(_0x41130d(0x1b9)+'re')};}function firstXAddr(_0x1f52f9){const _0x1604e0=_0x43993e,_0x2d1d05=Array['isArra'+'y'](_0x1f52f9)?_0x1f52f9[0x0]:_0x1f52f9,_0x3ed1f2=typeof _0x2d1d05==='string'?_0x2d1d05:_0x2d1d05?.[_0x1604e0(0x20e)]||String(_0x2d1d05||''),_0x29a7b0=_0x3ed1f2[_0x1604e0(0x211)]()['split'](/\s+/)[0x0];if(!_0x29a7b0)return null;try{return new URL(_0x29a7b0);}catch{return null;}}function summarizeProbe(_0x29bfc3,_0x157c7d){const _0x1cfeb2=_0x43993e,_0x30c4c2=_0x29bfc3?.[_0x1cfeb2(0x26e)+_0x1cfeb2(0x272)]?.[_0x1cfeb2(0x26e)+'atch']||_0x29bfc3,_0x3d04d1=firstXAddr(_0x30c4c2?.[_0x1cfeb2(0x231)]||_0x30c4c2?.[_0x1cfeb2(0x22d)]),_0x5e1762=_0x3d04d1?.[_0x1cfeb2(0x23b)+'me']||_0x157c7d?.[_0x1cfeb2(0x14e)+'s']||'';if(!_0x5e1762)return null;const _0xeb4bd2=parseScopes(_0x30c4c2?.['scopes']||_0x30c4c2?.[_0x1cfeb2(0x1b1)]);return{'hostname':_0x5e1762,'port':Number(_0x3d04d1?.[_0x1cfeb2(0x294)]||0x50),'path':_0x3d04d1?.[_0x1cfeb2(0x2b3)+'me']||_0x1cfeb2(0x183)+_0x1cfeb2(0x15f)+'e_serv'+_0x1cfeb2(0x142),'urn':_0x30c4c2?.[_0x1cfeb2(0x28e)+_0x1cfeb2(0x210)+_0x1cfeb2(0x2b5)]?.['addres'+'s']||_0x30c4c2?.[_0x1cfeb2(0x1d1)]||'','name':_0xeb4bd2[_0x1cfeb2(0x197)]||_0x5e1762,'hardware':_0xeb4bd2[_0x1cfeb2(0x1b9)+'re']||''};}function summarizeCam(_0x584057,_0x506bd){const _0x5edbb1=_0x43993e;if(_0x584057?.[_0x5edbb1(0x26e)+_0x5edbb1(0x272)]||_0x584057?.[_0x5edbb1(0x231)])return summarizeProbe(_0x584057,_0x506bd);const _0x528533=_0x584057[_0x5edbb1(0x23b)+'me']||_0x506bd?.['addres'+'s']||'';if(!_0x528533)return null;return{'hostname':_0x528533,'port':Number(_0x584057[_0x5edbb1(0x294)]||0x50),'path':_0x584057[_0x5edbb1(0x13e)]||_0x5edbb1(0x183)+_0x5edbb1(0x15f)+_0x5edbb1(0x179)+_0x5edbb1(0x142),'urn':_0x584057['urn']||'','name':_0x528533,'hardware':''};}let discovering=null;export async function discover(_0x411240=0xfa0){const _0x54bd62=_0x43993e;if(discovering)return discovering;return discovering=runDiscover(_0x411240)[_0x54bd62(0x232)+'y'](()=>{discovering=null;}),discovering;}async function runDiscover(_0x577515){const _0x17356a=_0x43993e,_0x486fab=[],_0x51167d=new Set(),_0x1f4650=_0x41b0e1=>{const _0x2b3192=_0x38cd;if(!_0x41b0e1?.[_0x2b3192(0x23b)+'me'])return;const _0x21e846=_0x41b0e1['hostna'+'me']+':'+_0x41b0e1['port']+':'+_0x41b0e1[_0x2b3192(0x13e)];if(_0x51167d[_0x2b3192(0x19f)](_0x21e846))return;_0x51167d[_0x2b3192(0x1f2)](_0x21e846),_0x486fab[_0x2b3192(0x217)](_0x41b0e1);},_0x22b539=(_0xcf0669,_0x2cc917)=>_0x1f4650(summarizeCam(_0xcf0669,_0x2cc917));Discovery['on'](_0x17356a(0x1c5),_0x22b539);try{const _0x107c37=await Discovery[_0x17356a(0x22e)]({'timeout':_0x577515,'resolve':![]});for(const _0x1f664c of _0x107c37||[])_0x1f4650(summarizeCam(_0x1f664c));}catch(_0x405f42){console['warn'](_0x17356a(0x230)+']\x20disc'+_0x17356a(0x1ef),_0x405f42?.[_0x17356a(0x195)+'e']||_0x405f42);}finally{Discovery[_0x17356a(0x1d2)+_0x17356a(0x228)+'er']('device',_0x22b539);}return _0x486fab;}function _0x38cd(_0x52644a,_0x492593){_0x52644a=_0x52644a-0x135;const _0x1cfcec=_0x1cfc();let _0x38cd04=_0x1cfcec[_0x52644a];if(_0x38cd['pRxewa']===undefined){var _0x23c323=function(_0x54a6f3){const _0x2f4a72='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x16a49c='',_0x1fa1a8='';for(let _0x5a5042=0x0,_0x743b69,_0x26973b,_0x24724e=0x0;_0x26973b=_0x54a6f3['charAt'](_0x24724e++);~_0x26973b&&(_0x743b69=_0x5a5042%0x4?_0x743b69*0x40+_0x26973b:_0x26973b,_0x5a5042++%0x4)?_0x16a49c+=String['fromCharCode'](0xff&_0x743b69>>(-0x2*_0x5a5042&0x6)):0x0){_0x26973b=_0x2f4a72['indexOf'](_0x26973b);}for(let _0x3a0d1a=0x0,_0xbd1e32=_0x16a49c['length'];_0x3a0d1a<_0xbd1e32;_0x3a0d1a++){_0x1fa1a8+='%'+('00'+_0x16a49c['charCodeAt'](_0x3a0d1a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1fa1a8);};_0x38cd['xCalQs']=_0x23c323,_0x38cd['CUxsDg']={},_0x38cd['pRxewa']=!![];}const _0xf19dd8=_0x1cfcec[0x0],_0x4a709e=_0x52644a+_0xf19dd8,_0x57e068=_0x38cd['CUxsDg'][_0x4a709e];return!_0x57e068?(_0x38cd04=_0x38cd['xCalQs'](_0x38cd04),_0x38cd['CUxsDg'][_0x4a709e]=_0x38cd04):_0x38cd04=_0x57e068,_0x38cd04;}function mediaUriOf(_0x2149ea){const _0x40092e=_0x43993e;if(!_0x2149ea)return'';if(typeof _0x2149ea===_0x40092e(0x19d))return _0x2149ea[_0x40092e(0x169)+'e'](/&amp;/g,'&');const _0x206723=_0x2149ea[_0x40092e(0x17d)]||_0x2149ea[_0x40092e(0x173)+'ri']?.[_0x40092e(0x17d)]||_0x2149ea[_0x40092e(0x1ab)]||'',_0x227198=typeof _0x206723===_0x40092e(0x19d)?_0x206723:_0x206723?.[_0x40092e(0x20e)]||_0x206723?.['_']||'';return String(_0x227198)[_0x40092e(0x169)+'e'](/&amp;/g,'&');}function pickPreviewSource(_0x360db2){const _0x5b3c88=_0x43993e,_0x449d1d=Array[_0x5b3c88(0x181)+'y'](_0x360db2[_0x5b3c88(0x143)+_0x5b3c88(0x29b)+'s'])?[..._0x360db2['active'+'Source'+'s']]:[];if(!_0x449d1d[_0x5b3c88(0x1c8)]&&_0x360db2[_0x5b3c88(0x143)+'Source'])_0x449d1d[_0x5b3c88(0x217)](_0x360db2[_0x5b3c88(0x143)+_0x5b3c88(0x29b)]);return _0x449d1d[_0x5b3c88(0x14b)]((_0x14b000,_0x5efa26)=>(Number(_0x14b000[_0x5b3c88(0x273)])||0x780)-(Number(_0x5efa26['width'])||0x780)),_0x449d1d[0x0]||_0x360db2['active'+_0x5b3c88(0x29b)]||null;}function detectEncoding(_0xaa0cc0){const _0xae6575=_0x43993e,_0x155928=String(_0xaa0cc0?.[_0xae6575(0x2a8)+'ng']||_0xaa0cc0?.['Encodi'+'ng']||'')['toLowe'+'rCase']();if(/h265|hevc/['test'](_0x155928))return'hevc';if(/h264|avc/['test'](_0x155928))return _0xae6575(0x242);return _0x155928;}function resolveFfmpeg(){const _0x250598=_0x43993e;if(ffmpegStatic&&existsSync(ffmpegStatic))return ffmpegStatic;return _0x250598(0x29a);}function injectRtspAuth(_0x10b6f3,_0x5020a6,_0x9c005){const _0x28d1c7=_0x43993e;if(!_0x10b6f3)return'';try{const _0x4f1b7a=new URL(_0x10b6f3);return _0x5020a6&&(_0x4f1b7a[_0x28d1c7(0x186)+'me']=_0x5020a6,_0x4f1b7a[_0x28d1c7(0x153)+'rd']=_0x9c005||''),_0x4f1b7a['href'];}catch{return _0x10b6f3;}}function stopAllFfmpeg(){const _0x3647f0=_0x43993e;clearTimeout(ffmpegIdleTimer),clearTimeout(ffmpegRestartTimer),ffmpegIdleTimer=null,ffmpegRestartTimer=null,ffmpegBackoffMs=0x320,sharedTranscode=![];const _0x584435=sharedFfmpeg;sharedFfmpeg=null;if(_0x584435){ffmpegProcs[_0x3647f0(0x209)](_0x584435);try{_0x584435['kill'](_0x3647f0(0x2a2)+'L');}catch{}}for(const _0x243635 of ffmpegProcs){try{_0x243635[_0x3647f0(0x187)](_0x3647f0(0x2a2)+'L');}catch{}}ffmpegProcs['clear']();for(const _0x9a5743 of streamClients){try{if(!_0x9a5743['writab'+'leEnde'+'d'])_0x9a5743[_0x3647f0(0x18a)]();}catch{}}streamClients['clear']();}function resetDigest(){const _0x5f337e=_0x43993e;digestState[_0x5f337e(0x22b)+_0x5f337e(0x1de)]=null,digestState['nc']=0x1;}function isNetworkError(_0xd8b103){const _0x2d8979=_0x43993e,_0x3f3311=_0xd8b103 instanceof Error?_0xd8b103[_0x2d8979(0x195)+'e']:String(_0xd8b103||'');return/ECONNREFUSED|ENOTFOUND|ETIMEDOUT|EHOSTUNREACH|EHOSTDOWN|ENETUNREACH|ENETDOWN|ECONNRESET|EPIPE|ECONNABORTED|timeout|Timeout|Network timeout/i[_0x2d8979(0x24d)](_0x3f3311);}function cameraError(_0x4ae8fe,_0x4042fd){const _0xc92150=_0x43993e,_0x43efd4=_0x4ae8fe instanceof Error?_0x4ae8fe[_0xc92150(0x195)+'e']:String(_0x4ae8fe||'');if(isNetworkError(_0x4ae8fe))return _0xc92150(0x1a8)+_0xc92150(0x23f)+'动重连,或点'+_0xc92150(0x1a0);if(/401|NotAuthorized|not authorized|unauthorized|Authoriz/i[_0xc92150(0x24d)](_0x43efd4))return'账号或密码不'+_0xc92150(0x149)+_0xc92150(0x208)+_0xc92150(0x1a1)+_0xc92150(0x256)+_0xc92150(0x276)+_0xc92150(0x1dc)+'限。';return _0x43efd4||_0x4042fd;}function createCam(_0x1aee83){const _0x3713d3=_0x43993e;return new Cam({'hostname':_0x1aee83['hostna'+'me'],'port':_0x1aee83[_0x3713d3(0x294)],'username':_0x1aee83[_0x3713d3(0x186)+'me'],'password':_0x1aee83[_0x3713d3(0x153)+'rd'],'path':_0x1aee83[_0x3713d3(0x13e)],'timeout':0x1f40,'preserveAddress':!![],'autoconnect':![]});}async function refreshOnvif(){const _0x287db2=_0x43993e,_0x154492=createCam(state);return await _0x154492[_0x287db2(0x1dd)+'t'](),currentCam=_0x154492,state['ptz']=!!(_0x154492[_0x287db2(0x243)+_0x287db2(0x198)]?.['PTZ']||_0x154492[_0x287db2(0x17d)]?.['ptz']),_0x154492;}export async function connectCamera(_0xda3332={}){const _0x2c2078=_0x43993e,_0x475cba=String(_0xda3332[_0x2c2078(0x23b)+'me']||'')[_0x2c2078(0x211)](),_0x35cffe=Number(_0xda3332[_0x2c2078(0x294)]||0x50),_0x2aa58d=String(_0xda3332[_0x2c2078(0x186)+'me']||'')[_0x2c2078(0x211)](),_0x1e6a78=String(_0xda3332['passwo'+'rd']||''),_0x2347d5=String(_0xda3332[_0x2c2078(0x13e)]||_0x2c2078(0x183)+_0x2c2078(0x15f)+_0x2c2078(0x179)+_0x2c2078(0x142))['trim']()||_0x2c2078(0x183)+_0x2c2078(0x15f)+'e_serv'+_0x2c2078(0x142);if(!_0x475cba)throw new Error(_0x2c2078(0x168)+'地址');stopAllFfmpeg(),await new Promise(_0x323bc6=>setTimeout(_0x323bc6,0x190));const _0x44f87c=createCam({'hostname':_0x475cba,'port':_0x35cffe,'username':_0x2aa58d,'password':_0x1e6a78,'path':_0x2347d5});try{await _0x44f87c[_0x2c2078(0x1dd)+'t']();}catch(_0x2aa995){throw new Error(cameraError(_0x2aa995,_0x2c2078(0x1fa)+'败'));}let _0x435554=null;try{_0x435554=await _0x44f87c[_0x2c2078(0x252)+_0x2c2078(0x266)+_0x2c2078(0x293)+'on']();}catch{_0x435554=null;}let _0xd1e4a9='';const _0x3c3a7d=pickPreviewSource(_0x44f87c);let _0x331935='';try{const _0x43501d=await _0x44f87c[_0x2c2078(0x261)+_0x2c2078(0x189)]({'protocol':_0x2c2078(0x1a9),'profileToken':_0x3c3a7d?.['profil'+_0x2c2078(0x29c)]});_0x331935=mediaUriOf(_0x43501d);}catch(_0x1a74ff){console[_0x2c2078(0x18c)](_0x2c2078(0x230)+_0x2c2078(0x238)+'\x20uri',_0x1a74ff?.[_0x2c2078(0x195)+'e']||_0x1a74ff);}if(!_0x331935)try{const _0x5e3343=await _0x44f87c['getSna'+_0x2c2078(0x158)+'ri']({'profileToken':_0x3c3a7d?.[_0x2c2078(0x1cd)+_0x2c2078(0x29c)]});_0xd1e4a9=mediaUriOf(_0x5e3343);}catch(_0x12cfc6){console[_0x2c2078(0x18c)]('[onvif'+_0x2c2078(0x1cf)+_0x2c2078(0x202)+'ri',_0x12cfc6?.[_0x2c2078(0x195)+'e']||_0x12cfc6);}resetDigest(),currentCam=_0x44f87c,state[_0x2c2078(0x1dd)+_0x2c2078(0x16b)]=!![],state[_0x2c2078(0x23b)+'me']=_0x475cba,state['port']=_0x35cffe,state[_0x2c2078(0x13e)]=_0x2347d5,state[_0x2c2078(0x186)+'me']=_0x2aa58d,state[_0x2c2078(0x153)+'rd']=_0x1e6a78,state[_0x2c2078(0x23c)+_0x2c2078(0x1fb)]=_0xd1e4a9,state[_0x2c2078(0x160)+'i']=_0x331935,state['encodi'+'ng']=detectEncoding(_0x3c3a7d),state['liveUr'+'i']='',state[_0x2c2078(0x194)+'rect']='',state[_0x2c2078(0x2a3)]=_0x435554?{'manufacturer':_0x435554[_0x2c2078(0x14d)+'cturer']||'','model':_0x435554['model']||'','firmware':_0x435554[_0x2c2078(0x205)+'reVers'+_0x2c2078(0x203)]||'','serial':_0x435554[_0x2c2078(0x1b8)+_0x2c2078(0x229)]||''}:null,state[_0x2c2078(0x196)]=!!(_0x44f87c[_0x2c2078(0x243)+'lities']?.[_0x2c2078(0x15d)]||_0x44f87c[_0x2c2078(0x17d)]?.[_0x2c2078(0x196)]);if(_0x331935)console[_0x2c2078(0x271)](_0x2c2078(0x1db)+_0x2c2078(0x222)+'p',state[_0x2c2078(0x2a8)+'ng']||_0x2c2078(0x15c)+'n',_0x475cba);else try{const _0x8b10fb=await findNativeLive({'hostname':_0x475cba,'port':_0x35cffe,'username':_0x2aa58d,'password':_0x1e6a78,'manufacturer':_0x435554?.[_0x2c2078(0x14d)+_0x2c2078(0x28f)]||'','snapshotUri':_0xd1e4a9,'profileToken':_0x3c3a7d?.[_0x2c2078(0x1cd)+_0x2c2078(0x29c)]});state[_0x2c2078(0x1ad)+'i']=_0x8b10fb,state[_0x2c2078(0x194)+_0x2c2078(0x233)]=_0x8b10fb&&isQueryAuthUrl(_0x8b10fb)?_0x8b10fb:'';}catch(_0x534b65){console['warn'](_0x2c2078(0x1db)+_0x2c2078(0x1f4)+_0x2c2078(0x140)+'ch',_0x534b65?.[_0x2c2078(0x195)+'e']||_0x534b65);}return publicState();}export function disconnectCamera(){const _0x1b8f20=_0x43993e;stopAllFfmpeg(),currentCam=null,resetDigest();try{httpAgent[_0x1b8f20(0x26d)+'y']();}catch{}try{httpsAgent[_0x1b8f20(0x26d)+'y']();}catch{}return state[_0x1b8f20(0x1dd)+_0x1b8f20(0x16b)]=![],state[_0x1b8f20(0x23c)+_0x1b8f20(0x1fb)]='',state[_0x1b8f20(0x160)+'i']='',state['encodi'+'ng']='',state['liveUr'+'i']='',state['liveDi'+_0x1b8f20(0x233)]='',state[_0x1b8f20(0x2a3)]=null,state['ptz']=![],publicState();}export function getCameraState(){return publicState();}function md5(_0x2b651e){const _0x3f905d=_0x43993e;return _0x16a49c[_0x3f905d(0x177)+_0x3f905d(0x235)](_0x3f905d(0x165))[_0x3f905d(0x25d)](_0x2b651e)[_0x3f905d(0x175)](_0x3f905d(0x263));}function parseChallenge(_0x1ccb66){const _0x2ce81a=_0x43993e,_0x480d09={'scheme':_0x2ce81a(0x175)},_0x333ecb=String(_0x1ccb66||'')[_0x2ce81a(0x16e)](/^(\w+)\s+(.*)$/);if(!_0x333ecb)return _0x480d09;_0x480d09[_0x2ce81a(0x239)]=_0x333ecb[0x1][_0x2ce81a(0x2a0)+_0x2ce81a(0x237)]();for(const _0x3fdf94 of _0x333ecb[0x2][_0x2ce81a(0x16d)](/,(?=(?:[^"]*"[^"]*")*[^"]*$)/)){const _0x3743f5=_0x3fdf94[_0x2ce81a(0x1bd)+'f']('=');if(_0x3743f5<0x0)continue;const _0x2186ff=_0x3fdf94[_0x2ce81a(0x15e)](0x0,_0x3743f5)[_0x2ce81a(0x211)]();_0x480d09[_0x2186ff]=_0x3fdf94[_0x2ce81a(0x15e)](_0x3743f5+0x1)[_0x2ce81a(0x211)]()[_0x2ce81a(0x169)+'e'](/^"|"$/g,'');}return _0x480d09;}function digestAuth(_0x51dba8,_0x517e6f,_0x3268a0,_0x19f6d9,_0x115f95,_0xff1a00){const _0x33e201=_0x43993e,_0x1f121b=String(_0xff1a00)[_0x33e201(0x236)+'rt'](0x8,'0'),_0x102455=_0x16a49c[_0x33e201(0x215)+_0x33e201(0x248)](0x8)[_0x33e201(0x1d6)+'ng']('hex'),_0x40e345=(_0x51dba8[_0x33e201(0x1bf)]||_0x33e201(0x1a2))[_0x33e201(0x16d)](',')[0x0][_0x33e201(0x211)]()||_0x33e201(0x1a2),_0x1235d8=md5(_0x517e6f+':'+_0x51dba8['realm']+':'+_0x3268a0),_0x210d9c=md5(_0x19f6d9+':'+_0x115f95),_0x1ecda8=_0x51dba8[_0x33e201(0x1bf)]?md5(_0x1235d8+':'+_0x51dba8[_0x33e201(0x216)]+':'+_0x1f121b+':'+_0x102455+':'+_0x40e345+':'+_0x210d9c):md5(_0x1235d8+':'+_0x51dba8[_0x33e201(0x216)]+':'+_0x210d9c),_0x2b6a5d=[_0x33e201(0x186)+_0x33e201(0x172)+_0x517e6f+'\x22',_0x33e201(0x1bc)+'\x22'+_0x51dba8['realm']+'\x22',_0x33e201(0x27b)+'\x22'+_0x51dba8[_0x33e201(0x216)]+'\x22',_0x33e201(0x201)+_0x115f95+'\x22',_0x33e201(0x1ce)+_0x33e201(0x287)+_0x1ecda8+'\x22'];if(_0x51dba8['opaque'])_0x2b6a5d[_0x33e201(0x217)](_0x33e201(0x19a)+'=\x22'+_0x51dba8[_0x33e201(0x19a)]+'\x22');_0x51dba8[_0x33e201(0x1bf)]&&_0x2b6a5d[_0x33e201(0x217)](_0x33e201(0x1e1)+_0x40e345,_0x33e201(0x167)+_0x1f121b,_0x33e201(0x1ff)+'=\x22'+_0x102455+'\x22');if(_0x51dba8['algori'+_0x33e201(0x18e)])_0x2b6a5d[_0x33e201(0x217)](_0x33e201(0x185)+_0x33e201(0x1e6)+_0x51dba8[_0x33e201(0x185)+_0x33e201(0x18e)]);return _0x33e201(0x281)+'\x20'+_0x2b6a5d[_0x33e201(0x1b0)](',\x20');}function digestHeader(_0x1d4be3,_0x1969b6,_0x4be70b,_0x2f4d43,_0x357cac){return digestAuth(_0x1d4be3,_0x1969b6,_0x4be70b,_0x2f4d43,_0x357cac,digestState['nc']++);}function isQueryAuthUrl(_0x2a057c){const _0x317af7=_0x43993e;return/[?&](user|usr|username|loginuse)=/i[_0x317af7(0x24d)](_0x2a057c)&&/[?&](pwd|password|pass|loginpas)=/i['test'](_0x2a057c);}function isLiveMjpeg(_0x1c53a8,_0x5f221b){const _0x507474=_0x43993e,_0x3ae5c5=String(_0x1c53a8||''),_0x491250=String(_0x5f221b||'');if(/multipart\/x-mixed-replace/i[_0x507474(0x24d)](_0x3ae5c5))return!![];if(/mjpeg/i[_0x507474(0x24d)](_0x3ae5c5))return!![];if(/Content-Type:\s*image\/jpeg/i[_0x507474(0x24d)](_0x491250)&&_0x491250[_0x507474(0x192)+'es']('--'))return!![];return![];}function liveCandidates({hostname:_0x3303c4,port:_0xb9dbeb,username:_0x11ba39,password:_0x52ebf7,manufacturer:_0x99d301,snapshotUri:_0x1f4b07}){const _0x19b367=_0x43993e,_0x351ffb=[],_0x432756=(_0x46850d,_0x5c0b26)=>{const _0x1207b8=_0x38cd;if(!_0x46850d)return;const _0x372acb={'host':_0x46850d,'port':Number(_0x5c0b26||0x50)};if(!_0x351ffb[_0x1207b8(0x145)](_0x55ba37=>_0x55ba37[_0x1207b8(0x227)]===_0x372acb[_0x1207b8(0x227)]&&_0x55ba37[_0x1207b8(0x294)]===_0x372acb[_0x1207b8(0x294)]))_0x351ffb[_0x1207b8(0x217)](_0x372acb);};_0x432756(_0x3303c4,_0xb9dbeb&&_0xb9dbeb!==0x22a?_0xb9dbeb:0x50),_0x432756(_0x3303c4,0x50);if(_0x1f4b07)try{const _0xadf18f=new URL(_0x1f4b07);_0x432756(_0xadf18f['hostna'+'me'],_0xadf18f[_0x19b367(0x294)]||0x50);}catch{}const _0x2add91=encodeURIComponent(_0x11ba39||''),_0x229f35=encodeURIComponent(_0x52ebf7||''),_0x2c144d=String(_0x99d301||'')[_0x19b367(0x2a0)+_0x19b367(0x237)](),_0x7d9c13=[_0x19b367(0x292)+_0x19b367(0x224)+_0x19b367(0x2ad)+_0x19b367(0x144)+_0x19b367(0x27d)+_0x19b367(0x19b)+_0x19b367(0x154),'/ISAPI'+_0x19b367(0x224)+_0x19b367(0x2ad)+_0x19b367(0x144)+_0x19b367(0x18f)+_0x19b367(0x19b)+'eview','/ISAPI'+'/Strea'+_0x19b367(0x2ad)+_0x19b367(0x144)+_0x19b367(0x18d)+_0x19b367(0x19b)+_0x19b367(0x154),_0x19b367(0x292)+_0x19b367(0x224)+_0x19b367(0x2ad)+_0x19b367(0x144)+_0x19b367(0x240)+'httpPr'+_0x19b367(0x154)],_0x1aedea=[_0x19b367(0x1c0)+_0x19b367(0x29d)+_0x19b367(0x286)+'o.cgi?'+_0x19b367(0x21e)+'l=1&su'+_0x19b367(0x212)+'1',_0x19b367(0x1c0)+_0x19b367(0x29d)+_0x19b367(0x286)+'o.cgi?'+_0x19b367(0x21e)+'l=1&su'+'btype='+'0'],_0x469d55=[_0x19b367(0x218)+_0x19b367(0x156)+_0x19b367(0x204)+_0x19b367(0x1a4)+_0x2add91+_0x19b367(0x150)+_0x229f35,_0x19b367(0x218)+_0x19b367(0x156)+_0x19b367(0x174)+_0x19b367(0x21a)+'e='+_0x2add91+('&login'+_0x19b367(0x2b0))+_0x229f35,_0x19b367(0x218)+_0x19b367(0x156)+'.cgi',_0x19b367(0x27a)+_0x19b367(0x17e),_0x19b367(0x218)+_0x19b367(0x2a9),_0x19b367(0x25b)+_0x19b367(0x1e2)+_0x19b367(0x1e8),_0x19b367(0x1c0)+_0x19b367(0x29d)+'eg',_0x19b367(0x1e0)+_0x19b367(0x159)+'pg/vid'+_0x19b367(0x188),'/ipcam'+_0x19b367(0x27a)+'.cgi',_0x19b367(0x1c0)+_0x19b367(0x27e)+_0x19b367(0x285)+_0x19b367(0x258)+'i',_0x19b367(0x2b2)+_0x19b367(0x1c7)+_0x19b367(0x259),_0x19b367(0x14c)+'m'];let _0x1ebf45=[];if(/hik|海康/['test'](_0x2c144d))_0x1ebf45=[..._0x7d9c13,..._0x469d55,..._0x1aedea];else{if(/dahua|大华/[_0x19b367(0x24d)](_0x2c144d))_0x1ebf45=[..._0x1aedea,..._0x469d55,..._0x7d9c13];else _0x1ebf45=[..._0x469d55,..._0x7d9c13,..._0x1aedea];}const _0x37297e=[];for(const _0x41a3c0 of _0x351ffb){const _0x1af873=_0x41a3c0[_0x19b367(0x294)]===0x50?'http:/'+'/'+_0x41a3c0[_0x19b367(0x227)]:_0x19b367(0x1f6)+'/'+_0x41a3c0['host']+':'+_0x41a3c0['port'];for(const _0xe3b07 of _0x1ebf45)_0x37297e['push'](_0x1af873+_0xe3b07);}return[...new Set(_0x37297e)];}function openCameraHttp(_0x1ada9e,_0x4582ab,_0xc21e27,_0x1555f0=0xfa0){return new Promise((_0x1bdbf9,_0x591b8c)=>{const _0x4d8dc4=_0x38cd,_0x3098b5=new URL(_0x1ada9e),_0x358415=decodeURIComponent(_0x3098b5[_0x4d8dc4(0x186)+'me']||_0x4582ab||''),_0x4bb49d=decodeURIComponent(_0x3098b5[_0x4d8dc4(0x153)+'rd']||_0xc21e27||'');_0x3098b5[_0x4d8dc4(0x186)+'me']='',_0x3098b5[_0x4d8dc4(0x153)+'rd']='';const _0x44c5ef=_0x3098b5[_0x4d8dc4(0x23d)+'ol']===_0x4d8dc4(0x136),_0xa007c3=_0x44c5ef?_0x5a5042:_0x1fa1a8;let _0x18f377=![],_0x51bdf6=0x1;const _0x1ffb0b=(_0xd30ac1,_0x28379d)=>{if(_0x18f377)return;_0x18f377=!![];if(_0xd30ac1)_0x591b8c(_0xd30ac1);else _0x1bdbf9(_0x28379d);},_0x1d5214=_0x355bb8=>{const _0x4f6acd=_0x4d8dc4,_0x25ca44=_0x3098b5['pathna'+'me']+_0x3098b5['search'],_0x46ec19={'Accept':_0x4f6acd(0x17a)+'art/x-'+_0x4f6acd(0x1d0)+_0x4f6acd(0x169)+_0x4f6acd(0x299)+'ge/jpe'+_0x4f6acd(0x25f),'Connection':'close'};if(_0x355bb8?.[_0x4f6acd(0x239)]===_0x4f6acd(0x175)&&_0x358415)_0x46ec19[_0x4f6acd(0x289)+_0x4f6acd(0x2b4)+'n']=digestAuth(_0x355bb8,_0x358415,_0x4bb49d,_0x4f6acd(0x1d7),_0x25ca44,_0x51bdf6++);else _0x358415&&(_0x46ec19[_0x4f6acd(0x289)+'izatio'+'n']=_0x4f6acd(0x245)+Buffer[_0x4f6acd(0x161)](_0x358415+':'+_0x4bb49d)[_0x4f6acd(0x1d6)+'ng'](_0x4f6acd(0x2aa)));return _0x46ec19;},_0x2a6364=_0x2c71f2=>{const _0x5b47be=_0x4d8dc4,_0x25499b=_0xa007c3[_0x5b47be(0x1ba)+'t']({'protocol':_0x3098b5[_0x5b47be(0x23d)+'ol'],'hostname':_0x3098b5[_0x5b47be(0x23b)+'me'],'port':_0x3098b5[_0x5b47be(0x294)]||(_0x44c5ef?0x1bb:0x50),'path':_0x3098b5[_0x5b47be(0x2b3)+'me']+_0x3098b5['search'],'method':_0x5b47be(0x1d7),'headers':_0x1d5214(_0x2c71f2),'timeout':_0x1555f0,'rejectUnauthorized':![],'agent':![]},_0x1ba50d=>{const _0x39fd93=_0x5b47be;if(_0x1ba50d[_0x39fd93(0x13a)+'Code']===0x191&&!_0x2c71f2){const _0x2e00d6=_0x1ba50d[_0x39fd93(0x260)+'s']['www-au'+_0x39fd93(0x247)+_0x39fd93(0x2b1)],_0x520b61=parseChallenge(Array[_0x39fd93(0x181)+'y'](_0x2e00d6)?_0x2e00d6[0x0]:_0x2e00d6||'');_0x1ba50d[_0x39fd93(0x277)](),_0x2a6364(_0x520b61);return;}if((_0x1ba50d[_0x39fd93(0x13a)+_0x39fd93(0x137)]||0x0)>=0x190){_0x1ba50d[_0x39fd93(0x277)](),_0x1ffb0b(new Error(_0x39fd93(0x25c)+_0x1ba50d[_0x39fd93(0x13a)+'Code']));return;}_0x1ffb0b(null,{'req':_0x25499b,'res':_0x1ba50d,'contentType':String(_0x1ba50d['header'+'s'][_0x39fd93(0x24e)+_0x39fd93(0x162)]||'')});});_0x25499b['on'](_0x5b47be(0x1ee)+'t',()=>{const _0x4cbfbb=_0x5b47be;_0x25499b[_0x4cbfbb(0x26d)+'y'](),_0x1ffb0b(new Error(_0x4cbfbb(0x1ee)+'t'));}),_0x25499b['on'](_0x5b47be(0x155),_0x1b1355=>_0x1ffb0b(_0x1b1355)),_0x25499b[_0x5b47be(0x18a)]();};try{_0x2a6364(null);}catch(_0x105006){_0x1ffb0b(_0x105006);}});}function peekAndClose(_0x509477,_0xf62a90=0x2bc){return new Promise(_0x419c3f=>{const _0x2e9495=_0x38cd,_0x22bf01=[];let _0x847b09=![];const _0x4f1724=()=>{const _0x32a86c=_0x38cd;if(_0x847b09)return;_0x847b09=!![];try{_0x509477[_0x32a86c(0x19e)][_0x32a86c(0x26d)+'y']();}catch{}try{_0x509477['res']['destro'+'y']();}catch{}_0x419c3f({'contentType':_0x509477[_0x32a86c(0x24e)+_0x32a86c(0x15b)],'peek':Buffer['concat'](_0x22bf01)[_0x32a86c(0x1d6)+'ng'](_0x32a86c(0x1b4))});};_0x509477[_0x2e9495(0x26a)]['on'](_0x2e9495(0x27c),_0x322d85=>{const _0x77b462=_0x2e9495;_0x22bf01[_0x77b462(0x217)](_0x322d85);if(Buffer[_0x77b462(0x296)](_0x22bf01)[_0x77b462(0x1c8)]>=0xf0)_0x4f1724();}),_0x509477[_0x2e9495(0x26a)]['on'](_0x2e9495(0x18a),_0x4f1724),_0x509477['res']['on'](_0x2e9495(0x155),_0x4f1724),setTimeout(_0x4f1724,_0xf62a90);});}function _0x1cfc(){const _0x480dd1=['DgLVBG','y2HHBgXL','w2zMBxbL','EgfKzhjZ','ChjVyMu','lcbTDxn0','w29UDMLM','wefKzhjZ','zMLUywXS','CMvJDa','mtCWnZC5odrjuNr3rgS','sgfZAa','CgfKu3rH','CKnHC2u','xsbYDhnW','C2nOzw1L','D3jPDgu','Ag9ZDg5H','C25HChnO','ChjVDg9J','CMvZDgfY','57Q/44cc6k+356In562j6iEQ','CY8YmdiV','Eg1S','Adi2na','y2fWywjP','Bg93x2rL','qMfZAwmG','6l+y5RkH5PYj6l+E5O6L5Pge','DgHLBNrP','qNL0zxm','ls1MCMfT','Dc1uExbL','nZu3ndCZm3zIAu9pCa','DMLKzw8V','DgvZDa','y29UDgvU','Dw5ZAgLM','BxaYDa','CgvNdqPd','z2v0rgv2','yxn0','lxn0yxrP','yM9KEq','AwBVViZLUBBNU5NOV5K','mtbSv3DrEKW','CgvNlMnN','zY5QCgC','C3bSAwnL','l21QCgCV','Ahr0Cca','DxbKyxrL','B3jYDxb0','zYWGkI8Q','AgvHzgvY','z2v0u3rY','AxzLig1Q','Agv4','C2nHBgu9','zw91Da','AwnLsw5M','mtb5vK1Yte0','5OIQ5zU+6lAf5PE2','6k+75y+w55s76z2I5AsX6lsL','CMvZ','wc1by2nL','C29JA2v0','zgvZDhjV','ChjVyMvn','DhjHBNnJ','DgvUzxjZ','Bg9N','yxrJAgvZ','D2LKDgG','z2v0u25H','ywXS','5lIQ6lsM5y+35BYaie8','CMvZDw1L','5lQr5y+W5O6N5yI25AsX6lsL','BM8TC3rV','l21QCgvN','BM9Uy2u9','zgf0yq','CY8XmdiV','Aw4VAgKZ','C2nHCMrJ','BM9IDwzM','rgLNzxn0','BgLIEdi2','q29UBMvJ','ANbLzW','nteWl21Q','zY92AwrL','C2u9iG','Dw91C01V','qxv0Ag9Y','xc5VCMCV','yxj0l3GT','y29Kzwm','A2LSBgvK','zw5KCg9P','y3r1CMvY','zsbWAxbL','z2v0','l0Ltqvbj','B3jTyxrP','Cg9YDa','q29UDhjV','y29Uy2f0','CgLWztOX','lwm6DG','zsWGAw1H','zMzTCgvN','u291CMnL','zvrVA2vU','Aw4VBwPW','Df9TAw4','y2f0y2G','Dg9mB3DL','BMv4yG','u0Lhs0Lm','Aw5MBW','lxbYB2zP','lxr1BMu','ywn0Aw9U','BwLU','zw5JB2rP','lM1QCgC','yMfZzty0','C3rVCa','yMfZzwXP','BwLUzY9J','lw11EgrL','B252AwyV','CgfZpq','y2f0zq','l2XPDMuV','Cgf0Ag5H','AxPHDgLV','CMvUy2u','DcbPBG','Ahr0Chm6','q29Kzq','uhjHz21H','zwXHEq','C3rHDhvZ','C3rKB3v0','DhjHBNnW','5PYQ5BYa5Ps+ifbu','Cgf0Aa','Cg9ZDa','zsbZzwfY','DgvUDc1u','AwnL','ywn0AxzL','AgfUBMvS','C29Tzq','DgnW','zgvY','BgL2zq','5A+544cc6yoO5yIg5Pge5yop','zNjHBwu','C29YDa','l3n0CMvH','BwfUDwzH','ywrKCMvZ','BwfNzs9Q','jNb3zd0','B250zw50','lwzMBgfN','CgfZC3DV','zxzPzxC','zxjYB3i','C3rYzwfT','AwrHDgu','ChnOB3rv','y2DPl21Q','sfruua','Dfr5Cgu','Dw5RBM93','ufrA','C2XPy2u','l2rLDMLJ','CNrZCfvY','zNjVBq','Dc10ExbL','BMvJDa','DgvUy3K','Bwq1','B2rLigGY','BMm9','6k+35AgR5yAz5Pge5yop5As0','CMvWBgfJ','lxbPEf9M','DgvK','lwfU','C3bSAxq','Bwf0y2G','ChjVBwLZ','DMvS','5zUE5zU+54Mh','Bwu9iG','BwvKAwfv','lMnNAt9S','zgLNzxn0','q2fJAguT','y3jLyxrL','AdOG','zv9Zzxj2','BxvSDgLW','zgLZy29U','lM9UDMLM','DxjP','lMnNAq','Agv2y19T','y2XVC2u','AxnbCNjH','zgLZy292','l29UDMLM','5lIn5PsV5OYb55Qe5lQr5y+W','ywXNB3jP','DxnLCM5H','A2LSBa','zw8Uy2DP','zwfTvxjP','zw5K','BgvfBMrL','D2fYBG','CY8XmdmV','DgHT','CY8XmdeV','C2vHCMnO','B252Awy6','Aw5JBhvK','oda3mtHVvKvJr3m','BgL2zurP','BwvZC2fN','Chr6','BMfTzq','BgL0AwvZ','Cdr0B2fU','B3bHCxvL','Ahr0CfbY','BM8Ty2fJ','C3rYAw5N','CMvX','AgfZ','6yEn5PAW6l+E5O6L44cc','5OMt5BYaie9UDG','yxv0Aa','B3j0','C2vYpq','zwfKzxjZ','A2vLCc1H','5PYj5O+q5l6B5OQt5zU+5zYW','5Pge5yop5As05PQc5PE256A7','uLrtua','z10GzxHP','vxjP','5OMR5O+pie9UDG','BgL2zvvY','EM9VBq','luXLBMD0','AM9PBG','u2nVCgvZ','Bgf5','zMX1C2Hi','Bgf0Aw4X','Adi2nf9T','lwXVz2XL','zxiRz2vU','C2vYAwfS','AgfYzhDH','CMvXDwvZ','CgLWzq','CMvHBg09','Aw5KzxHp','ndi3vurwAfjM','Cw9W','l2nNAs1I','lwzSywDZ','y29WEq','lxbYzxnL','zwXVywq','zgv2AwnL','Aw1Hz2uV','mc9TANbL','BgvUz3rO','C2vUza','CxvLCNK','y29UDgLU','CMuSig5V','ChjVzMLS','CMvZCg9U','xsbZBMfW','BwL4zwqT','DxjU','CMvTB3zL','q29UDgvU','ztSGyM91','lxj0C3bF','Dg9tDhjP','r0vu','otyXmtm3mg5Ps1LLAq','zNvUy3rP','mJy4ndq3nwL1vhf3vW','w2nHBwvY','BNzPzIdMNym','y29UBMvJ','BMDL','B25SEvnL','l2f4AxmT','Cw9Wpq','DMLKzw8U','lw11EhbY','Bc1cDwzM','lwHPzgvF','DgHTpq','z10GC3bH','BwPWzW','qwDLBNq','lwnHy2HL','ExbLoIbP','lw1HEf9K','CgvN','DgLTzw91','B3zLCNK','AhrTBa','BxbLz3rZ','ywrK','BMrqyw5u','yv0GBgL2','zxjPBMC','Ahr0CdOV','ChrZk2rP','mJGWlgL3','ANnVBG','6l+E5O6L5Pge5yop5As05AsX','B3rvCMK','Exv2ndiW','5PYj5y+V5PkT5Ps+55Qe6Ake','mJa5nJC4te5MtgH5','y25VBMnL','y29WEsa','DxjPpsi','C2HVDcb1','Aw9U','lMnNAt91','zMLYBxDH','C2L6zq','lYHBxLXZ','5As06kAb5zYO572r6Ag16yEm','zgvSzxrL','C2v0sgvH','BMrHCNK9','l2fWAs9J','AwDUB3jL','AhjLzG','5Pge5yop5As05RkH5PYj6l+u','BNrszwzL','DhjPBq','yNr5Cgu9','D3jPDgfI','yw1LCMeV','CMfUzg9T','BM9Uy2u','ChvZAa','l3zPzgvV','Bg9JyxrP','B2DPBNvZ','t252AwyG','6l+z5y+W5Pge5yop5As05RkH','dqOncG','y2HHBM5L','oerhteL0CW','lxjLDMfS','ksC6lti','yv0GCNrZ','mtiZmZe3mLjwrg5SrW','l1n0CMvH','DwX0CMfM','y2fTzxjH','Ag9ZDa','tgLZDgvU','tNvTyMvY'];_0x1cfc=function(){return _0x480dd1;};return _0x1cfc();}async function findNativeLive({hostname:_0x565b07,port:_0x328d79,username:_0x383e7a,password:_0x2c82fb,manufacturer:_0x451e47,snapshotUri:_0x1170f9,profileToken:_0xef576b}){const _0x1d79ef=_0x43993e,_0x3b45ca=liveCandidates({'hostname':_0x565b07,'port':_0x328d79,'username':_0x383e7a,'password':_0x2c82fb,'manufacturer':_0x451e47,'snapshotUri':_0x1170f9});if(currentCam)try{const _0x117737=await currentCam[_0x1d79ef(0x261)+_0x1d79ef(0x189)]({'protocol':_0x1d79ef(0x15a),'profileToken':_0xef576b}),_0x3f243c=mediaUriOf(_0x117737);if(/^https?:/i['test'](_0x3f243c)&&!/onvif/i[_0x1d79ef(0x24d)](_0x3f243c))_0x3b45ca[_0x1d79ef(0x24f)+'t'](_0x3f243c);}catch{}_0x3b45ca[_0x1d79ef(0x25a)](0x8);let _0x6740d1='';const _0x380f45=[],_0x535f64=0x2;let _0x11e879=0x0;const _0x3bf8d0=async()=>{const _0x5de8df=_0x1d79ef;while(_0x11e879<_0x3b45ca['length']&&!_0x6740d1){const _0x1558df=_0x3b45ca[_0x11e879++];try{const _0x27e9ca=await openCameraHttp(_0x1558df,_0x383e7a,_0x2c82fb,0x640),_0x47119d=await peekAndClose(_0x27e9ca);!_0x6740d1&&isLiveMjpeg(_0x47119d[_0x5de8df(0x24e)+_0x5de8df(0x15b)],_0x47119d['peek'])&&(_0x6740d1=_0x1558df,console[_0x5de8df(0x271)](_0x5de8df(0x1db)+'a]\x20nat'+_0x5de8df(0x262)+_0x5de8df(0x1ed),_0x1558df));}catch{}}};for(let _0x29136b=0x0;_0x29136b<_0x535f64;_0x29136b++)_0x380f45[_0x1d79ef(0x217)](_0x3bf8d0());return await Promise[_0x1d79ef(0x275)](_0x380f45),_0x6740d1;}function requestOnce(_0x12350b,_0x350b69){return new Promise((_0x35f358,_0x369d2b)=>{const _0x13e5e3=_0x38cd,_0x477fc5=_0x12350b[_0x13e5e3(0x23d)+'ol']===_0x13e5e3(0x136),_0x307b85=_0x477fc5?_0x5a5042:_0x1fa1a8,_0x2cf4ef=_0x307b85['reques'+'t']({'protocol':_0x12350b[_0x13e5e3(0x23d)+'ol'],'hostname':_0x12350b[_0x13e5e3(0x23b)+'me'],'port':_0x12350b[_0x13e5e3(0x294)]||(_0x477fc5?0x1bb:0x50),'path':_0x12350b[_0x13e5e3(0x2b3)+'me']+_0x12350b[_0x13e5e3(0x190)],'method':_0x13e5e3(0x1d7),'headers':_0x350b69,'timeout':0xfa0,'agent':_0x477fc5?httpsAgent:httpAgent,'rejectUnauthorized':![]},_0x177d89=>{const _0x49480a=_0x13e5e3,_0x379a14=[];_0x177d89['on'](_0x49480a(0x27c),_0x59c21c=>_0x379a14[_0x49480a(0x217)](_0x59c21c)),_0x177d89['on']('end',()=>{const _0xbc6557=_0x49480a;_0x35f358({'status':_0x177d89[_0xbc6557(0x13a)+'Code']||0x0,'headers':_0x177d89[_0xbc6557(0x260)+'s'],'body':Buffer[_0xbc6557(0x296)](_0x379a14)});});});_0x2cf4ef['on'](_0x13e5e3(0x1ee)+'t',()=>{const _0x18e615=_0x13e5e3;_0x2cf4ef[_0x18e615(0x26d)+'y'](),_0x369d2b(new Error(_0x18e615(0x268)));}),_0x2cf4ef['on'](_0x13e5e3(0x155),_0x369d2b),_0x2cf4ef['end']();});}function authHeaders(_0xf6f59e,_0x3e9c5f,_0x72c182){const _0x43b557=_0x43993e,_0x18ec75=_0xf6f59e[_0x43b557(0x2b3)+'me']+_0xf6f59e[_0x43b557(0x190)];if(digestState[_0x43b557(0x22b)+_0x43b557(0x1de)]?.[_0x43b557(0x239)]===_0x43b557(0x175)&&_0x3e9c5f)return{'Authorization':digestHeader(digestState[_0x43b557(0x22b)+_0x43b557(0x1de)],_0x3e9c5f,_0x72c182,_0x43b557(0x1d7),_0x18ec75)};if(_0x3e9c5f)return{'Authorization':_0x43b557(0x245)+Buffer[_0x43b557(0x161)](_0x3e9c5f+':'+_0x72c182)[_0x43b557(0x1d6)+'ng']('base64')};return{};}async function fetchAuthImage(_0x282eab,_0x5a425f,_0x5bc977,_0x10c21f=0x0){const _0x2af360=_0x43993e;if(_0x10c21f>0x3)throw new Error('截图地址跳转'+'过多');const _0x2f2f26=new URL(_0x282eab),_0x161932=decodeURIComponent(_0x2f2f26[_0x2af360(0x186)+'me']||_0x5a425f||''),_0x18a571=decodeURIComponent(_0x2f2f26['passwo'+'rd']||_0x5bc977||'');_0x2f2f26[_0x2af360(0x186)+'me']='',_0x2f2f26[_0x2af360(0x153)+'rd']='';const _0x5a17c5=_0x2f2f26[_0x2af360(0x2b3)+'me']+_0x2f2f26['search'];let _0x150fa6=await requestOnce(_0x2f2f26,authHeaders(_0x2f2f26,_0x161932,_0x18a571));if(_0x150fa6['status']===0x191){const _0x42e393=_0x150fa6[_0x2af360(0x260)+'s']['www-au'+_0x2af360(0x247)+_0x2af360(0x2b1)]||'';digestState[_0x2af360(0x22b)+_0x2af360(0x1de)]=parseChallenge(Array['isArra'+'y'](_0x42e393)?_0x42e393[0x0]:_0x42e393),digestState['nc']=0x1;const _0x19e44c={};if(digestState['challe'+_0x2af360(0x1de)][_0x2af360(0x239)]===_0x2af360(0x175)&&_0x161932)_0x19e44c[_0x2af360(0x289)+'izatio'+'n']=digestHeader(digestState[_0x2af360(0x22b)+_0x2af360(0x1de)],_0x161932,_0x18a571,_0x2af360(0x1d7),_0x5a17c5);else _0x161932&&(_0x19e44c[_0x2af360(0x289)+_0x2af360(0x2b4)+'n']=_0x2af360(0x245)+Buffer['from'](_0x161932+':'+_0x18a571)[_0x2af360(0x1d6)+'ng'](_0x2af360(0x2aa)));_0x150fa6=await requestOnce(_0x2f2f26,_0x19e44c);}if(_0x150fa6[_0x2af360(0x13a)]>=0x12c&&_0x150fa6[_0x2af360(0x13a)]<0x190&&_0x150fa6[_0x2af360(0x260)+'s'][_0x2af360(0x219)+'on'])return fetchAuthImage(new URL(_0x150fa6[_0x2af360(0x260)+'s']['locati'+'on'],_0x2f2f26)[_0x2af360(0x20e)],_0x161932,_0x18a571,_0x10c21f+0x1);if(_0x150fa6[_0x2af360(0x13a)]>=0x190)throw new Error(_0x150fa6[_0x2af360(0x13a)]===0x191?'截图需要账号'+'密码':'截图失败('+_0x150fa6[_0x2af360(0x13a)]+')');const _0x3df722=String(_0x150fa6[_0x2af360(0x260)+'s']['conten'+_0x2af360(0x162)]||'');if(_0x3df722[_0x2af360(0x192)+'es'](_0x2af360(0x241))||_0x3df722['includ'+'es'](_0x2af360(0x1f0)))throw new Error(_0x2af360(0x20f)+_0x2af360(0x171));return _0x150fa6[_0x2af360(0x255)];}export async function getSnapshot(){const _0x4f817b=_0x43993e;if(!currentCam||!state['connec'+'ted'])throw new Error(_0x4f817b(0x246)+'像头');const _0x2105f3=async()=>{const _0x2d1d47=_0x4f817b,_0x597e75=await currentCam[_0x2d1d47(0x274)+_0x2d1d47(0x158)+'ri']({});state[_0x2d1d47(0x23c)+_0x2d1d47(0x1fb)]=(typeof _0x597e75==='string'?_0x597e75:_0x597e75?.[_0x2d1d47(0x17d)]||'')[_0x2d1d47(0x169)+'e'](/&amp;/g,'&');if(!state[_0x2d1d47(0x23c)+_0x2d1d47(0x1fb)])throw new Error(_0x2d1d47(0x21c)+_0x2d1d47(0x1a7)+'址');};!state[_0x4f817b(0x23c)+_0x4f817b(0x1fb)]&&await _0x2105f3();try{return await fetchAuthImage(state[_0x4f817b(0x23c)+_0x4f817b(0x1fb)],state[_0x4f817b(0x186)+'me'],state[_0x4f817b(0x153)+'rd']);}catch(_0x4e2364){return await _0x2105f3(),fetchAuthImage(state[_0x4f817b(0x23c)+_0x4f817b(0x1fb)],state[_0x4f817b(0x186)+'me'],state[_0x4f817b(0x153)+'rd']);}}export async function ptzMove(_0x19eb65){const _0x724224=_0x43993e;if(!state['connec'+_0x724224(0x16b)])throw new Error(_0x724224(0x246)+'像头');if(_0x19eb65!=='stop'&&ptzBusy)return{'ok':!![]};while(_0x19eb65===_0x724224(0x2ab)&&ptzBusy){await new Promise(_0x13064d=>setTimeout(_0x13064d,0x28));}const _0x198a82=async _0x3beb0b=>{const _0x4814bb=_0x724224;if(!_0x3beb0b)throw new Error(_0x4814bb(0x246)+'像头');if(_0x19eb65===_0x4814bb(0x2ab))return await _0x3beb0b['stop']({'panTilt':!![],'zoom':!![]}),{'ok':!![]};const _0x2d879f=directions[_0x19eb65];if(!_0x2d879f)throw new Error(_0x4814bb(0x184)+'方向');if(!state['ptz'])throw new Error(_0x4814bb(0x21c)+'有云台,或\x20'+_0x4814bb(0x21b)+_0x4814bb(0x13d)+'Z');const _0x2be371={'x':_0x2d879f['x']||0x0,'y':_0x2d879f['y']||0x0,'timeout':PTZ_TIMEOUT_MS};return _0x2d879f[_0x4814bb(0x1ae)]?(_0x2be371[_0x4814bb(0x1ae)]=_0x2d879f[_0x4814bb(0x1ae)],_0x2be371[_0x4814bb(0x1df)+'ndZoom']=!![]):_0x2be371[_0x4814bb(0x1df)+_0x4814bb(0x1f3)+'ilt']=!![],await _0x3beb0b[_0x4814bb(0x1cb)+_0x4814bb(0x288)+'ve'](_0x2be371),{'ok':!![]};};ptzBusy=!![];try{try{return await _0x198a82(currentCam);}catch(_0x2dca18){if(!isNetworkError(_0x2dca18))throw new Error(cameraError(_0x2dca18,_0x724224(0x278)));const _0x2e3079=await refreshOnvif();return await _0x198a82(_0x2e3079);}}catch(_0x509558){throw new Error(cameraError(_0x509558,_0x724224(0x278)));}finally{ptzBusy=![];}}function bitstreamFilter(_0x2c7aeb){const _0x2430b9=_0x43993e;if(/hevc|h265/[_0x2430b9(0x24d)](_0x2c7aeb))return _0x2430b9(0x17f)+_0x2430b9(0x199)+_0x2430b9(0x2a1);if(/h264|avc/['test'](_0x2c7aeb))return _0x2430b9(0x1b5)+_0x2430b9(0x199)+_0x2430b9(0x2a1);return'';}function broadcastTs(_0x3ca023){const _0x5cb17d=_0x43993e;for(const _0x2b3a68 of streamClients){try{_0x2b3a68[_0x5cb17d(0x23a)](_0x3ca023);}catch{streamClients[_0x5cb17d(0x209)](_0x2b3a68);}}}function killSharedFfmpeg(){const _0x58648b=_0x43993e;clearTimeout(ffmpegRestartTimer),ffmpegRestartTimer=null;const _0x2ca5d1=sharedFfmpeg;sharedFfmpeg=null;if(!_0x2ca5d1)return;ffmpegProcs['delete'](_0x2ca5d1);try{_0x2ca5d1[_0x58648b(0x13b)]?.[_0x58648b(0x1d2)+'AllLis'+_0x58648b(0x270)]('data'),_0x2ca5d1[_0x58648b(0x187)](_0x58648b(0x2a2)+'L');}catch{}}function ensureSharedFfmpeg(_0x201de9){const _0x573187=_0x43993e;if(sharedFfmpeg&&!sharedFfmpeg[_0x573187(0x28d)])return;const _0x43c24c=resolveFfmpeg(),_0x3fdd79=injectRtspAuth(state[_0x573187(0x160)+'i'],state[_0x573187(0x186)+'me'],state[_0x573187(0x153)+'rd']),_0x4540e6=[_0x573187(0x1e5)+'banner',_0x573187(0x1b6)+_0x573187(0x170),_0x573187(0x155),_0x573187(0x1d5)+_0x573187(0x13c)+_0x573187(0x1a3),_0x573187(0x146),_0x573187(0x152)+'s',_0x573187(0x280)+_0x573187(0x1b7)+_0x573187(0x1f7)+_0x573187(0x27f)+_0x573187(0x25e),_0x573187(0x1c1),_0x573187(0x244)+_0x573187(0x1b2),_0x573187(0x1ec)+_0x573187(0x139),'0','-i',_0x3fdd79,_0x573187(0x16c)];if(_0x201de9)_0x4540e6[_0x573187(0x217)](_0x573187(0x298),_0x573187(0x282)+'4',_0x573187(0x1c3)+'t',_0x573187(0x225)+_0x573187(0x253),_0x573187(0x2a5),'zerola'+_0x573187(0x164),_0x573187(0x2a4)+'le:v',_0x573187(0x2ac)+'ne',_0x573187(0x16a)+'mt',_0x573187(0x1fc)+'p','-bf','0','-g','30','-keyin'+_0x573187(0x29e),'30','-vf',_0x573187(0x264)+'\x27min(1'+_0x573187(0x1f8)+_0x573187(0x221));else{_0x4540e6[_0x573187(0x217)](_0x573187(0x298),_0x573187(0x1c2));const _0x2317cb=bitstreamFilter(state[_0x573187(0x2a8)+'ng']);if(_0x2317cb)_0x4540e6['push']('-bsf:v',_0x2317cb);}_0x4540e6[_0x573187(0x217)]('-f',_0x573187(0x1f1),_0x573187(0x2ae)+_0x573187(0x1b2),'0',_0x573187(0x1e3)+_0x573187(0x1c4),'0',_0x573187(0x297)),sharedTranscode=_0x201de9;const _0xf0c3fc=spawn(_0x43c24c,_0x4540e6,{'stdio':[_0x573187(0x20d),_0x573187(0x1bb),_0x573187(0x1bb)]});sharedFfmpeg=_0xf0c3fc,ffmpegProcs[_0x573187(0x1f2)](_0xf0c3fc),console[_0x573187(0x271)](_0x573187(0x22c)+'g]',_0x201de9?_0x573187(0x26f)+_0x573187(0x166)+'64':_0x573187(0x200)+(state[_0x573187(0x2a8)+'ng']||_0x573187(0x15c)+'n'),state[_0x573187(0x23b)+'me']),_0xf0c3fc['stdout']['on'](_0x573187(0x27c),_0x52e9f5=>{ffmpegBackoffMs=0x320,broadcastTs(_0x52e9f5);}),_0xf0c3fc['stderr']['on'](_0x573187(0x27c),_0xb299b4=>{const _0x5f585a=_0x573187,_0x8f21b7=String(_0xb299b4||'')[_0x5f585a(0x211)]();if(_0x8f21b7)console[_0x5f585a(0x18c)](_0x5f585a(0x22c)+'g]',_0x8f21b7);}),_0xf0c3fc['on'](_0x573187(0x155),_0x3c9de4=>{const _0x537809=_0x573187;console['warn'](_0x537809(0x22c)+_0x537809(0x1e7)+'wn',_0x3c9de4[_0x537809(0x195)+'e']);}),_0xf0c3fc['on']('exit',_0x3ce293=>{const _0x28c6d0=_0x573187;ffmpegProcs[_0x28c6d0(0x209)](_0xf0c3fc);if(sharedFfmpeg===_0xf0c3fc)sharedFfmpeg=null;if(!state[_0x28c6d0(0x1dd)+_0x28c6d0(0x16b)]||!streamClients[_0x28c6d0(0x206)])return;console[_0x28c6d0(0x18c)](_0x28c6d0(0x22c)+_0x28c6d0(0x1aa)+'t',_0x3ce293,_0x28c6d0(0x23e)+_0x28c6d0(0x135),ffmpegBackoffMs,'ms'),clearTimeout(ffmpegRestartTimer),ffmpegRestartTimer=setTimeout(()=>{const _0x35a63a=_0x28c6d0;ffmpegRestartTimer=null;if(!state[_0x35a63a(0x1dd)+_0x35a63a(0x16b)]||!streamClients[_0x35a63a(0x206)])return;ensureSharedFfmpeg(sharedTranscode);},ffmpegBackoffMs),ffmpegBackoffMs=Math[_0x28c6d0(0x2a7)](ffmpegBackoffMs*0x2,0x1f40);});}function startMpegtsStream(_0x12e36a,_0x5a08a5){const _0x2af7cd=_0x43993e,_0x130fb7=String(_0x12e36a[_0x2af7cd(0x1ca)]?.[_0x2af7cd(0x28c)]||'')===_0x2af7cd(0x242);_0x12e36a[_0x2af7cd(0x26c)]?.['setTim'+'eout'](0x0),_0x5a08a5['socket']?.['setTim'+_0x2af7cd(0x265)](0x0),_0x5a08a5[_0x2af7cd(0x20a)+_0x2af7cd(0x147)](_0x2af7cd(0x1d3)+'t-Type',_0x2af7cd(0x24c)+_0x2af7cd(0x250)),_0x5a08a5['setHea'+_0x2af7cd(0x147)](_0x2af7cd(0x176)+_0x2af7cd(0x295)+'l',_0x2af7cd(0x279)+_0x2af7cd(0x1cc)+_0x2af7cd(0x1ea)+_0x2af7cd(0x22f)+_0x2af7cd(0x220)+_0x2af7cd(0x157)),_0x5a08a5[_0x2af7cd(0x20a)+_0x2af7cd(0x147)]('Connec'+_0x2af7cd(0x22a),_0x2af7cd(0x1a6)+_0x2af7cd(0x148)),_0x5a08a5[_0x2af7cd(0x20a)+_0x2af7cd(0x147)](_0x2af7cd(0x26b)+_0x2af7cd(0x1e4)+_0x2af7cd(0x1f5),'no');if(typeof _0x5a08a5[_0x2af7cd(0x1b3)+_0x2af7cd(0x1a5)]===_0x2af7cd(0x1d9)+'on')_0x5a08a5[_0x2af7cd(0x1b3)+_0x2af7cd(0x1a5)]();streamClients['add'](_0x5a08a5),clearTimeout(ffmpegIdleTimer),ffmpegIdleTimer=null,ensureSharedFfmpeg(_0x130fb7||sharedTranscode);let _0x38e5be=![];const _0x55d986=()=>{const _0x2e58a3=_0x2af7cd;if(_0x38e5be)return;_0x38e5be=!![],streamClients[_0x2e58a3(0x209)](_0x5a08a5);try{if(!_0x5a08a5[_0x2e58a3(0x213)+_0x2e58a3(0x18b)+'d'])_0x5a08a5[_0x2e58a3(0x18a)]();}catch{}streamClients[_0x2e58a3(0x206)]===0x0&&(clearTimeout(ffmpegIdleTimer),ffmpegIdleTimer=setTimeout(()=>{const _0x2d3472=_0x2e58a3;ffmpegIdleTimer=null;if(streamClients[_0x2d3472(0x206)]===0x0)killSharedFfmpeg();},0x5dc));};_0x12e36a['on']('close',_0x55d986),_0x5a08a5['on'](_0x2af7cd(0x180),_0x55d986);}export function registerCameraRoutes(_0x4df788,{getConfig:_0x5cc628,saveConfig:_0x57342b}){const _0x27f409=_0x43993e;_0x4df788[_0x27f409(0x13f)](_0x27f409(0x20c)+'amera/'+_0x27f409(0x182)+'er',async(_0x5738fa,_0x125e3a)=>{const _0x199048=_0x27f409;try{const _0x2a4451=await discover();_0x125e3a[_0x199048(0x1f9)]({'devices':_0x2a4451});}catch(_0x41dc88){_0x125e3a[_0x199048(0x13a)](0x190)[_0x199048(0x1f9)]({'message':cameraError(_0x41dc88,_0x199048(0x1ac)+'if\x20设备失'+'败')});}}),_0x4df788[_0x27f409(0x291)](_0x27f409(0x20c)+_0x27f409(0x214)+_0x27f409(0x13a),(_0x2fe92b,_0x150af1)=>{const _0x2b8359=_0x27f409,_0x5c57a2=_0x5cc628()[_0x2b8359(0x226)]||{};_0x150af1[_0x2b8359(0x1f9)]({...publicState(),'saved':{'hostname':_0x5c57a2[_0x2b8359(0x23b)+'me']||'','port':_0x5c57a2[_0x2b8359(0x294)]||0x50,'path':_0x5c57a2[_0x2b8359(0x13e)]||_0x2b8359(0x183)+_0x2b8359(0x15f)+_0x2b8359(0x179)+_0x2b8359(0x142),'username':_0x5c57a2[_0x2b8359(0x186)+'me']||'','password_set':!!_0x5c57a2[_0x2b8359(0x153)+'rd']}});}),_0x4df788['post'](_0x27f409(0x20c)+_0x27f409(0x214)+_0x27f409(0x1dd)+'t',async(_0x4cc24a,_0x1a99a6)=>{const _0x2d0958=_0x27f409;try{const _0x402969=_0x5cc628(),_0x44aafc=_0x402969[_0x2d0958(0x226)]||{},_0x1d0b4e=_0x4cc24a[_0x2d0958(0x255)]?.['passwo'+'rd']||_0x44aafc['passwo'+'rd']||'',_0x25235e=await connectCamera({'hostname':_0x4cc24a[_0x2d0958(0x255)]?.[_0x2d0958(0x23b)+'me']||_0x44aafc['hostna'+'me'],'port':_0x4cc24a[_0x2d0958(0x255)]?.[_0x2d0958(0x294)]||_0x44aafc[_0x2d0958(0x294)],'username':_0x4cc24a['body']?.['userna'+'me']||_0x44aafc[_0x2d0958(0x186)+'me'],'password':_0x1d0b4e,'path':_0x4cc24a[_0x2d0958(0x255)]?.[_0x2d0958(0x13e)]||_0x44aafc[_0x2d0958(0x13e)]});_0x402969[_0x2d0958(0x226)]={'hostname':state[_0x2d0958(0x23b)+'me'],'port':state[_0x2d0958(0x294)],'path':state[_0x2d0958(0x13e)],'username':state[_0x2d0958(0x186)+'me'],'password':state[_0x2d0958(0x153)+'rd']},_0x57342b(),_0x1a99a6['json'](_0x25235e);}catch(_0x35bf5d){_0x1a99a6[_0x2d0958(0x13a)](0x190)[_0x2d0958(0x1f9)]({'message':cameraError(_0x35bf5d,_0x2d0958(0x1fa)+'败')});}}),_0x4df788[_0x27f409(0x13f)](_0x27f409(0x20c)+_0x27f409(0x214)+_0x27f409(0x17b)+_0x27f409(0x163),(_0x12e31f,_0x291447)=>{const _0x4a53e2=_0x27f409;_0x291447[_0x4a53e2(0x1f9)](disconnectCamera());}),_0x4df788[_0x27f409(0x291)]('/api/c'+_0x27f409(0x214)+_0x27f409(0x23c)+'ot',async(_0x57475e,_0x540f35)=>{const _0x8fff4a=_0x27f409;try{const _0x2260fc=await getSnapshot();_0x540f35[_0x8fff4a(0x20a)+_0x8fff4a(0x147)](_0x8fff4a(0x1d3)+_0x8fff4a(0x24a),_0x8fff4a(0x1c6)+_0x8fff4a(0x284)),_0x540f35[_0x8fff4a(0x20a)+_0x8fff4a(0x147)]('Cache-'+_0x8fff4a(0x295)+'l',_0x8fff4a(0x279)+'re'),_0x540f35[_0x8fff4a(0x1c9)](_0x2260fc);}catch(_0x114143){_0x540f35[_0x8fff4a(0x13a)](0x190)[_0x8fff4a(0x1f9)]({'message':cameraError(_0x114143,_0x8fff4a(0x269))});}}),_0x4df788[_0x27f409(0x291)](_0x27f409(0x20c)+_0x27f409(0x214)+_0x27f409(0x156),async(_0x260582,_0x39c52f)=>{const _0x4766d1=_0x27f409;if(!state[_0x4766d1(0x1dd)+_0x4766d1(0x16b)]){_0x39c52f[_0x4766d1(0x13a)](0x190)[_0x4766d1(0x1f9)]({'message':'还没有画面,'+'请先连接摄像'+'头'});return;}if(state['rtspUr'+'i']){startMpegtsStream(_0x260582,_0x39c52f);return;}if(state['liveUr'+'i'])try{const _0x41090e=await openCameraHttp(state[_0x4766d1(0x1ad)+'i'],state[_0x4766d1(0x186)+'me'],state[_0x4766d1(0x153)+'rd'],0x1f40);_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)]('Conten'+_0x4766d1(0x24a),_0x41090e[_0x4766d1(0x24e)+_0x4766d1(0x15b)]||_0x4766d1(0x17a)+_0x4766d1(0x28b)+_0x4766d1(0x1d0)+_0x4766d1(0x169)+_0x4766d1(0x1d4)+'ndary='+_0x4766d1(0x14a)),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x176)+_0x4766d1(0x295)+'l',_0x4766d1(0x279)+_0x4766d1(0x1cc)+_0x4766d1(0x1ea)+_0x4766d1(0x22f)+_0x4766d1(0x220)+_0x4766d1(0x157)),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x283)+'tion',_0x4766d1(0x1a6)+_0x4766d1(0x148)),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x26b)+_0x4766d1(0x1e4)+'ering','no');const _0x1141c5=()=>{const _0x587445=_0x4766d1;try{_0x41090e[_0x587445(0x19e)][_0x587445(0x26d)+'y']();}catch{}try{_0x41090e[_0x587445(0x26a)][_0x587445(0x26d)+'y']();}catch{}};_0x260582['on'](_0x4766d1(0x180),_0x1141c5),_0x39c52f['on'](_0x4766d1(0x180),_0x1141c5),_0x41090e[_0x4766d1(0x26a)]['on'](_0x4766d1(0x155),_0x1141c5),_0x41090e['res'][_0x4766d1(0x1bb)](_0x39c52f);return;}catch(_0x5be13e){console[_0x4766d1(0x18c)]('[camer'+_0x4766d1(0x1f4)+_0x4766d1(0x290),_0x5be13e?.[_0x4766d1(0x195)+'e']||_0x5be13e);}if(!state[_0x4766d1(0x23c)+_0x4766d1(0x1fb)]){_0x39c52f[_0x4766d1(0x13a)](0x190)[_0x4766d1(0x1f9)]({'message':_0x4766d1(0x21c)+_0x4766d1(0x1fd)+'览流'});return;}_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x1d3)+_0x4766d1(0x24a),_0x4766d1(0x17a)+'art/x-'+_0x4766d1(0x1d0)+_0x4766d1(0x169)+'e;\x20bou'+_0x4766d1(0x20b)+'frame'),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x176)+_0x4766d1(0x295)+'l',_0x4766d1(0x279)+_0x4766d1(0x1cc)+_0x4766d1(0x1ea)+_0x4766d1(0x22f)+_0x4766d1(0x220)+_0x4766d1(0x157)),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x138),_0x4766d1(0x19c)+'he'),_0x39c52f[_0x4766d1(0x20a)+_0x4766d1(0x147)](_0x4766d1(0x283)+_0x4766d1(0x22a),'keep-a'+_0x4766d1(0x148)),_0x39c52f['setHea'+_0x4766d1(0x147)](_0x4766d1(0x26b)+_0x4766d1(0x1e4)+_0x4766d1(0x1f5),'no');let _0x308853=![];const _0x2acc8a=()=>{_0x308853=!![];};_0x260582['on'](_0x4766d1(0x180),_0x2acc8a),_0x39c52f['on']('close',_0x2acc8a);let _0x41126b=getSnapshot()[_0x4766d1(0x29f)](()=>null);while(!_0x308853&&state[_0x4766d1(0x1dd)+'ted']){const _0x368ad9=await _0x41126b;if(_0x308853)break;_0x41126b=getSnapshot()[_0x4766d1(0x29f)](()=>null);if(!_0x368ad9?.['length']){await new Promise(_0x5acfc3=>setTimeout(_0x5acfc3,0xb4));continue;}try{_0x39c52f['write'](_0x4766d1(0x249)+'e\x0d\x0aCon'+_0x4766d1(0x141)+_0x4766d1(0x1eb)+_0x4766d1(0x14f)+_0x4766d1(0x251)+_0x4766d1(0x151)+_0x4766d1(0x1af)+_0x4766d1(0x178)+_0x368ad9['length']+_0x4766d1(0x21d)),_0x39c52f['write'](_0x368ad9),_0x39c52f['write']('\x0d\x0a');}catch{break;}}if(!_0x39c52f[_0x4766d1(0x213)+_0x4766d1(0x18b)+'d'])_0x39c52f[_0x4766d1(0x18a)]();}),_0x4df788[_0x27f409(0x13f)](_0x27f409(0x20c)+'amera/'+'ptz',async(_0x1e685e,_0x4e642e)=>{const _0x159cdd=_0x27f409;try{const _0x2b7785=String(_0x1e685e[_0x159cdd(0x255)]?.[_0x159cdd(0x2a6)]||'');_0x4e642e[_0x159cdd(0x1f9)](await ptzMove(_0x2b7785));}catch(_0x4ce1d4){_0x4e642e[_0x159cdd(0x13a)](0x190)[_0x159cdd(0x1f9)]({'message':cameraError(_0x4ce1d4,'云台控制失败')});}});}
@@ -0,0 +1 @@
1
+ const _0x5c3f9e=_0x3395;(function(_0x58f153,_0x3e9c9e){const _0x237bf9=_0x3395,_0x9d50bb=_0x58f153();while(!![]){try{const _0x48b7b8=parseInt(_0x237bf9(0x17e))/0x1*(-parseInt(_0x237bf9(0xad))/0x2)+parseInt(_0x237bf9(0xeb))/0x3*(-parseInt(_0x237bf9(0x119))/0x4)+-parseInt(_0x237bf9(0xec))/0x5+-parseInt(_0x237bf9(0x1b9))/0x6*(-parseInt(_0x237bf9(0x14b))/0x7)+-parseInt(_0x237bf9(0x9f))/0x8+parseInt(_0x237bf9(0x111))/0x9+parseInt(_0x237bf9(0x153))/0xa;if(_0x48b7b8===_0x3e9c9e)break;else _0x9d50bb['push'](_0x9d50bb['shift']());}catch(_0x2cdf26){_0x9d50bb['push'](_0x9d50bb['shift']());}}}(_0x583d,0xa1584));import _0x43e6db from'node:fs';import _0x4d981a from'node:os';import _0x373947 from'node:path';import _0x2316d1 from'node:http';import _0x394ff8 from'node:crypto';import{execFile}from'node:child_process';import{fileURLToPath}from'node:url';import _0x916c90 from'express';import _0xe860eb from'cors';import _0x2bc926 from'mqtt';import _0x376ff0 from'bonjour-service';import{registerCameraRoutes}from'./camera.mjs';const PORT=Number(process[_0x5c3f9e(0x122)]['PORT']||0xec4),DIST_DIR=_0x373947[_0x5c3f9e(0xaf)](_0x373947[_0x5c3f9e(0xdf)+'e'](fileURLToPath(import.meta.url)),'..',_0x5c3f9e(0x129)),CONFIG_DIR=_0x373947[_0x5c3f9e(0xaf)](_0x4d981a[_0x5c3f9e(0x108)+'r'](),_0x5c3f9e(0xb2)+_0x5c3f9e(0x18a)+'p'),CONFIG_PATH=_0x373947[_0x5c3f9e(0xaf)](CONFIG_DIR,_0x5c3f9e(0x199)+_0x5c3f9e(0x11e)),MQTT_FAILS_BEFORE_REBIND=0x3;function loadConfig(){const _0x1e9b61=_0x5c3f9e;try{return JSON[_0x1e9b61(0x134)](_0x43e6db[_0x1e9b61(0x1bf)+_0x1e9b61(0x1b7)](CONFIG_PATH,_0x1e9b61(0xe3)));}catch{return{'deviceBaseUrl':'','mqtt':null,'bound':![]};}}function saveConfig(_0x376d99){const _0x576274=_0x5c3f9e;_0x43e6db['mkdirS'+'ync'](CONFIG_DIR,{'recursive':!![]}),_0x43e6db[_0x576274(0xe6)+_0x576274(0x192)+'c'](CONFIG_PATH,JSON[_0x576274(0xf0)+_0x576274(0x12a)](_0x376d99,null,0x2));}let config=loadConfig(),mqttClient=null,mqttFailCount=0x0,lastMqttError='',mqttStatus=_0x5c3f9e(0xa9),mossOnline=![],lastHelloAt=0x0,lastLearned=null;const sseClients=new Set(),pending=new Map(),connectWaiters=[];function emit(_0x25b877,_0x3fc7a6){const _0x5d886d=_0x5c3f9e,_0x7ba3c1=_0x5d886d(0xfe)+'\x20'+_0x25b877+(_0x5d886d(0x11c)+'\x20')+JSON[_0x5d886d(0xf0)+_0x5d886d(0x12a)](_0x3fc7a6)+'\x0a\x0a';for(const _0x422331 of sseClients){_0x422331[_0x5d886d(0x19b)](_0x7ba3c1);}}function statusPayload(_0x560d7c={}){const _0x315ba9=_0x5c3f9e;return{'status':mqttStatus,'bound':!!config[_0x315ba9(0xee)],'mossOnline':mossOnline,'failCount':mqttFailCount,'lastError':lastMqttError,..._0x560d7c};}function notifyConnectWaiters(_0x564d33,_0x1cfa39){const _0xe7838e=_0x5c3f9e;for(const _0x41e8ad of connectWaiters[_0xe7838e(0xe4)](0x0)){clearTimeout(_0x41e8ad[_0xe7838e(0x135)]);if(_0x564d33)_0x41e8ad['resolv'+'e']();else _0x41e8ad['reject'](_0x1cfa39||new Error(lastMqttError||_0xe7838e(0x95)+'败'));}}function waitMqttReady(_0x28f47b=0x2ee0){const _0x5da56a=_0x5c3f9e;if(mqttStatus===_0x5da56a(0x157))return Promise['resolv'+'e']();return new Promise((_0x2dc5a9,_0x4712af)=>{const _0x566119=_0x5da56a,_0x56ec16=setTimeout(()=>{const _0x5a67b8=_0x3395,_0x1e9084=connectWaiters[_0x5a67b8(0x1b8)+_0x5a67b8(0x1ad)](_0x2d3c3c=>_0x2d3c3c['timer']===_0x56ec16);if(_0x1e9084>=0x0)connectWaiters[_0x5a67b8(0xe4)](_0x1e9084,0x1);_0x4712af(new Error(lastMqttError||_0x5a67b8(0x1c4)+'时'));},_0x28f47b);connectWaiters[_0x566119(0xb9)]({'resolve':_0x2dc5a9,'reject':_0x4712af,'timer':_0x56ec16});});}function setStatus(_0x32855f,_0x37313b={}){const _0x1ba5ae=_0x5c3f9e;mqttStatus=_0x32855f,_0x32855f!==_0x1ba5ae(0x157)&&(mossOnline=![]),emit(_0x1ba5ae(0x19a),statusPayload(_0x37313b)),_0x32855f===_0x1ba5ae(0x157)&&notifyConnectWaiters(!![]),(_0x32855f===_0x1ba5ae(0x9b)+_0x1ba5ae(0xc9)||_0x32855f===_0x1ba5ae(0xa9))&&notifyConnectWaiters(![]);}async function deviceFetch(_0x508790,_0x457ab4={}){const _0x1900f7=_0x5c3f9e;if(!config[_0x1900f7(0x17c)+_0x1900f7(0x147)+'l'])throw new Error(_0x1900f7(0xce)+_0x1900f7(0x1b5)+_0x1900f7(0xb4));const _0x388110=''+config['device'+_0x1900f7(0x147)+'l']+_0x508790,_0x546391=await fetch(_0x388110,{..._0x457ab4,'signal':_0x457ab4['signal']||AbortSignal[_0x1900f7(0x17f)+'t'](0x1f40),'headers':{'Content-Type':_0x1900f7(0x184)+_0x1900f7(0x11d)+_0x1900f7(0x114),..._0x457ab4[_0x1900f7(0x1bd)+'s']||{}}}),_0x5a76e9=await _0x546391[_0x1900f7(0xa1)]();let _0x2037a0={};try{_0x2037a0=_0x5a76e9?JSON['parse'](_0x5a76e9):{};}catch{_0x2037a0={'raw':_0x5a76e9};}if(!_0x546391['ok']){const _0x234717=new Error(_0x2037a0[_0x1900f7(0x8f)+'e']||_0x1900f7(0x163)+'回\x20'+_0x546391[_0x1900f7(0x19a)]);_0x234717[_0x1900f7(0x113)]=_0x2037a0;throw _0x234717;}return _0x2037a0;}const recentUp=[],RECENT_UP_MS=0x1f40;function _0x3395(_0x48a60b,_0xee134a){_0x48a60b=_0x48a60b-0x89;const _0x583dcf=_0x583d();let _0x3395f8=_0x583dcf[_0x48a60b];if(_0x3395['TTEexr']===undefined){var _0x3f9f33=function(_0x39f0dd){const _0x45061b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x43e6db='',_0x4d981a='';for(let _0x373947=0x0,_0x2316d1,_0x394ff8,_0x916c90=0x0;_0x394ff8=_0x39f0dd['charAt'](_0x916c90++);~_0x394ff8&&(_0x2316d1=_0x373947%0x4?_0x2316d1*0x40+_0x394ff8:_0x394ff8,_0x373947++%0x4)?_0x43e6db+=String['fromCharCode'](0xff&_0x2316d1>>(-0x2*_0x373947&0x6)):0x0){_0x394ff8=_0x45061b['indexOf'](_0x394ff8);}for(let _0xe860eb=0x0,_0x2bc926=_0x43e6db['length'];_0xe860eb<_0x2bc926;_0xe860eb++){_0x4d981a+='%'+('00'+_0x43e6db['charCodeAt'](_0xe860eb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4d981a);};_0x3395['qaqgLd']=_0x3f9f33,_0x3395['LkDyZE']={},_0x3395['TTEexr']=!![];}const _0x34cbaa=_0x583dcf[0x0],_0x12500d=_0x48a60b+_0x34cbaa,_0x4906fa=_0x3395['LkDyZE'][_0x12500d];return!_0x4906fa?(_0x3395f8=_0x3395['qaqgLd'](_0x3395f8),_0x3395['LkDyZE'][_0x12500d]=_0x3395f8):_0x3395f8=_0x4906fa,_0x3395f8;}function messageMatches(_0x138c5a,_0x9a5d78,_0x46773b){const _0x5ae23d=_0x5c3f9e,_0x5c0b35=_0x9a5d78[_0x5ae23d(0xc2)+'es'](_0x138c5a[_0x5ae23d(0xd0)])||_0x9a5d78[_0x5ae23d(0xc2)+'es'](_0x5ae23d(0x112)),_0x121a04=!_0x46773b||_0x46773b===_0x138c5a['id'];return _0x5c0b35&&_0x121a04;}function takeRecentUp(_0x27cc9e,_0x33d87d){const _0x1d621e=_0x5c3f9e,_0x509c1a=Date[_0x1d621e(0x1b0)]();for(let _0x5ef1aa=recentUp[_0x1d621e(0x142)]-0x1;_0x5ef1aa>=0x0;_0x5ef1aa--){if(_0x509c1a-recentUp[_0x5ef1aa]['at']>RECENT_UP_MS){recentUp[_0x1d621e(0xe4)](_0x5ef1aa,0x1);continue;}if(messageMatches(recentUp[_0x5ef1aa][_0x1d621e(0x1a0)],_0x27cc9e,_0x33d87d))return recentUp['splice'](_0x5ef1aa,0x1)[0x0]['msg'];}return null;}function waitForMqttType(_0xe4596c,_0x139760=0x3a98,_0x2b2ed5=''){const _0x15e2c2=_0x5c3f9e,_0x53c740=Array[_0x15e2c2(0x1ab)+'y'](_0xe4596c)?_0xe4596c:[_0xe4596c],_0x311070=takeRecentUp(_0x53c740,_0x2b2ed5);if(_0x311070)return Promise[_0x15e2c2(0x9e)+'e'](_0x311070);return new Promise((_0x1ce76b,_0x28640b)=>{const _0x4f46ad=_0x15e2c2,_0x469e17=_0x394ff8[_0x4f46ad(0x1b4)+_0x4f46ad(0x148)](),_0x4d6a78=setTimeout(()=>{const _0x2bbc09=_0x4f46ad;pending[_0x2bbc09(0x13c)](_0x469e17),_0x28640b(new Error(_0x2bbc09(0x1ae)+_0x2bbc09(0xda)));},_0x139760);pending[_0x4f46ad(0xed)](_0x469e17,{'types':_0x53c740,'requestId':_0x2b2ed5,'resolve':_0x1ce76b,'reject':_0x28640b,'timer':_0x4d6a78});});}async function waitForIrAck(_0x4ae9a5,_0x3a2d65=0x3a98){const _0x2b1d77=_0x5c3f9e,_0x13707b=await waitForMqttType(['ir.ack',_0x2b1d77(0x116)+'or'],_0x3a2d65,_0x4ae9a5);if(_0x13707b['type']===_0x2b1d77(0x116)+'or'||_0x13707b[_0x2b1d77(0x190)+'d']?.['ok']===![])throw new Error(_0x13707b['payloa'+'d']?.[_0x2b1d77(0x8f)+'e']||_0x2b1d77(0x15e)+_0x2b1d77(0x16d));return _0x13707b;}async function publishAndWait(_0x271b2b,_0x481d15,_0xb63d8c,_0x1c2c86=0x3a98){const _0x28b80f=_0x5c3f9e,_0xb3fa9=_0x394ff8[_0x28b80f(0x1b4)+_0x28b80f(0x148)](),_0x8cd7c6=waitForMqttType(_0xb63d8c,_0x1c2c86,_0xb3fa9);return publishCmd(_0x271b2b,_0x481d15,_0xb3fa9),_0x8cd7c6;}async function publishIr(_0x1d76c4,_0x14c78d,_0x546013=0x3a98){const _0x4ffc73=_0x5c3f9e,_0x2355fd=_0x394ff8[_0x4ffc73(0x1b4)+_0x4ffc73(0x148)](),_0x8194b1=waitForIrAck(_0x2355fd,_0x546013);return publishCmd(_0x1d76c4,_0x14c78d,_0x2355fd),_0x8194b1;}function subscribeDeviceTopics(_0x115adb){const _0x10a609=_0x5c3f9e,_0x15fcc0=_0x115adb[_0x10a609(0x103)+'h_topi'+'c'];if(!_0x15fcc0)return Promise[_0x10a609(0x9e)+'e']([]);return new Promise((_0x1ee029,_0x44d6ae)=>{mqttClient['subscr'+'ibe'](_0x15fcc0,{'qos':0x1},(_0x4a5c18,_0x18b0d8)=>{const _0x368b2c=_0x3395;if(_0x4a5c18){_0x44d6ae(_0x4a5c18);return;}const _0x1126d9=(_0x18b0d8||[])['filter'](_0x40533e=>_0x40533e[_0x368b2c(0x18e)]===0x80);_0x1126d9[_0x368b2c(0x142)]&&console[_0x368b2c(0x132)]('[mqtt]'+_0x368b2c(0xf5)+_0x368b2c(0xef)+_0x368b2c(0xba),_0x1126d9),console['log']('[mqtt]'+_0x368b2c(0xf5)+'ribed',_0x18b0d8),_0x1ee029(_0x18b0d8||[]);});});}function publishCmd(_0x24b896,_0x34cd56={},_0x1f4d8a=_0x394ff8[_0x5c3f9e(0x1b4)+'UUID']()){const _0x2c92d3=_0x5c3f9e;if(!mqttClient||!config[_0x2c92d3(0x18c)]?.[_0x2c92d3(0x8d)+_0x2c92d3(0x8b)])throw new Error(_0x2c92d3(0x150));const _0x3bc9ed=JSON[_0x2c92d3(0xf0)+_0x2c92d3(0x12a)]({'id':_0x1f4d8a,'type':_0x24b896,'payload':_0x34cd56}),_0x8bedfa=_0x34cd56&&typeof _0x34cd56===_0x2c92d3(0x139)?Object[_0x2c92d3(0x1ac)](_0x34cd56)[_0x2c92d3(0xaf)](','):'';return console[_0x2c92d3(0xc4)]('[mqtt]'+_0x2c92d3(0x1a6),_0x24b896,_0x2c92d3(0x120)+_0x3bc9ed[_0x2c92d3(0x142)],_0x8bedfa?_0x2c92d3(0xc1)+_0x8bedfa:'',_0x1f4d8a),mqttClient[_0x2c92d3(0x103)+'h'](config[_0x2c92d3(0x18c)][_0x2c92d3(0x8d)+_0x2c92d3(0x8b)],_0x3bc9ed,{'qos':0x1,'retain':![]}),_0x1f4d8a;}function handleUpMessage(_0x34f953,_0x410e40={}){const _0x1688d6=_0x5c3f9e;if(_0x410e40[_0x1688d6(0x105)]){console[_0x1688d6(0xc4)](_0x1688d6(0xab)+_0x1688d6(0xf3)+_0x1688d6(0xbe)+_0x1688d6(0xc7));return;}let _0x352678;try{_0x352678=JSON['parse'](_0x34f953);}catch{return;}emit(_0x1688d6(0x18c),_0x352678);_0x352678[_0x1688d6(0xd0)]===_0x1688d6(0x10f)+_0x1688d6(0x193)&&(lastLearned=_0x352678[_0x1688d6(0x190)+'d']?.[_0x1688d6(0x13e)]||'');let _0x4b8474=![];for(const [_0x4b9d50,_0x3b3271]of pending){const _0x35b858=_0x3b3271[_0x1688d6(0x11b)]||[_0x3b3271[_0x1688d6(0xd0)]];messageMatches(_0x352678,_0x35b858,_0x3b3271['reques'+'tId'])&&(clearTimeout(_0x3b3271[_0x1688d6(0x135)]),pending[_0x1688d6(0x13c)](_0x4b9d50),_0x3b3271[_0x1688d6(0x9e)+'e'](_0x352678),_0x4b8474=!![]);}!_0x4b8474&&(recentUp[_0x1688d6(0xb9)]({'msg':_0x352678,'at':Date[_0x1688d6(0x1b0)]()}),recentUp['length']>0x28&&recentUp[_0x1688d6(0x14a)]());}function buildMqttConfig(_0x535377={}){const _0xfc82bd=_0x5c3f9e,_0x2574c9=_0x535377[_0xfc82bd(0x1c8)+'y_name']||config[_0xfc82bd(0x18c)]?.[_0xfc82bd(0x1c8)+_0xfc82bd(0x10a)]||_0xfc82bd(0x161)+'SS',_0x304adb=_0x535377[_0xfc82bd(0x144)+_0xfc82bd(0x1a1)]||config['mqtt']?.[_0xfc82bd(0x144)+_0xfc82bd(0x1a1)]||slugClientId(_0x2574c9,_0xfc82bd(0x106)+_0xfc82bd(0x93));return{'broker':_0x535377['broker']||config[_0xfc82bd(0x18c)]?.[_0xfc82bd(0x185)]||'','port':Number(_0x535377[_0xfc82bd(0x96)]||config['mqtt']?.[_0xfc82bd(0x96)]||0x22b3),'client_id':_0x304adb,'display_name':_0x2574c9,'username':_0x535377[_0xfc82bd(0xa6)+'me']??config[_0xfc82bd(0x18c)]?.[_0xfc82bd(0xa6)+'me']??'','password':_0x535377['passwo'+'rd']||config['mqtt']?.[_0xfc82bd(0x15f)+'rd']||'','cmd_topic':_0x535377[_0xfc82bd(0x8d)+_0xfc82bd(0x8b)]||config[_0xfc82bd(0x18c)]?.[_0xfc82bd(0x8d)+_0xfc82bd(0x8b)]||_0xfc82bd(0x17d)+_0xfc82bd(0xa0)+_0x304adb+_0xfc82bd(0x109),'subscribe_topic':_0x535377['subscr'+_0xfc82bd(0xa8)+'pic']||config[_0xfc82bd(0x18c)]?.[_0xfc82bd(0xf6)+_0xfc82bd(0xa8)+_0xfc82bd(0x8b)]||_0xfc82bd(0x17d)+_0xfc82bd(0xa0)+_0x304adb+'/#','publish_topic':_0x535377[_0xfc82bd(0x103)+'h_topi'+'c']||config['mqtt']?.[_0xfc82bd(0x103)+_0xfc82bd(0x1c7)+'c']||'moss/d'+_0xfc82bd(0x176)+_0x304adb+_0xfc82bd(0x168)};}async function probeMoss(_0x48299e=0x1388,{force:force=![]}={}){const _0x316718=_0x5c3f9e;if(mqttStatus!==_0x316718(0x157))throw new Error(_0x316718(0x150));if(!force&&mossOnline&&Date[_0x316718(0x1b0)]()-lastHelloAt<0x4e20)return{'online':!![]};const _0x1116dd=_0x394ff8[_0x316718(0x1b4)+_0x316718(0x148)](),_0x383359=waitForMqttType(_0x316718(0x1b1)+'ck',_0x48299e,_0x1116dd);lastHelloAt=Date['now'](),publishCmd(_0x316718(0x8c)+_0x316718(0x152),{},_0x1116dd);try{return await _0x383359,mossOnline=!![],emit('status',statusPayload()),{'online':!![]};}catch(_0x4470ee){return console[_0x316718(0x132)]('[mqtt]'+'\x20probe'+_0x316718(0x16b)+'ne',_0x4470ee[_0x316718(0x8f)+'e']),mossOnline=![],emit(_0x316718(0x19a),statusPayload()),{'online':![]};}}function disconnectMqtt(){const _0x50f7a4=_0x5c3f9e;mqttClient&&(mqttClient['remove'+_0x50f7a4(0xa3)+_0x50f7a4(0x195)](),mqttClient[_0x50f7a4(0x198)](!![]),mqttClient=null);}function connectMqtt(){const _0x3d2493=_0x5c3f9e;disconnectMqtt();const _0x357143=config[_0x3d2493(0x18c)];if(!_0x357143?.[_0x3d2493(0x185)]){setStatus(_0x3d2493(0xa9));return;}const _0x5aff0a=_0x3d2493(0x19c)+'//'+_0x357143[_0x3d2493(0x185)]+':'+(_0x357143[_0x3d2493(0x96)]||0x22b3);setStatus('connec'+_0x3d2493(0xf1)),mqttClient=_0x2bc926[_0x3d2493(0x13b)+'t'](_0x5aff0a,{'clientId':_0x3d2493(0x158)+'i-'+_0x394ff8[_0x3d2493(0x1b4)+_0x3d2493(0xae)](0x3)[_0x3d2493(0x140)+'ng'](_0x3d2493(0xf8)),'username':_0x357143[_0x3d2493(0xa6)+'me'],'password':_0x357143[_0x3d2493(0x15f)+'rd'],'keepalive':0x3c,'reconnectPeriod':0x0,'rejectUnauthorized':!![]}),mqttClient['on'](_0x3d2493(0x13b)+'t',async()=>{const _0x1cc17b=_0x3d2493;mqttFailCount=0x0,lastMqttError='';try{await subscribeDeviceTopics(_0x357143);}catch(_0x447629){lastMqttError=_0x447629[_0x1cc17b(0x8f)+'e']||String(_0x447629),console[_0x1cc17b(0x132)](_0x1cc17b(0xab)+_0x1cc17b(0xf5)+_0x1cc17b(0x13f)+_0x1cc17b(0xb0),lastMqttError);}setStatus(_0x1cc17b(0x157)),probeMoss()['catch'](()=>{});}),mqttClient['on'](_0x3d2493(0x8f)+'e',(_0x423a02,_0x533286,_0x4f4d04)=>{const _0x510fab=_0x3d2493;console[_0x510fab(0xc4)](_0x510fab(0xab)+'\x20in',_0x423a02,_0x533286['toStri'+'ng']()[_0x510fab(0x17b)](0x0,0xf0),_0x4f4d04?.[_0x510fab(0x105)]?_0x510fab(0x105):''),handleUpMessage(_0x533286['toStri'+'ng'](),_0x4f4d04);}),mqttClient['on'](_0x3d2493(0x1b6),()=>{const _0x5d676e=_0x3d2493;(mqttStatus===_0x5d676e(0x157)||mqttStatus===_0x5d676e(0x13b)+_0x5d676e(0xf1))&&onMqttFailure('连接已断开');}),mqttClient['on'](_0x3d2493(0x1bb),_0x381767=>{const _0x135093=_0x3d2493;lastMqttError=_0x381767[_0x135093(0x8f)+'e']||String(_0x381767);});}function onMqttFailure(_0x4a85f0){const _0x3b30fe=_0x5c3f9e;mqttFailCount+=0x1,lastMqttError=_0x4a85f0||lastMqttError,mossOnline=![],disconnectMqtt();if(mqttFailCount>=MQTT_FAILS_BEFORE_REBIND){setStatus(_0x3b30fe(0x9b)+_0x3b30fe(0xc9),{'reason':lastMqttError}),emit(_0x3b30fe(0x9c),{'title':_0x3b30fe(0xb8),'message':_0x3b30fe(0xe0)+_0x3b30fe(0xd2)+_0x3b30fe(0x14d)+_0x3b30fe(0x107)+_0x3b30fe(0x91)+'后重新连接。'});return;}setStatus(_0x3b30fe(0xb6)+'ng'),setTimeout(connectMqtt,0xbb8);}function slugClientId(_0xb60ca0,_0x2878b1){const _0x1cfd18=_0x5c3f9e,_0x14653b=String(_0xb60ca0||'')[_0x1cfd18(0xd9)+_0x1cfd18(0x180)](_0x1cfd18(0x178))[_0x1cfd18(0x1a8)+'e'](/[^\x00-\x7F]/g,'')[_0x1cfd18(0x1a8)+'e'](/[^a-zA-Z0-9_-]+/g,'-')[_0x1cfd18(0x1a8)+'e'](/^-+|-+$/g,'')[_0x1cfd18(0xc8)+_0x1cfd18(0xdb)]();if(_0x14653b[_0x1cfd18(0x142)]>=0x3)return _0x14653b['slice'](0x0,0x20);return _0x2878b1||_0x1cfd18(0x167)+_0x394ff8[_0x1cfd18(0x1b4)+_0x1cfd18(0xae)](0x2)[_0x1cfd18(0x140)+'ng']('hex');}const app=_0x916c90();app['use'](_0xe860eb()),app[_0x5c3f9e(0x18b)](_0x916c90[_0x5c3f9e(0x114)]({'limit':_0x5c3f9e(0x174)})),app[_0x5c3f9e(0x187)](_0x5c3f9e(0x13a)+_0x5c3f9e(0xd1),(_0x36aa72,_0x276101)=>{const _0x70b5cb=_0x5c3f9e;_0x276101[_0x70b5cb(0x114)]({'bound':!!config['bound'],'deviceBaseUrl':config[_0x70b5cb(0x17c)+'BaseUr'+'l'],'mossOnline':mossOnline,'mqtt':config[_0x70b5cb(0x18c)]?{...config[_0x70b5cb(0x18c)],'password':undefined,'password_set':!!config['mqtt'][_0x70b5cb(0x15f)+'rd']}:null,'mqttStatus':mqttStatus,'failCount':mqttFailCount,'lastError':lastMqttError});}),app['get'](_0x5c3f9e(0x101)+_0x5c3f9e(0x13d),(_0x2feda6,_0x58604d)=>{const _0x3fee39=_0x5c3f9e;_0x58604d[_0x3fee39(0xfc)+_0x3fee39(0x136)](_0x3fee39(0x1b3)+_0x3fee39(0xe9),'text/e'+_0x3fee39(0xbf)+_0x3fee39(0xd6)),_0x58604d['setHea'+_0x3fee39(0x136)](_0x3fee39(0x131)+'Contro'+'l','no-cac'+'he'),_0x58604d[_0x3fee39(0xfc)+_0x3fee39(0x136)](_0x3fee39(0xe1)+_0x3fee39(0x182),_0x3fee39(0x15d)+_0x3fee39(0x166)),_0x58604d[_0x3fee39(0x8e)+'eaders'](),sseClients[_0x3fee39(0x121)](_0x58604d),_0x58604d['write'](_0x3fee39(0xfe)+'\x20statu'+'s\x0adata'+':\x20'+JSON['string'+_0x3fee39(0x12a)](statusPayload())+'\x0a\x0a'),_0x2feda6['on'](_0x3fee39(0x1b6),()=>sseClients['delete'](_0x58604d));}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0x123)+_0x5c3f9e(0x12b)+'r',async(_0x5661e6,_0x267d01)=>{const _0x2de931=_0x5c3f9e,_0x114d2f=[],_0x5ecdd9=new _0x376ff0(),_0x2a22e9=_0x5ecdd9[_0x2de931(0x12c)]({'type':'moss-h'+_0x2de931(0xd5)},_0x4655a0=>{const _0x2f9180=_0x2de931,_0x26e739=_0x4655a0[_0x2f9180(0x15c)+'r']?.['addres'+'s']||_0x4655a0['host'],_0x4518b8=_0x4655a0[_0x2f9180(0x96)]||0x157c;if(!_0x26e739)return;_0x114d2f['push']({'name':_0x4655a0[_0x2f9180(0x117)]||_0x2f9180(0x18d),'host':_0x26e739,'port':_0x4518b8,'fqdn':_0x4655a0[_0x2f9180(0xd8)],'baseUrl':'http:/'+'/'+_0x26e739+':'+_0x4518b8});});setTimeout(async()=>{const _0x3b2c65=_0x2de931;_0x2a22e9[_0x3b2c65(0x181)](),_0x5ecdd9[_0x3b2c65(0xd3)+'y']();if(_0x114d2f[_0x3b2c65(0x142)]===0x0&&config['lastHo'+'stname']){const _0x14718b=_0x3b2c65(0xfb)+'/'+config['lastHo'+_0x3b2c65(0x9d)]+('.local'+':5500');try{const _0x4e939e=await fetch(_0x14718b+(_0x3b2c65(0x125)+'h'),{'signal':AbortSignal[_0x3b2c65(0x17f)+'t'](0x5dc)});if(_0x4e939e['ok']){const _0x5128c2=await _0x4e939e[_0x3b2c65(0x114)]();_0x114d2f[_0x3b2c65(0xb9)]({'name':_0x5128c2[_0x3b2c65(0xea)+'ce']||config['lastHo'+'stname'],'host':config['lastHo'+_0x3b2c65(0x9d)]+_0x3b2c65(0xaa),'port':0x157c,'baseUrl':_0x14718b});}}catch{}}_0x267d01[_0x3b2c65(0x114)]({'devices':_0x114d2f});},0x9c4);}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0x123)+_0x5c3f9e(0x176)+_0x5c3f9e(0xc3),async(_0x13758a,_0x23d35a)=>{const _0x2a9657=_0x5c3f9e,_0x2305fc=String(_0x13758a[_0x2a9657(0x1c1)]?.['baseUr'+'l']||'')[_0x2a9657(0x1a8)+'e'](/\/$/,'');if(!_0x2305fc)return _0x23d35a[_0x2a9657(0x19a)](0x190)[_0x2a9657(0x114)]({'message':_0x2a9657(0x16c)+'SS\x20地址'});config[_0x2a9657(0x17c)+_0x2a9657(0x147)+'l']=_0x2305fc,saveConfig(config);try{const _0x58be78=await deviceFetch(_0x2a9657(0x125)+'h');_0x58be78[_0x2a9657(0x128)+'me']&&(config[_0x2a9657(0x188)+_0x2a9657(0x9d)]=_0x58be78['hostna'+'me'],saveConfig(config)),_0x23d35a[_0x2a9657(0x114)]({'ok':!![],'health':_0x58be78});}catch(_0x52f53c){_0x23d35a[_0x2a9657(0x19a)](0x190)[_0x2a9657(0x114)]({'message':_0x2a9657(0x177)+'不上。请确认'+_0x2a9657(0xf4)+_0x2a9657(0x1c2)+_0x2a9657(0x162)+_0x2a9657(0x137)+'P。','detail':_0x52f53c['messag'+'e']});}}),app['get'](_0x5c3f9e(0x123)+'evice/'+_0x5c3f9e(0x90),async(_0x1d1f6c,_0x29756a)=>{const _0xe5103b=_0x5c3f9e;try{_0x29756a[_0xe5103b(0x114)](await deviceFetch('/healt'+'h'));}catch(_0x5ecbab){_0x29756a[_0xe5103b(0x19a)](0x190)[_0xe5103b(0x114)]({'message':_0x5ecbab[_0xe5103b(0x8f)+'e']});}}),app[_0x5c3f9e(0x187)]('/api/d'+_0x5c3f9e(0x176)+_0x5c3f9e(0x18c),async(_0x42d93b,_0x2e28d2)=>{const _0x40ae3d=_0x5c3f9e;try{_0x2e28d2[_0x40ae3d(0x114)](await deviceFetch('/confi'+_0x40ae3d(0xe8)));}catch(_0x4b0a17){_0x2e28d2[_0x40ae3d(0x19a)](0x190)[_0x40ae3d(0x114)]({'message':_0x4b0a17[_0x40ae3d(0x8f)+'e']});}}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0x1a4)+'qtt/co'+_0x5c3f9e(0x155),async(_0x4b8de0,_0x557137)=>{const _0xd6f213=_0x5c3f9e,_0x28ee77=buildMqttConfig(_0x4b8de0[_0xd6f213(0x1c1)]||{});if(!_0x28ee77['broker'])return _0x557137['status'](0x190)[_0xd6f213(0x114)]({'message':'请填写服务器'+'地址'});config[_0xd6f213(0x18c)]=_0x28ee77,saveConfig(config),mqttFailCount=0x0,lastMqttError='',connectMqtt();try{await waitMqttReady(0x2ee0),_0x557137['json']({'ok':!![],'mqttStatus':mqttStatus,'mqtt':{..._0x28ee77,'password':undefined,'password_set':!![]}});}catch(_0x3121bb){_0x557137['status'](0x190)[_0xd6f213(0x114)]({'message':_0x3121bb[_0xd6f213(0x8f)+'e']||'连不上云通道'+_0xd6f213(0x196)+_0xd6f213(0x91)+'。','lastError':lastMqttError});}}),app['post'](_0x5c3f9e(0x1a4)+_0x5c3f9e(0xc0)+_0x5c3f9e(0xe2),async(_0x47796b,_0x36ad85)=>{const _0x58fc05=_0x5c3f9e;try{const _0x987236=_0x47796b['query'][_0x58fc05(0x1c3)]==='1'||_0x47796b[_0x58fc05(0x1c1)]?.[_0x58fc05(0x1c3)]===!![],_0x362f68=await probeMoss(0x1388,{'force':_0x987236});_0x36ad85[_0x58fc05(0x114)]({'ok':!![],..._0x362f68});}catch(_0x14f816){_0x36ad85[_0x58fc05(0x19a)](0x190)[_0x58fc05(0x114)]({'message':_0x14f816[_0x58fc05(0x8f)+'e']});}}),app[_0x5c3f9e(0x1c5)]('/api/b'+_0x5c3f9e(0x14c)+'tt',async(_0x2044c9,_0x4604a3)=>{const _0x6b6800=_0x5c3f9e,_0x20ff38=buildMqttConfig(_0x2044c9[_0x6b6800(0x1c1)]||{});if(!_0x20ff38[_0x6b6800(0x185)])return _0x4604a3[_0x6b6800(0x19a)](0x190)[_0x6b6800(0x114)]({'message':_0x6b6800(0x11a)+'地址'});try{await deviceFetch(_0x6b6800(0x19d)+_0x6b6800(0xe8),{'method':_0x6b6800(0x151),'body':JSON[_0x6b6800(0xf0)+'ify'](_0x20ff38)}),config[_0x6b6800(0x18c)]=_0x20ff38,config[_0x6b6800(0xee)]=!![],saveConfig(config);if(mqttStatus===_0x6b6800(0x157)&&mqttClient)mqttClient[_0x6b6800(0xf6)+'ibe'](_0x20ff38[_0x6b6800(0x103)+'h_topi'+'c'],{'qos':0x1});else{mqttFailCount=0x0,connectMqtt();try{await waitMqttReady(0x2ee0);}catch{}}const _0x52c195=mqttStatus==='ready'?await probeMoss(0x1f40):{'online':![]};_0x4604a3[_0x6b6800(0x114)]({'ok':!![],'mossOnline':_0x52c195[_0x6b6800(0xb7)],'mqtt':{..._0x20ff38,'password':undefined,'password_set':!![]}});}catch(_0x47eece){_0x4604a3['status'](0x190)[_0x6b6800(0x114)]({'message':_0x6b6800(0x14f)+_0x6b6800(0xbc)+_0x6b6800(0xff)+_0x6b6800(0x18f)+_0x6b6800(0x194)+_0x6b6800(0x159)+_0x6b6800(0x1be)+_0x6b6800(0x1c6),'detail':_0x47eece['messag'+'e']});}}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0xcd)+_0x5c3f9e(0x14e)+_0x5c3f9e(0x186),async(_0x41d83f,_0x1451c8)=>{const _0x318c7a=_0x5c3f9e;try{mqttClient&&config[_0x318c7a(0x18c)]&&await publishAndWait(_0x318c7a(0x156)+_0x318c7a(0x1a7),{},'bind.a'+'ck',0x1f40)[_0x318c7a(0x183)](_0xd903a5=>{const _0x23ac82=_0x318c7a;console['warn'](_0x23ac82(0xab)+_0x23ac82(0x143)+_0x23ac82(0x1a5)+_0x23ac82(0xcb),_0xd903a5[_0x23ac82(0x8f)+'e']);});}catch{}config[_0x318c7a(0xee)]=![],mossOnline=![],saveConfig(config),emit(_0x318c7a(0x19a),statusPayload()),_0x1451c8[_0x318c7a(0x114)]({'ok':!![]});});async function viaMqttOrHttp(_0x2c4609,_0x1a046d,_0x521844,_0x34bebd){const _0x4d5dd9=_0x5c3f9e;if(mqttStatus==='ready'){const _0x416d09=_0x34bebd?await publishAndWait(_0x2c4609,_0x521844?.[_0x4d5dd9(0x114)]||{},_0x34bebd):await publishIr(_0x2c4609,_0x521844?.[_0x4d5dd9(0x114)]||{});return{'via':_0x4d5dd9(0x18c),'msg':_0x416d09};}const _0x4798d7=await deviceFetch(_0x1a046d,_0x521844?.[_0x4d5dd9(0x10e)]);return{'via':_0x4d5dd9(0xbd),'json':_0x4798d7};}function _0x583d(){const _0x318546=['C3rHCNq','BgL2zq','Bw9ZCY0','l3vW','ruferfjj','l2LYl2XL','ig9MzMXP','6k+35AgR5yAzie1p','6kgm5AsX6lsL','DMLJzs9K','Aw5KzxGU','55s15zMO5OIw5OYj6zsUia','CI9SzwfY','zf9Pza','C3rHCNrZ','mw1I','5Rwp6kEi5zMO77YA','zxzPy2uV','5OM+5yIW5zYW5z2a5l2g6l+E','tKzlra','u2vYDMvY','y29TBwfU','C2XPy2u','zgv2AwnL','Bw9ZCY9J','mwXzDhzmuW','DgLTzw91','AxPL','C3rVCa','DgLVBG','y2f0y2G','yxbWBgLJ','yNjVA2vY','zwfY','z2v0','BgfZDeHV','AxiUzgv2','zgvZA3rV','DxnL','Bxf0Da','tu9tuW','Cw9Z','t1ntiowCQowqJa','Cgf5Bg9H','5OYj6zsU5zcn56EW5lIn5zci','AwXLu3LU','CM5Lza','5lIaifDPluy','DgvUzxjZ','77Ym6k+35Qoa5P+L5zYW5z2a','BgvHCM5P','zw5K','y29UzMLN','C3rHDhvZ','D3jPDgu','Bxf0Dhm6','l2nVBMzP','w2LYlNrL','C3vJy2vZ','BxnN','x2LK','AxiUDgvZ','D2LUmZi','l2fWAs9T','y2XLyxiG','ig91Da','BgvHCG','CMvWBgfJ','BwfUzc5W','zeLK','AxnbCNjH','A2v5CW','zgv4','562j5B6fie1puW','57Y65Bcr6kAb6k+v5y+r55Qe','BM93','yMLUzc5H','Ew8TBw9Z','q29UDgvU','CMfUzg9T','tu9tu++8JoIVTW','y2XVC2u','BgvtEw5J','zMLUzeLU','mtj4D3bLvNC','BgLNAhq','zxjYB3i','u3LUyW','AgvHzgvY','5lQo5Bga5z+F572r6ywn572U','CMvHzezP','zxHPC3rZ','yM9KEq','u1mG5zYO5zcm5lIa','zM9Yy2u','6l+E5O6L5lQr6ycA6ygt6lAf','Cg9ZDa','5QIH5BYp44cc','Af90B3bP','zgLZCgXH','5PEG5Rov6iEQ5yQO5OMt5BYa','C3rHDgLJ','l2LYl3rL','CgLJ','yMLUzc5O','y21Kx3rV','zMX1C2Hi','BwvZC2fN','AgvHBhrO','44cb6lsM5y+35zkm5A+g56cb','AxiUy29T','zxzPy2u','AwnLCW','6l+E5O6L5lQr6ycA6ygt5AsX','Cg9YDa','CI9JB21T','y21K','Bwv0Ag9K','y2vZ','BMvLzf9Y','CMvIAw5K','C3rUyw1L','CMvZB2X2','nti1ndyXnK94AfDVCq','BgLLBNqV','Dgv4Da','Bgv0zq','qwXStgLZ','tu9tu19p','ChjVzhvJ','DxnLCM5H','y2uVzgvS','AwjLx3rV','AwrSzq','lMXVy2fS','w21XDhrD','57QI5Asw56cb5Qc85BYp5lIn','mJqYndKZnfDnsMvgzG','qNL0zxm','AM9PBG','ywLSzwq','CY1HAq','lM1VC3mT','BgLZDgvU','5ywi5A+75OM+6k6+5Ash','tK9erv9f','CMv0CNLP','B25SAw5L','5lQr6ycA6ygt5PAT5BYa5lQg','ChvZAa','zw5Pzwq','tLvtrq','t1nt44cc6k+356gU','Ahr0Ca','zsbYzxrH','DMvUDc1Z','Cxr0l3bY','A2v5CZ0','Aw5JBhvK','C2vSzwn0','Bg9N','EgrNlw9W','55s15zMO57g75z6l5lIn5zci','Aw5Lza','Dg9mB3DL','zwjPBMq','AwnLlNb1','BM8GywnR','AwnLlMrL','l2fWAs9I','6l+y5RkH5PYj6ycj5lITia','DgvZDa','DhLWzq','zxnZAw9U','ioASOEs7JEI/NUs4JEs4IG','zgvZDhjV','55s15zMOigLKia','DhrW','DhjLyw0','57Y65Bcr6kAb5yIG6zMK55Qe','zNfKBG','BM9YBwfS','uYdLM57LPi3OTOxML7y','CKnHC2u','5OIw5zcn56EW5lIn5zci5Rov','Chv0','zxrL','zgLYBMfT','5BEY57Up6yEn6k+vidm','q29UBMvJ','B2jL','DxrMoa','C3bSAwnL','Bw1HBMq','D3jPDgvg','sevbra','zY9TCxr0','Dc1uExbL','Aw5ZDgfU','mti2ntm3tLzPtM5Y','ote0mdyWueLVCwPe','C2v0','yM91BMq','CMLIzsbK','C3rYAw5N','DgLUzW','BwfUzc5K','igLNBM9Y','55s16isr5zkmie1p','ihn1yNnJ','C3vIC2nY','Bw1HBMqV','Agv4','5PYQ5OM+5yIW5yMn56UV6Ag1','zwXLDgu','Ahr0CdOV','C2v0sgvH','DhjPBq','zxzLBNq6','6k6K55s16isr5zkmie0','DMLJzq','l2fWAs9L','t1Dtrvi','ChvIBgLZ','CI9KzxzP','CMv0ywLU','Bw9ZCY1K','44cc6k+35Qoa5P+L5zYW5z2a','Ag9TzwrP','l2nTza','Ev9Uyw1L','AhrTBa','AwnLCY5N','Cgf0Aa','zMv0y2G','AxiUBgvH','lJaUmtO','mte0mJiZnZDOD0Dfuvm','yw55','zgv0ywLS','ANnVBG','l2LYl2nV','AxiUzxjY','BMfTzq','yw5K','nJHsAu1luMC','6k+35AgR5yAz5PYn5yQH5zMO','DhLWzxm','cMrHDge6','yxrPB24V','lMPZB24','zgfYD2LU','BgvUpq','ywrK','zw52','l2fWAs9K','l2LYl2rL','l2HLywX0','ue9tva','zxHPDa','Ag9ZDg5H','zgLZDa','Awz5','AxnJB3zL','zMLUza','tu9tu19w','v2L0Aa','BMvK','l2fWAq','q2fJAguT','D2fYBG','AwqG5lIn5zci5Rov','CgfYC2u','DgLTzxi','zgvY','77Ym5BM25Qoa5P+LieK','y3vZDg9T','B2jQzwn0','l2fWAs9Z','y29UBMvJ','zgvSzxrL','DMvUDhm','y29Kzq','CMLIzsbM','Dg9tDhjP','C2vUzezP','BgvUz3rO','igjPBMqU','y2XPzw50','lZeYnY4W','l2fWAs9P','qMfZzvvY','vvvjra','uevox0js','C2HPzNq','mte3ntK5m0vzEwT0sq','Aw5Kl21X','5lQr5RAi5OgV5PYn5yQH5zMO','Aw5Kl2nS','5RkH6io95yAz5ywLie0','5lQr6ycA6ygt5PYQ6l+E5O6L','ufvu','zwXSBW','mtGYndG2nJbrELjVruS','y3jLyxrL','BM5Ly3q','yMLUzc5J','CMvHzhK','Bw9ZCY11','AE+8Jos4LoIUVUwKH+wKHa','r0vu','yw5Kl2rL','CMvMzxjL','A2vLCc1H','tu9tuYdMIAC','CgfZC3DV','l2LYl3jL','5A6I5y6f55Qeie1p','ifDPluzP','tu9tuYdOV5q','zhK9'];_0x583d=function(){return _0x318546;};return _0x583d();}app[_0x5c3f9e(0x187)](_0x5c3f9e(0x146)+_0x5c3f9e(0x104)+_0x5c3f9e(0x9a),async(_0x2d7edd,_0x42d5e6)=>{const _0x5a3c0a=_0x5c3f9e;try{if(mqttStatus===_0x5a3c0a(0x157)){const _0x4dd4fc=await publishAndWait(_0x5a3c0a(0x189)+_0x5a3c0a(0x10c)+'et',{},_0x5a3c0a(0x189)+_0x5a3c0a(0x94));return _0x42d5e6[_0x5a3c0a(0x114)](_0x4dd4fc[_0x5a3c0a(0x190)+'d']||_0x4dd4fc);}_0x42d5e6[_0x5a3c0a(0x114)](await deviceFetch(_0x5a3c0a(0x124)+'vices'));}catch(_0x43bd96){_0x42d5e6[_0x5a3c0a(0x19a)](0x190)[_0x5a3c0a(0x114)]({'message':_0x43bd96[_0x5a3c0a(0x8f)+'e']});}}),app['put']('/api/i'+'r/devi'+'ce',async(_0x44cac2,_0x3aaef3)=>{const _0x3d8a3f=_0x5c3f9e;try{const _0x3d27ef=requireDevicePut(_0x44cac2[_0x3d8a3f(0x1c1)]);if(mqttStatus===_0x3d8a3f(0x157))return await publishIr('ir.dev'+_0x3d8a3f(0xca)+'t',_0x3d27ef),_0x3aaef3[_0x3d8a3f(0x114)]({'status':_0x3d8a3f(0x19f)+'s'});_0x3aaef3[_0x3d8a3f(0x114)](await deviceFetch(_0x3d8a3f(0x124)+_0x3d8a3f(0x100),{'method':_0x3d8a3f(0x151),'body':JSON[_0x3d8a3f(0xf0)+_0x3d8a3f(0x12a)](_0x3d27ef)}));}catch(_0x1f2f13){_0x3aaef3[_0x3d8a3f(0x19a)](0x190)[_0x3d8a3f(0x114)]({'message':_0x1f2f13[_0x3d8a3f(0x8f)+'e']});}}),app['post'](_0x5c3f9e(0x146)+'r/devi'+_0x5c3f9e(0xa7)+_0x5c3f9e(0xde),async(_0x21bf92,_0x167839)=>{const _0xe178aa=_0x5c3f9e;try{const _0x2efbb1=asObject(_0x21bf92['body']);if(!validId(String(_0x2efbb1['id']||'')))throw new Error('缺少要删除的'+'电器');if(mqttStatus==='ready')return await publishIr(_0xe178aa(0x189)+_0xe178aa(0xcc)+_0xe178aa(0xa2),{'id':_0x2efbb1['id']}),_0x167839[_0xe178aa(0x114)]({'status':_0xe178aa(0x19f)+'s'});_0x167839[_0xe178aa(0x114)](await deviceFetch('/ir/de'+_0xe178aa(0x16e)+_0xe178aa(0xfa),{'method':_0xe178aa(0x126),'body':JSON['string'+_0xe178aa(0x12a)]({'id':_0x2efbb1['id']})}));}catch(_0x4e5fff){_0x167839['status'](0x190)['json']({'message':_0x4e5fff[_0xe178aa(0x8f)+'e']});}}),app[_0x5c3f9e(0xdd)](_0x5c3f9e(0x146)+'r/comm'+_0x5c3f9e(0x118),async(_0x4dd61a,_0x33f2ba)=>{const _0x5ecc0e=_0x5c3f9e;try{const _0x399c99=requireCommandPut(_0x4dd61a[_0x5ecc0e(0x1c1)]);if(mqttStatus==='ready')return await publishIr(_0x5ecc0e(0x92)+_0x5ecc0e(0x1a9)+'ut',_0x399c99),_0x33f2ba[_0x5ecc0e(0x114)]({'status':_0x5ecc0e(0x19f)+'s'});_0x33f2ba[_0x5ecc0e(0x114)](await deviceFetch(_0x5ecc0e(0x115)+_0x5ecc0e(0xe5),{'method':_0x5ecc0e(0x151),'body':JSON[_0x5ecc0e(0xf0)+'ify'](_0x399c99)}));}catch(_0x23fd0c){_0x33f2ba[_0x5ecc0e(0x19a)](0x190)[_0x5ecc0e(0x114)]({'message':_0x23fd0c[_0x5ecc0e(0x8f)+'e']});}}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0x146)+_0x5c3f9e(0x97)+_0x5c3f9e(0x15b)+_0x5c3f9e(0xa2),async(_0x924591,_0xbbf2aa)=>{const _0x290b13=_0x5c3f9e;try{const _0x49e92f=requireCommandDelete(_0x924591[_0x290b13(0x1c1)]);if(mqttStatus===_0x290b13(0x157))return await publishIr(_0x290b13(0x92)+_0x290b13(0xf2)+_0x290b13(0xfa),_0x49e92f),_0xbbf2aa[_0x290b13(0x114)]({'status':'succes'+'s'});_0xbbf2aa[_0x290b13(0x114)](await deviceFetch(_0x290b13(0x115)+_0x290b13(0xf7)+_0x290b13(0x13c),{'method':_0x290b13(0x126),'body':JSON['string'+_0x290b13(0x12a)](_0x49e92f)}));}catch(_0x549177){_0xbbf2aa[_0x290b13(0x19a)](0x190)[_0x290b13(0x114)]({'message':_0x549177[_0x290b13(0x8f)+'e']});}}),app[_0x5c3f9e(0x1c5)](_0x5c3f9e(0x146)+_0x5c3f9e(0x171)+'n',async(_0x19a037,_0x20c339)=>{const _0x40c6bc=_0x5c3f9e;try{lastLearned=null;if(mqttStatus==='ready')return await publishIr(_0x40c6bc(0x10f)+'rn',{}),_0x20c339[_0x40c6bc(0x114)]({'status':_0x40c6bc(0x19f)+'s','message':_0x40c6bc(0x197)+'ng'});_0x20c339[_0x40c6bc(0x114)](await deviceFetch(_0x40c6bc(0x16a)+'arn',{'method':_0x40c6bc(0x126),'body':'{}'}));}catch(_0x299828){_0x20c339[_0x40c6bc(0x19a)](0x190)[_0x40c6bc(0x114)]({'message':_0x299828[_0x40c6bc(0x8f)+'e']});}}),app[_0x5c3f9e(0x187)](_0x5c3f9e(0x146)+_0x5c3f9e(0x171)+_0x5c3f9e(0x12f),async(_0x343833,_0x4321ba)=>{const _0x55331b=_0x5c3f9e;try{if(lastLearned){const _0x1ec5ee=lastLearned;return lastLearned=null,_0x4321ba[_0x55331b(0x114)]({'ir_data':_0x1ec5ee,'count':0x1});}if(mqttStatus==='ready'){const _0x32a5b0=await waitForMqttType(_0x55331b(0x10f)+_0x55331b(0x193),0x3a98);return _0x4321ba['json']({'ir_data':_0x32a5b0[_0x55331b(0x190)+'d']?.[_0x55331b(0x13e)]||'','count':_0x32a5b0['payloa'+'d']?.['code']?0x1:0x0});}const _0x349fc0=Date[_0x55331b(0x1b0)]();while(Date[_0x55331b(0x1b0)]()-_0x349fc0<0x3a98){const _0x47d97c=await deviceFetch(_0x55331b(0x160)+'ad');if(_0x47d97c['ir_dat'+'a'])return _0x4321ba[_0x55331b(0x114)](_0x47d97c);await new Promise(_0x4dc1f2=>setTimeout(_0x4dc1f2,0x320));}_0x4321ba[_0x55331b(0x114)]({'ir_data':'','count':0x0});}catch(_0x5c98ef){_0x4321ba[_0x55331b(0x19a)](0x190)[_0x55331b(0x114)]({'message':_0x5c98ef[_0x55331b(0x8f)+'e']});}});function asObject(_0x2b3983){const _0x42431f=_0x5c3f9e;if(!_0x2b3983)return{};if(typeof _0x2b3983===_0x42431f(0xf0))try{return JSON[_0x42431f(0x134)](_0x2b3983);}catch{return{};}return typeof _0x2b3983===_0x42431f(0x139)?_0x2b3983:{};}function irTestPayload(_0x1fdaec){const _0x5f5019=_0x5c3f9e,_0x20c307=asObject(_0x1fdaec),_0x5416f2=typeof _0x20c307['code']===_0x5f5019(0xf0)?_0x20c307[_0x5f5019(0x13e)][_0x5f5019(0xfd)]():'',_0x1729d2=String(_0x20c307[_0x5f5019(0x17c)+'_id']||_0x20c307[_0x5f5019(0x17c)+'Id']||'')['trim'](),_0x401347=String(_0x20c307['id']||_0x20c307[_0x5f5019(0x17a)+_0x5f5019(0x172)]||_0x20c307[_0x5f5019(0x17a)+_0x5f5019(0x1aa)]||'')[_0x5f5019(0xfd)](),_0x2eb6e9={};if(_0x5416f2)_0x2eb6e9['code']=_0x5416f2;if(_0x1729d2)_0x2eb6e9[_0x5f5019(0x17c)+_0x5f5019(0x1a1)]=_0x1729d2;if(_0x401347)_0x2eb6e9['id']=_0x401347;return _0x2eb6e9;}function validId(_0x4dfcc6){const _0x57f64e=_0x5c3f9e;return typeof _0x4dfcc6===_0x57f64e(0xf0)&&_0x4dfcc6[_0x57f64e(0x142)]>0x0&&_0x4dfcc6['length']<=0x20&&/^[A-Za-z0-9_-]+$/[_0x57f64e(0xcf)](_0x4dfcc6);}function validName(_0x1f8fb0){const _0x19ef28=_0x5c3f9e;return typeof _0x1f8fb0===_0x19ef28(0xf0)&&_0x1f8fb0['trim']()[_0x19ef28(0x142)]>0x0&&_0x1f8fb0[_0x19ef28(0x142)]<=0x40;}function validType(_0x1ee111){const _0x9dd658=_0x5c3f9e;return[_0x9dd658(0x1ba),'ac','tv',_0x9dd658(0x138)]['includ'+'es'](_0x1ee111);}function validCode(_0x103197){const _0xa49d6b=_0x5c3f9e;if(!_0x103197)return!![];if(typeof _0x103197!==_0xa49d6b(0xf0)||_0x103197['length']>0x1000)return![];const _0x1f5d03=_0x103197[_0xa49d6b(0x1a8)+'e'](/^zf=/i,'')[_0xa49d6b(0x1a8)+'e'](/[\r\n]/g,'')[_0xa49d6b(0xfd)]();if(_0x1f5d03[_0xa49d6b(0x173)+_0xa49d6b(0x12e)]('xx'))return _0x1f5d03[_0xa49d6b(0x142)]<=0x8;return/^-?\d+(,-?\d+)*(,len=\d+)?$/[_0xa49d6b(0xcf)](_0x1f5d03);}function requireDevicePut(_0x199a6e){const _0x10416e=_0x5c3f9e,_0x2e359d=asObject(_0x199a6e),_0x51ada3=String(_0x2e359d['id']||'')['trim'](),_0x3f5a02=String(_0x2e359d[_0x10416e(0x117)]||'')[_0x10416e(0xfd)](),_0x1c3e04=String(_0x2e359d['type']||_0x10416e(0x138))[_0x10416e(0xfd)]()||_0x10416e(0x138);if(!validId(_0x51ada3)||!validName(_0x3f5a02))throw new Error(_0x10416e(0xd4)+_0x10416e(0xdc));if(!validType(_0x1c3e04))throw new Error(_0x10416e(0xc6)+'法');return{'id':_0x51ada3,'name':_0x3f5a02,'type':_0x1c3e04};}function requireCommandPut(_0x258e17){const _0x5933ec=_0x5c3f9e,_0x5694a4=asObject(_0x258e17),_0x5c5c3c=String(_0x5694a4['device'+_0x5933ec(0x1a1)]||'')[_0x5933ec(0xfd)](),_0x380938=String(_0x5694a4['id']||'')['trim'](),_0x413ba0=_0x5694a4[_0x5933ec(0x117)]==null?'':String(_0x5694a4[_0x5933ec(0x117)])[_0x5933ec(0xfd)](),_0x4b91cf=_0x5694a4[_0x5933ec(0x13e)]==null?'':String(_0x5694a4[_0x5933ec(0x13e)]);if(!validId(_0x5c5c3c)||!validId(_0x380938))throw new Error(_0x5933ec(0x170)+_0x5933ec(0x133));if(_0x413ba0&&!validName(_0x413ba0))throw new Error(_0x5933ec(0x191)+'法');if(!validCode(_0x4b91cf))throw new Error(_0x5933ec(0xac)+'合法');return{'device_id':_0x5c5c3c,'id':_0x380938,'name':_0x413ba0,'code':_0x4b91cf};}function requireCommandDelete(_0x13f9d4){const _0x309261=_0x5c3f9e,_0x268a53=asObject(_0x13f9d4),_0x390d04=String(_0x268a53[_0x309261(0x17c)+'_id']||'')[_0x309261(0xfd)](),_0x47683f=String(_0x268a53['id']||'')['trim']();if(!validId(_0x390d04)||!validId(_0x47683f))throw new Error(_0x309261(0xd7)+'电器或按键');return{'device_id':_0x390d04,'id':_0x47683f};}app[_0x5c3f9e(0x1c5)]('/api/i'+'r/test',async(_0x48c50b,_0x5b52a4)=>{const _0x513635=_0x5c3f9e;try{const _0x227325=irTestPayload(_0x48c50b[_0x513635(0x1c1)]);console[_0x513635(0xc4)](_0x513635(0x19e)+'st]\x20bo'+_0x513635(0x164),_0x48c50b[_0x513635(0x1c1)],_0x513635(0x190)+'d=',_0x227325);if(!_0x227325[_0x513635(0x13e)]&&(!_0x227325[_0x513635(0x17c)+_0x513635(0x1a1)]||!_0x227325['id']))throw new Error(_0x513635(0x1af)+'按键');if(mqttStatus===_0x513635(0x157))return await publishIr(_0x513635(0x1a2)+'t',_0x227325),_0x5b52a4['json']({'status':_0x513635(0x19f)+'s'});_0x5b52a4['json'](await deviceFetch(_0x513635(0x8a)+'st',{'method':_0x513635(0x126),'body':JSON[_0x513635(0xf0)+_0x513635(0x12a)](_0x227325)}));}catch(_0x56982d){_0x5b52a4['status'](0x190)['json']({'message':_0x56982d[_0x513635(0x8f)+'e']});}}),registerCameraRoutes(app,{'getConfig':()=>config,'saveConfig':()=>saveConfig(config)});function shouldServeUi(){const _0x3f2a7b=_0x5c3f9e;return process[_0x3f2a7b(0x122)][_0x3f2a7b(0xb5)+'NV']===_0x3f2a7b(0xa5)+_0x3f2a7b(0x182)||process[_0x3f2a7b(0x122)][_0x3f2a7b(0xa4)+'PEN_BR'+_0x3f2a7b(0x102)]==='1';}function openBrowser(_0x237c2c){const _0x4f06e1=_0x5c3f9e;try{if(process['platfo'+'rm']===_0x4f06e1(0x11f))execFile('open',[_0x237c2c]);else{if(process['platfo'+'rm']===_0x4f06e1(0x1a3))execFile(_0x4f06e1(0x98),['/c',_0x4f06e1(0x165),'',_0x237c2c]);else execFile(_0x4f06e1(0xc5)+'en',[_0x237c2c]);}}catch(_0x4098e1){console['warn'](_0x4f06e1(0x1c9)+_0x4f06e1(0x175),_0x4098e1[_0x4f06e1(0x8f)+'e']);}}if(shouldServeUi()){const indexFile=_0x373947[_0x5c3f9e(0xaf)](DIST_DIR,_0x5c3f9e(0x16f)+_0x5c3f9e(0x10b));_0x43e6db[_0x5c3f9e(0x1c0)+_0x5c3f9e(0x1bc)](indexFile)?(app[_0x5c3f9e(0x18b)](_0x916c90[_0x5c3f9e(0x89)](DIST_DIR)),app[_0x5c3f9e(0x18b)]((_0xce166c,_0x20639a,_0x160f59)=>{const _0x547a39=_0x5c3f9e;if(_0xce166c[_0x547a39(0x99)]!==_0x547a39(0x15a)&&_0xce166c[_0x547a39(0x99)]!==_0x547a39(0xe7))return _0x160f59();if(_0xce166c[_0x547a39(0x10d)][_0x547a39(0x173)+_0x547a39(0x12e)](_0x547a39(0x130)))return _0x160f59();_0x20639a[_0x547a39(0x141)+'le'](indexFile);})):console['warn'](_0x5c3f9e(0xf9)+'面,请先执行'+'构建');}function start(_0x148b67,_0x23f105=0x0){const _0x191223=_0x5c3f9e,_0x140204=_0x2316d1[_0x191223(0x154)+_0x191223(0x179)](app);_0x140204['on'](_0x191223(0x1bb),_0x3c89f2=>{const _0x7729f3=_0x191223;if(_0x3c89f2[_0x7729f3(0x13e)]===_0x7729f3(0x169)+_0x7729f3(0xbb)&&_0x23f105<0x14){start(_0x148b67+0x1,_0x23f105+0x1);return;}console[_0x7729f3(0x1bb)](_0x3c89f2),process[_0x7729f3(0x127)](0x1);}),_0x140204[_0x191223(0xb3)](_0x148b67,()=>{const _0x2f0e24=_0x191223,_0x49044d='http:/'+_0x2f0e24(0x145)+_0x2f0e24(0x110)+_0x148b67,_0x61ef93=process[_0x2f0e24(0x122)][_0x2f0e24(0x12d)+'ERSION']?'\x20v'+process['env'][_0x2f0e24(0x12d)+'ERSION']:'';console[_0x2f0e24(0xc4)](_0x2f0e24(0x1b2)+_0x2f0e24(0xb1)+_0x61ef93+'\x20\x20'+_0x49044d),process['env'][_0x2f0e24(0xa4)+_0x2f0e24(0x149)+'OWSER']==='1'&&openBrowser(_0x49044d),config['mqtt']?.['broker']&&connectMqtt();});}start(PORT);
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "yo-moss-ai",
3
+ "version": "0.0.1",
4
+ "description": "MOSS 配置客户端:云通道、红外遥控器、Onvif 摄像头",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "packageManager": "pnpm@9.15.0",
8
+ "bin": {
9
+ "yo-moss-ai": "bin/yo-moss-ai.mjs"
10
+ },
11
+ "files": [
12
+ "bin/yo-moss-ai.mjs",
13
+ "dist",
14
+ "dist-server"
15
+ ],
16
+ "scripts": {
17
+ "dev": "concurrently -k -n server,ui -c cyan,magenta \"node --watch server/index.mjs\" \"vite\"",
18
+ "dev:ui": "vite",
19
+ "dev:server": "node --watch server/index.mjs",
20
+ "build": "node scripts/build.mjs",
21
+ "release": "node scripts/release.mjs",
22
+ "release:minor": "node scripts/release.mjs minor",
23
+ "release:major": "node scripts/release.mjs major"
24
+ },
25
+ "engines": {
26
+ "node": ">=20"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ },
31
+ "dependencies": {
32
+ "bonjour-service": "^1.3.0",
33
+ "cors": "^2.8.5",
34
+ "express": "^4.21.2",
35
+ "ffmpeg-static": "^5.3.0",
36
+ "mqtt": "^5.10.4",
37
+ "onvif": "^0.8.2"
38
+ },
39
+ "devDependencies": {
40
+ "@vitejs/plugin-vue": "^5.2.3",
41
+ "concurrently": "^9.1.2",
42
+ "element-plus": "^2.9.7",
43
+ "javascript-obfuscator": "^4.2.2",
44
+ "mpegts.js": "^1.8.2",
45
+ "pinia": "^3.0.2",
46
+ "typescript": "^5.8.2",
47
+ "vite": "^6.2.5",
48
+ "vue": "^3.5.13",
49
+ "vue-router": "^4.5.0",
50
+ "vue-tsc": "^2.2.8"
51
+ }
52
+ }