@eryxenx/insta-chat 2.0.0 → 2.0.3

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +95 -8
  2. package/index.js +105 -1
  3. package/module/login.js +51 -1
  4. package/package.json +9 -2
  5. package/src/api/action/getAppState.js +19 -1
  6. package/src/api/action/getCookies.js +7 -1
  7. package/src/api/action/getCurrentUserID.js +7 -1
  8. package/src/api/action/setOptions.js +8 -1
  9. package/src/api/messaging/editMessage.js +19 -1
  10. package/src/api/messaging/markAsRead.js +7 -1
  11. package/src/api/messaging/resolvePhotoUrl.js +8 -1
  12. package/src/api/messaging/sendMessage.js +45 -1
  13. package/src/api/messaging/sendMessageSync.js +8 -1
  14. package/src/api/messaging/sendTypingIndicator.js +7 -1
  15. package/src/api/messaging/setMessageReaction.js +19 -1
  16. package/src/api/messaging/shareContact.js +19 -1
  17. package/src/api/messaging/unsendMessage.js +16 -1
  18. package/src/api/realtime/getInbox.js +7 -1
  19. package/src/api/realtime/listen.js +7 -1
  20. package/src/api/realtime/stopListening.js +7 -1
  21. package/src/api/threads/getThreadHistory.js +16 -1
  22. package/src/api/threads/getThreadInfo.js +59 -1
  23. package/src/api/threads/getThreadList.js +22 -1
  24. package/src/api/users/getUID.js +12 -1
  25. package/src/api/users/getUserInfo.js +37 -1
  26. package/src/api.js +253 -1
  27. package/src/app/InstaClient.js +352 -1
  28. package/src/app/InstaContext.js +46 -1
  29. package/src/app/createFcaClient.js +59 -1
  30. package/src/app/loadApiMethods.js +30 -1
  31. package/src/constants.js +53 -1
  32. package/src/cookies.js +41 -1
  33. package/src/deviceIdentity.js +31 -1
  34. package/src/events/normalizeEvent.js +142 -1
  35. package/src/http.js +381 -1
  36. package/src/messageContent.js +73 -1
  37. package/src/methods/inbox.js +464 -1
  38. package/src/methods/media.js +218 -1
  39. package/src/methods/message.js +115 -1
  40. package/src/methods/reactions.js +52 -1
  41. package/src/methods/thread.js +96 -1
  42. package/src/methods/typing.js +35 -1
  43. package/src/methods/user.js +33 -1
  44. package/src/session.js +94 -1
  45. package/src/threadDetail.js +36 -1
  46. package/src/utils/antiSuspension.js +269 -0
  47. package/src/utils/dataDir.js +11 -0
  48. package/src/utils/errors.js +106 -0
  49. package/src/utils/format.js +38 -1
  50. package/src/utils/messageStyle.js +57 -1
  51. package/src/utils/sessionGuard.js +93 -0
