1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8990],{8990:(e,a,t)=>{t.d(a,{S:()=>v});var r=t(6896),i=t(3220),s=t(5016),n=t(8498),l=t(9270),d=t(2277);let o={len:16,get:(e,a)=>{let t=r.UINT32_BE.get(e,a+8),i=r.UINT32_BE.get(e,a+12);return{startTime:r.UINT32_BE.get(e,a),endTime:r.UINT32_BE.get(e,a+4),startOffset:0xffffffff===t?void 0:t,endOffset:0xffffffff===i?void 0:i}}};var c=t(194);function u(e){switch(e){case 2:return 6;case 3:case 4:return 10;default:throw g(e)}}function h(e,a,t){switch(a){case 2:var i=e,l=a,d=t;let o={id:(0,c.c)(i.subarray(0,3),"ascii"),length:r.UINT24_BE.get(i,3)};return o.id.match(/^[A-Z0-9]{3}$/)||d.addWarning(`Invalid ID3v2.${l} frame-header-ID: ${o.id}`),o;case 3:case 4:var u,h=e,m=a,f=t;let p={id:(0,c.c)(h.subarray(0,4),"ascii"),length:(4===m?n.St:r.UINT32_BE).get(h,4),flags:(u=h.subarray(8,10),3===m?{status:{tag_alter_preservation:s.mh(u,0,7),file_alter_preservation:s.mh(u,0,6),read_only:s.mh(u,0,5)},format:{compression:s.mh(u,1,7),encryption:s.mh(u,1,6),grouping_identity:s.mh(u,1,5),unsynchronisation:!1,data_length_indicator:!1}}:{status:{tag_alter_preservation:s.mh(u,0,6),file_alter_preservation:s.mh(u,0,5),read_only:s.mh(u,0,4)},format:{grouping_identity:s.mh(u,1,6),compression:s.mh(u,1,3),encryption:s.mh(u,1,2),unsynchronisation:s.mh(u,1,1),data_length_indicator:s.mh(u,1,0)}})};return p.id.match(/^[A-Z0-9]{4}$/)||f.addWarning(`Invalid ID3v2.${m} frame-header-ID: ${p.id}`),p;default:throw g(a)}}function g(e){throw new b(`Unexpected majorVer: ${e}`)}let m=i("music-metadata:id3v2:frame-parser"),f="latin1",p={encoding:f,bom:!1};function y(e){return"RX"===e?"Remix":"CR"===e?"Cover":e.match(/^\d*$/)?l.jR[Number.parseInt(e,10)]:void 0}class T{constructor(e,a){this.major=e,this.warningCollector=a}readData(e,a,t){let i;if(0===e.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${a}`);let{encoding:l,bom:d}=n.YF.get(e,0),c=e.length,g=0,v=[],I=T.getNullTerminatorLength(l);switch(m(`Parsing tag type=${a}, encoding=${l}, bom=${d}`),"TXXX"!==a&&"T"===a[0]?"T*":a){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let t;try{t=T.trimNullPadding(s.sc(e.subarray(1),l))}catch(e){if(e instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${a} header has invalid string value: ${e.message}`);break}throw e}switch(a){case"TMCL":case"TIPL":case"IPLS":v=T.functionList(this.splitValue(a,t));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":v=t;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":v=this.splitValue(a,t);break;case"TCO":case"TCON":v=this.splitValue(a,t).map(e=>(function(e){let a,t=[],r="";for(let i of e)if("string"==typeof a)if("("===i&&""===a)r+="(",a=void 0;else if(")"===i){""!==r&&(t.push(r),r="");let e=y(a);e&&t.push(e),a=void 0}else a+=i;else"("===i?a="":r+=i;return r&&(0===t.length&&r.match(/^\d*$/)&&(r=y(r)),r&&t.push(r)),t})(e)).reduce((e,a)=>e.concat(a),[]);break;case"PCS":case"PCST":v=Array.isArray(v=this.major>=4?this.splitValue(a,t):[t])&&""===v[0]?1:0;break;default:v=this.major>=4?this.splitValue(a,t):[t]}break}case"TXXX":{let t=T.readIdentifierAndData(e.subarray(1),l);v={description:t.id,text:this.splitValue(a,s.sc(t.data,l).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(t){let a={};switch(e=e.subarray(1),this.major){case 2:a.format=s.sc(e.subarray(0,3),"latin1"),e=e.subarray(3);break;case 3:case 4:i=s.sX(e,f),a.format=s.sc(e.subarray(0,i),f),e=e.subarray(i+1);break;default:throw function(e){throw new b(`Unexpected majorVer: ${e}`)}(this.major)}a.format=T.fixPictureMimeType(a.format),a.type=n.n5[e[0]],e=e.subarray(1),i=s.sX(e,l),a.description=s.sc(e.subarray(0,i),l),a.data=e=e.subarray(i+I),v=a}break;case"CNT":case"PCNT":v=(0,s.ku)(e);break;case"SYLT":{let a=n.aY.get(e,0);e=e.subarray(n.aY.len);let t={descriptor:"",language:a.language,contentType:a.contentType,timeStampFormat:a.timeStampFormat,syncText:[]},i=!1;for(;e.length>0;){let s=T.readNullTerminatedString(e,a.encoding);if(e=e.subarray(s.len),i){let a=r.UINT32_BE.get(e,0);e=e.subarray(r.UINT32_BE.len),t.syncText.push({text:s.text,timestamp:a})}else t.descriptor=s.text,i=!0}v=t;break}case"ULT":case"USLT":case"COM":case"COMM":{let a=n.Jp.get(e,g);g+=n.Jp.len;let t=T.readNullTerminatedString(e.subarray(g),a.encoding);g+=t.len;let r=T.readNullTerminatedString(e.subarray(g),a.encoding);
1v={language:a.language,descriptor:t.text,text:r.text};break}case"UFID":{let a=T.readIdentifierAndData(e,f);v={owner_identifier:a.id,identifier:a.data};break}case"PRIV":{let a=T.readIdentifierAndData(e,f);v={owner_identifier:a.id,data:a.data};break}case"POPM":{e=e.subarray(g);let t=T.readNullTerminatedString(e,p),i=t.text;if(0===(e=e.subarray(t.len)).length){this.warningCollector.addWarning(`id3v2.${this.major} type=${a} POPM frame missing rating byte`),v={email:i,rating:0,counter:void 0};break}let n=r.UINT8.get(e,0),l=e.subarray(r.UINT8.len);v={email:i,rating:n,counter:l.length>0?(0,s.ku)(l):void 0};break}case"GEOB":{let a=n.YF.get(e,0);e=e.subarray(1);let t=T.readNullTerminatedString(e,p),r=t.text;e=e.subarray(t.len);let i=T.readNullTerminatedString(e,a),s=i.text;e=e.subarray(i.len);let l=T.readNullTerminatedString(e,a);v={type:r,filename:s,description:l.text,data:e=e.subarray(l.len)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":v=T.readNullTerminatedString(e,p).text;break;case"WXXX":{let a=n.YF.get(e,0);e=e.subarray(1);let t=T.readNullTerminatedString(e,a),r=t.text;e=e.subarray(t.len),v={description:r,url:T.trimNullPadding(s.sc(e,f))};break}case"WFD":case"WFED":{let a=n.YF.get(e,0);e=e.subarray(1),v=T.readNullTerminatedString(e,a).text;break}case"MCDI":v=e.subarray(0,c);break;case"CHAP":{m("Reading CHAP"),i=s.sX(e,f);let a={label:s.sc(e.subarray(0,i),f),info:o.get(e,i+1),frames:new Map};for(g+=i+1+o.len;g<c;){let r=h(e.subarray(g),this.major,this.warningCollector);g+=u(this.major);let i=this.readData(e.subarray(g,g+r.length),r.id,t);g+=r.length,a.frames.set(r.id,i)}v=a;break}case"CTOC":{m("Reading CTOC");let a=s.sX(e,f),r=s.sc(e.subarray(0,a),f);g=a+1;let i=e[g++],n=e[g++],l=[];for(let a=0;a<n&&g<c;a++){let a=s.sX(e.subarray(g),f),t=s.sc(e.subarray(g,g+a),f);l.push(t),g+=a+1}let d={label:r,flags:{topLevel:(2&i)!=0,ordered:(1&i)!=0},childElementIds:l,frames:new Map};for(;g<c;){let a=h(e.subarray(g),this.major,this.warningCollector);g+=u(this.major);let r=this.readData(e.subarray(g,g+a.length),a.id,t);g+=a.length,d.frames.set(a.id,r)}v=d;break}default:m(`Warning: unsupported id3v2-tag-type: ${a}`)}return v}static readNullTerminatedString(e,a){let t=2*!!a.bom,r=e.length,i=e.subarray(t),n=s.sX(i,a.encoding);if(n>=i.length)return{text:s.sc(e,a.encoding),len:r};let l=e.subarray(0,t+n);return{text:s.sc(l,a.encoding),len:t+n+T.getNullTerminatorLength(a.encoding)}}static fixPictureMimeType(e){switch(e=e.toLocaleLowerCase()){case"jpg":return"image/jpeg";case"png":return"image/png"}return e}static functionList(e){let a={};for(let t=0;t+1<e.length;t+=2){let r=e[t+1].split(",");a[e[t]]=a[e[t]]?a[e[t]].concat(r):r}return a}splitValue(e,a){let t;return this.major<4?(t=a.split(/\x00/g)).length>1?this.warningCollector.addWarning(`ID3v2.${this.major} ${e} uses non standard null-separator.`):t=a.split(/\//g):t=a.split(/\x00/g),T.trimArray(t)}static trimArray(e){return e.map(e=>T.trimNullPadding(e).trim())}static trimNullPadding(e){let a=e.length;for(;a>0&&0===e.charCodeAt(a-1);)a--;return a===e.length?e:e.slice(0,a)}static readIdentifierAndData(e,a){let t=T.readNullTerminatedString(e,{encoding:a,bom:!1});return{id:t.text,data:e.subarray(t.len)}}static getNullTerminatorLength(e){return e.startsWith("utf-16")?2:1}}class b extends(0,d.fO)("id3v2"){}class v{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(e){let a=0,t=0;for(;a<e.length-1;)a!==t&&(e[t]=e[a]),a+=255===e[a]&&0===e[a+1]?2:1,t++;return a<e.length&&(e[t++]=e[a]),e.subarray(0,t)}static readFrameData(e,a,t,r,i){let s=new T(t,i);switch(t){case 2:return s.readData(e,a.id,r);case 3:case 4:return a.flags?.format.unsynchronisation&&(e=v.removeUnsyncBytes(e)),a.flags?.format.data_length_indicator&&(e=e.subarray(4,e.length)),s.readData(e,a.id,r);default:throw function(e){throw new b(`Unexpected majorVer: ${e}`)}(t)}}static makeDescriptionTagName(e,a){return e+(a?`:${a}`:"")}async parse(e,a,t){this.tokenizer=a,this.metadata=e,this.options=t;let r=await this.tokenizer.readToken(n.yW);if("ID3"!==r.fileIdentifier)throw new b("expected ID3-header file-identifier 'ID3' was not found");this.id3Header=r,this.headerType=`ID3v2.${r.version.major}`,await (r.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(r.size));let i=v.mapId3v2Chapters(this.metadata.native[this.headerType]);this.metadata.setFormat("chapters",i)}async parseExtendedHeader(){let e=await this.tokenizer.readToken(n.nl),a=e.size-n.nl.len;return a>0?this.parseExtendedHeaderData(a,e.size):this.parseId3Data(this.id3Header.size-e.size)}async parseExtendedHeaderData(e,a){return await this.tokenizer.ignore(e),this.parseId3Data(this.id3Header.size-a)}async parseId3Data(e){let a=await this.tokenizer.readToken(new r.Uint8ArrayType(e));for(let e of this.parseMetadata(a))"TXXX"===e.id?e.value&&await this.handleTag(e,e.value.text,()=>e.value.description):await (Array.isArray(e.value)?Promise.all(e.value.map(a=>this.addTag(e.id,a))):this.addTag(e.id,e.value))}async handleTag(e,a,t,r=e=>e){await Promise.all(a.map(a=>this.addTag(v.makeDescriptionTagName(e.id,t(a)),r(a))))}async addTag(e,a){await this.metadata.addTag(this.headerType,e,a)}parseMetadata(e){let a=0,t=[];for(;a!==e.length;){let r=u(this.id3Header.version.major);if(a+r>e.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let i=e.subarray(a,a+r);a+=r;let s=h(i,this.id3Header.version.major,this.metadata),n=e.subarray(a,a+s.length);a+=s.length;let l=v.readFrameData(n,s,this.id3Header.version.major,!this.options.skipCovers,this.metadata);l&&t.push({id:s.id,value:l})}return t}static mapId3v2Chapters(e){if(!e)return;let a=e.filter(e=>
1"CHAP"===e.id);if(!a?.length)return;let t=e.filter(e=>"CTOC"===e.id),r=t?.find(e=>e.value.flags?.topLevel),i=new Map;for(let e of a)i.set(e.value.label,e.value);let s=r?.value.childElementIds,n=[];for(let e of s??[...i.keys()]){let a=i.get(e);if(!a)continue;let t=a.frames,r=t.get("TIT2");r&&n.push({id:e,title:r,url:t.get("WXXX"),start:a.info.startTime/1e3,end:a.info.endTime/1e3,image:t.get("APIC")})}return s||n.sort((e,a)=>e.start-a.start),n.length?n:void 0}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.