1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4408],{594408:(e,a,t)=>{t.d(a,{S:()=>p});var r=t(506057),i=t(722931),s=t(718857),n=t(320787),d=t(398421),c=t(172208);let l=s("music-metadata:id3v2:frame-parser"),o="latin1";function h(e){return"RX"===e?"Remix":"CR"===e?"Cover":e.match(/^\d*$/)?d.jR[Number.parseInt(e)]:void 0}class g{constructor(e,a){this.major=e,this.warningCollector=a}readData(e,a,t){let s;if(0===e.length)return void this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${a}`);let{encoding:d,bom:c}=n.YF.get(e,0),m=e.length,p=0,f=[],T=g.getNullTerminatorLength(d);switch(l(`Parsing tag type=${a}, encoding=${d}, bom=${c}`),"TXXX"!==a&&"T"===a[0]?"T*":a){case"T*":case"GRP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let t;try{t=i.sc(e.slice(1),d).replace(/\x00+$/,"")}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":f=g.functionList(this.splitValue(a,t));break;case"TRK":case"TRCK":case"TPOS":f=t;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":f=this.splitValue(a,t);break;case"TCO":case"TCON":f=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=h(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=h(r)),r&&t.push(r)),t})(e)).reduce((e,a)=>e.concat(a),[]);break;case"PCS":case"PCST":f=Array.isArray(f=this.major>=4?this.splitValue(a,t):[t])&&""===f[0]?1:0;break;default:f=this.major>=4?this.splitValue(a,t):[t]}break}case"TXXX":{let t=g.readIdentifierAndData(e,p+1,m,d);f={description:t.id,text:this.splitValue(a,i.sc(t.data,d).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(t){let a={};switch(p+=1,this.major){case 2:a.format=i.sc(e.slice(p,p+3),"latin1"),p+=3;break;case 3:case 4:s=i.sX(e,p,m,o),a.format=i.sc(e.slice(p,s),o),p=s+1;break;default:throw function(e){throw new u(`Unexpected majorVer: ${e}`)}(this.major)}a.format=g.fixPictureMimeType(a.format),a.type=n.n5[e[p]],p+=1,s=i.sX(e,p,m,d),a.description=i.sc(e.slice(p,s),d),p=s+T,a.data=e.slice(p,m),f=a}break;case"CNT":case"PCNT":f=r.UINT32_BE.get(e,0);break;case"SYLT":{let a=n.aY.get(e,0);p+=n.aY.len;let t={descriptor:"",language:a.language,contentType:a.contentType,timeStampFormat:a.timeStampFormat,syncText:[]},i=!1;for(;p<m;){let s=g.readNullTerminatedString(e.subarray(p),a.encoding);if(p+=s.len,i){let a=r.UINT32_BE.get(e,p);p+=r.UINT32_BE.len,t.syncText.push({text:s.text,timestamp:a})}else t.descriptor=s.text,i=!0}f=t;break}case"ULT":case"USLT":case"COM":case"COMM":{let a=n.Jp.get(e,p);p+=n.Jp.len;let t=g.readNullTerminatedString(e.subarray(p),a.encoding);p+=t.len;let r=g.readNullTerminatedString(e.subarray(p),a.encoding);f={language:a.language,descriptor:t.text,text:r.text};break}case"UFID":{let a=g.readIdentifierAndData(e,p,m,o);f={owner_identifier:a.id,identifier:a.data};break}case"PRIV":{let a=g.readIdentifierAndData(e,p,m,o);f={owner_identifier:a.id,data:a.data};break}case"POPM":{s=i.sX(e,p,m,o);let a=i.sc(e.slice(p,s),o),t=m-(p=s+1);f={email:a,rating:r.UINT8.get(e,p),counter:t>=5?r.UINT32_BE.get(e,p+1):void 0};break}case"GEOB":{s=i.sX(e,p+1,m,d);let a=i.sc(e.slice(p+1,s),o);p=s+1,s=i.sX(e,p,m,d);let t=i.sc(e.slice(p,s),o);p=s+1,s=i.sX(e,p,m,d);let r=i.sc(e.slice(p,s),o);p=s+1,f={type:a,filename:t,description:r,data:e.slice(p,m)};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":s=i.sX(e,p+1,m,d),f=i.sc(e.slice(p,s),o);break;case"WXXX":{s=i.sX(e,p+1,m,d);let a=i.sc(e.slice(p+1,s),d);p=s+("utf-16le"===d?2:1),f={description:a,url:i.sc(e.slice(p,m),o)};break}case"WFD":case"WFED":f=i.sc(e.slice(p+1,i.sX(e,p+1,m,d)),d);break;case"MCDI":f=e.slice(0,m);break;default:l(`Warning: unsupported id3v2-tag-type: ${a}`)}return f}static readNullTerminatedString(e,a){let t=2*!!a.bom,r=i.sX(e,t,e.length,a.encoding),s=e.slice(t,r);return t="utf-16le"===a.encoding?r+2:r+1,{text:i.sc(s,a.encoding),len:t}}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),g.trimArray(t)}static trimArray(e){return e.map(e=>e.replace(/\x00+$/,"").trim())}
1static readIdentifierAndData(e,a,t,r){let s=i.sX(e,a,t,r),n=i.sc(e.slice(a,s),r);return a=s+g.getNullTerminatorLength(r),{id:n,data:e.slice(a,t)}}static getNullTerminatorLength(e){return"utf-16le"===e?2:1}}class u extends(0,c.fO)("id3v2"){}let m=new TextDecoder("ascii");class p{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.slice(0,t)}static getFrameHeaderLength(e){switch(e){case 2:return 6;case 3:case 4:return 10;default:throw f(e)}}static readFrameFlags(e){return{status:{tag_alter_preservation:i.mh(e,0,6),file_alter_preservation:i.mh(e,0,5),read_only:i.mh(e,0,4)},format:{grouping_identity:i.mh(e,1,7),compression:i.mh(e,1,3),encryption:i.mh(e,1,2),unsynchronisation:i.mh(e,1,1),data_length_indicator:i.mh(e,1,0)}}}static readFrameData(e,a,t,r,i){let s=new g(t,i);switch(t){case 2:return s.readData(e,a.id,r);case 3:case 4:return a.flags?.format.unsynchronisation&&(e=p.removeUnsyncBytes(e)),a.flags?.format.data_length_indicator&&(e=e.slice(4,e.length)),s.readData(e,a.id,r);default:throw f(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 u("expected ID3-header file-identifier 'ID3' was not found");return this.id3Header=r,this.headerType=`ID3v2.${r.version.major}`,r.flags.isExtendedHeader?this.parseExtendedHeader():this.parseId3Data(r.size)}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(p.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=p.getFrameHeaderLength(this.id3Header.version.major);if(a+r>e.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let i=e.slice(a,a+r);a+=r;let s=this.readFrameHeader(i,this.id3Header.version.major),n=e.slice(a,a+s.length);a+=s.length;let d=p.readFrameData(n,s,this.id3Header.version.major,!this.options.skipCovers,this.metadata);d&&t.push({id:s.id,value:d})}return t}readFrameHeader(e,a){let t;switch(a){case 2:(t={id:m.decode(e.slice(0,3)),length:r.UINT24_BE.get(e,3)}).id.match(/[A-Z0-9]{3}/g)||this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${t.id}`);break;case 3:case 4:(t={id:m.decode(e.slice(0,4)),length:(4===a?n.St:r.UINT32_BE).get(e,4),flags:p.readFrameFlags(e.slice(8,10))}).id.match(/[A-Z0-9]{4}/g)||this.metadata.addWarning(`Invalid ID3v2.${this.id3Header.version.major} frame-header-ID: ${t.id}`);break;default:throw f(a)}return t}}function f(e){throw new u(`Unexpected majorVer: ${e}`)}}}]); 2//# sourceMappingURL=4408.045ed5d3807730cf.js.map
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.