azot 5.0.0-alpha.27 → 5.0.0-alpha.29

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/azot.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const gz=b;(function(fS,fT){const gy=b,fU=fS();while(!![]){try{const fV=parseInt(gy(0x204))/0x1*(-parseInt(gy(0x1a5))/0x2)+parseInt(gy(0x25e))/0x3*(-parseInt(gy(0x262))/0x4)+-parseInt(gy(0x1de))/0x5+-parseInt(gy(0x2a1))/0x6*(-parseInt(gy(0x24a))/0x7)+-parseInt(gy(0x2e8))/0x8*(parseInt(gy(0x1ac))/0x9)+parseInt(gy(0x2a2))/0xa+parseInt(gy(0x268))/0xb*(parseInt(gy(0x28f))/0xc);if(fV===fT)break;else fU['push'](fU['shift']());}catch(fW){fU['push'](fU['shift']());}}}(a,0x8577b));import{A as c,C as d,D as f,E as g,M as h,N as i,O as j,S as k,T as l,_ as m,a as n,b as o,c as p,d as q,f as r,g as s,h as t,i as u,j as v,k as w,l as x,m as y,n as A,o as B,p as C,r as D,s as E,t as F,u as G,v as H,w as I,x as J,y as K}from'./context-B8YQW-Yb.mjs';import{createRequire}from'node:module';import L,{constants,existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import*as M from'node:path';import N,{basename,dirname,extname,join,parse,resolve}from'node:path';import O from'yargs';import'urlpattern-polyfill';import P from'picocolors';import*as Q from'node:fs/promises';import R,{open,readFile,readdir,rm,stat,writeFile}from'node:fs/promises';import S,{platform,stdout}from'node:process';import{hideBin}from'yargs/helpers';import{EventEmitter}from'node:events';import{z}from'zod';import{DASH_FORMATS,HLS_FORMATS,Input,UrlSource}from'dasha';import T from'ky';import{Agent,ProxyAgent}from'undici';import{checkbox,confirm}from'@inquirer/prompts';import{execFileSync}from'node:child_process';import{createAuthClient}from'better-auth/client';import{deviceAuthorizationClient}from'better-auth/client/plugins';import{tributeClient}from'@tribute-tg/better-auth';import{QueryCache,QueryClient}from'@tanstack/query-core';function b(c,d){c=c-0x18f;const e=a();let f=e[c];return f;}import{createHash}from'node:crypto';import{inspect}from'node:util';import{ALL_FORMATS as U,EncodedAudioPacketSource,EncodedPacketSink,EncodedVideoPacketSource,Input as V,MkvOutputFormat,Mp4OutputFormat,Output,StreamSource,StreamTarget,TextSubtitleSource,UrlSource as W}from'mediabunny';import{finished,pipeline}from'node:stream/promises';import{Readable}from'node:stream';import{isatty}from'node:tty';import{createSpinner}from'nanospinner';import{RemoteCdm,requestMediaKeySystemAccess}from'okova';import{Decryption,FilePathSource,FilePathTarget,Input as X,Output as Y}from'shifro';import{convert}from'@transcrobes/subs-convert';import Z from'open';var a0=Object['create'],a1=Object[gz(0x306)],a2=Object['getOwnPropertyDescriptor'],a3=Object['getOwnPropertyNames'],a4=Object['getPrototypeOf'],a5=Object['prototype'][gz(0x1e1)],a6=(fS,fT)=>()=>(fT||(fS((fT={'exports':{}})['exports'],fT),fS=null),fT['exports']),a7=(fS,fT,fU,fV)=>{if(fT&&typeof fT=='object'||typeof fT=='function'){for(var fW=a3(fT),fX=0x0,fY=fW['length'],fZ;fX<fY;fX++)fZ=fW[fX],!a5['call'](fS,fZ)&&fZ!==fU&&a1(fS,fZ,{'get':(g0=>fT[g0])['bind'](null,fZ),'enumerable':!(fV=a2(fT,fZ))||fV['enumerable']});}return fS;},a8=(fS,fT,fU)=>(fU=fS==null?{}:a0(a4(fS)),a7(fT||!fS||!fS[gz(0x1fa)]?a1(fU,'default',{'value':fS,'enumerable':!0x0}):fU,fS)),a9=createRequire(import.meta.url);const aa=()=>{const gA=gz;let fS=[];process['resourcesPath']&&fS['push'](join(process['resourcesPath'],'bin',gA(0x1bb)));let fT=join(__dirname,'..','..','..');return fS['push'](join(fT,'assets',gA(0x25c),'win32','winconsole.node')),fS['push'](join(fT,'native','winconsole',gA(0x26c),'Release','winconsole.node')),fS['find'](fU=>existsSync(fU))||null;},ab=()=>{if(process['platform']!=='win32')return null;let fS=aa();if(!fS)return null;try{return a9(fS);}catch{return null;}};if(process[gz(0x2c5)]==='win32'&&process.env.ELECTRON_RUN_AS_NODE==='1'){let g1=ab();g1&&(g1['attachParentConsole']?.(),g1['enableUtf8']?.());}const ac=(fS=process['argv'],fT=process.env)=>fT['ELECTRON_RUN_AS_NODE']==='1'?fS['slice'](0x2):hideBin(fS),ad={'target':gz(0x254),'compact':!0x0,'identifierNamesGenerator':'mangled','renameGlobals':!0x0,'simplify':!0x0,'controlFlowFlattening':!0x1,'deadCodeInjection':!0x1,'debugProtection':!0x1,'numbersToExpressions':!0x1,'selfDefending':!0x1,'splitStrings':!0x1,'stringArray':!0x0,'stringArrayCallsTransform':!0x1,'stringArrayEncoding':[],'stringArrayIndexShift':!0x0,'stringArrayRotate':!0x0,'stringArrayShuffle':!0x0,'stringArrayWrappersCount':0x1,'stringArrayWrappersChainedCalls':!0x0,'stringArrayWrappersType':'variable','stringArrayThreshold':0.1,'transformObjectKeys':!0x1,'unicodeEscapeSequence':!0x1},ae=fS=>{let fT=['B','KB','MB','GB'],fU=fS,fV=0x0;for(;fU>=0x400&&fV<fT['length']-0x1;)fU/=0x400,fV+=0x1;return fU['toFixed'](fV===0x0?0x0:0x2)+'\x20'+fT[fV];},af=async(fS,fT)=>{let fU=readFileSync(fS,'utf8'),{default:fV}=await import('javascript-obfuscator');console['log']('Obfuscating\x20'+fS+'...'),console['time']('Obfuscation\x20finished');let fW=fV['obfuscate'](fU,ad);console['timeEnd']('Obfuscation\x20finished');let fX=fW['getObfuscatedCode'](),fY=Buffer['byteLength'](fU,'utf8'),fZ=Buffer['byteLength'](fX,'utf8'),g0=fY===0x0?0x0:fZ/fY;return console['log']('Size\x20changed\x20from\x20'+ae(fY)+'\x20to\x20'+ae(fZ)+',\x20'+g0['toFixed'](0x2)+'x\x20increase'),writeFileSync(fT||fS,fX),fX;},ag=new Set(['.ts','.js',gz(0x214),'.mjs']),ah=new Set(['index','main']),ai=fS=>{const gB=gz;if(existsSync(fS))try{if(!statSync(fS)['isDirectory']())return;let fT=readdirSync(fS)['filter'](fW=>!fW['endsWith']('.d.ts'))['filter'](fW=>ag['has'](N[gB(0x29b)](fW))),fU=fW=>N[gB(0x258)](fW,N['extname'](fW)),fV=fT['find'](fW=>ah['has'](fU(fW)))||fT[0x0];return fV?N['join'](fS,fV):void 0x0;}catch{return;}},aj=()=>{let fS=[process['cwd'](),N['join'](process['cwd'](),'src'),N['join'](process['cwd'](),'lib')];for(let fT of fS){let fU=ai(fT);if(fU)return fU;}},ak=fS=>fS==='esm'?'mjs':'cjs',al=(fS,fT)=>N['join'](process['cwd'](),'dist',N['parse'](fS)['name']+'.'+ak(fT)),am=fS=>{const gC=gz;let fT=N[gC(0x2ad)](process['cwd'](),fS);if(!fT||fT['startsWith']('..'))throw Error('Entry\x20file\x20must\x20be\x20inside\x20the\x20current\x20working\x20directory:\x20'+fS);return'./'+fT['split'](N['sep'])['join']('/');},an=fS=>{let fT=fS['input']||fS['entry']||aj();if(!fT)throw Error('No\x20entry\x20file\x20found');return N['resolve'](fT);},ao=()=>{if(c)throw Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.');},ap=fS=>fS[gz(0x250)]('entry',{'describe':gz(0x26b),'type':'string'})['option']('input',{'alias':'i','describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('format',{'alias':'f','describe':gz(0x298),'choices':['cjs','esm'],'default':'cjs'})['option']('minify',{'describe':'Minify\x20output','type':'boolean'}),aq=fS=>{let fT=N['resolve'](fS);for(;;){let fU=N['join'](fT,'package.json');if(existsSync(fU))return fU;let fV=N['dirname'](fT);if(fV===fT)return;fT=fV;}},ar=fS=>{const gD=gz;let fT=aq(fS);if(!fT){let fU=gD(0x2dc)+fS;throw C['error'](fU),Error(fU);}try{let fV=JSON['parse'](readFileSync(fT,'utf8'));if(!fV||typeof fV!='object'||Array['isArray'](fV))throw Error('package.json\x20must\x20contain\x20a\x20JSON\x20object');let fW=fV;if(fW[gD(0x2f9)]!==void 0x0&&typeof fW['private']!='boolean')throw Error('package.json\x20field\x20\x22private\x22\x20must\x20be\x20a\x20boolean\x20when\x20present');return{'private':fW['private']};}catch(fX){let fY='Failed\x20to\x20load\x20package.json\x20for\x20build\x20command\x20from\x20'+fT;throw C['error'](fY),C[gD(0x2a4)](fX),Error(fY);}},as={'command':'build\x20[entry]','describe':'Bundle\x20a\x20Node.js\x20entry\x20file\x20for\x20distribution','builder':fS=>ap(fS)['option']('watch',{'describe':'Watch\x20file\x20changes','type':'boolean'})['option']('obfuscate',{'describe':gz(0x1b5),'type':'boolean'}),'handler':async fS=>{const gE=gz;ao();let fT=an(fS),fU=typeof fS['minify']=='boolean'?fS['minify']:!0x0,fV=fS[gE(0x2ba)]===!0x0,fW=fS['format']??'cjs',{build:fX}=await import('tsdown');await fX({'entry':am(fT),'format':fW,'platform':'node','target':'node24','watch':fV,'minify':fU,'inlineOnly':!0x1});let fY=al(fT,fW),fZ=ar(process[gE(0x1c5)]());(typeof fS['obfuscate']=='boolean'?fS['obfuscate']:fZ['private'])&&await af(fY,fY);}},at={'command':'dev\x20[entry]','describe':'Watch\x20and\x20rebuild\x20a\x20Node.js\x20entry\x20file\x20during\x20development','builder':fS=>ap(fS),'handler':async fS=>{ao();let fT=an(fS),fU=typeof fS['minify']=='boolean'?fS['minify']:!0x1,{build:fV}=await import('tsdown');await fV({'entry':am(fT),'format':fS['format']??'cjs','platform':'node','target':'node24','watch':!0x0,'minify':fU});}},au=()=>Intl['DateTimeFormat']()[gz(0x25f)]()['locale']['startsWith']('ru')?'ru':'en',av={'dark':'dark','light':'light','system':'system'},aw={'mp4':'mp4','mkv':'mkv'},ax=z['object']({'downloadDir':z['string']()[gz(0x1ef)](H),'binariesDir':z['string']()['default'](I(join(y,'bin'))),'drmDir':z['string']()['default'](I(join(y,'drm'))),'language':z['string']()['default'](au()),'theme':z['enum']([av['dark'],av[gz(0x283)],av['system']])['default'](av['system']),'preferHardsub':z['coerce']['boolean']()['default'](!0x1),'retry':z['coerce']['number']()['int']()['min'](0x1)['max'](0xa)['default'](0x3),'connections':z['coerce']['number']()['int']()['min'](0x1)['max'](0x40)['default'](0x4),'maxActiveDownloads':z['coerce']['number']()['int']()[gz(0x2b3)](0x1)['default'](0x1),'proxy':z['string']()['optional'](),'proxyMeta':z['string']()['optional'](),'proxyMedia':z['string']()['optional'](),'movieFilenameTemplate':z['string']()['default']('{title}\x20({quality},\x20{codec})'),'seriesFilenameTemplate':z['string']()['default']('{title}\x20S{s}E{e}\x20({quality},\x20{codec})'),'developerMode':z[gz(0x1f5)]['boolean']()['default'](!0x1),'allowUnknownSources':z[gz(0x1f5)]['boolean']()['default'](!0x1),'videoContainerFormat':z[gz(0x1c3)]([aw['mp4'],aw['mkv']])['default'](aw['mp4']),'useAlternativeServer':z['coerce']['boolean']()['default'](!0x1),'automaticUpdates':z['coerce']['boolean']()['default'](!0x0)}),ay=ax['parse']({});var az=class{#e;constructor(fS){this.#e=x({'defaults':ay,'cwd':dirname(fS),'configName':basename(fS,'.json')}),this.#t();}#t(){const gF=gz;let fS=this.#e['store'],fT=ax['safeParse'](fS),fU='{title}.{audioType}.{quality}.{tag}.{format}.{codec}',fV='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}';if(fS['movieFilenameTemplate']==='{title}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set']('movieFilenameTemplate',fS['seriesFilenameTemplate']),fS['seriesFilenameTemplate']==='{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set']('seriesFilenameTemplate',fS['seriesFilenameTemplate']),!fT['success']){console['warn']('Settings\x20validation\x20failed!\x20Resetting\x20to\x20defaults.',fT['error']['flatten']()),this.#e['set'](ay);return;}Object['hasOwn'](fS,gF(0x2f7))&&this.#e['set'](fT['data']);}['getAll'](){return this.#e['store'];}['get'](fS){return this.#e['get'](fS);}['set'](fS){const gG=gz;let fT={...this.#e['store'],...fS},fU=ax['safeParse'](fT);if(!fU['success'])throw console['error']('Invalid\x20settings\x20update:',fU['error']['flatten']()),Error(gG(0x193));this.#e['set'](fU[gG(0x2dd)]);}['onDidChange'](fS){const gH=gz;this.#e[gH(0x1c6)](fS);}};const aA=async fS=>{try{return await R['access'](fS),!0x0;}catch(fT){if(fT['code']==='ENOENT')return!0x1;throw fT;}},aB=async(fS,{recursive:fT=!0x1}={})=>await R['readdir'](fS,{'withFileTypes':!0x0,'recursive':fT}),aC=async(fS,{recursive:fT=!0x0,force:fU=!0x0}={})=>{await R['rm'](fS,{'recursive':fT,'force':fU});},aD=async(fS,{recursive:fT=!0x0}={})=>{await R['mkdir'](fS,{'recursive':fT});},aE=async fS=>{try{await R['access'](fS,constants['W_OK']);}catch(fT){let fU=fT['code'];throw fU==='EPERM'||fU==='EACCES'||fU==='ENOENT'?Object['assign'](Error('Download\x20directory\x20is\x20not\x20writable'),{'code':'DOWNLOAD_DIR_NOT_WRITABLE'}):fT;}},aF=async fS=>{const gI=gz;try{let fT=await R['readFile'](fS,{'encoding':gI(0x2ef)});return JSON['parse'](fT);}catch(fU){throw Error('Failed\x20to\x20read\x20JSON\x20file:\x20'+fS,{'cause':fU});}},aG=async(fS,fT)=>{const gJ=gz;let fU=parse(fS)['dir'];try{let fV=await aA(fU);fU&&!fV&&await R['mkdir'](fU),await R[gJ(0x24c)](fS,JSON['stringify'](fT,null,0x2),gJ(0x2ef));}catch(fW){throw Error('Failed\x20to\x20save\x20data\x20to\x20file:\x20'+fS,{'cause':fW});}},aH={'extract':(fS,fT)=>execFileSync('tar',['-xf',fS,...fT?['-C',fT]:[]],{'stdio':'inherit'})},aI={'CHANNEL_NOT_FOUND':'EXTENSION_INSTALL_CHANNEL_NOT_FOUND','VERSION_NOT_FOUND':'EXTENSION_INSTALL_VERSION_NOT_FOUND','RELEASE_NOT_FOUND':'EXTENSION_INSTALL_RELEASE_NOT_FOUND','ASSET_NOT_FOUND':'EXTENSION_INSTALL_ASSET_NOT_FOUND','UNSUPPORTED_SOURCE':'EXTENSION_INSTALL_UNSUPPORTED_SOURCE','UNSUPPORTED_PACKAGE_TYPE':gz(0x1a9),'IMPORT_INVALID':'EXTENSION_INSTALL_IMPORT_INVALID','SOURCE_NOT_FOUND':gz(0x2bb),'UNKNOWN':'EXTENSION_INSTALL_UNKNOWN'},aJ=new Set(Object['values'](aI));var aK=class extends Error{['code'];['details'];['hint'];constructor(fS){const gK=gz;super(fS['message']),this['name']='InstallExtensionError',this['code']=fS[gK(0x1fc)],this['details']=fS['details'],this['hint']=fS['hint'];}['toPayload'](){const gL=gz;return{'code':this['code'],'message':this[gL(0x1b3)],'details':this['details'],'hint':this['hint']};}};const aL=(fS,fT,fU,fV)=>new aK({'code':fS,'message':fT,'details':fU,'hint':fV}),aM=fS=>{let fT=(fS?.['startsWith']('v')?fS[0x1]:fS?.[0x0])??'';return Number['isNaN'](parseInt(fT))?fS?.['split']('.')['at'](0x0)||'latest':fS?.['split']('-')['at'](0x1)?.['split']('.')['at'](0x0)||'latest';},aN=fS=>(fS['version']||fS['tag_name']||'')['replace'](/^v/,''),aO=fS=>[...new Set(fS['filter'](Boolean))],aP=fS=>({'availableVersions':aO((fS||[])['map'](fT=>aN(fT))),'availableChannels':aO((fS||[])[gz(0x19a)](fT=>aM(aN(fT))))}),aQ=(fS,fT,fU)=>{let fV={'source':fU,'preferredVersion':fS['preferredVersion'],'preferredChannel':fS['preferredChannel'],'appChannel':fS['appChannel'],...aP(fT)};return fS['preferredVersion']?aL(aI['VERSION_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20version:\x20'+fS['preferredVersion'],fV):aL(aI['CHANNEL_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20channel:\x20'+fS['preferredChannel'],fV);},aR=(fS,fT,fU)=>{const gM=gz;if(!fS?.['length'])return null;if(fT[gM(0x1a1)])return fS['find'](fV=>aN(fV)===fT['preferredVersion'])||null;if(!fT['isExplicitSelection']){let fV=fS[gM(0x2aa)](fW=>aM(aN(fW))==='latest');if(fV)return fV;}return fS['find'](fW=>aM(aN(fW))===fT['preferredChannel'])||(fT[gM(0x29a)]&&fT['preferredChannel']!==gM(0x1eb)?(C['debug']('Release\x20'+fT['preferredChannel']+'\x20not\x20found\x20for\x20'+fU+',\x20falling\x20back\x20to\x20latest\x20stable'),fS['find'](fW=>aM(aN(fW))==='latest')||(C['debug']('Latest\x20stable\x20release\x20not\x20found\x20for\x20'+fU+',\x20falling\x20back\x20to\x20latest\x20with\x20any\x20channel'),fS['at'](0x0)||null)):null);},aS=fS=>{let [,fT='']=fS['split']('@'),fU=fS['replace'](fT?'@'+fT:'',''),fV=aM(i['version']),fW=!!fT;return{'name':fU,'preferredVersion':Number['isNaN'](parseInt(fT[0x0]??''))?'':fT,'preferredChannel':fW?aM(fT):fV,'appChannel':fV,'isExplicitSelection':fW,'allowFallback':!fW&&fV!=='latest'};},aT=async(fS,fT)=>{const gN=gz;C['info']('Fetching\x20bundle...'),C['debug'](fS);let fU=await fetch(fS);if(!fU['ok'])throw aL(aI['ASSET_NOT_FOUND'],'Failed\x20to\x20download\x20extension\x20bundle:\x20'+fU['status']+'\x20'+fU[gN(0x1f7)],{'url':fS,'status':fU['status'],'statusText':fU['statusText']});let fV=fU['headers']['get']('content-disposition')?.[gN(0x2c7)](gN(0x1a4))[0x1]?.['split'](';')[0x0]?.['replaceAll']('\x22',''),fW=N['basename'](fS),fX=fT||fV||fW,fY=await fU['arrayBuffer'](),fZ=N['join'](k,fX);return await R['writeFile'](fZ,Buffer[gN(0x1a0)](fY)),await R['stat'](fZ)['then'](g0=>{C['debug']('Bundle\x20downloaded\x20('+g0['size']/0x3e8+'\x20KB):\x20'+fZ);})['catch'](()=>{C['error']('Bundle\x20download\x20failed:\x20can\x27t\x20find\x20output\x20file');}),fZ;},aU=async(fS,fT)=>{const gO=gz;if(fS['startsWith']('npm:')||fS['startsWith']('@streamyx/'))throw aL(aI['UNSUPPORTED_SOURCE'],'NPM\x20extension\x20sources\x20are\x20no\x20longer\x20supported',{'source':fS});let fU=fS,fV=fS,fW=N['dirname'](fS),fX=fW!=='.'&&await R['stat'](fW)['then'](()=>!0x0,()=>!0x1),fY=fS['startsWith']('./')||fS['startsWith']('../')||fS['startsWith']('/')||fS['startsWith']('~')||fX,fZ=await R['stat'](fS)['then'](()=>!0x0,()=>!0x1),g0=fS['startsWith']('https://'),g2=fS['startsWith']('gl:')||fS['startsWith']('gitlab:'),g3=fS['startsWith']('github:')||fS[gO(0x2ae)]('gh:');if(fY&&!fZ&&!g0&&!g3&&!g2)throw C['warn'](gO(0x192)+fS),C[gO(0x266)]('Run\x20\x27azot\x20list\x27\x20and\x20remove\x20the\x20extension\x20from\x20the\x20list.'),aL(aI['SOURCE_NOT_FOUND'],gO(0x1af)+fS,{'source':fS});fS=fS['replace'](/^gl:/,'')['replace'](/^gitlab:/,'')['replace'](/^gh:/,'')['replace'](/^github:/,'');let g4=aS(fS),{name:g5}=g4;if(g0)fU=await aT(fS);else{if(g3){let [gb,gc]=g5['split']('/'),gd='https://api.github.com/repos/'+gb+'/'+gc+'/releases',ge=await fetch(gd)['then'](gj=>gj['json']());if(ge?.['message']&&!Array['isArray'](ge))throw aL(aI['RELEASE_NOT_FOUND'],'GitHub\x20releases\x20request\x20failed:\x20'+ge['message'],{'source':g5,'provider':'github','apiMessage':ge[gO(0x1b3)]});let gf=Array['isArray'](ge)?ge:[],gg=aR(gf,g4,g5);if(!gg)throw g4['isExplicitSelection']?aQ(g4,gf,g5):aL(aI['RELEASE_NOT_FOUND'],gO(0x275),{'source':g5,'provider':'github',...aP(gf)});let gh=gg['assets']?.['find'](gj=>gj['name']['endsWith'](gO(0x2f5))||gj['name']['endsWith']('.zip'));if(!gh)throw C['debug'](gg),aL(aI['ASSET_NOT_FOUND'],'GitHub\x20release\x20asset\x20not\x20found',{'source':g5,'provider':gO(0x26d),'releaseTag':aN(gg)});let gi=gh['browser_download_url'];fU=await aT(gi);}else{if(!fZ){let gj=fT?.['find'](gn=>gn['name']===g5),gk=gj?.['releases']||[],gl=aR(gk,g4,g5),gm=gl?.['assets']['find'](gn=>gn['name']['endsWith']('.tgz'));if(gj&&!gl&&g4['isExplicitSelection'])throw aQ(g4,gk,g5);if(gm)fU=await aT(gm['url'],gm['name']);else{let [gn,go='streamyx-extensions']=g5['split']('/')['reverse'](),gp='https://gitlab.com/api/v4/projects/'+go+'%2F'+gn+gO(0x229),gq=await fetch(gp)['then'](gu=>gu['json']());if(gq?.['message']&&!Array[gO(0x295)](gq))throw aL(aI['RELEASE_NOT_FOUND'],gO(0x1e9)+gq['message'],{'source':g5,'provider':'gitlab','apiMessage':gq[gO(0x1b3)]});let gr=Array['isArray'](gq)?gq:[],gs=aR(gr,g4,g5);if(!gs)throw g4['isExplicitSelection']?aQ(g4,gr,g5):aL(aI['RELEASE_NOT_FOUND'],'GitLab\x20release\x20not\x20found',{'source':g5,'provider':'gitlab',...aP(gr)});let gt=gs['assets']?.['links']?.['find'](gu=>gu['name'][gO(0x1e4)]('.tgz'));if(!gt)throw aL(aI['ASSET_NOT_FOUND'],gO(0x1c8),{'source':g5,'provider':'gitlab','releaseTag':aN(gs)});fU=await aT(gt[gO(0x23e)]||gt['url'],gt['name']);}}}}let g6=N['extname'](fU),g7=g6==='.zip',g8=g6==='.tgz',g9=new Set(['.js','.mjs','.cjs'])['has'](g6),ga=await R['stat'](fU)['then'](gu=>gu['isDirectory']())['catch'](()=>!0x1);if(g9?fV=N[gO(0x246)](fU):ga?fV=fU:(fV=fU['replace']('.tgz','')['replace']('.zip',''),await aA(fV)||await aD(fV)),g7||g8)aH['extract'](fU,fV),await aC(fU);else{if(!(g9||ga))throw aL(aI['UNSUPPORTED_PACKAGE_TYPE'],'Unsupported\x20package\x20type',{'source':fS,'extensionSource':fU,'packageType':g6||'unknown'});}return fV;},aV='__matchRules',aW=fS=>typeof fS=='object'&&!!fS&&!Array['isArray'](fS),aX=fS=>{const gP=gz;let fT=fS['trim']()['match'](/^(\*|https?):\/\/([^/]+)(\/.*)$/i);if(!fT)return null;let [,fU,fV,fW]=fT,fX=fU['toLowerCase'](),fY=fX==='*'?['http','https']:fX==='http'||fX==='https'?[fX]:null;if(!fY)return null;let fZ=fV['trim']()[gP(0x296)](),g0=!0x1,g2=[],g3=[];if(fZ==='*')g0=!0x0;else{if(fZ[gP(0x2ae)]('*.')){let g6=fZ['slice'](0x1);if(!g6['startsWith']('.')||g6[gP(0x255)]<=0x1)return null;g3=[g6];}else{if(!fZ['includes']('*'))g2=[fZ];else return null;}}if(!fW['startsWith']('/'))return null;let g4=fW['indexOf']('*');if(g4!==-0x1&&g4!==fW['length']-0x1)return null;let g5=g4===-0x1?fW:fW['slice'](0x0,-0x1);return{'schemes':fY,'matchAnyHost':g0,'exactHosts':g2,'wildcardHostSuffixes':g3,'exactPaths':g4===-0x1?[g5]:void 0x0,'pathPrefixes':g4===-0x1?void 0x0:[g5]};},aY=fS=>{if(!Array['isArray'](fS))return;let fT=fS['filter'](fU=>typeof fU=='string'&&!!fU['trim']())['map'](aX)['filter'](fU=>!!fU);return fT['length']?fT:void 0x0;},aZ=(fS,fT)=>fT['matchAnyHost']||fT[gz(0x2a9)]['includes'](fS)||fT['wildcardHostSuffixes']['some'](fU=>fS[gz(0x1e4)](fU)),b0=(fS,fT)=>fT['exactPaths']?.['includes'](fS)||!!fT[gz(0x1a2)]?.['some'](fU=>fS['startsWith'](fU))||!fT['exactPaths']?.['length']&&!fT['pathPrefixes']?.['length'],b1=({manifest:fS,packageJson:fT,fallbackName:fU})=>{const gQ=gz;let fV=aW(fT?.['config'])?fT['config']:null,fW=(aW(fS)?fS:null)??fV??{},fX=typeof fW['name']=='string'&&fW['name']||typeof fW[gQ(0x304)]=='string'&&fW['title']||fU,fY={...fW,'name':fX,'title':typeof fW['title']==gQ(0x251)&&fW['title']?fW['title']:fX};(typeof fY['icon']!='string'||!fY['icon'])&&delete fY['icon'],(typeof fY['tag']!='string'||!fY['tag'])&&delete fY['tag'],Array['isArray'](fY['permissions'])||delete fY['permissions'],Array[gQ(0x295)](fY['regions'])||delete fY['regions'],typeof fY['manifestVersion']!=gQ(0x261)&&delete fY['manifestVersion'];let fZ=aY(fW['matches']);return fZ?(fY['matches']=Array['isArray'](fW['matches'])?fW['matches']['filter'](g0=>typeof g0=='string'):void 0x0,Object['defineProperty'](fY,aV,{'value':fZ,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1})):delete fY['matches'],fY;},b2=async({dir:fS,packageJson:fT,fallbackName:fU})=>{let fV=join(fS,'manifest.json');return b1({'manifest':await aA(fV)?await aF(fV):null,'packageJson':fT,'fallbackName':fU});},b3=fS=>fS['manifest']?.['name']||fS['manifest']?.['title']||fS['package']?.['config']?.['title']||fS[gz(0x2b5)]?.['name']||fS['name']||'(unknown\x20extension)',b4=fS=>fS['manifest']?.['tag']||fS['package']?.['config']?.[gz(0x197)]||void 0x0,b5=(fS,fT)=>{const gR=gz;let fU=fS['manifest']?.[aV];if(!Array[gR(0x295)](fU)||!fU['length'])return!0x1;let fV=fT['protocol']['slice'](0x0,-0x1)['toLowerCase'](),fW=fT['hostname']['toLowerCase'](),fX=fT['pathname'];return fU['some'](fY=>!(fY['schemes']?.['length']&&!fY[gR(0x244)]['includes'](fV)||!aZ(fW,fY)||!b0(fX,fY)));},b6=fS=>{let fT=fS['manifest']?.[aV];return Array['isArray'](fT)&&fT['length']>0x0;},b7=fS=>fS&&'exports'in fS?fS[gz(0x1d3)]:fS,b8=fS=>fS?.['package']?.['name']||gz(0x264),b9=fS=>{let fT=b7(fS);return!fT||typeof fT!='object'?null:typeof fT['resolveEntries']=='function'?'v2':typeof fT['getMediaInfo']=='function'?'legacy-media':typeof fT['fetchContentMetadata']=='function'?'legacy-content':null;},ba=fS=>b9(fS)!==null,bb=fS=>{const gS=gz;let fT=b7(fS);if(!fT||typeof fT!='object')throw Error(gS(0x211));return fT;},bc=async fS=>{const gT=gz;let fT=bb(fS),fU=b8(fS);try{if(typeof fT['setup']=='function'){await fT[gT(0x287)]();return;}typeof fT['init']=='function'&&await fT['init']();}catch(fV){let fW=typeof fT['setup']=='function'?'setup':'init',fX=fV instanceof Error?fV:Error(String(fV));throw C['error']('Extension\x20'+fU+'\x20'+fW+'\x20failed:\x20'+fX[gT(0x1b3)]),fX[gT(0x1e7)]&&C['debug'](fX['stack']),fX;}},bd=async(fS,fT)=>{let fU=bb(fS),fV=b8(fS);try{if(typeof fU['auth']?.['login']=='function'){await fU['auth']['login'](fT);return;}typeof fU['login']=='function'&&await fU['login'](fT);}catch(fW){let fX=typeof fU['auth']?.['login']=='function'?'auth.login':'login',fY=fW instanceof Error?fW:Error(String(fW));throw C['error']('Extension\x20'+fV+'\x20'+fX+'\x20failed:\x20'+fY['message']),fY['stack']&&C['debug'](fY['stack']),fY;}},be=async fS=>{const gU=gz;let fT=bb(fS),fU=b8(fS);try{if(typeof fT['auth']?.['logout']=='function'){await fT['auth'][gU(0x20a)]();return;}typeof fT['logout']=='function'&&await fT[gU(0x20a)]();}catch(fV){let fW=typeof fT['auth']?.['logout']=='function'?'auth.logout':'logout',fX=fV instanceof Error?fV:Error(String(fV));throw C['error']('Extension\x20'+fU+'\x20'+fW+'\x20failed:\x20'+fX['message']),fX[gU(0x1e7)]&&C['debug'](fX['stack']),fX;}},bf=async fS=>{let fT=bb(fS);typeof fT['hooks']?.['beforeDownload']=='function'&&await fT['hooks']['beforeDownload']();},bg=async(fS,{skipMux:fT=!0x1}={})=>{const gV=gz;let fU=bb(fS),fV=b8(fS);if(!fT&&typeof fU['hooks']?.['afterMux']=='function')try{await fU['hooks'][gV(0x1fe)]();}catch(fW){let fX=fW instanceof Error?fW:Error(String(fW));C['error']('Extension\x20'+fV+'\x20hooks.afterMux\x20failed:\x20'+fX['message']),fX['stack']&&C[gV(0x2a4)](fX['stack']);}if(typeof fU[gV(0x24b)]=='function')try{await fU['onDownloadFinished']();}catch(fY){let fZ=fY instanceof Error?fY:Error(String(fY));C['error']('Extension\x20'+fV+'\x20onDownloadFinished\x20failed:\x20'+fZ['message']),fZ['stack']&&C['debug'](fZ['stack']);}},bh=async(fS,{context:fT,dirname:fU,skipValidation:fV})=>{const gW=gz;let fW=await A(fS,{'dirname':fU,'context':fT})['finally'](()=>{});if(!fW)return null;let fX='default'in fW['exports']?fW[gW(0x1d3)]['default']:fW['exports'];if(!fV&&!ba(fX))throw C['error']('Incompatible\x20extension\x20interface'),aL(aI['IMPORT_INVALID'],'Incompatible\x20extension\x20interface',{'extensionPath':fS});return fW['exports']=fX,fW;},bi=fS=>fS['split']('/')['reverse']()[0x0]['replaceAll']('@','')['replace']('extension-','')['replace']('-extension',''),bj=async fS=>{const gX=gz;let fT=[join(fS,'package.json'),join(fS,'package','package.json')],fU;for(let g3 of fT)if(await aA(g3)){fU=g3;break;}let fV={},fW='',fX='',fY='',fZ=fS;if(fU){fZ=dirname(fU),fV=await aF(fU)||{};let g4=fV['main']||gX(0x23a);fW=join(fZ,g4),fX=fV['name'],fY=fZ;}else{let g5=await aB(fS),g6=g5['find'](g7=>g7['name']===gX(0x23a))||g5['find'](g7=>g7['name']==='main.js')||g5['find'](g7=>g7['name']==='service.js')||g5['find'](g7=>g7['name']==='extension.js')||g5['find'](g7=>g7['name']['endsWith']('.js'));g6&&(fW=join(fS,g6['name']),fX=parse(fW)['name']);}if(!fW)throw aL(aI['IMPORT_INVALID'],'Extension\x20main\x20script\x20not\x20found:\x20'+fS,{'dir':fS});fY||=dirname(fW);let g0=bi(fX),g2=await b2({'dir':fZ,'packageJson':fV,'fallbackName':g0});return{'name':g0,'path':fW,'dir':fY,'package':fV,'manifest':g2};},bk=async(fS,fT)=>{const gY=gz;try{let fU=await bj(fS),fV=b3(fU),fW=F({'name':fU['name'],'title':fV,'dir':K});await fW['cookieStore'][gY(0x1ce)](join(K,fU['name'],'cookies.txt'));let fX=await bh(fU[gY(0x2ca)],{'context':fW,'dirname':fU['dir']});if(!fX)throw aL(aI['IMPORT_INVALID'],'Failed\x20to\x20load\x20extension\x20script:\x20'+fU['path'],{'source':fT,'dir':fS,'path':fU['path']});return{'source':fT,'exports':fX['exports'],'context':fW,...fU};}catch(fY){throw C['error']('Error\x20importing\x20module:\x20'+fY['message']),C['debug'](fY instanceof Error?fY['stack']||fY['message']:String(fY)),fY;}},bl=f;let bm=bl;const bn=fS=>fS['replace'](/\/+$/,''),bo=()=>bn(bm),bp=(fS,fT)=>{let fU=bn(fS);return fT?fU+'/'+(fT['startsWith']('/')?fT['slice'](0x1):fT):fU;},bq=fS=>bp(bo(),fS);let br=null;async function bs(fS){const gZ=gz;if(!br){C[gZ(0x2a4)]('Public\x20key\x20not\x20found');let fZ=await bu();if(fZ)C['debug']('Public\x20key\x20found:\x20'+fZ['slice'](0x0,0x32)+gZ(0x1fb));else return C['error']('Public\x20key\x20not\x20found\x20in\x20response'),!0x1;if(br=await bv(fZ)['catch'](()=>null),!br)return C['error']('Public\x20key\x20import\x20failed'),!0x1;}let fT=fS['headers']['get']('X-Signature-Timestamp'),fU=fS['headers']['get']('X-Signature');if(!fT||!fU)return C['error']('Signature\x20headers\x20not\x20found'),!0x1;if(Date['now']()-parseInt(fT)>0x493e0)return!0x1;let fV=fT+':'+await fS['clone']()['text'](),fW=bw(fU),fX=new TextEncoder(),fY=crypto[gZ(0x2ab)]['verify']({'name':'ECDSA','hash':gZ(0x267)},br,fW,fX['encode'](fV));return fY||(br=null),fY;}const bt=()=>atob(j);async function bu(fS='/auth/.well-known/public-key'){try{let fT=await fetch(''+bo()+fS);return fT['ok']?await fT['text']():bt();}catch(fU){return C['error'](fU['message']),bt();}}async function bv(fS){const h0=gz;let fT=bw(fS[h0(0x2e1)](h0(0x265),'')['replace']('-----END\x20PUBLIC\x20KEY-----','')['trim']());return crypto['subtle']['importKey']('spki',fT,{'name':'ECDSA','namedCurve':'P-256'},!0x0,['verify']);}function bw(fS){let fT=atob(fS),fU=new Uint8Array(fT['length']);for(let fV=0x0;fV<fT['length'];fV++)fU[fV]=fT['charCodeAt'](fV);return fU['buffer'];}function a(){const kk=['reversedTimecodes','round','jobs','9314484EeqhpG','resolvedUrl','info','base64','inputs','then','isArray','toLowerCase','extensionDirs','Output\x20format','getNumberOfChannels','allowFallback','extname','episodeTitle','(none)','Azot\x20Desktop','blue','preferHardsub','16158jUwkuS','5673150uwDguN','sleep','debug','parts','floor','2160','VirtualRoom','exactHosts','find','subtle','close','relative','startsWith','Logging\x20out...','call','includes','infoList','min','stop','package','join','Decryption\x20failed\x20for\x20file\x20','tur','assign','watch','EXTENSION_INSTALL_SOURCE_NOT_FOUND','https://play-lh.googleusercontent.com/LdBITldj-tJxqLm-CsWSbnt4BMo2gk53cgM7mWIL-zn44m1ywLyQgxRsHKqp8r0qceXs=w480-h960-rw','cookieStore','keys','http2','\x20copies)','next','push','api','truncate','platform','mp4','split','headers','drmPayload','path','current','invalidIndices','filter','requestInit','trimEnd','pathname','command','No\x20handler\x20detected','processing','end','Invalid\x20WebVTT\x20timestamp:\x20','drm','stat','dir','Loading\x20','json','values','Could\x20not\x20find\x20package.json\x20starting\x20from\x20','data','/s-','manifest:','function','replace','Failed\x20to\x20parse\x20manifest','access_token','bytesTotal','loadScript','success','getFirstPacket','7169768WaSRjQ','pause','columns','\x5c}(\x5c.|$)|\x5c{','User','invalidEntries','episodes','utf8','getKeys','process','HLS','parse','first','.tgz','output','askForOptions','add','private','clear','Input','statusMsg','help','deleteWithFile','content-length','https://github.com/vitalygashkov','resumeManager','video','toString','title','init','defineProperty','createReadStream','cenc','timecodeIssues','Installed\x20extension\x20not\x20found:\x20','Settings\x20update\x20failed\x20validation.','addAudioTrack','onProgress','pid','tag','bps','repeat','map','callback','token_type','prompt','green','\x20|\x20','from','preferredVersion','pathPrefixes','url','filename=','1482574xqkfxb','catch','input','hostname','EXTENSION_INSTALL_UNSUPPORTED_PACKAGE_TYPE','description','pipe','9cjdepf','AbortError','Location:\x20','Installed\x20extension\x20source\x20not\x20found:\x20','trimStart','extensionManager','connections','message','proxy','Obfuscate\x20output','aac','fetchContentSource','abort','unshift','kid','winconsole.node','invalidateQueries','write','error','update','edges','type','HLS_FORMATS','enum','codec','cwd','onDidAnyChange','downloadsStorage','GitLab\x20release\x20asset\x20not\x20found','Unsupported\x20mux\x20output\x20format:\x20','https://play-lh.googleusercontent.com/TTKq2trnzgtoyM0jc1pyrrmXtA_Yd3A2hxubZtDahdZStYf4GPANZa-wjDb1ELHrGqh_=w480-h960-rw','https://api-v2.soundcloud.com/resolve?url=','quality','subtitles','import','format','defineExtension','config','Open\x20browser\x20automatically?','exports','videoContainerFormat','m4a','Slowing\x20down\x20polling\x20to\x20','max','signal','removeListener','The\x20operation\x20was\x20aborted','downloading','queued','groups','836190xyNroc','aborted','https://soundcloud.com/','hasOwnProperty','Could\x20not\x20find\x20video\x20URL','\x20∙\x20','endsWith','emitStatusChanged','isFinite','stack','filePath','GitLab\x20releases\x20request\x20failed:\x20','console','latest',',\x20psshCount=','Bearer\x20','localStorage','default','reduce','indexPath','load','red','fileSystem','coerce','soundcloud','statusText','Content\x20Matched:\x20','DASH_FORMATS','__esModule','...','code','dim','afterMux','Decrypted','seasonNumber','Vitaly\x20Gashkov','toISOString','accessToken','1rmKQhr','toSorted','....','encryption','error_description','total','logout','resource','utils','https://rbc.ru/*','padEnd','tiktok','mid','Invalid\x20extension\x20exports','strategy','read','.cjs','$0\x20[urls..]','NTV','response','status','https://m.weibo.cn/status/','addEventListener','increase','start','include','client','bytesDownloaded','audio','maxWorkerCount','instagram.ts','module','retry','has','hasResolvedSource','set','proxyMedia','/releases','inputTrack','replaceAll','manifest','value','/about/','Resolving\x20media\x20entries\x20finished','callbacks','name','confirm','trackArtifact','https://rutube.ru/*','version','option','📱\x20Device\x20Authorization\x20Required','reconcileState','totalBytes','index.js','DOWNLOAD_DIR_NOT_WRITABLE','opus','und','direct_asset_url','DASH','sessionId','prepare','install\x20<extensions..>','size','schemes','all','dirname','No\x20media\x20resource\x20found','Failed\x20to\x20request\x20device\x20authorization:\x20','sampleRate','812KKUArt','onDownloadFinished','writeFile','hex','parallelDownloads','link','positional','string','document','emit','node','length','Clearing\x20cookies\x20store...','Keys\x20count:\x20','basename','toUpperCase','UrlSource','videoQuality','bin','\x20MB/s\x20–\x20','15FmbLYz','resolvedOptions','https://m.weibo.cn','number','685516fNwWkS','maxChunkSize','(unknown\x20extension)','-----BEGIN\x20PUBLIC\x20KEY-----','warn','SHA-256','33CrQABj','store','get','Path\x20to\x20the\x20input\x20file','build','github','toFixed','parseAsync','trim','https://www.tiktok.com/','head','probe','sha1','GitHub\x20release\x20not\x20found','key','height','MP4','Track\x20download\x20skipped,\x20already\x20aborted:\x20','delete','sourceSignature','Base64\x20response\x20data:\x20','test','paused','subtitle','createdAt','ALL_FORMATS','tempFileDir','light','bitrate','Select\x20subtitles','validate','setup','slice','ask','resolve','EBUSY'];a=function(){return kk;};return a();}const bx=fS=>createAuthClient({'baseURL':fS+'/auth','plugins':[deviceAuthorizationClient(),tributeClient()],'fetchOptions':{'retry':0x0,'onSuccess':fT=>{let fU=fT['response']['headers']['get']('set-auth-token');fU&&(bJ['accessToken']=fU,bK(bJ));},'auth':{'type':'Bearer','token':()=>bJ['accessToken']||bL()['then'](fT=>fT?.['accessToken'])},'onResponse':async fT=>await bs(fT[gz(0x217)])['catch'](()=>!0x1)?(C['debug']('Response\x20verified:\x20'+fT['response']['url']),fT):(C['error']('Response\x20verification\x20failed:\x20'+fT['response']['status']+'\x20'+fT['response']['statusText']+'\x20'+fT[gz(0x217)]['url']),G['emit']('error',{'code':'SIGNATURE_VERIFICATION_FAILED'}),new Response(JSON['stringify']({'error':'SIGNATURE_VERIFICATION_FAILED','message':'Signature\x20verification\x20failed'}),{'status':0x191,'statusText':'Unauthorized'}))}});let by='',bz=bx(bo());const bA=()=>{let fS=bo();return(!bz||by!==fS)&&(by=fS,bz=bx(fS)),bz;},bB=async(fS,fT,fU={})=>{const h1=gz;let {signal:fV,timeoutMs:fW=0x2710}=fU,fX=new AbortController(),fY=()=>fX[h1(0x1b8)](fV?.['reason']);fV?.['addEventListener'](h1(0x1b8),fY,{'once':!0x0});let fZ=!0x1,g0=setTimeout(()=>{fZ=!0x0,fX['abort'](Error('Request\x20timeout'));},fW);try{let g2=await fetch(fS,{...fT,'signal':fX[h1(0x1d8)]});if(!g2['ok'])throw Error('Request\x20failed:\x20'+g2['status']);return g2['json']();}catch(g3){throw fZ&&g3 instanceof DOMException&&g3['name']==='AbortError'?Error('Request\x20timed\x20out\x20after\x20'+fW+'ms',{'cause':g3}):g3;}finally{clearTimeout(g0),fV?.['removeEventListener']('abort',fY);}},bC={'getExtensions':(fS,fT)=>bB(bq('extensions'),{'headers':fS?{'Authorization':'Bearer\x20'+fS}:void 0x0},{'signal':fT}),'getSubscriptions':(fS,fT)=>bB(bq('subscriptions'),{'headers':{'Authorization':'Bearer\x20'+fS}},{'signal':fT})},bD=0x12c*0x3e8,bE=0x12c*0x3e8,bF=new QueryClient({'queryCache':new QueryCache(),'defaultOptions':{'queries':{'staleTime':bD,'gcTime':bE}}}),bG={'get':fS=>bF['getQueryData'](fS),'set':(fS,fT)=>bF['setQueryData'](fS,fT),'reset':fS=>{fS?bF['removeQueries']({'queryKey':fS}):bF['clear']();},'invalidate':fS=>bF[gz(0x1bc)]({'queryKey':fS}),'refresh':async(fS,fT)=>(bF['invalidateQueries']({'queryKey':fS}),bH({'queryKey':fS,'queryFn':fT}))},bH=async({queryKey:fS,queryFn:fT,staleTime:fU,enabled:fV=!0x0})=>{const h2=gz;try{let fW=bF['getQueryState'](fS),fX=fW?fW?.['isInvalidated']||!fW?.['dataUpdatedAt']&&!fW?.['errorUpdatedAt']||Date['now']()-fW['dataUpdatedAt']>(fU??bD):!0x0,fY=()=>bG['reset'](fS),fZ=()=>bG['invalidate'](fS),g0=()=>bG['refresh'](fS,fT);return fV?fW&&!fX?{'data':fW[h2(0x2dd)],'reset':fY,'invalidate':fZ,'refresh':g0}:{'data':await bF['fetchQuery']({'queryKey':fS,'queryFn':fT,'staleTime':fU}),'reset':fY,'invalidate':fZ,'refresh':g0}:{'data':null,'reset':fY,'invalidate':fZ,'refresh':g0};}catch(g2){throw bF['removeQueries']({'queryKey':fS}),g2;}},bI=new p(join(t,'session.json')),bJ={'accessToken':'','tokenType':'','scope':'','createdAt':''},bK=async fS=>{const h3=gz;bI['setItem']('access_token',fS[h3(0x2e3)]),bI['setItem']('token_type',fS[h3(0x19c)]||'Bearer'),bI['setItem']('scope',fS['scope']),bI['setItem']('created_at',new Date()['toISOString']()),bJ['accessToken']=fS['access_token'],bJ['tokenType']=fS['token_type']||'Bearer',bJ['scope']=fS['scope'],bJ['createdAt']=new Date()[h3(0x202)]();},bL=async()=>{let fS=bI['getItem']('access_token'),fT=bI['getItem']('token_type'),fU=bI['getItem']('scope'),fV=bI['getItem']('created_at');return!fS||!fT||!fU||!fV?null:{'accessToken':fS,'tokenType':fT,'scope':fU,'createdAt':new Date(fV)};},bM=async()=>{let fS=await bH({'queryKey':['session',bo()],'queryFn':()=>bA()['getSession']()});return{'session':fS['data']?.['data']?.['session'],'user':fS['data']?.['data']?.['user'],'error':fS['data']?.['error']};},bN=async()=>{let {user:fS,error:fT}=await bM(),fU=await bH({'queryKey':['subscriptions',bo()],'queryFn':async()=>bA()['subscription']['list'](),'enabled':!!fS?.['id']});return{'data':fU['data']?.['data'],'error':fU['data']?.['error']??fT};},bO=['lowConnectionsCount','oneDevice'],bP=['mediumConnectionsCount','twoDevices','proxy','decryption','customIcon','tags',gz(0x24e),'userExtensions','portableBuild'],bQ=['highConnectionsCount','threeDevices','customMuxFormat','customDecrypter','customDrmClient','premiumExtensions'],bR={'basic':bO,'plus':bP,'pro':[...bO,...bP,...bQ]},bS=()=>bH({'queryKey':['lava-subscriptions',bo()],'queryFn':async()=>{const h4=gz;let fS=bJ[h4(0x203)]||(await bL())?.['accessToken'];return fS?bC['getSubscriptions'](fS):[];}}),bT=async()=>{let fS=await bN();return{'plan':(await bS())['data']?.[0x0]?.['productTitle']||fS['data']?.['find'](fT=>new Date(fT['expiresAt'])>new Date())?.['tributeSubscriptionName'],'error':fS['error']};},bU=async()=>{let {user:fS,session:fT}=await bM(),{plan:fU,error:fV}=await bT();return{'user':fS,'session':fT,'error':fV,'plan':fU,'grantedBenefits':fU?bR[fU['toLowerCase']()]??[]:[]};};var bV=a6((fS,fT)=>{const h9=gz;fT['exports']={'instagram':{'create':fU=>{let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const h5=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gg=>gg);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7[h5(0x2fb)],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7[h5(0x23f)],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7[h5(0x278)],g7['MP3'];let gb={'Referer':'https://www.instagram.com/'},gc={'X-IG-App-ID':'936619743392459','User-Agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/107.0.0.0\x20Safari/537.36'},gd=async gg=>{const h6=h5;let gh=new URLSearchParams({'doc_id':'8845758582119845','variables':JSON['stringify']({'shortcode':gg,'child_comment_count':0x3,'fetch_comment_count':0x28,'parent_comment_count':0x18,'has_threaded_comments':!0x0})});try{let gi=await fX('https://www.instagram.com/graphql/query/?'+gh['toString'](),{'headers':gc});return gi['ok']?(await gi[h6(0x2da)]())['data']?.['xdt_shortcode_media']??null:(g0['error']('GraphQL\x20request\x20failed\x20with\x20status:\x20'+gi['status']),null);}catch(gj){return g0['error']('Error\x20during\x20GraphQL\x20fetch:',gj),null;}},ge=async gg=>{try{let gh=await fX('https://www.instagram.com/p/'+gg+'/embed/captioned/',{'headers':{'User-Agent':gc['User-Agent']}});if(!gh['ok'])return null;let gi=(await gh['text']())['match'](/window\.__additionalDataLoaded\('extra',\s*({.+?})\s*\);/);return gi?.[0x1]?JSON['parse'](gi[0x1])['shortcode_media']??null:null;}catch(gj){return g0['error']('Error\x20during\x20embed\x20page\x20fetch:',gj),null;}},gf=gg=>{const h7=h5;let gh=gg['edge_media_to_caption']?.['edges']?.[0x0]?.['node']?.['text']||'Instagram\x20Post',gi=[],gj=gl=>{if(!gl)return;let gm=gl['is_video']&&gl['video_url']?gl['video_url']:gl['display_url'];gm&&gi['push']({'title':gh,'input':new g9({'source':new ga(gm,{'requestInit':{'headers':gb}})})});},gk=gg['edge_sidecar_to_children']?.[h7(0x1c0)];if(gk?.['length']){for(let gl of gk)gj(gl['node']);}else gj(gg);return gi;};fV['exports']=g8({async 'resolveEntries'(gg){const h8=h5;let gh=new URLPattern({'pathname':'/:type(p|reel|tv|reels|videos)/:shortcode{/*}?','baseURL':new URL(gg)['origin']})['exec'](gg)?.['pathname']['groups']['shortcode'];if(!gh)return g0[h8(0x1be)]('Could\x20not\x20extract\x20a\x20valid\x20Instagram\x20shortcode\x20from\x20the\x20URL'),g0['debug'](gg),[];try{let gi=await gd(gh);return gi||=(g0[h8(0x266)]('GraphQL\x20method\x20failed.\x20Falling\x20back\x20to\x20embed\x20page\x20scraping.'),await ge(gh)),gi?gf(gi):(g0['error']('All\x20extraction\x20methods\x20failed.\x20The\x20post\x20may\x20be\x20private,\x20deleted,\x20or\x20require\x20a\x20login.'),[]);}catch(gj){return g0['error']('A\x20critical\x20error\x20occurred\x20while\x20fetching\x20Instagram\x20metadata:',gj),[];}}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'Instagram','icon':'https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/41/91/13/419113d2-6246-c557-669e-0f0a5c62bcc5/Prod-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/460x0w.webp','matches':['https://instagram.com/*','https://*.instagram.com/*']},'pkg':{'name':'instagram','version':'0.0.1','private':!0x0,'keywords':['social-networks'],'homepage':'https://instagram.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':h9(0x201),'email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':h9(0x223),'main':h9(0x222)}},'ntv':{'create':fU=>{const he=h9;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const ha=b;let g7=fW??Streamyx??{};g7&&(g7[ha(0x1d0)]||=gg=>gg);let g8=g7['defineExtension'];g7[ha(0x235)],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7[ha(0x289)],g7['utils'];let g9=g7['Input'],ga=g7[ha(0x25a)];g7[ha(0x281)],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7[ha(0x278)],g7['MP3'];let gb=(gg,gh,gi)=>gg['split'](gh)[0x1]?.['split'](gi)[0x0],gc=(gg,gh)=>{let gi=gb(gg,'<'+gh+'>','</'+gh+'>')?.['trim']();if(!gi)return;let gj=gi['match'](/<!\[CDATA\[(.*?)\]\]>/s);return gj?.[0x1]?gj[0x1]['trim']():gi['split']('DATA[')[0x1]?.['split'](']')[0x0]?.['trim']()||gi;},gd=async(gg,gh)=>{const hb=ha;let gi=await fX(gg);return gi['ok']?await gi['text']():(g0['error']('Failed\x20to\x20fetch\x20'+gh+'.\x20Status:\x20'+gi[hb(0x218)]+'\x20'+gi[hb(0x1f7)]),null);},ge=async(gg,gh,gi)=>{const hc=ha;let gj=new URL(gg)['pathname'],gk=new Set();for(let gm of gh['split']('href=\x22/serial')){if(!gm['startsWith']('/'))continue;let gn=gm['split']('\x22')[0x0];!gn||gn['length']<=0x1||gn['includes']('/issues/')||gn['includes'](hc(0x22e))||gn['split']('/')[hc(0x255)]<=0x2||gk['add'](gg['replace'](gj,'/serial'+gn));}let gl=[];for(let go of gk)gl['push'](...await gf(go,gi));return gl;},gf=async(gg,gh=new Set())=>{const hd=ha;if(gh['has'](gg))return[];gh['add'](gg);let gi=await gd(gg,'NTV\x20page');if(!gi)return[];let gj=gb(gi,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22>')??gb(gi,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22\x20/>');if(!gj)return new URL(gg)[hd(0x2d0)]['includes']('/serial')?ge(gg,gi,gh):(g0['error']('Could\x20not\x20find\x20video\x20link\x20in\x20the\x20page.'),[]);let gk=gj[hd(0x2c7)]('video/')[0x1]?.['split']('/')[0x0];if(!gk)return g0['error']('Could\x20not\x20parse\x20NTV\x20video\x20id.'),[];let gl=await gd('https://www.ntv.ru/vi'+gk+'/','NTV\x20XML\x20metadata');if(!gl)return[];let gm=gc(gl,'dash')||gc(gl,'hls'),gn=gc(gl,'file')||gc(gl,'video'),go=gc(gl,'hifile')||gc(gl,'hd_video')||gm||gn;if(!go)return g0['error']('Could\x20not\x20resolve\x20NTV\x20media\x20URL.'),[];let gp=gb(gl,'<embed_tag>','</embed_tag>')||hd(0x216),gq=gb(gi,'\x22name\x22:\x22','\x22'),gr=gq?.[hd(0x2b1)]('серия')?gq['split']('-')[0x0]:void 0x0,gs=gr?parseInt(gr,0xa):void 0x0,gt=gb(gl,'<subtitles>','</subtitles>'),gu=gt?'https://www.ntv.ru'+gt:void 0x0;gu&&g0['debug']('Subtitles:\x20'+gu);let gv=new g9({'source':new ga(go)});return gu&&gv['addSubtitleTrack'](new ga(gu),{'languageCode':'ru','name':'Russian'}),[{'type':gs?'episode':'video','title':gp,'season':gs?0x1:void 0x0,'episode':gs,'input':gv}];};fV[ha(0x1d3)]=g8({'resolveEntries'(gg){return gf(gg,new Set());}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV[he(0x1d3)];},'manifest':{'manifestVersion':0x1,'name':'НТВ','icon':'https://static.ntv.ru/static/images/logo.png','matches':['https://ntv.ru/*','https://*.ntv.ru/*']},'pkg':{'name':'ntv','version':'0.0.9','private':!0x0,'keywords':['tv-channels'],'homepage':'https://www.ntv.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'ntv.ts'}},'rbc':{'create':fU=>{let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hf=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gb=>gb);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7[hf(0x1a7)],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7[hf(0x2f2)],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'],fV['exports']=g8({async 'resolveEntries'(gb){const hg=hf;let gc=await fX(gb);if(!gc['ok'])throw Error('Failed\x20to\x20fetch\x20RBC\x20page:\x20'+gc['status']+'\x20'+gc['statusText']);let gd=(await gc['text']())['match'](/(?:https?:)?\/\/[^\s"'<>]+\.m3u8(?:\?[^\s"'<>]*)?/i)?.[0x0];if(!gd)throw Error('Could\x20not\x20find\x20RBC\x20playlist\x20URL.');return[{'type':'video','input':new g9({'source':new ga(gd[hg(0x2ae)]('//')?'https:'+gd:gd)})}];}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'РБК','icon':'https://static.rustore.ru/imgproxy/A-G-s2Q1x2iqq3qHCAo66-nllrtlqEr7XNU_JKXt4mQ/preset:web_app_icon_160/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS80MGViMWY3MS1kMDkzLTQ2NDMtOTkyNi0xZWM0ZjkwNzViMTQ=.webp','matches':[h9(0x20d),'https://*.rbc.ru/*']},'pkg':{'name':'rbc','version':'0.0.2','private':!0x0,'keywords':['news'],'homepage':'https://rbc.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':h9(0x201),'email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rbc.ts'}},'rutube':{'create':fU=>{const hl=h9;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hh=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=ge=>ge);let g8=g7['defineExtension'];g7['version'],g7[hh(0x2a3)],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7[hh(0x1c2)],g7['MP4'],g7['MP3'];let gb=['/video/:id{/}?','/play/embed/:id{/}?','/shorts/:id{/}?','/yappy/:yappyId{/}?','/video/private/:id{/}?'],gc=ge=>{const hi=hh;let gf={'yappyId':'','id':'','key':''};gf['key']=new URL(ge)['searchParams']['get']('p')??'';for(let gg of gb){let gh=new URLPattern(gg,'https://rutube.ru')['exec'](ge);gh&&(Object['assign'](gf,gh['pathname']['groups']),Object['assign'](gf,gh['search'][hi(0x1dd)]));}return gf;},gd=async ge=>{const hj=hh;let gf=(await fX('https://rutube.ru/pangolin/api/web/yappy/yappypage/?client=wdp&videoId='+ge+'&page=1&page_size=15')['then'](gg=>gg['json']())['catch'](()=>null))?.['results']?.['find'](gg=>String(gg['id'])===ge)?.[hj(0x24f)];return gf?[{'type':'video','title':'rutube_yappy_'+ge,'input':new g9({'source':new ga(gf)})}]:(g0['error']('ErrorEmptyDownload'),[]);};fV['exports']=g8({async 'resolveEntries'(ge){const hk=hh;let gf=gc(ge);if(gf['yappyId'])return gd(gf['yappyId']);if(!gf['id'])return g0['error']('Could\x20not\x20extract\x20Rutube\x20video\x20id'),[];let gg=new URL('https://rutube.ru/api/play/options/'+gf['id']+'/?no_404=true&referer&pver=v2');gf['key']&&gg['searchParams']['set']('p',gf['key']);let gh=await fX(gg)['then'](gi=>gi['json']())['catch'](gi=>(gi instanceof Error&&g0['debug'](gi['message']),null));return gh?gh['detail']||!gh['video_balancer']?.['m3u8']?(g0['error']('Play\x20info\x20is\x20empty'),[]):gh['live_streams']?.['hls']?(g0['error']('Live\x20videos\x20are\x20not\x20supported'),[]):[{'type':'video','title':gh[hk(0x304)]?.['trim']()||'rutube_'+gf['id'],'input':new g9({'source':new ga(gh['video_balancer']['m3u8'])})}]:(g0['error']('Cannot\x20fetch\x20play\x20info'),[]);}});})(fU['Azot'],fU['fetch'],fU[hl(0x1ee)],fU[hl(0x2bd)],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'RUTUBE','icon':'https://static.rustore.ru/imgproxy/vcyBc0LG-3ybXcGs_-_OJXH9ULjoegHlLs-DacemG08/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjQ2MjA3L2NvbnRlbnQvSUNPTi9hNTZhZWJlMy01NjVhLTRiZjYtOTQyZC0xZjE0OTk0YjlhNmUucG5n.webp','matches':[h9(0x234),'https://*.rutube.ru/*']},'pkg':{'name':'rutube','version':'0.0.13','private':!0x0,'keywords':['video-hostings'],'homepage':'https://rutube.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rutube.ts'}},'soundcloud':{'create':fU=>{const hq=h9;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hm=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gf=>gf);let g8=g7['defineExtension'];g7['version'],g7[hm(0x2a3)],g7['input'],g7['prompt'],g7['notify'],g7[hm(0x232)],g7['ask'];let g9=g7['utils'],ga=g7['Input'],gb=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'];let gc={'version':'','id':''},gd=async()=>{const hn=hm;try{let gf=await fX(hn(0x1e0))['then'](gi=>gi['text']())['catch'](gi=>{const ho=hn;let gj=gi instanceof Error&&gi['cause']!=null?String(gi['cause']):'';return gi instanceof Error&&gj[ho(0x2b1)]('ECONNRESET')&&g0['warn']('Soundcloud\x20may\x20be\x20blocked\x20in\x20your\x20region.\x20Use\x20proxy\x20or\x20VPN\x20to\x20bypass\x20restrictions.'),'';}),gg=gf['match'](/window\.__sc_version="([0-9]{10})"/)?.[0x1];if(gg&&gc[hn(0x235)]===gg)return gc['id'];let gh='';for(let gi of gf['matchAll'](/<script.+src="(.+)">/g)){let gj=gi[0x1];if(!gj?.['startsWith']('https://a-v2.sndcdn.com/'))continue;let gk=(await fX(gj)[hn(0x294)](gl=>gl['text']())['catch'](()=>''))['match'](/\("client_id=[A-Za-z0-9]{32}"\)/)?.[0x0]['match'](/[A-Za-z0-9]{32}/)?.[0x0];if(gk){gh=gk;break;}}return gg&&(gc['version']=gg,gc['id']=gh),gh;}catch{return'';}},ge=gf=>gf['audioCodecs']?.['some'](gg=>gg==='aac'||gg==='mp3')??!0x1;fV['exports']=g8({async 'resolveEntries'(gf,gg){const hp=hm;let {author:gh,song:gi,accessKey:gj,shortLink:gk}=g9['execUrlPatterns'](gf,[':author/:song/s-:accessKey',':author/:song',':shortLink'],['https://soundcloud.com','https://on.soundcloud.com'])['pathname'],gl=await gd();if(!gl)throw Error('No\x20client\x20ID');let gm;if(new URL(gf)['hostname']==='on.soundcloud.com'&&gk&&(gm=await fX('https://on.soundcloud.com/'+gk+'/',{'redirect':'manual'})['then'](gt=>{let gu=gt['headers']['get']('location');if(gt['status']===0x12e&&gu?.['startsWith']('https://soundcloud.com/'))return gu['split']('?',0x1)[0x0];})[hp(0x1a6)](()=>void 0x0)),!gm&&gh&&gi&&(gm='https://soundcloud.com/'+gh+'/'+gi+(gj?hp(0x2de)+gj:'')),!gm)throw Error('Could\x20not\x20fetch');let gn=await fX(hp(0x1cb)+gm+'&client_id='+gl)['then'](gt=>gt['status']===0xc8?gt['json']():null)['catch'](()=>null);if(!gn)throw Error('Could\x20not\x20fetch');let go=gn['media']?.['transcodings'];if(!go?.['length'])throw Error('Empty\x20download');let gp=go['find'](gt=>gt['preset']==='opus_0_0'),gq=go['find'](gt=>gt['preset']==='mp3_0_0');if(gq&&(ge(gg)||!gp)&&(gp=gq),!gp)throw Error('Empty\x20download');let gr=''+gp['url']+(gp['url']['includes']('?')?'&':'?')+'client_id='+gl+'&track_authorization='+gn['track_authorization'];if(!gr['startsWith']('https://api-v2.soundcloud.com/media/soundcloud:tracks:'))throw Error('Empty\x20download');let gs=await fX(gr)['then'](async gt=>(await gt['json']())['url']??'')[hp(0x1a6)](()=>'');if(!gs)throw Error('Could\x20not\x20fetch');return[{'type':'audio','title':gn['title']['trim'](),'author':gn['user']['username']['trim'](),'input':new ga({'source':new gb(gs)})}];}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU[hq(0x1ea)],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV[hq(0x1d3)]['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'SoundCloud','icon':'https://play-lh.googleusercontent.com/JSSeB3XQtb9sHD5FWTqVM4AksY_Kg2q20eExenxGqPJZdn2uVQxi8eoHkP5MA-IR4w=w480-h960-rw','matches':['https://soundcloud.com/*','https://*.soundcloud.com/*']},'pkg':{'name':h9(0x1f6),'version':'0.0.6','private':!0x0,'keywords':['music'],'homepage':'https://soundcloud.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'soundcloud.ts'}},'tiktok':{'create':fU=>{let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hr=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gb=>gb);let g8=g7[hr(0x1d0)];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7[hr(0x232)],g7[hr(0x289)],g7['utils'];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7[hr(0x23f)],g7[hr(0x1f9)],g7['HLS'],g7[hr(0x1c2)],g7['MP4'],g7['MP3'],fV[hr(0x1d3)]=g8({async 'resolveEntries'(gb){const hs=hr;let gc=await fX(gb);if(!gc['ok'])return g0['error']('Failed\x20to\x20fetch\x20TikTok\x20page.\x20Status:\x20'+gc[hs(0x218)]),[];let gd=(await gc['text']())['split']('<script\x20id=\x22__UNIVERSAL_DATA_FOR_REHYDRATION__\x22\x20type=\x22application/json\x22>')[0x1]?.['split']('</script>')[0x0];if(!gd)return g0['error']('Could\x20not\x20find\x20target\x20script\x20tag.\x20TikTok\x20might\x20have\x20updated\x20their\x20page\x20structure.'),[];let ge;try{ge=JSON['parse'](gd);}catch(gi){return g0['error']('Failed\x20to\x20parse\x20TikTok\x20page\x20JSON',gi,{'url':gb}),[];}let gf=ge['__DEFAULT_SCOPE__']?.['webapp.video-detail'],gg=gf?.['itemInfo']?.['itemStruct'];if(!gg)return g0['error']('Could\x20not\x20find\x20video\x20data\x20in\x20the\x20JSON\x20payload.\x20The\x20content\x20might\x20be\x20unavailable\x20or\x20the\x20structure\x20has\x20changed.'),gf?.[hs(0x2fc)]&&g0['error']('Error\x20'+gf['statusCode']+':\x20'+gf['statusMsg']),[];let gh=gg[hs(0x302)]?.['playAddr'];return gh?[{'type':'video','title':gg['desc']||'TikTok\x20Video','input':new g9({'source':new ga(gh,{'requestInit':{'headers':{'Referer':hs(0x271),'Cookie':g4['cookie']}}})})}]:(g0['error']('Could\x20not\x20find\x20a\x20video\x20URL\x20(playAddr)\x20in\x20the\x20JSON\x20payload.'),[]);}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'TikTok','tag':'TT','icon':h9(0x2bc),'permissions':[],'matches':['https://tiktok.com/*','https://*.tiktok.com/*']},'pkg':{'name':h9(0x20f),'version':'0.0.2','private':!0x0,'keywords':['social-networks'],'homepage':'https://www.tiktok.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'tiktok.ts'}},'virtualroom':{'create':fU=>{let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const ht=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gb=>gb);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7[ht(0x232)],g7['ask'],g7[ht(0x20c)];let g9=g7['Input'],ga=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7[ht(0x278)],g7['MP3'],fV['exports']=g8({async 'resolveEntries'(gb){const hu=ht;let gc=new URL(gb)['searchParams']['get']('recordId');if(!gc)return g0['error']('Could\x20not\x20extract\x20VirtualRoom\x20recordId.'),[];let gd=await fX('https://mv1.virtualroom.ru/vr/player/records/'+gc+'/info')['then'](gg=>gg['ok']?gg['json']():null)['catch'](()=>null),ge=await fX('https://mv1.virtualroom.ru/vr/player/records/'+gc+'/events')['then'](gg=>gg['ok']?gg['json']():null)['catch'](()=>null),gf=gd?.['data']?.['roomParameters']?.['name']??'VirtualRoom';return(ge?.[hu(0x2dd)]?.['translations']??[])['filter'](gg=>!!gg['url'])['map'](gg=>({'title':[gf,gg['type'],gg['source'],gg['start']]['filter'](Boolean)['join']('\x20'),'input':new g9({'source':new ga(gg['url'])})}));}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':h9(0x2a8),'icon':'https://sun9-50.userapi.com/impg/rY5N7sdA93TFdjkeYqPTnPIjvCJ0rALo_V7V8g/zLAaAv0PpvY.jpg?size=400x400&quality=95&sign=5ddcd6358131b204b8619cb8eeff943f&type=album','matches':['https://virtualroom.ru/*','https://*.virtualroom.ru/*']},'pkg':{'name':'virtualroom','version':'0.0.7','private':!0x0,'keywords':['videotelephony'],'homepage':'https://virtualroom.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':h9(0x223),'main':'virtualroom.ts'}},'vk':{'create':fU=>{const hy=h9;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hv=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gf=>gf);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7[hv(0x19d)],g7['notify'],g7['confirm'],g7['ask'],g7['utils'];let g9=g7['Input'],ga=g7[hv(0x25a)];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'];let gb=[hv(0x2a7),'1440','1080','720','480','360','240','144'],gc=gf=>{let gg=gf['match'](/video-(\d+)_(\d+)/);return gg?{'ownerId':gg[0x1],'videoId':gg[0x2]}:null;},gd=gf=>{const hw=hv;if(!gf)return null;for(let gg of gf)if(Array[hw(0x295)](gg)){for(let gh of gg)if(gh&&typeof gh=='object'&&'player'in gh)return gh;}return null;},ge=(gf,gg)=>{let gh=gg['videoQuality']?.['replace']('p','')['trim'](),gi=gb['filter'](gj=>!!gf['url'+gj]);return gi['length']?gh&&gi['includes'](gh)?gh:gi[0x0]:null;};fV['exports']=g8({async 'resolveEntries'(gf,gg){const hx=hv;let gh=gc(gf);if(!gh)return g0['error']('Could\x20not\x20extract\x20VK\x20video\x20identifiers'),[];let gi=await fX('https://vkvideo.ru/al_video.php?act=show',{'method':'POST','headers':{'content-type':'application/x-www-form-urlencoded;\x20charset=utf-8','accept':'*/*','accept-language':'ru-RU,ru;q=0.9','sec-ch-ua':'\x22Chromium\x22;v=\x22130\x22,\x20\x22Google\x20Chrome\x22;v=\x22130\x22,\x20\x22Not?A_Brand\x22;v=\x2299\x22','sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'\x22macOS\x22','sec-fetch-dest':'empty','sec-fetch-mode':'cors','sec-fetch-site':'same-origin','x-requested-with':'XMLHttpRequest','Referer':gf,'Referrer-Policy':'strict-origin-when-cross-origin'},'body':new URLSearchParams({'al':'1','autoplay':'1','claim':'','force_no_repeat':'true','is_video_page':'true','list':'','module':'direct','t':'','video':'-'+gh['ownerId']+'_'+gh['videoId']})['toString']()});if(!gi['ok'])throw Error('VK\x20request\x20failed:\x20'+gi['status']+'\x20'+gi['statusText']);let gj=gd((await gi['json']())['payload']),gk=gj?.['player']?.['params'],gl=gk&&gk['length']>0x0?gk[0x0]:void 0x0;if(!gj||!gl)return g0[hx(0x1be)]('Could\x20not\x20find\x20VK\x20player\x20payload'),[];if(gj['mvData']?.['is_active_live']===0x1||gj['mvData']?.['is_active_live']==='1')return g0['error']('Live\x20videos\x20are\x20not\x20supported'),[];let gm=ge(gl,gg),gn=gm?gl['url'+gm]:void 0x0,go=gl['dash_sep']||gn;return go?[{'type':'video','title':[gl['md_title']?.['trim'](),gl['md_author']?.['trim']()]['filter'](Boolean)['join']('\x20'),'input':new g9({'source':new ga(go,{'requestInit':{'headers':{'Referer':gf,'Cookie':g4['cookie']}}})})}]:(g0['error'](hx(0x1e2)),[]);}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU['document'],fU['navigator'],fU['window']),fV[hy(0x1d3)][hy(0x1ef)]||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'VK','icon':'https://static.rustore.ru/imgproxy/kSjDiz_MKxD_jzwgEqqaIjQZTE-NEP1Xt8HtJT7EU4s/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjAyNzgyMzI5NS9jb250ZW50L0lDT04vOTc0ODYwMTgtNTc4NS00MjRkLTljYWItNGZlNDk2ZDI3Yzc2LnBuZw==.webp','matches':['https://vk.com/*','https://*.vk.com/*','https://vkvideo.ru/*','https://*.vkvideo.ru/*']},'pkg':{'name':'vk','version':'0.0.8','private':!0x0,'keywords':['video-hostings'],'homepage':'https://vkvideo.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':h9(0x300)}],'type':'module','main':'vk.ts'}},'weibo':{'create':fU=>{const hB=h9;let fV={'exports':{}};return((fW,fX,fY,fZ,g0,g2,g3,g4,g5,g6)=>{const hz=b;let g7=fW??Streamyx??{};g7&&(g7['defineExtension']||=gc=>gc);let g8=g7['defineExtension'];g7['version'],g7['sleep'],g7['input'],g7['prompt'],g7['notify'],g7['confirm'],g7[hz(0x289)];let g9=g7['utils'],ga=g7[hz(0x2fb)],gb=g7['UrlSource'];g7['ALL_FORMATS'],g7['DASH'],g7['DASH_FORMATS'],g7['HLS'],g7['HLS_FORMATS'],g7['MP4'],g7['MP3'],fV[hz(0x1d3)]=g8({async 'resolveEntries'(gc){const hA=hz;let gd=g9['execUrlPatterns'](gc,['/:userId(\x5cd+)/:bid','/detail/:mid'],['https://weibo.com/',hA(0x260)]),ge=gd['pathname']['bid']||gd['pathname'][hA(0x210)];if(!ge)return[];let gf=await fX('https://m.weibo.cn/statuses/show?id='+ge,{'credentials':hA(0x21d),'referrer':hA(0x219)+(gd['pathname']['bid']??ge)+'?jumpfrom=weibocom','method':'GET','mode':'cors'})['then'](gj=>gj['json']())['catch'](()=>null);if(!gf?.['data'])return g0['error']('Could\x20not\x20resolve\x20Weibo\x20post\x20metadata'),[];let gg=[],gh=gf['data']['pics'],gi=gf['data']['page_info'];if(gh?.['length']){for(let gj of gh[hA(0x2cd)](gk=>gk['type']==='video'||gk['type']==='livephoto'))gj['videoSrc']&&gg['push']({'type':'video','title':gj[hA(0x196)],'input':new ga({'source':new gb(gj['videoSrc'])})});}else{if(gi?.['type']==='video'){let gk=Object['values'](gi['urls']??{})[0x0],gl=gi['media_info']?.['stream_url_hd']||gi['media_info']?.['stream_url'],gm=gk||gl;gm&&gg['push']({'type':'video','title':gi['title']||gi['page_title'],'input':new ga({'source':new gb(gm)})});}}return gg;}});})(fU['Azot'],fU['fetch'],fU['localStorage'],fU['cookieStore'],fU['console'],fU['prompt'],fU['alert'],fU[hB(0x252)],fU['navigator'],fU['window']),fV['exports']['default']||fV['exports'];},'manifest':{'manifestVersion':0x1,'name':'Weibo','icon':h9(0x1ca),'matches':['https://weibo.com/*','https://*.weibo.com/*','https://weibo.cn/*','https://*.weibo.cn/*']},'pkg':{'name':'weibo','version':'0.0.6','private':!0x0,'keywords':['social-networks'],'homepage':'https://weibo.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'weibo.ts'}}};}),bW=a8(bV(),0x1);const bX=fS=>({'name':fS['name'],'source':fS['source'],'dir':fS['dir'],'path':fS['path'],'package':fS['package'],'manifest':fS['manifest'],'installedAt':fS['installedAt']||new Date()['toISOString']()});var bY=class gw extends EventEmitter{['extensions']=new Map();['extensionDirs'];[gz(0x1f1)];[gz(0x2b2)]=[];constructor({dirs:fS,indexPath:fT}={}){const hC=gz;super(),this[hC(0x297)]=fS??[process['cwd']()],this['indexPath']=fT??M[hC(0x2b6)](process['cwd'](),'index.json');}async[gz(0x305)](){return await this['ensureValidIndexPath'](),await this['loadInfo'](),this;}async['loadInfo'](){return this['infoList']=await aF(this['indexPath'])['catch'](()=>[]),this['infoList'];}async['saveInfo'](){return await this['ensureValidIndexPath'](),await aG(this['indexPath'],this['infoList']);}async['ensureValidIndexPath'](){const hD=gz;(await Q['stat'](this['indexPath'])[hD(0x1a6)](()=>null))?.['isDirectory']()&&(C['warn']('Invalid\x20extensions\x20index\x20path\x20repaired:\x20'+this['indexPath']),await aC(this['indexPath']),await Q['writeFile'](this['indexPath'],'[]','utf8'));}static async['getAvailableExtensions'](){try{return(await bC['getExtensions'](bJ['accessToken'],AbortSignal['timeout'](0x1f40)))['data'];}catch(fS){return C['warn']('Failed\x20to\x20fetch\x20extensions\x20catalog:\x20'+(fS instanceof Error?fS['message']:String(fS))),[];}}async['discover'](){for(let fS of this['extensionDirs']){C['debug']('Loading\x20extensions\x20from\x20'+fS);let fT=await Q['readdir'](fS,{'withFileTypes':!0x0})['catch'](()=>[]);for(let fU of fT)if(fU['isDirectory']()){let fV=M['join'](fS,fU['name']);if(await Q['readdir'](fV)['then'](fW=>fW['filter'](fX=>!fX['startsWith']('.')))['then'](fW=>!fW['length']))continue;await this['loadExtension'](fV);}}for(let fW of this['infoList'])this['extensionDirs']['some'](fX=>fW['dir']?.['includes'](fX))||!fW['dir']||(C['debug']('Loading\x20dev\x20extension\x20from\x20'+fW['dir']),await this['loadExtension'](fW['dir']));}async #e(fS,fT){const fU=await Q['readFile'](fS,'utf8'),{Azot:fV,fetch:fW,console:fX,localStorage:fY,cookieStore:fZ,window:g0,document:g2,navigator:g3}=fT,g4={'exports':{}};eval('(()\x20=>\x20{'+fU+'})();');const g5=g4['exports'];return{'exports':g5,'context':fT};}async['prepareContext'](fS,fT){let fU=F({'name':fS,'dir':K,'title':fT});return await fU['cookieStore']['import'](M['join'](K,fS,'cookies.txt')),fU;}async[gz(0x2e5)](fS,fT){const hE=gz;let fU=fT['name'],fV=b3(fT),fW=await this['prepareContext'](fU,fV),fX=await A(fS,{'dirname':fT[hE(0x2d8)],'context':fW});if(fX)return fX['exports']='default'in fX[hE(0x1d3)]?fX['exports']['default']:fX['exports'],fX;}async['loadCoreExtensions'](){const hF=gz;let fS=Object['keys'](bW[hF(0x1ef)]);C['debug'](hF(0x2d9)+fS['length']+'\x20built-in\x20extensions:\x20'+fS['join'](',\x20'));for(let fT of Object['values'](bW['default'])){let fU=fT['pkg']['name'],fV=b1({'manifest':fT[hF(0x22c)],'packageJson':fT['pkg'],'fallbackName':fU}),fW=fV['name'];try{let fX=await this['prepareContext'](fU,fW),fY={'exports':fT['create'](fX),'package':fT['pkg'],'manifest':fV,'context':fX};this['validate'](fY),this['extensions']['set'](fU,fY),this['emit']('loaded',fU);}catch(fZ){C['debug'](fZ instanceof Error?fZ['message']:String(fZ)),this['emit']('error',fZ,fU);}}}async['loadExtension'](fS){const hG=gz;try{C['debug']('Loading\x20extension\x20from\x20'+fS);let fT=await bj(fS)['catch'](fW=>C['error'](fW));if(!fT)return;fT['package']['dir']=fT['dir'];let fU=await this['loadScript'](fT['path'],fT);if(!fU)return;let fV={'package':fT['package'],'manifest':fT[hG(0x22c)],'exports':fU['exports'],'context':fU['context']};this[hG(0x286)](fV),this['extensions'][hG(0x227)](fT['package']['name'],fV),this['emit']('loaded',fT['package']['name']);}catch(fW){this['emit']('error',fW,fS);}}['validate'](fS){const hH=gz;if(typeof fS!='object'||!fS||!ba(fS['exports']))throw Error('Invalid\x20extension\x20interface:\x20'+fS['package'][hH(0x231)]);}['getExtension'](fS){const hI=gz;return this['extensions']['get'](fS)??Array['from'](this['extensions']['values']())[hI(0x2aa)](fT=>fT['package'][hI(0x231)]===fS)??null;}async['getExtensionForUrl'](fS){const hJ=gz;let fT;try{fT=new URL(fS);}catch(fU){return C['debug']('Invalid\x20extension\x20URL:\x20'+fS),C['debug'](fU instanceof Error?fU['message']:String(fU)),null;}for(let fV of this['extensions'][hJ(0x2db)]()){let fW=null,fX=fV['exports']['canHandle'],fY=fT['hostname']['includes'](fV['package']['name']);if(fW=b6(fV)?b5(fV,fT):typeof fX=='function'?await fX(fS):typeof fX=='string'?new URLPattern(fX)[hJ(0x27d)](fS):fY,fW)return fV;}return null;}async['install'](fS){let fT=await gw['getAvailableExtensions'](),fU=[];for(let fV of fS){let fW=await stat(fV)['then'](fZ=>fZ['isDirectory']())['catch'](()=>!0x1)?fV:await aU(fV,fT);if(!fW)throw aL(aI['SOURCE_NOT_FOUND'],'Extension\x20source\x20not\x20found:\x20'+fV,{'source':fV});let fX=await bk(fW,fV);if(!fX)throw aL(aI['IMPORT_INVALID'],'Extension\x20import\x20failed:\x20'+fV,{'source':fV,'dir':fW});fU['push'](fX);let fY=this['infoList']['find'](({name:fZ})=>fZ===fX['name']);if(fY){let fZ=fY['source'];fZ!==fX['source']&&await aC(fZ);let g0=fY['dir']?this.#t(fY['dir']):null,g2=fX['dir']?this.#t(fX['dir']):null;g0&&g0!==g2&&await aC(g0),fY['installedAt']=new Date()['toISOString'](),Object['assign'](fY,bX(fX)),C['info']('Extension\x20'+fX['name']+'\x20updated');}else this['infoList']['push'](bX(fX)),C['info']('Extension\x20'+fX['name']+'\x20added');}if(await this['saveInfo'](),fU['length']){for(let g3 of fU)this['extensions']['set'](g3['name'],g3);}}#t(fS){let fT=M['parse'](fS);return fT['dir']===k?fS:fT['dir'];}async['uninstall'](fS){const hK=gz;for(let fT of fS){let fU=this['infoList'][hK(0x2aa)](fX=>fX['name']===fT);if(!fU){C['error']('Extension\x20'+fT+'\x20not\x20found');return;}let fV=fU['dir']??'',fW=fV?.['includes'](k);await aA(fV)?(fW&&await aC(this.#t(fV)),this['infoList']=this['infoList']['filter'](fX=>fX['name']!==fT),C['info']('Extension\x20'+fT+'\x20removed'),this['extensions']['delete'](fT)):C['warn']('Extension\x20'+fT+'\x20directory\x20not\x20found:\x20'+fV);}await this['saveInfo']();}async['importCookies'](fS,fT){let fU=this['getExtension'](fS);if(!fU)throw Error('Extension\x20'+fS+'\x20not\x20found');return await fU['context']['cookieStore']['import'](fT,{'removeSource':!0x1});}async['login'](fS,fT={}){let fU=this['getExtension'](fS);fU&&await bd(fU,fT);}async['logout'](fS){const hL=gz;for(let fT of fS){let fU=this['getExtension'](fT);if(!fU)return;C['info'](hL(0x2af)),await be(fU),C['debug']('Clearing\x20localStorage...'),fU['context'][hL(0x1ee)][hL(0x2fa)](),C['debug'](hL(0x256));let fV=await fU['context'][hL(0x2bd)]['getAll']();for(let fW of fV)await fU['context']['cookieStore']['delete'](fW);C['info']('Logged\x20out\x20from\x20extension\x20'+fT);}}['list'](){const hM=gz;return Array['from'](this['extensions'][hM(0x2db)]())['map'](fS=>({'name':fS['package']['name'],'version':fS['package']['version'],'description':fS['package']['description'],'manifest':fS[hM(0x22c)],'package':fS['package']}));}};const bZ=(fS,fT)=>!fS||'payload'in fS||'keys'in fS?fS:{...fS,'headers':{...fS['headers'],...fT?.['context']['http']['headers']}},c0=async(fS,fT)=>{if(!fT)return fS;let fU=await fS['clone']()['arrayBuffer'](),fV=Buffer['from'](fU)['toString']('base64'),fW=fT['replace']('{{challenge}}',fV);return new Request(fS['url'],{'method':fS['method'],'headers':fS['headers'],'body':fW});},c1=async fS=>{const hN=gz;let fT=await fS['clone']()['arrayBuffer']();if(fT[0x0]===0x7b){let fU=null;try{fU=JSON['parse'](Buffer['from'](fT)['toString']('utf8'));}catch(fV){C['error']('Can\x27t\x20parse\x20license\x20response\x20as\x20JSON'),C['debug'](fV['message']),C['debug'](hN(0x27c)+Buffer[hN(0x1a0)](fT)['toString']('base64'));}if(!fU)return fS;try{let fW='CAIS',fX=fW+Buffer[hN(0x1a0)](fT)[hN(0x303)](hN(0x2ef))['split']('\x22'+fW)[0x1]['split']('\x22')[0x0],fY=Buffer[hN(0x1a0)](fX,'base64');return new Response(fY,{'status':fS['status'],'headers':fS['headers']});}catch{C['error']('Can\x27t\x20recognize\x20license\x20response'),C['error']('Response:\x20'+JSON['stringify'](fU));}}return fS;},c2=fS=>typeof fS=='string'?[{'sources':[{'url':fS}]}]:Array['isArray'](fS)&&typeof fS[0x0]=='string'?fS['map'](fT=>({'sources':[{'url':fT}]})):Array['isArray'](fS)?fS:fS&&typeof fS=='object'?[fS]:[],c3=fS=>fS['sources']??fS['streams']??[],c4=(fS,fT)=>({'id':fS['id'],'title':fS['title'],'tag':b4(fT),'seasonNumber':fS['seasonNumber']??fS['season'],'episodeNumber':fS['episodeNumber']??fS['episode'],'episodeTitle':fS['episodeTitle']}),c5=async(fS,fT,fU)=>{const hO=gz;let fV=bb(fU);if(typeof fV['getMediaInfo']=='function'){let fY=c2(await fV['getMediaInfo'](fS,fT));if(!fY['length'])return C['info']('No\x20metadata\x20found'),[];let fZ=[];for(let g0 of fY){if(typeof fV['refreshMediaInfo']==hO(0x2e0)){let g3=await fV['refreshMediaInfo'](g0,fT);g3&&typeof g3=='object'&&Object[hO(0x2b9)](g0,g3);}let g2=c3(g0);for(let g4 of g2){let g5=typeof g4=='string'?{'url':g4}:g4;fZ['push']({'source':{'url':g5['url'],'headers':g5['headers'],'drm':g5['drm']&&!Array['isArray'](g5['drm'])&&typeof g5['drm']=='object'?{'server':g5['drm']['server']}:void 0x0},'metadata':c4(g0,fU),'drm':g5['drm']&&!Array[hO(0x295)](g5['drm'])&&typeof g5['drm']=='object'?{'server':g5[hO(0x2d6)]['server']}:void 0x0});}}return C['info']('Fetching\x20metadata\x20finished'),fZ;}let fW=await fV['fetchContentMetadata']?.(fS,fT);if(!fW?.['length'])return C['info']('No\x20metadata\x20found'),[];let fX=[];for(let g6 of fW){let g7={...g6},g8;if(!g7['source']&&fU['exports']['fetchContentSource']&&g7['id']){let gc=await fU['exports'][hO(0x1b7)](g7['id'],fT);gc&&(g7['source']=gc);}if(!g7['source']?.['url']){C['error']('Can\x27t\x20find\x20content\x20source');continue;}g7['source']['drm']&&'payload'in g7['source']['drm']&&fU['exports']['fetchContentDrm']&&(g8=g7['source']['drm']['payload'],g7['source']['drm']=void 0x0);let {source:g9,...ga}=g7,gb=bZ(g7['source']['drm'],fU);g9[hO(0x2d6)]=gb,g9['headers']={...g9['headers'],...fU['context']['http']['headers']},fU[hO(0x1d3)]['tag']&&(ga['tag']=fU['exports']['tag']),fX['push']({'source':g9,'metadata':ga,'drm':gb,'drmPayload':g8});}return C['info']('Fetching\x20metadata\x20finished'),fX;},c6=async(fS,fT,fU)=>{const hP=gz;if(fS['drmPayload']&&fU?.['exports']['fetchContentDrm']){let fW=bZ(await fU['exports']['fetchContentDrm'](fS['drmPayload'],fT),fU);return fS['source']['drm']=fW,fS['drm']=fW,fW;}let fV=bZ(fS['source']['drm']??fS[hP(0x2d6)],fU);return fS['source']['drm']=fV,fS['drm']=fV,fV;},c7=fS=>{let fT=fS['template']?c0:void 0x0,fU=c1,fV=new D();return async({url:fW,data:fX})=>{const hQ=b;let fY=new Request(fW,{'body':Buffer['from'](fX),'method':'POST','headers':fS['headers']}),fZ=await fT?.(fY,fS['template'])||fY,g0=await fV['fetch'](fZ[hQ(0x1a3)],{'body':await fZ['arrayBuffer'](),'headers':fZ[hQ(0x2c8)],'method':fZ['method']}),g2=await fU?.(g0)||g0;return new Uint8Array(await g2['arrayBuffer']());};},c8=new Map(),c9=fS=>{if(!fS)return;let fT=Object['fromEntries'](new Headers(fS)['entries']());return Object['keys'](fT)['length']?fT:void 0x0;},ca=fS=>{let {input:fT,...fU}=fS;return fU;},cb=(fS,fT,fU)=>createHash(gz(0x274))[gz(0x1bf)](JSON['stringify']({'extension':fS['package']['name'],'url':fT,'id':fU['id']??null,'title':fU[gz(0x304)]??null,'season':fU['season']??null,'episode':fU['episode']??null}))['digest']('hex'),cc=(fS,fT)=>{const hR=gz;let fU=fS['source']??fS['_rootSource'],fV=fU?.['rootPath'];if(typeof fV!='string'||!fV)return fT??null;let fW=fU?.['_url']instanceof Request?fU['_url'][hR(0x2c8)]:void 0x0,fX=fU?.['_options']?.['requestInit']?.['headers'],fY={...c9(fW),...c9(fX)};return{...fT??{},'url':fV,'headers':Object['keys'](fY)['length']?fY:fT?.['headers']};},cd=(fS,fT)=>{let fU=fS['id']??fS['details']?.['id'];return{'id':fU==null?void 0x0:String(fU),'title':fS['title'],'tag':b4(fT),'seasonNumber':fS['season'],'episodeNumber':fS['episode'],'episodeTitle':fS['episodeTitle']};},ce=fS=>fS['length']?fS['length']===0x1?fS[0x0]:fS:null,cf=fS=>{const hS=gz;let fT;try{fT=new URL(fS);}catch{throw Error('Invalid\x20direct\x20media\x20URL:\x20'+fS);}let fU=fT['pathname']['replace'](/\/+$/,'')['split']('/')['filter'](Boolean)['pop'](),fV=fU?.['split']('.')['slice'](0x0,-0x1)['join']('.')||fU||fT[hS(0x1a8)]||'download';return{'source':{'url':fS},'metadata':{'title':fV}};},cg=async(fS,fT)=>{let fU=fT['proxy']||fT['proxyMeta'];fU&&(await fS['context']['http']['configure']({'proxyUrl':fU}),await u['configure']({'proxyUrl':fU}));},ch=async(fS,fT,fU)=>{const hT=gz;if(!fU){C['warn']('No\x20suitable\x20extension\x20available.\x20Downloading\x20as\x20a\x20direct\x20link...');let {source:fV,metadata:fW}=cf(fS);return fV['audioLanguage']=fT['languages']?.[0x0],fV['http2']=fT[hT(0x2bf)],{'source':fV,'metadata':fW};}if(await cg(fU,fT),await bc(fU),b9(fU)==='v2'){let fX=bb(fU);C['info']('Resolving\x20media\x20entries...');let fY=await fX['resolveEntries'](fS,fT);if(!fY?.['length'])return C['info']('No\x20metadata\x20found'),null;let fZ=fY['map'](g0=>{const hU=hT;let g2=g0,g3=ca(g0),g4=g0['input']?cb(fU,fS,g2):void 0x0;g4&&g0[hU(0x1a7)]&&c8[hU(0x227)](g4,g0['input']);let g5=g0[hU(0x1a7)]?cc(g0[hU(0x1a7)]):null;return{'source':g5??{'url':fS},'metadata':cd(g3,fU),'extension':{'api':'v2','entry':g3,'cacheKey':g4,'hasResolvedSource':!!g5}};});return C['info'](hT(0x22f)),ce(fZ);}return C['info']('Fetching\x20content\x20metadata...'),ce(await c5(fS,fT,fU));},ci=async({resource:fS,url:fT,options:fU,extension:fV})=>{const hV=gz;if(!fV||!fS['extension']||fS['extension'][hV(0x2c3)]!=='v2'||b9(fV)!=='v2')return{'source':fS['source']};await cg(fV,fU),await bc(fV);let fW=bb(fV),fX=fS['extension']['entry'],fY=fS['extension']['cacheKey']?c8[hV(0x26a)](fS['extension']['cacheKey']):void 0x0;if(!fY&&typeof fW['resolveMedia']=='function'&&(fY=await fW['resolveMedia'](fT,fU,fX)??void 0x0,fY&&fS['extension']['cacheKey']&&c8['set'](fS['extension']['cacheKey'],fY)),!fY){if(fS['extension'][hV(0x226)])return{'source':fS['source'],'entry':fX};throw Error('Extension\x20'+fV['package']['name']+'\x20could\x20not\x20materialize\x20media\x20entry.\x20Provide\x20resolveMedia()\x20or\x20an\x20inline\x20input\x20rooted\x20in\x20UrlSource.');}return{'source':cc(fY,fS['source'])??fS['source'],'input':fY,'entry':fX};},cj=async(fS,fT,fU)=>c6(fS,fT,fU);var ck=class{#e=[];#t=new Set();#n=new Map();#r=new Map();#i=new Set();get['activeRunCount'](){return this.#r['size'];}get['queuedCount'](){const hW=gz;return this.#e[hW(0x255)];}['getActiveRun'](fS){return this.#r['get'](fS);}['setActiveRun'](fS,fT){this.#r['set'](fS,fT);}['deleteActiveRun'](fS){const hX=gz;this.#r[hX(0x27a)](fS);}['getActiveJob'](fS){return this.#n['get'](fS);}['setActiveJob'](fS){this.#n['set'](fS['id'],fS);}['deleteActiveJob'](fS){this.#n['delete'](fS);}['queueResumeAfterStop'](fS){this.#i['add'](fS);}['consumeResumeAfterStop'](fS){let fT=this.#i['has'](fS);return fT&&this.#i['delete'](fS),fT;}['enqueue'](fS){this.#t['has'](fS['id'])||this.#r['has'](fS['id'])||(this.#e['push'](fS['id']),this.#t['add'](fS['id']));}['dequeue'](fS){if(!this.#t['has'](fS))return!0x1;let fT=this.#e['indexOf'](fS);return fT!==-0x1&&this.#e['splice'](fT,0x1),this.#t['delete'](fS),!0x0;}['dequeueNext'](fS){for(;this.#e['length']>0x0;){let fT=this.#e['shift']();if(!fT)return;this.#t['delete'](fT);let fU=fS(fT);if(fU&&fU['status']==='queued')return fU;}}};const cl=['code','errno','syscall','address','port','host','hostname','path','type'],cm=fS=>typeof fS=='object'&&!!fS&&gz(0x218)in fS&&'statusText'in fS&&'url'in fS,cn=fS=>{let fT=[],fU=fS;for(let fV of cl){let fW=fU[fV];fW==null||fW===''||fT['push'](fV+'='+String(fW));}return fT;},co=(fS,fT=0x0)=>{const hY=gz;if(fT>0x3)return'[max-depth]';if(fS instanceof Error){let fU=cn(fS),fV='cause'in fS?fS['cause']:void 0x0,fW=[fS['name']+':\x20'+fS['message']];return fU['length']&&fW['push']('details='+fU['join'](',\x20')),fV!==void 0x0&&fV!==fS&&fW['push']('cause='+co(fV,fT+0x1)),fW['join']('\x20|\x20');}return cm(fS)?'Response\x20'+fS[hY(0x218)]+'\x20'+fS['statusText']+'\x20url='+fS[hY(0x1a3)]:inspect(fS,{'depth':0x2,'breakLength':0x1/0x0});},cp=(fS,fT)=>{const hZ=gz;C[hZ(0x2a4)](fS+':\x20'+co(fT)),fT instanceof Error&&fT['stack']&&C['debug'](fT['stack']);},cq=(fS,fT)=>{const i0=gz;let fU=fT+'\x20∙\x20';return fS['type']==='subtitle'?fU+='SUBTITLES':fU+=fS['type']?.['toUpperCase'](),fS['type']==='video'&&(fS['width']&&(fU+='\x20∙\x20'+fS['width']+'x'+fS[i0(0x277)]),fS['bitrate']&&(fU+='\x20∙\x20'+Math['round'](fS['bitrate']/0x3e8)+'\x20KiB/s')),fS['type']==='audio'&&(fS['languageCode']&&(fU+='\x20∙\x20'+fS['languageCode']['toUpperCase']()),fS['name']&&(fU+='\x20('+fS['name']+')'),fS['sampleRate']&&(fU+='\x20∙\x20'+fS['sampleRate']+'\x20kHz'),fS['bitrate']&&(fU+='\x20∙\x20'+Math[i0(0x28d)](fS['bitrate']/0x3e8)+'\x20KiB/s')),fS[i0(0x1c1)]==='subtitle'&&(fS['languageCode']&&(fU+=i0(0x1e3)+fS['languageCode']['toUpperCase']()),fS['name']&&(fU+='\x20('+fS[i0(0x231)]+')'),fS['forced']&&(fU+='\x20FORCED')),fU;},cr=fS=>fS['id'],cs=fS=>{const i1=gz;let fT=new Map();for(let fU of fS){let fV=cr(fU),fW=fT['get'](fV);if(fW){fW['push'](fU);continue;}fT['set'](fV,[fU]);}return Array['from'](fT['entries']())['filter'](([,fX])=>fX[i1(0x255)]>0x1);},ct=fS=>{const i2=gz;let fT=cs(fS);if(!fT['length'])return;let fU=fT['map'](([fV,fW])=>fV+'\x20('+fW['length']+i2(0x2c0))['join'](',\x20');throw Object['assign'](Error('Duplicate\x20tracks\x20selected:\x20'+fU),{'code':'DUPLICATE_TRACKS_SELECTED'});},cu=fS=>{if(!fS||typeof fS!='object'||!('code'in fS))return;let fT=fS['code'];return typeof fT=='string'?fT:void 0x0;};var cv=class extends Error{['code'];constructor(fS,fT=fS,fU){super(fT,fU),this['name']='DownloaderError',this['code']=fS;}};const cw=(fS,fT='DOWNLOAD_FAILED')=>{const i3=gz;if(fS instanceof cv||fS instanceof Error&&fS['name']==='AbortError')return fS;if(fS instanceof Error){let fU=new cv(cu(fS)??fT,fS['message'],{'cause':fS});return fS['stack']&&(fU[i3(0x1e7)]=fS['stack']),fU;}return new cv(fT,typeof fS=='string'?fS:'Unknown\x20error');},cx=fS=>{const i4=gz;let fT=fS['replace'](/[<>:"/\\|?*\x00-\x1F]/g,'');fT=fT[i4(0x2e1)](/^[\s.]+|[\s.]+$/g,''),fT=fT['replace'](/\s+/g,'\x20');let fU=fT['lastIndexOf']('.'),fV=fU>0x0,fW=fV?fT['slice'](fU):'',fX=fV?fT[i4(0x288)](0x0,fU):fT;if(fW['length']>=0xff)fT=fT[i4(0x288)](0x0,0xff);else{let fZ=0xff-fW['length'];fX['length']>fZ&&(fX=fX['slice'](0x0,fZ)),fT=fX+fW;}let fY=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;if(fW['length']<0xff){let g0=fT['lastIndexOf']('.'),g2=g0>0x0;if(fW=g2?fT['slice'](g0):'',fX=g2?fT['slice'](0x0,g0):fT,fY['test'](fX)){let g3=0xff-fW['length'];fT=('_'+fX)['slice'](0x0,g3)+fW;}}return fT['length']===0x0?'untitled':fT;},cy=(fS,fT)=>Object['keys'](fT)[gz(0x1f0)]((fU,fV)=>{const i5=gz;let fW='{'+fV+'}',fX=fT[fV];if(!fX){let fY=RegExp('(?:\x5c.|^)\x5c{'+fV+'\x5c}(?=\x5c.|$)|\x5c{'+fV+i5(0x2eb)+fV+'\x5c}','g');return fU[i5(0x2e1)](fY,(fZ,g0)=>'')[i5(0x22b)](i5(0x206),i5(0x1fb));}return fU['replaceAll'](fW,fX);},fS)['replaceAll']('\x20\x20','\x20'),cz=fS=>typeof fS=='string'&&fS['trim']()||gz(0x2c6),cA=fS=>{const i6=gz;let fT='seasonNumber'in fS?''+fS['seasonNumber']:'',fU='episodeNumber'in fS?''+fS['episodeNumber']:'',fV=fT?'S'+fT:'',fW=fU?'E'+fU:'',fX=fT&&fU?fV+':'+fW:'',fY='episodeTitle'in fS&&fS['episodeTitle']?.[i6(0x270)]()?'\x22'+fS['episodeTitle']+'\x22':'';return{'title':((fS['title']??'')+'\x20'+fX+'\x20'+fY)['trim']()};},cB=({settings:fS,options:fT,source:fU,meta:fV,allTracks:fW})=>{const i7=gz;let fX=fV['title'],fY=fV['tag'],fZ='seasonNumber'in fV?fV['seasonNumber']:void 0x0,g0='episodeNumber'in fV?fV['episodeNumber']:void 0x0,g2=i7(0x29c)in fV?fV['episodeTitle']:'',g3=fW['find'](ga=>ga[i7(0x1c1)]==='video')?.['codec']??'',g4=fS['get']('downloadDir'),g5=fT['movieTemplate']||fS['get']('movieFilenameTemplate'),g6=fT['episodeTemplate']||fS['get']('seriesFilenameTemplate'),g7=cx(cy(g0?g6:g5,{'title':fX??'','s':fZ?fZ['toString']()['padStart'](0x2,'0'):'','e':g0?g0['toString']()['padStart'](0x2,'0'):'','quality':fT[i7(0x25b)]??'','codec':g3,'tag':fY??'','episodeTitle':g2??'','audioType':fU['audioType']?fU['audioType']['toUpperCase']():'','format':'WEB-DL'}))+'.'+cz(fT['format']||fS['get']('videoContainerFormat')),g8=fT['outputPath']||join(g4,g7),g9=parse(g8);return{'downloadDir':g4,'outputPath':g8,'resolvedFilenameWithoutExtension':g9['name'],'filenameWithExtension':g9['base'],'outputDirectory':g9['dir']||g4,'downloadMetadata':cA(fV)};},cC=async(fS,fT,fU)=>fU??open(fS,fT),cD=fS=>{const i8=gz;let fT=null;return new StreamSource({'getSize':async()=>(fT=await cC(fS,'r',fT),(await fT['stat']())[i8(0x243)]),'read':async(fU,fV)=>{fT=await cC(fS,'r',fT);let fW=new Uint8Array(fV-fU);return await fT['read'](fW,0x0,fV-fU,fU),fW;},'dispose':async()=>{let fU=fT;fT=null,await fU?.['close']();},'prefetchProfile':i8(0x1f4)});},cE=fS=>{let fT=null;return new StreamTarget(new WritableStream({'start':async()=>{fT=await cC(fS,'w',fT);},'write':async fU=>{if(!fT)throw Error('MediaBunny\x20output\x20handle\x20was\x20not\x20initialized\x20for\x20'+fS);await fT['write'](fU['data'],0x0,fU['data']['byteLength'],fU['position']);},'close':async()=>{let fU=fT;fT=null,await fU?.['close']();},'abort':async()=>{let fU=fT;fT=null,await fU?.['close']();}}),{'chunked':!0x0});},cF=async(fS,fT)=>{const i9=gz;let fU=new V({'formats':U,'source':fS[i9(0x2ae)]('https')?new W(fS,{'requestInit':{'headers':fT}}):cD(fS)});return{'tracks':await fU['getTracks'](),'primaryVideoTrack':await fU['getPrimaryVideoTrack'](),'primaryAudioTrack':await fU['getPrimaryAudioTrack']()};},cG=[...DASH_FORMATS,...HLS_FORMATS],cH=new Set(['authorization','cookie','set-cookie','api-key']),cI=fS=>Object['fromEntries'](Object['keys'](fS)['map'](fT=>[fT,cH['has'](fT['toLowerCase']())?'[REDACTED]':fS[fT]])),cJ=fS=>fS==='mpd'?DASH_FORMATS:fS==='m3u8'?HLS_FORMATS:cG,cK=({http:fS,source:fT,detection:fU})=>(C['debug']('Fetching\x20manifest...'),C['debug'](fT['url']),fT['headers']&&C['debug'](JSON['stringify'](cI(fT['headers']))),new Input({'source':new UrlSource(fT['url'],{'requestInit':{'headers':fT[gz(0x2c8)]},'fetchFn':fS['fetch']['bind'](fS)}),'formats':cJ(fU['kind'])})),cL=fS=>createHash('sha1')[gz(0x1bf)](fS)['digest']('hex'),cM=(fS,fT)=>{if(fS)switch(fS){case'aar':case'abk':return'rus';case'ave':return'eng';case'zu':return fT?.['includes']('start.film')?'ru':'zu';default:return fS;}},cN=({origin:fS,type:fT,sourceUrl:fU,languageCode:fV,name:fW,codec:fX})=>fS+':'+fT+':'+cL([fU??'',fV??'',fW??'',fX??'']['join']('|')),cO=async(fS,fT)=>{const ia=gz;let [fU,fV,fW,fX,fY,fZ]=await Promise['all']([fS['getCodec'](),fS['getBitrate'](),fS['getLanguageCode'](),fS['getName'](),fS['getDisposition'](),fS['hasOnlyKeyPackets']()]),g0={'id':ia(0x2df)+fS['type']+':'+fS['id'],'origin':'manifest','type':fS['type'],'codec':fU,'bitrate':fV,'languageCode':cM(fW,fT),'name':fX,'forced':fY['forced'],'hearingImpaired':fY['hearingImpaired'],'visuallyImpaired':fY['visuallyImpaired'],'isDefault':fY['default'],'isIFrameOnly':fZ,'inputTrack':fS};if(fS['isVideoTrack']()){let [g2,g3]=await Promise['all']([fS['getDisplayWidth'](),fS['getDisplayHeight']()]);g0['width']=g2,g0['height']=g3;}if(fS['isAudioTrack']()){let [g4,g5]=await Promise[ia(0x245)]([fS[ia(0x299)](),fS['getSampleRate']()]);g0['numberOfChannels']=g4,g0[ia(0x249)]=g5;}return g0;},cP=async fS=>fS['segments']?fS['segments']:fS['inputTrack']?(fS['segmentsPromise']??=fS['inputTrack']['getSegments']()['then'](fT=>(fS['segments']=fT,fS['segmentCount']=fT[gz(0x255)],fT)),fS['segmentsPromise']):(fS['segments']=[],fS['segmentCount']=0x0,fS['segments']),cQ=(fS,fT)=>{let fU=fS['filter'](fV=>fT['some'](fW=>fW===fV['codec']));return fU['length']?fU:fS['toSorted']((fV,fW)=>(fW['bitrate']??0x0)-(fV['bitrate']??0x0));},cR=(fS,fT)=>{const ib=gz;let fU=fT?parseInt(String(fT),0xa)*0x10/0x9:void 0x0,fV=fS['toSorted']((fY,fZ)=>(fZ['bitrate']??0x0)-(fY['bitrate']??0x0));if(!fT)return fV;let fW=fS['filter'](fY=>Number(fY[ib(0x277)])===Number(fT));if(fW['length'])return fW;let fX=fS['filter'](fY=>Number(fY['width'])===Number(fU));return fX['length']?fX:fV;},cS=(fS,fT)=>fS['filter'](fU=>fU['numberOfChannels']===Number(fT)),cT=fS=>fS?.['trim']()['toLowerCase']()??'',cU=fS=>cT(fS)['slice'](0x0,0x2),cV=fS=>cT(fS)||'und',cW=(fS,fT)=>{let fU=cT(fS),fV=cT(fT);return!fU||!fV?!0x1:fU===fV||fU['startsWith'](fV+'-')?!0x0:cU(fU)===cU(fV);},cX=fS=>Array['from'](new Map(fS['map'](fT=>cT(fT))['filter'](Boolean)['map'](fT=>[cU(fT),fT]))['values']()),cY=(fS,fT)=>{let fU=new Map();for(let fV of fS){let fW=cV(fV['languageCode']),fX=fU['get'](fW);if(!fX){fU['set'](fW,[fV]);continue;}fX['length']<fT&&fX['push'](fV);}return Array['from'](fU['values']())['flat']();},cZ=(fS,fT,fU=0x1)=>{const ic=gz;let fV=fS['toSorted']((fZ,g0)=>(g0[ic(0x284)]??0x0)-(fZ['bitrate']??0x0)),fW=cX(fT),fX=[];for(let fZ of fW){let g0=fV[ic(0x2cd)](g2=>cW(g2['languageCode'],fZ));g0['length']&&fX['push'](...cY(g0,fU));}let fY=cX(fS[ic(0x19a)](g2=>g2['languageCode']||'und'));if(!fX['length'])for(let g2 of fY){let g3=fV['filter'](g4=>cW(g4['languageCode']??ic(0x23d),g2));g3['length']&&fX['push'](...cY(g3,fU));}return fX;},d0=(fS,fT)=>{const id=gz;if(!fT?.['inputTrack'])return fS;let fU=fT[id(0x22a)],fV=fS['filter'](fW=>fW['inputTrack']?fW['inputTrack']['canBePairedWith'](fU):!0x0);return fV['length']?fV:fS;},d1=fS=>(fS??0x0)/0x3e8,d2=async fS=>{if(typeof fS['segmentCount']=='number')return fS['segmentCount']+'\x20Segments';if(!fS['inputTrack'])return'Direct';try{return(await cP(fS))['length']+'\x20Segments';}catch{return'?\x20Segments';}},d3=({videos:fS,audios:fT,subtitles:fU})=>({'videos':fS,'audios':fT,'subtitles':fU,'all':[...fS,...fT,...fU]});async function d4(fS,fT,fU){const ie=gz;let fV=fT['videoQuality'],fW=fS['filter'](g8=>g8['type']==='video'&&!g8['isIFrameOnly']),fX=fS['filter'](g8=>g8['type']===ie(0x220)),fY=fS['filter'](g8=>g8['type']==='subtitle');if(fT['select']){let g8=await Promise['all'](fW['map'](async(gg,gh)=>({'name':(gg['width']??'?')+'x'+(gg['height']??'?')+'\x20|\x20'+(d1(gg['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gg['codec']??'?')+'\x20|\x20'+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),g9=fW['length']?await checkbox({'message':'Select\x20video\x20streams','pageSize':0xc,'choices':g8,'loop':!0x1}):[],ga=fW[ie(0x2cd)](gg=>g9['includes'](gg['id'])),gb=await Promise['all'](fX[ie(0x19a)](async(gg,gh)=>({'name':''+(gg[ie(0x231)]?gg['name']+ie(0x19f):'')+(d1(gg['bitrate'])||'?')+'\x20Kbps\x20|\x20'+(gg['codec']?gg['codec']+'\x20|\x20':'')+(gg['languageCode']||'und')+'\x20|\x20'+(gg['numberOfChannels']??'?')+'CH\x20|\x20'+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),gc=fX[ie(0x255)]?await checkbox({'message':'Select\x20audio\x20streams','pageSize':0xc,'choices':gb,'loop':!0x1}):[],gd=fX['filter'](gg=>gc['includes'](gg['id'])),ge=await Promise[ie(0x245)](fY['map'](async(gg,gh)=>({'name':(gg['codec']??'?')+'\x20|\x20'+(gg['languageCode']||'und')+ie(0x19f)+await d2(gg),'value':gg['id'],'checked':gh===0x0}))),gf=fY['length']?await checkbox({'message':ie(0x285),'pageSize':0xc,'choices':ge,'loop':!0x1}):[];return d3({'videos':ga,'audios':gd,'subtitles':fY['filter'](gg=>gf['includes'](gg['id']))});}fT['videoCodecs']&&(fW=cQ(fW,fT['videoCodecs'])),fW=cR(fW,fV||NaN);let fZ=fW[0x0],g0=[...fT['languages']||[]],g2=fU['audioLanguage']?.['slice'](0x0,0x2);!g0['length']&&g2&&g0['push'](g2);let g3=d0(fX,fZ);fT['audioChannels']&&(g3=cS(g3,fT['audioChannels'])),fT['audioCodecs']&&(g3=cQ(g3,fT['audioCodecs']));let g4=cZ(g3,g0,0x1);g4['length']&&(g3=g4);let g5=g0['at'](-0x1),g6=g5?g3['map'](gg=>!gg['languageCode']||gg['languageCode']==='und'?{...gg,'languageCode':g5}:gg):g3,g7=fY['filter'](gg=>fT['subtitleLanguages']?.['length']?fT['subtitleLanguages']['some'](gh=>cW(gg['languageCode']||'und',gh)):!0x1);return d3({'videos':fT['skipVideo']||!fZ?[]:[fZ],'audios':fT['skipAudio']?[]:g6,'subtitles':fT['skipSubtitles']?[]:g7});}const d5=()=>({'videos':[],'audios':[],'subtitles':[],'all':[]}),d6={'aac':'aac','mp4a':gz(0x1b6),'mp4a.40.2':gz(0x1b6),'ac3':'ac3','ac-3':'ac3','eac3':'eac3','ec-3':'eac3','opus':gz(0x23c),'vorbis':'vorbis','flac':'flac'},d7=fS=>{if(!fS)return null;try{return new URL(fS);}catch{return null;}},d8=fS=>{const ig=gz;let fT=d7(fS);if(fT)try{return decodeURIComponent(fT['pathname']);}catch{return fT[ig(0x2d0)];}},d9=fS=>{const ih=gz;if(!fS)return'aac';let fT=fS['toLowerCase']();return d6[fT]??d6[fT[ih(0x2c7)]('.')[0x0]??'']??'aac';},da=(fS,fT)=>fS['filter'](fU=>fU['type']===fT)['length'],db=fS=>{const ii=gz;let fT='Extracted,\x20there\x20are\x20';if(fS['length']===0x0)fT+='no\x20tracks';else{fT+=fS['length']+'\x20tracks';let fU=da(fS,'video');fU&&(fT+=',\x20'+fU+'\x20video\x20tracks');let fV=da(fS,ii(0x220));fV&&(fT+=',\x20'+fV+'\x20audio\x20tracks');let fW=da(fS,'subtitle');fW&&(fT+=',\x20'+fW+'\x20subtitle\x20tracks');}C[ii(0x291)](fT);},dc=(fS,fT=[])=>{const ij=gz;let fU=[...fT];for(let fV of fS[ij(0x1cd)]??[]){let fW=d8(fV['url']),fX=cM(fV['language'],fS['url']);fU['some'](fY=>{let fZ=d8(fY['sourceUrl']);return!fW||!fZ?!0x1:fW===fZ;})||fU['push']({'id':cN({'origin':'external-subtitle','type':'subtitle','sourceUrl':fV['url'],'languageCode':fX,'name':fV['label']||fV['title'],'codec':fV['format']}),'origin':'external-subtitle','type':'subtitle','sourceUrl':fV['url'],'languageCode':fX,'codec':fV[ij(0x1cf)],'forced':fV['forced'],'name':fV['label']||fV['title']});}return fU;},dd=async({options:fS,source:fT,meta:fU,detection:fV})=>{const ik=gz;let fW={...fS},fX={...fU};if(!fX['title']){let g5=d7(fT['url'])?.['pathname']['split']('/')['pop']();g5&&(fX['title']=g5);}let {primaryVideoTrack:fY,primaryAudioTrack:fZ}=await cF(fT['url'],fT['headers']),g0=await fY?.['getCodec'](),g2=await fY?.['getCodedWidth'](),g3=await fY?.['getCodedHeight']();fW['videoQuality']||=g3?g3+'p':void 0x0;let g4=d5();if(g4['subtitles']=dc(fT),g4[ik(0x245)]['push'](...g4['subtitles']),fV['isAudio']&&!fW['skipAudio']){let g6={'id':cN({'origin':'progressive','type':ik(0x220),'sourceUrl':fT['url'],'languageCode':fT['audioLanguage'],'codec':await fZ?.['getCodec']()}),'origin':'progressive','type':'audio','codec':d9(await fZ?.['getCodec']()),'languageCode':cM(await fZ?.['getLanguageCode'](),fT['url'])??cM(fT['audioLanguage'],fT['url'])??'und','numberOfChannels':await fZ?.['getNumberOfChannels'](),'sampleRate':await fZ?.['getSampleRate'](),'sourceUrl':fT['url']};return g4['audios'][ik(0x2c2)](g6),g4['all']['push'](g6),{'options':fW,'source':fT,'meta':fX,'allTracks':[g6],'tracks':g4};}if(!fW['skipVideo']){let g7=parseInt((fW['videoQuality']??'')['replace']('p',''),0xa),g8={'id':cN({'origin':'progressive','type':'video','sourceUrl':fT['url'],'codec':g0}),'origin':'progressive','type':'video','codec':g0??'avc','width':g2??void 0x0,'height':g3??(g7||void 0x0),'sourceUrl':fT[ik(0x1a3)]};return g4['videos']['push'](g8),g4['all'][ik(0x2c2)](g8),{'options':fW,'source':fT,'meta':fX,'allTracks':[g8],'tracks':g4};}return{'options':fW,'source':fT,'meta':fX,'allTracks':[],'tracks':g4};},de=async({options:fS,source:fT,meta:fU,input:fV,disposeInput:fW=!0x0})=>{const il=gz;let fX={...fS},fY={...fU},fZ=fW;try{let g0=await fV['getTracks']();if(!g0['length'])throw new cv('MANIFEST_PARSE_FAILED',il(0x2e2));let g2=await Promise['all'](g0[il(0x19a)](g5=>cO(g5,fT['url'])));db(g2);let g3=await d4(g2,fX,fT),g4=g3['videos'][0x0]?.['height'];if(g4&&(fX['videoQuality']=g4+'p'),!fY['title']){let g5=d7(fT[il(0x1a3)])?.['host'];g5&&(fY['title']=g5+'_'+B());}return fZ=!0x1,{'options':fX,'source':fT,'meta':fY,'allTracks':g2,'tracks':g3,'dispose':fW?()=>fV['dispose']?.():void 0x0};}finally{fZ&&fV['dispose']?.();}},df=async({http:fS,options:fT,source:fU,meta:fV,detection:fW})=>de({'options':fT,'source':fU,'meta':fV,'input':cK({'http':fS,'source':fU,'detection':fW})}),dg=async({http:fS,options:fT,source:fU,meta:fV,input:fW,detection:fX})=>fW?de({'options':fT,'source':fU,'meta':fV,'input':fW,'disposeInput':!0x1}):fX['strategy']==='progressive'?dd({'options':fT,'source':fU,'meta':fV,'detection':fX}):df({'http':fS,'options':fT,'source':fU,'meta':fV,'detection':fX}),dh=(fS,fT)=>{try{let fU=new URL(fS);return fU['pathname']['endsWith'](fT)||fU['search']['endsWith'](fT);}catch{return!0x1;}},di=async(fS,fT)=>{const im=gz;let fU=dh(fT['url'],'.m3u8'),fV=dh(fT['url'],'.mpd'),fW=dh(fT['url'],'.mp4'),fX=dh(fT['url'],'.mov'),fY=!0x1,fZ=!0x1;if(!fU&&!fV&&!fW&&!fX)try{let g0=await fS['fetch'](fT['url'],{'method':'HEAD','headers':fT['headers']});if(!g0['ok'])C['warn']('HEAD\x20request\x20for\x20'+fT['url']+'\x20returned\x20'+g0['status']+'\x20'+g0[im(0x1f7)]);else{let g2=g0['headers']['get']('content-type');fY=!!g2?.['includes']('audio'),fZ=!!g2?.['includes']('video');}}catch(g3){let g4=g3 instanceof Error?g3['message']:String(g3);C['warn']('HEAD\x20request\x20failed\x20for\x20'+fT['url']+':\x20'+g4);}return fV?{'strategy':'manifest','kind':'mpd','isAudio':fY,'isVideo':fZ,'matchedContentLabel':'Dynamic\x20Adaptive\x20Streaming\x20over\x20HTTP'}:fU?{'strategy':'manifest','kind':'m3u8','isAudio':fY,'isVideo':fZ,'matchedContentLabel':'HTTP\x20Live\x20Streaming'}:fY||fZ||fW||fX?{'strategy':'progressive','kind':'progressive','isAudio':fY,'isVideo':fZ,'matchedContentLabel':'Progressive\x20Stream'}:{'strategy':'manifest','kind':'unknown','isAudio':fY,'isVideo':fZ};};var dj=a6((fS,fT)=>{function fU(fV){var fW=new fV(),fX=fW;function fY(){var g0=fW;return g0['next']?fW=g0['next']:(fW=new fV(),fX=fW),g0['next']=null,g0;}function fZ(g0){fX['next']=g0,fX=g0;}return{'get':fY,'release':fZ};}fT['exports']=fU;}),dk=a6((fS,fT)=>{var fU=dj();function fV(fZ,g0,g2){if(typeof fZ=='function'&&(g2=g0,g0=fZ,fZ=null),!(g2>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');var g3=fU(fX),g4=null,g5=null,g6=0x0,g7=null,g8={'push':gf,'drain':fW,'saturated':fW,'pause':ga,'paused':!0x1,get 'concurrency'(){return g2;},set 'concurrency'(gm){if(!(gm>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');if(g2=gm,!g8['paused']){for(;g4&&g6<g2;)g6++,gh();}},'running':g9,'resume':gd,'idle':ge,'length':gb,'getQueue':gc,'unshift':gg,'empty':fW,'kill':gi,'killAndDrain':gj,'error':gl,'abort':gk};return g8;function g9(){return g6;}function ga(){g8['paused']=!0x0;}function gb(){for(var gm=g4,gn=0x0;gm;)gm=gm['next'],gn++;return gn;}function gc(){for(var gm=g4,gn=[];gm;)gn['push'](gm['value']),gm=gm['next'];return gn;}function gd(){const io=b;if(g8['paused']){if(g8[io(0x27e)]=!0x1,g4===null){g6++,gh();return;}for(;g4&&g6<g2;)g6++,gh();}}function ge(){return g6===0x0&&g8['length']()===0x0;}function gf(gm,gn){var go=g3['get']();go['context']=fZ,go['release']=gh,go['value']=gm,go['callback']=gn||fW,go['errorHandler']=g7,g6>=g2||g8['paused']?g5?(g5['next']=go,g5=go):(g4=go,g5=go,g8['saturated']()):(g6++,g0['call'](fZ,go['value'],go['worked']));}function gg(gm,gn){const ip=b;var go=g3['get']();go['context']=fZ,go['release']=gh,go['value']=gm,go['callback']=gn||fW,go['errorHandler']=g7,g6>=g2||g8['paused']?g4?(go['next']=g4,g4=go):(g4=go,g5=go,g8['saturated']()):(g6++,g0[ip(0x2b0)](fZ,go['value'],go['worked']));}function gh(gm){const iq=b;gm&&g3['release'](gm);var gn=g4;gn&&g6<=g2?g8['paused']?g6--:(g5===g4&&(g5=null),g4=gn['next'],gn['next']=null,g0['call'](fZ,gn[iq(0x22d)],gn['worked']),g5===null&&g8['empty']()):--g6===0x0&&g8['drain']();}function gi(){g4=null,g5=null,g8['drain']=fW;}function gj(){g4=null,g5=null,g8['drain'](),g8['drain']=fW;}function gk(){const ir=b;var gm=g4;for(g4=null,g5=null;gm;){var gn=gm['next'],go=gm['callback'],gp=gm['errorHandler'],gq=gm[ir(0x22d)],gr=gm['context'];gm['value']=null,gm['callback']=fW,gm['errorHandler']=null,gp&&gp(Error('abort'),gq),go['call'](gr,Error('abort')),gm['release'](gm),gm=gn;}g8['drain']=fW;}function gl(gm){g7=gm;}}function fW(){}function fX(){const is=b;this['value']=null,this[is(0x19b)]=fW,this['next']=null,this['release']=fW,this['context']=null,this['errorHandler']=null;var fZ=this;this['worked']=function(g0,g2){var g3=fZ['callback'],g4=fZ['errorHandler'],g5=fZ['value'];fZ['value']=null,fZ['callback']=fW,fZ['errorHandler']&&g4(g0,g5),g3['call'](fZ['context'],g0,g2),fZ['release'](fZ);};}function fY(fZ,g0,g2){const it=b;typeof fZ=='function'&&(g2=g0,g0=fZ,fZ=null);function g3(ga,gb){g0['call'](this,ga)['then'](function(gc){gb(null,gc);},gb);}var g4=fV(fZ,g3,g2),g5=g4['push'],g6=g4['unshift'];return g4['push']=g7,g4[it(0x1b9)]=g8,g4['drained']=g9,g4;function g7(ga){var gb=new Promise(function(gc,gd){g5(ga,function(ge,gf){if(ge){gd(ge);return;}gc(gf);});});return gb['catch'](fW),gb;}function g8(ga){var gb=new Promise(function(gc,gd){g6(ga,function(ge,gf){if(ge){gd(ge);return;}gc(gf);});});return gb['catch'](fW),gb;}function g9(){return new Promise(function(ga){process['nextTick'](function(){if(g4['idle']())ga();else{var gb=g4['drain'];g4['drain']=function(){const iu=b;typeof gb==iu(0x2e0)&&gb(),ga(),g4['drain']=gb;};}});});}}fT['exports']=fV,fT['exports']['promise']=fY;}),dl=a8(dk(),0x1);const dm=0x493e0,dn=(fS={})=>{const iv=gz;let fT=fS['maxRetries']??0x5,{proxy:fU}=fS,fV=fU?new ProxyAgent({'uri':fU,'allowH2':!0x0}):new Agent({'allowH2':!0x0}),fW=T['create']({'fetch':fS['fetch'],'dispatcher':fV,'proxy':fU,'timeout':dm,'retry':{'limit':fT,'methods':[iv(0x26a),iv(0x272)],'statusCodes':[0x198,0x19d,0x1ad,0x1f4,0x1f6,0x1f7,0x1f8],'backoffLimit':0x7530},'throwHttpErrors':!0x0,'redirect':'follow','headers':{'user-agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/127.0.0.0\x20Safari/537.36'}});return Object['assign'](fW,{'close':async()=>{fV['closed']||fV['destroyed']||await fV['close']();},'destroy':async fX=>{fV['destroyed']||await fV['destroy'](fX);}});},dp=fS=>new Promise(fT=>setTimeout(fT,fS)),dq=async(fS,fT)=>{let fU=await R['stat'](fT)['catch'](()=>null);(!fU||!fU['isDirectory']())&&await R['mkdir'](fT,{'recursive':!0x0});let fV=dr(fS,fT),fW=await R['stat'](fV)['catch'](()=>null);return(!fW||!fW['isDirectory']())&&await R['mkdir'](fV,{'recursive':!0x0}),fV;},dr=(fS,fT)=>{const iw=gz;let fU=N['resolve'](fS),fV=N['parse'](fS)['name'],fW=createHash('sha1')[iw(0x1bf)](fU)['digest']('hex')['slice'](0x0,0xa);return N['join'](fT,fV+'-'+fW);},ds=async fS=>{let fT=N['dirname'](fS),fU=N['resolve'](fT);N['parse'](fU)['root']!==fU&&(await R['stat'](fT)['then'](()=>!0x0)['catch'](()=>!0x1)||await R['mkdir'](fT,{'recursive':!0x0}));},dt=async(...fS)=>{let fT=[];for(let fU of fS)fU&&fT['push'](R['rm'](fU,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0));await Promise['all'](fT);},du=fS=>fS+'.part.json',dv=fS=>{const ix=gz;if(fS[ix(0x1e8)])return fS['filePath'];if(fS['output'])return du(fS['output']);throw Error('Either\x20output\x20or\x20filePath\x20is\x20required\x20for\x20FileResumeStore');},dw=fS=>{const iy=gz;if(!fS||typeof fS!='object')return!0x1;let fT='code'in fS?fS['code']:void 0x0;return fT==='EPERM'||fT==='EACCES'||fT===iy(0x28b);},dx=async(fS,fT)=>{const iz=gz;let fU=S[iz(0x2c5)]==='win32'?[0x0,0x32,0x96,0x12c,0x1f4]:[0x0],fV;for(let fW of fU){fW>0x0&&await dp(fW);try{await R['rename'](fS,fT);return;}catch(fX){if(fV=fX,!dw(fX))break;await R['rm'](fT,{'force':!0x0})['catch'](()=>void 0x0);try{await R['rename'](fS,fT);return;}catch(fY){if(fV=fY,!dw(fY))break;}}}throw fV;};var dy=class{async['get'](fS){const iA=gz;let fT=dv(fS);if(!await R[iA(0x2d7)](fT)['then'](()=>!0x0)['catch'](()=>!0x1))return null;try{let fU=await R['readFile'](fT,'utf8');return JSON['parse'](fU);}catch{return null;}}async['set'](fS,fT){let fU=dv(fS);await ds(fU);let fV=fU+'.'+S['pid']+'.'+Date['now']()['toString'](0x24)+'.tmp';await R['writeFile'](fV,JSON['stringify'](fT));try{await dx(fV,fU);}finally{try{await R['rm'](fV,{'force':!0x0});}catch{}}}async['delete'](fS){const iB=gz;let fT=dv(fS);await R['rm'](fT,{'force':!0x0})[iB(0x1a6)](()=>void 0x0);}};const dz=fS=>N[gz(0x28a)](fS),dA=fS=>createHash('sha1')['update'](dz(fS))['digest'](gz(0x24d)),dB=fS=>fS['map']((fT,fU)=>({'index':fU,'start':fT['start'],'end':fT['end'],'output':fT['output'],'completed':!0x1,'bytesWritten':0x0})),dC=(fS,fT)=>fS['parts']['length']===fT['length']?fS['parts']['every']((fU,fV)=>{let fW=fT[fV];return fW?fU['start']===fW['start']&&fU['end']===fW['end']&&(fU['output']??null)===(fW['output']??null):!0x1;}):!0x1,dD=(fS,fT)=>!fT||!fS['sourceSignature']?!0x0:fS[gz(0x27b)]===fT,dE=fS=>{let fT=fS['parts']['reduce']((fU,fV)=>fU+fV['bytesWritten'],0x0);return fT>0x0?fT:fS['bytesDownloaded'];},dF=fS=>{if(!fS||typeof fS!='object')return!0x1;let fT=fS;return fT['version']===0x2&&typeof fT['key']=='string'&&Array['isArray'](fT['parts'])&&typeof fT['bytesDownloaded']=='number';};var dG=class{['key'];['output'];['filePath'];['cleanupOnSuccess'];['store'];['target'];['trustExplicitKey'];constructor(fS={}){const iC=gz;if(this[iC(0x2f6)]=fS['output'],this[iC(0x1e8)]=fS['filePath'],this['key']=fS[iC(0x276)]??(this['output']?dA(this['output']):''),!this['key'])throw Error('Resume\x20key\x20is\x20required\x20when\x20output\x20is\x20not\x20provided');this['store']=fS['store']??new dy(),this['cleanupOnSuccess']=fS['cleanupOnSuccess']??!0x0,this['target']={'key':this['key'],'output':this['output'],'filePath':this['filePath']},this['trustExplicitKey']=typeof fS['key']=='string'&&fS['key']['length']>0x0;}async[gz(0x213)](){let fS=await this['store']['get'](this['target']);return dF(fS)?fS:null;}async[gz(0x1bd)](fS){const iD=gz;let fT=new Date()['toISOString'](),fU={...fS,'version':0x2,'key':this['key'],'output':fS['output']??this['output'],'bytesDownloaded':dE(fS),'createdAt':fS[iD(0x280)]||fT,'updatedAt':fT};await this[iD(0x269)]['set'](this['target'],fU);}async['delete'](){await this['store']['delete'](this['target']);}['createState'](fS){let fT=new Date()['toISOString']();return{'version':0x2,'key':this['key'],'output':this['output'],'input':fS['input'],'bytesTotal':fS['bytesTotal'],'bytesDownloaded':0x0,'parts':dB(fS['parts']),'sourceSignature':fS['sourceSignature'],'planner':fS['planner'],'createdAt':fT,'updatedAt':fT};}[gz(0x238)](fS,fT){const iE=gz;let fU=fS['version']!==0x2,fV=fS[iE(0x276)]!==this['key'],fW=!this['trustExplicitKey']&&!dD(fS,fT['sourceSignature']),fX=!dC(fS,fT['parts']);if(fU||fV||fW||fX)return{'state':this['createState'](fT),'reset':!0x0};let fY={...fS,'key':this['key'],'output':this[iE(0x2f6)],'input':fT['input'],'bytesTotal':fT[iE(0x2e4)],'sourceSignature':fT[iE(0x27b)],'planner':fT['planner'],'parts':fT['parts']['map']((fZ,g0)=>{let g2=fS['parts'][g0];return{'index':g0,'start':fZ['start'],'end':fZ['end'],'output':fZ['output'],'completed':g2?.['completed']??!0x1,'bytesWritten':g2?.['bytesWritten']??0x0};}),'createdAt':fS['createdAt'],'updatedAt':fS['updatedAt']};return fY['bytesDownloaded']=dE(fY),{'state':fY,'reset':!0x1};}['markPartCompleted'](fS,fT,fU){let fV=fS['parts'][fT];if(!fV)return fS;let fW=fV['bytesWritten'];return fV['completed']=!0x0,fV['bytesWritten']=fU,fS['bytesDownloaded']=Math['max'](0x0,fS['bytesDownloaded']-fW+fU),fS['updatedAt']=new Date()['toISOString'](),fS;}async['getProgress'](){let fS=await this['read']();if(!fS)return null;let fT=fS['bytesDownloaded'];if(fS['bytesTotal']){let fW=fS['bytesTotal'];return{'bytesDownloaded':fT,'totalBytes':fW,'percentComplete':fW>0x0?Math['round'](fT/fW*0x64):0x0};}let fU=fS['parts']['length'],fV=fS['parts']['filter'](fX=>fX['completed'])['length'];return{'bytesDownloaded':fT,'totalBytes':null,'percentComplete':fU>0x0?Math['round'](fV/fU*0x64):0x0,'segmentsCompleted':fV,'segmentsTotal':fU};}};const dH=0x8*0x2**0x14,dI=(fS,fT,fU)=>{let fV='part_'+fU+'.part';return N['join'](fT,fV);},dJ=(fS,fT,fU)=>{const iF=gz;let fV=Math['ceil'](fS/Math['max'](0x1,fT));return Math['max'](0x1,Math[iF(0x2b3)](fV,Math['max'](0x1,fU)));},dK=(fS,fT,fU)=>{let fV=dJ(fS,fT,fU),fW=[],fX=0x0;for(;fX<fS;){let fY=Math['min'](fS-0x1,fX+fV-0x1);fW['push']([fX,fY]),fX=fY+0x1;}return fW;},dL=fS=>{let [fT,fU]=fS;return'bytes='+fT+'-'+(fU||'');},dM=fS=>dK(fS['contentLength'],fS['maxWorkerCount'],fS['maxChunkSize']??dH)['map'](fT=>{let [fU,fV]=fT,fW=new Headers(fS['requestInit']?.['headers']);return fW['set']('Range',dL([fU,fV])),{'url':fS['url'],'headers':fW,'start':fU,'end':fV};}),dN=fS=>{const iG=gz;let fT=fS?Error('The\x20operation\x20was\x20aborted',{'cause':fS}):Error(iG(0x1da));return fT['name']=iG(0x1ad),fT;},dO=fS=>{const iH=gz;if(!(fS instanceof Error))return!0x1;if(fS[iH(0x231)]==='AbortError'||fS['code']==='ABORT_ERR')return!0x0;let fT=fS['cause'];return fT instanceof Error&&fT['name']==='AbortError';},dP=async fS=>await fS['client']['get'](fS[gz(0x1a3)],{'redirect':'follow',...fS['requestInit']}),dQ=(fS,fT,fU)=>async fV=>{if(fU?.['aborted'])throw dN();let fW=typeof fT=='number'?{'flags':'r+','start':fT}:{'flags':'w'},fX=L['createWriteStream'](fS,fW),fY=Readable['fromWeb'](fV['body']);try{await pipeline(fY,fX,{'signal':fU});}catch(fZ){throw dO(fZ)?dN(fZ):fZ;}if(fU?.['aborted'])throw dN();return fV;},dR=(fS,fT,fU)=>fV=>{const iI=gz;if(fU?.['aborted'])throw dN();let fW=parseInt(fV['headers']['get']('content-length')||'0');if(fS[iI(0x21b)](fW),fU?.['aborted'])throw dN();return fT&&!fU?.['aborted']?fT(fS['toProgressInfo']()):fS['log'](),fV;},dS=fS=>typeof fS=='boolean'?{'enabled':fS,'cleanupOnSuccess':!0x0}:fS?{'enabled':fS['enabled']??!0x0,'key':fS['key'],'store':fS['store'],'filePath':fS['filePath'],'cleanupOnSuccess':fS['cleanupOnSuccess']??!0x0}:{'enabled':!0x1,'cleanupOnSuccess':!0x0},dT=fS=>({'tempDir':fS['tempDir']??process[gz(0x1c5)](),'maxRetries':fS['maxRetries']??0x5,'maxChunkSize':fS['maxChunkSize']??dH,'maxWorkerCount':fS['maxWorkerCount']??0x4,'resume':dS(fS['resume']),'proxy':fS['proxy'],'requestInit':fS['requestInit'],'fetchFn':fS['fetchFn']}),dU={'total':{'b':0x0,'mb':0x0},'current':{'b':0x0,'mb':0x0},'chunkSize':0x0,'chunkSizes':[],'averageSize':{'b':0x0,'mb':0x0},'averageTotal':{'b':0x0,'mb':0x0},'speed':{'bps':0x0,'mbps':0x0}},dV=fS=>{const iJ=gz;let fT=Math['floor'](fS/0xe10),fU=Math[iJ(0x2a6)](fS%0xe10/0x3c),fV=fS%0x3c,fW=fT>0x0?fT+'h':'',fX=fU>0x0?fU+'m':'',fY=fV>0x0?fV+'s':'';return fT>0x0?fW+'\x20'+(fX||'0m')+'\x20'+(fY&&''+fY):!fT&&fU>0x0?fX+'\x20'+(fY&&''+fY):fY;},dW=(fS=0x0)=>{let fT=structuredClone(dU),fU=0x0,fV=setInterval(()=>{fU>0x1&&(fT['speed']['bps']=fT['current']['b']/fU),fU+=0.5;},0x1f4);return{'state':fT,'setTotal':fW=>{fT['total']['b']=fW,fT['total']['mb']=fW/0x400/0x400;},'setCurrent'(fW){fT['current']['b']=fW,fT['current']['mb']=fW/0x400/0x400;},'increase'(fW){const iK=b;fT['current']['b']+=fW,fT['current']['mb']=fT['current']['b']/0x400/0x400,fT['speed']['mbps']=fT['speed'][iK(0x198)]/0x400/0x400,fT['chunkSize']=fW,fT['chunkSizes']['push'](fW),fT['averageSize']['b']=fT['current']['b']/fT['chunkSizes']['length'],fT['averageSize']['mb']=fT['averageSize']['b']/0x400/0x400,fT['averageTotal']['b']=fS*fT['averageSize']['b'],fT['averageTotal']['mb']=fT['averageTotal']['b']/0x400/0x400;},'stop'(){clearInterval(fV),Object['assign'](fT,dU);},'log'(){let fW=fT['current']['b'],fX=fT['total']['b'],fY=fW+(fX?'/'+fX:'');stdout['write']('\x0dDownloading\x20['+fY+']');},'stopLog'(){const iL=b;stdout[iL(0x1bd)]('\x0a');},'toString'(){const iM=b;let fW='';fT['speed']['bps']&&(fW+=fT['speed']['mbps']['toFixed'](0x1)+iM(0x25d)),fW+=''+fT['current']['mb']['toFixed'](0x1),fT[iM(0x209)]['b']?fW+='\x20of\x20'+fT[iM(0x209)]['mb'][iM(0x26e)](0x1)+'\x20MB':fW+='\x20MB';let fX=fT['total']['b']||fT['averageTotal']['b'];if(fX){let fY=fX-fT['speed']['bps']*fU,fZ=Math['round'](fY/fT['speed'][iM(0x198)]),g0=dV(fZ);fZ&&isFinite(fZ)&&g0&&(fW+=',\x20'+g0+'\x20left');}return fW;},'toProgressInfo'(){const iN=b;let fW=fT[iN(0x209)]['b']||null;return{'bytesDownloaded':fT['current']['b'],'totalBytes':fW,'percentComplete':fW?fT[iN(0x2cb)]['b']/fW*0x64:null,'bytesPerSecond':fT['speed']['bps'],'estimatedSecondsRemaining':fT['speed']['bps']>0x0&&fW?(fW-fT['current']['b'])/fT['speed'][iN(0x198)]:null};}};},dX=new Set(['authorization','cookie','set-cookie','x-amz-date','x-amz-security-token','x-amz-content-sha256','x-goog-date','x-goog-security-token']),dY=(fS,fT={})=>{if(!fS)return[];let fU=fT['includeVolatile']??!0x1,fV=[];return new Headers(fS)['forEach']((fW,fX)=>{const iO=b;!fU&&dX['has'](fX['toLowerCase']())||fV[iO(0x2c2)]([fX,fW]);}),fV['sort'](([fW],[fX])=>fW['localeCompare'](fX)),fV;},dZ=fS=>{const iP=gz;try{let fT=new URL(fS),fU=fT['pathname']['split']('/')[iP(0x19a)](fV=>fV&&(fV[iP(0x2b1)]('=')||fV['includes'](',')?':volatile':fV))['join']('/');return''+fT['origin']+fU;}catch{let fV=String(fS);return(fV['split']('#')[0x0]??fV)['split']('?')[0x0]||fV;}},e0=fS=>({'url':dZ(fS['url']),'start':fS['start'],'end':fS['end'],'output':fS['output'],'headers':dY(fS['headers'])}),e1=fS=>{const iQ=gz;let fT={'input':Array['isArray'](fS['input'])?fS['input']['map'](fU=>e0(fU)):dZ(String(fS['resolvedUrl'])),'requestHeaders':dY(fS['requestHeaders']),'parts':fS['parts']['map'](fU=>e0(fU)),'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']};return createHash(iQ(0x274))['update'](JSON['stringify'](fT))['digest']('hex');},e2=async fS=>{const iR=gz;if(!fS['manager'])return null;let fT={'input':Array['isArray'](fS['input'])?fS['input']:fS[iR(0x290)],'parts':fS['parts'],'bytesTotal':fS['bytesTotal'],'sourceSignature':fS['sourceSignature'],'planner':{'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS[iR(0x263)]}},fU=await fS['manager']['read'](),fV=(fU?fS['manager']['reconcileState'](fU,fT):null)?.['state']??fS['manager']['createState'](fT);return await fS['manager']['write'](fV),fV;},e3=fS=>{if(fS&&!fS['parts']['every'](fT=>fT['completed']))throw Error('Not\x20all\x20segments\x20were\x20downloaded\x20successfully.\x20Try\x20resuming\x20later.');},e4=fS=>{const iS=gz;if(Array['isArray'](fS['input']))return fS['input']['map']((fT,fU)=>({...fT,'output':dI(fS[iS(0x1a3)],fS['tempFileDir'],fU)}));if(!fS['acceptsRanges'])throw Error('Unable\x20to\x20get\x20parts');if(!fS['size'])throw Error('Size\x20is\x20not\x20known');return dM({'url':fS['url'],'requestInit':fS['requestInit'],'contentLength':fS['size'],'maxWorkerCount':fS[iS(0x221)],'maxChunkSize':fS['maxChunkSize']});},e5=async fS=>{const iT=gz;if(!fS['parts']['some'](fU=>typeof fU['start']=='number'&&(fU['output']??fS['output'])===fS['output'])||await R['stat'](fS['output'])['then'](()=>!0x0)['catch'](()=>!0x1))return;let fT=await R['open'](fS['output'],'w');fS[iT(0x243)]&&fS['size']>0x0&&await fT[iT(0x2c4)](fS['size']),await fT['close']();},e6=()=>{let fS=Error('The\x20operation\x20was\x20aborted');return fS['name']='AbortError',fS;},e7=fS=>{let fT=fS['match'](/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i);if(!fT||!fT[0x1]||!fT[0x2]||!fT[0x3])return null;let fU=parseInt(fT[0x1],0xa),fV=parseInt(fT[0x2],0xa),fW=fT[0x3];if(!Number['isFinite'](fU)||!Number['isFinite'](fV)||fV<fU)return null;if(fW==='*')return{'start':fU,'end':fV,'total':null};let fX=parseInt(fW,0xa);return!Number['isFinite'](fX)||fX<=0x0?null:{'start':fU,'end':fV,'total':fX};},e8=(fS,fT)=>{const iU=gz;if(typeof fT['start']!='number'||typeof fT['end']!='number')return;if(fS['status']!==0xce)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT[iU(0x2d4)]+':\x20expected\x20206,\x20got\x20'+fS[iU(0x218)]);let fU=fS['headers']['get']('content-range');if(!fU)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20missing\x20Content-Range\x20header');let fV=e7(fU);if(!fV)throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20invalid\x20Content-Range\x20\x22'+fU+'\x22');if(fV['start']!==fT['start']||fV[iU(0x2d4)]!==fT['end'])throw Error('Range\x20request\x20failed\x20for\x20bytes='+fT['start']+'-'+fT['end']+':\x20got\x20bytes='+fV['start']+'-'+fV['end']);},e9=async(fS,fT,fU)=>{const iV=gz;let fV=fS['headers']['get']('content-length');if(fV){let fX=parseInt(fV,0xa);if(Number['isFinite'](fX)&&fX>0x0)return fX;}let fW=fS['headers']['get']('content-range');if(fW){let fY=fW['match'](/bytes\s+(\d+)-(\d+)\//i);if(fY&&fY[0x1]&&fY[0x2]){let fZ=parseInt(fY[0x1],0xa),g0=parseInt(fY[0x2],0xa);if(Number[iV(0x1e6)](fZ)&&Number['isFinite'](g0)&&g0>=fZ)return g0-fZ+0x1;}}return typeof fT['start']==iV(0x261)&&typeof fT['end']=='number'?Math['max'](0x0,fT['end']-fT['start']+0x1):fT['output']&&fT['output']!==fU?R['stat'](fT['output'])['then'](g2=>g2['size'])['catch'](()=>0x0):0x0;},ea=(fS,fT)=>fS['map']((fU,fV)=>fV)['filter'](fU=>!(fT?.['parts'][fU]?.['completed']??!0x1)),eb=fS=>{let fT=Promise['resolve']();return{'enqueue':()=>(fT=fT['then'](fS),fT),'onIdle':()=>fT};},ec=async fS=>{let fT=fS['signal']??fS['requestInit']?.['signal']??void 0x0,fU=()=>{if(fT?.['aborted'])throw e6();};fU();let fV=ea(fS['parts'],fS['resumeState']),fW=dl['promise'](async g5=>{const iW=b;let {index:g6,part:g7}=g5;fU();let g8=await dP({'index':g6,'client':fS['client'],'url':g7['url'],'requestInit':{...fS['requestInit'],'signal':fT,'headers':g7['headers']??fS['requestInit']?.['headers']}});if(fU(),e8(g8,g7),await dQ(g7['output']??fS['output'],g7[iW(0x21c)],fT)(g8),dR(fS['progress'],fS['onProgress'],fT)(g8),fU(),fS['resumeState']&&fS['resumeManager']){let g9=await e9(g8,g7,fS['output']);fS['resumeManager']['markPartCompleted'](fS['resumeState'],g6,g9),await g0['enqueue']();}},fS['maxWorkerCount']),fX=()=>{fW['pause'](),fW['killAndDrain'](),fW['kill']();};if(fT?.['aborted'])throw fX(),e6();let fY=()=>{},fZ=fT?new Promise((g5,g6)=>{const iX=b;let g7=()=>{fX(),g6(e6());};fT[iX(0x21a)]('abort',g7,{'once':!0x0}),fY=()=>fT['removeEventListener']('abort',g7);}):null,g0=eb(async()=>{const iY=b;!fS['resumeState']||!fS['resumeManager']||await fS[iY(0x301)]['write'](fS['resumeState']);}),g2=fV['map'](g5=>{let g6=fS['parts'][g5];return g6?(fU(),fW['push']({'index':g5,'part':g6})):Promise['resolve']();}),g3=[];try{let g5=Promise['allSettled'](g2);fZ&&(await Promise['race']([g5,fZ]),fU()),g3=await g5;}finally{fY(),await g0['onIdle']();}let g4=g3['find'](g6=>g6['status']==='rejected');if(g4?.['status']==='rejected')throw g4['reason'];},ed=async(fS,fT)=>{await new Promise((fU,fV)=>{const iZ=b;let fW=L[iZ(0x18f)](fS),fX=()=>{fT['off']('error',fY),fW['off']('error',fZ),fW['off']('end',g0);},fY=g2=>{fX(),fV(Error('Output\x20write\x20stream\x20error',{'cause':g2}));},fZ=g2=>{fX(),fV(Error('Segment\x20read\x20stream\x20error',{'cause':g2}));},g0=()=>{fX(),fU();};fT['on']('error',fY),fW['on']('error',fZ),fW['on']('end',g0),fW[iZ(0x1ab)](fT,{'end':!0x1});});},ee=async fS=>{const j0=gz;let fT=fS[j0(0x2a5)]['map'](fV=>fV['output'])['filter'](fV=>!!fV&&fV!==fS['output']);if(!fT['length'])return;let fU=L['createWriteStream'](fS['output']);for(let fV of fT)await ed(fV,fU);fU['end'](),await finished(fU);},ef=async fS=>{const j1=gz;if(!fS['expectedSize'])return;let fT=await R['stat'](fS['output'])['then'](fU=>fU[j1(0x243)])['catch'](()=>null);if(fT&&fT!==fS['expectedSize'])throw Error('Actual\x20size\x20'+fT+'\x20doesn\x27t\x20match\x20expected\x20size\x20'+fS['expectedSize']);},eg=async fS=>{const j2=gz;fS['resumeManager']&&fS['resumeManager']['cleanupOnSuccess']&&await fS['resumeManager']['delete'](),await dt(fS[j2(0x282)]);},eh=async fS=>{const j3=gz;let fT=e1({'input':fS['input'],'resolvedUrl':fS['url'],'parts':fS[j3(0x2a5)],'requestHeaders':fS['requestInit']?.['headers'],'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']}),fU=await e2({'manager':fS['resumeManager'],'input':fS['input'],'resolvedUrl':fS['url'],'parts':fS['parts'],'bytesTotal':fS['size']??void 0x0,'sourceSignature':fT,'maxWorkerCount':fS['maxWorkerCount'],'maxChunkSize':fS['maxChunkSize']}),fV=dW(fS['parts']['length']);fS['size']&&fV['setTotal'](fS[j3(0x243)]),fU?.['bytesDownloaded']&&fV['setCurrent'](fU['bytesDownloaded']),await e5({'output':fS['output'],'size':fS['size'],'parts':fS['parts']});try{await ec({'parts':fS['parts'],'output':fS['output'],'maxWorkerCount':fS[j3(0x221)],'client':fS['client'],'requestInit':fS['requestInit'],'progress':fV,'onProgress':fS['onProgress'],'resumeState':fU,'resumeManager':fS['resumeManager'],'signal':fS['signal']});}finally{fV['stop'](),fS['onProgress']||fV['stopLog']();}e3(fU),await ee({'output':fS[j3(0x2f6)],'parts':fS['parts']}),await ef({'output':fS['output'],'expectedSize':Array['isArray'](fS['input'])?null:fS['size']}),await eg({'tempFileDir':fS['tempFileDir'],'resumeManager':fS['resumeManager']});},ei=async fS=>{const j4=gz;let fT=new Headers(fS['requestInit']?.['headers']);fT[j4(0x227)]('Range','bytes=0-0');let fU=Array['isArray'](fS['input'])?fS['input'][0x0]?.['url']:fS['input'];if(!fU)throw Error('Input\x20is\x20empty');let fV=await fS[j4(0x21e)]['head'](fU,{...fS['requestInit'],'headers':fT}),fW=fV['headers']['get']('content-type'),fX=fV['headers']['get'](j4(0x2ff)),fY=fV['headers']['get']('content-range'),fZ=fY?.['split']('/')?.[0x1]||fX,g0=fZ&&!Array['isArray'](fS['input'])?parseInt(fZ,0xa):null,g2=fV['headers']['get']('accept-ranges')==='bytes'||!!fY?.['includes']('bytes')||!!fW?.['includes']('video')||!!fW?.['includes']('audio')||!!fW?.['includes']('octet-stream');return{'url':fV['url'],'size':g0,'acceptsRanges':g2};};var ej=class gx{['input'];['output'];['resume'];[gz(0x195)];['config'];['client'];['resumeManager'];['probe'];[gz(0x282)];constructor(fS){this['input']=fS['input'],this['output']=fS['output'],this['resume']=fS['resume'],this['onProgress']=fS['onProgress'],this['config']=dT(fS),this['client']=dn({'maxRetries':this['config']['maxRetries'],'proxy':this['config']['proxy'],'fetch':this['config']['fetchFn']}),this['config']['resume']['enabled']&&(this['resumeManager']=new dG({'output':this['output'],'key':this['config']['resume']['key'],'filePath':this['config']['resume']['filePath'],'store':this['config']['resume']['store'],'cleanupOnSuccess':this['config']['resume']['cleanupOnSuccess']}));}static async['init'](fS){let fT=new gx(fS);return await fT['_init'](),fT;}async['_init'](){const j5=gz;this['probe']=await ei({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),await ds(this['output']),this['tempFileDir']=await dq(this['output'],this[j5(0x1d1)]['tempDir']),this['config']['resume']['enabled']||(await dt(this['output'],du(this['output']),this['tempFileDir']),this['tempFileDir']=await dq(this['output'],this[j5(0x1d1)]['tempDir']));}async['execute'](){const j6=gz;if(!this[j6(0x273)]||!this['tempFileDir'])throw Error('Download\x20was\x20not\x20initialized.\x20Use\x20Download.init(options).');try{let fS=e4({'input':this['input'],'url':this['probe'][j6(0x1a3)],'size':this['probe'][j6(0x243)],'acceptsRanges':this['probe']['acceptsRanges'],'requestInit':this['config']['requestInit'],'tempFileDir':this[j6(0x282)],'maxWorkerCount':this['config'][j6(0x221)],'maxChunkSize':this[j6(0x1d1)]['maxChunkSize']});await eh({'input':this[j6(0x1a7)],'output':this['output'],'url':this[j6(0x273)]['url'],'size':this['probe']['size'],'requestInit':this[j6(0x1d1)]['requestInit'],'maxWorkerCount':this['config']['maxWorkerCount'],'maxChunkSize':this['config'][j6(0x263)],'onProgress':this['onProgress'],'client':this['client'],'parts':fS,'tempFileDir':this['tempFileDir'],'resumeManager':this['resumeManager'],'signal':this['config'][j6(0x2ce)]?.[j6(0x1d8)]??void 0x0});}finally{await this['close']();}}async['getSize'](){const j7=gz;if(this['probe']||=await ei({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),!this['probe']['size'])throw Error('Size\x20is\x20not\x20known');return this[j7(0x273)]['size'];}async['close'](){await this['client']['close']();}};const ek=async({attempts:fS,fn:fT,shouldRetry:fU,onRetry:fV})=>{let fW=Math['max'](0x1,Math['trunc'](fS)),fX;for(let fY=0x1;fY<=fW;fY+=0x1)try{return await fT(fY);}catch(fZ){if(fX=fZ,fY>=fW||!fU?.(fZ,fY))throw fZ;await fV?.(fZ,fY);}throw fX instanceof Error?fX:Error(String(fX));},el=()=>{if(!(process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')&&!isatty(process['stderr']['fd'])&&ab()?.['getConsoleSize']?.()?.['columns'])try{let fS=a9('nanospinner/dist/consts.js');fS&&fS['isTTY']===!0x1&&(fS['isTTY']=!0x0,fS['symbols']?.['frames']?.['length']===0x1&&(fS['symbols']['frames']=['-','\x5c','|','/']));}catch{}},em=fS=>{const j8=gz;let fT=process['stderr'];if(!fS||process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')return fT;if(!fT['columns']||fT['columns']!==fS){let fU=Object['getOwnPropertyDescriptor'](fT,j8(0x2ea))??Object['getOwnPropertyDescriptor'](Object['getPrototypeOf'](fT),'columns');if(!fU||fU['writable']||fU['set'])try{fT['columns']=fS;}catch{}if(fT['columns']!==fS){let fV=Object['create'](fT);return Object['defineProperty'](fV,'columns',{'value':fS,'configurable':!0x0,'enumerable':!0x0,'writable':!0x0}),C['warn']('Unable\x20to\x20override\x20stderr.columns;\x20using\x20spinner-local\x20width\x20'+fS+'.'),fV;}}return fT;},en={'debug':'gray','info':'green','warn':'yellow','error':gz(0x1f3)},eo=fS=>{const j9=gz;let fT=fS[j9(0x259)](),fU=P[en[fS]];return fU(fT);},ep=(fS,fT)=>typeof fT=='string'?fS+'\x20'+fT:fT&&{...fT,'text':(fS+'\x20'+(fT['text']??''))['trimEnd']()},eq=(fS,fT)=>{const ja=gz;el();let fU=E(eo('info')),fV=createSpinner(fS,{'stream':em(ab()?.['getConsoleSize']?.()?.['columns']??process['stderr']['columns']??process['stdout']['columns']??(process[ja(0x2c5)]==='win32'?0x78:0x50))})['start']({'text':fU+'\x20'+fS,'color':fT}),fW=fV['update']['bind'](fV),fX=fV['success']['bind'](fV),fY=fV['error']['bind'](fV);return fV['update']=fZ=>fW(ep(fU,fZ)),fV['success']=fZ=>fX(ep(fU,fZ)),fV['error']=fZ=>fY(ep(fU,fZ)),fV;},er=0x10,es=fS=>{if(!(!fS||typeof fS!='object'||!('drm'in fS)))return fS['drm']?.['widevine']?.['pssh'];},et=(fS,fT)=>createHash('sha1')['update'](fS+':'+cr(fT))['digest']('hex'),eu=({outputDirectory:fS,resolvedFilenameWithoutExtension:fT,track:fU})=>join(fS,fT+'.'+createHash('sha256')['update'](cr(fU))['digest']('hex')['slice'](0x0,0x6)+'.'+(fU['type']==='subtitle'?'vtt':fU['type']===gz(0x220)?gz(0x1d5):'mp4')),ev=(fS,fT)=>{if(fT)return{'Range':'bytes='+fS+'-'+(fS+fT-0x1)};},ew=async fS=>{if(fS['sourceUrl']&&!fS['inputTrack'])return fS['sourceUrl'];let fT=[],fU=await cP(fS),fV=fU[0x0];fV?.['initSegment']&&fT['push']({'url':fV['initSegment']['location']['path'],'headers':ev(fV['initSegment']['location']['offset'],fV['initSegment']['location']['length'])});for(let fW of fU)fT['push']({'url':fW['location']['path'],'headers':ev(fW['location']['offset'],fW['location']['length'])});return!fT['length']&&fS['sourceUrl']?fS['sourceUrl']:fT['length']===0x1&&!fT[0x0]?.['headers']?fT[0x0]['url']:fT;},ex=fS=>{let fT=Math['max'](0x1,Math['trunc'](fS)),fU=Math['min'](er,fT);return{'normalizedRequestedConnections':fT,'maxWorkerCount':fU,'wasClamped':fT!==fU};},ey=fS=>Math['max'](0x1,Math['trunc'](fS)+0x1),ez=(fS,fT)=>fT['origin']==='manifest'?{'enabled':!0x0,'key':et(fS,fT)}:!0x0,eA=({title:fS,progress:fT,track:fU,filepath:fV,target:fW})=>{const jb=gz;let fX={'b':fT['totalBytes']??NaN,'mb':(fT['totalBytes']??NaN)/0x400/0x400},fY={'b':fT[jb(0x21f)]??NaN,'mb':(fT[jb(0x21f)]??NaN)/0x400/0x400},fZ=fT['totalBytes']?Math['round'](fT[jb(0x21f)]/fT['totalBytes']*0x64):void 0x0;return{'title':fS,'total':fX,'current':fY,'percentage':fZ,'speed':{'bps':fT['bytesPerSecond']??NaN,'mbps':(fT['bytesPerSecond']??NaN)/0x400/0x400},'trackName':basename(fV),'trackPath':fV,'finalName':fW['finalName'],'finalPath':fW['finalPath'],'state':fZ===0x64?'downloaded':'downloading','quality':fU['type']===jb(0x302)&&fU['width']?fU['width']+'x'+fU['height']:void 0x0,'codec':fU['type']==='video'?fU['codec']??void 0x0:void 0x0};},eB=fS=>'Downloading\x20∙\x20'+((fS['bytesDownloaded']/0x400/0x400)['toFixed'](0x2)+'\x20MB')+(fS['totalBytes']?'\x20of\x20'+(fS['totalBytes']/0x400/0x400)['toFixed'](0x2)+'\x20MB':''),eC=fS=>fS['flatMap'](fT=>{let fU=fT['segments']?.[0x0],fV=es(fU?.['initSegment']?.['encryption'])??es(fU?.['encryption']);return fV?[fV]:[];})['map'](fT=>{const jc=gz;let fU=fT;return typeof fU=='string'?fU:fU instanceof Uint8Array||fU instanceof ArrayBuffer?Buffer[jc(0x1a0)](fU)['toString']('base64'):ArrayBuffer['isView'](fU)?Buffer['from'](fU['buffer'])['toString']('base64'):String(fU);}),eD=(fS,fT)=>({'path':fT,'type':fS[gz(0x1c1)],'language':fS['languageCode'],'label':fS['name']??void 0x0,'forced':fS['type']===gz(0x27f)?fS['forced']:!0x1}),eE=async({track:fS,filepath:fT,description:fU,target:fV,source:fW,options:fX,settings:fY,abortSignal:fZ,title:g0,emitProgress:g2})=>{const jd=gz;C[jd(0x291)](fU),C['debug']('Path:\x20'+fT);let g3=fX['connections']??fY['get']('connections')??0x1,{maxWorkerCount:g4,wasClamped:g5}=ex(g3);g5&&C['warn']('Connections\x20value\x20'+g3+'\x20was\x20clamped\x20to\x20'+g4+'\x20for\x20stability'),C['debug']('Max\x20worker\x20count:\x20'+g4);let g6=eq('Downloading','yellow'),g7='',g8=await ew(fS),g9=ey(fX['retry']??fY['get']('retry')??0x1);try{await ek({'attempts':g9,'fn':async()=>{const je=jd;let ga=await ej['init']({'input':g8,'output':fT,'tempDir':m,'requestInit':{'headers':fW[je(0x2c8)],'signal':fZ},'proxy':fX['proxyMedia']||fX['proxy']||void 0x0,'resume':ez(fW['url'],fS),'maxRetries':fX['retry'],'maxWorkerCount':g4,'onProgress':gb=>{g2(eA({'title':g0,'progress':gb,'track':fS,'filepath':fT,'target':fV})),g7=eB(gb),g6['update'](g7);}});if(fZ?.['aborted']){C['debug'](je(0x279)+fT);let gb=Error('The\x20operation\x20was\x20aborted');throw gb['name']='AbortError',gb;}await ga['execute']();},'shouldRetry':ga=>!(ga instanceof Error&&ga['name']==='AbortError'),'onRetry':async(ga,gb)=>{let gc=ga instanceof Error?ga['message']:String(ga);C['warn']('Track\x20download\x20retry\x20'+gb+'/'+(g9-0x1)+'\x20scheduled\x20for\x20'+fT+':\x20'+gc);}}),g6['success'](g7);}catch(ga){if(g6['error'](fU),ga instanceof Error&&ga['name']==='AbortError')throw ga;let gb=ga instanceof Error?ga[jd(0x1b3)]:String(ga);throw C['error']('Download\x20track\x20failed:\x20'+gb),ga instanceof Error&&ga['stack']?C[jd(0x2a4)](ga[jd(0x1e7)]):C['debug'](gb),ga instanceof Error?ga:Error(gb);}},eF=fS=>fS instanceof Error&&fS['name']==='AbortError',eG=fS=>!!fS&&typeof fS=='object'&&'aborted'in fS&&'addEventListener'in fS&&typeof fS['addEventListener']=='function';var eH=class extends EventEmitter{#e;#t;#n;#r;#i;#a;constructor({settings:fS,downloadsStorage:fT}){super(),this.#i=fS,this.#a=fT;}async['start'](fS,fT,fU={'id':crypto['randomUUID']()},fV,fW){const jf=gz;eG(fV)?(this.#r=new AbortController(),fV['addEventListener']('abort',()=>{this.#r?.['abort']();})):this.#r=void 0x0;let fX=new D({'proxyUrl':fS['proxy']||fS['proxyMeta']||void 0x0});this.#e={...fS},this.#t=fT,this.#n={...fU};let fY;try{this.#o();let fZ=await di(fX,this.#t);fZ['matchedContentLabel']&&C[jf(0x291)](jf(0x1f8)+fZ['matchedContentLabel']),C['info']('Parsing\x20streams...'),fY=await dg({'http':fX,'options':this.#e,'source':this.#t,'meta':this.#n,'input':fW,'detection':fZ}),this.#e=fY['options'],this.#n=fY['meta'],await aE(this.#i['get']('downloadDir'));let g0=cB({'settings':this.#i,'options':this.#e,'source':this.#t,'meta':this.#n,'allTracks':fY['allTracks']});return this.#s(g0['outputPath'],g0['resolvedFilenameWithoutExtension']),await this.#c(fY,g0);}catch(g2){if(eF(g2))throw g2;let g3=cw(g2);throw this['emit']('error',g3),g3;}finally{await fY?.['dispose']?.();}}#o(){const jg=gz;C['debug']('URL:\x20'+this.#t['url']);let fS='seasonNumber'in this.#n?this.#n[jg(0x200)]:void 0x0,fT='episodeNumber'in this.#n?this.#n['episodeNumber']:void 0x0,fU='episodeTitle'in this.#n?this.#n['episodeTitle']:'',fV=[this.#n['title'],fS?'S'+fS:'',fT?'E'+fT:'',fU]['filter'](Boolean)['join']('\x20∙\x20');fV&&C['info'](fV);}#s(fS,fT){const jh=gz;this['emit']('output-path',fS),C['debug']('Resolved\x20output\x20path:\x20'+fS);let fU=cA(this.#n),fV=this.#a['getByFilePath'](fS);fV&&(fV['title']=fU[jh(0x304)]||fT),C['debug']('Emit\x20download\x20start'),this['emit']('start',this.#a['jobs']);}async #c(fS,fT){C['debug']('Downloading\x20tracks');let fU=[];ct(fS['tracks']['all']);for(let fV of fS['tracks']['all']){let fW=eu({'outputDirectory':fT['outputDirectory'],'resolvedFilenameWithoutExtension':fT['resolvedFilenameWithoutExtension'],'track':fV}),fX=cq(fV,fT['resolvedFilenameWithoutExtension']);fV['type']==='subtitle'&&C['debug']('URL:\x20'+(fV['sourceUrl']??'manifest\x20subtitle\x20track')),await eE({'track':fV,'filepath':fW,'description':fX,'target':{'finalName':fT['filenameWithExtension'],'finalPath':fT['outputPath']},'source':this.#t,'options':this.#e,'settings':this.#i,'abortSignal':this.#r?.['signal'],'title':cA(this.#n)['title'],'emitProgress':fY=>{this['emit']('progress',fY,fT['outputPath']);}}),await aA(fW)&&fU['push'](eD(fV,fW));}return{'downloaded':fU,'psshList':eC(fS['tracks']['all']),'selectedTracks':fS['tracks']['all']};}};const eI=fS=>{try{let fT=new URL(fS),fU=[...new Set(fT['searchParams']['keys']())],fV=fU['length']?'?'+fU['join'](','):'';return''+fT['origin']+fT['pathname']+fV;}catch{return fS;}},eJ=async(fS,fT)=>{const ji=gz;let {verbose:fU,url:fV,resolveLicense:fW}=fT,fX=Buffer['from'](fS,'base64'),fY=ji(0x190),fZ=bp(bo(),'drm'),g0=new RemoteCdm({'keySystem':'com.widevine.alpha','baseUrl':fZ,'headers':{'Authorization':'Bearer\x20'+bJ['accessToken']}}),g2='initializing',g3=null;try{C['debug']('DRM\x20key\x20request\x20started:\x20license='+eI(fV)+',\x20remoteCdm='+eI(fZ)+',\x20psshLength='+fS['length']+',\x20initDataBytes='+fX['length']),g2='requesting-media-key-system-access';let g4=requestMediaKeySystemAccess(g0['keySystem'],[]);g2='creating-media-keys';let g5=await g4['createMediaKeys']({'cdm':g0});g2='creating-session',g3=g5['createSession'](),g2='generating-license-request',C['debug']('Generating\x20license\x20request...');let g6=g3['waitForLicenseRequest']();await g3['generateRequest']('cenc',fX);let g7=await g6;C['debug']('License\x20request\x20of\x20'+g7['length']+'\x20bytes\x20generated\x20for\x20session\x20'+g3['sessionId']),g2='requesting-license',C['debug']('Requesting\x20license\x20at\x20'+fV);let g8=await fW({'url':fV,'pssh':fS,'data':new Uint8Array(g7),'sessionId':g3[ji(0x240)]});if(g8[0x0]===0x7b||g8[0x0]===0x3c){C['debug']('License\x20response\x20is\x20not\x20binary');let ga=Buffer['from'](g8)['toString']('utf8');if(C['debug'](ga),ga['includes']('<html>'))throw Error('Invalid\x20license\x20response');}g2='updating-session',C['debug']('Updating\x20session...'),await g3['update'](new Uint8Array(g8)),g2='waiting-for-key-statuses-change',C['debug']('Waiting\x20for\x20key\x20statuses\x20change...');let g9=await g3['waitForKeyStatusesChange']();C['debug'](ji(0x257)+g9[ji(0x255)]),g2='closing-session',await g3['close'](),await g3['remove']();for(let gb of g9){let gc='Key:\x20'+gb['keyId']+':'+gb['key'];fU?C['info'](gc):C['debug'](gc);}return g9['map'](gd=>({'kid':gd['keyId'],'key':gd['key']}));}catch(gd){throw C[ji(0x1be)]('Failed\x20to\x20get\x20DRM\x20content\x20keys\x20at\x20stage='+g2+'\x20for\x20license='+eI(fV)+'\x20via\x20remoteCdm='+eI(fZ)),cp('DRM\x20content\x20key\x20error',gd),gd;}finally{if(g3){try{await g3['close']();}catch{}try{await g3['remove']();}catch{}}}},eK=async({keys:fS,drm:fT,psshList:fU,drmDir:fV,resolveLicense:fW,licenseUrl:fX})=>{const jj=gz;C['debug']('Extracting\x20decryption\x20keys');let fY=[],fZ=fT&&jj(0x2be)in fT?fT['keys']:[],g0=[...fS||[],...fZ];g0['length']&&fY[jj(0x2c2)](...g0);let g2=fX??(fT&&'server'in fT?fT['server']:void 0x0);if(fW&&g2){let g3=[...new Set(fU??[])];for(let [g4,g5]of g3['entries']()){C['debug']('Resolving\x20DRM\x20keys\x20for\x20PSSH\x20'+(g4+0x1)+'/'+g3['length']+'\x20using\x20'+eI(g2)),C['debug']('PSSH:\x20'+g5);let g6=await eJ(g5,{'url':g2,'resolveLicense':fW,'clientDir':fV});g6&&g6['length']&&fY[jj(0x2c2)](...g6);}fY['length']||(C['warn']('Can\x27t\x20get\x20decryption\x20keys'),C[jj(0x2a4)]('PSSH:\x20'+g3['join'](',\x20')));}return fY;};var eL=class{['strategy'];constructor(fS){this['strategy']=fS;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](fS){let fT=await this['strategy']['decryptFile'](fS);return fS['cleanup']&&await rm(fS['input'],{'force':!0x0}),fT;}};const eM=fS=>fS['replaceAll']('-','')['toLowerCase']();var eN=class{async['decryptFile'](fS){const jk=gz;let fT=new Map();for(let fU of fS['keys']){if(!fU[jk(0x1ba)])throw Error('Shifro\x20requires\x20a\x20KID\x20for\x20every\x20decryption\x20key');fT[jk(0x227)](eM(fU['kid']),eM(fU[jk(0x276)]));}return C['debug']('Decrypting\x20via\x20shifro:\x20'+fS[jk(0x1a7)]),await(await Decryption['init']({'input':new X({'source':new FilePathSource(fS['input']),'keys':fT}),'output':new Y({'target':new FilePathTarget(fS['output'])})}))['execute'](),fS['output'];}};const eO=/(?:(.+?)\n)?((?:\d{2}:)?\d{2}:\d{2}\.\d{3})\s+-->\s+((?:\d{2}:)?\d{2}:\d{2}\.\d{3})([^\n]*)/g,eP=/^\uFEFF?WEBVTT(?:.|\n)*?\n{2}/,eQ=/(?:(\d{2}):)?(\d{2}):(\d{2})\.(\d{3})/,eR={'ar':'ara','de':'deu','en':'eng','es':'spa','fr':'fra','hi':'hin','it':'ita','ja':'jpn','ko':'kor','pl':'pol','pt':'por','ru':'rus','th':'tha','tr':gz(0x2b8),'uk':'ukr','und':'und','vi':'vie','zh':'zho'},eS=fS=>fS==='subtitle'||fS==='text',eT=fS=>{const jl=gz;let fT=fS['trim']()[jl(0x2c7)](':');if(fT['length']<0x2||fT['length']>0x3)throw Error('Invalid\x20trim\x20timestamp:\x20'+fS);let fU=Number(fT['at'](-0x1)),fV=Number(fT['at'](-0x2)),fW=fT['length']===0x3?Number(fT[0x0]):0x0;if(![fW,fV,fU]['every'](fX=>Number['isFinite'](fX)&&fX>=0x0))throw Error('Invalid\x20trim\x20timestamp:\x20'+fS);return fW*0xe10+fV*0x3c+fU;},eU=fS=>{const jm=gz;let fT=eQ['exec'](fS);if(!fT)throw Error(jm(0x2d5)+fS);return 0xe10*0x3e8*Number(fT[0x1]||'0')+0x3c*0x3e8*Number(fT[0x2])+0x3e8*Number(fT[0x3])+Number(fT[0x4]);},eV=fS=>{let fT=Math['floor'](fS/(0xe10*0x3e8)),fU=Math['floor'](fS%(0xe10*0x3e8)/(0x3c*0x3e8)),fV=Math['floor'](fS%(0x3c*0x3e8)/0x3e8),fW=fS%0x3e8;return fT['toString']()['padStart'](0x2,'0')+':'+fU['toString']()['padStart'](0x2,'0')+':'+fV['toString']()['padStart'](0x2,'0')+'.'+fW['toString']()['padStart'](0x3,'0');},eW=fS=>{const jn=gz;let fT=[fS[jn(0x2ed)]?.['length']?fS['invalidEntries']['length']+'\x20invalid\x20entries':void 0x0,fS['invalidTimecodes']?.['length']?fS['invalidTimecodes']['length']+'\x20invalid\x20timecodes':void 0x0,fS[jn(0x2cc)]?.['length']?fS[jn(0x2cc)]['length']+'\x20invalid\x20indices':void 0x0,fS['timecodeIssues']?.['reversedTimecodes']?.['length']?fS['timecodeIssues'][jn(0x28c)]['length']+'\x20reversed\x20timecodes':void 0x0,fS[jn(0x191)]?.['overlappingTimecodes']?.['length']?fS['timecodeIssues']['overlappingTimecodes']['length']+'\x20overlapping\x20timecodes':void 0x0]['filter'](Boolean);return fT['length']?'\x20('+fT['join'](',\x20')+')':'';},eX=fS=>{let fT=fS['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(eP['test'](fT))return fT;let {subtitle:fU,status:fV}=convert(fS,'.vtt');if(!fV['success'])throw Error('Failed\x20to\x20convert\x20subtitle\x20to\x20WebVTT'+eW(fV)+'.');return fU['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();},eY=fS=>{if(!fS)return;let fT=fS['trim']()['toLowerCase']();if(!fT)return;let fU=fT['split']('-')[0x0]??fT;return/^[a-z]{3}$/['test'](fU)?fU:eR[fU];},eZ=fS=>{const jo=gz;switch(extname(fS)['toLowerCase']()){case'.mp4':return new Mp4OutputFormat();case'.mkv':return new MkvOutputFormat();default:throw Error(jo(0x1c9)+fS);}},f0=fS=>new V({'formats':U,'source':cD(fS)}),f1=fS=>{let fT=fS['trimBegin']?eT(fS['trimBegin']):void 0x0,fU=fS['trimEnd']?eT(fS['trimEnd']):void 0x0;if(fT!==void 0x0&&fU!==void 0x0&&fU<=fT)throw Error('trimEnd\x20must\x20be\x20greater\x20than\x20trimBegin');return{'trimBegin':fT,'trimEnd':fU};},f2=async(fS,fT,fU,fV,fW)=>{let fX=f0(fT),fY=await fX['getPrimaryVideoTrack']();if(!fY)throw Error('Missing\x20video\x20track\x20in\x20'+fT);let fZ=fY['codec'];if(!fZ)throw Error('Unknown\x20video\x20codec\x20in\x20'+fT);if(fW!==void 0x0&&fW>=await fY['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20video\x20track\x20in\x20'+fT);let g0=new EncodedPacketSink(fY),g2=fW===void 0x0?await g0['getFirstKeyPacket']({'verifyKeyPackets':!0x0}):await g0['getKeyPacket'](fW,{'verifyKeyPackets':!0x0})??await g0['getFirstKeyPacket']({'verifyKeyPackets':!0x0});if(!g2)throw Error('No\x20video\x20packets\x20found\x20in\x20'+fT);let g3=new EncodedVideoPacketSource(fZ);return fS['addVideoTrack'](g3,{'disposition':fY['disposition'],'name':fU??fY['name']??void 0x0,'rotation':fV['supportsVideoRotationMetadata']?fY['rotation']:void 0x0}),{'kind':'video','input':fX,'sink':g0,'source':g3,'startPacket':g2,'startTimestamp':g2['timestamp'],'emit':async g4=>{let g5={'decoderConfig':await fY['getDecoderConfig']()??void 0x0},g6=!0x0;for await(let g7 of g0['packets'](g2,void 0x0,{'verifyKeyPackets':!0x0}))await g3['add'](g7['clone']({'timestamp':g7['timestamp']-g4}),g6?g5:void 0x0),g6=!0x1;g3['close']();}};},f3=async(fS,fT,fU,fV,fW)=>{const jp=gz;let fX=f0(fT),fY=await fX['getPrimaryAudioTrack']();if(!fY)throw Error('Missing\x20audio\x20track\x20in\x20'+fT);let fZ=fY[jp(0x1c4)];if(!fZ)throw Error('Unknown\x20audio\x20codec\x20in\x20'+fT);if(fW!==void 0x0&&fW>=await fY['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20audio\x20track\x20in\x20'+fT);let g0=new EncodedPacketSink(fY),g2=fW===void 0x0?await g0[jp(0x2e7)]():await g0['getPacket'](fW)??await g0[jp(0x2e7)]();if(!g2)throw Error('No\x20audio\x20packets\x20found\x20in\x20'+fT);let g3=new EncodedAudioPacketSource(fZ);return fS[jp(0x194)](g3,{'disposition':fY['disposition'],'languageCode':eY(fU)??eY(fY['languageCode']),'name':fV??fY['name']??void 0x0}),{'kind':jp(0x220),'input':fX,'sink':g0,'source':g3,'startPacket':g2,'startTimestamp':g2['timestamp'],'emit':async g4=>{const jq=jp;let g5={'decoderConfig':await fY['getDecoderConfig']()??void 0x0},g6=!0x0;for await(let g7 of g0['packets'](g2))await g3['add'](g7['clone']({'timestamp':g7['timestamp']-g4}),g6?g5:void 0x0),g6=!0x1;g3[jq(0x2ac)]();}};},f4=(fS,{trimBegin:fT,trimEnd:fU,commonStart:fV})=>{const jr=gz;let fW=fS['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(!eP['test'](fW))throw Error('Only\x20WebVTT\x20subtitles\x20are\x20supported\x20by\x20the\x20MediaBunny\x20muxer.');let fX=fT===void 0x0?void 0x0:Math['round'](fT*0x3e8),fY=fU===void 0x0?void 0x0:Math['round'](fU*0x3e8),fZ=Math['round'](fV*0x3e8);eO['lastIndex']=0x0;let g0=eO['exec'](fW),g2=fW['slice'](0x0,g0?.['index']??fW['length'])[jr(0x2cf)](),g3=[],g4=g0?fW['slice'](g0['index']):'';for(;;){eO['lastIndex']=0x0;let g5=eO['exec'](g4);if(!g5)break;let g6=g5['index']+g5[0x0]['length'],g7=g4['indexOf']('\x0a',g6)+0x1,g8=g4['indexOf']('\x0a\x0a',g6);g8===-0x1&&(g8=g4['length']);let g9=g5[0x1]?.['trim'](),ga=g5[0x4]?.['trim'](),gb=g4['slice'](g7,g8)['trim'](),gc=eU(g5[0x2]),gd=eU(g5[0x3]),ge=Math['max'](gc,fX??gc)-fZ,gf=Math['min'](gd,fY??gd)-fZ;if(gf>ge){let gg=eV(ge)+'\x20-->\x20'+eV(gf)+(ga?'\x20'+ga:'');g3['push']([g9,gg,gb]['filter'](Boolean)['join']('\x0a'));}g4=g4['slice'](g8)[jr(0x1b0)]();}return[g2,...g3]['filter'](Boolean)['join']('\x0a\x0a');},f5=async(fS,fT,fU,fV,fW)=>{const js=gz;if(fU['type']==='video')return f2(fS,fU['path'],fU['label'],fT,fV);if(fU['type']==='audio')return f3(fS,fU['path'],fU['language'],fU['label'],fV);if(eS(fU['type'])){let fX=eX(await readFile(fU['path'],js(0x2ef))),fY=new TextSubtitleSource('webvtt');return fS['addSubtitleTrack'](fY,{'disposition':fU['forced']?{'forced':!0x0}:void 0x0,'languageCode':eY(fU['language']),'name':fU['label']}),{'kind':'subtitle','source':fY,'emit':async fZ=>{let g0=f4(fX,{'trimBegin':fV,'trimEnd':fW,'commonStart':fZ});await fY['add'](g0),fY['close']();}};}throw Error('Unsupported\x20mux\x20input\x20type:\x20'+fU['type']);};var f6=class{async['mux'](fS){const jt=gz;let {trimBegin:fT,trimEnd:fU}=f1(fS),fV=eZ(fS['output']),fW=new Output({'format':fV,'target':cE(fS['output'])}),fX=[];try{for(let g0 of fS['inputs'])fX['push'](await f5(fW,fV,g0,fT,fU));let fY=fX['filter'](g2=>g2['kind']!=='subtitle');if(!fX['length'])throw Error('No\x20tracks\x20provided\x20for\x20muxing.');let fZ=fY['length']>0x0?Math['min'](...fY['map'](g2=>g2['startTimestamp'])):fT??0x0;await fW['start']();for(let g2 of fX){if(g2['kind']==='subtitle'){await g2[jt(0x253)](fZ);continue;}await g2['emit'](fZ);}return await fW['finalize'](),fS['output'];}catch(g3){throw await fW['cancel']()['catch'](()=>void 0x0),g3;}finally{for(let g4 of fX)g4['kind']!=='subtitle'&&g4['input']['dispose']();}}},f7=class{['strategy'];constructor(fS){const ju=gz;this[ju(0x212)]=fS;}async['prepare'](){const jv=gz;await this[jv(0x212)]['prepare']?.();}async[gz(0x2f1)](fS){let fT=await this['strategy']['mux'](fS);if(fS['cleanup']){for(let fU of new Set(fS['inputs']['map'](fV=>fV['path'])))await rm(fU,{'force':!0x0});}return fT;}},f8=class{['fn'];['next']=null;constructor(fS){this['fn']=fS,this['next']=null;}},f9=class{['first']=null;['last']=null;constructor(){this['first']=null,this['last']=null;}['add'](fS){const jw=gz;let fT=new f8(fS);return this[jw(0x2f4)]?this['last']['next']=fT:this['first']=fT,this['last']=fT,this;}async['process'](fS){let fT=this['first'],fU=async()=>await fT['fn'](fS,async()=>{const jx=b;if(fT=fT[jx(0x2c1)],fT)return await fU();throw Error(jx(0x2d2));});return await fU();}};const fa=async(fS,fT)=>{const jy=gz;if(!fS[jy(0x2be)]['length'])return fT();let fU=eq('Decrypting'),fV=new eL(new eN());await fV[jy(0x241)]();for(let fW of fS['inputs']){let fX=extname(fW['path']),fY=fW['path']['replace'](fX,'.dec'+fX);if(!(fW['type']!=='video'&&fW[jy(0x1c1)]!==jy(0x220))){if(await fV['process']({'input':fW['path'],'output':fY,'keys':fS['keys'],'type':fW['type'],'cleanup':!0x0}),!existsSync(fY))throw Error(jy(0x2b7)+fW['path']+'.\x20Unable\x20to\x20find\x20'+fY);fW['path']=fY;}}fU[jy(0x2e6)](jy(0x1ff)),await fT();},fb=async(fS,fT)=>{const jz=gz;if(fS['skipMux'])return fT();let fU=eq('Muxing'),fV=new f7(new f6());await fV['prepare'](),await fV['process']({'inputs':fS[jz(0x293)],'output':fS['output'],'trimBegin':fS['trimBegin'],'trimEnd':fS['trimEnd'],'cleanup':!0x0}),existsSync(fS['output'])?(fU['success']('Muxed'),C['debug']('Muxed:\x20'+fS['output'])):fU[jz(0x1be)]('Muxing\x20failed.\x20Output\x20file\x20not\x20found:\x20'+fS['output']);},fc=0x1,fd=0x4,fe=0x8,ff=0x10,fg=(fS,fT)=>Math[gz(0x1d7)](fc,Math['trunc'](typeof fS=='number'&&Number['isFinite'](fS)?fS:fT)),fh=fS=>fS['includes']('highConnectionsCount')?ff:fS[gz(0x2b1)]('mediumConnectionsCount')?fe:fd,fi=({requestedConnections:fS,fallbackConnections:fT=fc,grantedBenefits:fU})=>{let fV=fg(fS,fg(fT,fc)),fW=fh(fU),fX=Math['min'](fV,fW);return{'connections':fX,'normalizedRequestedConnections':fV,'maxAllowedConnections':fW,'wasClamped':fX<fV};},fj=async fS=>{const jA=gz;let {grantedBenefits:fT}=await bU(),fU=null,fV=fT['includes']('parallelDownloads'),fW=fS['maxActiveDownloads']&&fS['maxActiveDownloads']>0x1;if(!fV&&fW&&(fU=Error('PARALLEL_DOWNLOADS_NOT_ALLOWED'),fS['maxActiveDownloads']=0x1),fS['proxy']||fS['proxyMeta']||fS['proxyMedia']){let fX=fT['includes']('proxy'),fY=fS['proxy']||fS['proxyMeta']||fS['proxyMedia'];!fX&&fY&&(fU=Error('PROXY_NOT_ALLOWED'),delete fS[jA(0x1b4)],delete fS['proxyMeta'],delete fS['proxyMedia']);}if(fS['videoContainerFormat']&&fS[jA(0x1d4)]!==jA(0x2c6)&&(fT['includes']('customMuxFormat')||(fU=Error('CUSTOM_MUX_FORMAT_NOT_ALLOWED'),fS[jA(0x1d4)]='mp4')),typeof fS['connections']=='number'){let {connections:fZ}=fi({'requestedConnections':fS[jA(0x1b2)],'grantedBenefits':fT});fS['connections']=fZ;}return{'error':fU,'data':fS};},fk=fS=>({'retry':fS[gz(0x26a)](gz(0x224)),'connections':fS['get']('connections'),'proxy':fS['get']('proxy'),'proxyMeta':fS['get']('proxyMeta'),'proxyMedia':fS['get'](gz(0x228)),'movieTemplate':fS['get']('movieFilenameTemplate'),'episodeTemplate':fS['get']('seriesFilenameTemplate'),'hardsub':fS['get'](gz(0x2a0)),'format':fS['get']('videoContainerFormat')}),fl=({options:fS,fallbackConnections:fT,grantedBenefits:fU})=>{let fV=fi({'requestedConnections':fS['connections'],'fallbackConnections':fT,'grantedBenefits':fU});return{'options':{...fS,'connections':fV['connections']},'limit':fV};},fm=({settings:fS,requestedOptions:fT,filePath:fU,grantedBenefits:fV})=>{let fW=fk(fS),{options:fX,limit:fY}=fl({'options':{...fW,...fT},'fallbackConnections':fW['connections'],'grantedBenefits':fV});return fU&&(fX['outputPath']=fU),{'baseOptions':fW,'options':fX,'limit':fY};};var fn=class{['settings'];['extensionManager'];['downloadsStorage'];['callbacks'];constructor(fS,fT,fU,fV){const jB=gz;this['settings']=fS,this[jB(0x1b1)]=fT,this['downloadsStorage']=fU,this['callbacks']=fV;}async['run'](fS,fT,fU){const jC=gz;let fV;try{fS['status']='downloading',await this['callbacks']['persistJob'](fS),this['callbacks']['emitStatusChanged'](fS);let {options:fW,limit:fX}=fm({'settings':this['settings'],'requestedOptions':fS['options'],'filePath':fS['filePath'],'grantedBenefits':fU});fX['wasClamped']&&C['warn']('Connections\x20value\x20'+fX['normalizedRequestedConnections']+'\x20exceeds\x20tier\x20limit\x20('+fX['maxAllowedConnections']+').\x20Using\x20'+fX['connections']+'.');let fY=new eH({'settings':this['settings'],'downloadsStorage':this['downloadsStorage']});this.#e(fS,fT,fY);let fZ=fS['resource'];if(!fZ)throw Error('Download\x20job\x20is\x20missing\x20a\x20media\x20resource');let g0=fS['url']?await this['extensionManager']['getExtensionForUrl'](fS[jC(0x1a3)]):null,g2=fS['url']?await ci({'resource':fZ,'url':fS['url'],'options':fW,'extension':g0}):{'source':fZ['source']};fV=g2['input'],fZ['source']=g2['source'],await this['callbacks']['persistJob'](fS),g0&&await bf(g0);let {downloaded:g3=[],psshList:g4,selectedTracks:g5}=await fY[jC(0x21c)](fW,g2['source'],fZ['metadata'],fT['signal'],g2[jC(0x1a7)]);if(fT['signal'][jC(0x1df)])return;if(!g3['length'])throw G['emit']('error',{'code':'NO_FILES_DOWNLOADED'}),Error('No\x20files\x20were\x20downloaded');g3['length']&&!fS[jC(0x1e8)]&&(fS[jC(0x1e8)]=g3[0x0]?.['path']),this['callbacks']['trackArtifact'](fS['id'],fS['filePath']);for(let g8 of g3)this['callbacks']['trackArtifact'](fS['id'],g8['path']);if(fS['status']!==jC(0x1db))return;fS['status']='processing',this['callbacks']['emitStatusChanged'](fS);let g6=await this.#r({'job':fS,'options':fW,'psshList':g4??[],'selectedTracks':g5,'extension':g0,'resolvedEntry':g2['entry'],'resolvedInput':g2[jC(0x1a7)]}),g7=new f9();g7[jC(0x2f8)](fa)['add'](fb),await g7['process']({'inputs':g3,'output':fS['filePath'],'keys':g6,'trimBegin':fW['trimBegin'],'trimEnd':fW['trimEnd'],'binariesDir':this['settings']['get']('binariesDir'),'skipMux':fW['skipMux']}),g0&&await bg(g0,{'skipMux':fW['skipMux']}),fS['status']='completed',fS['progress']=0x64,this['callbacks']['emitStatusChanged'](fS),this['callbacks']['emitJobCompleted'](fS);}catch(g9){if(g9 instanceof Error&&g9['name']==='AbortError'){C['debug']('Download\x20was\x20aborted\x20(paused):\x20'+fS['id']);return;}let {normalizedError:ga,alreadyHandled:gb}=this.#t(fS,g9);if(this.#n(ga),gb)return;C['error']('Download\x20job\x20failed:\x20'+ga),cp('Download\x20job\x20failure',ga),this['callbacks'][jC(0x1e5)](fS),this['callbacks']['emitJobError'](fS,ga);}finally{await fV?.['dispose']?.();}}#e(fS,fT,fU){const jF=gz;fU['on']('output-path',fW=>{const jD=b;fS['filePath']=fW,this['callbacks'][jD(0x233)](fS['id'],fW),this[jD(0x230)]['persistJob'](fS),C['debug']('Job\x20output\x20path\x20persisted\x20early:\x20id='+fS['id']+',\x20path='+fW);});let fV={};fU['on']('progress',fW=>{const jE=b;if(fT['signal']['aborted']||fS['status']!=='downloading')return;fV[fW['trackPath']]=fW,this[jE(0x230)]['trackArtifact'](fS['id'],fW['trackPath']),this['callbacks']['trackArtifact'](fS['id'],fW['finalPath']);let fX=0x0,fY=0x0;for(let g0 in fV)fX+=fV[g0]['current']['b'],fY+=fV[g0][jE(0x209)]['b'];let fZ=fY>0x0?fX/fY*0x64:0x0;fS['filePath']=fW['finalPath'],fS['progress']=fZ,fS['downloadedBytes']=fX,fS[jE(0x239)]=fY,fW['quality']&&(fS['quality']=fW[jE(0x1cc)]),fW['codec']&&(fS[jE(0x1c4)]=fW['codec']),this[jE(0x230)]['emitProgress'](fS),this['callbacks']['persistJob'](fS);}),fU['on'](jF(0x1be),fW=>{const jG=jF;if(fS['status']==='paused'||fT['signal']['aborted'])return;let {normalizedError:fX,alreadyHandled:fY}=this.#t(fS,fW);fY||(C['error']('Downloader\x20process\x20failed:\x20'+fX[jG(0x1b3)]),fX['stack']&&C['debug'](fX['stack']),this['callbacks']['emitStatusChanged'](fS),this['callbacks']['emitJobError'](fS,fX));});}#t(fS,fT){const jH=gz;let fU=fT instanceof Error?fT:Error(String(fT)),fV=fS['status']===jH(0x1be)&&fS['error']===fU['message'];return fV||(fS['status']='error',fS['error']=fU[jH(0x1b3)]),{'normalizedError':fU,'alreadyHandled':fV};}#n(fS){const jI=gz;(fS&&typeof fS=='object'&&'code'in fS?String(fS['code']):'')===jI(0x23b)&&G['emit']('error',{'code':'DOWNLOAD_DIR_NOT_WRITABLE'});}async #r({job:fS,options:fT,psshList:fU,selectedTracks:fV,extension:fW,resolvedEntry:fX,resolvedInput:fY}){const jJ=gz;let fZ=fS['resource']?.['source']?.['drm']??fS['resource']?.['drm'];fS['resource']?.[jJ(0x2c9)]&&fS['url']&&(fZ=await cj(fS[jJ(0x20b)],fT,fW));let g0=await this.#i({'extension':fW,'selectedTracks':fV,'resolvedEntry':fX,'resolvedInput':fY,'options':fT}),g2=await this.#a({'extension':fW,'selectedTracks':fV,'resolvedEntry':fX,'resolvedInput':fY,'options':fT}),g3=fZ&&'server'in fZ?c7(fZ):void 0x0,g4=g2['resolveLicense']??g3,g5=g2['licenseUrl']??(fZ&&'server'in fZ?fZ['server']:void 0x0);return eK({'keys':[...fT['keys']??[],...g0],'drm':fZ,'psshList':fU,'drmDir':this['settings']['get']('drmDir'),'resolveLicense':g4,'licenseUrl':g5})['catch'](g6=>{const jK=jJ;throw C['error']('Failed\x20to\x20extract\x20decryption\x20keys\x20for\x20job\x20'+fS['id']),C['debug']('DRM\x20extraction\x20context:\x20title='+(fS['title']||fS['resource']?.['metadata']?.['title']||'(unknown)')+',\x20drmServer='+(fZ&&'server'in fZ?fZ['server']:jK(0x29d))+jK(0x1ec)+fU['length']+',\x20providedKeyCount='+(fT['keys']?.['length']??0x0)),g6 instanceof Error?(cp('DRM\x20extraction\x20failure',g6),g6['message']==='Unauthorized'&&G[jK(0x253)]('error',{'code':'DRM_UNAUTHORIZED'}),g6['message']==='Forbidden'&&G['emit']('error',{'code':'DRM_FORBIDDEN'})):C['debug'](String(g6)),g6;});}async #i({extension:fS,selectedTracks:fT,resolvedEntry:fU,resolvedInput:fV,options:fW}){const jL=gz;if(!fS||!fU||!fV)return[];let fX=bb(fS);if(typeof fX[jL(0x2d6)]?.['getKeys']!='function')return[];let fY=new Map(),fZ={...fU,'input':fV};for(let g0 of fT){if(!g0['inputTrack'])continue;let g2=(await cP(g0)['catch'](()=>[]))[0x0],g3=g2?.['initSegment']?.[jL(0x207)]??g2?.['encryption'],g4=[g3?.['drm']?.['widevine']?'widevine':null,g3?.['drm']?.['playready']?'playready':null,g3?.['drm']?.['fairplay']?'fairplay':null]['filter'](Boolean)[0x0];if(!g4)continue;let g5=await fX['drm'][jL(0x2f0)]({'system':g4,'entry':fZ,'track':g0['inputTrack'],'options':fW});for(let [g6,g7]of g5??[])fY['set'](g6,g7);}return Array['from'](fY,([g8,g9])=>({'kid':g8,'key':g9}));}async #a({extension:fS,selectedTracks:fT,resolvedEntry:fU,resolvedInput:fV,options:fW}){const jM=gz;if(!fS||!fU||!fV)return{};let fX=bb(fS);if(typeof fX['drm']?.['getLicense']!='function')return{};let fY=await this.#o(fT);if(!fY['size'])return{};let fZ={...fU,'input':fV};return{'licenseUrl':'extension://'+fS['package'][jM(0x231)]+'/license','resolveLicense':async({pssh:g0,data:g2})=>{let g3=fY['get'](g0);if(!g3)throw Error('No\x20DRM\x20track\x20binding\x20found\x20for\x20PSSH\x20'+g0);return await fX['drm']['getLicense']({'system':g3['system'],'entry':fZ,'track':g3['track'],'options':fW,'data':g2});}};}async #o(fS){const jN=gz;let fT=new Map();for(let fU of fS){if(!fU['inputTrack'])continue;let fV=(await cP(fU)[jN(0x1a6)](()=>[]))[0x0],fW=fV?.['initSegment']?.['encryption']??fV?.[jN(0x207)];for(let fX of[this.#s(fU,'widevine',fW?.[jN(0x2d6)]?.['widevine']?.['pssh']),this.#s(fU,'playready',fW?.['drm']?.['playready']?.['pssh']),this.#s(fU,'fairplay',fW?.['drm']?.['fairplay']?.['pssh'])])!fX||fT['has'](fX['pssh'])||fT['set'](fX['pssh'],fX);}return fT;}#s(fS,fT,fU){const jO=gz;if(!fS[jO(0x22a)]||!fU)return null;let fV=typeof fU=='string'?fU:fU instanceof Uint8Array||fU instanceof ArrayBuffer?Buffer['from'](fU)['toString'](jO(0x292)):null;return fV?{'pssh':fV,'system':fT,'track':fS[jO(0x22a)]}:null;}},fo=class extends EventEmitter{['settings'];['extensionManager'];['downloadsStorage'];#e=new ck();#t=new Map();#n=null;#r;['maxActiveDownloads'];constructor(fS,fT,fU){const jP=gz;super(),this['settings']=fS,this['extensionManager']=fT,this['downloadsStorage']=fU,this['maxActiveDownloads']=fS['get']('maxActiveDownloads'),this.#r=new fn(fS,fT,fU,{'persistJob':fV=>this['downloadsStorage']['update'](fV),'emitStatusChanged':fV=>this['emit']('job-status-changed',fV),'emitProgress':fV=>this[jP(0x253)]('job-progress',fV),'emitJobError':(fV,fW)=>this['emit']('job-error',fV,fW),'emitJobCompleted':fV=>this['emit']('job-completed',fV),'trackArtifact':(fV,fW)=>this.#m(fV,fW)}),C['debug']('Created\x20download\x20manager\x20with\x20max\x20active\x20downloads:\x20'+this['maxActiveDownloads']);}async['initializeFromStorage'](){const jQ=gz;let fS=new Set(['downloading',jQ(0x1dc),jQ(0x2d3),'pending','analyzing']);for(let fT of this['downloadsStorage']['jobs'])fT['status']==='paused'||fT['status']==='completed'||fT['status']==='error'||fS[jQ(0x225)](fT['status'])&&(fT['status']!=='queued'&&(fT['status']='queued',fT['error']=void 0x0,await this['downloadsStorage']['update'](fT)),this.#d(fT));this.#s();}async['analyze'](fS,fT={}){const jR=gz;if(!fS){let fV=Error('Cannot\x20prepare\x20job\x20without\x20a\x20URL.');throw this['emit']('error',fV),fV;}let fU=await ch(fS,fT,await this[jR(0x1b1)]['getExtensionForUrl'](fS));if(!fU)throw Error('No\x20media\x20resource\x20found');return fU;}async[gz(0x2f8)](fS){if(!fS['url']&&!fS['resource'])throw Error('Job\x20must\x20have\x20either\x20a\x20URL\x20or\x20a\x20pre-prepared\x20resource.');let fT={'id':crypto['randomUUID'](),'status':'queued','progress':0x0,'downloadedBytes':0x0,'createdAt':new Date()['toISOString'](),...fS};C['debug']('Adding\x20new\x20job:\x20'+fT['id']),C['debug']('URL:\x20'+fT['url']),await this['downloadsStorage']['add'](fT),this['emit']('job-added',fT),this.#d(fT),this.#s();}async['pause'](fS){let fT=await this.#i(fS,'pause');fT&&C['debug']('Paused\x20download:\x20'+fT['id']);}async['resume'](fS){const jS=gz;let fT=this.#e['getActiveRun'](fS);if(fT){fT['cancellationReason']==='pause'||fT['controller']['signal']['aborted']?(this.#e['queueResumeAfterStop'](fS),C['debug']('Resume\x20queued\x20until\x20stop\x20completes:\x20'+fS)):C['debug']('Resume\x20skipped\x20while\x20job\x20is\x20active:\x20'+fS);return;}let fU=this.#y(fS);if(!fU){C['warn']('Resume\x20failed:\x20Job\x20'+fS+'\x20not\x20found');return;}if(fU['status']===jS(0x27e)){await this.#a(fU),C['debug']('Resumed\x20download:\x20'+fU['id']);return;}fU['status']==='error'&&await this.#o(fU)&&C['debug']('Retried\x20download:\x20'+fU['id']);}async['remove'](fS){await this.#i(fS,'remove'),await this['downloadsStorage']['delete'](fS),this.#t['delete'](fS);}async['removeWithFile'](fS){let fT=this.#y(fS),fU=await this.#i(fS,'remove-with-file')||fT,fV=this.#h(fS,fU);await this['downloadsStorage']['delete'](fS),await this.#_(fV),this.#t['delete'](fS);}async #i(fS,fT){const jT=gz;let fU=this.#f(fS),fV=this.#e['getActiveRun'](fS),fW=this.#y(fS);return fV?fT===jT(0x2e9)&&fV['job']['status']!=='downloading'?(C['debug']('Pause\x20ignored\x20for\x20non-downloading\x20stage:\x20id='+fS+',\x20stage='+fV['job']['status']),fV['job']):(fV['cancellationReason']=fT,fT==='pause'&&(fV['job']['status']='paused',fV['job']['error']=void 0x0,await this['downloadsStorage']['update'](fV['job']),this['emit']('job-status-changed',fV['job'])),fV['controller']['abort'](),await fV['runPromise'],fV['job']):(fT==='pause'&&fW&&(fU||fW['status']==='queued')&&(fW['status']='paused',fW['error']=void 0x0,await this['downloadsStorage']['update'](fW),this['emit']('job-status-changed',fW)),fW??void 0x0);}async #a(fS){const jU=gz;fS[jU(0x218)]='queued',fS['error']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS),this.#d(fS),this.#s();}async #o(fS){const jV=gz;let fT=this.#h(fS['id'],fS);this.#t[jV(0x27a)](fS['id']),await this.#_(fT),fS['status']='analyzing',fS['error']=void 0x0,fS['progress']=0x0,fS['downloadedBytes']=0x0,fS['totalBytes']=void 0x0,fS['quality']=void 0x0,fS['codec']=void 0x0,await this['downloadsStorage'][jV(0x1bf)](fS),this['emit']('job-status-changed',fS);try{if(fS[jV(0x1a3)]){let fU=await this['analyze'](fS['url'],fS['options']??{}),fV=this.#g(fS,fU);if(!fV)throw Error(jV(0x247));fS['resource']=fV;}return await this.#a(fS),!0x0;}catch(fW){return fS['status']='error',fS['error']=fW instanceof Error?fW['message']:String(fW),await this[jV(0x1c7)]['update'](fS),this['emit']('job-status-changed',fS),this[jV(0x253)]('job-error',fS,fW),!0x1;}}#s(){for(this['maxActiveDownloads']=this['settings']['get']('maxActiveDownloads');this.#e['activeRunCount']<this['maxActiveDownloads'];){let fS=this.#p();if(!fS)break;this.#c(fS);}this.#e['queuedCount']===0x0&&this.#e['activeRunCount']===0x0&&this['emit']('idle');}#c(fS){if(fS['status']!=='queued'){C['warn']('Skipping\x20non-queued\x20job\x20start:\x20'+fS['id']+'\x20('+fS['status']+')');return;}let fT=new AbortController(),fU={'controller':fT,'job':fS,'runPromise':Promise['resolve']()};this.#e['setActiveRun'](fS['id'],fU),fU['runPromise']=this.#u(fS,fT)['catch'](fV=>{let fW=fV instanceof Error?fV:Error('Download\x20run\x20failed:\x20'+String(fV));C['error'](fW['message']),this['emit']('error',fW);});}async #l(){const jW=gz;if(this.#n)return this.#n;try{let {grantedBenefits:fS}=await bU();this.#n=fS;}catch(fT){let fU=fT instanceof Error?fT[jW(0x1b3)]:String(fT);C['warn']('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+fU),this.#n=[];}return this.#n;}async #u(fS,fT){this.#e['setActiveJob'](fS);try{let fU=await this.#l();await this.#r['run'](fS,fT,fU);}finally{let fV=this.#e['getActiveRun'](fS['id']);if(fV){let fW=fV?.['cancellationReason'],fX=fW==='pause'&&this.#e['consumeResumeAfterStop'](fS['id']);fW==='pause'?(fS['status']='paused',fS['error']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS)):fW!=='remove'&&fW!=='remove-with-file'&&await this['downloadsStorage']['update'](fS),this.#e['deleteActiveJob'](fS['id']),this.#e['deleteActiveRun'](fS['id']),fX&&fS['status']==='paused'&&(fS['status']='queued',fS['error']=void 0x0,await this['downloadsStorage']['update'](fS),this['emit']('job-status-changed',fS),this.#d(fS)),this.#s();}}}#d(fS){this.#e['enqueue'](fS);}#f(fS){return this.#e['dequeue'](fS);}#p(){return this.#e['dequeueNext'](fS=>this.#y(fS));}#m(fS,fT){const jX=gz;if(!fT)return;let fU=this.#t['get'](fS);fU||(fU=new Set(),this.#t['set'](fS,fU)),fU[jX(0x2f8)](fT);}#h(fS,fT){const jY=gz;let fU=new Set();for(let fW of this.#t['get'](fS)??[])fU['add'](fW);fT?.['filePath']&&fU['add'](fT['filePath']);let fV=new Set();for(let fX of fU)fV['add'](fX),fV[jY(0x2f8)](fX+'.part.json'),fV['add'](this.#v(fX));return fV;}#g(fS,fT){const jZ=gz;let fU=Array['isArray'](fT)?fT:[fT];if(fU['length']<=0x1)return fU[0x0];let fV=fS['resource']?.['metadata'],fW=fS['resource']?.['source']['url'],fX=fV&&jZ(0x200)in fV?fV['seasonNumber']:null,fY=fV&&'episodeNumber'in fV?fV['episodeNumber']:null,fZ=fV&&'episodeTitle'in fV?fV['episodeTitle']:null;return fU['find'](g0=>{const k0=jZ;let g2=g0['metadata'];if(fV?.['id']&&g2?.['id'])return fV['id']===g2['id'];let g3=g2&&'seasonNumber'in g2?g2[k0(0x200)]:null,g4=g2&&'episodeNumber'in g2?g2['episodeNumber']:null,g5=g2&&'episodeTitle'in g2?g2['episodeTitle']:null;return fV?.['title']&&g2?.['title']&&fV['title']===g2[k0(0x304)]&&fX===g3&&fY===g4&&fZ===g5?!0x0:!!fW&&fW===g0['source']['url'];})??fU[0x0];}async #_(fS){fS['size']!==0x0&&await Promise['all']([...fS]['map'](fT=>rm(fT,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0)));}#v(fS){let fT=resolve(fS),fU=parse(fS)['name'];return join(m,fU+'-'+createHash('sha1')['update'](fT)['digest']('hex')['slice'](0x0,0xa));}#y(fS){return this.#e['getActiveJob'](fS)||this['downloadsStorage']['get'](fS);}['onJobAdded'](fS){return this['on']('job-added',fS),()=>this['removeListener']('job-added',fS);}['onJobStatusChanged'](fS){return this['on']('job-status-changed',fS),()=>this['removeListener']('job-status-changed',fS);}['onJobProgress'](fS){const k1=gz;return this['on']('job-progress',fS),()=>this[k1(0x1d9)]('job-progress',fS);}['onJobCompleted'](fS){return this['on']('job-completed',fS),()=>this['removeListener']('job-completed',fS);}['onJobError'](fS){return this['on']('job-error',fS),()=>this['removeListener']('job-error',fS);}['onIdle'](fS){return this['on']('idle',fS),()=>this['removeListener']('idle',fS);}['onError'](fS){const k2=gz;return this['on']('error',fS),()=>this['removeListener'](k2(0x1be),fS);}['waitForIdle'](){return new Promise(fS=>this['onIdle'](fS));}};const fp=fS=>{const k3=gz;if(!fS)return null;let [fT,fU]=fS['toLowerCase']()['split']('e');return[parseInt(fT['trim']()['toLowerCase']()['replace']('s','')),parseFloat(fU?.[k3(0x270)]())];},fq=fS=>{const k4=gz;let fT=0x0,fU=0x270f,fV=[],fW=fS['split'](',');for(let fY of fW){let [fZ,g0]=fY['split']('-'),g2=fp(fZ),g3=fp(g0);if(g2&&!g0){let [g4,g5]=g2;if(isNaN(g5)){for(let g6=0x0;g6<=fU;g6++)fV[k4(0x2c2)]([g4,g6]);}else fV['push']([g4,g5]);}else{if(g2&&g3){let [g7,g8]=g2,[g9,ga]=g3;for(let gb=g7;gb<=g9;gb++){let gc=g8||0x0,gd=gb===g9?ga:fU;for(let ge=gc;ge<=gd;ge++)fV['push']([gb,ge]);}}}}let fX=new Map();for(let [gf,gg]of fV)fX['has'](gf)||fX[k4(0x227)](gf,new Set()),fX['get'](gf)?.['add'](gg);return fX;},fr=fS=>{if(!fS)return{};let fT={},fU=typeof fS=='string'?fS['split']('|'):fS;for(let fV of fU){let [fW,...fX]=fV['split'](':'),fY=fX['join'](':');if(!fY)throw Error('Can\x27t\x20parse\x20header:\x20'+fV);fT[fW['trim']()]=fY['trim']();}return fT;},ft=async fS=>{let fT=!0x1,fU=fS;do try{fU?fT=!!new URL(fU):fU=(await n['ask']({'fields':{'url':{'label':'URL'}}}))['url'];}catch{fU=(await n['ask']({'fields':{'url':{'label':'URL'}}}))['url'];}while(!fT);return fU!==fS&&C['debug']('URL:\x20'+fU),fU;},fu=(fS,fT)=>new Date(fT['createdAt']??0x0)['getTime']()-new Date(fS['createdAt']??0x0)['getTime']();var fv=class{['filePath'];[gz(0x28e)]=[];#e=Promise['resolve']();constructor(fS){this['filePath']=fS;}['parse'](fS){let fT=JSON['parse'](fS),fU=Object['entries'](fT);return new Map(fU);}async[gz(0x1f2)](){const k5=gz;await this.#e;try{let fS=await readFile(this['filePath'],{'encoding':'utf8'});this['jobs']=JSON[k5(0x2f3)](fS)[k5(0x205)](fu);}catch{this['jobs']=[];}return this;}get['size'](){return this['jobs']['length'];}async['add'](fS){await this.#t(async()=>{this['jobs']['unshift'](fS),await this['save']();});}async['update'](fS){await this.#t(async()=>{let fT=this['jobs']['findIndex'](fU=>fU['id']===fS['id']);fT!==-0x1&&(this['jobs'][fT]=fS,await this['save']());});}['getByFilePath'](fS){return this['jobs']['find'](fT=>fT['filePath']===fS);}['get'](fS){return this['jobs']['find'](fT=>fT['id']===fS);}['has'](fS){return this['jobs']['some'](fT=>fT['id']===fS);}async['delete'](fS){await this.#t(async()=>{const k6=b;let fT=this[k6(0x28e)]['findIndex'](fU=>fU['id']===fS);fT!==-0x1&&(this['jobs']['splice'](fT,0x1),await this['save']());});}async[gz(0x2fe)](fS){let fT=await this.#t(async()=>{let fU=this['jobs']['findIndex'](fW=>fW['id']===fS);if(fU===-0x1)return null;let [fV]=this['jobs']['splice'](fU,0x1);return await this['save'](),fV??null;});fT?.['filePath']&&await rm(fT['filePath'],{'recursive':!0x0,'force':!0x0});}async['clear'](){await this.#t(async()=>{this['jobs']=[],await this['save']();});}async['save'](){return writeFile(this['filePath'],JSON['stringify'](this['jobs'],null,0x2));}#t(fS){const k7=gz;let fT=this.#e[k7(0x294)](fS,fS);return this.#e=fT['then'](()=>void 0x0,()=>void 0x0),fT;}};const fw={'command':['download\x20[urls..]',gz(0x215)],'aliases':['dl'],'describe':'Download\x20media\x20content\x20by\x20URL','builder':fS=>fS['option'](gz(0x1cc),{'alias':'q','describe':'Video\x20resolution\x20quality\x20-\x202160p/1080p/720p/...,\x20defaults\x20to\x20highest\x20available','type':gz(0x251)})['option']('video-codec',{'alias':'v','describe':'Video\x20codec\x20-\x20avc\x20|\x20hevc\x20|\x20vp8\x20|\x20vp9\x20|\x20av1\x20|\x20vc1,\x20defaults\x20to\x20any','type':'string'})['option']('video-range',{'alias':'r','describe':'Video\x20color\x20range\x20-\x20sdr\x20|\x20hlg\x20|\x20hdr10\x20|\x20hdr10+\x20|\x20dv,\x20defaults\x20to\x20sdr','type':'string'})['option']('video-bitrate',{'describe':'Video\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('video-dimension',{'describe':'Video\x20dimension\x20-\x202D/3D\x20(HSBS/HOU/FSBS/OU),\x20defaults\x20to\x202D','default':'2D','type':'string'})['option']('audio-codec',{'alias':'a','describe':'Audio\x20codec\x20-\x20aac\x20|\x20opus\x20|\x20mp3\x20|\x20vorbis\x20|\x20flac\x20|\x20alac\x20|\x20ac3\x20|\x20eac3\x20|\x20dts,\x20defaults\x20to\x20any','type':'string'})['option']('audio-channels',{'alias':'c','describe':'Audio\x20channels,\x20matches\x20sub-channel\x20layouts\x20like\x205.1\x20with\x206.0','type':'number'})['option']('audio-bitrate',{'describe':'Audio\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('subs-format',{'alias':'s','describe':'Subtitle\x20format\x20-\x20SRT/SSA/ASS/TTML/VTT/STPP/WVTT','type':'string'})['option']('subs-lang',{'alias':'S','describe':'Subtitles\x20language(s)','type':'string'})['option']('lang',{'alias':'l','describe':'Video/audio\x20language(s)','type':'string'})['option']('skip-video',{'describe':'do\x20not\x20download\x20video','type':'boolean'})['option']('skip-audio',{'describe':'do\x20not\x20download\x20audio','type':'boolean'})['option']('skip-subtitles',{'describe':'do\x20not\x20download\x20subtitles','type':'boolean'})[gz(0x236)]('skip-mux',{'describe':'Disable\x20merge\x20audio/video/subs\x20into\x20single\x20file','type':'boolean'})['option']('select',{'describe':'Select\x20audio/video/subtitle\x20streams\x20from\x20manifest\x20manually','type':'boolean'})['option'](gz(0x2ee),{'alias':'e','describe':'Seasons/episodes\x20to\x20download,\x20e.g.\x20`S01E01`,\x20`S01-S05,S07`,\x20`S01E01-S02E03`,\x20`S02-S02E03`,\x20etc.','type':'string','coerce':fT=>fq(fT)})[gz(0x236)](gz(0x224),{'alias':'R','describe':'Number\x20of\x20retries\x20in\x20case\x20of\x20unsuccessful\x20request','type':'number','default':ay['retry']})['option']('connections',{'alias':'C','describe':'Number\x20of\x20parallel\x20http\x20connections\x20per\x20download','type':'number','default':ay['connections']})['option']('proxy',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20all\x20requests','type':'string'})['option']('proxy-meta',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20metadata\x20fetching','type':'string'})['option']('proxy-media',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20media\x20downloading','type':'string'})[gz(0x236)]('movie-template',{'describe':'Movie\x20filename\x20template','type':'string','default':ay['movieFilenameTemplate']})['option']('episode-template',{'describe':'Episode\x20filename\x20template','type':'string','default':ay['seriesFilenameTemplate']})['option']('hardsub',{'describe':'Download\x20hardsubbed\x20video\x20if\x20available','type':'boolean'})['option']('trim-begin',{'describe':'Trim\x20video\x20at\x20the\x20beginning;\x20example:\x2000:00:06','type':'string'})[gz(0x236)]('trim-end',{'describe':'Trim\x20video\x20at\x20the\x20end;\x20example:\x2000:01:30','type':'string'})[gz(0x236)]('key',{'describe':'Set\x20content\x20decryption\x20key\x20(if\x20manifest\x20URL\x20as\x20main\x20URL\x20passed),\x20format:\x20KID:KEY','type':'array','string':!0x0,'coerce':fT=>fT['map'](fU=>{let [fV,fW]=fU['split'](':');return{'kid':fV,'key':fW};})})['option']('header',{'alias':'H','describe':'Pass\x20custom\x20header(s)\x20for\x20manifest\x20request','type':'array','string':!0x0,'coerce':fT=>fr(fT)})['option']('format',{'alias':'f','describe':'Video\x20container\x20format\x20-\x20mp4\x20|\x20mkv\x20(Pro\x20only)','type':'string','choices':['mp4','mkv']}),'handler':async fS=>{const k8=gz;let fT=fS;fT['videoQuality']=fS[k8(0x1cc)];let fU=new az(d);if(fT['format']){let {error:g8}=await fj({'videoContainerFormat':fT['format']});g8&&(C['error']('Invalid\x20format:\x20'+g8[k8(0x1b3)]),C['info']('Learn\x20more:\x20https://azot.mov/pricing'),process['exit'](0x1));}let fV=[];try{({grantedBenefits:fV}=await bU());}catch(g9){let ga=g9 instanceof Error?g9['message']:String(g9);C['warn']('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+ga);}let {options:fW,limit:{normalizedRequestedConnections:fX,maxAllowedConnections:fY,wasClamped:fZ,connections:g0}}=fl({'options':fT,'fallbackConnections':fU['get']('connections'),'grantedBenefits':fV});Object[k8(0x2b9)](fT,fW),fZ&&C[k8(0x266)]('Connections\x20value\x20'+fX+'\x20exceeds\x20tier\x20limit\x20('+fY+').\x20Using\x20'+g0+'.');let g2=new bY({'dirs':[k],'indexPath':J});await g2[k8(0x305)](),await g2['loadCoreExtensions'](),await g2['discover']();let g3=new fv(join(y,'downloads.json'));await g3['load']();let g4=new fo(fU,g2,g3);bL()['then'](gb=>Object['assign'](bJ,gb)),g4['onJobCompleted'](gb=>{C['debug']('Job\x20completed:\x20'+gb['id']);}),g4['onJobError'](gb=>{C['debug']('Job\x20failed:\x20'+gb['error']);}),g4['onError'](gb=>{C['error']('Download\x20manager\x20error:\x20'+gb['message']);});let g5=Array['isArray'](fS['urls'])?fS['urls']:[],g6=process.env.ELECTRON_RUN_AS_NODE==='1'?g5[k8(0x2cd)](gb=>gb!==process['argv'][0x1]):g5,g7=g6['length']>0x0?g6:[''];for(let gb of g7){let gc=await ft(gb),gd=await g4['analyze'](gc,fT),ge=Array['isArray'](gd)?gd:[gd];for(let gf of ge)g4['add']({'url':gc,'options':fT,'resource':gf});}await g4['waitForIdle']();}},fx='azot-desktop',fy=async()=>{const k9=gz;if(await bL()&&!await confirm({'message':'You\x27re\x20already\x20logged\x20in.\x20Do\x20you\x20want\x20to\x20log\x20in\x20again?','default':!0x1})){C['debug']('Login\x20cancelled');return;}let fS=createSpinner('Requesting\x20device\x20authorization...');fS['start']();try{let fT=bA(),{data:fU,error:fV}=await fT['device']['code']({'client_id':fx,'scope':'openid\x20profile\x20email'});if(fS['stop'](),fV||!fU)C['error'](k9(0x248)+(fV?.[k9(0x208)]||fV?.['statusText']||'Unknown\x20error')),C['debug'](fV);else{let {device_code:fW,user_code:fX,verification_uri:fY,verification_uri_complete:fZ,interval:g0=0x5,expires_in:g2}=fU;console['log'](''),console['log'](P['cyan'](k9(0x237))),console['log'](''),console['log']('Please\x20visit:\x20'+P['underline'](P['blue'](fY))),console['log']('Enter\x20code:\x20'+P['bold'](P['green'](fX))),console['log'](''),await confirm({'message':k9(0x1d2),'default':!0x0})&&await Z(fZ||fY),console['log'](P['gray']('Waiting\x20for\x20authorization\x20(expires\x20in\x20'+Math['floor'](g2/0x3c)+'\x20minutes)...'));let g3=await fz(fT,fW,fx,g0);if(g3){await bK(g3);let {data:g4}=await fT['getSession']({'fetchOptions':{'headers':{'Authorization':k9(0x1ed)+g3[k9(0x2e3)]}}});console['log'](P['green']('✅\x20Login\x20successful!\x20Logged\x20in\x20as\x20'+(g4?.['user']?.['name']||g4?.['user']?.['email']||k9(0x2ec))));}}}catch(g5){fS[k9(0x2b4)](),C['error']('Login\x20failed:\x20'+(g5 instanceof Error?g5['message']:'Unknown\x20error'));}};async function fz(fS,fT,fU,fV){let fW=fV,fX=createSpinner('',{'color':'cyan'}),fY=0x0;return new Promise(fZ=>{let g0=async()=>{const ka=b;fY=(fY+0x1)%0x4,fX['update'](P['gray']('Polling\x20for\x20authorization'+'.'['repeat'](fY)+'\x20'[ka(0x199)](0x3-fY))),fX['isSpinning']()||fX['start']();try{let {data:g2,error:g3}=await fS['device']['token']({'grant_type':'urn:ietf:params:oauth:grant-type:device_code','device_code':fT,'client_id':fU,'fetchOptions':{'headers':{'user-agent':ka(0x29e)}}});if(g2?.['access_token']){fX['stop'](),fZ(g2);return;}else{if(g3)switch(g3['error']){case'authorization_pending':break;case'slow_down':fW+=0x5,fX['update'](P['yellow'](ka(0x1d6)+fW+'s'));break;case'access_denied':fX['stop'](),C['error']('Access\x20was\x20denied\x20by\x20the\x20user');break;case'expired_token':fX['stop'](),C['error']('The\x20device\x20code\x20has\x20expired.\x20Please\x20try\x20again.');break;default:fX['stop'](),C['error']('Error:\x20'+g3['error_description']);}}}catch(g4){fX['stop'](),C['error']('Network\x20error:\x20'+(g4 instanceof Error?g4['message']:'Unknown\x20error'));return;}setTimeout(g0,fW*0x3e8);};setTimeout(g0,fW*0x3e8);});}const fA=async()=>{C['info']('Logging\x20out...');let fS=await bA()['signOut']();fS['error']?C['error']('Logout\x20failed:\x20'+fS['error']['message']):(C['info']('Logout\x20successful'),await bK({}));},fB={'command':'login\x20[extension]','describe':'Login\x20to\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20login\x20to\x20Azot\x20account)','builder':fS=>fS['option']('username',{'alias':'u','describe':'Username','type':'string'})['option']('password',{'alias':'p','describe':'Password','type':'string'})['option']('otp',{'alias':'o','describe':'One-time\x20password','type':'string'}),'handler':async fS=>{let fT=fS['extension'],fU={'username':fS['username'],'password':fS['password'],'otp':fS['otp']};if(fT){let fV=new bY({'dirs':[k],'indexPath':J});await fV['init'](),await fV['discover'](),await fV['login'](fT,fU);}else fy();}},fC={'command':'list','aliases':['ls'],'describe':'Lists\x20information\x20about\x20installed/active\x20extensions','handler':async()=>{const kb=gz;let fS=await new bY({'indexPath':J})['init']();if(!fS['infoList']['length'])return console['log']('No\x20added\x20extensions\x20found');for(let fT of fS['infoList']){let fU=''+P['bold'](P['blue'](fT['name'][kb(0x20e)](0xf))),fV=P['green'](fT['package']?.['version']);console['log'](fU+fV);}console['log']('\x0a'+P[kb(0x1fd)]('Location:\x20'+o));}},fD=new Intl['RelativeTimeFormat']('en',{'style':'long'}),fE=fS=>{const kc=gz;let fT=Math['floor'](fS/0x18),fU=Math['abs'](fT);return fU>0x16d?fD[kc(0x1cf)](Math['floor'](fT/0x16d),'year'):fU>0x1e?fD['format'](Math['floor'](fT/0x1e),'month'):fU>0x7?fD['format'](Math['floor'](fT/0x7),'week'):fU>0x1?fD['format'](Math[kc(0x2a6)](fT),'day'):fD['format'](Math['floor'](fS),'hour');},fF=(fS,fT,fU)=>{const kd=gz;let fV=''+P['bold'](P['blue'](fS['padEnd'](0xf))),fW=P[kd(0x19e)](fT['padEnd'](0xa)),fX=P['dim'](fU);console['log'](fV+fW+fX);},fG={'command':'list-remote','aliases':['ls-remote'],'describe':'List\x20all\x20available\x20extensions','handler':async()=>{const ke=gz;bL()['then'](fU=>Object['assign'](bJ,fU));let fS=await bY['getAvailableExtensions'](),fT=Date['now']();for(let fU of fS){let fV=fU['releases']['toSorted']((fZ,g0)=>new Date(g0[ke(0x280)])['getTime']()-new Date(fZ['createdAt'])['getTime']())['at'](0x0);if(!fV)continue;let fW=fV['createdAt'],fX=new Date(fW)['getTime']()-fT,fY=fE(Math['floor'](fX/0x36ee80));fF(fU['name'],fV['version'],fY);}}},fH={'command':'logout\x20[extensions..]','describe':'Logout\x20from\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20logout\x20from\x20Azot\x20account)','handler':async fS=>{let fT=fS['extensions'];if(fT?.['length']){let fU=new bY({'dirs':[k],'indexPath':J});await fU['init'](),await fU['discover'](),await fU['logout'](fT);}else fA();}},fI={'command':'settings\x20[key]\x20[value]','describe':'CLI\x20access\x20to\x20get/set\x20configuration\x20settings','handler':async fS=>{const kf=gz;let fT=new az(d),fU=fS['key'],fV=fS['value'];if(fU&&fV){fT['set']({[fU]:fV}),console['log']('Setting\x20'+P['bold'](P['blue'](fU))+'\x20set\x20to\x20'+P['green'](fV));return;}else{if(fU){let fX=fT[kf(0x26a)](fU);console['log'](fX?'Setting\x20'+P['bold'](P[kf(0x29f)](fU))+'\x20is\x20'+P['green'](fX):'Setting\x20'+P['bold'](P['blue'](fU))+'\x20is\x20not\x20found');return;}}let fW=fT['getAll']();for(let [fY,fZ]of Object['entries'](fW)){let g0=(''+fY)['padEnd'](0x19),g2=String(fZ)['replaceAll']('{','{{')['replaceAll']('}','}}');console['log'](P['bold'](P['blue'](g0))+'\x20'+g2);}console['log']('\x0a'+P['dim'](kf(0x1ae)+d));}},fJ={'command':'uninstall\x20<extensions..>','aliases':['rm'],'describe':'Uninstall\x20an\x20extension','handler':async fS=>{const kg=gz;let fT=fS['extensions'],fU=new bY({'dirs':[k],'indexPath':J});await fU[kg(0x305)](),await fU['uninstall'](fT);}},fK={'command':gz(0x242),'aliases':['i'],'describe':'Install\x20extension','handler':async fS=>{let fT=fS['extensions'],fU=new bY({'dirs':[k],'indexPath':J});await fU['init'](),await fU['install'](fT);}},fL={'command':'logs','describe':'Show\x20logs\x20list','handler':async()=>{const kh=gz;let fS=s,fT=await readdir(fS)['then'](fV=>fV[kh(0x2cd)](fW=>fW['endsWith']('.log'))),fU=fV=>join(fS,fV);fT['length']||C['info']('No\x20logs\x20found');for(let fV of fT)C[kh(0x291)](fU(fV));}};C['debug'](w);const fM=ac(process['argv']);C['debug'](l+'\x20'+fM['join']('\x20'));const fN=new Set(['build','dev']);G['on']('error',fS=>{const ki=gz;let fT=q(fS);C[ki(0x1be)](fT['message']);});const fO=P['magenta'](P['bold'](g))+'\x20is\x20'+i[gz(0x1aa)]['toLocaleLowerCase'](),fP=P['bold']('Usage:\x20$0\x20<command>\x20'+P['cyan']('[...options]')),fQ=(fS,fT)=>{const kj=gz;let fU=fT instanceof Error?fT:Error(String(fT));C['fatal'](fS+':\x20'+fU[kj(0x1b3)]),fU['stack']&&C['debug'](fU['stack']),rmSync(m,{'recursive':!0x0,'force':!0x0}),process['exit'](0x1);};process['on']('uncaughtException',fS=>{fQ('Unexpected\x20error',fS);}),process['on']('unhandledRejection',fS=>{fQ('Unhandled\x20promise\x20rejection',fS);}),!v&&fN['has'](fM[0x0]??'')&&fQ('CLI\x20error',Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.'));const fR=O(fM)['scriptName'](l)['usage'](fO+'\x0a\x0a'+fP)['command'](fw)['command'](fC)['command'](fG)[gz(0x2d1)](fK)['command'](fJ)['command'](fB)['command'](fH)[gz(0x2d1)](fI)['command'](fL)['option']('debug',{'describe':'Debug\x20mode','type':'boolean'})['wrap'](O()['terminalWidth']())['help']()['alias']('h',gz(0x2fd))['showHelpOnFail'](!0x1)['version'](h)['updateStrings']({'Commands:':P['bold']('Commands:'),'Options:':P['bold']('Options:'),'default':P['dim'](gz(0x1ef)),'aliases':P[gz(0x1fd)]('aliases'),'boolean':P['dim']('boolean'),'string':P['dim']('string'),'number':P['dim']('number')})['epilogue']('Learn\x20more\x20about\x20Azot:\x20'+P['magenta']('https://azot.mov')+'.');v&&fR['command'](as)['command'](at),fR[gz(0x26f)]()['then'](async fS=>{await r(s);let fT=String(fS['_'][0x0]??'');fT==='dev'||fT==='build'&&fS['watch']===!0x0||process['exit'](0x0);})[gz(0x1a6)](fS=>{fQ('CLI\x20error',fS);});export{};
2
+ const gP=b;(function(g4,g5){const gJ=b,g6=g4();while(!![]){try{const g7=-parseInt(gJ(0x1aa))/0x1*(parseInt(gJ(0x133))/0x2)+parseInt(gJ(0x16b))/0x3*(parseInt(gJ(0x244))/0x4)+parseInt(gJ(0x150))/0x5+parseInt(gJ(0x1a7))/0x6*(-parseInt(gJ(0x226))/0x7)+parseInt(gJ(0x1f6))/0x8+parseInt(gJ(0x1a0))/0x9*(parseInt(gJ(0x26e))/0xa)+parseInt(gJ(0x12c))/0xb*(-parseInt(gJ(0x111))/0xc);if(g7===g5)break;else g6['push'](g6['shift']());}catch(g8){g6['push'](g6['shift']());}}}(a,0x40b93));function b(c,d){c=c-0x10e;const e=a();let f=e[c];return f;}import{A as c,C as d,D as f,E as g,M as h,O as i,S as j,T as k,_ as l,a as m,b as n,c as o,d as p,f as q,g as r,h as s,i as t,j as u,k as v,l as w,m as x,n as y,o as A,p as B,r as C,s as D,t as E,u as F,v as G,w as H,x as I,y as J}from'./context-dQU9jc5L.mjs';import{createRequire}from'node:module';import K,{constants,existsSync,readFileSync,readdirSync,rmSync,statSync,writeFileSync}from'node:fs';import*as L from'node:path';import M,{basename,dirname,extname,join,parse,resolve}from'node:path';import N from'yargs';import'urlpattern-polyfill';import O from'picocolors';function a(){const l1=['isArray','preferHardsub','DRM_UNAUTHORIZED','connections','No\x20entry\x20file\x20found','applyProgress','resolve','source','includes','columns','finalPath','getName','\x20built-in\x20extensions:\x20','getEntries','entry','2304UCllMR','pid','all','ls-remote','getQueryState','fairplay','getCodec','290886ykxmLc','url','customDrmClient','1GNIQPM','type','info','finish','proxyMeta','DASH','part_','clone','splice','execUrlPatterns','update','number','\x20∙\x20','ara','parse','createdAt','getTracks','totalBytes','latest','enabled','subtitleLanguages','default','indexPath','startsWith','\x20doesn\x27t\x20match\x20expected\x20size\x20','defineProperty','package.json','discover','failure','wildcardHostSuffixes','blue','ec-3','getRecord','toUpperCase','No\x20client\x20ID','replace','beforeDownload','forced','ask','statusMsg','boolean','showHelpOnFail','\x20FORCED','skipVideo','stat','https://*.rbc.ru/*','Subtitles:\x20','getActiveJob','code','Failed\x20to\x20convert\x20subtitle\x20to\x20WebVTT','version','getLanguageCode','probe','do\x20not\x20download\x20video','Extension\x20','isSpinning','rutube_','clear','array','tag_name','endsWith','stream_url','getBitrate','decryptFile','format','reset','close','weibo','getFirstPacket','trim-begin','text','video_url','parts','repeat','HLS_FORMATS','customMuxFormat','2885808puXyCf','notify','cookieStore','function','includeVolatile','configure','length','reconcileState','message','\x20url=','toString','legacy','\x20is\x20','payload','\x20directory\x20not\x20found:\x20','Azot','paused','transferring','select','do\x20not\x20download\x20subtitles','Could\x20not\x20find\x20RBC\x20playlist\x20URL.','some','/about/','onDownloadFinished','defineExtension','set','<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','mp3_0_0','toLowerCase','template','getActiveRun','installedAt','SoundCloud','phase-changed','Invalid\x20license\x20response','unhandledRejection','console','vitalygashkov@vk.com','yappyId','video','averageTotal','retry','value','baseName','store','catch','sessionId','assign','7euNBEh','snapshot','year','resumeManager','current','init','hint','slice','Obfuscation\x20finished','queued','maxActiveDownloads','yellow','toLocaleLowerCase','skipAudio','{title}.S{s}E{e}.{episodeTitle}.{audioType}.{quality}.{tag}.{format}.{codec}','tokenType','bytesWritten','log','Only\x20WebVTT\x20subtitles\x20are\x20supported\x20by\x20the\x20MediaBunny\x20muxer.','persistJob','user','status','https://rutube.ru','readdir','emit','build\x20[entry]','hex','package','stream_url_hd','command','36PDQqEA','markQueued','split','MediaBunny\x20output\x20handle\x20was\x20not\x20initialized\x20for\x20','Subtitles\x20language(s)','DASH_FORMATS','auth.logout','include','runPromise','markFailed','/events','strategy','matches','UrlSource','off','MP3','getSegments','\x5c}(?=\x5c.|$)|\x5c{','Trim\x20video\x20at\x20the\x20beginning;\x20example:\x2000:00:06','vorbis','getAll','Either\x20output\x20or\x20filePath\x20is\x20required\x20for\x20FileResumeStore','bold','location','exec','getTime','setFilePath','URL:\x20','key','removeQueries','has','nextTick','proxy','https://api.github.com/repos/','progress','http','rutube','icon','uninstall','setItem','access_token','Subtitle\x20format\x20-\x20SRT/SSA/ASS/TTML/VTT/STPP/WVTT','10140waCmSA','request','completed','errorHandler','join','cause','prompt','getExtensions','winconsole','preferredChannel','https://rbc.ru/','\x20failed:\x20','context','132pOUYkt','start','debug','size','isDirectory','strict-origin-when-cross-origin','https://azot.mov/','base64','then','mkdir','movieFilenameTemplate','tempDir','delete','Learn\x20more:\x20https://azot.mov/pricing','extensions','option','getObfuscatedCode','hasState','minify','trim','cleanupOnSuccess','get','subtitle','averageSize','opus','browser_download_url','pssh','805959XxZhST','input','soundcloud','extract','Download.execute()\x20can\x20only\x20be\x20called\x20once\x20per\x20instance.','display_url','finally','314582ArtMeI','navigator','title','DRM_FORBIDDEN','updateRecord','stack','\x22Chromium\x22;v=\x22130\x22,\x20\x22Google\x20Chrome\x22;v=\x22130\x22,\x20\x22Not?A_Brand\x22;v=\x2299\x22','green','map','head','trimBegin','\x20Kbps\x20|\x20','otp','No\x20files\x20were\x20downloaded','EXTENSION_INSTALL_UNKNOWN','trimEnd','aborted','name','RELEASE_NOT_FOUND','push','filePath','logout','statusText','save','ave','downloaded','utf8','filter','setLanguageCode','1789405KmhANo','no\x20tracks','dispose','Failed\x20to\x20load\x20extension\x20script:\x20','path','charCodeAt','fetch','readFile','match','bytesDownloaded','prepareContext','running','record','error','label','document','AbortError','sort','\x20of\x20','keys','headers','main',',\x20path=','dim','240','ENOENT','callbacks','99549iRKCSm','obfuscate','audioLanguage','computeDuration','requestInit','exports','GitHub\x20release\x20asset\x20not\x20found','toSorted','HLS','video-hostings','trackArtifact','filename=','cenc','Set\x20content\x20decryption\x20key\x20(if\x20manifest\x20URL\x20as\x20main\x20URL\x20passed),\x20format:\x20KID:KEY','getAudioTracks','x\x20increase','EACCES','stringify','dir','accessToken','find','records','sourceSignature','recordId','kid','analyze','Track\x20download\x20skipped,\x20already\x20aborted:\x20','_options','next','tv-channels','kind','warn','dirname','total','tur','run','string','output'];a=function(){return l1;};return a();}import*as P from'node:fs/promises';import Q,{open,readFile,readdir,rm,stat,writeFile}from'node:fs/promises';import R,{platform,stdout}from'node:process';import{hideBin}from'yargs/helpers';import{EventEmitter as S}from'node:events';import{z}from'zod';import{ALL_FORMATS,DASH,HLS,Input,UrlSource,desc,prefer}from'dasha';import T from'ky';import{Agent,ProxyAgent}from'undici';import{checkbox,confirm}from'@inquirer/prompts';import{execFileSync}from'node:child_process';import{createAuthClient}from'better-auth/client';import{deviceAuthorizationClient}from'better-auth/client/plugins';import{tributeClient}from'@tribute-tg/better-auth';import{QueryCache,QueryClient}from'@tanstack/query-core';import{createHash}from'node:crypto';import{inspect}from'node:util';import{RemoteCdm,requestMediaKeySystemAccess}from'okova';import{Decryption,FilePathSource,FilePathTarget,Input as U,Output}from'shifro';import{convert}from'@transcrobes/subs-convert';import{ALL_FORMATS as V,EncodedAudioPacketSource,EncodedPacketSink,EncodedVideoPacketSource,Input as W,MkvOutputFormat,Mp4OutputFormat,Output as X,StreamSource,StreamTarget,TextSubtitleSource}from'mediabunny';import{isatty}from'node:tty';import{createSpinner}from'nanospinner';import{finished,pipeline}from'node:stream/promises';import{Readable}from'node:stream';import Y from'open';var Z=Object['create'],a0=Object['defineProperty'],a1=Object['getOwnPropertyDescriptor'],a2=Object['getOwnPropertyNames'],a3=Object['getPrototypeOf'],a4=Object['prototype']['hasOwnProperty'],a5=(g4,g5)=>()=>(g5||(g4((g5={'exports':{}})['exports'],g5),g4=null),g5['exports']),a6=(g4,g5,g6,g7)=>{const gK=b;if(g5&&typeof g5=='object'||typeof g5=='function'){for(var g8=a2(g5),g9=0x0,ga=g8[gK(0x1fc)],gb;g9<ga;g9++)gb=g8[g9],!a4['call'](g4,gb)&&gb!==g6&&a0(g4,gb,{'get':(gc=>g5[gc])['bind'](null,gb),'enumerable':!(g7=a1(g5,gb))||g7['enumerable']});}return g4;},a7=(g4,g5,g6)=>(g6=g4==null?{}:Z(a3(g4)),a6(g5||!g4||!g4['__esModule']?a0(g6,'default',{'value':g4,'enumerable':!0x0}):g6,g4)),a8=createRequire(import.meta.url);const a9=()=>{const gL=b;let g4=[];process['resourcesPath']&&g4[gL(0x146)](join(process['resourcesPath'],'bin','winconsole.node'));let g5=join(__dirname,'..','..','..');return g4['push'](join(g5,'assets','bin','win32','winconsole.node')),g4['push'](join(g5,'native',gL(0x276),'build','Release','winconsole.node')),g4['find'](g6=>existsSync(g6))||null;},aa=()=>{if(process['platform']!=='win32')return null;let g4=a9();if(!g4)return null;try{return a8(g4);}catch{return null;}};if(process['platform']==='win32'&&process.env.ELECTRON_RUN_AS_NODE==='1'){let gd=aa();gd&&(gd['attachParentConsole']?.(),gd['enableUtf8']?.());}const ab=(g4=process['argv'],g5=process.env)=>g5['ELECTRON_RUN_AS_NODE']==='1'?g4['slice'](0x2):hideBin(g4),ac={'target':'node','compact':!0x0,'identifierNamesGenerator':'mangled','renameGlobals':!0x0,'simplify':!0x0,'controlFlowFlattening':!0x1,'deadCodeInjection':!0x1,'debugProtection':!0x1,'numbersToExpressions':!0x1,'selfDefending':!0x1,'splitStrings':!0x1,'stringArray':!0x0,'stringArrayCallsTransform':!0x1,'stringArrayEncoding':[],'stringArrayIndexShift':!0x0,'stringArrayRotate':!0x0,'stringArrayShuffle':!0x0,'stringArrayWrappersCount':0x1,'stringArrayWrappersChainedCalls':!0x0,'stringArrayWrappersType':'variable','stringArrayThreshold':0.1,'transformObjectKeys':!0x1,'unicodeEscapeSequence':!0x1},ad=g4=>{let g5=['B','KB','MB','GB'],g6=g4,g7=0x0;for(;g6>=0x400&&g7<g5['length']-0x1;)g6/=0x400,g7+=0x1;return g6['toFixed'](g7===0x0?0x0:0x2)+'\x20'+g5[g7];},ae=async(g4,g5)=>{const gM=b;let g6=readFileSync(g4,'utf8'),{default:g7}=await import('javascript-obfuscator');console['log']('Obfuscating\x20'+g4+'...'),console['time'](gM(0x22e));let g8=g7['obfuscate'](g6,ac);console['timeEnd']('Obfuscation\x20finished');let g9=g8[gM(0x121)](),ga=Buffer['byteLength'](g6,gM(0x14d)),gb=Buffer['byteLength'](g9,'utf8'),gc=ga===0x0?0x0:gb/ga;return console['log']('Size\x20changed\x20from\x20'+ad(ga)+'\x20to\x20'+ad(gb)+',\x20'+gc['toFixed'](0x2)+gM(0x17a)),writeFileSync(g5||g4,g9),g9;},af=new Set(['.ts','.js','.cjs','.mjs']),ag=new Set(['index','main']),ah=g4=>{const gN=b;if(existsSync(g4))try{if(!statSync(g4)['isDirectory']())return;let g5=readdirSync(g4)['filter'](g8=>!g8['endsWith']('.d.ts'))['filter'](g8=>af['has'](M['extname'](g8))),g6=g8=>M['basename'](g8,M['extname'](g8)),g7=g5['find'](g8=>ag[gN(0x262)](g6(g8)))||g5[0x0];return g7?M['join'](g4,g7):void 0x0;}catch{return;}},ai=()=>{let g4=[process['cwd'](),M['join'](process['cwd'](),'src'),M['join'](process['cwd'](),'lib')];for(let g5 of g4){let g6=ah(g5);if(g6)return g6;}},aj=g4=>g4==='esm'?'mjs':'cjs',ak=(g4,g5)=>M['join'](process['cwd'](),'dist',M['parse'](g4)['name']+'.'+aj(g5)),al=g4=>{let g5=M['relative'](process['cwd'](),g4);if(!g5||g5['startsWith']('..'))throw Error('Entry\x20file\x20must\x20be\x20inside\x20the\x20current\x20working\x20directory:\x20'+g4);return'./'+g5['split'](M['sep'])['join']('/');},am=g4=>{const gO=b;let g5=g4['input']||g4['entry']||ai();if(!g5)throw Error(gO(0x195));return M['resolve'](g5);},an=()=>{if(v)throw Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.');},ao=g4=>g4['positional']('entry',{'describe':'Path\x20to\x20the\x20input\x20file','type':'string'})['option']('input',{'alias':'i','describe':'Path\x20to\x20the\x20input\x20file','type':'string'})[gP(0x120)](gP(0x1ea),{'alias':'f','describe':'Output\x20format','choices':['cjs','esm'],'default':'cjs'})['option']('minify',{'describe':'Minify\x20output','type':'boolean'}),ap=g4=>{const gQ=gP;let g5=M[gQ(0x197)](g4);for(;;){let g6=M['join'](g5,'package.json');if(existsSync(g6))return g6;let g7=M['dirname'](g5);if(g7===g5)return;g5=g7;}},aq=g4=>{let g5=ap(g4);if(!g5){let g6='Could\x20not\x20find\x20package.json\x20starting\x20from\x20'+g4;throw q['error'](g6),Error(g6);}try{let g7=JSON['parse'](readFileSync(g5,'utf8'));if(!g7||typeof g7!='object'||Array['isArray'](g7))throw Error('package.json\x20must\x20contain\x20a\x20JSON\x20object');let g8=g7;if(g8['private']!==void 0x0&&typeof g8['private']!='boolean')throw Error('package.json\x20field\x20\x22private\x22\x20must\x20be\x20a\x20boolean\x20when\x20present');return{'private':g8['private']};}catch(g9){let ga='Failed\x20to\x20load\x20package.json\x20for\x20build\x20command\x20from\x20'+g5;throw q['error'](ga),q['debug'](g9),Error(ga);}},ar={'command':gP(0x23f),'describe':'Bundle\x20a\x20Node.js\x20entry\x20file\x20for\x20distribution','builder':g4=>ao(g4)['option']('watch',{'describe':'Watch\x20file\x20changes','type':'boolean'})['option']('obfuscate',{'describe':'Obfuscate\x20output','type':'boolean'}),'handler':async g4=>{const gR=gP;an();let g5=am(g4),g6=typeof g4[gR(0x123)]=='boolean'?g4['minify']:!0x0,g7=g4['watch']===!0x0,g8=g4['format']??'cjs',{build:g9}=await import('tsdown');await g9({'entry':al(g5),'format':g8,'platform':'node','target':'node24','watch':g7,'minify':g6,'inlineOnly':!0x1});let ga=ak(g5,g8),gb=aq(process['cwd']());(typeof g4[gR(0x16c)]=='boolean'?g4['obfuscate']:gb['private'])&&await ae(ga,ga);}},as={'command':'dev\x20[entry]','describe':'Watch\x20and\x20rebuild\x20a\x20Node.js\x20entry\x20file\x20during\x20development','builder':g4=>ao(g4),'handler':async g4=>{const gS=gP;an();let g5=am(g4),g6=typeof g4['minify']=='boolean'?g4['minify']:!0x1,{build:g7}=await import('tsdown');await g7({'entry':al(g5),'format':g4[gS(0x1ea)]??'cjs','platform':'node','target':'node24','watch':!0x0,'minify':g6});}},at=()=>Intl['DateTimeFormat']()['resolvedOptions']()['locale']['startsWith']('ru')?'ru':'en',au={'dark':'dark','light':'light','system':'system'},av={'mp4':'mp4','mkv':'mkv'},aw=z['object']({'downloadDir':z[gP(0x18f)]()['default'](l),'binariesDir':z[gP(0x18f)]()['default'](d(join(B,'bin'))),'drmDir':z['string']()['default'](d(join(B,'drm'))),'language':z['string']()['default'](at()),'theme':z['enum']([au['dark'],au['light'],au['system']])['default'](au['system']),'preferHardsub':z['coerce']['boolean']()['default'](!0x1),'retry':z['coerce']['number']()['int']()['min'](0x1)['max'](0xa)['default'](0x3),'connections':z['coerce']['number']()['int']()['min'](0x1)['max'](0x40)['default'](0x4),'maxActiveDownloads':z['coerce']['number']()['int']()['min'](0x1)['default'](0x1),'proxy':z['string']()['optional'](),'proxyMeta':z['string']()['optional'](),'proxyMedia':z['string']()['optional'](),'movieFilenameTemplate':z['string']()['default']('{title}\x20({quality},\x20{codec})'),'seriesFilenameTemplate':z['string']()['default']('{title}\x20S{s}E{e}\x20({quality},\x20{codec})'),'developerMode':z['coerce']['boolean']()['default'](!0x1),'allowUnknownSources':z['coerce']['boolean']()['default'](!0x1),'videoContainerFormat':z['enum']([av['mp4'],av['mkv']])['default'](av['mp4']),'useAlternativeServer':z['coerce']['boolean']()['default'](!0x1),'automaticUpdates':z['coerce']['boolean']()['default'](!0x0)}),ax=aw[gP(0x1b8)]({});var ay=class{#e;constructor(g4){this.#e=o({'defaults':ax,'cwd':dirname(g4),'configName':basename(g4,'.json')}),this.#t();}#t(){const gT=gP;let g4=this.#e['store'],g5=aw['safeParse'](g4),g6='{title}.{audioType}.{quality}.{tag}.{format}.{codec}',g7=gT(0x234);if(g4['movieFilenameTemplate']==='{title}.{audioType}.{quality}.{tag}.{format}.{codec}'&&this.#e['set'](gT(0x11b),g4['seriesFilenameTemplate']),g4['seriesFilenameTemplate']===gT(0x234)&&this.#e['set']('seriesFilenameTemplate',g4['seriesFilenameTemplate']),!g5['success']){console['warn']('Settings\x20validation\x20failed!\x20Resetting\x20to\x20defaults.',g5['error']['flatten']()),this.#e['set'](ax);return;}Object['hasOwn'](g4,'askForOptions')&&this.#e['set'](g5['data']);}['getAll'](){return this.#e['store'];}['get'](g4){return this.#e['get'](g4);}['set'](g4){const gU=gP;let g5={...this.#e['store'],...g4},g6=aw['safeParse'](g5);if(!g6['success'])throw console['error']('Invalid\x20settings\x20update:',g6[gU(0x15d)]['flatten']()),Error('Settings\x20update\x20failed\x20validation.');this.#e['set'](g6['data']);}['onDidChange'](g4){this.#e['onDidAnyChange'](g4);}};const az=async g4=>{try{return await Q['access'](g4),!0x0;}catch(g5){if(g5['code']==='ENOENT')return!0x1;throw g5;}},aA=async(g4,{recursive:g5=!0x1}={})=>await Q[gP(0x23d)](g4,{'withFileTypes':!0x0,'recursive':g5}),aB=async(g4,{recursive:g5=!0x0,force:g6=!0x0}={})=>{await Q['rm'](g4,{'recursive':g5,'force':g6});},aC=async(g4,{recursive:g5=!0x0}={})=>{const gV=gP;await Q[gV(0x11a)](g4,{'recursive':g5});},aD=async g4=>{const gW=gP;try{await Q['access'](g4,constants['W_OK']);}catch(g5){let g6=g5['code'];throw g6==='EPERM'||g6==='EACCES'||g6===gW(0x169)?Object['assign'](Error('Download\x20directory\x20is\x20not\x20writable'),{'code':'DOWNLOAD_DIR_NOT_WRITABLE'}):g5;}},aE=async g4=>{try{let g5=await Q['readFile'](g4,{'encoding':'utf8'});return JSON['parse'](g5);}catch(g6){throw Error('Failed\x20to\x20read\x20JSON\x20file:\x20'+g4,{'cause':g6});}},aF=async(g4,g5)=>{const gX=gP;let g6=parse(g4)[gX(0x17d)];try{let g7=await az(g6);g6&&!g7&&await Q['mkdir'](g6),await Q['writeFile'](g4,JSON['stringify'](g5,null,0x2),'utf8');}catch(g8){throw Error('Failed\x20to\x20save\x20data\x20to\x20file:\x20'+g4,{'cause':g8});}},aG={'extract':(g4,g5)=>execFileSync('tar',['-xf',g4,...g5?['-C',g5]:[]],{'stdio':'inherit'})},aH={'CHANNEL_NOT_FOUND':'EXTENSION_INSTALL_CHANNEL_NOT_FOUND','VERSION_NOT_FOUND':'EXTENSION_INSTALL_VERSION_NOT_FOUND','RELEASE_NOT_FOUND':'EXTENSION_INSTALL_RELEASE_NOT_FOUND','ASSET_NOT_FOUND':'EXTENSION_INSTALL_ASSET_NOT_FOUND','UNSUPPORTED_SOURCE':'EXTENSION_INSTALL_UNSUPPORTED_SOURCE','UNSUPPORTED_PACKAGE_TYPE':'EXTENSION_INSTALL_UNSUPPORTED_PACKAGE_TYPE','IMPORT_INVALID':'EXTENSION_INSTALL_IMPORT_INVALID','SOURCE_NOT_FOUND':'EXTENSION_INSTALL_SOURCE_NOT_FOUND','UNKNOWN':gP(0x141)},aI=new Set(Object['values'](aH));var aJ=class extends Error{['code'];['details'];['hint'];constructor(g4){const gY=gP;super(g4['message']),this['name']='InstallExtensionError',this[gY(0x1da)]=g4['code'],this['details']=g4['details'],this[gY(0x22c)]=g4['hint'];}['toPayload'](){return{'code':this['code'],'message':this['message'],'details':this['details'],'hint':this['hint']};}};const aK=(g4,g5,g6,g7)=>new aJ({'code':g4,'message':g5,'details':g6,'hint':g7}),aL=g4=>{const gZ=gP;let g5=(g4?.['startsWith']('v')?g4[0x1]:g4?.[0x0])??'';return Number['isNaN'](parseInt(g5))?g4?.['split']('.')['at'](0x0)||'latest':g4?.['split']('-')['at'](0x1)?.[gZ(0x246)]('.')['at'](0x0)||gZ(0x1bc);},aM=g4=>(g4['version']||g4[gP(0x1e5)]||'')['replace'](/^v/,''),aN=g4=>[...new Set(g4['filter'](Boolean))],aO=g4=>({'availableVersions':aN((g4||[])[gP(0x13b)](g5=>aM(g5))),'availableChannels':aN((g4||[])['map'](g5=>aL(aM(g5))))}),aP=(g4,g5,g6)=>{const h0=gP;let g7={'source':g6,'preferredVersion':g4['preferredVersion'],'preferredChannel':g4[h0(0x277)],'appChannel':g4['appChannel'],...aO(g5)};return g4['preferredVersion']?aK(aH['VERSION_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20version:\x20'+g4['preferredVersion'],g7):aK(aH['CHANNEL_NOT_FOUND'],'Release\x20not\x20found\x20for\x20requested\x20channel:\x20'+g4['preferredChannel'],g7);},aQ=(g4,g5,g6)=>{const h1=gP;if(!g4?.[h1(0x1fc)])return null;if(g5['preferredVersion'])return g4['find'](g7=>aM(g7)===g5['preferredVersion'])||null;if(!g5['isExplicitSelection']){let g7=g4[h1(0x17f)](g8=>aL(aM(g8))==='latest');if(g7)return g7;}return g4['find'](g8=>aL(aM(g8))===g5['preferredChannel'])||(g5['allowFallback']&&g5['preferredChannel']!=='latest'?(q['debug']('Release\x20'+g5['preferredChannel']+'\x20not\x20found\x20for\x20'+g6+',\x20falling\x20back\x20to\x20latest\x20stable'),g4['find'](g8=>aL(aM(g8))==='latest')||(q['debug']('Latest\x20stable\x20release\x20not\x20found\x20for\x20'+g6+',\x20falling\x20back\x20to\x20latest\x20with\x20any\x20channel'),g4['at'](0x0)||null)):null);},aR=g4=>{const h2=gP;let [,g5='']=g4[h2(0x246)]('@'),g6=g4['replace'](g5?'@'+g5:'',''),g7=aL(h[h2(0x1dc)]),g8=!!g5;return{'name':g6,'preferredVersion':Number['isNaN'](parseInt(g5[0x0]??''))?'':g5,'preferredChannel':g8?aL(g5):g7,'appChannel':g7,'isExplicitSelection':g8,'allowFallback':!g8&&g7!=='latest'};},aS=async(g4,g5)=>{const h3=gP;q['info']('Fetching\x20bundle...'),q['debug'](g4);let g6=await fetch(g4);if(!g6['ok'])throw aK(aH['ASSET_NOT_FOUND'],'Failed\x20to\x20download\x20extension\x20bundle:\x20'+g6['status']+'\x20'+g6['statusText'],{'url':g4,'status':g6['status'],'statusText':g6['statusText']});let g7=g6['headers']['get']('content-disposition')?.['split'](h3(0x176))[0x1]?.['split'](';')[0x0]?.['replaceAll']('\x22',''),g8=M['basename'](g4),g9=g5||g7||g8,ga=await g6['arrayBuffer'](),gb=M['join'](I,g9);return await Q['writeFile'](gb,Buffer['from'](ga)),await Q['stat'](gb)[h3(0x119)](gc=>{q['debug']('Bundle\x20downloaded\x20('+gc['size']/0x3e8+'\x20KB):\x20'+gb);})['catch'](()=>{const h4=h3;q[h4(0x15d)]('Bundle\x20download\x20failed:\x20can\x27t\x20find\x20output\x20file');}),gb;},aT=async(g4,g5)=>{const h5=gP;if(g4['startsWith']('npm:')||g4['startsWith']('@streamyx/'))throw aK(aH['UNSUPPORTED_SOURCE'],'NPM\x20extension\x20sources\x20are\x20no\x20longer\x20supported',{'source':g4});let g6=g4,g7=g4,g8=M['dirname'](g4),g9=g8!=='.'&&await Q[h5(0x1d6)](g8)['then'](()=>!0x0,()=>!0x1),ga=g4['startsWith']('./')||g4['startsWith']('../')||g4['startsWith']('/')||g4['startsWith']('~')||g9,gb=await Q['stat'](g4)['then'](()=>!0x0,()=>!0x1),gc=g4['startsWith']('https://'),ge=g4['startsWith']('gl:')||g4['startsWith']('gitlab:'),gf=g4['startsWith']('github:')||g4['startsWith']('gh:');if(ga&&!gb&&!gc&&!gf&&!ge)throw q['warn']('Installed\x20extension\x20not\x20found:\x20'+g4),q['warn']('Run\x20\x27azot\x20list\x27\x20and\x20remove\x20the\x20extension\x20from\x20the\x20list.'),aK(aH['SOURCE_NOT_FOUND'],'Installed\x20extension\x20source\x20not\x20found:\x20'+g4,{'source':g4});g4=g4['replace'](/^gl:/,'')['replace'](/^gitlab:/,'')['replace'](/^gh:/,'')['replace'](/^github:/,'');let gg=aR(g4),{name:gh}=gg;if(gc)g6=await aS(g4);else{if(gf){let [gn,go]=gh['split']('/'),gp=h5(0x265)+gn+'/'+go+'/releases',gq=await fetch(gp)['then'](gv=>gv['json']());if(gq?.['message']&&!Array['isArray'](gq))throw aK(aH['RELEASE_NOT_FOUND'],'GitHub\x20releases\x20request\x20failed:\x20'+gq['message'],{'source':gh,'provider':'github','apiMessage':gq[h5(0x1fe)]});let gr=Array['isArray'](gq)?gq:[],gs=aQ(gr,gg,gh);if(!gs)throw gg['isExplicitSelection']?aP(gg,gr,gh):aK(aH[h5(0x145)],'GitHub\x20release\x20not\x20found',{'source':gh,'provider':'github',...aO(gr)});let gt=gs['assets']?.['find'](gv=>gv[h5(0x144)]['endsWith']('.tgz')||gv['name']['endsWith']('.zip'));if(!gt)throw q[h5(0x113)](gs),aK(aH['ASSET_NOT_FOUND'],h5(0x171),{'source':gh,'provider':'github','releaseTag':aM(gs)});let gu=gt[h5(0x12a)];g6=await aS(gu);}else{if(!gb){let gv=g5?.['find'](gz=>gz[h5(0x144)]===gh),gw=gv?.['releases']||[],gx=aQ(gw,gg,gh),gy=gx?.['assets'][h5(0x17f)](gz=>gz['name']['endsWith']('.tgz'));if(gv&&!gx&&gg['isExplicitSelection'])throw aP(gg,gw,gh);if(gy)g6=await aS(gy['url'],gy['name']);else{let [gz,gA='streamyx-extensions']=gh['split']('/')['reverse'](),gB='https://gitlab.com/api/v4/projects/'+gA+'%2F'+gz+'/releases',gC=await fetch(gB)['then'](gG=>gG['json']());if(gC?.['message']&&!Array['isArray'](gC))throw aK(aH['RELEASE_NOT_FOUND'],'GitLab\x20releases\x20request\x20failed:\x20'+gC['message'],{'source':gh,'provider':'gitlab','apiMessage':gC['message']});let gD=Array['isArray'](gC)?gC:[],gE=aQ(gD,gg,gh);if(!gE)throw gg['isExplicitSelection']?aP(gg,gD,gh):aK(aH['RELEASE_NOT_FOUND'],'GitLab\x20release\x20not\x20found',{'source':gh,'provider':'gitlab',...aO(gD)});let gF=gE['assets']?.['links']?.['find'](gG=>gG[h5(0x144)]['endsWith']('.tgz'));if(!gF)throw aK(aH['ASSET_NOT_FOUND'],'GitLab\x20release\x20asset\x20not\x20found',{'source':gh,'provider':'gitlab','releaseTag':aM(gE)});g6=await aS(gF['direct_asset_url']||gF['url'],gF['name']);}}}}let gi=M['extname'](g6),gj=gi==='.zip',gk=gi==='.tgz',gl=new Set(['.js','.mjs','.cjs'])['has'](gi),gm=await Q['stat'](g6)[h5(0x119)](gG=>gG['isDirectory']())['catch'](()=>!0x1);if(gl?g7=M[h5(0x18b)](g6):gm?g7=g6:(g7=g6['replace']('.tgz','')['replace']('.zip',''),await az(g7)||await aC(g7)),gj||gk)aG[h5(0x12f)](g6,g7),await aB(g6);else{if(!(gl||gm))throw aK(aH['UNSUPPORTED_PACKAGE_TYPE'],'Unsupported\x20package\x20type',{'source':g4,'extensionSource':g6,'packageType':gi||'unknown'});}return g7;},aU='__matchRules',aV=g4=>typeof g4=='object'&&!!g4&&!Array['isArray'](g4),aW=g4=>{const h6=gP;if(Array[h6(0x191)](g4)){let g7=g4['filter'](g9=>typeof g9==h6(0x18f)&&g9['length']>0x0&&!g9[h6(0x1c1)]('-')),g8=g4['filter'](g9=>typeof g9=='string'&&g9['startsWith']('-'))['map'](g9=>g9['slice'](0x1))['filter'](Boolean);return!g7['length']&&!g8[h6(0x1fc)]?void 0x0:{'include':g7['length']?g7:void 0x0,'exclude':g8['length']?g8:void 0x0};}if(!aV(g4))return;let g5=Array['isArray'](g4[h6(0x24b)])?g4[h6(0x24b)][h6(0x14e)](g9=>typeof g9=='string'&&!!g9):void 0x0,g6=Array[h6(0x191)](g4['exclude'])?g4['exclude']['filter'](g9=>typeof g9=='string'&&!!g9):void 0x0;if(!(!g5?.['length']&&!g6?.['length']))return{'include':g5?.['length']?g5:void 0x0,'exclude':g6?.['length']?g6:void 0x0};},aX=g4=>{const h7=gP;let g5=g4['trim']()['match'](/^(\*|https?):\/\/([^/]+)(\/.*)$/i);if(!g5)return null;let [,g6,g7,g8]=g5,g9=g6['toLowerCase'](),ga=g9==='*'?[h7(0x267),'https']:g9==='http'||g9==='https'?[g9]:null;if(!ga)return null;let gb=g7['trim']()['toLowerCase'](),gc=!0x1,ge=[],gf=[];if(gb==='*')gc=!0x0;else{if(gb['startsWith']('*.')){let gi=gb['slice'](0x1);if(!gi[h7(0x1c1)]('.')||gi['length']<=0x1)return null;gf=[gi];}else{if(!gb['includes']('*'))ge=[gb];else return null;}}if(!g8[h7(0x1c1)]('/'))return null;let gg=g8['indexOf']('*');if(gg!==-0x1&&gg!==g8['length']-0x1)return null;let gh=gg===-0x1?g8:g8['slice'](0x0,-0x1);return{'schemes':ga,'matchAnyHost':gc,'exactHosts':ge,'wildcardHostSuffixes':gf,'exactPaths':gg===-0x1?[gh]:void 0x0,'pathPrefixes':gg===-0x1?void 0x0:[gh]};},aY=g4=>{if(!Array['isArray'](g4))return;let g5=g4['filter'](g6=>typeof g6=='string'&&!!g6['trim']())['map'](aX)['filter'](g6=>!!g6);return g5['length']?g5:void 0x0;},aZ=(g4,g5)=>g5['matchAnyHost']||g5['exactHosts'][gP(0x199)](g4)||g5[gP(0x1c7)]['some'](g6=>g4['endsWith'](g6)),b0=(g4,g5)=>g5['exactPaths']?.['includes'](g4)||!!g5['pathPrefixes']?.['some'](g6=>g4['startsWith'](g6))||!g5['exactPaths']?.['length']&&!g5['pathPrefixes']?.['length'],b1=({manifest:g4,packageJson:g5,fallbackName:g6})=>{const h8=gP;let g7=aV(g5?.['config'])?g5['config']:null,g8=(aV(g4)?g4:null)??g7??{},g9=typeof g8['displayName']=='string'&&g8['displayName']||typeof g8['name']=='string'&&g8['name']||typeof g8['title']=='string'&&g8['title']||g6,ga=typeof g8['shortName']=='string'&&g8['shortName']||typeof g8['tag']=='string'&&g8['tag']||void 0x0,gb={...g8,'displayName':g9,'shortName':ga,'name':g9,'title':typeof g8['title']=='string'&&g8['title']?g8['title']:g9,'tag':ga};(typeof gb['icon']!='string'||!gb[h8(0x269)])&&delete gb['icon'],(typeof gb['displayName']!='string'||!gb['displayName'])&&(gb['displayName']=g6),(typeof gb['shortName']!='string'||!gb['shortName'])&&delete gb['shortName'],(typeof gb['tag']!='string'||!gb['tag'])&&delete gb['tag'],Array['isArray'](gb['permissions'])||delete gb['permissions'],gb['regions']=aW(g8['regions']),typeof gb['manifestVersion']!='number'&&(gb['manifestVersion']=0x1),aV(gb['capabilities'])||delete gb['capabilities'],aV(gb['settings'])||delete gb['settings'],aV(gb['secrets'])||delete gb['secrets'];let gc=aY(g8['matches']);return gc?(gb['matches']=Array['isArray'](g8['matches'])?g8[h8(0x250)]['filter'](ge=>typeof ge=='string'):void 0x0,Object[h8(0x1c3)](gb,aU,{'value':gc,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1})):delete gb['matches'],gb;},b2=async({dir:g4,packageJson:g5,fallbackName:g6})=>{let g7=join(g4,'manifest.json');return b1({'manifest':await az(g7)?await aE(g7):null,'packageJson':g5,'fallbackName':g6});},b3=g4=>g4['manifest']?.['displayName']||g4['manifest']?.['name']||g4['manifest']?.['title']||g4['package']?.['config']?.['title']||g4['package']?.['name']||g4['name']||'(unknown\x20extension)',b4=g4=>g4['manifest']?.['shortName']||g4['manifest']?.['tag']||g4['package']?.['config']?.['tag']||void 0x0,b5=(g4,g5)=>{let g6=g4['manifest']?.[aU];if(!Array['isArray'](g6)||!g6['length'])return!0x1;let g7=g5['protocol']['slice'](0x0,-0x1)['toLowerCase'](),g8=g5['hostname']['toLowerCase'](),g9=g5['pathname'];return g6['some'](ga=>!(ga['schemes']?.['length']&&!ga['schemes']['includes'](g7)||!aZ(g8,ga)||!b0(g9,ga)));},b6=g4=>{let g5=g4['manifest']?.[aU];return Array['isArray'](g5)&&g5['length']>0x0;},b7=g4=>g4['exports'],b8=g4=>{if(!g4)return;let g5=Object['fromEntries'](new Headers(g4)['entries']());return Object['keys'](g5)['length']?g5:void 0x0;},b9=(...g4)=>{let g5=Object['assign']({},...g4['map'](g6=>b8(g6)));return Object['keys'](g5)['length']?g5:void 0x0;},ba=async(g4,g5)=>{if(!g5)return g4;let g6=await g4['clone']()['arrayBuffer'](),g7=Buffer['from'](g6)['toString']('base64'),g8=g5['replace']('{{challenge}}',g7);return new Request(g4['url'],{'method':g4['method'],'headers':g4['headers'],'body':g8});},bb=async g4=>{const h9=gP;let g5=await g4['clone']()['arrayBuffer']();if(g5[0x0]===0x7b){let g6=null;try{g6=JSON['parse'](Buffer['from'](g5)['toString']('utf8'));}catch(g7){q['error']('Can\x27t\x20parse\x20license\x20response\x20as\x20JSON'),q['debug'](g7['message']),q['debug']('Base64\x20response\x20data:\x20'+Buffer['from'](g5)['toString']('base64'));}if(!g6)return g4;try{let g8='CAIS',g9=g8+Buffer['from'](g5)['toString']('utf8')['split']('\x22'+g8)[0x1]['split']('\x22')[0x0],ga=Buffer['from'](g9,'base64');return new Response(ga,{'status':g4[h9(0x23b)],'headers':g4[h9(0x164)]});}catch{q['error']('Can\x27t\x20recognize\x20license\x20response'),q['error']('Response:\x20'+JSON[h9(0x17c)](g6));}}return g4;},bc=g4=>({'url':g4['url'],'headers':g4['headers'],'http2':g4['http2'],'audioLanguage':g4[gP(0x16d)],'audioType':g4['audioType'],'subtitles':Array['isArray'](g4['subtitles'])?g4['subtitles']['filter'](g5=>!!g5&&typeof g5=='object'&&typeof g5['url']=='string')['map'](g5=>({...g5})):void 0x0}),bd=g4=>({'url':g4['url'],'headers':g4['headers']}),be=g4=>{const ha=gP;if(g4)return'server'in g4?{'kind':'server','server':g4['server'],'headers':g4['headers'],'template':g4[ha(0x213)],'http2':g4['http2']}:'payload'in g4?{'kind':'payload','payload':g4['payload']}:{'kind':'keys','keys':g4['keys']['map'](g5=>({...g5}))};},bf=g4=>{const hb=gP;let g5=g4['source']?bc(g4[hb(0x198)]):void 0x0,g6=g4['source']?.['drm']?be(g4['source']['drm']):void 0x0;return{'id':g4['id'],'type':'episodeNumber'in g4?'episode':'movie','title':g4['title'],'seasonNumber':g4['seasonNumber'],'episodeNumber':g4['episodeNumber'],'episodeTitle':g4['episodeTitle'],'source':g5?bd(g5):void 0x0,'context':g4['id']||g5||g6?{'legacy':{'contentId':g4['id'],'source':g5,'drm':g6}}:void 0x0};},bg=(g4,g5)=>{const hc=gP;let g6=new Input({'source':new UrlSource(g4['url'],{'requestInit':{'headers':g4['headers']},'fetchFn':g5['context']['http']['fetch']['bind'](g5['context']['http'])}),'formats':ALL_FORMATS});for(let g7 of g4['subtitles']??[])g6['addSubtitleTrack'](new UrlSource(g7['url']),{'name':g7[hc(0x15e)]||g7[hc(0x135)],'languageCode':g7['language'],'codec':g7[hc(0x1ea)],'disposition':{'default':g7['default'],'forced':g7['forced']}});return g6;},bh=async(g4,g5)=>{const hd=gP;if(!g5?.['trim']())return;let g6=await g4[hd(0x179)]({'filter':async g7=>{let g8=await g7['getLanguageCode']();return!g8||g8==='und';}});for(let g7 of g6)g7[hd(0x14f)](g5);},bi=async({entry:g4,extension:g5,options:g6})=>{const he=gP;let g7=g4['context']?.[he(0x201)];if(g7?.['source']?.[he(0x1a8)])return{'source':g7['source'],'drm':g7['drm']};let g8=g7?.['contentId']??g4['id'];if(!g8)return g4['source']?{'source':{'url':g4['source']['url'],'headers':g4['source']['headers']},'drm':g7?.['drm']}:null;let g9=await b7(g5)['fetchContentSource']?.(String(g8),g6);return g9?{'source':bc(g9),'drm':be(g9['drm'])}:null;},bj=async({entry:g4,extension:g5,options:g6})=>{const hf=gP;let g7=b7(g5),g8=g4['context']?.['legacy']?.['drm'];if(g8)return g8['kind']===hf(0x203)?be(await g7['fetchContentDrm']?.(g8['payload'],g6)):g8;},bk=g4=>({async 'requestLicense'({data:g5,options:g6,resource:g7}){const hg=gP;let g8=await bj({'entry':g7['entry'],'extension':g4,'options':g6});if(!g8||g8[hg(0x189)]!=='server')throw Error('Legacy\x20extension\x20did\x20not\x20provide\x20a\x20DRM\x20license\x20server');let g9=new Request(g8['server'],{'method':'POST','headers':b9(g8['headers'],g4['context']['http']['headers']),'body':Buffer['from'](g5)}),ga=await ba(g9,g8['template'])||g9,gb=await g4['context']['http']['fetch'](ga[hg(0x1a8)],{'body':await ga['arrayBuffer'](),'headers':ga['headers'],'method':ga['method']}),gc=await bb(gb)||gb;return new Uint8Array(await gc['arrayBuffer']());},async 'resolveKeys'({options:g5,resource:g6}){const hh=gP;let g7=await bj({'entry':g6['entry'],'extension':g4,'options':g5});return g7?.[hh(0x189)]==='keys'?g7['keys']:[];}}),bl=g4=>({async 'initialize'(){await b7(g4)['init']?.();},async 'getEntries'({url:g5,options:g6}){return(await b7(g4)['fetchContentMetadata']?.(g5,g6)??[])['map'](bf);},async 'resolveEntry'({entry:g5,options:g6}){const hi=gP;let g7=await bi({'entry':g5,'extension':g4,'options':g6});if(!g7?.['source']?.[hi(0x1a8)])throw Error('Legacy\x20extension\x20did\x20not\x20provide\x20a\x20media\x20source');let g8=g7['source'],g9=g7['drm']??g5['context']?.[hi(0x201)]?.['drm'],ga={...g5,'source':bd(g8),'context':{...g5['context'],'legacy':{...g5['context']?.['legacy'],'source':g8,'drm':g9}}},gb=bg(g8,g4);return await bh(gb,g8['audioLanguage']),{'entry':ga,'input':gb};},'drm':bk(g4)}),bm=g4=>g4&&'exports'in g4?g4['exports']:g4,bn=g4=>g4?.['package']?.['name']||'(unknown\x20extension)',bo=g4=>{const hj=gP;let g5=bm(g4);return!g5||typeof g5!='object'?null:hj(0x19e)in g5&&typeof g5['getEntries']==hj(0x1f9)?'v2':'fetchContentMetadata'in g5&&typeof g5['fetchContentMetadata']=='function'?'legacy-content':null;},bp=g4=>bo(g4)!==null,bq=g4=>{let g5=bm(g4);if(!g5||typeof g5!='object')throw Error('Invalid\x20extension\x20exports');return g5;},br=g4=>{const hk=gP;let g5=bq(g4),g6=bo(g5);if(g6==='v2')return g5;if(g6==='legacy-content')return bl(g4);throw Error('Unsupported\x20extension\x20interface:\x20'+g4[hk(0x241)][hk(0x144)]);},bs=async g4=>{let g5=bq(g4),g6=bn(g4),g7=bo(g5);try{if(g7==='v2'&&typeof g5['initialize']=='function'){await g5['initialize']?.();return;}g7==='legacy-content'&&typeof g5['init']=='function'&&await g5['init']?.();}catch(g8){let g9=g7==='v2'?'initialize':'init',ga=g8 instanceof Error?g8:Error(String(g8));throw q['error']('Extension\x20'+g6+'\x20'+g9+'\x20failed:\x20'+ga['message']),ga['stack']&&q['debug'](ga['stack']),ga;}},bt=g4=>g4['username']||g4['password']||g4['otp']?{'method':'password','username':g4['username']??'','password':g4['password']??'','otp':g4['otp']}:{'method':'interactive'},bu=async(g4,g5)=>{const hl=gP;let g6=bq(g4),g7=bn(g4);try{if(typeof g6['auth']?.['login']=='function'){await g6['auth']?.['login']?.(bt(g5));return;}typeof g6['login']=='function'&&await g6['login']?.(g5);}catch(g8){let g9=typeof g6['auth']?.['login']=='function'?'auth.login':'login',ga=g8 instanceof Error?g8:Error(String(g8));throw q['error']('Extension\x20'+g7+'\x20'+g9+hl(0x10f)+ga['message']),ga['stack']&&q['debug'](ga['stack']),ga;}},bv=async g4=>{const hm=gP;let g5=bq(g4),g6=bn(g4);try{if(typeof g5['auth']?.['logout']=='function'){await g5['auth']?.[hm(0x148)]?.();return;}typeof g5['logout']=='function'&&await g5['logout']?.();}catch(g7){let g8=typeof g5['auth']?.['logout']=='function'?hm(0x24a):hm(0x148),g9=g7 instanceof Error?g7:Error(String(g7));throw q['error']('Extension\x20'+g6+'\x20'+g8+'\x20failed:\x20'+g9[hm(0x1fe)]),g9['stack']&&q['debug'](g9['stack']),g9;}},bw=({url:g4,options:g5,resource:g6,signal:g7})=>({'url':g4,'options':g5,'resource':g6,'signal':g7}),bx=async(g4,g5)=>{const hn=gP;let g6=bq(g4);if(bo(g6)!=='v2')return;let g7=g6;typeof g7['hooks']?.[hn(0x1ce)]=='function'&&await g7['hooks']['beforeDownload'](bw(g5));},by=async(g4,g5)=>{const ho=gP;let g6=bq(g4),g7=bn(g4),g8=bo(g6);if(!g5['skipMux']&&g8==='v2'&&typeof g6['hooks']?.['afterMux']=='function')try{await g6['hooks']?.['afterMux']?.(bw(g5));}catch(g9){let ga=g9 instanceof Error?g9:Error(String(g9));q['error']('Extension\x20'+g7+'\x20hooks.afterMux\x20failed:\x20'+ga['message']),ga['stack']&&q['debug'](ga['stack']);}if(g8==='legacy-content'&&typeof g6['onDownloadFinished']=='function')try{await g6[ho(0x20d)]?.();}catch(gb){let gc=gb instanceof Error?gb:Error(String(gb));q['error']('Extension\x20'+g7+'\x20onDownloadFinished\x20failed:\x20'+gc[ho(0x1fe)]),gc['stack']&&q['debug'](gc[ho(0x138)]);}},bz=async(g4,{context:g5,dirname:g6,skipValidation:g7})=>{const hp=gP;let g8=await y(g4,{'dirname':g6,'context':g5})[hp(0x132)](()=>{});if(!g8)return null;let g9='default'in g8['exports']?g8['exports'][hp(0x1bf)]:g8['exports'];if(!g7&&!bp(g9))throw q[hp(0x15d)]('Incompatible\x20extension\x20interface'),aK(aH['IMPORT_INVALID'],'Incompatible\x20extension\x20interface',{'extensionPath':g4});return g8[hp(0x170)]=g9,g8;},bA=g4=>g4['split']('/')['reverse']()[0x0]['replaceAll']('@','')['replace']('extension-','')['replace']('-extension',''),bB=async g4=>{const hq=gP;let g5=[join(g4,'package.json'),join(g4,'package',hq(0x1c4))],g6;for(let gf of g5)if(await az(gf)){g6=gf;break;}let g7={},g8='',g9='',ga='',gb=g4;if(g6){gb=dirname(g6),g7=await aE(g6)||{};let gg=g7[hq(0x165)]||'index.js';g8=join(gb,gg),g9=g7['name'],ga=gb;}else{let gh=await aA(g4),gi=gh['find'](gj=>gj['name']==='index.js')||gh['find'](gj=>gj['name']==='main.js')||gh['find'](gj=>gj['name']==='service.js')||gh['find'](gj=>gj['name']==='extension.js')||gh['find'](gj=>gj['name']['endsWith']('.js'));gi&&(g8=join(g4,gi['name']),g9=parse(g8)['name']);}if(!g8)throw aK(aH['IMPORT_INVALID'],'Extension\x20main\x20script\x20not\x20found:\x20'+g4,{'dir':g4});ga||=dirname(g8);let gc=bA(g9),ge=await b2({'dir':gb,'packageJson':g7,'fallbackName':gc});return{'name':gc,'path':g8,'dir':ga,'package':g7,'manifest':ge};},bC=async(g4,g5)=>{const hr=gP;try{let g6=await bB(g4),g7=b3(g6),g8=E({'name':g6['name'],'title':g7,'dir':G});await g8[hr(0x1f8)]['import'](join(G,g6['name'],'cookies.txt'));let g9=await bz(g6['path'],{'context':g8,'dirname':g6['dir']});if(!g9)throw aK(aH['IMPORT_INVALID'],hr(0x153)+g6['path'],{'source':g5,'dir':g4,'path':g6['path']});return{'source':g5,'exports':g9['exports'],'context':g8,...g6};}catch(ga){throw q['error']('Error\x20importing\x20module:\x20'+ga['message']),q['debug'](ga instanceof Error?ga['stack']||ga['message']:String(ga)),ga;}},bD=g;let bE=bD;const bF=g4=>g4[gP(0x1cd)](/\/+$/,''),bG=()=>bF(bE),bH=(g4,g5)=>{let g6=bF(g4);return g5?g6+'/'+(g5['startsWith']('/')?g5['slice'](0x1):g5):g6;},bI=g4=>bH(bG(),g4);let bJ=null;async function bK(g4){const hs=gP;if(!bJ){q[hs(0x113)]('Public\x20key\x20not\x20found');let gb=await bM();if(gb)q['debug']('Public\x20key\x20found:\x20'+gb['slice'](0x0,0x32)+'...');else return q['error']('Public\x20key\x20not\x20found\x20in\x20response'),!0x1;if(bJ=await bN(gb)[hs(0x223)](()=>null),!bJ)return q['error']('Public\x20key\x20import\x20failed'),!0x1;}let g5=g4['headers']['get']('X-Signature-Timestamp'),g6=g4[hs(0x164)]['get']('X-Signature');if(!g5||!g6)return q['error']('Signature\x20headers\x20not\x20found'),!0x1;if(Date['now']()-parseInt(g5)>0x493e0)return!0x1;let g7=g5+':'+await g4[hs(0x1b1)]()[hs(0x1f0)](),g8=bO(g6),g9=new TextEncoder(),ga=crypto['subtle']['verify']({'name':'ECDSA','hash':'SHA-256'},bJ,g8,g9['encode'](g7));return ga||(bJ=null),ga;}const bL=()=>atob(f);async function bM(g4='/auth/.well-known/public-key'){try{let g5=await fetch(''+bG()+g4);return g5['ok']?await g5['text']():bL();}catch(g6){return q['error'](g6['message']),bL();}}async function bN(g4){let g5=bO(g4['replace']('-----BEGIN\x20PUBLIC\x20KEY-----','')['replace']('-----END\x20PUBLIC\x20KEY-----','')['trim']());return crypto['subtle']['importKey']('spki',g5,{'name':'ECDSA','namedCurve':'P-256'},!0x0,['verify']);}function bO(g4){const ht=gP;let g5=atob(g4),g6=new Uint8Array(g5['length']);for(let g7=0x0;g7<g5[ht(0x1fc)];g7++)g6[g7]=g5[ht(0x155)](g7);return g6['buffer'];}const bP=g4=>createAuthClient({'baseURL':g4+'/auth','plugins':[deviceAuthorizationClient(),tributeClient()],'fetchOptions':{'retry':0x0,'onSuccess':g5=>{let g6=g5['response']['headers']['get']('set-auth-token');g6&&(c1['accessToken']=g6,c2(c1));},'auth':{'type':'Bearer','token':()=>c1['accessToken']||c3()['then'](g5=>g5?.['accessToken'])},'onResponse':async g5=>await bK(g5['response'])['catch'](()=>!0x1)?(q['debug']('Response\x20verified:\x20'+g5['response']['url']),g5):(q['error']('Response\x20verification\x20failed:\x20'+g5['response']['status']+'\x20'+g5['response']['statusText']+'\x20'+g5['response']['url']),w[gP(0x23e)]('error',{'code':'SIGNATURE_VERIFICATION_FAILED'}),new Response(JSON['stringify']({'error':'SIGNATURE_VERIFICATION_FAILED','message':'Signature\x20verification\x20failed'}),{'status':0x191,'statusText':'Unauthorized'}))}});let bQ='',bR=bP(bG());const bS=()=>{let g4=bG();return(!bR||bQ!==g4)&&(bQ=g4,bR=bP(g4)),bR;},bT=async(g4,g5,g6={})=>{let {signal:g7,timeoutMs:g8=0x2710}=g6,g9=new AbortController(),ga=()=>g9['abort'](g7?.['reason']);g7?.['addEventListener']('abort',ga,{'once':!0x0});let gb=!0x1,gc=setTimeout(()=>{gb=!0x0,g9['abort'](Error('Request\x20timeout'));},g8);try{let ge=await fetch(g4,{...g5,'signal':g9['signal']});if(!ge['ok'])throw Error('Request\x20failed:\x20'+ge['status']);return ge['json']();}catch(gf){throw gb&&gf instanceof DOMException&&gf['name']==='AbortError'?Error('Request\x20timed\x20out\x20after\x20'+g8+'ms',{'cause':gf}):gf;}finally{clearTimeout(gc),g7?.['removeEventListener']('abort',ga);}},bU={'getExtensions':(g4,g5)=>bT(bI('extensions'),{'headers':g4?{'Authorization':'Bearer\x20'+g4}:void 0x0},{'signal':g5}),'getSubscriptions':(g4,g5)=>bT(bI('subscriptions'),{'headers':{'Authorization':'Bearer\x20'+g4}},{'signal':g5})},bV=0x12c*0x3e8,bW=0x12c*0x3e8,bX=new QueryClient({'queryCache':new QueryCache(),'defaultOptions':{'queries':{'staleTime':bV,'gcTime':bW}}}),bY={'get':g4=>bX['getQueryData'](g4),'set':(g4,g5)=>bX['setQueryData'](g4,g5),'reset':g4=>{g4?bX['removeQueries']({'queryKey':g4}):bX['clear']();},'invalidate':g4=>bX['invalidateQueries']({'queryKey':g4}),'refresh':async(g4,g5)=>(bX['invalidateQueries']({'queryKey':g4}),bZ({'queryKey':g4,'queryFn':g5}))},bZ=async({queryKey:g4,queryFn:g5,staleTime:g6,enabled:g7=!0x0})=>{const hu=gP;try{let g8=bX[hu(0x1a4)](g4),g9=g8?g8?.['isInvalidated']||!g8?.['dataUpdatedAt']&&!g8?.['errorUpdatedAt']||Date['now']()-g8['dataUpdatedAt']>(g6??bV):!0x0,ga=()=>bY[hu(0x1eb)](g4),gb=()=>bY['invalidate'](g4),gc=()=>bY['refresh'](g4,g5);return g7?g8&&!g9?{'data':g8['data'],'reset':ga,'invalidate':gb,'refresh':gc}:{'data':await bX['fetchQuery']({'queryKey':g4,'queryFn':g5,'staleTime':g6}),'reset':ga,'invalidate':gb,'refresh':gc}:{'data':null,'reset':ga,'invalidate':gb,'refresh':gc};}catch(ge){throw bX[hu(0x261)]({'queryKey':g4}),ge;}},c0=new D(join(x,'session.json')),c1={'accessToken':'','tokenType':'','scope':'','createdAt':''},c2=async g4=>{const hv=gP;c0['setItem']('access_token',g4['access_token']),c0['setItem']('token_type',g4['token_type']||'Bearer'),c0[hv(0x26b)]('scope',g4['scope']),c0['setItem']('created_at',new Date()['toISOString']()),c1['accessToken']=g4['access_token'],c1[hv(0x235)]=g4['token_type']||'Bearer',c1['scope']=g4['scope'],c1[hv(0x1b9)]=new Date()['toISOString']();},c3=async()=>{let g4=c0['getItem']('access_token'),g5=c0['getItem']('token_type'),g6=c0['getItem']('scope'),g7=c0['getItem']('created_at');return!g4||!g5||!g6||!g7?null:{'accessToken':g4,'tokenType':g5,'scope':g6,'createdAt':new Date(g7)};},c4=async()=>{let g4=await bZ({'queryKey':['session',bG()],'queryFn':()=>bS()['getSession']()});return{'session':g4['data']?.['data']?.['session'],'user':g4['data']?.['data']?.['user'],'error':g4['data']?.['error']};},c5=async()=>{let {user:g4,error:g5}=await c4(),g6=await bZ({'queryKey':['subscriptions',bG()],'queryFn':async()=>bS()['subscription']['list'](),'enabled':!!g4?.['id']});return{'data':g6['data']?.['data'],'error':g6['data']?.['error']??g5};},c6=['lowConnectionsCount','oneDevice'],c7=['mediumConnectionsCount','twoDevices','proxy','decryption','customIcon','tags','parallelDownloads','userExtensions','portableBuild'],c8=['highConnectionsCount','threeDevices',gP(0x1f5),'customDecrypter',gP(0x1a9),'premiumExtensions'],c9={'basic':c6,'plus':c7,'pro':[...c6,...c7,...c8]},ca=()=>bZ({'queryKey':['lava-subscriptions',bG()],'queryFn':async()=>{const hw=gP;let g4=c1['accessToken']||(await c3())?.[hw(0x17e)];return g4?bU['getSubscriptions'](g4):[];}}),cb=async()=>{let g4=await c5();return{'plan':(await ca())['data']?.[0x0]?.['productTitle']||g4['data']?.['find'](g5=>new Date(g5['expiresAt'])>new Date())?.['tributeSubscriptionName'],'error':g4['error']};},cc=async()=>{const hx=gP;let {user:g4,session:g5}=await c4(),{plan:g6,error:g7}=await cb();return{'user':g4,'session':g5,'error':g7,'plan':g6,'grantedBenefits':g6?c9[g6[hx(0x212)]()]??[]:[]};};var cd=a5((g4,g5)=>{const hE=gP;g5['exports']={'instagram':{'create':g6=>{const hD=b;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hy=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gq=>gq);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj['prompt'],gj[hy(0x1f7)],gj['confirm'],gj[hy(0x1d0)],gj['utils'],gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj['DASH'],gj[hy(0x249)],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj[hy(0x253)];let gl={'Referer':'https://www.instagram.com/'},gm={'X-IG-App-ID':'936619743392459','User-Agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/107.0.0.0\x20Safari/537.36'},gn=async gq=>{const hz=hy;let gr=new URLSearchParams({'doc_id':'8845758582119845','variables':JSON['stringify']({'shortcode':gq,'child_comment_count':0x3,'fetch_comment_count':0x28,'parent_comment_count':0x18,'has_threaded_comments':!0x0})});try{let gs=await g9('https://www.instagram.com/graphql/query/?'+gr[hz(0x200)](),{'headers':gm});return gs['ok']?(await gs['json']())['data']?.['xdt_shortcode_media']??null:(gc['error']('GraphQL\x20request\x20failed\x20with\x20status:\x20'+gs['status']),null);}catch(gt){return gc['error']('Error\x20during\x20GraphQL\x20fetch:',gt),null;}},go=async gq=>{const hA=hy;try{let gr=await g9('https://www.instagram.com/p/'+gq+'/embed/captioned/',{'headers':{'User-Agent':gm['User-Agent']}});if(!gr['ok'])return null;let gs=(await gr['text']())[hA(0x158)](/window\.__additionalDataLoaded\('extra',\s*({.+?})\s*\);/);return gs?.[0x1]?JSON['parse'](gs[0x1])['shortcode_media']??null:null;}catch(gt){return gc['error']('Error\x20during\x20embed\x20page\x20fetch:',gt),null;}},gp=gq=>{let gr=gq['edge_media_to_caption']?.['edges']?.[0x0]?.['node']?.['text']||'Instagram\x20Post',gs=[],gt=gv=>{const hB=b;if(!gv)return;let gw=gv['is_video']&&gv['video_url']?gv[hB(0x1f1)]:gv[hB(0x131)];gw&&gs['push']({'title':gr,'source':{'url':gw,'headers':gl}});},gu=gq['edge_sidecar_to_children']?.['edges'];if(gu?.['length']){for(let gv of gu)gt(gv['node']);}else gt(gq);return gs;};g7['exports']=gk({async 'getEntries'({url:gq}){const hC=hy;let gr=new URLPattern({'pathname':'/:type(p|reel|tv|reels|videos)/:shortcode{/*}?','baseURL':new URL(gq)['origin']})['exec'](gq)?.['pathname']['groups']['shortcode'];if(!gr)return gc['error']('Could\x20not\x20extract\x20a\x20valid\x20Instagram\x20shortcode\x20from\x20the\x20URL'),gc[hC(0x113)](gq),[];try{let gs=await gn(gr);return gs||=(gc['warn']('GraphQL\x20method\x20failed.\x20Falling\x20back\x20to\x20embed\x20page\x20scraping.'),await go(gr)),gs?gp(gs):(gc['error']('All\x20extraction\x20methods\x20failed.\x20The\x20post\x20may\x20be\x20private,\x20deleted,\x20or\x20require\x20a\x20login.'),[]);}catch(gt){return gc['error']('A\x20critical\x20error\x20occurred\x20while\x20fetching\x20Instagram\x20metadata:',gt),[];}}});})(g6['Azot'],g6[hD(0x156)],g6['localStorage'],g6['cookieStore'],g6['console'],g6[hD(0x274)],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'Instagram','icon':'https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/41/91/13/419113d2-6246-c557-669e-0f0a5c62bcc5/Prod-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/460x0w.webp','matches':['https://instagram.com/*','https://*.instagram.com/*']},'pkg':{'name':'instagram','version':'0.0.1','private':!0x0,'keywords':['social-networks'],'homepage':'https://instagram.com/','author':{'name':'Azot','url':hE(0x117)},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'instagram.ts'}},'ntv':{'create':g6=>{const hJ=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hF=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gs=>gs);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'],gj['utils'];let gl=gj['Input'],gm=gj[hF(0x251)];gj['ALL_FORMATS'],gj['DASH'],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'];let gn=(gs,gt,gu)=>gs['split'](gt)[0x1]?.['split'](gu)[0x0],go=(gs,gt)=>{const hG=hF;let gu=gn(gs,'<'+gt+'>','</'+gt+'>')?.['trim']();if(!gu)return;let gv=gu['match'](/<!\[CDATA\[(.*?)\]\]>/s);return gv?.[0x1]?gv[0x1][hG(0x124)]():gu[hG(0x246)]('DATA[')[0x1]?.['split'](']')[0x0]?.['trim']()||gu;},gp=async(gs,gt)=>{let gu=await g9(gs);return gu['ok']?await gu['text']():(gc['error']('Failed\x20to\x20fetch\x20'+gt+'.\x20Status:\x20'+gu['status']+'\x20'+gu['statusText']),null);},gq=async(gs,gt,gu)=>{const hH=hF;let gv=new URL(gs)['pathname'],gw=new Set();for(let gy of gt['split']('href=\x22/serial')){if(!gy['startsWith']('/'))continue;let gz=gy['split']('\x22')[0x0];!gz||gz['length']<=0x1||gz['includes']('/issues/')||gz['includes'](hH(0x20c))||gz['split']('/')['length']<=0x2||gw['add'](gs['replace'](gv,'/serial'+gz));}let gx=[];for(let gA of gw)gx['push'](...await gr(gA,gu));return gx;},gr=async(gs,gt=new Set())=>{const hI=hF;if(gt['has'](gs))return[];gt['add'](gs);let gu=await gp(gs,'NTV\x20page');if(!gu)return[];let gv=gn(gu,'<meta\x20property=\x22ya:ovs:feed_url\x22\x20content=\x22','\x22>')??gn(gu,hI(0x210),'\x22\x20/>');if(!gv)return new URL(gs)['pathname']['includes']('/serial')?gq(gs,gu,gt):(gc['error']('Could\x20not\x20find\x20video\x20link\x20in\x20the\x20page.'),[]);let gw=gv[hI(0x246)]('video/')[0x1]?.['split']('/')[0x0];if(!gw)return gc['error']('Could\x20not\x20parse\x20NTV\x20video\x20id.'),[];let gx=await gp('https://www.ntv.ru/vi'+gw+'/','NTV\x20XML\x20metadata');if(!gx)return[];let gy=go(gx,'dash')||go(gx,'hls'),gz=go(gx,'file')||go(gx,'video'),gA=go(gx,'hifile')||go(gx,'hd_video')||gy||gz;if(!gA)return gc['error']('Could\x20not\x20resolve\x20NTV\x20media\x20URL.'),[];let gB=gn(gx,'<embed_tag>','</embed_tag>')||'NTV',gC=gn(gu,'\x22name\x22:\x22','\x22'),gD=gC?.['includes']('серия')?gC['split']('-')[0x0]:void 0x0,gE=gD?parseInt(gD,0xa):void 0x0,gF=gn(gx,'<subtitles>','</subtitles>'),gG=gF?'https://www.ntv.ru'+gF:void 0x0;return gG&&gc[hI(0x113)](hI(0x1d8)+gG),[{'type':gE?'episode':'video','title':gB,'seasonNumber':gE?0x1:void 0x0,'episodeNumber':gE,'source':{'url':gA},'context':gG?{'subtitles':[{'url':gG,'language':'ru','label':'Russian'}]}:void 0x0}];};g7['exports']=gk({'getEntries'({url:gs}){return gr(gs,new Set());},'resolveEntry'({entry:gs}){if(!gs['source']?.['url'])throw Error('NTV\x20entry\x20is\x20missing\x20source\x20URL');let gt=new gl({'source':new gm(gs['source']['url'])}),gu=gs['context']?.['subtitles']??[];for(let gv of gu)gt['addSubtitleTrack'](new gm(gv['url']),{'languageCode':gv['language'],'name':gv['label']});return{'entry':gs,'input':gt};}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6['console'],g6['prompt'],g6['alert'],g6[hJ(0x15f)],g6['navigator'],g6['window']),g7['exports'][hJ(0x1bf)]||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'НТВ','icon':'https://static.ntv.ru/static/images/logo.png','matches':['https://ntv.ru/*','https://*.ntv.ru/*']},'pkg':{'name':'ntv','version':'0.0.9','private':!0x0,'keywords':[hE(0x188)],'homepage':'https://www.ntv.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'ntv.ts'}},'rbc':{'create':g6=>{const hM=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hK=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gl=>gl);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'],gj['utils'],gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj['DASH'],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj[hK(0x253)],g7['exports']=gk({async 'getEntries'({url:gl}){const hL=hK;let gm=await g9(gl);if(!gm['ok'])throw Error('Failed\x20to\x20fetch\x20RBC\x20page:\x20'+gm['status']+'\x20'+gm['statusText']);let gn=(await gm['text']())['match'](/(?:https?:)?\/\/[^\s"'<>]+\.m3u8(?:\?[^\s"'<>]*)?/i)?.[0x0];if(!gn)throw Error(hL(0x20a));return[{'type':'video','source':{'url':gn['startsWith']('//')?'https:'+gn:gn}}];}});})(g6[hM(0x205)],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'РБК','icon':'https://static.rustore.ru/imgproxy/A-G-s2Q1x2iqq3qHCAo66-nllrtlqEr7XNU_JKXt4mQ/preset:web_app_icon_160/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS80MGViMWY3MS1kMDkzLTQ2NDMtOTkyNi0xZWM0ZjkwNzViMTQ=.webp','matches':['https://rbc.ru/*',hE(0x1d7)]},'pkg':{'name':'rbc','version':'0.0.2','private':!0x0,'keywords':['news'],'homepage':hE(0x10e),'author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'rbc.ts'}},'rutube':{'create':g6=>{let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hN=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=go=>go);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'],gj['utils'],gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj[hN(0x1af)],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'];let gl=['/video/:id{/}?','/play/embed/:id{/}?','/shorts/:id{/}?','/yappy/:yappyId{/}?','/video/private/:id{/}?'],gm=go=>{const hO=hN;let gp={'yappyId':'','id':'','key':''};gp['key']=new URL(go)['searchParams']['get']('p')??'';for(let gq of gl){let gr=new URLPattern(gq,hO(0x23c))['exec'](go);gr&&(Object['assign'](gp,gr['pathname']['groups']),Object['assign'](gp,gr['search']['groups']));}return gp;},gn=async go=>{const hP=hN;let gp=(await g9('https://rutube.ru/pangolin/api/web/yappy/yappypage/?client=wdp&videoId='+go+'&page=1&page_size=15')['then'](gq=>gq['json']())['catch'](()=>null))?.['results']?.['find'](gq=>String(gq['id'])===go)?.['link'];return gp?[{'type':hP(0x21d),'title':'rutube_yappy_'+go,'source':{'url':gp}}]:(gc[hP(0x15d)]('ErrorEmptyDownload'),[]);};g7['exports']=gk({async 'getEntries'({url:go}){const hQ=hN;let gp=gm(go);if(gp[hQ(0x21c)])return gn(gp['yappyId']);if(!gp['id'])return gc['error']('Could\x20not\x20extract\x20Rutube\x20video\x20id'),[];let gq=new URL('https://rutube.ru/api/play/options/'+gp['id']+'/?no_404=true&referer&pver=v2');gp['key']&&gq['searchParams'][hQ(0x20f)]('p',gp['key']);let gr=await g9(gq)[hQ(0x119)](gs=>gs['json']())[hQ(0x223)](gs=>(gs instanceof Error&&gc['debug'](gs['message']),null));return gr?gr['detail']||!gr['video_balancer']?.['m3u8']?(gc['error']('Play\x20info\x20is\x20empty'),[]):gr['live_streams']?.['hls']?(gc['error']('Live\x20videos\x20are\x20not\x20supported'),[]):[{'type':'video','title':gr['title']?.['trim']()||hQ(0x1e2)+gp['id'],'source':{'url':gr['video_balancer']['m3u8']}}]:(gc['error']('Cannot\x20fetch\x20play\x20info'),[]);}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'RUTUBE','icon':'https://static.rustore.ru/imgproxy/vcyBc0LG-3ybXcGs_-_OJXH9ULjoegHlLs-DacemG08/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjQ2MjA3L2NvbnRlbnQvSUNPTi9hNTZhZWJlMy01NjVhLTRiZjYtOTQyZC0xZjE0OTk0YjlhNmUucG5n.webp','matches':['https://rutube.ru/*','https://*.rutube.ru/*']},'pkg':{'name':hE(0x268),'version':'0.0.13','private':!0x0,'keywords':['video-hostings'],'homepage':'https://rutube.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':hE(0x21b),'url':'https://github.com/vitalygashkov'}],'type':'module','main':'rutube.ts'}},'soundcloud':{'create':g6=>{const hV=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hR=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gp=>gp);let gk=gj[hR(0x20e)];gj['version'],gj['sleep'],gj[hR(0x12d)],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'];let gl=gj['utils'];gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj['DASH'],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'];let gm={'version':'','id':''},gn=async()=>{const hS=hR;try{let gp=await g9('https://soundcloud.com/')['then'](gs=>gs['text']())['catch'](gs=>{let gt=gs instanceof Error&&gs['cause']!=null?String(gs['cause']):'';return gs instanceof Error&&gt['includes']('ECONNRESET')&&gc['warn']('Soundcloud\x20may\x20be\x20blocked\x20in\x20your\x20region.\x20Use\x20proxy\x20or\x20VPN\x20to\x20bypass\x20restrictions.'),'';}),gq=gp['match'](/window\.__sc_version="([0-9]{10})"/)?.[0x1];if(gq&&gm[hS(0x1dc)]===gq)return gm['id'];let gr='';for(let gs of gp['matchAll'](/<script.+src="(.+)">/g)){let gt=gs[0x1];if(!gt?.['startsWith']('https://a-v2.sndcdn.com/'))continue;let gu=(await g9(gt)['then'](gv=>gv['text']())['catch'](()=>''))['match'](/\("client_id=[A-Za-z0-9]{32}"\)/)?.[0x0]['match'](/[A-Za-z0-9]{32}/)?.[0x0];if(gu){gr=gu;break;}}return gq&&(gm['version']=gq,gm['id']=gr),gr;}catch{return'';}},go=gp=>gp['audioCodecs']?.['some'](gq=>gq==='aac'||gq==='mp3')??!0x1;g7['exports']=gk({async 'getEntries'({url:gp,options:gq}){const hT=hR;let {author:gr,song:gs,accessKey:gt,shortLink:gu}=gl['execUrlPatterns'](gp,[':author/:song/s-:accessKey',':author/:song',':shortLink'],['https://soundcloud.com','https://on.soundcloud.com'])['pathname'],gv=await gn();if(!gv)throw Error(hT(0x1cc));let gw;if(new URL(gp)['hostname']==='on.soundcloud.com'&&gu&&(gw=await g9('https://on.soundcloud.com/'+gu+'/',{'redirect':'manual'})['then'](gD=>{const hU=hT;let gE=gD[hU(0x164)]['get']('location');if(gD[hU(0x23b)]===0x12e&&gE?.['startsWith']('https://soundcloud.com/'))return gE['split']('?',0x1)[0x0];})['catch'](()=>void 0x0)),!gw&&gr&&gs&&(gw='https://soundcloud.com/'+gr+'/'+gs+(gt?'/s-'+gt:'')),!gw)throw Error('Could\x20not\x20fetch');let gx=await g9('https://api-v2.soundcloud.com/resolve?url='+gw+'&client_id='+gv)['then'](gD=>gD['status']===0xc8?gD['json']():null)['catch'](()=>null);if(!gx)throw Error('Could\x20not\x20fetch');let gy=gx['media']?.['transcodings'];if(!gy?.['length'])throw Error('Empty\x20download');let gz=gy['find'](gD=>gD['preset']==='opus_0_0'),gA=gy['find'](gD=>gD['preset']===hT(0x211));if(gA&&(go(gq)||!gz)&&(gz=gA),!gz)throw Error('Empty\x20download');let gB=''+gz['url']+(gz['url']['includes']('?')?'&':'?')+'client_id='+gv+'&track_authorization='+gx['track_authorization'];if(!gB['startsWith']('https://api-v2.soundcloud.com/media/soundcloud:tracks:'))throw Error('Empty\x20download');let gC=await g9(gB)['then'](async gD=>(await gD['json']())['url']??'')['catch'](()=>'');if(!gC)throw Error('Could\x20not\x20fetch');return[{'type':'audio','title':gx['title']['trim'](),'author':gx[hT(0x23a)]['username']['trim'](),'source':{'url':gC}}];}});})(g6[hV(0x205)],g6[hV(0x156)],g6['localStorage'],g6[hV(0x1f8)],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7[hV(0x170)];},'manifest':{'manifestVersion':0x1,'name':hE(0x216),'icon':'https://play-lh.googleusercontent.com/JSSeB3XQtb9sHD5FWTqVM4AksY_Kg2q20eExenxGqPJZdn2uVQxi8eoHkP5MA-IR4w=w480-h960-rw','matches':['https://soundcloud.com/*','https://*.soundcloud.com/*']},'pkg':{'name':hE(0x12e),'version':'0.0.6','private':!0x0,'keywords':['music'],'homepage':'https://soundcloud.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'soundcloud.ts'}},'tiktok':{'create':g6=>{const hY=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hW=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gl=>gl);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj[hW(0x274)],gj['notify'],gj['confirm'],gj['ask'],gj['utils'],gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj[hW(0x1af)],gj[hW(0x249)],gj[hW(0x173)],gj[hW(0x1f4)],gj['MP4'],gj['MP3'],g7['exports']=gk({async 'getEntries'({url:gl}){const hX=hW;let gm=await g9(gl);if(!gm['ok'])return gc['error']('Failed\x20to\x20fetch\x20TikTok\x20page.\x20Status:\x20'+gm['status']),[];let gn=(await gm['text']())['split']('<script\x20id=\x22__UNIVERSAL_DATA_FOR_REHYDRATION__\x22\x20type=\x22application/json\x22>')[0x1]?.['split']('</script>')[0x0];if(!gn)return gc['error']('Could\x20not\x20find\x20target\x20script\x20tag.\x20TikTok\x20might\x20have\x20updated\x20their\x20page\x20structure.'),[];let go;try{go=JSON['parse'](gn);}catch(gs){return gc['error']('Failed\x20to\x20parse\x20TikTok\x20page\x20JSON',gs,{'url':gl}),[];}let gp=go['__DEFAULT_SCOPE__']?.['webapp.video-detail'],gq=gp?.['itemInfo']?.['itemStruct'];if(!gq)return gc['error']('Could\x20not\x20find\x20video\x20data\x20in\x20the\x20JSON\x20payload.\x20The\x20content\x20might\x20be\x20unavailable\x20or\x20the\x20structure\x20has\x20changed.'),gp?.[hX(0x1d1)]&&gc['error']('Error\x20'+gp['statusCode']+':\x20'+gp['statusMsg']),[];let gr=gq['video']?.['playAddr'];return gr?[{'type':'video','title':gq['desc']||'TikTok\x20Video','source':{'url':gr,'headers':{'Referer':'https://www.tiktok.com/','Cookie':gg['cookie']}}}]:(gc['error']('Could\x20not\x20find\x20a\x20video\x20URL\x20(playAddr)\x20in\x20the\x20JSON\x20payload.'),[]);}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6[hY(0x1f8)],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'TikTok','tag':'TT','icon':'https://play-lh.googleusercontent.com/LdBITldj-tJxqLm-CsWSbnt4BMo2gk53cgM7mWIL-zn44m1ywLyQgxRsHKqp8r0qceXs=w480-h960-rw','permissions':[],'matches':['https://tiktok.com/*','https://*.tiktok.com/*']},'pkg':{'name':'tiktok','version':'0.0.2','private':!0x0,'keywords':['social-networks'],'homepage':'https://www.tiktok.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'tiktok.ts'}},'virtualroom':{'create':g6=>{const i1=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const hZ=b;let gj=g8??Streamyx??{};gj&&(gj[hZ(0x20e)]||=gl=>gl);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj[hZ(0x12d)],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'],gj['utils'],gj['Input'],gj[hZ(0x251)],gj['ALL_FORMATS'],gj['DASH'],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'],g7['exports']=gk({async 'getEntries'({url:gl}){const i0=hZ;let gm=new URL(gl)['searchParams']['get'](i0(0x182));if(!gm)return gc['error']('Could\x20not\x20extract\x20VirtualRoom\x20recordId.'),[];let gn=await g9('https://mv1.virtualroom.ru/vr/player/records/'+gm+'/info')[i0(0x119)](gq=>gq['ok']?gq['json']():null)['catch'](()=>null),go=await g9('https://mv1.virtualroom.ru/vr/player/records/'+gm+i0(0x24e))[i0(0x119)](gq=>gq['ok']?gq['json']():null)['catch'](()=>null),gp=gn?.['data']?.['roomParameters']?.['name']??'VirtualRoom';return(go?.['data']?.['translations']??[])['filter'](gq=>!!gq['url'])['map'](gq=>({'title':[gp,gq['type'],gq['source'],gq[i0(0x112)]]['filter'](Boolean)[i0(0x272)]('\x20'),'source':{'url':gq['url']}}));}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6[i1(0x21a)],g6['prompt'],g6['alert'],g6[i1(0x15f)],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'VirtualRoom','icon':'https://sun9-50.userapi.com/impg/rY5N7sdA93TFdjkeYqPTnPIjvCJ0rALo_V7V8g/zLAaAv0PpvY.jpg?size=400x400&quality=95&sign=5ddcd6358131b204b8619cb8eeff943f&type=album','matches':['https://virtualroom.ru/*','https://*.virtualroom.ru/*']},'pkg':{'name':'virtualroom','version':'0.0.7','private':!0x0,'keywords':['videotelephony'],'homepage':'https://virtualroom.ru/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'virtualroom.ts'}},'vk':{'create':g6=>{let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const i2=b;let gj=g8??Streamyx??{};gj&&(gj[i2(0x20e)]||=gp=>gp);let gk=gj['defineExtension'];gj[i2(0x1dc)],gj['sleep'],gj['input'],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'],gj['utils'],gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj['DASH'],gj['DASH_FORMATS'],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'];let gl=['2160','1440','1080','720','480','360',i2(0x168),'144'],gm=gp=>{let gq=gp['match'](/video-(\d+)_(\d+)/);return gq?{'ownerId':gq[0x1],'videoId':gq[0x2]}:null;},gn=gp=>{if(!gp)return null;for(let gq of gp)if(Array['isArray'](gq)){for(let gr of gq)if(gr&&typeof gr=='object'&&'player'in gr)return gr;}return null;},go=(gp,gq)=>{const i3=i2;let gr=gq['videoQuality']?.[i3(0x1cd)]('p','')['trim'](),gs=gl['filter'](gt=>!!gp['url'+gt]);return gs['length']?gr&&gs['includes'](gr)?gr:gs[0x0]:null;};g7['exports']=gk({async 'getEntries'({url:gp,options:gq}){const i4=i2;let gr=gm(gp);if(!gr)return gc[i4(0x15d)]('Could\x20not\x20extract\x20VK\x20video\x20identifiers'),[];let gs=await g9('https://vkvideo.ru/al_video.php?act=show',{'method':'POST','headers':{'content-type':'application/x-www-form-urlencoded;\x20charset=utf-8','accept':'*/*','accept-language':'ru-RU,ru;q=0.9','sec-ch-ua':i4(0x139),'sec-ch-ua-mobile':'?0','sec-ch-ua-platform':'\x22macOS\x22','sec-fetch-dest':'empty','sec-fetch-mode':'cors','sec-fetch-site':'same-origin','x-requested-with':'XMLHttpRequest','Referer':gp,'Referrer-Policy':i4(0x116)},'body':new URLSearchParams({'al':'1','autoplay':'1','claim':'','force_no_repeat':'true','is_video_page':'true','list':'','module':'direct','t':'','video':'-'+gr['ownerId']+'_'+gr['videoId']})['toString']()});if(!gs['ok'])throw Error('VK\x20request\x20failed:\x20'+gs['status']+'\x20'+gs[i4(0x149)]);let gt=gn((await gs['json']())[i4(0x203)]),gu=gt?.['player']?.['params'],gv=gu&&gu['length']>0x0?gu[0x0]:void 0x0;if(!gt||!gv)return gc['error']('Could\x20not\x20find\x20VK\x20player\x20payload'),[];if(gt['mvData']?.['is_active_live']===0x1||gt['mvData']?.['is_active_live']==='1')return gc['error']('Live\x20videos\x20are\x20not\x20supported'),[];let gw=go(gv,gq),gx=gw?gv[i4(0x1a8)+gw]:void 0x0,gy=gv['dash_sep']||gx;return gy?[{'type':'video','title':[gv['md_title']?.['trim'](),gv['md_author']?.['trim']()]['filter'](Boolean)['join']('\x20'),'source':{'url':gy,'headers':{'Referer':gp,'Cookie':gg['cookie']}}}]:(gc['error']('Could\x20not\x20find\x20video\x20URL'),[]);}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6['navigator'],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'VK','icon':'https://static.rustore.ru/imgproxy/kSjDiz_MKxD_jzwgEqqaIjQZTE-NEP1Xt8HtJT7EU4s/preset:app_card_icon/aHR0cHM6Ly9zdGF0aWMucnVzdG9yZS5ydS9hcGsvMjAyNzgyMzI5NS9jb250ZW50L0lDT04vOTc0ODYwMTgtNTc4NS00MjRkLTljYWItNGZlNDk2ZDI3Yzc2LnBuZw==.webp','matches':['https://vk.com/*','https://*.vk.com/*','https://vkvideo.ru/*','https://*.vkvideo.ru/*']},'pkg':{'name':'vk','version':'0.0.8','private':!0x0,'keywords':[hE(0x174)],'homepage':'https://vkvideo.ru/','author':{'name':'Azot','url':hE(0x117)},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'vk.ts'}},'weibo':{'create':g6=>{const i7=hE;let g7={'exports':{}};return((g8,g9,ga,gb,gc,ge,gf,gg,gh,gi)=>{const i5=b;let gj=g8??Streamyx??{};gj&&(gj['defineExtension']||=gm=>gm);let gk=gj['defineExtension'];gj['version'],gj['sleep'],gj['input'],gj['prompt'],gj['notify'],gj['confirm'],gj['ask'];let gl=gj['utils'];gj['Input'],gj['UrlSource'],gj['ALL_FORMATS'],gj['DASH'],gj[i5(0x249)],gj['HLS'],gj['HLS_FORMATS'],gj['MP4'],gj['MP3'],g7[i5(0x170)]=gk({async 'getEntries'({url:gm}){const i6=i5;let gn=gl[i6(0x1b3)](gm,['/:userId(\x5cd+)/:bid','/detail/:mid'],['https://weibo.com/','https://m.weibo.cn']),go=gn['pathname']['bid']||gn['pathname']['mid'];if(!go)return[];let gp=await g9('https://m.weibo.cn/statuses/show?id='+go,{'credentials':'include','referrer':'https://m.weibo.cn/status/'+(gn['pathname']['bid']??go)+'?jumpfrom=weibocom','method':'GET','mode':'cors'})['then'](gt=>gt['json']())['catch'](()=>null);if(!gp?.['data'])return gc['error']('Could\x20not\x20resolve\x20Weibo\x20post\x20metadata'),[];let gq=[],gr=gp['data']['pics'],gs=gp['data']['page_info'];if(gr?.[i6(0x1fc)]){for(let gt of gr['filter'](gu=>gu['type']==='video'||gu['type']==='livephoto'))gt['videoSrc']&&gq['push']({'type':'video','title':gt['pid'],'source':{'url':gt['videoSrc']}});}else{if(gs?.['type']===i6(0x21d)){let gu=Object['values'](gs['urls']??{})[0x0],gv=gs['media_info']?.[i6(0x242)]||gs['media_info']?.[i6(0x1e7)],gw=gu||gv;gw&&gq['push']({'type':'video','title':gs['title']||gs['page_title'],'source':{'url':gw}});}}return gq;}});})(g6['Azot'],g6['fetch'],g6['localStorage'],g6['cookieStore'],g6['console'],g6['prompt'],g6['alert'],g6['document'],g6[i7(0x134)],g6['window']),g7['exports']['default']||g7['exports'];},'manifest':{'manifestVersion':0x1,'name':'Weibo','icon':'https://play-lh.googleusercontent.com/TTKq2trnzgtoyM0jc1pyrrmXtA_Yd3A2hxubZtDahdZStYf4GPANZa-wjDb1ELHrGqh_=w480-h960-rw','matches':['https://weibo.com/*','https://*.weibo.com/*','https://weibo.cn/*','https://*.weibo.cn/*']},'pkg':{'name':hE(0x1ed),'version':'0.0.6','private':!0x0,'keywords':['social-networks'],'homepage':'https://weibo.com/','author':{'name':'Azot','url':'https://azot.mov/'},'contributors':[{'name':'Vitaly\x20Gashkov','email':'vitalygashkov@vk.com','url':'https://github.com/vitalygashkov'}],'type':'module','main':'weibo.ts'}}};}),ce=a7(cd(),0x1);const cf=g4=>({'name':g4['name'],'source':g4['source'],'dir':g4['dir'],'path':g4['path'],'package':g4['package'],'manifest':g4['manifest'],'installedAt':g4['installedAt']||new Date()['toISOString']()});var cg=class gH extends S{[gP(0x11f)]=new Map();['extensionDirs'];[gP(0x1c0)];['infoList']=[];constructor({dirs:g4,indexPath:g5}={}){super(),this['extensionDirs']=g4??[process['cwd']()],this['indexPath']=g5??L['join'](process['cwd'](),'index.json');}async['init'](){return await this['ensureValidIndexPath'](),await this['loadInfo'](),this;}async['loadInfo'](){return this['infoList']=await aE(this['indexPath'])['catch'](()=>[]),this['infoList'];}async['saveInfo'](){return await this['ensureValidIndexPath'](),await aF(this['indexPath'],this['infoList']);}async['ensureValidIndexPath'](){const i8=gP;(await P[i8(0x1d6)](this['indexPath'])['catch'](()=>null))?.['isDirectory']()&&(q['warn']('Invalid\x20extensions\x20index\x20path\x20repaired:\x20'+this['indexPath']),await aB(this['indexPath']),await P['writeFile'](this['indexPath'],'[]','utf8'));}static async['getAvailableExtensions'](){const i9=gP;try{return(await bU[i9(0x275)](c1['accessToken'],AbortSignal['timeout'](0x1f40)))['data'];}catch(g4){let g5=g4&&typeof g4=='object'&&'code'in g4?g4['code']:g4&&typeof g4=='object'&&i9(0x273)in g4?g4['cause']?.['code']:void 0x0;return q['warn']('Failed\x20to\x20fetch\x20extensions\x20catalog:\x20'+(g4 instanceof Error?g4['message']:String(g4))+'\x20('+g5+')'),[];}}async[gP(0x1c5)](){for(let g4 of this['extensionDirs']){q['debug']('Loading\x20extensions\x20from\x20'+g4);let g5=await P['readdir'](g4,{'withFileTypes':!0x0})['catch'](()=>[]);for(let g6 of g5)if(g6['isDirectory']()){let g7=L['join'](g4,g6['name']);if(await P['readdir'](g7)['then'](g8=>g8['filter'](g9=>!g9['startsWith']('.')))['then'](g8=>!g8['length']))continue;await this['loadExtension'](g7);}}for(let g8 of this['infoList'])this['extensionDirs']['some'](g9=>g8['dir']?.['includes'](g9))||!g8['dir']||(q['debug']('Loading\x20dev\x20extension\x20from\x20'+g8['dir']),await this['loadExtension'](g8['dir']));}async #e(g4,g5){const g6=await P['readFile'](g4,'utf8'),{Azot:g7,fetch:g8,console:g9,localStorage:ga,cookieStore:gb,window:gc,document:ge,navigator:gf}=g5,gg={'exports':{}};eval('(()\x20=>\x20{'+g6+'})();');const gh=gg['exports'];return{'exports':gh,'context':g5};}async['prepareContext'](g4,g5){let g6=E({'name':g4,'dir':G,'title':g5});return await g6['cookieStore']['import'](L['join'](G,g4,'cookies.txt')),g6;}async['loadScript'](g4,g5){const ia=gP;let g6=g5['name'],g7=b3(g5),g8=await this[ia(0x15a)](g6,g7),g9=await y(g4,{'dirname':g5['dir'],'context':g8});if(g9)return g9['exports']='default'in g9['exports']?g9[ia(0x170)]['default']:g9['exports'],g9;}async['loadCoreExtensions'](){const ib=gP;let g4=Object['keys'](ce['default']);q['debug']('Loading\x20'+g4['length']+ib(0x19d)+g4['join'](',\x20'));for(let g5 of Object['values'](ce[ib(0x1bf)])){let g6=g5['pkg']['name'],g7=b1({'manifest':g5['manifest'],'packageJson':g5['pkg'],'fallbackName':g6}),g8=g7['displayName'];try{let g9=await this[ib(0x15a)](g6,g8),ga={'exports':g5['create'](g9),'package':g5['pkg'],'manifest':g7,'context':g9};this['validate'](ga),this['extensions']['set'](g6,ga),this['emit']('loaded',g6);}catch(gb){q['debug'](gb instanceof Error?gb['message']:String(gb)),this['emit']('error',gb,g6);}}}async['loadExtension'](g4){const ic=gP;try{q['debug']('Loading\x20extension\x20from\x20'+g4);let g5=await bB(g4)['catch'](g8=>q['error'](g8));if(!g5)return;g5['package']['dir']=g5['dir'];let g6=await this['loadScript'](g5['path'],g5);if(!g6)return;let g7={'package':g5['package'],'manifest':g5['manifest'],'exports':g6['exports'],'context':g6['context']};this['validate'](g7),this['extensions']['set'](g5['package'][ic(0x144)],g7),this['emit']('loaded',g5['package']['name']);}catch(g8){this['emit']('error',g8,g4);}}['validate'](g4){const id=gP;if(typeof g4!='object'||!g4||!bp(g4['exports']))throw Error('Invalid\x20extension\x20interface:\x20'+g4[id(0x241)]['name']);}['getExtension'](g4){const ie=gP;return this['extensions'][ie(0x126)](g4)??Array['from'](this['extensions']['values']())['find'](g5=>g5['package']['name']===g4)??null;}async['getExtensionForUrl'](g4){const ig=gP;let g5;try{g5=new URL(g4);}catch(g6){return q['debug']('Invalid\x20extension\x20URL:\x20'+g4),q['debug'](g6 instanceof Error?g6['message']:String(g6)),null;}for(let g7 of this['extensions']['values']()){let g8=null,g9=g7['exports']['canHandle'],ga=g5['hostname']['includes'](g7['package']['name']);if(g8=b6(g7)?b5(g7,g5):typeof g9==ig(0x1f9)?await g9(g4):typeof g9=='string'?new URLPattern(g9)['test'](g4):ga,g8)return g7;}return null;}async['install'](g4){const ih=gP;let g5=await gH['getAvailableExtensions'](),g6=[];for(let g7 of g4){let g8=await stat(g7)['then'](gb=>gb[ih(0x115)]())['catch'](()=>!0x1)?g7:await aT(g7,g5);if(!g8)throw aK(aH['SOURCE_NOT_FOUND'],'Extension\x20source\x20not\x20found:\x20'+g7,{'source':g7});let g9=await bC(g8,g7);if(!g9)throw aK(aH['IMPORT_INVALID'],'Extension\x20import\x20failed:\x20'+g7,{'source':g7,'dir':g8});g6['push'](g9);let ga=this['infoList']['find'](({name:gb})=>gb===g9['name']);if(ga){let gb=ga['source'];gb!==g9[ih(0x198)]&&await aB(gb);let gc=ga['dir']?this.#t(ga['dir']):null,ge=g9['dir']?this.#t(g9['dir']):null;gc&&gc!==ge&&await aB(gc),ga[ih(0x215)]=new Date()['toISOString'](),Object[ih(0x225)](ga,cf(g9)),q['info']('Extension\x20'+g9['name']+'\x20updated');}else this['infoList']['push'](cf(g9)),q['info'](ih(0x1e0)+g9['name']+'\x20added');}if(await this['saveInfo'](),g6['length']){for(let gf of g6)this['extensions']['set'](gf['name'],gf);}}#t(g4){let g5=L['parse'](g4);return g5['dir']===I?g4:g5['dir'];}async[gP(0x26a)](g4){const ii=gP;for(let g5 of g4){let g6=this['infoList']['find'](g9=>g9['name']===g5);if(!g6){q['error']('Extension\x20'+g5+'\x20not\x20found');return;}let g7=g6['dir']??'',g8=g7?.['includes'](I);await az(g7)?(g8&&await aB(this.#t(g7)),this['infoList']=this['infoList']['filter'](g9=>g9['name']!==g5),q['info']('Extension\x20'+g5+'\x20removed'),this['extensions']['delete'](g5)):q['warn']('Extension\x20'+g5+ii(0x204)+g7);}await this['saveInfo']();}async['importCookies'](g4,g5){const ij=gP;let g6=this['getExtension'](g4);if(!g6)throw Error(ij(0x1e0)+g4+'\x20not\x20found');return await g6['context']['cookieStore']['import'](g5,{'removeSource':!0x1});}async['login'](g4,g5={}){let g6=this['getExtension'](g4);g6&&await bu(g6,g5);}async['logout'](g4){const ik=gP;for(let g5 of g4){let g6=this['getExtension'](g5);if(!g6)return;q['info']('Logging\x20out...'),await bv(g6),q['debug']('Clearing\x20localStorage...'),g6['context']['localStorage']['clear'](),q['debug']('Clearing\x20cookies\x20store...');let g7=await g6['context']['cookieStore'][ik(0x258)]();for(let g8 of g7)await g6['context']['cookieStore']['delete'](g8);q['info']('Logged\x20out\x20from\x20extension\x20'+g5);}}['list'](){return Array['from'](this['extensions']['values']())['map'](g4=>({'name':g4['package']['name'],'version':g4['package']['version'],'description':g4['package']['description'],'manifest':g4['manifest'],'package':g4['package']}));}};const ch=(g4,g5)=>new Input({'source':new UrlSource(g4['url'],{'requestInit':{'headers':g4['headers']},'fetchFn':g5}),'formats':ALL_FORMATS}),ci=g4=>{const il=gP;let g5;try{g5=new URL(g4);}catch{throw Error('Invalid\x20direct\x20media\x20URL:\x20'+g4);}let g6=g5['pathname']['replace'](/\/+$/,'')['split']('/')['filter'](Boolean)['pop']();return{'type':il(0x21d),'title':g6?.['split']('.')['slice'](0x0,-0x1)['join']('.')||g6||g5['hostname']||'download','source':{'url':g4}};},cj=async(g4,g5)=>{const im=gP;let g6=g5['proxy']||g5['proxyMeta'];g6&&(await g4['context']['http']['configure']({'proxyUrl':g6}),await C[im(0x1fb)]({'proxyUrl':g6}));},ck=async(g4,g5,g6)=>{const io=gP;if(!g6)return q['warn']('No\x20suitable\x20extension\x20available.\x20Downloading\x20as\x20a\x20direct\x20link...'),[ci(g4)];await cj(g6,g5),await bs(g6),q['info']('Analyzing\x20URL...');let g7=await br(g6)[io(0x19e)]({'url':g4,'options':g5});return g7['length']?[...g7]:(q['info']('No\x20media\x20entries\x20found'),[]);},cl=async({entry:g4,url:g5,options:g6,extension:g7,signal:g8})=>{const ip=gP;if(!g7){let ga=g4['source']??{'url':g5},gb=g6['proxy']||g6['proxyMeta'];return gb&&await C['configure']({'proxyUrl':gb}),{'entry':{...g4,'source':ga},'input':ch(ga,gb?C['fetch']['bind'](C):void 0x0)};}await cj(g7,g6),await bs(g7);let g9=br(g7);if(typeof g9['resolveEntry']=='function')return await g9['resolveEntry']({'url':g5,'options':g6,'entry':g4,'signal':g8});if(!g4[ip(0x198)]?.['url'])throw Error('Extension\x20'+g7['package']['name']+'\x20must\x20provide\x20entry.source\x20or\x20implement\x20resolveEntry()');return{'entry':g4,'input':ch(g4['source'],g7[ip(0x110)]['http']['fetch']['bind'](g7['context']['http']))};};var cm=class{['tempDir'];#e=new Map();constructor(g4=r){this['tempDir']=g4;}['track'](g4,g5){if(!g5)return;let g6=this.#e['get'](g4);g6||(g6=new Set(),this.#e['set'](g4,g6)),g6['add'](g5);}['forget'](g4){this.#e['delete'](g4);}['collect'](g4,g5){let g6=new Set();for(let g8 of this.#e['get'](g4)??[])g6['add'](g8);g5?.['output']['filePath']&&g6['add'](g5['output']['filePath']);let g7=new Set();for(let g9 of g6)g7['add'](g9),g7['add'](g9+'.part.json'),g7['add'](this.#t(g9));return g7;}async['purge'](g4){const iq=gP;g4['size']!==0x0&&await Promise[iq(0x1a2)]([...g4]['map'](g5=>rm(g5,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0)));}#t(g4){const ir=gP;let g5=resolve(g4),g6=parse(g4)['name'],g7=createHash('sha1')['update'](g5)['digest']('hex')['slice'](0x0,0xa);return join(this[ir(0x11c)],g6+'-'+g7);}};const cn=g4=>{const is=gP;switch(g4){case'analyzing':case'pending':return{'state':'queued','phase':'analyzing'};case'queued':return{'state':'queued','phase':null};case'downloading':return{'state':'running','phase':'transferring'};case'processing':return{'state':is(0x15b),'phase':'processing'};case'paused':return{'state':'paused','phase':null};case is(0x270):return{'state':'completed','phase':null};case'error':return{'state':'failed','phase':null};}},co=g4=>{const it=gP;let {state:g5,phase:g6}=cn(g4['status']);return{'id':g4['id'],'request':{'entry':g4['entry'],'url':g4[it(0x1a8)],'options':g4['options']},'state':g5,'phase':g6,'progress':{'percent':g4['progress'],'downloadedBytes':g4['downloadedBytes'],'totalBytes':g4['totalBytes']},'output':{'title':g4['title'],'filePath':g4['filePath'],'quality':g4['quality'],'codec':g4['codec']},'failure':g4['error']?{'message':g4['error']}:void 0x0,'createdAt':g4['createdAt']};},cp=({id:g4,request:g5,createdAt:g6})=>({'id':g4,'request':g5,'state':'queued','phase':null,'progress':{'percent':0x0,'downloadedBytes':0x0},'output':{},'createdAt':g6}),cq=g4=>g4['state']===gP(0x22f)||g4['state']==='running',cr=[gP(0x1da),'errno','syscall','address','port','host','hostname','path','type'],cs=g4=>typeof g4=='object'&&!!g4&&'status'in g4&&'statusText'in g4&&'url'in g4,ct=g4=>{let g5=[],g6=g4;for(let g7 of cr){let g8=g6[g7];g8==null||g8===''||g5['push'](g7+'='+String(g8));}return g5;},cu=(g4,g5=0x0)=>{const iu=gP;if(g5>0x3)return'[max-depth]';if(g4 instanceof Error){let g6=ct(g4),g7='cause'in g4?g4['cause']:void 0x0,g8=[g4['name']+':\x20'+g4['message']];return g6['length']&&g8['push']('details='+g6['join'](',\x20')),g7!==void 0x0&&g7!==g4&&g8['push']('cause='+cu(g7,g5+0x1)),g8['join']('\x20|\x20');}return cs(g4)?'Response\x20'+g4['status']+'\x20'+g4['statusText']+iu(0x1ff)+g4['url']:inspect(g4,{'depth':0x2,'breakLength':0x1/0x0});},cv=(g4,g5)=>{q['debug'](g4+':\x20'+cu(g5)),g5 instanceof Error&&g5['stack']&&q['debug'](g5['stack']);},cw=g4=>{let g5=0x0,g6=0x0,g7=!0x1;for(let g9 of g4){if(g5+=g9['current']['b'],g9['total']['b']===void 0x0){g7=!0x0;continue;}g6+=g9['total']['b'];}let g8=g7?void 0x0:g6;return{'totalDownloaded':g5,'totalSize':g8,'percent':g8&&g8>0x0?g5/g8*0x64:0x0};},cx=g4=>{const iv=gP;let g5=g4['replace'](/[<>:"/\\|?*\x00-\x1F]/g,'');g5=g5['replace'](/^[\s.]+|[\s.]+$/g,''),g5=g5['replace'](/\s+/g,'\x20');let g6=g5['lastIndexOf']('.'),g7=g6>0x0,g8=g7?g5['slice'](g6):'',g9=g7?g5['slice'](0x0,g6):g5;if(g8['length']>=0xff)g5=g5['slice'](0x0,0xff);else{let gb=0xff-g8['length'];g9['length']>gb&&(g9=g9['slice'](0x0,gb)),g5=g9+g8;}let ga=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;if(g8['length']<0xff){let gc=g5['lastIndexOf']('.'),ge=gc>0x0;if(g8=ge?g5['slice'](gc):'',g9=ge?g5['slice'](0x0,gc):g5,ga['test'](g9)){let gf=0xff-g8['length'];g5=('_'+g9)[iv(0x22d)](0x0,gf)+g8;}}return g5['length']===0x0?'untitled':g5;},cy=(g4,g5)=>Object[gP(0x163)](g5)['reduce']((g6,g7)=>{const iw=gP;let g8='{'+g7+'}',g9=g5[g7];if(!g9){let ga=RegExp('(?:\x5c.|^)\x5c{'+g7+iw(0x255)+g7+'\x5c}(\x5c.|$)|\x5c{'+g7+'\x5c}','g');return g6['replace'](ga,(gb,gc)=>'')['replaceAll']('....','...');}return g6['replaceAll'](g8,g9);},g4)['replaceAll']('\x20\x20','\x20'),cz=g4=>typeof g4=='string'&&g4['trim']()||'mp4',cA=async g4=>{const ix=gP;if(!g4)return'';let g5=(await g4['getCodec']())?.['toLowerCase']();if(!g5)return'';switch(g5['split']('.')[0x0]??g5){case ix(0x1c9):case'eac3':return'DDP';case'ac-3':case'ac3':return'DD';case'aac':case'mp4a':return'AAC';case ix(0x129):return'OPUS';case ix(0x257):return'VORBIS';case'flac':return'FLAC';default:return g5['toUpperCase']();}},cB=g4=>{let g5=g4['seasonNumber']?''+g4['seasonNumber']:'',g6=g4['episodeNumber']?''+g4['episodeNumber']:'',g7=g5?'S'+g5:'',g8=g6?'E'+g6:'',g9=g5&&g6?g7+':'+g8:'',ga=g4['episodeTitle']?.['trim']()?'\x22'+g4['episodeTitle']+'\x22':'';return((g4['title']??'')+'\x20'+g9+'\x20'+ga)['trim']();},cC=async({settings:g4,options:g5,entry:g6,tag:g7,tracks:g8})=>{const iy=gP;let [g9,ga]=await Promise['all']([g8['videos'][0x0]?.['getCodec']()??Promise['resolve'](''),cA(g8['audios'][0x0])]),gb=g4['get']('downloadDir'),gc=g5['movieTemplate']||g4['get'](iy(0x11b)),ge=g5['episodeTemplate']||g4['get']('seriesFilenameTemplate'),gf=cx(cy(g6['episodeNumber']?ge:gc,{'title':g6['title']??'','s':g6['seasonNumber']?g6['seasonNumber']['toString']()['padStart'](0x2,'0'):'','e':g6['episodeNumber']?g6['episodeNumber']['toString']()['padStart'](0x2,'0'):'','quality':g5['videoQuality']??'','codec':g9??'','tag':g7??'','episodeTitle':g6['episodeTitle']??'','audioType':ga,'format':'WEB-DL'}))+'.'+cz(g5['format']||g4['get']('videoContainerFormat')),gg=g5['outputPath']||join(gb,gf),gh=parse(gg);return{'outputPath':gg,'outputDirectory':gh['dir']||gb,'fileName':gh['base'],'baseName':gh['name']};};var cD=class extends Error{['code'];constructor(g4,g5=g4,g6){super(g5,g6),this['name']='DownloaderError',this['code']=g4;}};const cE=g4=>{if(!g4)return;let g5=Object['fromEntries'](new Headers(g4)['entries']());return Object['keys'](g5)['length']?g5:void 0x0;},cF=g4=>{const iz=gP;let g5=g4['source'],g6=g5['rootPath'];if(typeof g6!='string'||!g6)throw Error('Resolved\x20media\x20resource\x20is\x20missing\x20a\x20usable\x20input\x20source\x20URL');return{'url':g6,'headers':cE(g5[iz(0x186)]?.['requestInit']?.['headers'])};},cG=g4=>g4?.[gP(0x124)]()['toLowerCase']()??'',cH=g4=>cG(g4)['slice'](0x0,0x2),cI=g4=>cG(g4)||'und',cJ=(g4,g5)=>{let g6=cG(g4),g7=cG(g5);return!g6||!g7?!0x1:g6===g7||g6['startsWith'](g7+'-')?!0x0:cH(g6)===cH(g7);},cK=g4=>Array['from'](new Map(g4[gP(0x13b)](g5=>cG(g5))['filter'](Boolean)['map'](g5=>[cH(g5),g5]))['values']()),cL=({videos:g4,audios:g5,subtitles:g6})=>({'videos':g4,'audios':g5,'subtitles':g6,'all':[...g4,...g5,...g6]}),cM=g4=>(g4??0x0)/0x3e8,cN=async g4=>{try{return(await g4['getSegments']())['length']+'\x20Segments';}catch{return'?\x20Segments';}},cO=async(g4,g5)=>{const iA=gP;let g6=new Map();for(let g7 of g4){let g8=cI(await g7['getLanguageCode']()),g9=g6['get'](g8);if(!g9){g6['set'](g8,[g7]);continue;}g9[iA(0x1fc)]<g5&&g9['push'](g7);}return Array['from'](g6['values']())['flat']();},cP=async(g4,g5,g6=0x1)=>{const iB=gP;let g7=(await Promise['all'](g4['map'](async gb=>({'audio':gb,'bitrate':await gb['getBitrate']()}))))[iB(0x161)]((gb,gc)=>(gc['bitrate']??0x0)-(gb['bitrate']??0x0))['map'](({audio:gb})=>gb),g8=cK(g5),g9=[];for(let gb of g8){let gc=[];for(let ge of g7)cJ(await ge['getLanguageCode'](),gb)&&gc['push'](ge);gc['length']&&g9['push'](...await cO(gc,g6));}let ga=cK(await Promise['all'](g7['map'](async gf=>await gf['getLanguageCode']()||'und')));if(!g9['length'])for(let gf of ga){let gg=[];for(let gh of g7)cJ(await gh[iB(0x1dd)]()??'und',gf)&&gg['push'](gh);gg['length']&&g9[iB(0x146)](...await cO(gg,g6));}return g9;},cQ=async(g4,g5)=>{let g6=g5?parseInt(String(g5),0xa)*0x10/0x9:void 0x0;return await g4['getVideoTracks']({'filter':async g7=>!await g7['hasOnlyKeyPackets'](),'sortBy':async g7=>[prefer(!!g5&&Number(await g7['getDisplayHeight']())===Number(g5)),prefer(!!g6&&Number(await g7['getDisplayWidth']())===Number(g6)),desc(await g7['getBitrate']())]});},cR=async(g4,g5)=>{if(!g5?.['length'])return g4;let g6=[];for(let g7 of g4)g5['includes'](await g7['getCodec']()??'')&&g6['push'](g7);return g6['length']?g6:g4;},cS=async(g4,g5)=>{const iC=gP;if(!g5)return g4;let g6=[];for(let g7 of g4)await g7['getNumberOfChannels']()===Number(g5)&&g6[iC(0x146)](g7);return g6;},cT=async({input:g4,video:g5,requirePairable:g6})=>await g4['getAudioTracks']({'filter':async g7=>!g6||!g5||g7['canBePairedWith'](g5),'sortBy':async g7=>[prefer(!g5||g7['canBePairedWith'](g5)),desc(await g7['getBitrate']())]}),cU=async g4=>await g4['getSubtitleTracks']({'sortBy':async g5=>[desc(await g5['getBitrate']())]}),cV=async(g4,g5)=>{let g6=g5['videoQuality'],g7=await cQ(g4,g6||NaN);g7=await cR(g7,g5['videoCodecs']);let g8=await cT({'input':g4,'requirePairable':!0x1}),g9=await cU(g4);return{'videos':g7,'audios':g8,'subtitles':g9};},cW=async({input:g4,options:g5,inventory:g6})=>{const iD=gP;let {videos:g7,audios:g8,subtitles:g9}=g6,ga=g7[0x0],gb=[...g5['languages']||[]],gc=await cT({'input':g4,'video':ga,'requirePairable':!0x0});gc['length']||(gc=g8),gc=await cS(gc,g5['audioChannels']),gc=await cR(gc,g5['audioCodecs']);let ge=await cP(gc,gb,0x1);ge['length']&&(gc=ge);let gf=gb['at'](-0x1);gf&&await Promise['all'](gc['map'](async gh=>{let gi=await gh['getLanguageCode']();(!gi||gi==='und')&&gh['setLanguageCode'](gf);}));let gg=[];for(let gh of g9){if(!g5['subtitleLanguages']?.['length'])continue;let gi=await gh['getLanguageCode']()||'und';g5[iD(0x1be)]['some'](gj=>cJ(gi,gj))&&gg['push'](gh);}return cL({'videos':g5[iD(0x1d5)]||!ga?[]:[ga],'audios':g5['skipAudio']?[]:gc,'subtitles':g5['skipSubtitles']?[]:gg});},cX={'selectTracks':async({input:g4,options:g5,inventory:g6})=>await cW({'input':g4,'options':g5,'inventory':g6})},cY=async({input:g4,options:g5,strategy:g6})=>{let g7=await cV(g4,g5);return await g6['selectTracks']({'input':g4,'options':g5,'inventory':g7});},cZ=g4=>{if(!g4)return null;try{return new URL(g4);}catch{return null;}},d0=(g4,g5)=>{if(!g5['languages']?.['length'])return(g4['context']?.['legacy']?.['source'])?.['audioLanguage']?.['trim']()||void 0x0;},d1=(g4,g5)=>{const iE=gP;if(g4)switch(g4){case'aar':case'abk':return'rus';case iE(0x14b):return'eng';case'zu':return g5?.['includes']('start.film')?'ru':'zu';default:return g4;}},d2=async(g4,g5)=>{let g6=await g4['getLanguageCode']()['catch'](()=>void 0x0),g7=d1(g6,g5);g7&&g7!==g6&&g4['setLanguageCode'](g7);},d3=async(g4,g5)=>{await Promise['all'](g4['map'](g6=>d2(g6,g5)));},d4=(g4,g5)=>g4['filter'](g6=>g6['type']===g5)['length'],d5=g4=>{const iF=gP;let g5='Extracted,\x20there\x20are\x20';if(g4['length']===0x0)g5+=iF(0x151);else{g5+=g4['length']+'\x20tracks';let g6=d4(g4,'video');g6&&(g5+=',\x20'+g6+'\x20video\x20tracks');let g7=d4(g4,'audio');g7&&(g5+=',\x20'+g7+'\x20audio\x20tracks');let g8=d4(g4,iF(0x127));g8&&(g5+=',\x20'+g8+'\x20subtitle\x20tracks');}q['info'](g5);},d6=async(g4,g5)=>{let g6=await g4['getSubtitleTracks']();return await d3(g6,g5),g6;},d7=(g4,g5)=>{q['debug']('URL:\x20'+cF(g4['input'])['url']);let g6=g5['seasonNumber'],g7=g5['episodeNumber'],g8=g5['episodeTitle']??'',g9=[g5['title'],g6?'S'+g6:'',g7?'E'+g7:'',g8]['filter'](Boolean)['join']('\x20∙\x20');g9&&q['info'](g9);},d8=(g4,g5)=>{if(g4['title'])return;let g6=cZ(g5)?.['pathname']['split']('/')['pop']();g6&&(g4['title']=g6);},d9=(g4,g5)=>{if(g4['title'])return;let g6=cZ(g5)?.['host'];g6&&(g4['title']=g6+'_'+m());},da=(g4,g5)=>{g4['videoQuality']||=g5?g5+'p':void 0x0;};var db=class{#e;#t;constructor({settings:g4,trackSelectionStrategy:g5=cX}={}){this.#e=g4,this.#t=g5;}async['prepareSource']({options:g4,resource:g5,entry:g6}){const iG=gP;let g7=await g5['input']['getFormat']();return q['info']('Content\x20Matched:\x20'+g7[iG(0x144)]),g7===HLS||g7===DASH?await this.#r({'options':g4,'resource':g5,'entry':g6}):await this.#n({'options':g4,'resource':g5,'entry':g6});}async['prepareDownloadPlan']({options:g4,resource:g5,extensionTag:g6}){if(!this.#e)throw Error('DownloadPlanner\x20settings\x20are\x20required\x20to\x20prepare\x20a\x20download\x20plan');let g7={...g5['entry'],'id':g5['entry']['id']??crypto['randomUUID']()};d7(g5,g7),q['info']('Parsing\x20streams...');let g8=await this['prepareSource']({'options':{...g4},'resource':g5,'entry':g7}),g9=await cC({'settings':this.#e,'options':g8['options'],'entry':g8['entry'],'tag':g6,'tracks':g8['tracks']});return await aD(g9['outputDirectory']),{...g8,'output':g9,'downloadTitle':cB(g8['entry'])||g9['baseName']};}async #n({options:g4,resource:g5,entry:g6}){const iH=gP;let g7=g5['input'],g8=cF(g7)['url'],g9={...g4},ga={...g6};d8(ga,g8);let [gb,gc,ge]=await Promise['all']([g7['getPrimaryVideoTrack'](),g7['getPrimaryAudioTrack'](),d6(g7,g8)]);da(g9,await gb?.['getCodedHeight']());let gf=gb&&!g9['skipVideo']?[gb]:[],gg=[];!gb&&gc&&!g9[iH(0x233)]&&(await d2(gc,g8),gg=[gc]);let gh={'videos':gf,'audios':gg,'subtitles':ge,'all':[...ge,...gf,...gg]};return d5(gh['all']),{'options':g9,'resource':g5,'entry':ga,'tracks':gh,'isSegmented':!0x1};}async #r({options:g4,resource:g5,entry:g6}){const iI=gP;let g7=g5['input'],g8=cF(g7)['url'],g9={...g4},ga={...g6};await d3(await g7[iI(0x1ba)](),g8),d9(ga,g8);let gb={...g9},gc=d0(ga,gb);gc&&(gb['languages']=[gc]);let ge=await cY({'input':g7,'options':gb,'strategy':this.#t});if(d5(ge['all']),!ge['videos']['length']&&!ge['audios']['length']&&!ge['subtitles']['length'])throw new cD('No\x20tracks\x20selected');return ge['videos'][0x0]&&da(g9,await ge['videos'][0x0]['getDisplayHeight']()),{'options':g9,'resource':g5,'entry':ga,'tracks':ge,'isSegmented':!0x0};}};const dc=0x1,dd=0x4,de=0x8,df=0x10,dg=(g4,g5)=>Math['max'](dc,Math['trunc'](typeof g4=='number'&&Number['isFinite'](g4)?g4:g5)),dh=g4=>g4['includes']('highConnectionsCount')?df:g4['includes']('mediumConnectionsCount')?de:dd,di=({requestedConnections:g4,fallbackConnections:g5=dc,grantedBenefits:g6})=>{let g7=dg(g4,dg(g5,dc)),g8=dh(g6),g9=Math['min'](g7,g8);return{'connections':g9,'normalizedRequestedConnections':g7,'maxAllowedConnections':g8,'wasClamped':g9<g7};},dj=async g4=>{const iJ=gP;let {grantedBenefits:g5}=await cc(),g6=null,g7=g5['includes']('parallelDownloads'),g8=g4['maxActiveDownloads']&&g4['maxActiveDownloads']>0x1;if(!g7&&g8&&(g6=Error('PARALLEL_DOWNLOADS_NOT_ALLOWED'),g4['maxActiveDownloads']=0x1),g4['proxy']||g4[iJ(0x1ae)]||g4['proxyMedia']){let g9=g5['includes'](iJ(0x264)),ga=g4[iJ(0x264)]||g4['proxyMeta']||g4['proxyMedia'];!g9&&ga&&(g6=Error('PROXY_NOT_ALLOWED'),delete g4['proxy'],delete g4['proxyMeta'],delete g4['proxyMedia']);}if(g4['videoContainerFormat']&&g4['videoContainerFormat']!=='mp4'&&(g5['includes'](iJ(0x1f5))||(g6=Error('CUSTOM_MUX_FORMAT_NOT_ALLOWED'),g4['videoContainerFormat']='mp4')),typeof g4['connections']=='number'){let {connections:gb}=di({'requestedConnections':g4['connections'],'grantedBenefits':g5});g4['connections']=gb;}return{'error':g6,'data':g4};},dk=g4=>({'retry':g4['get']('retry'),'connections':g4['get']('connections'),'proxy':g4[gP(0x126)]('proxy'),'proxyMeta':g4['get'](gP(0x1ae)),'proxyMedia':g4['get']('proxyMedia'),'movieTemplate':g4['get']('movieFilenameTemplate'),'episodeTemplate':g4['get']('seriesFilenameTemplate'),'hardsub':g4['get'](gP(0x192)),'format':g4[gP(0x126)]('videoContainerFormat')}),dl=({options:g4,fallbackConnections:g5,grantedBenefits:g6})=>{const iK=gP;let g7=di({'requestedConnections':g4['connections'],'fallbackConnections':g5,'grantedBenefits':g6});return{'options':{...g4,'connections':g7[iK(0x194)]},'limit':g7};},dm=({settings:g4,requestedOptions:g5,filePath:g6,grantedBenefits:g7})=>{let g8=dk(g4),{options:g9,limit:ga}=dl({'options':{...g8,...g5},'fallbackConnections':g8['connections'],'grantedBenefits':g7});return g6&&(g9['outputPath']=g6),{'baseOptions':g8,'options':g9,'limit':ga};},dn=async({extensionManager:g4,entry:g5,url:g6,options:g7,signal:g8})=>{let g9=g6?await g4['getExtensionForUrl'](g6):null,ga=await cl({'entry':g5,'url':g6??g5['source']?.['url']??'','options':g7,'extension':g9,'signal':g8});return{'resource':ga,'extension':g9,'extensionTag':g9?b4(g9):void 0x0,'beforeDownload':async()=>{!g9||!g6||await bx(g9,{'url':g6,'options':g7,'resource':ga,'signal':g8});},'afterDownload':async gb=>{!g9||!g6||await by(g9,{'url':g6,'options':g7,'resource':ga,'signal':g8,'skipMux':gb});},'dispose':async()=>{if(ga['dispose']){await ga['dispose']();return;}await ga['input']['dispose']?.();}};},dp=g4=>'manifest:'+g4['type']+':'+g4['id'],dq=g4=>{const iL=gP;let g5=new Map();for(let g6 of g4){let g7=dp(g6),g8=g5['get'](g7);if(g8){g8['push'](g6);continue;}g5['set'](g7,[g6]);}return Array['from'](g5['entries']())[iL(0x14e)](([,g9])=>g9['length']>0x1);},dr=g4=>{let g5=dq(g4);if(!g5['length'])return;let g6=g5['map'](([g7,g8])=>g7+'\x20('+g8['length']+'\x20copies)')['join'](',\x20');throw Object['assign'](Error('Duplicate\x20tracks\x20selected:\x20'+g6),{'code':'DUPLICATE_TRACKS_SELECTED'});},ds=g4=>{try{let g5=new URL(g4),g6=[...new Set(g5['searchParams']['keys']())],g7=g6['length']?'?'+g6['join'](','):'';return''+g5['origin']+g5['pathname']+g7;}catch{return g4;}},dt=g4=>g4?typeof g4=='string'?g4:g4 instanceof Uint8Array||g4 instanceof ArrayBuffer?Buffer['from'](g4)['toString']('base64'):null:null,du=async g4=>{const iM=gP;let g5=(await g4[iM(0x254)]()['catch'](()=>[]))[0x0];return g5?.['initSegment']?.['encryption']??g5?.['encryption'];},dv=async g4=>{const iN=gP;let g5=await du(g4);return[{'system':'widevine','pssh':dt(g5?.['drm']?.['widevine']?.['pssh'])},{'system':'playready','pssh':dt(g5?.['drm']?.['playready']?.['pssh'])},{'system':'fairplay','pssh':dt(g5?.['drm']?.[iN(0x1a5)]?.['pssh'])}]['filter'](g6=>g6['pssh']);},dw=async g4=>{let g5=await du(g4),g6=await dv(g4),g7=g5?.['drm']?.['widevine']&&'widevine'||g5?.['drm']?.['playready']&&'playready'||g5?.['drm']?.['fairplay']&&'fairplay'||null;if(!g7)return null;let g8=g6['find'](g9=>g9['system']===g7);return{'system':g7,'cacheKey':g8?.['pssh']?g7+':'+g8['pssh']:'track:'+dp(g4)};},dx=async g4=>{let g5=new Map();for(let g6 of g4){let g7=await dv(g6);for(let g8 of g7)!g8['pssh']||g5['has'](g8['pssh'])||g5['set'](g8['pssh'],{'pssh':g8['pssh'],'system':g8['system'],'track':g6});}return g5;},dy=({jobId:g4,title:g5,entryTitle:g6,psshList:g7,options:g8,error:g9})=>{const iO=gP;q['error']('Failed\x20to\x20extract\x20decryption\x20keys\x20for\x20job\x20'+g4),q['debug']('DRM\x20extraction\x20context:\x20title='+(g5||g6||'(unknown)')+',\x20psshCount='+g7['length']+',\x20providedKeyCount='+(g8['keys']?.['length']??0x0)),g9 instanceof Error?(cv('DRM\x20extraction\x20failure',g9),g9['message']==='Unauthorized'&&w['emit']('error',{'code':iO(0x193)}),g9['message']==='Forbidden'&&w['emit']('error',{'code':iO(0x136)})):q['debug'](String(g9));},dz=async({psshList:g4,requestLicense:g5})=>{const iP=gP;q['debug']('Extracting\x20decryption\x20keys');let g6=[],g7=[...new Set(g4??[])];for(let g8 of g7){q['debug']('Resolving\x20DRM\x20keys\x20for\x20PSSH\x20'+g8),q['debug']('PSSH:\x20'+g8);let g9=Buffer['from'](g8,'base64'),ga=iP(0x177),gb=bH(bG(),'drm'),gc=new RemoteCdm({'keySystem':'com.widevine.alpha','baseUrl':gb,'headers':{'Authorization':'Bearer\x20'+c1['accessToken']}}),ge=null;try{ge=(await requestMediaKeySystemAccess(gc['keySystem'],[])['createMediaKeys']({'cdm':gc}))['createSession'](),q[iP(0x113)]('Generating\x20license\x20request...');let gf=ge['waitForLicenseRequest']();await ge['generateRequest']('cenc',g9);let gg=await gf;q['debug']('License\x20request\x20of\x20'+gg['length']+'\x20bytes\x20generated\x20for\x20session\x20'+ge[iP(0x224)]),q[iP(0x113)]('Requesting\x20license...');let gh=await g5({'pssh':g8,'data':new Uint8Array(gg)});if(gh[0x0]===0x7b||gh[0x0]===0x3c){q[iP(0x113)]('License\x20response\x20is\x20not\x20binary');let gj=Buffer['from'](gh)['toString']('utf8');if(q['debug'](gj),gj[iP(0x199)]('<html>'))throw Error(iP(0x218));}q['debug']('Updating\x20session...'),await ge['update'](new Uint8Array(gh)),q['debug']('Waiting\x20for\x20key\x20statuses\x20change...');let gi=await ge['waitForKeyStatusesChange']();q['debug']('Keys\x20count:\x20'+gi['length']),await ge['close'](),await ge['remove']();for(let gk of gi){let gl='Key:\x20'+gk['keyId']+':'+gk['key'];q['debug'](gl),g6['push']({'kid':gk['keyId'],'key':gk['key']});}}catch(gm){throw q['error']('Failed\x20to\x20get\x20DRM\x20content\x20keys\x20for\x20license\x20via\x20remoteCdm='+ds(gb)),cv('DRM\x20content\x20key\x20error',gm),gm;}finally{if(ge){try{await ge['close']();}catch{}try{await ge['remove']();}catch{}}}}return g6['length']||(q['warn']('Can\x27t\x20get\x20decryption\x20keys'),q['debug']('PSSH:\x20'+g7['join'](',\x20'))),g6;},dA=async({jobId:g4,title:g5,entryTitle:g6,options:g7,psshList:g8,selectedTracks:g9,extension:ga,resource:gb})=>{let gc=g7['keys']??[];if(gc['length'])return gc;if(!ga)return[];let ge=br(ga);if(!ge['drm'])return[];if(typeof ge['drm']['resolveKeys']=='function'){let gh=new Map(),gi=new Map();for(let gj of g9){let gk=await dw(gj);if(!gk)continue;let gl=gi['get'](gk['cacheKey']);gl||(gl=await ge['drm']['resolveKeys']({'system':gk['system'],'resource':gb,'track':gj,'options':g7}),gi['set'](gk['cacheKey'],gl));for(let gm of gl)gh['has'](gm['kid'])||gh['set'](gm['kid'],gm);}return Array['from'](gh['values']());}if(typeof ge['drm']['requestLicense']!='function')return[];let gf=ge['drm']['requestLicense'],gg=await dx(g9);if(!gg['size'])return[];try{return await dz({'psshList':g8,'requestLicense':async({pssh:gn,data:go})=>{const iQ=b;let gp=gg[iQ(0x126)](gn);if(!gp)throw Error('No\x20DRM\x20track\x20binding\x20found\x20for\x20PSSH\x20'+gn);return await gf({'system':gp['system'],'resource':gb,'track':gp['track'],'options':g7,'data':go});}});}catch(gn){throw dy({'jobId':g4,'title':g5,'entryTitle':g6,'psshList':g8,'options':g7,'error':gn}),gn;}};var dB=class{['strategy'];constructor(g4){this['strategy']=g4;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](g4){let g5=await this['strategy']['decryptFile'](g4);return g4['cleanup']&&await rm(g4['input'],{'force':!0x0}),g5;}};const dC=g4=>g4['replaceAll']('-','')['toLowerCase']();var dD=class{async[gP(0x1e9)](g4){const iR=gP;let g5=new Map();for(let g6 of g4['keys']){if(!g6['kid'])throw Error('Shifro\x20requires\x20a\x20KID\x20for\x20every\x20decryption\x20key');g5['set'](dC(g6[iR(0x183)]),dC(g6['key']));}return q['debug']('Decrypting\x20via\x20shifro:\x20'+g4['input']),await(await Decryption['init']({'input':new U({'source':new FilePathSource(g4[iR(0x12d)]),'keys':g5}),'output':new Output({'target':new FilePathTarget(g4['output'])})}))['execute'](),g4['output'];}};const dE=async(g4,g5,g6)=>g6??open(g4,g5),dF=g4=>{let g5=null;return new StreamSource({'getSize':async()=>(g5=await dE(g4,'r',g5),(await g5['stat']())['size']),'read':async(g6,g7)=>{g5=await dE(g4,'r',g5);let g8=new Uint8Array(g7-g6);return await g5['read'](g8,0x0,g7-g6,g6),g8;},'dispose':async()=>{let g6=g5;g5=null,await g6?.['close']();},'prefetchProfile':'fileSystem'});},dG=g4=>{let g5=null;return new StreamTarget(new WritableStream({'start':async()=>{g5=await dE(g4,'w',g5);},'write':async g6=>{const iS=b;if(!g5)throw Error(iS(0x247)+g4);await g5['write'](g6['data'],0x0,g6['data']['byteLength'],g6['position']);},'close':async()=>{const iT=b;let g6=g5;g5=null,await g6?.[iT(0x1ec)]();},'abort':async()=>{let g6=g5;g5=null,await g6?.['close']();}}),{'chunked':!0x0});},dH=/(?:(.+?)\n)?((?:\d{2}:)?\d{2}:\d{2}\.\d{3})\s+-->\s+((?:\d{2}:)?\d{2}:\d{2}\.\d{3})([^\n]*)/g,dI=/^\uFEFF?WEBVTT(?:.|\n)*?\n{2}/,dJ=/(?:(\d{2}):)?(\d{2}):(\d{2})\.(\d{3})/,dK={'ar':gP(0x1b7),'de':'deu','en':'eng','es':'spa','fr':'fra','hi':'hin','it':'ita','ja':'jpn','ko':'kor','pl':'pol','pt':'por','ru':'rus','th':'tha','tr':gP(0x18d),'uk':'ukr','und':'und','vi':'vie','zh':'zho'},dL=g4=>g4==='subtitle'||g4==='text',dM=g4=>{let g5=g4['trim']()['split'](':');if(g5['length']<0x2||g5['length']>0x3)throw Error('Invalid\x20trim\x20timestamp:\x20'+g4);let g6=Number(g5['at'](-0x1)),g7=Number(g5['at'](-0x2)),g8=g5['length']===0x3?Number(g5[0x0]):0x0;if(![g8,g7,g6]['every'](g9=>Number['isFinite'](g9)&&g9>=0x0))throw Error('Invalid\x20trim\x20timestamp:\x20'+g4);return g8*0xe10+g7*0x3c+g6;},dN=g4=>{const iU=gP;let g5=dJ[iU(0x25c)](g4);if(!g5)throw Error('Invalid\x20WebVTT\x20timestamp:\x20'+g4);return 0xe10*0x3e8*Number(g5[0x1]||'0')+0x3c*0x3e8*Number(g5[0x2])+0x3e8*Number(g5[0x3])+Number(g5[0x4]);},dO=g4=>{let g5=Math['floor'](g4/(0xe10*0x3e8)),g6=Math['floor'](g4%(0xe10*0x3e8)/(0x3c*0x3e8)),g7=Math['floor'](g4%(0x3c*0x3e8)/0x3e8),g8=g4%0x3e8;return g5['toString']()['padStart'](0x2,'0')+':'+g6['toString']()['padStart'](0x2,'0')+':'+g7['toString']()['padStart'](0x2,'0')+'.'+g8['toString']()['padStart'](0x3,'0');},dP=g4=>{const iV=gP;let g5=[g4['invalidEntries']?.[iV(0x1fc)]?g4['invalidEntries']['length']+'\x20invalid\x20entries':void 0x0,g4['invalidTimecodes']?.['length']?g4['invalidTimecodes']['length']+'\x20invalid\x20timecodes':void 0x0,g4['invalidIndices']?.[iV(0x1fc)]?g4['invalidIndices']['length']+'\x20invalid\x20indices':void 0x0,g4['timecodeIssues']?.['reversedTimecodes']?.['length']?g4['timecodeIssues']['reversedTimecodes']['length']+'\x20reversed\x20timecodes':void 0x0,g4['timecodeIssues']?.['overlappingTimecodes']?.['length']?g4['timecodeIssues']['overlappingTimecodes']['length']+'\x20overlapping\x20timecodes':void 0x0]['filter'](Boolean);return g5['length']?'\x20('+g5['join'](',\x20')+')':'';},dQ=g4=>{const iW=gP;let g5=g4['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();if(dI['test'](g5))return g5;let {subtitle:g6,status:g7}=convert(g4,'.vtt');if(!g7['success'])throw Error(iW(0x1db)+dP(g7)+'.');return g6['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')['trim']();},dR=g4=>{const iX=gP;if(!g4)return;let g5=g4[iX(0x124)]()['toLowerCase']();if(!g5)return;let g6=g5[iX(0x246)]('-')[0x0]??g5;return/^[a-z]{3}$/['test'](g6)?g6:dK[g6];},dS=g4=>{switch(extname(g4)['toLowerCase']()){case'.mp4':return new Mp4OutputFormat();case'.mkv':return new MkvOutputFormat();default:throw Error('Unsupported\x20mux\x20output\x20format:\x20'+g4);}},dT=g4=>new W({'formats':V,'source':dF(g4)}),dU=g4=>{const iY=gP;let g5=g4['trimBegin']?dM(g4['trimBegin']):void 0x0,g6=g4[iY(0x142)]?dM(g4['trimEnd']):void 0x0;if(g5!==void 0x0&&g6!==void 0x0&&g6<=g5)throw Error('trimEnd\x20must\x20be\x20greater\x20than\x20trimBegin');return{'trimBegin':g5,'trimEnd':g6};},dV=async(g4,g5,g6,g7,g8)=>{const iZ=gP;let g9=dT(g5),ga=await g9['getPrimaryVideoTrack']();if(!ga)throw Error('Missing\x20video\x20track\x20in\x20'+g5);let gb=ga['codec'];if(!gb)throw Error('Unknown\x20video\x20codec\x20in\x20'+g5);if(g8!==void 0x0&&g8>=await ga[iZ(0x16e)]())throw Error('trimBegin\x20excludes\x20the\x20full\x20video\x20track\x20in\x20'+g5);let gc=new EncodedPacketSink(ga),ge=g8===void 0x0?await gc['getFirstKeyPacket']({'verifyKeyPackets':!0x0}):await gc['getKeyPacket'](g8,{'verifyKeyPackets':!0x0})??await gc['getFirstKeyPacket']({'verifyKeyPackets':!0x0});if(!ge)throw Error('No\x20video\x20packets\x20found\x20in\x20'+g5);let gf=new EncodedVideoPacketSource(gb);return g4['addVideoTrack'](gf,{'disposition':ga['disposition'],'name':g6??ga['name']??void 0x0,'rotation':g7['supportsVideoRotationMetadata']?ga['rotation']:void 0x0}),{'kind':'video','input':g9,'sink':gc,'source':gf,'startPacket':ge,'startTimestamp':ge['timestamp'],'emit':async gg=>{let gh={'decoderConfig':await ga['getDecoderConfig']()??void 0x0},gi=!0x0;for await(let gj of gc['packets'](ge,void 0x0,{'verifyKeyPackets':!0x0}))await gf['add'](gj['clone']({'timestamp':gj['timestamp']-gg}),gi?gh:void 0x0),gi=!0x1;gf['close']();}};},dW=async(g4,g5,g6,g7,g8)=>{const j0=gP;let g9=dT(g5),ga=await g9['getPrimaryAudioTrack']();if(!ga)throw Error('Missing\x20audio\x20track\x20in\x20'+g5);let gb=ga['codec'];if(!gb)throw Error('Unknown\x20audio\x20codec\x20in\x20'+g5);if(g8!==void 0x0&&g8>=await ga['computeDuration']())throw Error('trimBegin\x20excludes\x20the\x20full\x20audio\x20track\x20in\x20'+g5);let gc=new EncodedPacketSink(ga),ge=g8===void 0x0?await gc['getFirstPacket']():await gc['getPacket'](g8)??await gc[j0(0x1ee)]();if(!ge)throw Error('No\x20audio\x20packets\x20found\x20in\x20'+g5);let gf=new EncodedAudioPacketSource(gb);return g4['addAudioTrack'](gf,{'disposition':ga['disposition'],'languageCode':dR(g6)??dR(ga['languageCode']),'name':g7??ga['name']??void 0x0}),{'kind':'audio','input':g9,'sink':gc,'source':gf,'startPacket':ge,'startTimestamp':ge['timestamp'],'emit':async gg=>{let gh={'decoderConfig':await ga['getDecoderConfig']()??void 0x0},gi=!0x0;for await(let gj of gc['packets'](ge))await gf['add'](gj['clone']({'timestamp':gj['timestamp']-gg}),gi?gh:void 0x0),gi=!0x1;gf['close']();}};},dX=(g4,{trimBegin:g5,trimEnd:g6,commonStart:g7})=>{const j1=gP;let g8=g4['replaceAll']('\x0d\x0a','\x0a')['replaceAll']('\x0d','\x0a')[j1(0x124)]();if(!dI['test'](g8))throw Error(j1(0x238));let g9=g5===void 0x0?void 0x0:Math['round'](g5*0x3e8),ga=g6===void 0x0?void 0x0:Math['round'](g6*0x3e8),gb=Math['round'](g7*0x3e8);dH['lastIndex']=0x0;let gc=dH['exec'](g8),ge=g8[j1(0x22d)](0x0,gc?.['index']??g8['length'])['trimEnd'](),gf=[],gg=gc?g8['slice'](gc['index']):'';for(;;){dH['lastIndex']=0x0;let gh=dH[j1(0x25c)](gg);if(!gh)break;let gi=gh['index']+gh[0x0]['length'],gj=gg['indexOf']('\x0a',gi)+0x1,gk=gg['indexOf']('\x0a\x0a',gi);gk===-0x1&&(gk=gg['length']);let gl=gh[0x1]?.['trim'](),gm=gh[0x4]?.['trim'](),gn=gg['slice'](gj,gk)['trim'](),go=dN(gh[0x2]),gp=dN(gh[0x3]),gq=Math['max'](go,g9??go)-gb,gr=Math['min'](gp,ga??gp)-gb;if(gr>gq){let gs=dO(gq)+'\x20-->\x20'+dO(gr)+(gm?'\x20'+gm:'');gf['push']([gl,gs,gn]['filter'](Boolean)['join']('\x0a'));}gg=gg['slice'](gk)['trimStart']();}return[ge,...gf]['filter'](Boolean)['join']('\x0a\x0a');},dY=async(g4,g5,g6,g7,g8)=>{const j2=gP;if(g6['type']==='video')return dV(g4,g6[j2(0x154)],g6['label'],g5,g7);if(g6['type']==='audio')return dW(g4,g6['path'],g6['language'],g6['label'],g7);if(dL(g6[j2(0x1ab)])){let g9=dQ(await readFile(g6['path'],'utf8')),ga=new TextSubtitleSource('webvtt');return g4['addSubtitleTrack'](ga,{'disposition':g6['forced']?{'forced':!0x0}:void 0x0,'languageCode':dR(g6['language']),'name':g6['label']}),{'kind':'subtitle','source':ga,'emit':async gb=>{let gc=dX(g9,{'trimBegin':g7,'trimEnd':g8,'commonStart':gb});await ga['add'](gc),ga['close']();}};}throw Error('Unsupported\x20mux\x20input\x20type:\x20'+g6['type']);};var dZ=class{async['mux'](g4){const j3=gP;let {trimBegin:g5,trimEnd:g6}=dU(g4),g7=dS(g4['output']),g8=new X({'format':g7,'target':dG(g4['output'])}),g9=[];try{for(let gc of g4['inputs'])g9['push'](await dY(g8,g7,gc,g5,g6));let ga=g9['filter'](ge=>ge['kind']!=='subtitle');if(!g9['length'])throw Error('No\x20tracks\x20provided\x20for\x20muxing.');let gb=ga['length']>0x0?Math['min'](...ga['map'](ge=>ge['startTimestamp'])):g5??0x0;await g8['start']();for(let ge of g9){if(ge['kind']==='subtitle'){await ge['emit'](gb);continue;}await ge[j3(0x23e)](gb);}return await g8['finalize'](),g4['output'];}catch(gf){throw await g8['cancel']()['catch'](()=>void 0x0),gf;}finally{for(let gg of g9)gg['kind']!=='subtitle'&&gg['input']['dispose']();}}},e0=class{[gP(0x24f)];constructor(g4){this['strategy']=g4;}async['prepare'](){await this['strategy']['prepare']?.();}async['process'](g4){let g5=await this['strategy']['mux'](g4);if(g4['cleanup']){for(let g6 of new Set(g4['inputs']['map'](g7=>g7['path'])))await rm(g6,{'force':!0x0});}return g5;}};const e1=()=>{if(!(process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')&&!isatty(process['stderr']['fd'])&&aa()?.['getConsoleSize']?.()?.['columns'])try{let g4=a8('nanospinner/dist/consts.js');g4&&g4['isTTY']===!0x1&&(g4['isTTY']=!0x0,g4['symbols']?.['frames']?.['length']===0x1&&(g4['symbols']['frames']=['-','\x5c','|','/']));}catch{}},e2=g4=>{let g5=process['stderr'];if(!g4||process['platform']!=='win32'||process.env.ELECTRON_RUN_AS_NODE!=='1')return g5;if(!g5['columns']||g5['columns']!==g4){let g6=Object['getOwnPropertyDescriptor'](g5,'columns')??Object['getOwnPropertyDescriptor'](Object['getPrototypeOf'](g5),'columns');if(!g6||g6['writable']||g6['set'])try{g5['columns']=g4;}catch{}if(g5['columns']!==g4){let g7=Object['create'](g5);return Object['defineProperty'](g7,'columns',{'value':g4,'configurable':!0x0,'enumerable':!0x0,'writable':!0x0}),q['warn']('Unable\x20to\x20override\x20stderr.columns;\x20using\x20spinner-local\x20width\x20'+g4+'.'),g7;}}return g5;},e3={'debug':'gray','info':gP(0x13a),'warn':'yellow','error':'red'},e4=g4=>{let g5=g4['toUpperCase'](),g6=O[e3[g4]];return g6(g5);},e5=(g4,g5)=>typeof g5=='string'?g4+'\x20'+g5:g5&&{...g5,'text':(g4+'\x20'+(g5[gP(0x1f0)]??''))['trimEnd']()},e6=(g4,g5)=>{const j4=gP;e1();let g6=A(e4('info')),g7=createSpinner(g4,{'stream':e2(aa()?.['getConsoleSize']?.()?.['columns']??process['stderr'][j4(0x19a)]??process['stdout']['columns']??(process['platform']==='win32'?0x78:0x50))})['start']({'text':g6+'\x20'+g4,'color':g5}),g8=g7['update']['bind'](g7),g9=g7['success']['bind'](g7),ga=g7['error']['bind'](g7);return g7['update']=gb=>g8(e5(g6,gb)),g7['success']=gb=>g9(e5(g6,gb)),g7['error']=gb=>ga(e5(g6,gb)),g7;},e7=async g4=>{const j5=gP;if(!g4['keys']['length'])return;let g5=e6('Decrypting'),g6=new dB(new dD());await g6['prepare']();for(let g7 of g4['inputs']){let g8=extname(g7['path']),g9=g7[j5(0x154)]['replace'](g8,'.dec'+g8);if(!(g7['type']!=='video'&&g7['type']!=='audio')){if(await g6['process']({'input':g7['path'],'output':g9,'keys':g4['keys'],'type':g7['type'],'cleanup':!0x0}),!existsSync(g9))throw Error('Decryption\x20failed\x20for\x20file\x20'+g7['path']+'.\x20Unable\x20to\x20find\x20'+g9);g7['path']=g9;}}g5['success']('Decrypted');},e8=async g4=>{if(g4['skipMux'])return;let g5=e6('Muxing'),g6=new e0(new dZ());await g6['prepare'](),await g6['process']({'inputs':g4['inputs'],'output':g4['output'],'trimBegin':g4['trimBegin'],'trimEnd':g4['trimEnd'],'cleanup':!0x0}),existsSync(g4['output'])?(g5['success']('Muxed'),q['debug']('Muxed:\x20'+g4['output'])):g5['error']('Muxing\x20failed.\x20Output\x20file\x20not\x20found:\x20'+g4['output']);},e9=async g4=>{await e7(g4),await e8(g4);};var ea=class{async['process'](g4){const j6=gP;let g5=await dA({'jobId':g4['jobId'],'title':g4['title'],'entryTitle':g4['entryTitle'],'options':g4['options'],'psshList':g4['transferResult']['psshList']??[],'selectedTracks':g4['transferResult']['selectedTracks'],'extension':g4['extension'],'resource':g4['resource']});return await e9({'inputs':g4['transferResult']['downloaded'],'output':g4['outputPath'],'keys':g5,'trimBegin':g4['options'][j6(0x13d)],'trimEnd':g4['options']['trimEnd'],'binariesDir':g4['settings']['get']('binariesDir'),'skipMux':g4['options']['skipMux']}),await g4['afterDownload'](),{'outputPath':g4['outputPath'],'contentKeys':g5};}};const eb=async({message:g4,choices:g5})=>g5['length']?await checkbox({'message':g4,'pageSize':0xc,'choices':g5,'loop':!0x1}):[],ec={'selectTracks':async({inventory:g4})=>{const j7=gP;let g5=await eb({'message':'Select\x20video\x20streams','choices':await Promise['all'](g4['videos']['map'](async(ga,gb)=>({'name':await ga['getDisplayWidth']()+'x'+await ga['getDisplayHeight']()+'\x20|\x20'+(cM(await ga['getBitrate']())||'?')+j7(0x13e)+(await ga['getCodec']()??'?')+'\x20|\x20'+await cN(ga),'value':dp(ga),'checked':gb===0x0})))}),g6=g4['videos']['filter'](ga=>g5['includes'](dp(ga))),g7=await eb({'message':'Select\x20audio\x20streams','choices':await Promise['all'](g4['audios']['map'](async(ga,gb)=>({'name':''+(await ga['getName']()?await ga[j7(0x19c)]()+'\x20|\x20':'')+(cM(await ga[j7(0x1e8)]())||'?')+'\x20Kbps\x20|\x20'+(await ga['getCodec']()?await ga[j7(0x1a6)]()+'\x20|\x20':'')+(await ga['getLanguageCode']()||'und')+'\x20|\x20'+(await ga['getNumberOfChannels']()??'?')+'CH\x20|\x20'+await cN(ga),'value':dp(ga),'checked':gb===0x0})))}),g8=g4['audios']['filter'](ga=>g7['includes'](dp(ga))),g9=await eb({'message':'Select\x20subtitles','choices':await Promise['all'](g4['subtitles']['map'](async(ga,gb)=>({'name':(await ga['getCodec']()??'?')+'\x20|\x20'+(await ga['getLanguageCode']()||'und')+'\x20|\x20'+await cN(ga),'value':dp(ga),'checked':gb===0x0})))});return cL({'videos':g6,'audios':g8,'subtitles':g4['subtitles']['filter'](ga=>g9['includes'](dp(ga)))});}},ed=g4=>g4['select']?ec:cX,ee=async(g4,g5)=>{const j8=gP;let g6=g5+'\x20∙\x20';if(g4['type']==='subtitle'?g6+='SUBTITLES':g6+=g4['type']['toUpperCase'](),g4['isVideoTrack']()){let [g7,g8,g9]=await Promise['all']([g4['getDisplayWidth'](),g4['getDisplayHeight'](),g4['getBitrate']()]);g7&&(g6+='\x20∙\x20'+g7+'x'+g8),g9&&(g6+='\x20∙\x20'+Math['round'](g9/0x3e8)+'\x20KiB/s');}if(g4['isAudioTrack']()){let [ga,gb,gc,ge]=await Promise['all']([g4['getLanguageCode'](),g4['getName'](),g4['getSampleRate'](),g4['getBitrate']()]);ga&&(g6+='\x20∙\x20'+ga['toUpperCase']()),gb&&(g6+='\x20('+gb+')'),gc&&(g6+='\x20∙\x20'+gc+'\x20kHz'),ge&&(g6+='\x20∙\x20'+Math['round'](ge/0x3e8)+'\x20KiB/s');}if(g4['type']==='subtitle'){let [gf,gg,gh]=await Promise['all']([g4['getLanguageCode'](),g4['getName'](),g4['getDisposition']()]);gf&&(g6+=j8(0x1b6)+gf[j8(0x1cb)]()),gg&&(g6+='\x20('+gg+')'),gh[j8(0x1cf)]&&(g6+=j8(0x1d4));}return g6;};var ef=a5((g4,g5)=>{function g6(g7){var g8=new g7(),g9=g8;function ga(){var gc=g8;return gc['next']?g8=gc['next']:(g8=new g7(),g9=g8),gc['next']=null,gc;}function gb(gc){g9['next']=gc,g9=gc;}return{'get':ga,'release':gb};}g5['exports']=g6;}),eg=a5((g4,g5)=>{var g6=ef();function g7(gb,gc,ge){if(typeof gb=='function'&&(ge=gc,gc=gb,gb=null),!(ge>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');var gf=g6(g9),gg=null,gh=null,gi=0x0,gj=null,gk={'push':gr,'drain':g8,'saturated':g8,'pause':gm,'paused':!0x1,get 'concurrency'(){return ge;},set 'concurrency'(gy){if(!(gy>=0x1))throw Error('fastqueue\x20concurrency\x20must\x20be\x20equal\x20to\x20or\x20greater\x20than\x201');if(ge=gy,!gk['paused']){for(;gg&&gi<ge;)gi++,gt();}},'running':gl,'resume':gp,'idle':gq,'length':gn,'getQueue':go,'unshift':gs,'empty':g8,'kill':gu,'killAndDrain':gv,'error':gx,'abort':gw};return gk;function gl(){return gi;}function gm(){const j9=b;gk[j9(0x206)]=!0x0;}function gn(){const ja=b;for(var gy=gg,gz=0x0;gy;)gy=gy[ja(0x187)],gz++;return gz;}function go(){for(var gy=gg,gz=[];gy;)gz['push'](gy['value']),gy=gy['next'];return gz;}function gp(){if(gk['paused']){if(gk['paused']=!0x1,gg===null){gi++,gt();return;}for(;gg&&gi<ge;)gi++,gt();}}function gq(){return gi===0x0&&gk['length']()===0x0;}function gr(gy,gz){const jb=b;var gA=gf['get']();gA['context']=gb,gA['release']=gt,gA[jb(0x220)]=gy,gA['callback']=gz||g8,gA['errorHandler']=gj,gi>=ge||gk['paused']?gh?(gh['next']=gA,gh=gA):(gg=gA,gh=gA,gk['saturated']()):(gi++,gc['call'](gb,gA['value'],gA['worked']));}function gs(gy,gz){var gA=gf['get']();gA['context']=gb,gA['release']=gt,gA['value']=gy,gA['callback']=gz||g8,gA['errorHandler']=gj,gi>=ge||gk['paused']?gg?(gA['next']=gg,gg=gA):(gg=gA,gh=gA,gk['saturated']()):(gi++,gc['call'](gb,gA['value'],gA['worked']));}function gt(gy){const jc=b;gy&&gf['release'](gy);var gz=gg;gz&&gi<=ge?gk['paused']?gi--:(gh===gg&&(gh=null),gg=gz['next'],gz['next']=null,gc['call'](gb,gz[jc(0x220)],gz['worked']),gh===null&&gk['empty']()):--gi===0x0&&gk['drain']();}function gu(){gg=null,gh=null,gk['drain']=g8;}function gv(){gg=null,gh=null,gk['drain'](),gk['drain']=g8;}function gw(){const jd=b;var gy=gg;for(gg=null,gh=null;gy;){var gz=gy['next'],gA=gy['callback'],gB=gy[jd(0x271)],gC=gy['value'],gD=gy['context'];gy['value']=null,gy['callback']=g8,gy['errorHandler']=null,gB&&gB(Error('abort'),gC),gA['call'](gD,Error('abort')),gy['release'](gy),gy=gz;}gk['drain']=g8;}function gx(gy){gj=gy;}}function g8(){}function g9(){this['value']=null,this['callback']=g8,this['next']=null,this['release']=g8,this['context']=null,this['errorHandler']=null;var gb=this;this['worked']=function(gc,ge){var gf=gb['callback'],gg=gb['errorHandler'],gh=gb['value'];gb['value']=null,gb['callback']=g8,gb['errorHandler']&&gg(gc,gh),gf['call'](gb['context'],gc,ge),gb['release'](gb);};}function ga(gb,gc,ge){typeof gb=='function'&&(ge=gc,gc=gb,gb=null);function gf(gm,gn){gc['call'](this,gm)['then'](function(go){gn(null,go);},gn);}var gg=g7(gb,gf,ge),gh=gg['push'],gi=gg['unshift'];return gg['push']=gj,gg['unshift']=gk,gg['drained']=gl,gg;function gj(gm){var gn=new Promise(function(go,gp){gh(gm,function(gq,gr){if(gq){gp(gq);return;}go(gr);});});return gn['catch'](g8),gn;}function gk(gm){const je=b;var gn=new Promise(function(go,gp){gi(gm,function(gq,gr){if(gq){gp(gq);return;}go(gr);});});return gn[je(0x223)](g8),gn;}function gl(){return new Promise(function(gm){const jf=b;process[jf(0x263)](function(){if(gg['idle']())gm();else{var gn=gg['drain'];gg['drain']=function(){const jg=b;typeof gn==jg(0x1f9)&&gn(),gm(),gg['drain']=gn;};}});});}}g5['exports']=g7,g5['exports']['promise']=ga;}),eh=a7(eg(),0x1);const ei=T[gP(0x1bf)]??T,ej=0x493e0,ek=(g4={})=>{const jh=gP;let g5=g4['maxRetries']??0x5,g6=!0x1,g7=!0x1,g8=null,{proxy:g9}=g4,ga=g9?new ProxyAgent({'uri':g9,'allowH2':!0x0}):new Agent({'allowH2':!0x0}),gb=ei['create']({'fetch':g4['fetch'],'dispatcher':ga,'proxy':g9,'timeout':ej,'retry':{'limit':g5,'methods':['get',jh(0x13c)],'statusCodes':[0x198,0x19d,0x1ad,0x1f4,0x1f6,0x1f7,0x1f8],'backoffLimit':0x7530},'throwHttpErrors':!0x0,'redirect':'follow','headers':{'user-agent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/127.0.0.0\x20Safari/537.36'}});return Object['assign'](gb,{'close':async()=>{if(g8)return g8;g6||g7||(g6=!0x0,g8=ga['close'](),await g8);},'destroy':async gc=>{if(g8)return g8;g6||g7||(g6=!0x0,g7=!0x0,g8=ga['destroy'](gc??null),await g8);}});},el=g4=>new Promise(g5=>setTimeout(g5,g4)),em=async(g4,g5)=>{const ji=gP;let g6=await Q['stat'](g5)[ji(0x223)](()=>null);(!g6||!g6['isDirectory']())&&await Q['mkdir'](g5,{'recursive':!0x0});let g7=en(g4,g5),g8=await Q['stat'](g7)['catch'](()=>null);return(!g8||!g8[ji(0x115)]())&&await Q[ji(0x11a)](g7,{'recursive':!0x0}),g7;},en=(g4,g5)=>{const jj=gP;let g6=M[jj(0x197)](g4),g7=M['parse'](g4)['name'],g8=createHash('sha1')['update'](g6)['digest']('hex')['slice'](0x0,0xa);return M['join'](g5,g7+'-'+g8);},eo=async g4=>{const jk=gP;let g5=M['dirname'](g4),g6=M['resolve'](g5);M['parse'](g6)['root']!==g6&&(await Q['stat'](g5)['then'](()=>!0x0)[jk(0x223)](()=>!0x1)||await Q['mkdir'](g5,{'recursive':!0x0}));},ep=async(...g4)=>{let g5=[];for(let g6 of g4)g6&&g5['push'](Q['rm'](g6,{'recursive':!0x0,'force':!0x0})['catch'](()=>void 0x0));await Promise['all'](g5);},eq=g4=>g4+'.part.json',er=g4=>{const jl=gP;if(g4['filePath'])return g4['filePath'];if(g4['output'])return eq(g4['output']);throw Error(jl(0x259));},es=g4=>{const jm=gP;if(!g4||typeof g4!='object')return!0x1;let g5='code'in g4?g4['code']:void 0x0;return g5==='EPERM'||g5===jm(0x17b)||g5==='EBUSY';},et=async(g4,g5)=>{let g6=R['platform']==='win32'?[0x0,0x32,0x96,0x12c,0x1f4]:[0x0],g7;for(let g8 of g6){g8>0x0&&await el(g8);try{await Q['rename'](g4,g5);return;}catch(g9){if(g7=g9,!es(g9))break;await Q['rm'](g5,{'force':!0x0})['catch'](()=>void 0x0);try{await Q['rename'](g4,g5);return;}catch(ga){if(g7=ga,!es(ga))break;}}}throw g7;};var eu=class{async['get'](g4){const jn=gP;let g5=er(g4);if(!await Q[jn(0x1d6)](g5)['then'](()=>!0x0)['catch'](()=>!0x1))return null;try{let g6=await Q[jn(0x157)](g5,'utf8');return JSON['parse'](g6);}catch{return null;}}async['set'](g4,g5){const jo=gP;let g6=er(g4);await eo(g6);let g7=g6+'.'+R[jo(0x1a1)]+'.'+Date['now']()['toString'](0x24)+'.tmp';await Q['writeFile'](g7,JSON['stringify'](g5));try{await et(g7,g6);}finally{try{await Q['rm'](g7,{'force':!0x0});}catch{}}}async['delete'](g4){let g5=er(g4);await Q['rm'](g5,{'force':!0x0})['catch'](()=>void 0x0);}};const ev=g4=>M['resolve'](g4),ew=g4=>createHash('sha1')[gP(0x1b4)](ev(g4))['digest'](gP(0x240)),ex=g4=>g4['map']((g5,g6)=>({'index':g6,'start':g5[gP(0x112)],'end':g5['end'],'output':g5['output'],'completed':!0x1,'bytesWritten':0x0})),ey=(g4,g5)=>g4['parts']['length']===g5['length']?g4['parts']['every']((g6,g7)=>{const jp=gP;let g8=g5[g7];return g8?g6['start']===g8[jp(0x112)]&&g6['end']===g8['end']&&(g6['output']??null)===(g8[jp(0x190)]??null):!0x1;}):!0x1,ez=(g4,g5)=>!g5||!g4['sourceSignature']?!0x0:g4[gP(0x181)]===g5,eA=g4=>{const jq=gP;let g5=g4['parts']['reduce']((g6,g7)=>g6+g7['bytesWritten'],0x0);return g5>0x0?g5:g4[jq(0x159)];},eB=g4=>{const jr=gP;if(!g4||typeof g4!='object')return!0x1;let g5=g4;return g5['version']===0x2&&typeof g5[jr(0x260)]=='string'&&Array['isArray'](g5['parts'])&&typeof g5['bytesDownloaded']=='number';};var eC=class{['key'];['output'];['filePath'];[gP(0x125)];['store'];['target'];['trustExplicitKey'];constructor(g4={}){const js=gP;if(this['output']=g4[js(0x190)],this['filePath']=g4['filePath'],this['key']=g4['key']??(this['output']?ew(this['output']):''),!this['key'])throw Error('Resume\x20key\x20is\x20required\x20when\x20output\x20is\x20not\x20provided');this[js(0x222)]=g4['store']??new eu(),this['cleanupOnSuccess']=g4['cleanupOnSuccess']??!0x0,this['target']={'key':this['key'],'output':this['output'],'filePath':this['filePath']},this['trustExplicitKey']=typeof g4['key']=='string'&&g4['key']['length']>0x0;}async['read'](){let g4=await this['store']['get'](this['target']);return eB(g4)?g4:null;}async['write'](g4){const jt=gP;let g5=new Date()['toISOString'](),g6={...g4,'version':0x2,'key':this['key'],'output':g4['output']??this[jt(0x190)],'bytesDownloaded':eA(g4),'createdAt':g4['createdAt']||g5,'updatedAt':g5};await this['store']['set'](this['target'],g6);}async['delete'](){await this['store']['delete'](this['target']);}['createState'](g4){const ju=gP;let g5=new Date()['toISOString']();return{'version':0x2,'key':this['key'],'output':this['output'],'input':g4['input'],'bytesTotal':g4['bytesTotal'],'bytesDownloaded':0x0,'parts':ex(g4['parts']),'sourceSignature':g4[ju(0x181)],'planner':g4['planner'],'createdAt':g5,'updatedAt':g5};}[gP(0x1fd)](g4,g5){const jv=gP;let g6=g4['version']!==0x2,g7=g4['key']!==this['key'],g8=!this['trustExplicitKey']&&!ez(g4,g5['sourceSignature']),g9=!ey(g4,g5['parts']);if(g6||g7||g8||g9)return{'state':this['createState'](g5),'reset':!0x0};let ga={...g4,'key':this['key'],'output':this['output'],'input':g5['input'],'bytesTotal':g5['bytesTotal'],'sourceSignature':g5['sourceSignature'],'planner':g5['planner'],'parts':g5[jv(0x1f2)]['map']((gb,gc)=>{const jw=jv;let ge=g4[jw(0x1f2)][gc];return{'index':gc,'start':gb['start'],'end':gb['end'],'output':gb['output'],'completed':ge?.['completed']??!0x1,'bytesWritten':ge?.['bytesWritten']??0x0};}),'createdAt':g4['createdAt'],'updatedAt':g4['updatedAt']};return ga['bytesDownloaded']=eA(ga),{'state':ga,'reset':!0x1};}['markPartCompleted'](g4,g5,g6){const jx=gP;let g7=g4['parts'][g5];if(!g7)return g4;let g8=g7['bytesWritten'];return g7['completed']=!0x0,g7[jx(0x236)]=g6,g4['bytesDownloaded']=Math['max'](0x0,g4['bytesDownloaded']-g8+g6),g4['updatedAt']=new Date()['toISOString'](),g4;}async['getProgress'](){const jy=gP;let g4=await this['read']();if(!g4)return null;let g5=g4[jy(0x159)];if(g4['bytesTotal']){let g8=g4['bytesTotal'];return{'bytesDownloaded':g5,'totalBytes':g8,'percentComplete':g8>0x0?Math['round'](g5/g8*0x64):0x0};}let g6=g4['parts']['length'],g7=g4['parts']['filter'](g9=>g9['completed'])['length'];return{'bytesDownloaded':g5,'totalBytes':null,'percentComplete':g6>0x0?Math['round'](g7/g6*0x64):0x0,'segmentsCompleted':g7,'segmentsTotal':g6};}};const eD=0x8*0x2**0x14,eE=(g4,g5,g6)=>{const jz=gP;let g7=jz(0x1b0)+g6+'.part';return M['join'](g5,g7);},eF=(g4,g5,g6)=>{let g7=Math['ceil'](g4/Math['max'](0x1,g5));return Math['max'](0x1,Math['min'](g7,Math['max'](0x1,g6)));},eG=(g4,g5,g6)=>{let g7=eF(g4,g5,g6),g8=[],g9=0x0;for(;g9<g4;){let ga=Math['min'](g4-0x1,g9+g7-0x1);g8['push']([g9,ga]),g9=ga+0x1;}return g8;},eH=g4=>{let [g5,g6]=g4;return'bytes='+g5+'-'+(g6||'');},eI=g4=>eG(g4['contentLength'],g4['maxWorkerCount'],g4['maxChunkSize']??eD)['map'](g5=>{const jA=gP;let [g6,g7]=g5,g8=new Headers(g4['requestInit']?.[jA(0x164)]);return g8['set']('Range',eH([g6,g7])),{'url':g4['url'],'headers':g8,'start':g6,'end':g7};}),eJ=g4=>{const jB=gP;let g5=g4?Error('The\x20operation\x20was\x20aborted',{'cause':g4}):Error('The\x20operation\x20was\x20aborted');return g5['name']=jB(0x160),g5;},eK=g4=>{if(!(g4 instanceof Error))return!0x1;if(g4['name']==='AbortError'||g4['code']==='ABORT_ERR')return!0x0;let g5=g4['cause'];return g5 instanceof Error&&g5['name']==='AbortError';},eL=async g4=>await g4['client'][gP(0x126)](g4['url'],{'redirect':'follow',...g4['requestInit']}),eM=(g4,g5,g6)=>async g7=>{if(g6?.['aborted'])throw eJ();let g8=typeof g5=='number'?{'flags':'r+','start':g5}:{'flags':'w'},g9=K['createWriteStream'](g4,g8),ga=Readable['fromWeb'](g7['body']);try{await pipeline(ga,g9,{'signal':g6});}catch(gb){throw eK(gb)?eJ(gb):gb;}if(g6?.['aborted'])throw eJ();return g7;},eN=(g4,g5,g6)=>g7=>{const jC=gP;if(g6?.['aborted'])throw eJ();let g8=parseInt(g7['headers'][jC(0x126)]('content-length')||'0');if(g4['increase'](g8),g6?.['aborted'])throw eJ();return g5&&!g6?.['aborted']?g5(g4['toProgressInfo']()):g4['log'](),g7;},eO=g4=>typeof g4=='boolean'?{'enabled':g4,'cleanupOnSuccess':!0x0}:g4?{'enabled':g4[gP(0x1bd)]??!0x0,'key':g4['key'],'store':g4['store'],'filePath':g4['filePath'],'cleanupOnSuccess':g4['cleanupOnSuccess']??!0x0}:{'enabled':!0x1,'cleanupOnSuccess':!0x0},eP=g4=>({'tempDir':g4['tempDir']??process['cwd'](),'maxRetries':g4['maxRetries']??0x5,'maxChunkSize':g4['maxChunkSize']??eD,'maxWorkerCount':g4['maxWorkerCount']??0x4,'resume':eO(g4['resume']),'proxy':g4['proxy'],'requestInit':g4['requestInit'],'fetchFn':g4['fetchFn']}),eQ={'total':{'b':0x0,'mb':0x0},'current':{'b':0x0,'mb':0x0},'chunkSize':0x0,'chunkSizes':[],'averageSize':{'b':0x0,'mb':0x0},'averageTotal':{'b':0x0,'mb':0x0},'speed':{'bps':0x0,'mbps':0x0}},eR=g4=>{let g5=Math['floor'](g4/0xe10),g6=Math['floor'](g4%0xe10/0x3c),g7=g4%0x3c,g8=g5>0x0?g5+'h':'',g9=g6>0x0?g6+'m':'',ga=g7>0x0?g7+'s':'';return g5>0x0?g8+'\x20'+(g9||'0m')+'\x20'+(ga&&''+ga):!g5&&g6>0x0?g9+'\x20'+(ga&&''+ga):ga;},eS=(g4=0x0)=>{let g5=structuredClone(eQ),g6=0x0,g7=setInterval(()=>{g6>0x1&&(g5['speed']['bps']=g5['current']['b']/g6),g6+=0.5;},0x1f4);return{'state':g5,'setTotal':g8=>{g5['total']['b']=g8,g5['total']['mb']=g8/0x400/0x400;},'setCurrent'(g8){const jD=b;g5[jD(0x22a)]['b']=g8,g5['current']['mb']=g8/0x400/0x400;},'increase'(g8){const jE=b;g5['current']['b']+=g8,g5['current']['mb']=g5['current']['b']/0x400/0x400,g5['speed']['mbps']=g5['speed']['bps']/0x400/0x400,g5['chunkSize']=g8,g5['chunkSizes']['push'](g8),g5[jE(0x128)]['b']=g5['current']['b']/g5['chunkSizes'][jE(0x1fc)],g5['averageSize']['mb']=g5[jE(0x128)]['b']/0x400/0x400,g5['averageTotal']['b']=g4*g5['averageSize']['b'],g5['averageTotal']['mb']=g5[jE(0x21e)]['b']/0x400/0x400;},'stop'(){clearInterval(g7),Object['assign'](g5,eQ);},'log'(){const jF=b;let g8=g5[jF(0x22a)]['b'],g9=g5[jF(0x18c)]['b'],ga=g8+(g9?'/'+g9:'');stdout['write']('\x0dDownloading\x20['+ga+']');},'stopLog'(){stdout['write']('\x0a');},'toString'(){const jG=b;let g8='';g5['speed']['bps']&&(g8+=g5['speed']['mbps']['toFixed'](0x1)+'\x20MB/s\x20–\x20'),g8+=''+g5['current']['mb']['toFixed'](0x1),g5['total']['b']?g8+=jG(0x162)+g5['total']['mb']['toFixed'](0x1)+'\x20MB':g8+='\x20MB';let g9=g5['total']['b']||g5['averageTotal']['b'];if(g9){let ga=g9-g5['speed']['bps']*g6,gb=Math['round'](ga/g5['speed']['bps']),gc=eR(gb);gb&&isFinite(gb)&&gc&&(g8+=',\x20'+gc+'\x20left');}return g8;},'toProgressInfo'(){let g8=g5['total']['b']||null;return{'bytesDownloaded':g5['current']['b'],'totalBytes':g8,'percentComplete':g8?g5['current']['b']/g8*0x64:null,'bytesPerSecond':g5['speed']['bps'],'estimatedSecondsRemaining':g5['speed']['bps']>0x0&&g8?(g8-g5['current']['b'])/g5['speed']['bps']:null};}};},eT=new Set(['authorization','cookie','set-cookie','x-amz-date','x-amz-security-token','x-amz-content-sha256','x-goog-date','x-goog-security-token']),eU=(g4,g5={})=>{const jH=gP;if(!g4)return[];let g6=g5[jH(0x1fa)]??!0x1,g7=[];return new Headers(g4)['forEach']((g8,g9)=>{const jI=jH;!g6&&eT['has'](g9[jI(0x212)]())||g7['push']([g9,g8]);}),g7['sort'](([g8],[g9])=>g8['localeCompare'](g9)),g7;},eV=g4=>{try{let g5=new URL(g4),g6=g5['pathname']['split']('/')['map'](g7=>g7&&(g7['includes']('=')||g7['includes'](',')?':volatile':g7))['join']('/');return''+g5['origin']+g6;}catch{let g7=String(g4);return(g7['split']('#')[0x0]??g7)['split']('?')[0x0]||g7;}},eW=g4=>({'url':eV(g4[gP(0x1a8)]),'start':g4[gP(0x112)],'end':g4['end'],'output':g4[gP(0x190)],'headers':eU(g4['headers'])}),eX=g4=>{const jJ=gP;let g5={'input':Array['isArray'](g4[jJ(0x12d)])?g4['input'][jJ(0x13b)](g6=>eW(g6)):eV(String(g4['resolvedUrl'])),'requestHeaders':eU(g4['requestHeaders']),'parts':g4['parts']['map'](g6=>eW(g6)),'maxWorkerCount':g4['maxWorkerCount'],'maxChunkSize':g4['maxChunkSize']};return createHash('sha1')[jJ(0x1b4)](JSON['stringify'](g5))['digest']('hex');},eY=async g4=>{const jK=gP;if(!g4['manager'])return null;let g5={'input':Array['isArray'](g4[jK(0x12d)])?g4['input']:g4['resolvedUrl'],'parts':g4['parts'],'bytesTotal':g4['bytesTotal'],'sourceSignature':g4['sourceSignature'],'planner':{'maxWorkerCount':g4['maxWorkerCount'],'maxChunkSize':g4['maxChunkSize']}},g6=await g4['manager']['read'](),g7=(g6?g4['manager']['reconcileState'](g6,g5):null)?.['state']??g4['manager']['createState'](g5);return await g4['manager']['write'](g7),g7;},eZ=g4=>{const jL=gP;if(g4&&!g4[jL(0x1f2)]['every'](g5=>g5['completed']))throw Error('Not\x20all\x20segments\x20were\x20downloaded\x20successfully.\x20Try\x20resuming\x20later.');},f0=g4=>{const jM=gP;if(Array['isArray'](g4[jM(0x12d)]))return g4[jM(0x12d)]['map']((g5,g6)=>({...g5,'output':eE(g4['url'],g4['tempFileDir'],g6)}));if(!g4['acceptsRanges'])throw Error('Unable\x20to\x20get\x20parts');if(!g4['size'])throw Error('Size\x20is\x20not\x20known');return eI({'url':g4['url'],'requestInit':g4['requestInit'],'contentLength':g4[jM(0x114)],'maxWorkerCount':g4['maxWorkerCount'],'maxChunkSize':g4['maxChunkSize']});},f1=async g4=>{const jN=gP;if(!g4['parts'][jN(0x20b)](g6=>typeof g6['start']=='number'&&(g6['output']??g4['output'])===g4['output'])||await Q['stat'](g4['output'])['then'](()=>!0x0)['catch'](()=>!0x1))return;let g5=await Q['open'](g4['output'],'w');g4['size']&&g4['size']>0x0&&await g5['truncate'](g4['size']),await g5['close']();},f2=()=>{const jO=gP;let g4=Error('The\x20operation\x20was\x20aborted');return g4['name']=jO(0x160),g4;},f3=g4=>{let g5=g4['match'](/bytes\s+(\d+)-(\d+)\/(\d+|\*)/i);if(!g5||!g5[0x1]||!g5[0x2]||!g5[0x3])return null;let g6=parseInt(g5[0x1],0xa),g7=parseInt(g5[0x2],0xa),g8=g5[0x3];if(!Number['isFinite'](g6)||!Number['isFinite'](g7)||g7<g6)return null;if(g8==='*')return{'start':g6,'end':g7,'total':null};let g9=parseInt(g8,0xa);return!Number['isFinite'](g9)||g9<=0x0?null:{'start':g6,'end':g7,'total':g9};},f4=(g4,g5)=>{const jP=gP;if(typeof g5[jP(0x112)]!='number'||typeof g5['end']!=jP(0x1b5))return;if(g4['status']!==0xce)throw Error('Range\x20request\x20failed\x20for\x20bytes='+g5['start']+'-'+g5['end']+':\x20expected\x20206,\x20got\x20'+g4['status']);let g6=g4['headers']['get']('content-range');if(!g6)throw Error('Range\x20request\x20failed\x20for\x20bytes='+g5['start']+'-'+g5['end']+':\x20missing\x20Content-Range\x20header');let g7=f3(g6);if(!g7)throw Error('Range\x20request\x20failed\x20for\x20bytes='+g5['start']+'-'+g5['end']+':\x20invalid\x20Content-Range\x20\x22'+g6+'\x22');if(g7['start']!==g5['start']||g7['end']!==g5['end'])throw Error('Range\x20request\x20failed\x20for\x20bytes='+g5['start']+'-'+g5['end']+':\x20got\x20bytes='+g7['start']+'-'+g7['end']);},f5=async(g4,g5,g6)=>{const jQ=gP;let g7=g4[jQ(0x164)][jQ(0x126)]('content-length');if(g7){let g9=parseInt(g7,0xa);if(Number['isFinite'](g9)&&g9>0x0)return g9;}let g8=g4['headers']['get']('content-range');if(g8){let ga=g8['match'](/bytes\s+(\d+)-(\d+)\//i);if(ga&&ga[0x1]&&ga[0x2]){let gb=parseInt(ga[0x1],0xa),gc=parseInt(ga[0x2],0xa);if(Number['isFinite'](gb)&&Number['isFinite'](gc)&&gc>=gb)return gc-gb+0x1;}}return typeof g5['start']=='number'&&typeof g5['end']=='number'?Math['max'](0x0,g5['end']-g5['start']+0x1):g5['output']&&g5['output']!==g6?Q[jQ(0x1d6)](g5[jQ(0x190)])['then'](ge=>ge['size'])['catch'](()=>0x0):0x0;},f6=(g4,g5)=>g4['map']((g6,g7)=>g7)['filter'](g6=>!(g5?.['parts'][g6]?.['completed']??!0x1)),f7=g4=>{let g5=Promise['resolve']();return{'enqueue':()=>(g5=g5['then'](g4),g5),'onIdle':()=>g5};},f8=async g4=>{const jR=gP;let g5=g4['signal']??g4[jR(0x16f)]?.['signal']??void 0x0,g6=()=>{if(g5?.['aborted'])throw f2();};g6();let g7=f6(g4['parts'],g4['resumeState']),g8=eh['promise'](async gh=>{const jS=jR;let {index:gi,part:gj}=gh;g6();let gk=await eL({'index':gi,'client':g4['client'],'url':gj['url'],'requestInit':{...g4['requestInit'],'signal':g5,'headers':gj['headers']??g4['requestInit']?.[jS(0x164)]}});if(g6(),f4(gk,gj),await eM(gj['output']??g4['output'],gj['start'],g5)(gk),eN(g4['progress'],g4['onProgress'],g5)(gk),g6(),g4['resumeState']&&g4['resumeManager']){let gl=await f5(gk,gj,g4['output']);g4['resumeManager']['markPartCompleted'](g4['resumeState'],gi,gl),await gc['enqueue']();}},g4['maxWorkerCount']),g9=()=>{g8['pause'](),g8['killAndDrain'](),g8['kill']();};if(g5?.[jR(0x143)])throw g9(),f2();let ga=()=>{},gb=g5?new Promise((gh,gi)=>{let gj=()=>{g9(),gi(f2());};g5['addEventListener']('abort',gj,{'once':!0x0}),ga=()=>g5['removeEventListener']('abort',gj);}):null,gc=f7(async()=>{const jT=jR;!g4['resumeState']||!g4[jT(0x229)]||await g4['resumeManager']['write'](g4['resumeState']);}),ge=g7['map'](gh=>{let gi=g4['parts'][gh];return gi?(g6(),g8['push']({'index':gh,'part':gi})):Promise['resolve']();}),gf=[];try{let gh=Promise['allSettled'](ge);gb&&(await Promise['race']([gh,gb]),g6()),gf=await gh;}finally{ga(),await gc['onIdle']();}let gg=gf['find'](gi=>gi[jR(0x23b)]==='rejected');if(gg?.['status']==='rejected')throw gg['reason'];},f9=async(g4,g5)=>{await new Promise((g6,g7)=>{const jV=b;let g8=K['createReadStream'](g4),g9=()=>{const jU=b;g5['off']('error',ga),g8[jU(0x252)]('error',gb),g8['off']('end',gc);},ga=ge=>{g9(),g7(Error('Output\x20write\x20stream\x20error',{'cause':ge}));},gb=ge=>{g9(),g7(Error('Segment\x20read\x20stream\x20error',{'cause':ge}));},gc=()=>{g9(),g6();};g5['on'](jV(0x15d),ga),g8['on']('error',gb),g8['on']('end',gc),g8['pipe'](g5,{'end':!0x1});});},fa=async g4=>{let g5=g4['parts']['map'](g7=>g7['output'])['filter'](g7=>!!g7&&g7!==g4['output']);if(!g5['length'])return;let g6=K['createWriteStream'](g4['output']);for(let g7 of g5)await f9(g7,g6);g6['end'](),await finished(g6);},fb=async g4=>{const jW=gP;if(!g4['expectedSize'])return;let g5=await Q['stat'](g4['output'])['then'](g6=>g6['size'])['catch'](()=>null);if(g5&&g5!==g4['expectedSize'])throw Error('Actual\x20size\x20'+g5+jW(0x1c2)+g4['expectedSize']);},fc=async g4=>{const jX=gP;g4['resumeManager']&&g4['resumeManager'][jX(0x125)]&&await g4['resumeManager']['delete'](),await ep(g4['tempFileDir']);},fd=async g4=>{const jY=gP;let g5=eX({'input':g4['input'],'resolvedUrl':g4['url'],'parts':g4['parts'],'requestHeaders':g4[jY(0x16f)]?.['headers'],'maxWorkerCount':g4['maxWorkerCount'],'maxChunkSize':g4['maxChunkSize']}),g6=await eY({'manager':g4['resumeManager'],'input':g4['input'],'resolvedUrl':g4[jY(0x1a8)],'parts':g4['parts'],'bytesTotal':g4['size']??void 0x0,'sourceSignature':g5,'maxWorkerCount':g4['maxWorkerCount'],'maxChunkSize':g4['maxChunkSize']}),g7=eS(g4['parts']['length']);g4['size']&&g7['setTotal'](g4['size']),g6?.['bytesDownloaded']&&g7['setCurrent'](g6[jY(0x159)]),await f1({'output':g4['output'],'size':g4['size'],'parts':g4['parts']});try{await f8({'parts':g4['parts'],'output':g4['output'],'maxWorkerCount':g4['maxWorkerCount'],'client':g4['client'],'requestInit':g4['requestInit'],'progress':g7,'onProgress':g4['onProgress'],'resumeState':g6,'resumeManager':g4[jY(0x229)],'signal':g4['signal']});}finally{g7['stop'](),g4['onProgress']||g7['stopLog']();}eZ(g6),await fa({'output':g4['output'],'parts':g4['parts']}),await fb({'output':g4['output'],'expectedSize':Array[jY(0x191)](g4['input'])?null:g4['size']}),await fc({'tempFileDir':g4['tempFileDir'],'resumeManager':g4['resumeManager']});},fe=async g4=>{const jZ=gP;let g5=new Headers(g4['requestInit']?.['headers']);g5['set']('Range','bytes=0-0');let g6=Array['isArray'](g4['input'])?g4['input'][0x0]?.['url']:g4[jZ(0x12d)];if(!g6)throw Error('Input\x20is\x20empty');let g7=await g4['client']['head'](g6,{...g4['requestInit'],'headers':g5}),g8=g7['headers'][jZ(0x126)]('content-type'),g9=g7['headers']['get']('content-length'),ga=g7['headers']['get']('content-range'),gb=ga?.['split']('/')?.[0x1]||g9,gc=gb&&!Array['isArray'](g4['input'])?parseInt(gb,0xa):null,ge=g7['headers']['get']('accept-ranges')==='bytes'||!!ga?.['includes']('bytes')||!!g8?.['includes']('video')||!!g8?.['includes']('audio')||!!g8?.['includes']('octet-stream');return{'url':g7['url'],'size':gc,'acceptsRanges':ge};};var ff=class gI{[gP(0x12d)];['output'];['resume'];['onProgress'];['config'];['client'];['resumeManager'];['executed']=!0x1;[gP(0x1de)];['tempFileDir'];constructor(g4){const k0=gP;this['input']=g4['input'],this['output']=g4[k0(0x190)],this['resume']=g4['resume'],this['onProgress']=g4['onProgress'],this['config']=eP(g4),this['client']=ek({'maxRetries':this['config']['maxRetries'],'proxy':this['config'][k0(0x264)],'fetch':this['config']['fetchFn']}),this['config']['resume']['enabled']&&(this['resumeManager']=new eC({'output':this['output'],'key':this['config']['resume'][k0(0x260)],'filePath':this['config']['resume'][k0(0x147)],'store':this['config']['resume']['store'],'cleanupOnSuccess':this['config']['resume']['cleanupOnSuccess']}));}static async[gP(0x22b)](g4){let g5=new gI(g4);return await g5['_init'](),g5;}async['_init'](){this['probe']=await fe({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),await eo(this['output']),this['tempFileDir']=await em(this['output'],this['config']['tempDir']),this['config']['resume']['enabled']||(await ep(this['output'],eq(this['output']),this['tempFileDir']),this['tempFileDir']=await em(this['output'],this['config']['tempDir']));}async['execute'](){const k1=gP;if(!this['probe']||!this['tempFileDir'])throw Error('Download\x20was\x20not\x20initialized.\x20Use\x20Download.init(options).');if(this['executed'])throw Error(k1(0x130));this['executed']=!0x0;try{let g4=f0({'input':this['input'],'url':this['probe']['url'],'size':this['probe']['size'],'acceptsRanges':this['probe']['acceptsRanges'],'requestInit':this['config']['requestInit'],'tempFileDir':this['tempFileDir'],'maxWorkerCount':this['config']['maxWorkerCount'],'maxChunkSize':this['config']['maxChunkSize']});await fd({'input':this[k1(0x12d)],'output':this[k1(0x190)],'url':this['probe']['url'],'size':this['probe']['size'],'requestInit':this['config']['requestInit'],'maxWorkerCount':this['config']['maxWorkerCount'],'maxChunkSize':this['config']['maxChunkSize'],'onProgress':this['onProgress'],'client':this['client'],'parts':g4,'tempFileDir':this['tempFileDir'],'resumeManager':this['resumeManager'],'signal':this['config']['requestInit']?.['signal']??void 0x0});}finally{try{await this['close']();}catch{}}}async['getSize'](){const k2=gP;if(this[k2(0x1de)]||=await fe({'client':this['client'],'input':this['input'],'requestInit':this['config']['requestInit']}),!this['probe']['size'])throw Error('Size\x20is\x20not\x20known');return this['probe']['size'];}async[gP(0x1ec)](){const k3=gP;await this['client'][k3(0x1ec)]();}};const fg=async({attempts:g4,fn:g5,shouldRetry:g6,onRetry:g7})=>{let g8=Math['max'](0x1,Math['trunc'](g4)),g9;for(let ga=0x1;ga<=g8;ga+=0x1)try{return await g5(ga);}catch(gb){if(g9=gb,ga>=g8||!g6?.(gb,ga))throw gb;await g7?.(gb,ga);}throw g9 instanceof Error?g9:Error(String(g9));},fh=0x10,fi=(g4,g5)=>{if(g5)return{'Range':'bytes='+g4+'-'+(g4+g5-0x1)};},fj=async g4=>{const k4=gP;let g5=[],g6=await g4['getSegments'](),g7=g6[0x0];g7?.['initSegment']&&g5['push']({'url':g7['initSegment']['location']['path'],'headers':fi(g7['initSegment']['location']['offset'],g7['initSegment']['location']['length'])});for(let g8 of g6)g5['push']({'url':g8['location']['path'],'headers':fi(g8['location']['offset'],g8[k4(0x25b)]['length'])});return g5['length']===0x1&&!g5[0x0]?.['headers']?g5[0x0]['url']:g5;},fk=g4=>{let g5=Math['max'](0x1,Math['trunc'](g4)),g6=Math['min'](fh,g5);return{'normalizedRequestedConnections':g5,'maxWorkerCount':g6,'wasClamped':g5!==g6};},fl=g4=>Math['max'](0x1,Math['trunc'](g4)+0x1),fm=({title:g4,progress:g5,filepath:g6,target:g7,quality:g8,codec:g9})=>{let ga=g5['totalBytes']??void 0x0,gb=g5['bytesPerSecond']??void 0x0,gc={'b':ga,'mb':ga===void 0x0?void 0x0:ga/0x400/0x400},ge={'b':g5['bytesDownloaded'],'mb':g5['bytesDownloaded']/0x400/0x400},gf=ga?Math['round'](g5['bytesDownloaded']/ga*0x64):void 0x0;return{'title':g4,'total':gc,'current':ge,'percentage':gf,'speed':{'bps':gb,'mbps':gb===void 0x0?void 0x0:gb/0x400/0x400},'trackName':basename(g6),'trackPath':g6,'finalName':g7['finalName'],'finalPath':g7['finalPath'],'state':gf===0x64?'downloaded':'downloading','quality':g8,'codec':g9};},fn=g4=>'Downloading\x20∙\x20'+((g4['bytesDownloaded']/0x400/0x400)['toFixed'](0x2)+'\x20MB')+(g4[gP(0x1bb)]?'\x20of\x20'+(g4['totalBytes']/0x400/0x400)['toFixed'](0x2)+'\x20MB':''),fo=async({input:g4,resume:g5,filepath:g6,description:g7,target:g8,resource:g9,options:ga,settings:gb,abortSignal:gc,title:ge,quality:gf,codec:gg,emitProgress:gh})=>{const k5=gP;q['info'](g7),q['debug']('Path:\x20'+g6);let gi=cF(g9['input']),gj=ga['connections']??gb['get']('connections')??0x1,{maxWorkerCount:gk,wasClamped:gl}=fk(gj);gl&&q['warn']('Connections\x20value\x20'+gj+'\x20was\x20clamped\x20to\x20'+gk+'\x20for\x20stability'),q['debug']('Max\x20worker\x20count:\x20'+gk);let gm=e6('Downloading',k5(0x231)),gn='',go=fl(ga['retry']??gb['get']('retry')??0x1);try{await fg({'attempts':go,'fn':async()=>{const k6=k5;let gp=await ff[k6(0x22b)]({'input':g4,'output':g6,'tempDir':r,'requestInit':{'headers':gi[k6(0x164)],'signal':gc},'proxy':ga['proxyMedia']||ga['proxy']||void 0x0,'resume':g5,'maxRetries':ga['retry'],'maxWorkerCount':gk,'onProgress':gq=>{gh(fm({'title':ge,'progress':gq,'filepath':g6,'target':g8,'quality':gf,'codec':gg})),gn=fn(gq),gm['update'](gn);}});if(gc?.['aborted']){q['debug'](k6(0x185)+g6);let gq=Error('The\x20operation\x20was\x20aborted');throw gq[k6(0x144)]='AbortError',gq;}await gp['execute']();},'shouldRetry':gp=>!(gp instanceof Error&&gp['name']==='AbortError'),'onRetry':async(gp,gq)=>{let gr=gp instanceof Error?gp['message']:String(gp);q['warn']('Track\x20download\x20retry\x20'+gq+'/'+(go-0x1)+'\x20scheduled\x20for\x20'+g6+':\x20'+gr);}}),gm['success'](gn);}catch(gp){if(gm['error'](g7),gp instanceof Error&&gp['name']==='AbortError')throw gp;let gq=gp instanceof Error?gp['message']:String(gp);throw q['error']('Download\x20track\x20failed:\x20'+gq),gp instanceof Error&&gp['stack']?q['debug'](gp[k5(0x138)]):q['debug'](gq),gp instanceof Error?gp:Error(gq);}},fp=g4=>{const k7=gP;if(!(!g4||typeof g4!='object'||!('drm'in g4)))return g4['drm']?.['widevine']?.[k7(0x12b)];},fq=async g4=>{let g5;try{g5=await g4['getSegments']();}catch(g7){if(g7 instanceof Error&&g7['message']['toLowerCase']()['includes']('no\x20segments')){q['debug']('Track\x20segments\x20unavailable\x20for\x20URL\x20logging:\x20'+g7['message']);return;}throw g7;}let g6=g5[0x0];return g6?.['location']['path']??g6?.['initSegment']?.['location']['path'];},fr=({outputDirectory:g4,baseName:g5,track:g6})=>join(g4,g5+'.'+createHash('sha256')['update'](dp(g6))['digest']('hex')['slice'](0x0,0x6)+'.'+(g6['type']==='subtitle'?'vtt':g6['type']==='audio'?'m4a':'mp4')),ft=(g4,g5)=>({'enabled':!0x0,'key':createHash('sha1')['update'](g4+':'+dp(g5))['digest']('hex')}),fu=async g4=>{const k8=gP;let g5=[];for(let g6 of g4){let g7=(await g6['getSegments']()[k8(0x223)](()=>[]))[0x0],g8=fp(g7?.['initSegment']?.['encryption'])??fp(g7?.['encryption']);g8&&g5['push'](g8);}return g5[k8(0x13b)](g9=>{const k9=k8;let ga=g9;return typeof ga=='string'?ga:ga instanceof Uint8Array||ga instanceof ArrayBuffer?Buffer['from'](ga)['toString'](k9(0x118)):ArrayBuffer['isView'](ga)?Buffer['from'](ga['buffer'])['toString'](k9(0x118)):String(ga);});},fv=async(g4,g5)=>{const ka=gP;let [g6,g7,g8]=await Promise['all']([g4['getLanguageCode']()['catch'](()=>void 0x0),g4['getName']()['catch'](()=>void 0x0),g4['getDisposition']()[ka(0x223)](()=>void 0x0)]);return{'path':g5,'type':g4['type'],'language':g6,'label':g7??void 0x0,'forced':g4['type']==='subtitle'?g8?.['forced']:void 0x0};},fw=async(g4,g5)=>{if(!g4['isVideoTrack']())return{'quality':void 0x0,'codec':void 0x0};let [g6,g7,g8]=await Promise['all']([g4['getCodec'](),g5?g4['getDisplayWidth']():g4['getCodedWidth'](),g5?g4['getDisplayHeight']():g4['getCodedHeight']()]);return{'quality':g7?g7+'x'+g8:void 0x0,'codec':g6??void 0x0};};var fx=class{async['execute']({settings:g4,plan:g5,abortSignal:g6,callbacks:g7}){q['debug']('Downloading\x20tracks'),dr(g5['tracks']['all']);let g8=cF(g5['resource']['input']);if(g5['isSegmented']){let gb=[];for(let gc of g5['tracks']['all']){gc['type']==='subtitle'&&q['debug']('URL:\x20'+(await fq(gc)??'manifest\x20subtitle\x20track'));let ge=await this.#e({'settings':g4,'plan':g5,'track':gc,'input':await fj(gc),'resume':ft(g8['url'],gc),'isSegmented':!0x0,'abortSignal':g6,'callbacks':g7});ge&&gb['push'](ge);}return{'downloaded':gb,'psshList':await fu(g5['tracks']['all']),'selectedTracks':g5['tracks']['all']};}let g9=[],ga=g5['tracks']['videos'][0x0]??g5['tracks']['audios'][0x0];if(ga){let gf=await this.#e({'settings':g4,'plan':g5,'track':ga,'input':g8['url'],'resume':!0x0,'isSegmented':!0x1,'abortSignal':g6,'callbacks':g7});gf&&g9['push'](gf);}for(let gg of g5['tracks']['subtitles']){q['debug']('URL:\x20'+(await fq(gg)??'manifest\x20subtitle\x20track'));let gh=await this.#e({'settings':g4,'plan':g5,'track':gg,'input':await fj(gg),'resume':!0x0,'isSegmented':!0x1,'abortSignal':g6,'callbacks':g7});gh&&g9['push'](gh);}return{'downloaded':g9,'psshList':[],'selectedTracks':g5['tracks']['all']};}async #e({settings:g4,plan:g5,track:g6,input:g7,resume:g8,isSegmented:g9,abortSignal:ga,callbacks:gb}){const kb=gP;let gc=fr({'outputDirectory':g5['output']['outputDirectory'],'baseName':g5[kb(0x190)][kb(0x221)],'track':g6}),ge=await ee(g6,g5['output'][kb(0x221)]),{quality:gf,codec:gg}=await fw(g6,g9);return await fo({'input':g7,'resume':g8,'filepath':gc,'description':ge,'target':{'finalName':g5['output']['fileName'],'finalPath':g5['output']['outputPath']},'resource':g5['resource'],'options':g5['options'],'settings':g4,'abortSignal':ga,'title':g5['downloadTitle'],'quality':gf,'codec':gg,'emitProgress':gh=>{gb?.['onProgress']?.(gh);}}),await az(gc)?await fv(g6,gc):null;}},fy=class{['settings'];['extensionManager'];#e=new fx();#t=new ea();constructor(g4,g5){this['settings']=g4,this['extensionManager']=g5;}async['run']({jobId:g4,title:g5,entry:g6,url:g7,requestedOptions:g8,filePath:g9,grantedBenefits:ga,signal:gb,emit:gc}){const kc=gP;let {options:ge,limit:gf}=dm({'settings':this['settings'],'requestedOptions':g8,'filePath':g9,'grantedBenefits':ga});gf['wasClamped']&&q['warn']('Connections\x20value\x20'+gf['normalizedRequestedConnections']+'\x20exceeds\x20tier\x20limit\x20('+gf['maxAllowedConnections']+').\x20Using\x20'+gf['connections']+'.');let gg=await dn({'extensionManager':this['extensionManager'],'entry':g6,'url':g7,'options':ge,'signal':gb});try{let {resource:gh,extension:gi,extensionTag:gj}=gg;gc?.({'type':'resource-prepared','entry':gh['entry']}),await gg['beforeDownload']();let gk=await new db({'settings':this['settings'],'trackSelectionStrategy':ed(ge)})['prepareDownloadPlan']({'options':ge,'resource':gh,'extensionTag':gj});gc?.({'type':'output-resolved','outputPath':gk['output']['outputPath'],'title':gk['downloadTitle']}),gc?.({'type':'phase-changed','phase':kc(0x207)});let gl=await this.#e['execute']({'settings':this['settings'],'plan':gk,'abortSignal':gb,'callbacks':{'onProgress':gm=>{gc?.({'type':'progress','progress':gm});}}});if(gb?.['aborted']){let gm=Error('The\x20operation\x20was\x20aborted');throw gm['name']='AbortError',gm;}return gl[kc(0x14c)]['length']>0x0&&(gc?.({'type':'artifacts-produced','artifacts':gl['downloaded']}),gc?.({'type':kc(0x217),'phase':'processing'}),await this.#t['process']({'jobId':g4,'title':g5??gk['downloadTitle'],'entryTitle':gh['entry']['title'],'options':ge,'outputPath':gk['output']['outputPath'],'transferResult':{'downloaded':gl[kc(0x14c)],'psshList':gl['psshList']??[],'selectedTracks':gl['selectedTracks']},'extension':gi,'resource':gh,'settings':this['settings'],'afterDownload':async()=>{await gg['afterDownload'](ge['skipMux']);}})),{'entry':gh['entry'],'outputPath':gk['output']['outputPath'],'title':gk['downloadTitle'],'transferResult':gl,'effectiveOptions':ge};}finally{await gg[kc(0x152)]();}}},fz=class{['settings'];['extensionManager'];['callbacks'];#e;constructor(g4,g5,g6){this['settings']=g4,this['extensionManager']=g5,this['callbacks']=g6,this.#e=new fy(g4,g5);}async['run'](g4,g5,g6){const kd=gP;try{if(g4['markDownloading'](),await this['callbacks'][kd(0x239)](g4),this['callbacks']['emitStatusChanged'](g4),!g4['entry'])throw Error('Download\x20job\x20is\x20missing\x20a\x20media\x20entry');let g7=await this.#e['run']({'jobId':g4['id'],'title':g4['title'],'entry':g4[kd(0x19f)],'url':g4['url'],'requestedOptions':g4['options'],'filePath':g4['filePath'],'grantedBenefits':g6,'signal':g5['signal'],'emit':this.#t(g4,g5)});if(g5['signal']['aborted'])return;let {entry:g8,transferResult:{downloaded:g9=[]}}=g7;if(g4['setEntry'](g8),!g9['length'])throw w['emit']('error',{'code':'NO_FILES_DOWNLOADED'}),Error(kd(0x140));g9['length']&&!g4['filePath']&&g4[kd(0x25e)](g9[0x0]?.['path']),this[kd(0x16a)]['trackArtifact'](g4['id'],g4['filePath']);for(let ga of g9)this['callbacks']['trackArtifact'](g4['id'],ga['path']);g4['markCompleted'](),this['callbacks']['emitStatusChanged'](g4),this['callbacks']['emitJobCompleted'](g4);}catch(gb){if(gb instanceof Error&&gb['name']==='AbortError'){q['debug']('Download\x20was\x20aborted\x20(paused):\x20'+g4['id']);return;}let {normalizedError:gc,alreadyHandled:ge}=this.#n(g4,gb);if(this.#r(gc),ge)return;q['error']('Download\x20job\x20failed:\x20'+gc),cv('Download\x20job\x20failure',gc),this['callbacks']['emitStatusChanged'](g4),this['callbacks']['emitJobError'](g4,gc);}}#t(g4,g5){let g6={};return g7=>{const ke=b;switch(g7['type']){case'resource-prepared':g4['setEntry'](g7['entry']),this['callbacks']['persistJob'](g4);return;case'output-resolved':g4['setOutputResolved'](g7['title'],g7['outputPath']),this['callbacks']['trackArtifact'](g4['id'],g7['outputPath']),this['callbacks']['persistJob'](g4),q['debug']('Job\x20output\x20path\x20persisted\x20early:\x20id='+g4['id']+ke(0x166)+g7['outputPath']);return;case'progress':{let g8=g7['progress'];if(g5['signal']['aborted']||!g4['hasState']('running','transferring'))return;g6[g8['trackPath']]=g8,this['callbacks']['trackArtifact'](g4['id'],g8['trackPath']),this['callbacks']['trackArtifact'](g4['id'],g8['finalPath']);let {totalDownloaded:g9,totalSize:ga,percent:gb}=cw(Object['values'](g6));g4['applyProgress']({'percent':gb,'downloadedBytes':g9,'totalBytes':ga,'filePath':g8[ke(0x19b)],'quality':g8['quality'],'codec':g8['codec']}),this['callbacks']['emitProgress'](g4),this['callbacks']['persistJob'](g4);return;}case'artifacts-produced':for(let gc of g7['artifacts'])this['callbacks'][ke(0x175)](g4['id'],gc['path']);return;case'phase-changed':if(g7['phase']!=='processing')return;g4['markProcessing'](),this['callbacks']['emitStatusChanged'](g4);}};}#n(g4,g5){const kf=gP;let g6=g5 instanceof Error?g5:Error(String(g5)),g7=g4['hasFailureMessage'](g6['message']);return g7||g4[kf(0x24d)](g6['message']),{'normalizedError':g6,'alreadyHandled':g7};}#r(g4){(g4&&typeof g4=='object'&&'code'in g4?String(g4['code']):'')==='DOWNLOAD_DIR_NOT_WRITABLE'&&w['emit']('error',{'code':'DOWNLOAD_DIR_NOT_WRITABLE'});}},fA=class{['record'];constructor(g4){this['record']=g4;}get['id'](){return this['record']['id'];}get['state'](){return this['record']['state'];}get['phase'](){return this['record']['phase'];}get['stage'](){return this['record']['phase']??this['record']['state'];}get['entry'](){const kg=gP;return this['record']['request'][kg(0x19f)];}get['filePath'](){const kh=gP;return this[kh(0x15c)][kh(0x190)][kh(0x147)];}get['url'](){return this['record']['request']['url'];}get['options'](){const ki=gP;return this['record'][ki(0x26f)]['options'];}get['title'](){const kj=gP;return this[kj(0x15c)]['output']['title'];}get['snapshot'](){return this['record'];}['hasState'](g4,g5){const kk=gP;return this[kk(0x15c)]['state']===g4?g5===void 0x0?!0x0:this['record']['phase']===g5:!0x1;}['hasFailureMessage'](g4){const kl=gP;return this[kl(0x15c)]['state']==='failed'&&this['record'][kl(0x1c6)]?.[kl(0x1fe)]===g4;}['setEntry'](g4){const km=gP;this['record'][km(0x26f)]['entry']=g4;}['setOutputResolved'](g4,g5){this['record']['output']['title']=g4,this['record']['output']['filePath']=g5;}['setFilePath'](g4){this['record']['output']['filePath']=g4;}[gP(0x196)]({percent:g4,downloadedBytes:g5,totalBytes:g6,filePath:g7,quality:g8,codec:g9}){const kn=gP;this['record']['output']['filePath']=g7,this['record']['progress']['percent']=g4,this['record']['progress']['downloadedBytes']=g5,this['record'][kn(0x266)]['totalBytes']=g6,g8&&(this['record']['output']['quality']=g8),g9&&(this['record']['output']['codec']=g9);}['markQueued'](){this['record']['state']='queued',this['record']['phase']=null,this['record']['failure']=void 0x0;}['markAnalyzing'](){this['record']['state']='queued',this['record']['phase']='analyzing',this['record']['failure']=void 0x0;}['markDownloading'](){this['record']['state']='running',this['record']['phase']='transferring';}['markProcessing'](){this['record']['state']='running',this['record']['phase']='processing';}['markPaused'](){this['record']['state']='paused',this['record']['phase']=null,this['record']['failure']=void 0x0;}['markCompleted'](){this['record']['state']='completed',this['record']['phase']=null,this['record']['progress']['percent']=0x64;}['markFailed'](g4){this['record']['state']='failed',this['record']['phase']=null,this['record']['failure']={'message':g4};}['resetForRetry'](){const ko=gP;this['record'][ko(0x266)]['percent']=0x0,this['record']['progress']['downloadedBytes']=0x0,this['record']['progress']['totalBytes']=void 0x0,this['record']['output']['quality']=void 0x0,this['record']['output']['codec']=void 0x0;}},fB=class{#e=[];#t=new Set();#n=new Map();#r=new Map();#i=new Set();get['activeRunCount'](){return this.#r['size'];}get['queuedCount'](){return this.#e['length'];}['getActiveRun'](g4){return this.#r['get'](g4);}[gP(0x1d9)](g4){return this.#n['get'](g4);}['queueResumeAfterStop'](g4){this.#i['add'](g4);}['consumeResumeAfterStop'](g4){const kp=gP;let g5=this.#i['has'](g4);return g5&&this.#i[kp(0x11d)](g4),g5;}['enqueue'](g4){const kq=gP;this.#t['has'](g4['id'])||this.#r[kq(0x262)](g4['id'])||(this.#e['push'](g4['id']),this.#t['add'](g4['id']));}['dequeue'](g4){const kr=gP;if(!this.#t['has'](g4))return!0x1;let g5=this.#e['indexOf'](g4);return g5!==-0x1&&this.#e[kr(0x1b2)](g5,0x1),this.#t['delete'](g4),!0x0;}['dequeueNext'](g4){const ks=gP;for(;this.#e['length']>0x0;){let g5=this.#e['shift']();if(!g5)return;this.#t['delete'](g5);let g6=g4(g5);if(g6&&g6[ks(0x122)]('queued'))return g6;}}['start'](g4,g5,g6){let g7={'controller':g5,'job':g4,'runPromise':g6};return this.#n['set'](g4['id'],g4),this.#r['set'](g4['id'],g7),g7;}[gP(0x1ad)](g4){this.#n['delete'](g4),this.#r['delete'](g4);}},fC=class{['settings'];['extensionManager'];['downloadStore'];#e=new fB();#t=new cm();#n=new Set();#r;#i=null;#a;#o=0x0;constructor(g4,g5,g6){const kt=gP;this['settings']=g4,this['extensionManager']=g5,this['downloadStore']=g6,this.#a=g4['get'](kt(0x230)),this.#r=new fz(g4,g5,{'persistJob':g7=>this['downloadStore']['updateRecord'](g7['snapshot']),'emitStatusChanged':g7=>this.#y({'type':'job-status-changed','record':g7['snapshot']}),'emitProgress':g7=>this.#y({'type':'job-progress','record':g7['snapshot']}),'emitJobError':(g7,g8)=>this.#y({'type':'job-error','record':g7[kt(0x227)],'error':g8}),'emitJobCompleted':g7=>this.#y({'type':'job-completed','record':g7['snapshot']}),'trackArtifact':(g7,g8)=>this.#t['track'](g7,g8)}),q['debug']('Created\x20download\x20engine\x20with\x20max\x20active\x20downloads:\x20'+this.#a);}get['maxActiveDownloads'](){return this.#a;}[gP(0x1ca)](g4){return this['downloadStore']['getRecord'](g4);}['listRecords'](){return this['downloadStore']['listRecords']();}['subscribe'](g4){return this.#n['add'](g4),()=>this.#n['delete'](g4);}async['initializeFromStorage'](){const ku=gP;for(let g4 of this['downloadStore']['listRecords']()){if(!cq(g4))continue;let g5=new fA(g4);g5['hasState']('queued')&&g5['phase']===null||(g5[ku(0x245)](),await this['downloadStore']['updateRecord'](g5['snapshot'])),this.#e['enqueue'](g5);}this.#u();}async['analyze'](g4,g5={}){if(!g4){let g7=Error('Cannot\x20prepare\x20job\x20without\x20a\x20URL.');throw this.#y({'type':'error','error':g7}),g7;}let g6=await ck(g4,g5,await this['extensionManager']['getExtensionForUrl'](g4));if(!g6?.['length'])throw Error('No\x20media\x20entries\x20found');return g6;}async['add'](g4){const kv=gP;if(!g4['url']&&!g4['entry']?.['source']?.[kv(0x1a8)])throw Error('Job\x20must\x20have\x20either\x20a\x20URL\x20or\x20a\x20pre-prepared\x20media\x20entry.');let g5=cp({'id':crypto['randomUUID'](),'request':g4,'createdAt':new Date()['toISOString']()});q['debug']('Adding\x20new\x20job:\x20'+g5['id']),q['debug'](kv(0x25f)+g5['request']['url']),this.#o+=0x1;let g6=new fA(g5);try{return await this['downloadStore']['addRecord'](g6['snapshot']),this.#y({'type':'job-added','record':g6['snapshot']}),this.#e['enqueue'](g6),this.#u(),structuredClone(g6['snapshot']);}finally{--this.#o,this.#v();}}async['pause'](g4){let g5=await this.#s(g4,'pause');g5&&q['debug']('Paused\x20download:\x20'+g5['id']);}async['resume'](g4){const kw=gP;let g5=this.#e[kw(0x214)](g4);if(g5){g5['cancellationReason']==='pause'||g5['controller']['signal']['aborted']?(this.#e['queueResumeAfterStop'](g4),q['debug']('Resume\x20queued\x20until\x20stop\x20completes:\x20'+g4)):q['debug']('Resume\x20skipped\x20while\x20job\x20is\x20active:\x20'+g4);return;}let g6=this.#h(g4);if(!g6){q['warn']('Resume\x20failed:\x20Job\x20'+g4+'\x20not\x20found');return;}if(g6[kw(0x122)]('paused')){await this.#c(g6),q['debug']('Resumed\x20download:\x20'+g6['id']);return;}g6['hasState']('failed')&&await this.#l(g6)&&q[kw(0x113)]('Retried\x20download:\x20'+g6['id']);}async['remove'](g4){await this.#s(g4,'remove'),await this['downloadStore']['deleteRecord'](g4),this.#t['forget'](g4);}async['removeWithFile'](g4){let g5=this.#h(g4),g6=await this.#s(g4,'remove-with-file')||g5,g7=this.#t['collect'](g4,g6?.['snapshot']);await this['downloadStore']['deleteRecord'](g4),await this.#t['purge'](g7),this.#t['forget'](g4);}async['drain'](){await new Promise(g4=>{let g5=!0x1,g6=()=>void 0x0,g7=()=>{g5||(g5=!0x0,g6(),g4());};g6=this['subscribe'](g8=>{g8['type']==='idle'&&g7();}),this.#_()&&g7();});}async #s(g4,g5){const kx=gP;let g6=this.#e['dequeue'](g4),g7=this.#e['getActiveRun'](g4),g8=this.#h(g4);return g7?g5==='pause'&&!g7['job'][kx(0x122)]('running','transferring')?(q['debug']('Pause\x20ignored\x20for\x20non-downloading\x20stage:\x20id='+g4+',\x20stage='+g7['job']['stage']),g7['job']):(g7['cancellationReason']=g5,g5==='pause'&&(g7['job']['markPaused'](),await this['downloadStore']['updateRecord'](g7['job']['snapshot']),this.#y({'type':'job-status-changed','record':g7['job']['snapshot']})),g7['controller']['abort'](),await g7[kx(0x24c)],g7['job']):(g5==='pause'&&g8&&(g6||g8['hasState']('queued'))&&(g8['markPaused'](),await this['downloadStore']['updateRecord'](g8['snapshot']),this.#y({'type':'job-status-changed','record':g8['snapshot']})),g8);}async #c(g4){const kz=gP;g4[kz(0x245)](),await this['downloadStore']['updateRecord'](g4['snapshot']),this.#y({'type':'job-status-changed','record':g4['snapshot']}),this.#e['enqueue'](g4),this.#u();}async #l(g4){let g5=this.#t['collect'](g4['id'],g4['snapshot']);this.#t['forget'](g4['id']),await this.#t['purge'](g5),g4['markAnalyzing'](),g4['resetForRetry'](),await this['downloadStore']['updateRecord'](g4['snapshot']),this.#y({'type':'job-status-changed','record':g4['snapshot']});try{if(g4['url']){let g6=await this['analyze'](g4['url'],g4['options']??{}),g7=this.#m(g4,g6);if(!g7)throw Error('No\x20media\x20entry\x20found');g4['setEntry'](g7);}return await this.#c(g4),!0x0;}catch(g8){return g4['markFailed'](g8 instanceof Error?g8['message']:String(g8)),await this['downloadStore']['updateRecord'](g4['snapshot']),this.#y({'type':'job-status-changed','record':g4['snapshot']}),this.#y({'type':'job-error','record':g4['snapshot'],'error':g8}),!0x1;}}#u(){const kA=gP;for(this.#a=this['settings'][kA(0x126)]('maxActiveDownloads');this.#e['activeRunCount']<this.#a;){let g4=this.#e['dequeueNext'](g5=>this.#h(g5));if(!g4)break;this.#d(g4);}this.#v();}#d(g4){if(!g4['hasState']('queued')){q['warn']('Skipping\x20non-queued\x20job\x20start:\x20'+g4['id']+'\x20('+g4['stage']+')');return;}let g5=new AbortController(),g6=this.#p(g4,g5)['catch'](g7=>{let g8=g7 instanceof Error?g7:Error('Download\x20run\x20failed:\x20'+String(g7));q['error'](g8['message']),this.#y({'type':'error','error':g8});});this.#e['start'](g4,g5,g6);}async #f(){const kB=gP;if(this.#i)return this.#i;try{let {grantedBenefits:g4}=await cc();this.#i=g4;}catch(g5){let g6=g5 instanceof Error?g5['message']:String(g5);q[kB(0x18a)]('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+g6),this.#i=[];}return this.#i;}async #p(g4,g5){const kC=gP;try{let g6=await this.#f();await this.#r[kC(0x18e)](g4,g5,g6);}finally{let g7=this.#e[kC(0x214)](g4['id']);if(!g7)return;let g8=g7['cancellationReason'],g9=g8==='pause'&&this.#e['consumeResumeAfterStop'](g4['id']);g8==='pause'?(g4['markPaused'](),await this['downloadStore']['updateRecord'](g4[kC(0x227)]),this.#y({'type':'job-status-changed','record':g4[kC(0x227)]})):g8!=='remove'&&g8!=='remove-with-file'&&await this['downloadStore'][kC(0x137)](g4['snapshot']),this.#e['finish'](g4['id']),g9&&g4['hasState']('paused')&&(g4['markQueued'](),await this['downloadStore']['updateRecord'](g4['snapshot']),this.#y({'type':'job-status-changed','record':g4['snapshot']}),this.#e['enqueue'](g4)),this.#u();}}#m(g4,g5){const kD=gP;if(g5['length']<=0x1)return g5[0x0];let g6=g4['entry'],g7=g6?.['source']?.['url'];return g5['find'](g8=>g6?.['id']&&g8['id']?g6['id']===g8['id']:g6?.['title']&&g8['title']&&g6[kD(0x135)]===g8['title']&&g6['seasonNumber']===g8['seasonNumber']&&g6['episodeNumber']===g8['episodeNumber']&&g6['episodeTitle']===g8['episodeTitle']?!0x0:!!g7&&g7===g8['source']?.['url'])??g5[0x0];}#h(g4){const kE=gP;return this.#e['getActiveJob'](g4)??this.#g(this['downloadStore'][kE(0x1ca)](g4));}#g(g4){return g4?new fA(g4):void 0x0;}#_(){return this.#o===0x0&&this.#e['queuedCount']===0x0&&this.#e['activeRunCount']===0x0;}#v(){this.#_()&&this.#y({'type':'idle'});}#y(g4){for(let g5 of this.#n)g5(g4);}};const fD=g4=>{if(!g4)return null;let [g5,g6]=g4['toLowerCase']()['split']('e');return[parseInt(g5['trim']()['toLowerCase']()['replace']('s','')),parseFloat(g6?.['trim']())];},fE=g4=>{const kF=gP;let g5=0x0,g6=0x270f,g7=[],g8=g4['split'](',');for(let ga of g8){let [gb,gc]=ga['split']('-'),ge=fD(gb),gf=fD(gc);if(ge&&!gc){let [gg,gh]=ge;if(isNaN(gh)){for(let gi=0x0;gi<=g6;gi++)g7[kF(0x146)]([gg,gi]);}else g7[kF(0x146)]([gg,gh]);}else{if(ge&&gf){let [gj,gk]=ge,[gl,gm]=gf;for(let gn=gj;gn<=gl;gn++){let go=gk||0x0,gp=gn===gl?gm:g6;for(let gq=go;gq<=gp;gq++)g7['push']([gn,gq]);}}}}let g9=new Map();for(let [gr,gs]of g7)g9['has'](gr)||g9[kF(0x20f)](gr,new Set()),g9['get'](gr)?.['add'](gs);return g9;},fF=g4=>{const kG=gP;if(!g4)return{};let g5={},g6=typeof g4=='string'?g4['split']('|'):g4;for(let g7 of g6){let [g8,...g9]=g7['split'](':'),ga=g9['join'](':');if(!ga)throw Error('Can\x27t\x20parse\x20header:\x20'+g7);g5[g8['trim']()]=ga[kG(0x124)]();}return g5;},fG=async g4=>{const kH=gP;let g5=!0x1,g6=g4;do try{g6?g5=!!new URL(g6):g6=(await t['ask']({'fields':{'url':{'label':'URL'}}}))['url'];}catch{g6=(await t['ask']({'fields':{'url':{'label':'URL'}}}))[kH(0x1a8)];}while(!g5);return g6!==g4&&q['debug']('URL:\x20'+g6),g6;};var fH=class{['filePath'];['records']=[];#e=Promise['resolve']();constructor(g4){this['filePath']=g4;}async['load'](){const kI=gP;await this.#e;try{let g4=await readFile(this['filePath'],{'encoding':'utf8'}),g5=JSON['parse'](g4);this['records']=g5['map'](g6=>this.#n(g6))[kI(0x172)]((g6,g7)=>new Date(g7['createdAt']??0x0)['getTime']()-new Date(g6['createdAt']??0x0)[kI(0x25d)]());}catch{this['records']=[];}return this;}get['size'](){const kJ=gP;return this['records'][kJ(0x1fc)];}async['addRecord'](g4){await this.#t(async()=>{const kK=b;this['records']['unshift'](g4),await this[kK(0x14a)]();});}async['updateRecord'](g4){await this.#t(async()=>{let g5=this['records']['findIndex'](g6=>g6['id']===g4['id']);g5!==-0x1&&(this['records'][g5]=g4,await this['save']());});}['getRecord'](g4){const kL=gP;return this[kL(0x180)]['find'](g5=>g5['id']===g4);}['listRecords'](){return this['records'];}['has'](g4){return this['records']['some'](g5=>g5['id']===g4);}async['deleteRecord'](g4){await this.#t(async()=>{const kM=b;let g5=this[kM(0x180)]['findIndex'](g6=>g6['id']===g4);g5!==-0x1&&(this['records']['splice'](g5,0x1),await this['save']());});}async[gP(0x1e3)](){await this.#t(async()=>{this['records']=[],await this['save']();});}async['save'](){return writeFile(this['filePath'],JSON['stringify'](this['records'],null,0x2));}#t(g4){let g5=this.#e['then'](g4,g4);return this.#e=g5['then'](()=>void 0x0,()=>void 0x0),g5;}#n(g4){if('request'in g4&&'state'in g4&&'progress'in g4&&'output'in g4)return g4;if(g4['entry'])return co(g4);let g5=g4['resource'];return co({...g4,'entry':{'id':g5?.['metadata']?.['id'],'title':g5?.['metadata']?.['title'],'seasonNumber':g5?.['metadata']?.['seasonNumber'],'episodeNumber':g5?.['metadata']?.['episodeNumber'],'episodeTitle':g5?.['metadata']?.['episodeTitle'],'source':g5?.['source']}});}};const fI={'command':['download\x20[urls..]','$0\x20[urls..]'],'aliases':['dl'],'describe':'Download\x20media\x20content\x20by\x20URL','builder':g4=>g4['option']('quality',{'alias':'q','describe':'Video\x20resolution\x20quality\x20-\x202160p/1080p/720p/...,\x20defaults\x20to\x20highest\x20available','type':'string'})['option']('video-codec',{'alias':'v','describe':'Video\x20codec\x20-\x20avc\x20|\x20hevc\x20|\x20vp8\x20|\x20vp9\x20|\x20av1\x20|\x20vc1,\x20defaults\x20to\x20any','type':'string'})['option']('video-range',{'alias':'r','describe':'Video\x20color\x20range\x20-\x20sdr\x20|\x20hlg\x20|\x20hdr10\x20|\x20hdr10+\x20|\x20dv,\x20defaults\x20to\x20sdr','type':'string'})['option']('video-bitrate',{'describe':'Video\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})['option']('video-dimension',{'describe':'Video\x20dimension\x20-\x202D/3D\x20(HSBS/HOU/FSBS/OU),\x20defaults\x20to\x202D','default':'2D','type':'string'})['option']('audio-codec',{'alias':'a','describe':'Audio\x20codec\x20-\x20aac\x20|\x20opus\x20|\x20mp3\x20|\x20vorbis\x20|\x20flac\x20|\x20alac\x20|\x20ac3\x20|\x20eac3\x20|\x20dts,\x20defaults\x20to\x20any','type':'string'})['option']('audio-channels',{'alias':'c','describe':'Audio\x20channels,\x20matches\x20sub-channel\x20layouts\x20like\x205.1\x20with\x206.0','type':'number'})['option']('audio-bitrate',{'describe':'Audio\x20bitrate\x20(in\x20kbps),\x20defaults\x20to\x20highest\x20available','type':'number'})[gP(0x120)]('subs-format',{'alias':'s','describe':gP(0x26d),'type':'string'})[gP(0x120)]('subs-lang',{'alias':'S','describe':gP(0x248),'type':'string'})['option']('lang',{'alias':'l','describe':'Video/audio\x20language(s)','type':'string'})['option']('skip-video',{'describe':gP(0x1df),'type':'boolean'})['option']('skip-audio',{'describe':'do\x20not\x20download\x20audio','type':'boolean'})['option']('skip-subtitles',{'describe':gP(0x209),'type':'boolean'})['option']('skip-mux',{'describe':'Disable\x20merge\x20audio/video/subs\x20into\x20single\x20file','type':'boolean'})['option'](gP(0x208),{'describe':'Select\x20audio/video/subtitle\x20streams\x20from\x20manifest\x20manually','type':'boolean'})['option']('episodes',{'alias':'e','describe':'Seasons/episodes\x20to\x20download,\x20e.g.\x20`S01E01`,\x20`S01-S05,S07`,\x20`S01E01-S02E03`,\x20`S02-S02E03`,\x20etc.','type':'string','coerce':g5=>fE(g5)})['option'](gP(0x21f),{'alias':'R','describe':'Number\x20of\x20retries\x20in\x20case\x20of\x20unsuccessful\x20request','type':gP(0x1b5),'default':ax['retry']})['option']('connections',{'alias':'C','describe':'Number\x20of\x20parallel\x20http\x20connections\x20per\x20download','type':'number','default':ax['connections']})['option'](gP(0x264),{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20all\x20requests','type':'string'})[gP(0x120)]('proxy-meta',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20metadata\x20fetching','type':gP(0x18f)})['option']('proxy-media',{'describe':'Use\x20specified\x20HTTP/HTTPS\x20proxy\x20for\x20media\x20downloading','type':'string'})['option']('movie-template',{'describe':'Movie\x20filename\x20template','type':'string','default':ax['movieFilenameTemplate']})['option']('episode-template',{'describe':'Episode\x20filename\x20template','type':'string','default':ax['seriesFilenameTemplate']})['option']('hardsub',{'describe':'Download\x20hardsubbed\x20video\x20if\x20available','type':gP(0x1d2)})['option'](gP(0x1ef),{'describe':gP(0x256),'type':'string'})['option']('trim-end',{'describe':'Trim\x20video\x20at\x20the\x20end;\x20example:\x2000:01:30','type':'string'})['option']('key',{'describe':gP(0x178),'type':gP(0x1e4),'string':!0x0,'coerce':g5=>g5['map'](g6=>{let [g7,g8]=g6['split'](':');return{'kid':g7,'key':g8};})})['option']('header',{'alias':'H','describe':'Pass\x20custom\x20header(s)\x20for\x20manifest\x20request','type':'array','string':!0x0,'coerce':g5=>fF(g5)})['option']('format',{'alias':'f','describe':'Video\x20container\x20format\x20-\x20mp4\x20|\x20mkv\x20(Pro\x20only)','type':'string','choices':['mp4','mkv']}),'handler':async g4=>{const kN=gP;let g5=g4;g5['videoQuality']=g4['quality'];let g6=new ay(j);if(g5['format']){let {error:gl}=await dj({'videoContainerFormat':g5['format']});gl&&(q['error']('Invalid\x20format:\x20'+gl['message']),q['info'](kN(0x11e)),process['exit'](0x1));}let g7=[];try{({grantedBenefits:g7}=await cc());}catch(gm){let gn=gm instanceof Error?gm['message']:String(gm);q[kN(0x18a)]('Failed\x20to\x20resolve\x20customer\x20plan\x20for\x20connection\x20limits.\x20Falling\x20back\x20to\x20Free\x20limits:\x20'+gn);}let {options:g8,limit:{normalizedRequestedConnections:g9,maxAllowedConnections:ga,wasClamped:gb,connections:gc}}=dl({'options':g5,'fallbackConnections':g6['get']('connections'),'grantedBenefits':g7});Object['assign'](g5,g8),gb&&q['warn']('Connections\x20value\x20'+g9+'\x20exceeds\x20tier\x20limit\x20('+ga+').\x20Using\x20'+gc+'.');let ge=new cg({'dirs':[I],'indexPath':n});await ge['init'](),await ge['loadCoreExtensions'](),await ge['discover']();let gf=new fH(join(B,'downloads.json'));await gf['load']();let gg=new fC(g6,ge,gf);c3()['then'](go=>Object['assign'](c1,go)),gg['subscribe'](go=>{const kO=kN;if(go['type']==='job-completed'){q['debug']('Job\x20completed:\x20'+go['record']['id']);return;}if(go['type']==='job-error'){q['debug']('Job\x20failed:\x20'+go['record']['failure']?.[kO(0x1fe)]);return;}go[kO(0x1ab)]===kO(0x15d)&&q['error']('Download\x20engine\x20error:\x20'+go['error']['message']);});let gh=Array['isArray'](g4['urls'])?g4['urls']:[],gi=process.env.ELECTRON_RUN_AS_NODE==='1'?gh['filter'](go=>go!==process['argv'][0x1]):gh,gj=gi['length']>0x0?gi:[''],gk=[];for(let go of gj){let gp=await fG(go),gq=await gg[kN(0x184)](gp,g5);for(let gr of gq)gk['push'](gg['add']({'url':gp,'options':g5,'entry':gr}));}await Promise['all'](gk),await gg['drain']();}},fJ='azot-desktop',fK=async()=>{const kP=gP;if(await c3()&&!await confirm({'message':'You\x27re\x20already\x20logged\x20in.\x20Do\x20you\x20want\x20to\x20log\x20in\x20again?','default':!0x1})){q['debug']('Login\x20cancelled');return;}let g4=createSpinner('Requesting\x20device\x20authorization...');g4['start']();try{let g5=bS(),{data:g6,error:g7}=await g5['device']['code']({'client_id':fJ,'scope':'openid\x20profile\x20email'});if(g4['stop'](),g7||!g6)q['error']('Failed\x20to\x20request\x20device\x20authorization:\x20'+(g7?.['error_description']||g7?.['statusText']||'Unknown\x20error')),q['debug'](g7);else{let {device_code:g8,user_code:g9,verification_uri:ga,verification_uri_complete:gb,interval:gc=0x5,expires_in:ge}=g6;console['log'](''),console[kP(0x237)](O['cyan']('📱\x20Device\x20Authorization\x20Required')),console[kP(0x237)](''),console['log']('Please\x20visit:\x20'+O['underline'](O[kP(0x1c8)](ga))),console['log']('Enter\x20code:\x20'+O['bold'](O['green'](g9))),console['log'](''),await confirm({'message':'Open\x20browser\x20automatically?','default':!0x0})&&await Y(gb||ga),console['log'](O['gray']('Waiting\x20for\x20authorization\x20(expires\x20in\x20'+Math['floor'](ge/0x3c)+'\x20minutes)...'));let gf=await fL(g5,g8,fJ,gc);if(gf){await c2(gf);let {data:gg}=await g5['getSession']({'fetchOptions':{'headers':{'Authorization':'Bearer\x20'+gf[kP(0x26c)]}}});console['log'](O['green']('✅\x20Login\x20successful!\x20Logged\x20in\x20as\x20'+(gg?.['user']?.['name']||gg?.['user']?.['email']||'User')));}}}catch(gh){g4['stop'](),q['error']('Login\x20failed:\x20'+(gh instanceof Error?gh[kP(0x1fe)]:'Unknown\x20error'));}};async function fL(g4,g5,g6,g7){let g8=g7,g9=createSpinner('',{'color':'cyan'}),ga=0x0;return new Promise(gb=>{let gc=async()=>{const kQ=b;ga=(ga+0x1)%0x4,g9['update'](O['gray']('Polling\x20for\x20authorization'+'.'[kQ(0x1f3)](ga)+'\x20'['repeat'](0x3-ga))),g9[kQ(0x1e1)]()||g9['start']();try{let {data:ge,error:gf}=await g4['device']['token']({'grant_type':'urn:ietf:params:oauth:grant-type:device_code','device_code':g5,'client_id':g6,'fetchOptions':{'headers':{'user-agent':'Azot\x20Desktop'}}});if(ge?.[kQ(0x26c)]){g9['stop'](),gb(ge);return;}else{if(gf)switch(gf['error']){case'authorization_pending':break;case'slow_down':g8+=0x5,g9['update'](O[kQ(0x231)]('Slowing\x20down\x20polling\x20to\x20'+g8+'s'));break;case'access_denied':g9['stop'](),q['error']('Access\x20was\x20denied\x20by\x20the\x20user');break;case'expired_token':g9['stop'](),q['error']('The\x20device\x20code\x20has\x20expired.\x20Please\x20try\x20again.');break;default:g9['stop'](),q['error']('Error:\x20'+gf['error_description']);}}}catch(gg){g9['stop'](),q[kQ(0x15d)]('Network\x20error:\x20'+(gg instanceof Error?gg['message']:'Unknown\x20error'));return;}setTimeout(gc,g8*0x3e8);};setTimeout(gc,g8*0x3e8);});}const fM=async()=>{const kR=gP;q['info']('Logging\x20out...');let g4=await bS()['signOut']();g4['error']?q[kR(0x15d)]('Logout\x20failed:\x20'+g4['error']['message']):(q['info']('Logout\x20successful'),await c2({}));},fN={'command':'login\x20[extension]','describe':'Login\x20to\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20login\x20to\x20Azot\x20account)','builder':g4=>g4['option']('username',{'alias':'u','describe':'Username','type':'string'})['option']('password',{'alias':'p','describe':'Password','type':'string'})['option']('otp',{'alias':'o','describe':'One-time\x20password','type':'string'}),'handler':async g4=>{const kS=gP;let g5=g4['extension'],g6={'username':g4['username'],'password':g4['password'],'otp':g4[kS(0x13f)]};if(g5){let g7=new cg({'dirs':[I],'indexPath':n});await g7['init'](),await g7['discover'](),await g7['login'](g5,g6);}else fK();}},fO={'command':'list','aliases':['ls'],'describe':'Lists\x20information\x20about\x20installed/active\x20extensions','handler':async()=>{const kT=gP;let g4=await new cg({'indexPath':n})[kT(0x22b)]();if(!g4['infoList']['length'])return console[kT(0x237)]('No\x20added\x20extensions\x20found');for(let g5 of g4['infoList']){let g6=''+O['bold'](O['blue'](g5['name']['padEnd'](0xf))),g7=O['green'](g5['package']?.['version']);console['log'](g6+g7);}console['log']('\x0a'+O['dim']('Location:\x20'+J));}},fP=new Intl['RelativeTimeFormat']('en',{'style':'long'}),fQ=g4=>{const kU=gP;let g5=Math['floor'](g4/0x18),g6=Math['abs'](g5);return g6>0x16d?fP['format'](Math['floor'](g5/0x16d),kU(0x228)):g6>0x1e?fP['format'](Math['floor'](g5/0x1e),'month'):g6>0x7?fP['format'](Math['floor'](g5/0x7),'week'):g6>0x1?fP['format'](Math['floor'](g5),'day'):fP['format'](Math['floor'](g4),'hour');},fR=(g4,g5,g6)=>{const kV=gP;let g7=''+O['bold'](O['blue'](g4['padEnd'](0xf))),g8=O['green'](g5['padEnd'](0xa)),g9=O[kV(0x167)](g6);console['log'](g7+g8+g9);},fS={'command':'list-remote','aliases':[gP(0x1a3)],'describe':'List\x20all\x20available\x20extensions','handler':async()=>{const kW=gP;c3()['then'](g6=>Object[kW(0x225)](c1,g6));let g4=await cg['getAvailableExtensions'](),g5=Date['now']();for(let g6 of g4){let g7=g6['releases']['toSorted']((gb,gc)=>new Date(gc['createdAt'])['getTime']()-new Date(gb['createdAt'])['getTime']())['at'](0x0);if(!g7)continue;let g8=g7['createdAt'],g9=new Date(g8)['getTime']()-g5,ga=fQ(Math['floor'](g9/0x36ee80));fR(g6['name'],g7['version'],ga);}}},fT={'command':'logout\x20[extensions..]','describe':'Logout\x20from\x20extension\x20(or\x20if\x20no\x20extension\x20is\x20specified,\x20logout\x20from\x20Azot\x20account)','handler':async g4=>{let g5=g4['extensions'];if(g5?.['length']){let g6=new cg({'dirs':[I],'indexPath':n});await g6['init'](),await g6['discover'](),await g6['logout'](g5);}else fM();}},fU={'command':'settings\x20[key]\x20[value]','describe':'CLI\x20access\x20to\x20get/set\x20configuration\x20settings','handler':async g4=>{const kX=gP;let g5=new ay(j),g6=g4['key'],g7=g4['value'];if(g6&&g7){g5['set']({[g6]:g7}),console['log']('Setting\x20'+O['bold'](O['blue'](g6))+'\x20set\x20to\x20'+O['green'](g7));return;}else{if(g6){let g9=g5['get'](g6);console['log'](g9?'Setting\x20'+O[kX(0x25a)](O['blue'](g6))+kX(0x202)+O['green'](g9):'Setting\x20'+O['bold'](O['blue'](g6))+'\x20is\x20not\x20found');return;}}let g8=g5['getAll']();for(let [ga,gb]of Object['entries'](g8)){let gc=(''+ga)['padEnd'](0x19),ge=String(gb)['replaceAll']('{','{{')['replaceAll']('}','}}');console['log'](O['bold'](O['blue'](gc))+'\x20'+ge);}console['log']('\x0a'+O['dim']('Location:\x20'+j));}},fV={'command':'uninstall\x20<extensions..>','aliases':['rm'],'describe':'Uninstall\x20an\x20extension','handler':async g4=>{const kY=gP;let g5=g4['extensions'],g6=new cg({'dirs':[I],'indexPath':n});await g6[kY(0x22b)](),await g6['uninstall'](g5);}},fW={'command':'install\x20<extensions..>','aliases':['i'],'describe':'Install\x20extension','handler':async g4=>{let g5=g4['extensions'],g6=new cg({'dirs':[I],'indexPath':n});await g6['init'](),await g6['install'](g5);}},fX={'command':'logs','describe':'Show\x20logs\x20list','handler':async()=>{const kZ=gP;let g4=s,g5=await readdir(g4)['then'](g7=>g7['filter'](g8=>g8[kZ(0x1e6)]('.log'))),g6=g7=>join(g4,g7);g5['length']||q['info']('No\x20logs\x20found');for(let g7 of g5)q[kZ(0x1ac)](g6(g7));}};q['debug'](i);const fY=ab(process['argv']);q['debug'](H+'\x20'+fY['join']('\x20'));const fZ=new Set(['build','dev']);w['on']('error',g4=>{let g5=F(g4);q['error'](g5['message']);});const g0=O['magenta'](O['bold'](k))+'\x20is\x20'+h['description'][gP(0x232)](),g1=O['bold']('Usage:\x20$0\x20<command>\x20'+O['cyan']('[...options]')),g2=(g4,g5)=>{const l0=gP;let g6=g5 instanceof Error?g5:Error(String(g5));q['fatal'](g4+':\x20'+g6['message']),g6['stack']&&q[l0(0x113)](g6['stack']),rmSync(r,{'recursive':!0x0,'force':!0x0}),process['exit'](0x1);};process['on']('uncaughtException',g4=>{g2('Unexpected\x20error',g4);}),process['on'](gP(0x219),g4=>{g2('Unhandled\x20promise\x20rejection',g4);}),!c&&fZ['has'](fY[0x0]??'')&&g2('CLI\x20error',Error('The\x20`build`\x20and\x20`dev`\x20commands\x20are\x20unavailable\x20in\x20the\x20desktop-distributed\x20CLI.\x20Use\x20the\x20npm-installed\x20`azot`\x20package\x20in\x20a\x20Node.js\x20environment\x20instead.'));const g3=N(fY)['scriptName'](H)['usage'](g0+'\x0a\x0a'+g1)['command'](fI)['command'](fO)['command'](fS)['command'](fW)['command'](fV)[gP(0x243)](fN)['command'](fT)['command'](fU)['command'](fX)['option']('debug',{'describe':'Debug\x20mode','type':'boolean'})['wrap'](N()['terminalWidth']())['help']()['alias']('h','help')[gP(0x1d3)](!0x1)['version'](u)['updateStrings']({'Commands:':O['bold']('Commands:'),'Options:':O['bold']('Options:'),'default':O['dim']('default'),'aliases':O['dim']('aliases'),'boolean':O['dim']('boolean'),'string':O['dim']('string'),'number':O[gP(0x167)]('number')})['epilogue']('Learn\x20more\x20about\x20Azot:\x20'+O['magenta']('https://azot.mov')+'.');c&&g3['command'](ar)[gP(0x243)](as),g3['parseAsync']()['then'](async g4=>{await p(s);let g5=String(g4['_'][0x0]??'');g5==='dev'||g5==='build'&&g4['watch']===!0x0||process['exit'](0x0);})['catch'](g4=>{g2('CLI\x20error',g4);});export{};