montana/Russian/Site/messenger/dist/8409.818ca961547510c632c9.js
2026-05-18 18:05:32 +03:00

2 lines
16 KiB
JavaScript

"use strict";(self.webpackChunkmontana_messenger=self.webpackChunkmontana_messenger||[]).push([[2465,8409],{62465(e,t,a){a.r(t),a.d(t,{FlacParser:()=>p});var s=a(17833),r=a(4017),i=a(92304),n=a(94481),o=a(5031),h=a(27232),g=a(61902),m=a(63324),d=a(54489);const c=s("music-metadata:parser:FLAC");class l extends((0,m.fO)("FLAC")){}class p extends n.k{constructor(){super(...arguments),this.vorbisParser=new h._(this.metadata,this.options)}async postId3v2Parse(){if("fLaC"!==(await this.tokenizer.readToken(o.e)).toString())throw new l("Invalid FLAC preamble");let e;do{e=await this.tokenizer.readToken(d.Tw),await this.parseDataBlock(e)}while(!e.lastBlock);if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){const e=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*e/this.metadata.format.duration)}}async parseDataBlock(e){switch(c(`blockHeader type=${e.type}, length=${e.length}`),e.type){case d._B.STREAMINFO:return this.readBlockStreamInfo(e.length);case d._B.PADDING:case d._B.APPLICATION:case d._B.SEEKTABLE:break;case d._B.VORBIS_COMMENT:return this.readComment(e.length);case d._B.CUESHEET:break;case d._B.PICTURE:return void await this.parsePicture(e.length);default:this.metadata.addWarning(`Unknown block type: ${e.type}`)}return this.tokenizer.ignore(e.length).then()}async readBlockStreamInfo(e){if(e!==d.om.len)throw new l("Unexpected block-stream-info length");const t=await this.tokenizer.readToken(d.om);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(t)}processsStreamInfo(e){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",e.channels),this.metadata.setFormat("bitsPerSample",e.bitsPerSample),this.metadata.setFormat("sampleRate",e.sampleRate),e.totalSamples>0&&this.metadata.setFormat("duration",e.totalSamples/e.sampleRate)}async readComment(e){const t=await this.tokenizer.readToken(new r.Uint8ArrayType(e));return this.parseComment(t)}async parseComment(e){const t=new g.Y(e,0),a=t.readStringUtf8();a.length>0&&this.metadata.setFormat("tool",a);const s=t.readInt32(),r=new Array(s);for(let e=0;e<s;e++)r[e]=t.parseUserComment();await Promise.all(r.map(e=>("ENCODER"===e.key&&this.metadata.setFormat("tool",e.value),this.addTag(e.key,e.value))))}async parsePicture(e){return this.options.skipCovers?this.tokenizer.ignore(e):this.addPictureTag(await this.tokenizer.readToken(new i.xu(e)))}addPictureTag(e){return this.addTag("METADATA_BLOCK_PICTURE",e)}addTag(e,t){return this.vorbisParser.addTag(e,t)}}},54489(e,t,a){a.d(t,{Tw:()=>n,_B:()=>i,om:()=>o});var s=a(56185),r=a(4017);const i={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},n={len:4,get:(e,t)=>({lastBlock:s.mh(e,t,7),type:s.f5(e,t,1,7),length:r.UINT24_BE.get(e,t+1)})},o={len:34,get:(e,t)=>({minimumBlockSize:r.UINT16_BE.get(e,t),maximumBlockSize:r.UINT16_BE.get(e,t+2)/1e3,minimumFrameSize:r.UINT24_BE.get(e,t+4),maximumFrameSize:r.UINT24_BE.get(e,t+7),sampleRate:r.UINT24_BE.get(e,t+10)>>4,channels:s.f5(e,t+12,4,3)+1,bitsPerSample:s.f5(e,t+12,7,5)+1,totalSamples:s.f5(e,t+13,4,36),fileMD5:new r.Uint8ArrayType(16).get(e,t+18)})}},94481(e,t,a){a.d(t,{k:()=>m});var s=a(10718),r=a(17833),i=a(47675),n=a(80400),o=a(68191),h=a(74604);const g=r("music-metadata:parser:ID3");class m extends h.s{constructor(){super(...arguments),this.id3parser=new n.S}static async startsWithID3v2Header(e){return"ID3"===(await e.peekToken(i.yW)).fileIdentifier}async parse(){try{await this.parseID3v2()}catch(e){if(!(e instanceof s.d1))throw e;g("End-of-stream")}}finalize(){}async parseID3v2(){if(await this.tryReadId3v2Headers(),g("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny())this.finalize();else{const e=new o.Bn(this.metadata,this.tokenizer,this.options);await e.parse(),this.finalize()}}async tryReadId3v2Headers(){if("ID3"===(await this.tokenizer.peekToken(i.yW)).fileIdentifier)return g("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}},78409(e,t,a){a.r(t),a.d(t,{OggContentError:()=>N,OggParser:()=>U});var s=a(4017),r=a(10718),i=a(17833),n=a(74604),o=a(27232),h=a(63324);class g extends((0,h.fO)("Opus")){}class m{constructor(e){if(e<19)throw new g("ID-header-page 0 should be at least 19 bytes long");this.len=e}get(e,t){return{magicSignature:new s.StringType(8,"ascii").get(e,t+0),version:s.UINT8.get(e,t+8),channelCount:s.UINT8.get(e,t+9),preSkip:s.UINT16_LE.get(e,t+10),inputSampleRate:s.UINT32_LE.get(e,t+12),outputGain:s.UINT16_LE.get(e,t+16),channelMapping:s.UINT8.get(e,t+18)}}}class d extends o._{constructor(e,t,a){super(e,t),this.idHeader=null,this.lastPos=-1,this.tokenizer=a,this.durationOnLastPage=!0}parseFirstPage(e,t){if(this.metadata.setFormat("codec","Opus"),this.idHeader=new m(t.length).get(t,0),"OpusHead"!==this.idHeader.magicSignature)throw new g("Illegal ogg/Opus magic-signature");this.metadata.setFormat("sampleRate",this.idHeader.inputSampleRate),this.metadata.setFormat("numberOfChannels",this.idHeader.channelCount),this.metadata.setAudioOnly()}async parseFullPage(e){"OpusTags"===new s.StringType(8,"ascii").get(e,0)&&(await this.parseUserCommentList(e,8),this.lastPos=this.tokenizer.position-e.length)}calculateDuration(e){if(this.lastPageHeader&&(e||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0){const e=this.lastPageHeader.absoluteGranulePosition-this.idHeader.preSkip;if(this.metadata.setFormat("numberOfSamples",e),this.metadata.setFormat("duration",e/48e3),-1!==this.lastPos&&this.tokenizer.fileInfo.size&&this.metadata.format.duration){const e=this.tokenizer.fileInfo.size-this.lastPos;this.metadata.setFormat("bitrate",8*e/this.metadata.format.duration)}}}}var c=a(56185);const l=i("music-metadata:parser:ogg:speex");class p extends o._{constructor(e,t,a){super(e,t)}parseFirstPage(e,t){l("First Ogg/Speex page");const a=(r=t,i=0,{speex:new s.StringType(8,"ascii").get(r,i+0),version:c.qW(new s.StringType(20,"ascii").get(r,i+8)),version_id:s.INT32_LE.get(r,i+28),header_size:s.INT32_LE.get(r,i+32),rate:s.INT32_LE.get(r,i+36),mode:s.INT32_LE.get(r,i+40),mode_bitstream_version:s.INT32_LE.get(r,i+44),nb_channels:s.INT32_LE.get(r,i+48),bitrate:s.INT32_LE.get(r,i+52),frame_size:s.INT32_LE.get(r,i+56),vbr:s.INT32_LE.get(r,i+60),frames_per_packet:s.INT32_LE.get(r,i+64),extra_headers:s.INT32_LE.get(r,i+68),reserved1:s.INT32_LE.get(r,i+72),reserved2:s.INT32_LE.get(r,i+76)});var r,i;this.metadata.setFormat("codec",`Speex ${a.version}`),this.metadata.setFormat("numberOfChannels",a.nb_channels),this.metadata.setFormat("sampleRate",a.rate),-1!==a.bitrate&&this.metadata.setFormat("bitrate",a.bitrate),this.metadata.setAudioOnly()}}const u=i("music-metadata:parser:ogg:theora");class f{constructor(e,t,a){this.durationOnLastPage=!1,this.metadata=e}async parsePage(e,t){e.headerType.firstPage&&await this.parseFirstPage(e,t)}calculateDuration(){u("duration calculation not implemented")}async parseFirstPage(e,t){u("First Ogg/Theora page"),this.metadata.setFormat("codec","Theora");const a=(r=t,i=0,{id:new s.StringType(7,"ascii").get(r,i),vmaj:s.UINT8.get(r,i+7),vmin:s.UINT8.get(r,i+8),vrev:s.UINT8.get(r,i+9),vmbw:s.UINT16_BE.get(r,i+10),vmbh:s.UINT16_BE.get(r,i+17),nombr:s.UINT24_BE.get(r,i+37),nqual:s.UINT8.get(r,i+40)});var r,i;this.metadata.setFormat("bitrate",a.nombr),this.metadata.setFormat("hasVideo",!0)}flush(){return Promise.resolve()}}const T={len:27,get:(e,t)=>({capturePattern:new s.StringType(4,"latin1").get(e,t),version:s.UINT8.get(e,t+4),headerType:{continued:c.mh(e,t+5,0),firstPage:c.mh(e,t+5,1),lastPage:c.mh(e,t+5,2)},absoluteGranulePosition:Number(s.UINT64_LE.get(e,t+6)),streamSerialNumber:s.UINT32_LE.get(e,t+14),pageSequenceNo:s.UINT32_LE.get(e,t+18),pageChecksum:s.UINT32_LE.get(e,t+22),page_segments:s.UINT8.get(e,t+26)})};class I{static sum(e,t,a){const s=new DataView(e.buffer,0);let r=0;for(let e=t;e<t+a;++e)r+=s.getUint8(e);return r}constructor(e){this.len=e.page_segments}get(e,t){return{totalPageSize:I.sum(e,t,this.len)}}}var P=a(54489),w=a(62465),y=a(5031),b=a(92304);const k=i("music-metadata:parser:ogg:theora");class _{constructor(e,t,a){this.durationOnLastPage=!1,this.metadata=e,this.options=t,this.tokenizer=a,this.flacParser=new w.FlacParser(this.metadata,this.tokenizer,t)}async parsePage(e,t){e.headerType.firstPage&&await this.parseFirstPage(e,t)}calculateDuration(){k("duration calculation not implemented")}async parseFirstPage(e,t){if(k("First Ogg/FLAC page"),"fLaC"!==(await y.e.get(t,9)).toString())throw new Error("Invalid FLAC preamble");const a=await P.Tw.get(t,13);await this.parseDataBlock(a,t.subarray(13+P.Tw.len))}async parseDataBlock(e,t){switch(k(`blockHeader type=${e.type}, length=${e.length}`),e.type){case P._B.STREAMINFO:{const e=P.om.get(t,0);return this.flacParser.processsStreamInfo(e)}case P._B.PADDING:case P._B.APPLICATION:case P._B.SEEKTABLE:break;case P._B.VORBIS_COMMENT:return this.flacParser.parseComment(t);case P._B.PICTURE:if(!this.options.skipCovers){const e=new b.xu(t.length).get(t,0);return this.flacParser.addPictureTag(e)}break;default:this.metadata.addWarning(`Unknown block type: ${e.type}`)}return this.tokenizer.ignore(e.length).then()}flush(){return Promise.resolve()}}class N extends((0,h.fO)("Ogg")){}const S=i("music-metadata:parser:ogg");class E{constructor(e,t,a){this.pageNumber=0,this.closed=!1,this.metadata=e,this.streamSerial=t,this.options=a}async parsePage(e,t){this.pageNumber=t.pageSequenceNo,S("serial=%s page#=%s, Ogg.id=%s",t.streamSerialNumber,t.pageSequenceNo,t.capturePattern);const a=await e.readToken(new I(t));S("totalPageSize=%s",a.totalPageSize);const r=await e.readToken(new s.Uint8ArrayType(a.totalPageSize));if(S("firstPage=%s, lastPage=%s, continued=%s",t.headerType.firstPage,t.headerType.lastPage,t.headerType.continued),t.headerType.firstPage){this.metadata.setFormat("container","Ogg");const a=r.subarray(0,7),s=Array.from(a).filter(e=>e>=32&&e<=126).map(e=>String.fromCharCode(e)).join("");switch(s){case"vorbis":S(`Set Ogg stream serial ${t.streamSerialNumber}, codec=Vorbis`),this.pageConsumer=new o._(this.metadata,this.options);break;case"OpusHea":S("Set page consumer to Ogg/Opus"),this.pageConsumer=new d(this.metadata,this.options,e);break;case"Speex ":S("Set page consumer to Ogg/Speex"),this.pageConsumer=new p(this.metadata,this.options,e);break;case"fishead":case"theora":S("Set page consumer to Ogg/Theora"),this.pageConsumer=new f(this.metadata,this.options,e);break;case"FLAC":S("Set page consumer to Vorbis"),this.pageConsumer=new _(this.metadata,this.options,e);break;default:throw new N(`Ogg codec not recognized (id=${s}`)}}if(t.headerType.lastPage&&(this.closed=!0),!this.pageConsumer)throw new Error("pageConsumer should be initialized");await this.pageConsumer.parsePage(t,r)}}class U extends n.s{constructor(){super(...arguments),this.streams=new Map}async parse(){this.streams=new Map;let e,t=!1;try{do{if(e=await this.tokenizer.readToken(T),"OggS"!==e.capturePattern)throw new N("Invalid Ogg capture pattern");let t=this.streams.get(e.streamSerialNumber);if(t||(t=new E(this.metadata,e.streamSerialNumber,this.options),this.streams.set(e.streamSerialNumber,t)),await t.parsePage(this.tokenizer,e),t.pageNumber>12&&(!this.options.duration||![...this.streams.values()].find(e=>e.pageConsumer?.durationOnLastPage))){S("Stop processing Ogg stream");break}}while(![...this.streams.values()].every(e=>e.closed))}catch(e){if(e instanceof r.d1)S("Reached end-of-stream"),t=!0;else{if(!(e instanceof N))throw e;this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`)}}for(const e of this.streams.values())e.closed||(this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${e.streamSerial}`),await(e.pageConsumer?.flush())),e.pageConsumer?.calculateDuration(t)}}},92304(e,t,a){a.d(t,{Sl:()=>o,Z:()=>n,xu:()=>i});var s=a(4017),r=a(47675);class i{static fromBase64(e){return i.fromBuffer(Uint8Array.from(atob(e),e=>e.charCodeAt(0)))}static fromBuffer(e){return new i(e.length).get(e,0)}constructor(e){this.len=e}get(e,t){const a=r.n5[s.UINT32_BE.get(e,t)];t+=4;const i=s.UINT32_BE.get(e,t);t+=4;const n=new s.StringType(i,"utf-8").get(e,t);t+=i;const o=s.UINT32_BE.get(e,t);t+=4;const h=new s.StringType(o,"utf-8").get(e,t);t+=o;const g=s.UINT32_BE.get(e,t);t+=4;const m=s.UINT32_BE.get(e,t);t+=4;const d=s.UINT32_BE.get(e,t);t+=4;const c=s.UINT32_BE.get(e,t);t+=4;const l=s.UINT32_BE.get(e,t);return t+=4,{type:a,format:n,description:h,width:g,height:m,colour_depth:d,indexed_color:c,data:e.slice(t,t+l)}}}const n={len:7,get:(e,t)=>({packetType:s.UINT8.get(e,t),vorbis:new s.StringType(6,"ascii").get(e,t+1)})},o={len:23,get:(e,t)=>({version:s.UINT32_LE.get(e,t+0),channelMode:s.UINT8.get(e,t+4),sampleRate:s.UINT32_LE.get(e,t+5),bitrateMax:s.UINT32_LE.get(e,t+9),bitrateNominal:s.UINT32_LE.get(e,t+13),bitrateMin:s.UINT32_LE.get(e,t+17)})}},61902(e,t,a){a.d(t,{Y:()=>i});var s=a(4017),r=a(12971);class i{constructor(e,t){this.data=e,this.offset=t}readInt32(){const e=s.UINT32_LE.get(this.data,this.offset);return this.offset+=4,e}readStringUtf8(){const e=this.readInt32(),t=(0,r.c)(this.data.subarray(this.offset,this.offset+e),"utf-8");return this.offset+=e,t}parseUserComment(){const e=this.offset,t=this.readStringUtf8(),a=t.indexOf("=");return{key:t.substring(0,a).toUpperCase(),value:t.substring(a+1),len:this.offset-e}}}},27232(e,t,a){a.d(t,{_:()=>m});var s=a(4017),r=a(17833),i=a(61902),n=a(92304),o=a(63324);const h=r("music-metadata:parser:ogg:vorbis1");class g extends((0,o.fO)("Vorbis")){}class m{constructor(e,t){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=e,this.options=t}async parsePage(e,t){if(this.lastPageHeader=e,e.headerType.firstPage)this.parseFirstPage(e,t);else{if(e.headerType.continued){if(0===this.pageSegments.length)throw new g("Cannot continue on previous page");this.pageSegments.push(t)}if(e.headerType.lastPage||!e.headerType.continued){if(this.pageSegments.length>0){const e=m.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(e)}this.pageSegments=e.headerType.lastPage?[]:[t]}}}static mergeUint8Arrays(e){const t=e.reduce((e,t)=>e+t.length,0),a=new Uint8Array(t);return e.forEach((e,t,s)=>{const r=s.slice(0,t).reduce((e,t)=>e+t.length,0);a.set(e,r)}),a}async flush(){await this.parseFullPage(m.mergeUint8Arrays(this.pageSegments))}async parseUserComment(e,t){const a=new i.Y(e,t).parseUserComment();return await this.addTag(a.key,a.value),a.len}async addTag(e,t){if("METADATA_BLOCK_PICTURE"===e&&"string"==typeof t){if(this.options.skipCovers)return void h("Ignore picture");t=n.xu.fromBase64(t),h(`Push picture: id=${e}, format=${t.format}`)}else h(`Push tag: id=${e}, value=${t}`);await this.metadata.addTag("vorbis",e,t)}calculateDuration(e){this.lastPageHeader&&(e||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(e,t){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),h("Parse first page");const a=n.Z.get(t,0);if("vorbis"!==a.vorbis)throw new g("Metadata does not look like Vorbis");if(1!==a.packetType)throw new g("First Ogg page should be type 1: the identification header");{const e=n.Sl.get(t,n.Z.len);this.metadata.setFormat("sampleRate",e.sampleRate),this.metadata.setFormat("bitrate",e.bitrateNominal),this.metadata.setFormat("numberOfChannels",e.channelMode),h("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",e.sampleRate,e.bitrateNominal,e.channelMode)}}async parseFullPage(e){const t=n.Z.get(e,0);if(h("Parse full page: type=%s, byteLength=%s",t.packetType,e.byteLength),3===t.packetType)return this.parseUserCommentList(e,n.Z.len)}async parseUserCommentList(e,t){const a=s.UINT32_LE.get(e,t);t+=4,t+=a;let r=s.UINT32_LE.get(e,t);for(t+=4;r-- >0;)t+=await this.parseUserComment(e,t)}}}}]);
//# sourceMappingURL=8409.818ca961547510c632c9.js.map