package/src/http.js CHANGED
@@ -4,4 +4,384 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- const _0x2d5f9a=_0xd8bb,_0x320ae2=_0xd8bb;(function(_0x3c6d5f,_0x346ca8){const _0xa02ef=_0xd8bb,_0xb7dde7=_0xd8bb,_0x38ecfa=_0x3c6d5f();while(!![]){try{const _0x120f1d=-parseInt(_0xa02ef(0x233,'euI1'))/0x1*(parseInt(_0xb7dde7(0x31e,'ClQ7'))/0x2)+parseInt(_0xb7dde7(0x2de,'cnMB'))/0x3+parseInt(_0xa02ef(0x245,'&HxM'))/0x4+parseInt(_0xa02ef(0x25b,'yo*g'))/0x5*(parseInt(_0xa02ef(0x34c,'iy]#'))/0x6)+parseInt(_0xb7dde7(0x21f,'UETT'))/0x7+parseInt(_0xa02ef(0x336,'x4au'))/0x8+-parseInt(_0xa02ef(0x323,'GwN#'))/0x9;if(_0x120f1d===_0x346ca8)break;else _0x38ecfa['push'](_0x38ecfa['shift']());}catch(_0x226f94){_0x38ecfa['push'](_0x38ecfa['shift']());}}}(_0xabb7,0x85b17));const axios=require(_0x2d5f9a(0x290,'A986')),crypto=require(_0x2d5f9a(0x354,'&$rC')),{wrapper}=require(_0x320ae2(0x31c,'cnMB')+_0x320ae2(0x217,'euI1')+_0x2d5f9a(0x240,'gUtm')+_0x320ae2(0x36a,'yo*g')),{CookieJar}=require(_0x2d5f9a(0x352,'92&l')+_0x320ae2(0x283,'iy]#')),USER_AGENT='Mozill'+_0x2d5f9a(0x364,'o2xZ')+_0x320ae2(0x2bd,'%L^P')+_0x320ae2(0x280,'seXc')+_0x320ae2(0x379,'9%AH')+_0x320ae2(0x22c,'8dHh')+_0x2d5f9a(0x347,'P80c')+_0x2d5f9a(0x376,'udfX')+_0x2d5f9a(0x2cd,'cnMB')+_0x320ae2(0x37a,'iy]#')+_0x2d5f9a(0x286,'ClQ7')+_0x320ae2(0x1e4,'9%AH')+'e\x20Geck'+'o)\x20Chr'+'ome/15'+_0x2d5f9a(0x2d7,'HuJN')+_0x320ae2(0x34f,'fjOo')+_0x320ae2(0x36c,'92&l')+_0x2d5f9a(0x242,'iy]#'),IG_APP_ID=_0x2d5f9a(0x2bc,'GwN#')+_0x320ae2(0x27b,'5Yu#')+_0x320ae2(0x2e1,'naeu'),ASBD_ID=_0x2d5f9a(0x24c,'%L^P'),ORIGIN=_0x2d5f9a(0x35a,'Zlzw')+_0x320ae2(0x244,'x4au')+_0x2d5f9a(0x30d,'m*jD')+_0x320ae2(0x320,'JSbH')+'m',QPL_ACTIVE_FLOW_IDS=_0x320ae2(0x32e,'9%AH')+_0x320ae2(0x2a7,'vAo8');function jazoest(_0x5e8985){const _0x5b9e72=_0x2d5f9a,_0x23d825=_0x320ae2,_0x48ab82={'vIJzj':function(_0x467ebb,_0x41f6a7){return _0x467ebb(_0x41f6a7);}};let _0x27cd8a=0x0;for(const _0x34d8ea of _0x48ab82[_0x5b9e72(0x1ff,'vAo8')](String,_0x5e8985))_0x27cd8a+=_0x34d8ea['charCo'+_0x23d825(0x319,'92&l')](0x0);return'2'+_0x27cd8a;}function _0xd8bb(_0x1037e4,_0x445e98){_0x1037e4=_0x1037e4-0x1d6;const _0xabb75c=_0xabb7();let _0xd8bb81=_0xabb75c[_0x1037e4];if(_0xd8bb['ysJlJr']===undefined){var _0x4b0e8e=function(_0x4a311e){const _0x25b32d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x46ae9e='',_0x4b7eb4='';for(let _0x523f9b=0x0,_0x5bf0bc,_0x10274b,_0x24c6c9=0x0;_0x10274b=_0x4a311e['charAt'](_0x24c6c9++);~_0x10274b&&(_0x5bf0bc=_0x523f9b%0x4?_0x5bf0bc*0x40+_0x10274b:_0x10274b,_0x523f9b++%0x4)?_0x46ae9e+=String['fromCharCode'](0xff&_0x5bf0bc>>(-0x2*_0x523f9b&0x6)):0x0){_0x10274b=_0x25b32d['indexOf'](_0x10274b);}for(let _0x8a78f1=0x0,_0x29fdde=_0x46ae9e['length'];_0x8a78f1<_0x29fdde;_0x8a78f1++){_0x4b7eb4+='%'+('00'+_0x46ae9e['charCodeAt'](_0x8a78f1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b7eb4);};const _0x1784d9=function(_0x4d7b72,_0x4ff17f){let _0x36b537=[],_0x30c5b3=0x0,_0x559896,_0x47dd57='';_0x4d7b72=_0x4b0e8e(_0x4d7b72);let _0x5d66ef;for(_0x5d66ef=0x0;_0x5d66ef<0x100;_0x5d66ef++){_0x36b537[_0x5d66ef]=_0x5d66ef;}for(_0x5d66ef=0x0;_0x5d66ef<0x100;_0x5d66ef++){_0x30c5b3=(_0x30c5b3+_0x36b537[_0x5d66ef]+_0x4ff17f['charCodeAt'](_0x5d66ef%_0x4ff17f['length']))%0x100,_0x559896=_0x36b537[_0x5d66ef],_0x36b537[_0x5d66ef]=_0x36b537[_0x30c5b3],_0x36b537[_0x30c5b3]=_0x559896;}_0x5d66ef=0x0,_0x30c5b3=0x0;for(let _0x530372=0x0;_0x530372<_0x4d7b72['length'];_0x530372++){_0x5d66ef=(_0x5d66ef+0x1)%0x100,_0x30c5b3=(_0x30c5b3+_0x36b537[_0x5d66ef])%0x100,_0x559896=_0x36b537[_0x5d66ef],_0x36b537[_0x5d66ef]=_0x36b537[_0x30c5b3],_0x36b537[_0x30c5b3]=_0x559896,_0x47dd57+=String['fromCharCode'](_0x4d7b72['charCodeAt'](_0x530372)^_0x36b537[(_0x36b537[_0x5d66ef]+_0x36b537[_0x30c5b3])%0x100]);}return _0x47dd57;};_0xd8bb['PCdAek']=_0x1784d9,_0xd8bb['IBUwXf']={},_0xd8bb['ysJlJr']=!![];}const _0x5111e1=_0xabb75c[0x0],_0x4bda83=_0x1037e4+_0x5111e1,_0x394f17=_0xd8bb['IBUwXf'][_0x4bda83];return!_0x394f17?(_0xd8bb['oVSWzT']===undefined&&(_0xd8bb['oVSWzT']=!![]),_0xd8bb81=_0xd8bb['PCdAek'](_0xd8bb81,_0x445e98),_0xd8bb['IBUwXf'][_0x4bda83]=_0xd8bb81):_0xd8bb81=_0x394f17,_0xd8bb81;}class HttpClient{constructor(_0x2dc902){const _0x34cb5b=_0x2d5f9a,_0x1bc2bd=_0x2d5f9a,_0x4ba008={'ZdToC':function(_0x488064,_0x1f8c41){return _0x488064(_0x1f8c41);}};this[_0x34cb5b(0x2ba,'GwN#')]=_0x2dc902;if(!this['seed'][_0x1bc2bd(0x1ea,'&HxM')+_0x34cb5b(0x238,'x4au')])this[_0x34cb5b(0x1df,'C1v8')][_0x1bc2bd(0x2f5,'naeu')+_0x1bc2bd(0x316,'iy]#')]=crypto[_0x1bc2bd(0x268,'MU29')+_0x1bc2bd(0x1ec,'CyUA')](0x10)[_0x1bc2bd(0x327,'cnMB')+'ng'](_0x1bc2bd(0x1f1,'X7@w'));this[_0x34cb5b(0x260,'h182')]=new CookieJar();for(const [_0x2599b7,_0x4df072]of Object[_0x1bc2bd(0x311,'oi)Z')+'s'](this[_0x1bc2bd(0x22b,'P80c')])){try{this[_0x34cb5b(0x2ab,'q]^5')][_0x1bc2bd(0x30f,'HuJN')+_0x34cb5b(0x25f,'o2xZ')+'c'](_0x2599b7+'='+_0x4df072+(_0x1bc2bd(0x1f0,'9%AH')+_0x34cb5b(0x2ac,'UETT')+_0x1bc2bd(0x1ee,'udfX')+_0x34cb5b(0x326,'x4au')+_0x1bc2bd(0x207,'C1v8')+'/'),ORIGIN);}catch(_0x381534){}}this[_0x34cb5b(0x343,'Zlzw')]=_0x4ba008[_0x1bc2bd(0x310,'CyUA')](wrapper,axios[_0x34cb5b(0x38f,'6r&3')]({'jar':this['jar'],'withCredentials':!![],'headers':{'User-Agent':USER_AGENT,'X-IG-App-ID':IG_APP_ID},'timeout':0x7530}));}[_0x320ae2(0x2db,'92&l')+_0x320ae2(0x324,'x4au')](_0x44c17f){const _0x3fb7f3=_0x320ae2,_0x3e35b3=_0x320ae2,_0xab3ad6=this[_0x3fb7f3(0x381,'7b4U')][_0x3fb7f3(0x20d,'HuJN')+_0x3e35b3(0x2af,'I)ge')+'nc'](ORIGIN),_0x3a6746=_0xab3ad6[_0x3e35b3(0x369,'92&l')](_0x3c4488=>_0x3c4488['key']===_0x44c17f);return _0x3a6746?_0x3a6746[_0x3e35b3(0x32d,'E)o8')]:this['seed'][_0x44c17f];}[_0x2d5f9a(0x1e9,'GwN#')](){const _0x11aef1=_0x2d5f9a,_0x14959a=_0x320ae2;return crypto[_0x11aef1(0x1ed,'GwN#')+_0x11aef1(0x38d,'yo*g')]();}[_0x320ae2(0x2b5,'JSbH')+_0x320ae2(0x398,'C1v8')+_0x2d5f9a(0x22d,'*NVm')](){const _0x4f09bf=_0x320ae2,_0x46fa0c=_0x2d5f9a,_0x4cc21f={'ECNoY':function(_0x138662,_0x28b4d8){return _0x138662(_0x28b4d8);},'yrfcz':function(_0x5d203a,_0x142323){return _0x5d203a|_0x142323;}},_0x50e0b0=_0x4cc21f[_0x4f09bf(0x28d,'92&l')](BigInt,Date[_0x46fa0c(0x269,'UETT')]()),_0x274184=_0x4cc21f[_0x4f09bf(0x258,'5Yu#')](BigInt,Math[_0x4f09bf(0x265,'Zlzw')](Math[_0x4f09bf(0x215,'NWoS')]()*0x400000));return _0x4cc21f[_0x46fa0c(0x291,'iy]#')](_0x50e0b0<<0x16n,_0x274184)[_0x4f09bf(0x2df,'E)o8')+'ng']();}[_0x2d5f9a(0x223,'92&l')+_0x320ae2(0x35b,'*NVm')+'rams'](_0x2b9060){const _0xd86221=_0x2d5f9a,_0x116f23=_0x320ae2,_0x229b74={'DONFc':function(_0x3583dd,_0x35ec16){return _0x3583dd||_0x35ec16;}};this['sessio'+'n']=_0x229b74[_0xd86221(0x257,'X7@w')](_0x2b9060,null);if(_0x2b9060){if(_0x2b9060[_0x116f23(0x22a,'92&l')])this[_0x116f23(0x22a,'92&l')]=_0x2b9060[_0xd86221(0x36b,'x4au')];if(_0x2b9060[_0x116f23(0x23c,'yo*g')+'g'])this[_0xd86221(0x1ef,'ClQ7')]=_0x2b9060[_0x116f23(0x1fd,'&HxM')+'g'];if(_0x2b9060[_0xd86221(0x213,'CyUA')+'t'])this[_0x116f23(0x380,'udfX')+'t']=_0x2b9060['jazoes'+'t'];}}[_0x2d5f9a(0x362,'O*lC')+'sionPa'+_0x2d5f9a(0x321,'fjOo')](){const _0x42581c=_0x2d5f9a,_0x254d81=_0x320ae2;return!!(this[_0x42581c(0x1da,'udfX')+'n']&&this[_0x42581c(0x2ee,'C1v8')+'n'][_0x42581c(0x2c2,'U4@9')]&&this[_0x42581c(0x2a5,'gUtm')+'n'][_0x42581c(0x2f0,'tVD(')]);}async[_0x320ae2(0x2ae,'O*lC')+_0x2d5f9a(0x261,'E)o8')+_0x2d5f9a(0x2ed,'9Uze')](){const _0x17dd4a=_0x320ae2,_0x1a23ae=_0x2d5f9a,_0x11e97f={'pKHJu':_0x17dd4a(0x239,'&HxM'),'Zozjo':_0x1a23ae(0x24b,'GwN#')+'te','ivxeS':_0x17dd4a(0x331,'vJtS')+'nt','POyHj':function(_0x5e2cf5,_0x52b232){return _0x5e2cf5===_0x52b232;},'ytUpQ':_0x1a23ae(0x27d,'Zlzw')+'g','zuGFe':_0x17dd4a(0x270,'*NVm')+'t'};if(this['fbDtsg']&&this[_0x1a23ae(0x28c,'&HxM')])return{'fbDtsg':this[_0x1a23ae(0x24e,'m*jD')],'lsd':this[_0x17dd4a(0x35f,'C1v8')]};const _0x5257bb=await this[_0x17dd4a(0x2d4,'vJtS')][_0x17dd4a(0x279,'x4au')](ORIGIN+'/',{'headers':{'Sec-Fetch-Site':_0x11e97f[_0x1a23ae(0x1dd,'O*lC')],'Sec-Fetch-Mode':_0x11e97f['Zozjo'],'Sec-Fetch-Dest':_0x11e97f[_0x1a23ae(0x21b,'ClQ7')]}}),_0x10f189=_0x11e97f[_0x17dd4a(0x2f7,'A986')](typeof _0x5257bb[_0x1a23ae(0x266,'o2xZ')],_0x17dd4a(0x2c8,'Ir7o'))?_0x5257bb[_0x1a23ae(0x20e,'P80c')]:'',_0x3dc4ba=_0x10f189[_0x1a23ae(0x2ce,'q]^5')](/"LSD",\[\],\{"token":"([^"]+)"/)||_0x10f189['match'](/lsd":"([^"]+)"/);if(_0x3dc4ba)this[_0x1a23ae(0x272,'euI1')]=_0x3dc4ba[0x1];const _0x29c805=_0x10f189[_0x1a23ae(0x339,'7b4U')](/DTSGInitialData",\[\],\{"token":"([^"]+)"/)||_0x10f189[_0x1a23ae(0x2d6,'C1v8')](/"fb_dtsg":"([^"]+)"/);if(_0x29c805)this[_0x1a23ae(0x346,'euI1')]=_0x29c805[0x1];if(!this[_0x1a23ae(0x35c,'U4@9')])this[_0x17dd4a(0x2ad,'9Uze')]=this[_0x1a23ae(0x2a2,'naeu')+'kie'](_0x11e97f[_0x1a23ae(0x24d,'&$rC')]);this[_0x17dd4a(0x27a,'gUtm')+'t']=this[_0x17dd4a(0x30e,'5Yu#')+_0x17dd4a(0x34d,'udfX')](_0x11e97f[_0x1a23ae(0x2dd,'x4au')])||this[_0x17dd4a(0x263,'X7@w')+'t'];if(this[_0x1a23ae(0x37d,'UETT')]&&!this[_0x17dd4a(0x27e,'&HxM')+'t'])this[_0x17dd4a(0x27e,'&HxM')+'t']=jazoest(this[_0x1a23ae(0x363,'gUtm')]);return{'fbDtsg':this['fbDtsg'],'lsd':this[_0x17dd4a(0x272,'euI1')]};}[_0x2d5f9a(0x349,'U4@9')+_0x320ae2(0x287,'I)ge')](_0x13dcc8={}){const _0x98918d=_0x2d5f9a,_0x3a993c=_0x320ae2,_0x5f47bc={'AEcly':_0x98918d(0x20a,'vJtS')+_0x3a993c(0x28a,'tVD('),'oQngK':_0x98918d(0x234,'P80c'),'XWrDB':_0x3a993c(0x38e,'CyUA'),'CukYH':_0x98918d(0x295,'euI1'),'ruMaE':_0x98918d(0x382,'vAo8')+_0x3a993c(0x1fe,'tVD(')+_0x98918d(0x345,'CyUA')+_0x98918d(0x20c,'euI1')+_0x3a993c(0x360,'*NVm')+_0x98918d(0x201,'MU29')+_0x98918d(0x2c1,'vJtS')+_0x3a993c(0x386,'U4@9')+_0x98918d(0x253,'C1v8')+_0x3a993c(0x2d1,'UXbm')+_0x98918d(0x34a,'tVD('),'MabBs':'\x22Windo'+_0x3a993c(0x204,'7b4U'),'svOQV':'XMLHtt'+_0x98918d(0x29d,'%L^P')+'st'},_0x1b719e=this[_0x98918d(0x2d2,'euI1')+'n']||{};return{'Cookie':this[_0x98918d(0x236,'euI1')+_0x3a993c(0x1d7,'HuJN')+'r'](),'User-Agent':USER_AGENT,'X-IG-App-ID':IG_APP_ID,'X-Asbd-Id':ASBD_ID,'X-CSRFToken':this['getCoo'+_0x3a993c(0x214,'6r&3')](_0x5f47bc[_0x3a993c(0x2d0,'Zlzw')])||'','X-Fb-Lsd':_0x1b719e[_0x3a993c(0x361,'%L^P')]||this[_0x3a993c(0x33b,'I)ge')]||'','X-IG-WWW-Claim':'0','X-IG-Max-Touch-Points':'0','Accept':_0x5f47bc[_0x3a993c(0x288,'naeu')],'Accept-Language':_0x98918d(0x301,'7b4U')+_0x3a993c(0x276,'I)ge')+'.9','Origin':ORIGIN,'Sec-Fetch-Site':_0x3a993c(0x32c,'vJtS')+_0x98918d(0x39d,'cnMB'),'Sec-Fetch-Mode':_0x5f47bc[_0x3a993c(0x2fd,'vAo8')],'Sec-Fetch-Dest':_0x5f47bc[_0x98918d(0x28f,'&HxM')],'Sec-Ch-Ua':_0x5f47bc[_0x3a993c(0x21a,'7b4U')],'Sec-Ch-Ua-Mobile':'?0','Sec-Ch-Ua-Platform':_0x5f47bc[_0x98918d(0x2a0,'O*lC')],'X-Requested-With':_0x5f47bc[_0x3a993c(0x21d,'vJtS')],..._0x13dcc8};}[_0x2d5f9a(0x21c,'5Yu#')+'eHeade'+'r'](){const _0x5c889a=_0x2d5f9a,_0x5291de=_0x2d5f9a,_0x333628={};for(const [_0x4025f6,_0x1a7195]of Object[_0x5c889a(0x262,'Ir7o')+'s'](this[_0x5c889a(0x357,'QG^6')]||{}))_0x333628[_0x4025f6]=_0x1a7195;for(const _0xca6117 of this['jar'][_0x5c889a(0x342,'O*lC')+_0x5291de(0x306,'seXc')+'nc'](ORIGIN))_0x333628[_0xca6117[_0x5c889a(0x2c9,'A986')]]=_0xca6117[_0x5291de(0x2ec,'%L^P')];return Object[_0x5c889a(0x221,'P80c')+'s'](_0x333628)[_0x5291de(0x30c,'vJtS')](([_0x4f1116,_0xdcc203])=>_0x4f1116+'='+_0xdcc203)[_0x5c889a(0x224,'*NVm')](';\x20');}[_0x320ae2(0x29a,'P80c')+_0x2d5f9a(0x322,'q]^5')+'ms'](_0x295de0){const _0x8a120c=_0x2d5f9a,_0x288985=_0x320ae2,_0x2d4e8b={'qgXEs':_0x8a120c(0x249,'*NVm'),'MqogW':function(_0x158ae9,_0x2c30e3){return _0x158ae9(_0x2c30e3);},'CmXap':_0x8a120c(0x277,'yo*g')+_0x288985(0x2c0,'E)o8')+_0x288985(0x2e4,'vJtS')+'sDirec'+_0x288985(0x337,'tVD(')+_0x288985(0x1e6,'cnMB'),'RYvpC':function(_0x1306f9,_0x7d2c){return _0x1306f9===_0x7d2c;},'lfAtU':_0x8a120c(0x375,'O*lC'),'oFEnE':function(_0x14c512,_0x3f2c79){return _0x14c512!==_0x3f2c79;}},_0x2d18c2=this[_0x8a120c(0x220,'m*jD')+'n']||{},_0x425ecd={'av':_0x2d18c2['av'],'__d':_0x288985(0x250,'HuJN'),'__user':'0','__a':'1','__req':this[_0x8a120c(0x23a,'Zlzw')+'eq'](),'__hs':_0x2d18c2[_0x8a120c(0x273,'h182')],'dpr':_0x2d18c2[_0x8a120c(0x206,'iy]#')],'__ccg':_0x2d18c2[_0x288985(0x32f,'MD!a')],'__rev':_0x2d18c2[_0x8a120c(0x28e,'&HxM')],'__s':_0x2d18c2[_0x288985(0x1f5,'h182')],'__hsi':_0x2d18c2[_0x8a120c(0x368,'&$rC')],'__dyn':_0x2d18c2[_0x8a120c(0x2c4,'naeu')],'__csr':_0x2d18c2[_0x8a120c(0x38b,'x4au')],'__hsdp':_0x2d18c2[_0x288985(0x202,'HuJN')],'__hblp':_0x2d18c2[_0x288985(0x2e0,'q]^5')],'__sjsp':_0x2d18c2[_0x288985(0x259,'U4@9')],'__comet_req':_0x2d18c2[_0x8a120c(0x37c,'6r&3')+_0x8a120c(0x2a3,'HuJN')],'fb_dtsg':_0x2d18c2[_0x8a120c(0x36f,'Ir7o')+'g']||this[_0x288985(0x335,'Zlzw')],'jazoest':_0x2d18c2[_0x8a120c(0x308,'MD!a')+'t']||this[_0x8a120c(0x27e,'&HxM')+'t'],'lsd':_0x2d18c2[_0x288985(0x28c,'&HxM')]||this[_0x288985(0x272,'euI1')],'__spin_r':_0x2d18c2[_0x8a120c(0x27f,'GwN#')+'_r'],'__spin_b':_0x2d18c2[_0x288985(0x211,'*NVm')+'_b'],'__spin_t':_0x2d18c2[_0x288985(0x371,'o2xZ')+'_t'],'__crn':_0x2d4e8b[_0x288985(0x2bb,'A986')]},_0x51053c={};for(const [_0x142d7a,_0x2c87f]of Object[_0x8a120c(0x350,'seXc')+'s']({..._0x425ecd,..._0x295de0})){if(_0x2d4e8b[_0x288985(0x1d8,'h182')](_0x288985(0x1fc,'udfX'),_0x2d4e8b[_0x288985(0x205,'X7@w')])){this[_0x288985(0x23e,'6r&3')]=_0xbbf0eb;if(!this[_0x8a120c(0x27c,'euI1')][_0x8a120c(0x271,'vAo8')+'ken'])this[_0x8a120c(0x39c,'MD!a')][_0x288985(0x2f5,'naeu')+_0x8a120c(0x2b6,'C1v8')]=_0x42550e[_0x288985(0x1ed,'GwN#')+_0x288985(0x391,'HuJN')](0x10)[_0x8a120c(0x2fe,'&$rC')+'ng'](_0x2d4e8b['qgXEs']);this[_0x8a120c(0x39a,'I)ge')]=new _0x3c902e();for(const [_0x4ec69f,_0x46cfc1]of _0x37d350[_0x8a120c(0x218,'92&l')+'s'](this[_0x8a120c(0x341,'E)o8')])){try{this[_0x288985(0x340,'UXbm')][_0x288985(0x2be,'Ir7o')+_0x8a120c(0x312,'euI1')+'c'](_0x4ec69f+'='+_0x46cfc1+(_0x288985(0x20f,'x4au')+_0x288985(0x358,'seXc')+_0x8a120c(0x2f2,'%L^P')+'m.com;'+_0x8a120c(0x389,'E)o8')+'/'),_0x196f53);}catch(_0x44594e){}}this[_0x288985(0x35d,'ClQ7')]=_0x2d4e8b[_0x288985(0x2e5,'A986')](_0x1792dc,_0x2b84d7['create']({'jar':this[_0x8a120c(0x1dc,'CyUA')],'withCredentials':!![],'headers':{'User-Agent':_0x4c5c44,'X-IG-App-ID':_0x2a3808},'timeout':0x7530}));}else{if(_0x2c87f!==undefined&&_0x2d4e8b[_0x8a120c(0x284,'vJtS')](_0x2c87f,null)&&_0x2d4e8b[_0x288985(0x251,'7b4U')](_0x2c87f,''))_0x51053c[_0x142d7a]=_0x2c87f;}}return _0x51053c;}[_0x2d5f9a(0x227,'h182')+'eq'](){const _0x3c92a7=_0x320ae2,_0x5ea248=_0x2d5f9a,_0x1a982e={'QFble':function(_0xb63c5e,_0x255fa8){return _0xb63c5e+_0x255fa8;}};return this['_req']=_0x1a982e[_0x3c92a7(0x2d5,'UXbm')](this[_0x5ea248(0x1d6,'Zlzw')]||0x0,0x1),this[_0x5ea248(0x355,'udfX')][_0x3c92a7(0x2fb,'o2xZ')+'ng'](0x24);}async[_0x320ae2(0x35e,'O*lC')](_0x482637,_0x5bca54){const _0x586917=_0x2d5f9a,_0x2faac1=_0x2d5f9a,_0x4030ab={'mzhAm':function(_0x298a91,_0x436403){return _0x298a91||_0x436403;},'sLQSy':function(_0x130313,_0x140e05){return _0x130313!==_0x140e05;}},_0x42c93d={};for(const [_0x3c0447,_0x52f0f7]of Object[_0x586917(0x372,'&HxM')+'s'](_0x4030ab[_0x2faac1(0x1eb,'*NVm')](_0x5bca54,{}))){if(_0x4030ab[_0x586917(0x26a,'6r&3')](_0x52f0f7,undefined)&&_0x52f0f7!==null)_0x42c93d[_0x3c0447]=_0x52f0f7;}const _0x22ffbd=await this[_0x586917(0x2cb,'MU29')][_0x2faac1(0x279,'x4au')](_0x482637,{'params':_0x42c93d,'headers':this[_0x586917(0x29e,'NWoS')+_0x2faac1(0x396,'vJtS')]()});return _0x22ffbd['data'];}async[_0x2d5f9a(0x2f3,'*NVm')+_0x320ae2(0x28b,'vJtS')](){const _0x63f15f=_0x320ae2,_0x4f8a67=_0x320ae2,_0x5b9c3d={'jAMjm':function(_0x5bbb97,_0x489777){return _0x5bbb97+_0x489777;},'gkvzO':function(_0x3a645d,_0x333fa6){return _0x3a645d!==_0x333fa6;},'ckntP':_0x63f15f(0x1e7,'QG^6'),'XVRwY':function(_0x3dc2d0,_0x2d3491){return _0x3dc2d0(_0x2d3491);}};try{if(_0x5b9c3d[_0x4f8a67(0x200,'P80c')](_0x5b9c3d[_0x4f8a67(0x2e7,'JSbH')],_0x5b9c3d[_0x63f15f(0x397,'o2xZ')]))return this[_0x63f15f(0x2bf,'tVD(')]=_0x5b9c3d[_0x63f15f(0x2d8,'CyUA')](this[_0x4f8a67(0x26d,'NWoS')]||0x0,0x1),this[_0x4f8a67(0x29b,'vJtS')][_0x63f15f(0x2e8,'udfX')+'ng'](0x24);else{if(!this[_0x63f15f(0x229,'9%AH')+_0x4f8a67(0x2e2,'gUtm')+_0x4f8a67(0x1fa,'naeu')]())await this[_0x63f15f(0x23b,'HuJN')+_0x63f15f(0x393,'92&l')+_0x4f8a67(0x254,'I)ge')]();const _0x3277d2=await this[_0x4f8a67(0x37e,'6r&3')+_0x63f15f(0x256,'Zlzw')](_0x63f15f(0x2c5,'NWoS')+'tureLi'+_0x63f15f(0x384,'MU29')+_0x63f15f(0x281,'A986')+_0x63f15f(0x29f,'JSbH'),_0x63f15f(0x313,'seXc')+_0x4f8a67(0x1fb,'fjOo')+_0x4f8a67(0x33c,'CyUA'),{},ORIGIN+('/direc'+_0x63f15f(0x366,'h182')+'x/'));return _0x5b9c3d[_0x4f8a67(0x24f,'C1v8')](Boolean,_0x3277d2&&_0x3277d2[_0x63f15f(0x37b,'A986')]);}}catch(_0x2aa019){return![];}}async['postFo'+'rm'](_0x335381,_0x13b1a0){const _0x2d3744=_0x2d5f9a,_0x7727de=_0x320ae2,_0x2b2aef=new URLSearchParams(_0x13b1a0)[_0x2d3744(0x1e2,'&HxM')+'ng'](),_0x5232f2=await this[_0x2d3744(0x2f9,'gUtm')][_0x2d3744(0x2f1,'HuJN')](_0x335381,_0x2b2aef,{'headers':this[_0x7727de(0x315,'m*jD')+_0x2d3744(0x1e1,'CyUA')]({'Content-Type':_0x7727de(0x209,'NWoS')+_0x7727de(0x2ff,'NWoS')+_0x7727de(0x309,'P80c')+'form-u'+_0x7727de(0x2c6,'gUtm')+_0x2d3744(0x285,'8dHh')+_0x2d3744(0x32b,'NWoS')+'=UTF-8'})});return _0x5232f2[_0x2d3744(0x2d3,'cnMB')];}async[_0x2d5f9a(0x235,'X7@w')+_0x320ae2(0x30b,'JSbH')](_0x37f778,_0x5d98d0,_0x2c8516,_0x22fdf7){const _0x45d850=_0x2d5f9a,_0x2a31a5=_0x320ae2,_0x536fdd={'xohHA':_0x45d850(0x247,'&HxM')+'odern','dkuee':_0x45d850(0x2aa,'gUtm'),'bBCZH':_0x45d850(0x25c,'h182')+_0x2a31a5(0x333,'o2xZ')+_0x45d850(0x292,'cnMB')+_0x2a31a5(0x278,'UETT')+'rlenco'+_0x45d850(0x246,'C1v8')};if(!this[_0x45d850(0x1f8,'vAo8')+_0x45d850(0x34b,'iy]#')+_0x2a31a5(0x23f,'92&l')]())await this['bootst'+'rapTok'+_0x45d850(0x338,'q]^5')]();const _0x237198=new URLSearchParams(this[_0x45d850(0x228,'h182')+_0x45d850(0x387,'MD!a')+'ms']({'fb_api_caller_class':_0x536fdd[_0x2a31a5(0x230,'GwN#')],'fb_api_req_friendly_name':_0x37f778,'server_timestamps':_0x536fdd['dkuee'],'qpl_active_flow_ids':QPL_ACTIVE_FLOW_IDS,'fb_api_analytics_tags':JSON[_0x2a31a5(0x359,'oi)Z')+_0x2a31a5(0x334,'U4@9')]([_0x2a31a5(0x307,'udfX')+'tive_f'+_0x2a31a5(0x33d,'P80c')+'s='+QPL_ACTIVE_FLOW_IDS]),'variables':JSON[_0x45d850(0x303,'C1v8')+_0x45d850(0x26c,'iy]#')](_0x2c8516),'doc_id':_0x5d98d0})),_0x47273d=await this[_0x2a31a5(0x2c7,'UXbm')][_0x2a31a5(0x252,'naeu')](ORIGIN+(_0x45d850(0x36d,'GwN#')+_0x2a31a5(0x33e,'GwN#')),_0x237198[_0x2a31a5(0x2b0,'Ir7o')+'ng'](),{'headers':this[_0x2a31a5(0x29e,'NWoS')+_0x45d850(0x298,'tVD(')]({'Content-Type':_0x536fdd['bBCZH'],'X-Fb-Friendly-Name':_0x37f778,'Referer':_0x22fdf7||ORIGIN+(_0x45d850(0x1f9,'7b4U')+_0x45d850(0x344,'8dHh')+'x/')})});return _0x47273d[_0x2a31a5(0x328,'C1v8')];}async[_0x320ae2(0x377,'JSbH')+_0x320ae2(0x32a,'C1v8')](_0xab0040,_0x46ecbc,{filename:_0x3a81d9,contentType:_0x59ed77,referer:_0x86d644,typeHeader:_0x2211f3}={}){const _0x3f7e1f=_0x320ae2,_0x4db031=_0x2d5f9a,_0x45d7fc={'twEYM':function(_0xb4f45e,_0x2cb021){return _0xb4f45e||_0x2cb021;},'HGrGr':_0x3f7e1f(0x1d9,'HuJN')+_0x3f7e1f(0x1f4,'euI1')+_0x3f7e1f(0x293,'oi)Z')+_0x4db031(0x390,'o2xZ'),'EcXqK':function(_0x1b0bf4,_0x31c0f1){return _0x1b0bf4(_0x31c0f1);},'MRWXg':_0x4db031(0x231,'fjOo'),'OzPja':_0x4db031(0x2fa,'euI1'),'dlEHl':_0x4db031(0x399,'X7@w')+_0x4db031(0x22f,'92&l')+_0x3f7e1f(0x1e8,'6r&3')};if(!this[_0x4db031(0x348,'x4au')+_0x3f7e1f(0x318,'ClQ7')+_0x3f7e1f(0x1db,'iy]#')]())await this[_0x3f7e1f(0x22e,'oi)Z')+_0x3f7e1f(0x2a1,'vJtS')+_0x3f7e1f(0x25d,'Zlzw')]();const _0x3308d7=new URLSearchParams(this[_0x3f7e1f(0x2b3,'tVD(')+_0x3f7e1f(0x332,'GwN#')+'ms']({})),_0x2d2b55=_0x4db031(0x1f7,'U4@9')+'//rupl'+_0x3f7e1f(0x25a,'euI1')+_0x4db031(0x2ea,'&$rC')+_0x4db031(0x267,'P80c')+_0xab0040+'/'+crypto['random'+'UUID']()+'?'+_0x3308d7[_0x3f7e1f(0x294,'6r&3')+'ng'](),_0x422b73=this[_0x4db031(0x300,'iy]#')+'kie'](_0x3f7e1f(0x1e3,'x4au')+_0x3f7e1f(0x31b,'%L^P'))||'',_0x3188f5={'Content-Type':_0x45d7fc[_0x4db031(0x36e,'9Uze')](_0x59ed77,_0x45d7fc[_0x3f7e1f(0x2b7,'udfX')]),'X-Entity-Type':_0x59ed77||_0x45d7fc['HGrGr'],'X-Entity-Length':_0x45d7fc[_0x3f7e1f(0x385,'O*lC')](String,_0x46ecbc['length']),'X-Entity-Name':_0x45d7fc[_0x3f7e1f(0x264,'UETT')](_0x3a81d9,_0x45d7fc[_0x3f7e1f(0x370,'&$rC')]),'X-IG-D':_0x45d7fc[_0x3f7e1f(0x1f6,'P80c')],'X-IG-Max-Touch-Points':'0','Offset':'0','X-Fb-Qpl-Active-Flows':_0x4db031(0x304,'&HxM')+_0x4db031(0x2d9,'9%AH'),'Sec-Fetch-Site':_0x4db031(0x274,'MU29')+_0x3f7e1f(0x2a9,'MD!a'),'Referer':_0x86d644||ORIGIN+'/'};if(_0x422b73)_0x3188f5[_0x45d7fc[_0x3f7e1f(0x219,'naeu')]]=String(_0x422b73);if(_0x2211f3)_0x3188f5[_0x2211f3]=_0x4db031(0x232,'yo*g')+_0x4db031(0x289,'h182')+_0x4db031(0x212,'5Yu#');const _0x5c716d=await this[_0x4db031(0x374,'JSbH')]['post'](_0x2d2b55,_0x46ecbc,{'headers':this[_0x4db031(0x317,'iy]#')+_0x3f7e1f(0x392,'7b4U')](_0x3188f5),'maxBodyLength':Infinity,'maxContentLength':Infinity});return _0x5c716d[_0x4db031(0x2cc,'oi)Z')];}async[_0x320ae2(0x2e3,'Ir7o')+_0x320ae2(0x367,'fjOo')+'t'](_0x1421e8,_0x347f9f,_0x23288f){const _0x369b5d=_0x2d5f9a,_0x3e5600=_0x320ae2,_0x1a35e6={'edokI':function(_0x3f3e9c,_0x361550){return _0x3f3e9c+_0x361550;},'hlOzs':function(_0x103182,_0x56e95c){return _0x103182(_0x56e95c);},'bhyOP':_0x369b5d(0x2f8,'ClQ7')+_0x369b5d(0x2b4,'h182')+_0x3e5600(0x394,'CyUA')+_0x3e5600(0x23d,'9%AH'),'AHLJs':_0x369b5d(0x2f4,'vAo8')};if(!this[_0x3e5600(0x2e6,'fjOo')+_0x369b5d(0x1de,'euI1')+_0x3e5600(0x282,'vJtS')]())await this[_0x369b5d(0x373,'seXc')+'rapTok'+_0x369b5d(0x38a,'X7@w')]();const _0x3f5020=_0x3e5600(0x314,'&$rC')+_0x3e5600(0x39b,'U4@9')+_0x369b5d(0x1f2,'cnMB')+'dary'+crypto[_0x3e5600(0x2b8,'MD!a')+_0x3e5600(0x210,'P80c')](0xc)[_0x369b5d(0x33a,'oi)Z')+'ng'](_0x369b5d(0x2cf,'yo*g')),_0x4e86af=[];for(const _0x56855e of _0x347f9f){_0x4e86af[_0x3e5600(0x1e0,'Zlzw')](Buffer['from']('--'+_0x3f5020+'\x0d\x0a'));let _0x573cc6=_0x3e5600(0x2b1,'tVD(')+_0x3e5600(0x241,'tVD(')+_0x3e5600(0x37f,'5Yu#')+_0x369b5d(0x38c,'yo*g')+_0x369b5d(0x31d,'6r&3')+_0x3e5600(0x203,'oi)Z')+'=\x22'+_0x56855e[_0x3e5600(0x305,'UXbm')]+'\x22';if(_0x56855e[_0x369b5d(0x30a,'GwN#')+'me'])_0x573cc6+=';\x20file'+_0x369b5d(0x2b2,'naeu')+_0x56855e[_0x3e5600(0x26f,'vAo8')+'me']+'\x22';_0x4e86af[_0x369b5d(0x2ca,'C1v8')](Buffer[_0x369b5d(0x20b,'naeu')](_0x1a35e6['edokI'](_0x573cc6,'\x0d\x0a')));if(_0x56855e['conten'+_0x3e5600(0x208,'7b4U')])_0x4e86af[_0x3e5600(0x395,'&HxM')](Buffer['from']('Conten'+_0x369b5d(0x2a4,'oi)Z')+':\x20'+_0x56855e[_0x3e5600(0x216,'9%AH')+'tType']+'\x0d\x0a'));_0x4e86af['push'](Buffer[_0x3e5600(0x31a,'9%AH')]('\x0d\x0a')),_0x4e86af[_0x369b5d(0x2a8,'ClQ7')](Buffer['isBuff'+'er'](_0x56855e[_0x3e5600(0x2da,'oi)Z')])?_0x56855e[_0x369b5d(0x237,'C1v8')]:Buffer[_0x369b5d(0x26e,'iy]#')](_0x1a35e6[_0x369b5d(0x378,'q]^5')](String,_0x56855e[_0x3e5600(0x2ef,'cnMB')]))),_0x4e86af[_0x369b5d(0x2a6,'E)o8')](Buffer[_0x369b5d(0x24a,'oi)Z')]('\x0d\x0a'));}_0x4e86af['push'](Buffer[_0x3e5600(0x383,'6r&3')]('--'+_0x3f5020+_0x369b5d(0x1e5,'euI1')));const _0xf7a4eb=Buffer[_0x3e5600(0x325,'MD!a')](_0x4e86af),_0x491b9c=_0x347f9f[_0x369b5d(0x353,'X7@w')](_0x35d1a6=>_0x35d1a6[_0x369b5d(0x2dc,'HuJN')+'me'])||_0x347f9f[0x0],_0x47c365=new URLSearchParams(this[_0x3e5600(0x2fc,'cnMB')+_0x3e5600(0x25e,'P80c')+'ms']({'hl':'en'})),_0x4b7c79=await this[_0x3e5600(0x2eb,'MD!a')][_0x3e5600(0x31f,'&HxM')](_0x1421e8+'?'+_0x47c365[_0x369b5d(0x33a,'oi)Z')+'ng'](),_0xf7a4eb,{'headers':this[_0x3e5600(0x297,'9Uze')+_0x369b5d(0x243,'cnMB')]({'Content-Type':_0x3e5600(0x388,'I)ge')+_0x369b5d(0x2f6,'%L^P')+_0x3e5600(0x2c3,'x4au')+_0x369b5d(0x222,'HuJN')+_0x3e5600(0x21e,'fjOo')+_0x3f5020,'X-Entity-Type':_0x491b9c?.[_0x369b5d(0x330,'*NVm')+_0x369b5d(0x299,'MD!a')]||_0x1a35e6[_0x369b5d(0x329,'CyUA')],'X-Entity-Length':_0x1a35e6[_0x369b5d(0x26b,'GwN#')](String,_0x491b9c?.[_0x369b5d(0x226,'Ir7o')]?.[_0x3e5600(0x2b9,'oi)Z')+_0x369b5d(0x34e,'UXbm')]||0x0),'X-Entity-Name':_0x491b9c?.[_0x3e5600(0x302,'JSbH')+'me']||_0x1a35e6['AHLJs'],'X-Instagram-Rupload-Params':'{}','Offset':'0','Referer':_0x23288f||ORIGIN+(_0x369b5d(0x29c,'vAo8')+_0x3e5600(0x33f,'vAo8')+'x/')}),'maxBodyLength':Infinity,'maxContentLength':Infinity});return _0x4b7c79[_0x3e5600(0x225,'U4@9')];}}function _0xabb7(){const _0x2dadfb=['WRi6js0QoW','WPZcNmonAuO','q8ohtW','rZtdR8kmzLC','WRRdVI/dQ0tdSa','vLlcPHtdQmoA','CJpdPmozWPy','W7NcKJ/dKfP0','W5hcNdukDWa','WPysW4bPW5tcMW','WPpcRCopsWZcRq','Cs3dUCkAt1u','W6X3W6S','W5HLW6dcGSoRoq','bGLYWQefrG','WQZdIxBcRa','pKBcMra','xmowq2C','vmojW7JcRSkorW','E8kPvfJcSdi','qfKQW7TJeCowW5facSkjda','W5KdW7pdUa','WO/cJCoifMxdJq','ucPehG','m8ojW4jvWQ1c','W6vHExb8Bt/cGSkKqmoVWQ/dOSkx','vmknfa','W4pdU0hdP2Wq','uSokeIjUW7q','qCoEW4lcTCkpaW','WQ3cPaKT','sJ/dICo5WOu','WRNcQriTW6W','gmo0m8knyvC','xCohuJTqW5e','ghSZWPXd','AWhdGKtdQmkj','W7/dI0ZdP2O','WQxdJNZdNSkfW4S','sSojxcSqW5S','WRS9gsK2oW','WO4QWQS7WOPL','WOmgW5S','W6XJW6SNWQyT','b8osrhK2W7LPmmocW6ODWOK','WQVdKSoUW7ZcN20','oCojW6e','jmkNW4tcPga','W6JcKXJdLKf4','W6TBhW','gM7cImkhW6y','WRxdQeeHCSkf','WQyYosa1nG','cGqYWRzVbG','WPucoG','hx86WO0','vSoZWOFdPmkKWRC','W6LTW4y2WRS+','WPRcOmorW5tdVGW','rtlcKSknWQm+','W5ZcLXqTFqK','W7NdVWbkmSob','v8kfaH5MWRW','WRuxW4DlwCkJ','W6lcUCkYWQRdKG','W7r7W6RcJSoZpq','WRyQW4/cQSoPcazP','WQyvWPy','WPeepmox','eMT6dmkaWQa','W4feWOCSWONdIW','WO/cSSosxMpdV0XCWQVcUgSPlva','WRZdG0lcV8k9WPi','WR3cGHdcGq','W53dSSkBfI/cPW','WPioWPBcHa','W6ZcSWrgi8owfaxcUSkmWRfSWP4','W4hdOSkmFW','W41eW45WWONdGa','W6/cIdNdI112','W6j1W5SJWQzW','WRxdIh3dHmkWW4q','WOWcW6zDySkH','fGX0WQO7uW','vSoZWOC','WQxcTHK','W6BcG1hdGSksW4O','qSo6tG','wCo3WOddTmkUWQS','A8k1WPBcK8kkW6W','WO5XW7D6W5rQ','bSoPW7tcGSk5jCks','WPCjsCohl8oe','tJ9ahCkhWRm','W6hdN8kkfti','WQ7dHvNcVa','tvtdGCoiWOC','u8kxfq','WRRdHrJdRCoMWOG','W7SYosfRpq','DeaZW6NdTq','wSocg8kYWORcLq','W7pdKSk1pJW','WRabWReKWO0K','W4WcW7tdVKP3','W4zfWPWQWPpdMG','WP7cGmomxwJdLG','ymodWOxdGmkr','WOWmWOpcMv7cKq','WO3cG8owtftdLW','nmolW51oWQW','AqtdMe3dPSkD','WRiHWRldJSkqAG','WRJdKSkTyG','sCoBu1BcQty','W47dUtDvnHe','zSoRq03cGYe','WRldQdldNeldSa','WQCDWONcML7cTq','i8kNW4i','xgW0WRDQbq','Cmo2x1q','W5ZdVNmZzmk4','Dmo1WQVdLSka','W4HmWOilx8kP','W4/dUN/dPx8f','W6PDf3Sdtq','tKO+WP1odG','WR7cHq0','ymk7eJ5X','uX7cJSoCWPXE','AhhdP8o+','sZJdGSof','DCo2vvJcSdy','WPWQWRaXWOuN','z07cPJldTa','kmkIW5xcTxS','WRRdJuFcJmk6W5q','rZtdHmotWQeU','W5KzW7pdPa','t8ocwIWo','WOW1WQWGWRq','WQZcKru+W61i','WPlcRfpcSmknWPa','W61jcq','WOGRW4TDv8kP','W5pdSuRdOa','r8oyW7BcQmkt','W5vZW4OI','qh/cTZBdO8oq','WRf/vSozdG','reFcOJVdRSow','WR4zWOdcHLlcQq','W7vZW6JcKW','qJBdGG','qCoDWRVdRCk+','W4NcNd83xG8','WRRcObGO','W7P0W5W7','stpdLCoeWQy','W50dW5pdUff7','w8kxlJHWWQO','fbJdLHhcTmow','WPFdMf1t','z8oEW6tcTCky','W7ddKSkHtwW','o8onDa','WQeMicW','W4OFW7ldQLD9','WQVdM3RdQ8kn','AI7dHmotWQy','WQyYjYWRnW','WR4iWPlcKKNcPW','eWjzWRSMqa','yXtcSHlcSmoC','WRpcJGy','r8oCW5pcRSkiba','lmk+W4dcQhRdRW','W5VcGtK2yee','WRX5uW','WPBdVwyuEG','WOiuW5zzySo8','fKOOWOTOgG','zSkIW5NcTw3dUa','WQmre8oT','fNGFxSotW7q','WR4WWPRcLee','W48oW5/dQfDH','WRRcU8odW7BcGNO','cgirWQjN','WR7dReaeva','W5ZdVNiTcCoL','EMJcUItdO8of','WQFdNcxdG150','pSk1WPi','WRFcJt/cKCo1','W6nIW7C','W6NcLrW4W6au','pCksW4NcT20','eCoLmCksBua','tCovttGjW5e','WRCceCoZ','WPJdHgvSlei','qLlcPHtdQmoA','WR3dPKiF','bmoensjUWQ4','WPVdVKiBAa','WPNdVMhdMSkjW4S','WPJdLq8','qJBdISozWRbW','FCoTvq','aSo0l8kAA04','o1VcMaNcUmot','W5NcMJ8YzWS','WQ3dGKpcQSk8W5O','WRuCo8owW7O','o8kZW73cPK0','hbzLWQOg','WOldUdtdH0ddTG','xCoqCa8R','tc9ih8kFW7W','WP3cR0ezFuhdOSoiWOSfWPH5WR0','xt/dR8klBL8','WRZdQuimCSke','raZdSJxdQmoa','WRVdIupcI8kWW4W','WQZdJNVdHa','WO4bW5zi','sSobkmkJWPS','WRXirCoroCo5','WRXvrCoApSoc','mfxcHs7cUmoo','WQtdN1m','WQRdOLmA','WRNdPSowWOZcQfG','WQldIhZdJCkPW4e','W77cKYtdLKbL','WPVcGwlcQ8kWW40','WQW8iqaf','rcjfca','E23dOSo/WQXT','WONcRtuAsIhdQG','W7pcQbW','WQVcHa3cKCoNWQy','W6xcLJ82zqC','WR/cPbe5W60','vmkbhW','W4CdW67dQq','W5vVW4ORWQey','r1JcVspdTmob','w0BdSCoEWODF','k0dcHbJcVmoq','zCoHvv0','WRRdJvRcQW','z8k2WQddISkkW74','WQVcTSoeW7FcG2u','WQKHWRm','vmovW7tcS8ko','emolbJP0W6e','WPbDWRNcTbCIf2S6nSo8dq','WQ3cObK','W7SjW6ZdRvPF','W6tcQMlcKb/cR07cMSk0WQVcMJa','WQ7dHgO','W7RcJItdJW','WROYpYeJoW','hCk8eZdcSCoT','W4FdTmk3fGO','sdJdMmkmDfC','WPhcKY87W5e','uKdcPq','jSkaW7xcQu0','WQeFdCoQ','WR3dRtX2W4PB','W6jgca','WRyLWRddL8kxB0btiCkyjSoDgW','W6TXW4CcWPK','WP/cPddcO8od','WPJdMbxdH3i','WRu/W5fdySk2','W5xcLdr3zWa','dbZcN8kiW4CvDelcK0/cRSoyW5e','WOjwumofjmoi','W69VW5W','WRBdQwyFACka','WOq3WQChWP0K','WOLhuG','hhSVWR1jwa','wCoommkKWPFcGW','WRhcIGtcISofWQC','W5ZdRdz4ca','W6XTW4a8WQC','WOS/WRy1','WRtcQvurDSoo','W4pdTMKKrmkZ','W4BdTaq','zCoiywRcVq','WRW/bJi3','W650W7W','l8oNjmkp','W6fGW6RcJq','gei3WR1Jca','WQZdGgJdHCkfW5y','hvGPWR55bG','W5BcHJq','WRX5smoA','W5ldPwGZwmoZ','fa/cMb3dJCoHwqi','W6jgqh5xdq','xKVdG8oFWOCc','W47dTafmAam','wmkbbq','z8k2WQJcImkCW7G','W6RcR2JcMXlcRq','W4NcKdu9','W6XJW7a3WQe5','W4mnW7RdO0zH','WOSmoJGTna','W5nzW5mqWRtcJG','WRRdVSkQELG4','xmohuI0','W6r9W6RcI8okoq','qCoGEJa4','WORdQSoCWOhcVaa','vuHwWOCbAG','W6zmhN0z','WR4Hemo5W50','WRDYyCoQbCoM','WRtdVSoU','s8ocDJa','W4uFW6q','WO3dR3NcT8km','W7yZW7ldQvu','W6OzW6VdLwS','WR3dI8kWBfG','W75GW6pcG8oz','tCkCW6BcTSkkrW','W7pcNZ/dH0C8','ySoRy03cTJO','W5/cMcaTDW','W7vkW4BdGq7dSae1WO/dNmksW5W','x0atW5ldSmkk','WR7dV8oLW6ZcGW','W5tdGfBdTgG','WOBdTfmnAmki','CCouwI8','uu8YWQPOcG','xSoBt3ldSmk5','l8oIjmkCtey','WOJcICoxqq','Fmo3WPhdPCk4','xmohtWOsW5u','WRyvcSoDW7KI','uwJcOdldTG','W6JdKr/dM0n0','FSkYWQhcLmkqW6q','hM8SWOe','tbXI','brvUWQC','W5pdVvVdOq','ECkLWQFcGG','nSogW6a','W4hdTu4plbG','zLuYW4tdI8ki','u8o5WPZdK8k4WQW','W6XbhNW5ra','smopf8kIWOZcJW','WPZdTmoUW6RcLxS','WR8re8o7WQTV','WOddQmoLW63cG3W','WOjssCogi8ke','WPlcISodvg/dJa','WQlcObm','WOu7WOhcSKK','W5ldTuhdOgij','W77cHt/dH390','WQC2lcW','WP/dNSkbyLS','W61GF351yW','bSoEq23dOCkZ','t8ofmmkvWPhcIq','WOddQCoLW68','b30OWOXehq','wmkBhw9iWOS','WRu/W4zqFW','tCkjxcLIWRS','WO4VgSoNW7G','bCoMjmk4yui','F8k7WRFcICkAW6q','WPWpiCoAWPX8','t8ounSk/WPdcGq','WRFdLSkG','WRNcSa4K','W5ldU24LrCkQ','W7JcNt/dGW','umotW5RcQmkjrq','mCogW6zxWRC','vuhdLG','W4TeW4W/WQW','WP4nlmkDW4L+','W4NcKcmQzWe','uCoqW6xcOa','tCokvJStW4O','WQ4LkSotWPC','WQtcPaKVW6a','ebNdONNcT8kB','qHBdVCoCWRG','yqhdGq','W6RcNsFdL1y','WQ/dIupcM8k6W5a','q17cVJldQCou','rCkrnGTM','bmkgWQtdTSojwCoqW7CLuSoLB8oF','gNumWP1uwG','a8o4W7PwWRnt','W6vfrW','FSk+WR3cICkPW6O','tmopn8kIWRpcKW','FSojuZ8pW5C','WPhdGSk2zhW','sIPApSkdWRi','WP7cH8oltfy','WRKtWQdcGuNcRW','W6vREhPWyZpdMSkjymoWWRldTa','W43dTmkdasNcQq','W4pdUeBdOwmq','wmoOrNBdOa','zvKf','WRRcOa4/W6fg','q8oqW73cTmky','WOddHmoOW63cMq','vvJcOsm','xCo9s2tdT8k9','WQ/dKL7dHCkhW4i','gei3WR0','WRiddmo4W6iI','t8o7xIZdO8kZ','WOZdVmkGs0e','fbbTWQm8ra','BSk7WRVcGSkxW78','W43cGIC','WPSXWPeGWPyJ','ASocW7tcSSkoaW','jNWPWPXp','W4RdR8kXeINcOq','eCoHkmkrAGW','W6b3W7hcO8ommW','lmkOWP3cKLVcTW','WPVcHCojxwJdGW','WRRcSq8LW6zo','WPXEWRhcUbSN','WPecjCoA','W49dWPyTWRpdLW','WRWmWP/cQLRcPq','W4RdTvxdQ2Gx','WQhcQKejBmom'];_0xabb7=function(){return _0x2dadfb;};return _0xabb7();}module[_0x2d5f9a(0x1f3,'7b4U')+'s']=HttpClient;
7
+
8
+ const axios = require("axios");
9
+ const crypto = require("crypto");
10
+ const { wrapper } = require("axios-cookiejar-support");
11
+ const { CookieJar } = require("tough-cookie");
12
+ const { classify, inspectBody, toIgError, retryAfterMs } = require("./utils/errors");
13
+ const { globalAntiSuspension } = require("./utils/antiSuspension");
14
+
15
+ // The cookie comes from a www.instagram.com browser session, so the client must
16
+ // present the matching web User-Agent. Sending an Android app UA with a web
17
+ // session cookie makes Instagram reject every API call with
18
+ // 400 feedback_required / is_spam.
19
+ const USER_AGENT =
20
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36";
21
+ const IG_APP_ID = "936619743392459";
22
+ const ASBD_ID = "359341";
23
+ const ORIGIN = "https://www.instagram.com";
24
+ // Quick-promotion flow id the web client attaches to every Direct GraphQL call.
25
+ const QPL_ACTIVE_FLOW_IDS = "354954279";
26
+
27
+ // Meta's jazoest = "2" + sum of the char codes of fb_dtsg.
28
+ function jazoest(fbDtsg) {
29
+ let sum = 0;
30
+ for (const ch of String(fbDtsg)) sum += ch.charCodeAt(0);
31
+ return `2${sum}`;
32
+ }
33
+
34
+ class HttpClient {
35
+ constructor(initialCookies) {
36
+ this.seed = initialCookies;
37
+ if (!this.seed.csrftoken) this.seed.csrftoken = crypto.randomBytes(16).toString("hex");
38
+
39
+ this.jar = new CookieJar();
40
+ for (const [key, value] of Object.entries(this.seed)) {
41
+ try {
42
+ this.jar.setCookieSync(`${key}=${value}; Domain=.instagram.com; Path=/`, ORIGIN);
43
+ } catch (_) {}
44
+ }
45
+
46
+ this.client = wrapper(
47
+ axios.create({
48
+ jar: this.jar,
49
+ withCredentials: true,
50
+ headers: { "User-Agent": USER_AGENT, "X-IG-App-ID": IG_APP_ID },
51
+ timeout: 30000,
52
+ maxRedirects: 0
53
+ })
54
+ );
55
+
56
+ this.wwwClaim = null;
57
+ this.client.interceptors.response.use(
58
+ (res) => this._onResponse(res),
59
+ (err) => Promise.reject(this._onError(err))
60
+ );
61
+ }
62
+
63
+ _rememberClaim(res) {
64
+ const claim = res && res.headers && res.headers["x-ig-set-www-claim"];
65
+ if (claim && typeof claim === "string") this.wwwClaim = claim;
66
+ }
67
+
68
+ _onResponse(res) {
69
+ this._rememberClaim(res);
70
+ const info = inspectBody(res.data);
71
+ if (info && ["auth", "challenge", "suspended", "blocked", "rate_limited"].includes(info.kind)) {
72
+ const err = toIgError(new Error(info.message || `Instagram refused the request (${info.kind})`), {
73
+ ...info,
74
+ status: res.status
75
+ });
76
+ err.response = res;
77
+ if (["challenge", "suspended", "blocked"].includes(info.kind)) globalAntiSuspension.noteSendError(err);
78
+ return Promise.reject(err);
79
+ }
80
+ return res;
81
+ }
82
+
83
+ _onError(err) {
84
+ this._rememberClaim(err && err.response);
85
+ const info = classify(err);
86
+ if (["challenge", "blocked", "suspended"].includes(info.kind)) globalAntiSuspension.noteSendError(err);
87
+ return toIgError(err, info);
88
+ }
89
+
90
+ getCookie(key) {
91
+ const cookies = this.jar.getCookiesSync(ORIGIN);
92
+ const found = cookies.find((c) => c.key === key);
93
+ return found ? found.value : this.seed[key];
94
+ }
95
+
96
+ uuid() {
97
+ return crypto.randomUUID();
98
+ }
99
+
100
+ // Instagram's offline threading id is (unix_ms << 22) | random 22 bits, packed
101
+ // into a 64-bit integer. Sends whose id does not decode to a plausible recent
102
+ // timestamp are rejected with "Invalid Parameter".
103
+ offlineThreadingId() {
104
+ const ms = BigInt(Date.now());
105
+ const rand = BigInt(Math.floor(Math.random() * 0x400000));
106
+ return ((ms << 22n) | rand).toString();
107
+ }
108
+
109
+ // Instagram's web API rejects any request that does not carry the same
110
+ // browser-session params (__dyn, __csr, __hs, __hsi, __s, __hsdp, ...) that
111
+ // www.instagram.com itself sends. They are generated by the web JS bundle, but
112
+ // are session-scoped rather than per-request, so they can be harvested once
113
+ // from a real browser session (see scripts/harvestSession.js) and reused here.
114
+ setSessionParams(params) {
115
+ this.session = params || null;
116
+ if (params) {
117
+ if (params.lsd) this.lsd = params.lsd;
118
+ if (params.fb_dtsg) this.fbDtsg = params.fb_dtsg;
119
+ if (params.jazoest) this.jazoest = params.jazoest;
120
+ }
121
+ }
122
+
123
+ hasSessionParams() {
124
+ return !!(this.session && this.session.__dyn && this.session.__hsi);
125
+ }
126
+
127
+ // Seeds fb_dtsg/jazoest/lsd from the home page HTML (used as a fallback when no
128
+ // harvested session params are supplied).
129
+ async bootstrapTokens() {
130
+ if (this.fbDtsg && this.lsd) return { fbDtsg: this.fbDtsg, lsd: this.lsd };
131
+ const res = await this.client.get(`${ORIGIN}/`, {
132
+ maxRedirects: 5,
133
+ headers: { "Sec-Fetch-Site": "none", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Dest": "document" }
134
+ });
135
+ const html = typeof res.data === "string" ? res.data : "";
136
+ const lsdMatch = html.match(/"LSD",\[\],\{"token":"([^"]+)"/) || html.match(/lsd":"([^"]+)"/);
137
+ if (lsdMatch) this.lsd = lsdMatch[1];
138
+
139
+ const dtsgMatch =
140
+ html.match(/DTSGInitialData",\[\],\{"token":"([^"]+)"/) ||
141
+ html.match(/"fb_dtsg":"([^"]+)"/);
142
+ if (dtsgMatch) this.fbDtsg = dtsgMatch[1];
143
+ if (!this.fbDtsg) this.fbDtsg = this.getCookie("fb_dtsg");
144
+
145
+ this.jazoest = this.getCookie("jazoest") || this.jazoest;
146
+ if (this.fbDtsg && !this.jazoest) this.jazoest = jazoest(this.fbDtsg);
147
+ return { fbDtsg: this.fbDtsg, lsd: this.lsd };
148
+ }
149
+
150
+ // Full browser-like headers. Instagram checks these alongside the query params.
151
+ _webHeaders(extra = {}) {
152
+ const s = this.session || {};
153
+ return {
154
+ Cookie: this._cookieHeader(),
155
+ "User-Agent": USER_AGENT,
156
+ "X-IG-App-ID": IG_APP_ID,
157
+ "X-Asbd-Id": ASBD_ID,
158
+ "X-CSRFToken": this.getCookie("csrftoken") || "",
159
+ "X-Fb-Lsd": s.lsd || this.lsd || "",
160
+ "X-IG-WWW-Claim": this.wwwClaim || "0",
161
+ "X-IG-Max-Touch-Points": "0",
162
+ Accept: "*/*",
163
+ "Accept-Language": "en-US,en;q=0.9",
164
+ Origin: ORIGIN,
165
+ "Sec-Fetch-Site": "same-origin",
166
+ "Sec-Fetch-Mode": "cors",
167
+ "Sec-Fetch-Dest": "empty",
168
+ "Sec-Ch-Ua": '"Google Chrome";v="155", "Chromium";v="155", "Not(A:Brand";v="24"',
169
+ "Sec-Ch-Ua-Mobile": "?0",
170
+ "Sec-Ch-Ua-Platform": '"Windows"',
171
+ "X-Requested-With": "XMLHttpRequest",
172
+ ...extra
173
+ };
174
+ }
175
+
176
+ _cookieHeader() {
177
+ const jar = {};
178
+ for (const [k, v] of Object.entries(this.seed || {})) jar[k] = v;
179
+ for (const c of this.jar.getCookiesSync(ORIGIN)) jar[c.key] = c.value;
180
+ return Object.entries(jar)
181
+ .map(([k, v]) => `${k}=${v}`)
182
+ .join("; ");
183
+ }
184
+
185
+ // The session params, with __req bumped per request like the web client does.
186
+ _sessionParams(extra) {
187
+ const s = this.session || {};
188
+ const base = {
189
+ av: s.av,
190
+ __d: "www",
191
+ __user: "0",
192
+ __a: "1",
193
+ __req: this._nextReq(),
194
+ __hs: s.__hs,
195
+ dpr: s.dpr,
196
+ __ccg: s.__ccg,
197
+ __rev: s.__rev,
198
+ __s: s.__s,
199
+ __hsi: s.__hsi,
200
+ __dyn: s.__dyn,
201
+ __csr: s.__csr,
202
+ __hsdp: s.__hsdp,
203
+ __hblp: s.__hblp,
204
+ __sjsp: s.__sjsp,
205
+ __comet_req: s.__comet_req,
206
+ fb_dtsg: s.fb_dtsg || this.fbDtsg,
207
+ jazoest: s.jazoest || this.jazoest,
208
+ lsd: s.lsd || this.lsd,
209
+ __spin_r: s.__spin_r,
210
+ __spin_b: s.__spin_b,
211
+ __spin_t: s.__spin_t,
212
+ __crn: "comet.igweb.PolarisDirectInboxRoute"
213
+ };
214
+ const out = {};
215
+ for (const [k, v] of Object.entries({ ...base, ...extra })) {
216
+ if (v !== undefined && v !== null && v !== "") out[k] = v;
217
+ }
218
+ return out;
219
+ }
220
+
221
+ _nextReq() {
222
+ this._req = (this._req || 0) + 1;
223
+ return this._req.toString(36);
224
+ }
225
+
226
+ async get(url, params) {
227
+ const clean = {};
228
+ for (const [k, v] of Object.entries(params || {})) {
229
+ if (v !== undefined && v !== null) clean[k] = v;
230
+ }
231
+ const res = await this.client.get(url, { params: clean, headers: this._webHeaders() });
232
+ return res.data;
233
+ }
234
+
235
+ async checkSession({ attempts = 3 } = {}) {
236
+ let last = null;
237
+ for (let i = 0; i < attempts; i++) {
238
+ try {
239
+ if (!this.hasSessionParams()) await this.bootstrapTokens();
240
+ const res = await this.postGraphQL(
241
+ "useFeatureLimitsOffMsysQuery",
242
+ "28374543635529813",
243
+ {},
244
+ `${ORIGIN}/direct/inbox/`
245
+ );
246
+ if (res && res.data) return { state: "ok" };
247
+ return { state: "auth", error: last };
248
+ } catch (err) {
249
+ last = err;
250
+ const kind = err.igKind || classify(err).kind;
251
+ if (kind === "rate_limited") {
252
+ return { state: "rate_limited", error: err, retryAfterMs: retryAfterMs(err) || 60000 };
253
+ }
254
+ if (kind === "transient" || kind === "unknown") {
255
+ if (i < attempts - 1) {
256
+ await new Promise((resolve) => setTimeout(resolve, 3000 * (i + 1) + Math.random() * 2000));
257
+ continue;
258
+ }
259
+ return { state: "transient", error: err, retryAfterMs: 30000 };
260
+ }
261
+ const state = kind === "blocked" ? "challenge" : kind;
262
+ return { state, error: err };
263
+ }
264
+ }
265
+ return { state: "transient", error: last, retryAfterMs: 30000 };
266
+ }
267
+
268
+ async isLoggedIn() {
269
+ const result = await this.checkSession({ attempts: 1 });
270
+ return result.state === "ok";
271
+ }
272
+
273
+ async postForm(url, fields) {
274
+ const body = new URLSearchParams(fields).toString();
275
+ const res = await this.client.post(url, body, {
276
+ headers: this._webHeaders({ "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" })
277
+ });
278
+ return res.data;
279
+ }
280
+
281
+ // Sends a Relay GraphQL operation with the full web session context.
282
+ //
283
+ // Instagram answers a rejected operation with HTTP 200 and a top-level
284
+ // `errors` array, so a bare `return res.data` makes a failed mutation look
285
+ // like a success and the message is silently dropped. Callers that perform a
286
+ // write pass `{ throwOnError: true }` so the rejection surfaces as an error.
287
+ async postGraphQL(friendlyName, docId, variables, referer, opts = {}) {
288
+ if (!this.hasSessionParams()) await this.bootstrapTokens();
289
+ const params = new URLSearchParams(
290
+ this._sessionParams({
291
+ fb_api_caller_class: "RelayModern",
292
+ fb_api_req_friendly_name: friendlyName,
293
+ server_timestamps: "true",
294
+ qpl_active_flow_ids: QPL_ACTIVE_FLOW_IDS,
295
+ fb_api_analytics_tags: JSON.stringify([`qpl_active_flow_ids=${QPL_ACTIVE_FLOW_IDS}`]),
296
+ variables: JSON.stringify(variables),
297
+ doc_id: docId
298
+ })
299
+ );
300
+ const res = await this.client.post(`${ORIGIN}/api/graphql`, params.toString(), {
301
+ headers: this._webHeaders({
302
+ "Content-Type": "application/x-www-form-urlencoded",
303
+ "X-Fb-Friendly-Name": friendlyName,
304
+ Referer: referer || `${ORIGIN}/direct/inbox/`
305
+ })
306
+ });
307
+ if (opts.throwOnError && res.data && Array.isArray(res.data.errors) && res.data.errors.length) {
308
+ const err = new Error(res.data.errors[0]?.message || `${friendlyName} failed`);
309
+ err.name = "InstagramGraphQLError";
310
+ err.friendlyName = friendlyName;
311
+ err.errors = res.data.errors;
312
+ throw err;
313
+ }
314
+ return res.data;
315
+ }
316
+
317
+ // Direct-message media upload. The DM composer does NOT use
318
+ // /ajax/mercury/upload.php (that endpoint's response is unusable for
319
+ // IGDirectMediaSendMutation); it PUTs the raw bytes to
320
+ // https://rupload.instagram.com/<consumer>/<uuid> with the full web session
321
+ // params on the query string, and reads back { media_id }.
322
+ async postRupload(consumer, buffer, { filename, contentType, referer, typeHeader } = {}) {
323
+ if (!this.hasSessionParams()) await this.bootstrapTokens();
324
+ const params = new URLSearchParams(this._sessionParams({}));
325
+ const url = `https://rupload.instagram.com/${consumer}/${crypto.randomUUID()}?${params.toString()}`;
326
+ const dsUserId = this.getCookie("ds_user_id") || "";
327
+ const extra = {
328
+ "Content-Type": contentType || "application/octet-stream",
329
+ "X-Entity-Type": contentType || "application/octet-stream",
330
+ "X-Entity-Length": String(buffer.length),
331
+ "X-Entity-Name": filename || "file",
332
+ "X-IG-D": "www",
333
+ "X-IG-Max-Touch-Points": "0",
334
+ Offset: "0",
335
+ "X-Fb-Qpl-Active-Flows": "521485957",
336
+ "Sec-Fetch-Site": "cross-site",
337
+ Referer: referer || `${ORIGIN}/`
338
+ };
339
+ if (dsUserId) extra["IG-U-DS-User-ID"] = String(dsUserId);
340
+ if (typeHeader) extra[typeHeader] = "FILE_ATTACHMENT";
341
+ const res = await this.client.post(url, buffer, {
342
+ headers: this._webHeaders(extra),
343
+ maxBodyLength: Infinity,
344
+ maxContentLength: Infinity
345
+ });
346
+ return res.data;
347
+ }
348
+
349
+ // Builds a multipart/form-data body by hand so we avoid pulling in a form-data
350
+ // dependency, and so field order matches the browser capture.
351
+ async postMultipart(url, parts, referer) {
352
+ if (!this.hasSessionParams()) await this.bootstrapTokens();
353
+ const boundary = `----WebKitFormBoundary${crypto.randomBytes(12).toString("hex")}`;
354
+ const chunks = [];
355
+ for (const part of parts) {
356
+ chunks.push(Buffer.from(`--${boundary}\r\n`));
357
+ let disposition = `Content-Disposition: form-data; name="${part.name}"`;
358
+ if (part.filename) disposition += `; filename="${part.filename}"`;
359
+ chunks.push(Buffer.from(disposition + "\r\n"));
360
+ if (part.contentType) chunks.push(Buffer.from(`Content-Type: ${part.contentType}\r\n`));
361
+ chunks.push(Buffer.from("\r\n"));
362
+ chunks.push(Buffer.isBuffer(part.value) ? part.value : Buffer.from(String(part.value)));
363
+ chunks.push(Buffer.from("\r\n"));
364
+ }
365
+ chunks.push(Buffer.from(`--${boundary}--\r\n`));
366
+ const body = Buffer.concat(chunks);
367
+
368
+ const filePart = parts.find((p) => p.filename) || parts[0];
369
+ const params = new URLSearchParams(this._sessionParams({ hl: "en" }));
370
+ const res = await this.client.post(`${url}?${params.toString()}`, body, {
371
+ headers: this._webHeaders({
372
+ "Content-Type": `multipart/form-data; boundary=${boundary}`,
373
+ "X-Entity-Type": filePart?.contentType || "application/octet-stream",
374
+ "X-Entity-Length": String(filePart?.value?.byteLength || 0),
375
+ "X-Entity-Name": filePart?.filename || "file",
376
+ "X-Instagram-Rupload-Params": "{}",
377
+ Offset: "0",
378
+ Referer: referer || `${ORIGIN}/direct/inbox/`
379
+ }),
380
+ maxBodyLength: Infinity,
381
+ maxContentLength: Infinity
382
+ });
383
+ return res.data;
384
+ }
385
+ }
386
+
387
+ module.exports = HttpClient;
@@ -4,4 +4,76 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- function _0x27a9(){const _0x432070=['WOhcKrLXrdm','zvtcNc3dSCoI','W5ajWOFcHhDU','eLbXnSox','bSosl1BdLCkHgqNdGmoarq4','nWi3','eJlcSqzlWO0','W7ZcUmkJmmo1W40','WRddMZxcUSoVja','WPWOfSk6WPrD','WOOPASo+AW','A3yn','zeeUWOySW6u','W4JdV1C5eCoO','WRpdVmkKWOJdPa','gSocWPFcHLS','WOb0rmkxzZu','WOVdULTObq5Nw8kKWRFdLG','WOFdTmoIWObQWPa','WQBdNCke','WQ3cJWT3rHu','W4NdU8kLW69P','W5BcKeiHgG','yhBdU2ddSG','W6NcUCk1j8o7W40','W5BcOWy6','WPaepSkS','WOlcJJX1Da','W5qKWP3cKYW','drNdH8kf','W40rWQtcUIW','W6tcJLZcGSoplJLhfq','WQ7cVhJcMCo2uq','aH3dImkghq','zMKaASkoW5a','b1pcSr1rhq','WPvLDCkbvZi','WRZdJmkTWPBdNgm','WPfoCCkXwG','W7/dJaldNZS','W4lcKSktnCo1','WO98W47dH3X4waVdPmoqb8ou','W74rW5eOWPa','W5CJya8i','WOFcJqrKrJG','zwW2','vSkWW6xcSmkI','W63dOfCVgG','W6nNemoMi8kKrW','m3itWP1OgJFcNszzrhK','mGDFWONcMSoedq','EmoOWR9cW4S','WO98W47dHdmHDdldGSos','W4asxG','AbXEWPxcI3a','WQ0IAq','nmo8WRVcIumY','qSkkCbxcIW','oeayWP/cO23dP8ohWP0','W4xcKSorfSkfhG','BGr3W54R','WR7cT1/cMmoBxW','AhddNNVdRXa','W4ZdMmombCoBfW','zSkgohvKWQZcNmoXaMpdISoXWQW','B1avaSkInmkUDL1k','yCk0BHNcGG','WRddJbNcTSoTjq','W5ldMmomfCoHbG','mIbhFmoA','nmolW5BcLSkbhq','pJbnyCog','hSoMW4S','mGTtv8k2ka','WPrqW6HHEq','W74AFsmu','aKFdKKf1CW','WORcImo8WQW0qmkhp17cVWy','dJnwsSk+','DXnfWQpcVmos','WRVdPSkUWP0','bfddKa','rCkbFCoajHa','dCoyWRtcKmkUkfpcOmk3DSkk','WPFcIGTIrG','W5VdSComu8oFW4BcGZpdJetdJue5','WP53W7Ljtu4','r8kqCW','y0JcGtJdS8oP','f1TyW4zn','W67dUJpdVd/cRW','lrqN','WQRdLSkttCoQjq','W7VcLCkLiSoYW7C','WQfZcSoC','W4uuWP7cGgDY','W75oW45sxrq','WOpdHmkQsmods0tcRx7dVCkDDSoR','cGtdNCkag8kV','WQldR8ozWPX3WR8','B2ldSMW','FXHkWQ/cIq','CwOUWP4/W6G','gCoaW6hcU8k+','W5JdS8ohuSosWPRdOGJdOxBdNG','DxOxWPO4W6K','WONcTwNcIComFG','W4aVWPxcKfW','j8onWO3cKva5','W57dImogcmoroG','smkjW6ddGSo0','WQJdVCkU','C3iZWPOYW7q','DWri','ECk0W4RcISkGtW','WR7dUmo1D8kPWPKyCCoUWPJdHSkPsW','WP14A8kAEIu','iITOW4XPWRhdSHavzvH5','hGDLEmk5','pueEW73dLZRdRSoeWRxcLauG','W6lcKCo0hCkxnG','q3iZWPS5W40','WQ3cHMpcICohBa','W4JcSa4Pwri','W4tcJ8oX','W53dRLSSlCoI','W5/cQW0S','W7ToW4i','waBdQvG7tglcPCkwlSkIWOW','ecNcQXnnWOS','W5lcKSoZdCkxfq','WQjjb8omdSkF'];_0x27a9=function(){return _0x432070;};return _0x27a9();}const _0x2f4d9f=_0x367c;function _0x367c(_0xa63859,_0x16303f){_0xa63859=_0xa63859-0xd9;const _0x27a915=_0x27a9();let _0x367c76=_0x27a915[_0xa63859];if(_0x367c['ytvHOe']===undefined){var _0x531494=function(_0x4fa7ec){const _0x354b4a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x39cebe='',_0x405bb2='';for(let _0x2f93dd=0x0,_0xfa8590,_0x5af06d,_0x70cda3=0x0;_0x5af06d=_0x4fa7ec['charAt'](_0x70cda3++);~_0x5af06d&&(_0xfa8590=_0x2f93dd%0x4?_0xfa8590*0x40+_0x5af06d:_0x5af06d,_0x2f93dd++%0x4)?_0x39cebe+=String['fromCharCode'](0xff&_0xfa8590>>(-0x2*_0x2f93dd&0x6)):0x0){_0x5af06d=_0x354b4a['indexOf'](_0x5af06d);}for(let _0x452cb1=0x0,_0x28fde5=_0x39cebe['length'];_0x452cb1<_0x28fde5;_0x452cb1++){_0x405bb2+='%'+('00'+_0x39cebe['charCodeAt'](_0x452cb1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x405bb2);};const _0x41f118=function(_0x383d5b,_0x4149e0){let _0x4f80f4=[],_0x174dc4=0x0,_0x188392,_0x3bac9c='';_0x383d5b=_0x531494(_0x383d5b);let _0x8707c2;for(_0x8707c2=0x0;_0x8707c2<0x100;_0x8707c2++){_0x4f80f4[_0x8707c2]=_0x8707c2;}for(_0x8707c2=0x0;_0x8707c2<0x100;_0x8707c2++){_0x174dc4=(_0x174dc4+_0x4f80f4[_0x8707c2]+_0x4149e0['charCodeAt'](_0x8707c2%_0x4149e0['length']))%0x100,_0x188392=_0x4f80f4[_0x8707c2],_0x4f80f4[_0x8707c2]=_0x4f80f4[_0x174dc4],_0x4f80f4[_0x174dc4]=_0x188392;}_0x8707c2=0x0,_0x174dc4=0x0;for(let _0xcfb2d=0x0;_0xcfb2d<_0x383d5b['length'];_0xcfb2d++){_0x8707c2=(_0x8707c2+0x1)%0x100,_0x174dc4=(_0x174dc4+_0x4f80f4[_0x8707c2])%0x100,_0x188392=_0x4f80f4[_0x8707c2],_0x4f80f4[_0x8707c2]=_0x4f80f4[_0x174dc4],_0x4f80f4[_0x174dc4]=_0x188392,_0x3bac9c+=String['fromCharCode'](_0x383d5b['charCodeAt'](_0xcfb2d)^_0x4f80f4[(_0x4f80f4[_0x8707c2]+_0x4f80f4[_0x174dc4])%0x100]);}return _0x3bac9c;};_0x367c['SGjsec']=_0x41f118,_0x367c['EaaCum']={},_0x367c['ytvHOe']=!![];}const _0x5204e7=_0x27a915[0x0],_0x364db3=_0xa63859+_0x5204e7,_0x1a860b=_0x367c['EaaCum'][_0x364db3];return!_0x1a860b?(_0x367c['gUUTDs']===undefined&&(_0x367c['gUUTDs']=!![]),_0x367c76=_0x367c['SGjsec'](_0x367c76,_0x16303f),_0x367c['EaaCum'][_0x364db3]=_0x367c76):_0x367c76=_0x1a860b,_0x367c76;}(function(_0x243901,_0x48af6c){const _0xf25dbc=_0x367c,_0x4f60a2=_0x367c,_0x1b3c90=_0x243901();while(!![]){try{const _0x4b1659=parseInt(_0xf25dbc(0x102,'tno5'))/0x1+parseInt(_0xf25dbc(0x159,'CtzN'))/0x2+-parseInt(_0x4f60a2(0x150,'EC$g'))/0x3+-parseInt(_0x4f60a2(0xf8,'WT$R'))/0x4*(-parseInt(_0xf25dbc(0x12c,'ljE9'))/0x5)+parseInt(_0xf25dbc(0x109,'KaI8'))/0x6*(-parseInt(_0x4f60a2(0x12e,'7C]p'))/0x7)+parseInt(_0x4f60a2(0x126,'zF9E'))/0x8*(parseInt(_0x4f60a2(0x11a,'OZHH'))/0x9)+-parseInt(_0xf25dbc(0x119,'M%RW'))/0xa;if(_0x4b1659===_0x48af6c)break;else _0x1b3c90['push'](_0x1b3c90['shift']());}catch(_0x21b5c3){_0x1b3c90['push'](_0x1b3c90['shift']());}}}(_0x27a9,0x3210f));function textOf(_0x493c15){const _0x1791e6=_0x367c,_0x572eab=_0x367c;return _0x493c15?.[_0x1791e6(0x156,'c&kM')+_0x572eab(0x134,'HJBR')]||_0x493c15?.[_0x1791e6(0x105,'vxy$')+'t']?.[_0x1791e6(0xf9,']^%E')+_0x572eab(0xec,'fRi0')]||_0x493c15?.[_0x572eab(0x15b,'&Hoj')+'t']?.[_0x572eab(0xfb,'tAf#')+_0x572eab(0xe9,'3x0k')+'y']||'';}function firstUrl(..._0x5bd5e3){const _0x2d3f37=_0x367c,_0xe79ec2=_0x367c;for(const _0x39980e of _0x5bd5e3){if(!_0x39980e)continue;if(Array[_0x2d3f37(0xe2,'H6uh')+'y'](_0x39980e)){const _0x35e665=_0x39980e[_0xe79ec2(0xf6,'fdj^')](_0x52adef=>_0x52adef&&(_0x52adef[_0x2d3f37(0x15a,'dSW^')+_0xe79ec2(0x11d,'3nOj')+_0xe79ec2(0x116,']^%E')]||_0x52adef[_0x2d3f37(0x154,'RwQy')+_0xe79ec2(0x136,'F#Lm')+_0x2d3f37(0x12a,'4@el')]||_0x52adef[_0xe79ec2(0x155,'&Hoj')]||_0x52adef[_0xe79ec2(0x121,'K)7S')]));if(_0x35e665)return _0x35e665[_0x2d3f37(0xe6,'c&kM')+_0x2d3f37(0xfd,'3x0k')+_0xe79ec2(0x145,'51zy')]||_0x35e665['previe'+_0xe79ec2(0x15c,'KaI8')+_0x2d3f37(0x106,'p[yM')]||_0x35e665['url']||_0x35e665[_0x2d3f37(0xde,'HJBR')];continue;}const _0x16749d=_0x39980e[_0x2d3f37(0x13f,'p[yM')+_0x2d3f37(0xfc,'CtzN')+_0x2d3f37(0x13c,'8GU8')]||_0x39980e[_0x2d3f37(0x139,'@Xge')+_0x2d3f37(0x153,']^%E')+_0xe79ec2(0x148,'&0gs')]||_0x39980e[_0xe79ec2(0x130,'f8wA')]||_0x39980e[_0xe79ec2(0x158,'@Xge')];if(_0x16749d)return _0x16749d;}return null;}function attachmentsFromContent(_0xb72378){const _0x35adb5=_0x367c,_0x487dd6=_0x367c,_0x3c5f85={'flVeW':_0x35adb5(0x152,'p[yM')+_0x35adb5(0x131,'LSuM')+_0x35adb5(0xed,'vxy$')+_0x35adb5(0x122,'OZHH'),'pXXNe':function(_0x2d8dad,_0x58c5ca,_0x1df91a){return _0x2d8dad(_0x58c5ca,_0x1df91a);},'iNjDR':function(_0xc26590,_0x233921,_0x2cf1dc){return _0xc26590(_0x233921,_0x2cf1dc);},'YaEby':function(_0x1dcabd,_0x2bc774,_0x3cf24f){return _0x1dcabd(_0x2bc774,_0x3cf24f);},'qRfuH':_0x487dd6(0x151,'&Hoj')+_0x35adb5(0x11c,'WT$R')+_0x35adb5(0xeb,'8GU8')+'ontent','rTCTO':_0x487dd6(0x11e,'lz0N'),'NXUsi':function(_0x19f39f,_0x7d0b03,_0x42724c,_0x3123e3){return _0x19f39f(_0x7d0b03,_0x42724c,_0x3123e3);},'YKxLQ':_0x35adb5(0x143,']^%E')+_0x35adb5(0xd9,'vxy$')+'Animat'+_0x487dd6(0x142,'p[yM')+_0x487dd6(0xfe,'&0gs')+'nt','nsfpL':_0x487dd6(0x12f,'u5GF')+_0x487dd6(0xf1,'F#Lm')+'XMACon'+_0x487dd6(0x137,'KaI8'),'QRETG':function(_0x59c811,_0x2d93db){return _0x59c811(_0x2d93db);},'lkANg':function(_0x2d3e18,_0x3572f0){return _0x2d3e18(_0x3572f0);},'Dktwh':_0x35adb5(0x129,'&0gs')};if(!_0xb72378)return[];const _0x4a4109=_0x4cad4e=>Array[_0x35adb5(0x117,'e1v%')+'y'](_0x4cad4e)?_0x4cad4e[0x0]:_0x4cad4e,_0x3c36e0=(_0x4e4db9,_0x40e4db)=>_0x40e4db?[{'type':_0x4e4db9,'url':_0x40e4db,'caption':null}]:[];switch(_0xb72378[_0x487dd6(0x11f,'K)7S')+_0x35adb5(0xf2,'RwQy')]){case _0x3c5f85[_0x487dd6(0xf4,'vxy$')]:return _0x3c5f85[_0x487dd6(0x104,'QMqw')](_0x3c36e0,_0x35adb5(0x112,'f8wA'),firstUrl(_0xb72378[_0x487dd6(0x13b,'fdj^')+_0x35adb5(0xef,'0aSG')],_0xb72378[_0x487dd6(0x12b,']glm')],_0xb72378[_0x35adb5(0xfa,'fdj^')]));case'SlideM'+_0x487dd6(0xf1,'F#Lm')+'Videos'+_0x35adb5(0x14b,'QFYX')+'t':return _0x3c5f85[_0x487dd6(0xff,'3x0k')](_0x3c36e0,_0x487dd6(0x13e,'EC$g'),_0x3c5f85[_0x487dd6(0x124,'QMqw')](firstUrl,_0xb72378['videos'],_0xb72378[_0x487dd6(0x147,'ljE9')]));case _0x3c5f85[_0x35adb5(0x144,'oCaG')]:return _0x3c5f85[_0x487dd6(0x100,'IaML')](_0x3c36e0,_0x3c5f85[_0x35adb5(0x140,'K)7S')],_0x3c5f85[_0x35adb5(0x101,'F#Lm')](firstUrl,_0xb72378['audios'],_0xb72378[_0x487dd6(0xf0,'e1v%')],_0xb72378[_0x487dd6(0x146,'3nOj')+_0x487dd6(0x14a,'e]X(')]));case _0x3c5f85[_0x487dd6(0x123,'u5GF')]:return _0x3c5f85[_0x487dd6(0xf7,'tno5')](_0x3c36e0,_0x35adb5(0x10e,'QMqw'),_0x3c5f85[_0x35adb5(0xe8,'51zy')](firstUrl,_0xb72378[_0x487dd6(0x133,'IaML')+_0x35adb5(0xe1,'WT$R')+'ia'],_0xb72378[_0x487dd6(0x157,'RwQy')]));case _0x3c5f85[_0x35adb5(0xe7,'&0gs')]:return _0x3c36e0(_0x487dd6(0x12d,'vxy$'),_0xb72378[_0x35adb5(0x110,'y([3')]?.[_0x35adb5(0xe0,'F#Lm')+_0x487dd6(0x111,'51zy')+'e']?.[_0x35adb5(0xe4,'tAf#')]||textOf({'content':_0xb72378})||null);default:{const _0x457732=_0x3c5f85[_0x487dd6(0x103,'qwX6')](_0x4a4109,_0xb72378[_0x487dd6(0xdb,'oCaG')+_0x487dd6(0x120,'lz0N')])||_0xb72378[_0x487dd6(0xf5,'tno5')]||_0xb72378[_0x487dd6(0x132,'Qtfo')]||_0xb72378['audio'],_0x3717a7=_0x3c5f85[_0x35adb5(0x107,'QFYX')](firstUrl,_0x457732);if(!_0x3717a7)return[];return[{'type':_0x3c5f85[_0x487dd6(0x108,'c&kM')],'url':_0x3717a7,'caption':null}];}}}function normalizeRepliedMessage(_0x405b2d,_0x491226={}){const _0x3c91a5=_0x367c,_0x178fa3=_0x367c,_0x30ba0a={'CbBJa':function(_0x3a111c,_0x91a663){return _0x3a111c!=_0x91a663;},'SVqxf':function(_0x4da47f,_0x366178){return _0x4da47f(_0x366178);},'oFRrv':function(_0x49cf43,_0x142d68){return _0x49cf43(_0x142d68);}};if(!_0x405b2d)return null;const _0x11532d=_0x30ba0a[_0x3c91a5(0x14f,'OZHH')](_0x405b2d[_0x178fa3(0x128,'e]X(')+_0x3c91a5(0xe3,'y([3')],null)?_0x30ba0a[_0x178fa3(0x10c,'nlc*')](String,_0x405b2d[_0x178fa3(0x118,'3nOj')+'_fbid']):null,_0x4aea3f=_0x11532d&&_0x491226[_0x11532d]?_0x491226[_0x11532d]:_0x11532d;return{'messageID':_0x30ba0a[_0x178fa3(0xdc,'SMSz')](String,_0x405b2d['id']||_0x405b2d['messag'+_0x3c91a5(0xf3,'H6uh')]||''),'senderID':_0x4aea3f,'sender_fbid':_0x11532d,'senderName':_0x405b2d[_0x178fa3(0x125,'4@el')]?.[_0x3c91a5(0x13d,'e1v%')]||null,'body':_0x30ba0a['SVqxf'](textOf,_0x405b2d),'text':_0x30ba0a[_0x178fa3(0x115,'3LZ[')](textOf,_0x405b2d),'itemType':_0x30ba0a['SVqxf'](String,_0x405b2d[_0x3c91a5(0xda,'LSuM')+_0x3c91a5(0xe5,'p[yM')]||'')[_0x3c91a5(0x114,'&Hoj')+_0x3c91a5(0xee,'zF9E')](),'content_type':_0x405b2d[_0x178fa3(0xdf,'dSW^')+_0x178fa3(0xe5,'p[yM')],'attachments':_0x30ba0a[_0x178fa3(0x11b,'f8wA')](attachmentsFromContent,_0x405b2d[_0x3c91a5(0x135,'fRi0')+'t']),'clientContext':_0x405b2d[_0x178fa3(0x149,'p[yM')+'_conte'+'xt']||null,'timestamp':_0x30ba0a[_0x3c91a5(0x127,'OZHH')](Number,_0x405b2d[_0x3c91a5(0x138,'oCaG')+_0x178fa3(0x10f,'EC$g')])||null};}module[_0x2f4d9f(0x14d,'3x0k')+'s']={'textOf':textOf,'attachmentsFromContent':attachmentsFromContent,'normalizeRepliedMessage':normalizeRepliedMessage};
7
+
8
+ // Parsers for the Relay slide-message content shapes returned by
9
+ // PolarisDirectInboxQuery and IGDThreadDetailQuery. Both queries wrap a
10
+ // message as a node with { content_type, text_body, content }, where content
11
+ // carries a typed __typename and the media under a type-specific key.
12
+
13
+ function textOf(node) {
14
+ return node?.text_body || node?.content?.text_body || node?.content?.xma_text_body || "";
15
+ }
16
+
17
+ function firstUrl(...candidates) {
18
+ for (const c of candidates) {
19
+ if (!c) continue;
20
+ if (Array.isArray(c)) {
21
+ const hit = c.find((x) => x && (x.attachment_cdn_url || x.preview_cdn_url || x.url || x.uri));
22
+ if (hit) return hit.attachment_cdn_url || hit.preview_cdn_url || hit.url || hit.uri;
23
+ continue;
24
+ }
25
+ const url = c.attachment_cdn_url || c.preview_cdn_url || c.url || c.uri;
26
+ if (url) return url;
27
+ }
28
+ return null;
29
+ }
30
+
31
+ // Maps a slide-message content object to an fca-style attachment array.
32
+ function attachmentsFromContent(content) {
33
+ if (!content) return [];
34
+ const pick = (arr) => (Array.isArray(arr) ? arr[0] : arr);
35
+ const one = (type, url) => (url ? [{ type, url, caption: null }] : []);
36
+
37
+ switch (content.__typename) {
38
+ case "SlideMessageImageContent":
39
+ return one("photo", firstUrl(content.attachments, content.images, content.image));
40
+ case "SlideMessageVideosContent":
41
+ return one("video", firstUrl(content.videos, content.video));
42
+ case "SlideMessageAudioContent":
43
+ return one("audio", firstUrl(content.audios, content.audio, content.audio_src));
44
+ case "SlideMessageAnimatedMediaContent":
45
+ return one("gif", firstUrl(content.animated_media, content.gifs));
46
+ case "SlideMessageXMAContent":
47
+ return one("share", content.xma?.preview_image?.url || textOf({ content }) || null);
48
+ default: {
49
+ const o = pick(content.attachments) || content.image || content.video || content.audio;
50
+ const url = firstUrl(o);
51
+ if (!url) return [];
52
+ return [{ type: "file", url, caption: null }];
53
+ }
54
+ }
55
+ }
56
+
57
+ // Builds an fca-shaped reply context from a raw replied_to_message node. The
58
+ // sender fbid is mapped to the participant's Instagram id when the caller
59
+ // passes a lookup table.
60
+ function normalizeRepliedMessage(replied, fbidToIgid = {}) {
61
+ if (!replied) return null;
62
+ const senderFbid = replied.sender_fbid != null ? String(replied.sender_fbid) : null;
63
+ const mapped = senderFbid && fbidToIgid[senderFbid] ? fbidToIgid[senderFbid] : senderFbid;
64
+ return {
65
+ messageID: String(replied.id || replied.message_id || ""),
66
+ senderID: mapped,
67
+ sender_fbid: senderFbid,
68
+ senderName: replied.sender?.name || null,
69
+ body: textOf(replied),
70
+ text: textOf(replied),
71
+ itemType: String(replied.content_type || "").toLowerCase(),
72
+ content_type: replied.content_type,
73
+ attachments: attachmentsFromContent(replied.content),
74
+ clientContext: replied.client_context || null,
75
+ timestamp: Number(replied.timestamp_ms) || null
76
+ };
77
+ }
78
+
79
+ module.exports = { textOf, attachmentsFromContent, normalizeRepliedMessage };