med-scribe-alliance-ts-sdk 2.0.13 → 2.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -415,6 +415,12 @@ export interface IRecorder {
415
415
  export interface StopRecordingResult {
416
416
  failedUploads: string[];
417
417
  totalFiles: number;
418
+ }
419
+ /**
420
+ * Result of ScribeClient.endRecording() / RecordingManager.stop().
421
+ */
422
+ export interface EndRecordingResult extends StopRecordingResult {
423
+ sessionEnded: boolean;
418
424
  endSessionResponse?: EndSessionResponse;
419
425
  }
420
426
  /**
@@ -475,6 +481,7 @@ export interface AudioEventChunkReady {
475
481
  data: {
476
482
  chunkIndex: number;
477
483
  fileName: string;
484
+ chunkData: Uint8Array[];
478
485
  };
479
486
  }
480
487
  export interface AudioEventFrameProcessed {
@@ -579,6 +586,11 @@ export interface WorkerTerminateMessage {
579
586
  type: "terminate";
580
587
  }
581
588
  export type MainToWorkerMessage = WorkerCompressAndUploadMessage | WorkerWaitForUploadsMessage | WorkerUpdateTokenMessage | WorkerTerminateMessage;
589
+ export interface WorkerChunkEncodedMessage {
590
+ type: "chunk_encoded";
591
+ fileName: string;
592
+ chunkData: Uint8Array[];
593
+ }
582
594
  export interface WorkerUploadSuccessMessage {
583
595
  type: "upload_success";
584
596
  fileName: string;
@@ -595,7 +607,7 @@ export interface WorkerAllUploadsCompleteMessage {
595
607
  export interface WorkerTokenRequiredMessage {
596
608
  type: "token_required";
597
609
  }
598
- export type WorkerToMainMessage = WorkerUploadSuccessMessage | WorkerUploadFailedMessage | WorkerAllUploadsCompleteMessage | WorkerTokenRequiredMessage;
610
+ export type WorkerToMainMessage = WorkerChunkEncodedMessage | WorkerUploadSuccessMessage | WorkerUploadFailedMessage | WorkerAllUploadsCompleteMessage | WorkerTokenRequiredMessage;
599
611
  export declare class ScribeClient {
600
612
  private config;
601
613
  private transport;
@@ -637,13 +649,20 @@ export declare class ScribeClient {
637
649
  */
638
650
  resumeRecording(): void;
639
651
  /**
640
- * End the active recording — stops recorder, waits for uploads, ends session.
652
+ * End the active recording.
653
+ *
654
+ * Stops the recorder, flushes pending audio, waits for uploads, and — if
655
+ * everything uploaded — ends the session. If any chunks failed to upload,
656
+ * the SDK runs one internal retry pass; if files still fail, the session
657
+ * is NOT ended and the result reports `sessionEnded: false`.
641
658
  */
642
- endRecording(): Promise<SDKResult<StopRecordingResult>>;
659
+ endRecording(): Promise<SDKResult<EndRecordingResult>>;
643
660
  /**
644
661
  * Retry uploading audio files that failed during the last recording.
645
- * Only available after endRecording() returned failed uploads.
646
- * Cleared on reset() or next startRecording().
662
+ *
663
+ * Available after `endRecording()` returns `sessionEnded: false` (or any time
664
+ * `hasFailedUploads()` is true). After retrying, call `endSession()` to
665
+ * finalize. Retry context is cleared on `reset()` or the next `startRecording()`.
647
666
  */
648
667
  retryFailedUploads(): Promise<SDKResult<RetryUploadResult>>;
649
668
  /**
@@ -663,8 +682,7 @@ export declare class ScribeClient {
663
682
  */
664
683
  createSession(sessionRequest: CreateSessionRequest): Promise<SDKResult<CreateSessionResponse>>;
665
684
  /**
666
- * End a session directly (without stopping a recording).
667
- * Uses the current active session if no sessionId is provided.
685
+ * End a session directly.
668
686
  */
669
687
  endSession(request: EndSessionRequest, sessionId?: string): Promise<SDKResult<EndSessionResponse>>;
670
688
  /**
@@ -968,16 +986,14 @@ export declare class RecordingManager {
968
986
  * Resume a paused recording.
969
987
  */
970
988
  resume(): void;
989
+ stop(): Promise<EndRecordingResult>;
971
990
  /**
972
- * Stop the active recording:
973
- * 1. Stop recorder (flushes remaining audio, waits for uploads)
974
- * 2. End session via SessionManager (sends audio_files_sent count)
975
- * 3. Clean up state
976
- * 4. Dispatch events
977
- *
978
- * @returns Stop result with failed uploads and total files
991
+ * End the session, dispatch onSessionEvent, and return the response.
992
+ * Called from stop() (auto-finalize) and finalizeAfterExternalEndSession()
993
+ * (consumer-driven). Returns undefined and dispatches onError on failure.
994
+ * Caller is responsible for cleanup.
979
995
  */
980
- stop(): Promise<StopRecordingResult>;
996
+ private finalizeSession;
981
997
  /**
982
998
  * Immediately stop the recorder without calling endSession or waiting for uploads.
983
999
  * Used by cancelSession — we don't want the server to start processing
@@ -1000,6 +1016,14 @@ export declare class RecordingManager {
1000
1016
  * Check if there are failed uploads from the last recording that can be retried.
1001
1017
  */
1002
1018
  hasFailedUploads(): boolean;
1019
+ /**
1020
+ * Called by ScribeClient.endSession() after a successful external endSession.
1021
+ * Clears the preserved recording-manager state (activeSession, activeBaseUrl,
1022
+ * retryContext) when the ended session matches our active one.
1023
+ *
1024
+ * If the consumer ended a different session, leaves our state alone.
1025
+ */
1026
+ finalizeAfterExternalEndSession(sessionId: string): void;
1003
1027
  /**
1004
1028
  * Retry uploading audio files that failed during the last recording.
1005
1029
  * Uses the stored MP3 blobs and the original upload URL.
@@ -1035,6 +1059,14 @@ export declare class RecordingManager {
1035
1059
  * Clean up recording state after stop or error.
1036
1060
  */
1037
1061
  private cleanupRecordingState;
1062
+ /**
1063
+ * Release the recorder (mic, VAD, worker) but preserve session + retry context
1064
+ * so the consumer can call retryFailedUploads() and endSession() explicitly.
1065
+ *
1066
+ * Used when stop() decides NOT to auto-end the session because uploads still
1067
+ * failed after the internal retry pass.
1068
+ */
1069
+ private partialCleanupAfterFailedFinalize;
1038
1070
  }
1039
1071
  export declare class HttpTransport implements ITransport {
1040
1072
  private accessToken?;
package/dist/index.mjs CHANGED
@@ -1139,7 +1139,10 @@ function Y(e, t = W, r = 128) {
1139
1139
  let o = [], s = i.encodeBuffer(a);
1140
1140
  s && s.length > 0 && o.push(s);
1141
1141
  let c = i.flush();
1142
- return c && c.length > 0 && o.push(c), o.length === 0 ? null : new Blob(o, { type: G.mp3 });
1142
+ return c && c.length > 0 && o.push(c), o.length === 0 ? null : {
1143
+ blob: new Blob(o, { type: G.mp3 }),
1144
+ chunks: o
1145
+ };
1143
1146
  } catch (e) {
1144
1147
  return console.error("[ScribeSDK] MP3 encoding failed:", e), null;
1145
1148
  }
@@ -1208,6 +1211,19 @@ var ie = class {
1208
1211
  }
1209
1212
  handleWorkerMessage(e) {
1210
1213
  switch (e.type) {
1214
+ case "chunk_encoded": {
1215
+ let t = this.findChunkIndex(e.fileName);
1216
+ this.callbackRegistry.dispatch("onAudioEvent", {
1217
+ type: "chunk_ready",
1218
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1219
+ data: {
1220
+ chunkIndex: t,
1221
+ fileName: e.fileName,
1222
+ chunkData: e.chunkData
1223
+ }
1224
+ });
1225
+ break;
1226
+ }
1211
1227
  case "upload_success": {
1212
1228
  let t = this.findChunkIndex(e.fileName);
1213
1229
  t >= 0 && this.fileManager.markSuccess(t), this.dispatchUploadProgress();
@@ -1242,7 +1258,8 @@ var ie = class {
1242
1258
  async doMainThreadUpload(e, t, n) {
1243
1259
  let r = null;
1244
1260
  try {
1245
- if (r = Y(e), !r) {
1261
+ let i = Y(e);
1262
+ if (!i) {
1246
1263
  this.fileManager.markFailure(n, new Blob(), "MP3 encoding failed"), this.callbackRegistry.dispatch("onUploadEvent", {
1247
1264
  type: "failed",
1248
1265
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -1253,10 +1270,19 @@ var ie = class {
1253
1270
  });
1254
1271
  return;
1255
1272
  }
1256
- let i = this.uploadUrl.endsWith("/") ? `${this.uploadUrl}${t}` : `${this.uploadUrl}/${t}`;
1273
+ r = i.blob, this.callbackRegistry.dispatch("onAudioEvent", {
1274
+ type: "chunk_ready",
1275
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1276
+ data: {
1277
+ chunkIndex: n,
1278
+ fileName: t,
1279
+ chunkData: i.chunks
1280
+ }
1281
+ });
1282
+ let a = this.uploadUrl.endsWith("/") ? `${this.uploadUrl}${t}` : `${this.uploadUrl}/${t}`;
1257
1283
  await this.transport.request({
1258
1284
  method: "POST",
1259
- url: i,
1285
+ url: a,
1260
1286
  headers: this.uploadHeaders,
1261
1287
  isUpload: !0,
1262
1288
  uploadBlob: r
@@ -1363,14 +1389,7 @@ var ie = class {
1363
1389
  status: "pending",
1364
1390
  audioFrames: e
1365
1391
  }, a = this.fileManager.addChunk(i);
1366
- this.fileManager.incrementInsertedSamples(this.bufferManager.getCurrentSampleLength(), this.bufferManager.getCurrentFrameLength()), this.bufferManager.resetBufferState(), this.workerManager.compressAndUpload(e, t, a), this.callbackRegistry.dispatch("onAudioEvent", {
1367
- type: "chunk_ready",
1368
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1369
- data: {
1370
- chunkIndex: a,
1371
- fileName: t
1372
- }
1373
- });
1392
+ this.fileManager.incrementInsertedSamples(this.bufferManager.getCurrentSampleLength(), this.bufferManager.getCurrentFrameLength()), this.bufferManager.resetBufferState(), this.workerManager.compressAndUpload(e, t, a);
1374
1393
  } catch (e) {
1375
1394
  console.error("[ScribeSDK] Error handling clip point:", e), this.callbackRegistry.dispatch("onError", {
1376
1395
  type: "worker_error",
@@ -1618,40 +1637,44 @@ var ie = class {
1618
1637
  async stop() {
1619
1638
  if (!this.recorder || !this._isRecording) return {
1620
1639
  failedUploads: [],
1621
- totalFiles: 0
1640
+ totalFiles: 0,
1641
+ sessionEnded: !1
1622
1642
  };
1643
+ let e = !1;
1623
1644
  try {
1624
- let e = await this.recorder.stop();
1625
- this.preserveRetryContext();
1626
- let t = { ...e };
1627
- if (this.activeSession) try {
1628
- let n = e.totalFiles - e.failedUploads.length, r = await this.sessionManager.endSession(this.activeBaseUrl, {
1629
- audio_files_sent: e.totalFiles,
1630
- audio_files_uploaded: n
1631
- }, this.activeSession.session_id);
1632
- t.endSessionResponse = r, this.callbackRegistry.dispatch("onSessionEvent", {
1633
- type: "ended",
1634
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1635
- data: r
1636
- });
1645
+ let t = await this.recorder.stop();
1646
+ this.preserveRetryContext(), this._isRecording = !1;
1647
+ let n = t.failedUploads;
1648
+ if (n.length > 0) try {
1649
+ n = (await this.retryFailedUploads()).stillFailed;
1637
1650
  } catch (e) {
1638
- console.error("[ScribeSDK] Failed to end session:", e), this.callbackRegistry.dispatch("onError", {
1651
+ console.error("[ScribeSDK] Internal retry pass failed:", e), this.callbackRegistry.dispatch("onError", {
1639
1652
  type: "transport_error",
1640
1653
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1641
1654
  error: {
1642
- code: "session_end_failed",
1643
- message: e instanceof Error ? e.message : "Failed to end session"
1655
+ code: "internal_retry_failed",
1656
+ message: e instanceof Error ? e.message : "Retry pass failed"
1644
1657
  }
1645
1658
  });
1646
1659
  }
1660
+ let r = {
1661
+ failedUploads: n,
1662
+ totalFiles: t.totalFiles,
1663
+ sessionEnded: !1
1664
+ };
1665
+ if (n.length === 0 && this.activeSession) {
1666
+ let n = await this.finalizeSession(t.totalFiles, t.totalFiles);
1667
+ n && (r.sessionEnded = !0, r.endSessionResponse = n, e = !0);
1668
+ }
1647
1669
  return this.callbackRegistry.dispatch("onRecordingStateChange", {
1648
1670
  type: "ended",
1649
1671
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1650
- data: t
1672
+ data: r
1651
1673
  }), this.config.debug && console.log("[ScribeSDK] Recording stopped:", {
1652
- totalFiles: t.totalFiles,
1653
- failedUploads: t.failedUploads.length
1654
- }), t;
1674
+ totalFiles: r.totalFiles,
1675
+ failedUploads: r.failedUploads.length,
1676
+ sessionEnded: r.sessionEnded
1677
+ }), r;
1655
1678
  } catch (e) {
1656
1679
  return console.error("[ScribeSDK] Error stopping recording:", e), this.callbackRegistry.dispatch("onError", {
1657
1680
  type: "transport_error",
@@ -1662,10 +1685,34 @@ var ie = class {
1662
1685
  }
1663
1686
  }), {
1664
1687
  failedUploads: [],
1665
- totalFiles: 0
1688
+ totalFiles: 0,
1689
+ sessionEnded: !1
1666
1690
  };
1667
1691
  } finally {
1668
- this.cleanupRecordingState();
1692
+ e ? this.cleanupRecordingState() : this.partialCleanupAfterFailedFinalize();
1693
+ }
1694
+ }
1695
+ async finalizeSession(e, t) {
1696
+ if (this.activeSession) try {
1697
+ let n = await this.sessionManager.endSession(this.activeBaseUrl, {
1698
+ audio_files_sent: e,
1699
+ audio_files_uploaded: t
1700
+ }, this.activeSession.session_id);
1701
+ return this.callbackRegistry.dispatch("onSessionEvent", {
1702
+ type: "ended",
1703
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1704
+ data: n
1705
+ }), n;
1706
+ } catch (e) {
1707
+ console.error("[ScribeSDK] Failed to end session:", e), this.callbackRegistry.dispatch("onError", {
1708
+ type: "transport_error",
1709
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1710
+ error: {
1711
+ code: "session_end_failed",
1712
+ message: e instanceof Error ? e.message : "Failed to end session"
1713
+ }
1714
+ });
1715
+ return;
1669
1716
  }
1670
1717
  }
1671
1718
  forceStop() {
@@ -1700,6 +1747,9 @@ var ie = class {
1700
1747
  hasFailedUploads() {
1701
1748
  return (this.retryContext?.failedChunks.length ?? 0) > 0;
1702
1749
  }
1750
+ finalizeAfterExternalEndSession(e) {
1751
+ this.activeSession && this.activeSession.session_id === e && (this.activeSession = null, this.activeBaseUrl = "", this.retryContext = null);
1752
+ }
1703
1753
  async retryFailedUploads() {
1704
1754
  if (this._isRecording) throw new p("Cannot retry uploads while recording is active.");
1705
1755
  if (!this.retryContext || this.retryContext.failedChunks.length === 0) return {
@@ -1784,6 +1834,9 @@ var ie = class {
1784
1834
  cleanupRecordingState() {
1785
1835
  this.recorder = null, this.activeSession = null, this.activeBaseUrl = "", this._isRecording = !1, this._isStarting = !1;
1786
1836
  }
1837
+ partialCleanupAfterFailedFinalize() {
1838
+ this.recorder = null, this._isRecording = !1, this._isStarting = !1;
1839
+ }
1787
1840
  }, ae = class {
1788
1841
  constructor(e) {
1789
1842
  this.isInitialized = !1, this.validateConfig(e), this.config = {
@@ -1855,7 +1908,14 @@ var ie = class {
1855
1908
  }
1856
1909
  async endSession(e, t) {
1857
1910
  let n = this.getEffectiveBaseUrl();
1858
- return this.wrapResult(() => this.sessionManager.endSession(n, e, t));
1911
+ return this.wrapResult(async () => {
1912
+ let r = t ?? this.recordingManager.getActiveSession()?.session_id, i = await this.sessionManager.endSession(n, e, t);
1913
+ return r && this.recordingManager.finalizeAfterExternalEndSession(r), this.callbackRegistry.dispatch("onSessionEvent", {
1914
+ type: "ended",
1915
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1916
+ data: i
1917
+ }), i;
1918
+ });
1859
1919
  }
1860
1920
  async getSessionStatus(e, t) {
1861
1921
  let n = this.getEffectiveBaseUrl();
@@ -11,4 +11,4 @@ data bits: %d
11
11
  total bits: %d (remainder: %d)
12
12
  bitsperframe: %d
13
13
  `,8*r.main_data_begin,n.ResvSize,r.resvDrain_post,r.resvDrain_pre,8*n.sideinfo_len,a-r.resvDrain_post-8*n.sideinfo_len,a,a%8,i),t.err.println(`This is a fatal error. It has several possible causes:`),t.err.println(`90%% LAME compiled with buggy version of gcc using advanced optimizations`),t.err.println(` 9%% Your system is overclocked`),t.err.println(` 1%% bug in LAME encoding library`),n.ResvSize=r.main_data_begin*8),v>1e9){var o;for(o=0;o<u.MAX_HEADER_BUF;++o)n.header[o].write_timing-=v;v=0}return 0},this.copy_buffer=function(e,n,r,o,s){var c=y+1;if(c<=0)return 0;if(o!=0&&c>o)return-1;if(t.arraycopy(_,0,n,r,c),y=-1,b=0,s!=0){var l=a(1);if(l[0]=e.nMusicCRC,g.updateMusicCRC(l,n,r,c),e.nMusicCRC=l[0],c>0&&(e.VBR_seek_table.nBytesWritten+=c),e.decode_on_the_fly){for(var u=i([2,1152]),d=c,f=-1,h;f!=0;)if(f=m.hip_decode1_unclipped(e.hip,n,r,d,u[0],u[1]),d=0,f==-1&&(f=0),f>0){if(e.findPeakSample){for(h=0;h<f;h++)u[0][h]>e.PeakSample?e.PeakSample=u[0][h]:-u[0][h]>e.PeakSample&&(e.PeakSample=-u[0][h]);if(e.channels_out>1)for(h=0;h<f;h++)u[1][h]>e.PeakSample?e.PeakSample=u[1][h]:-u[1][h]>e.PeakSample&&(e.PeakSample=-u[1][h])}if(e.findReplayGain&&p.AnalyzeSamples(e.rgdata,u[0],0,u[1],0,f,e.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6}}}return c},this.init_bit_stream_w=function(t){_=r(e.LAME_MAXMP3BUFFER),t.h_ptr=t.w_ptr=0,t.header[t.h_ptr].write_timing=0,y=-1,b=0,v=0}}return Dt=d,Dt}var At,jt;function Mt(){if(jt)return At;jt=1;var e=g,t=e.System,n=e.VbrMode,r=e.ShortBlock,i=e.new_float,a=e.new_int_n,o=e.new_short_n,s=e.assert,c=ie,l=se,u=qe,d=Ze,f=st,p=yt,m=kt(),h=bt,_=A();function v(){var e=D,g=this;v.V9=410,v.V8=420,v.V7=430,v.V6=440,v.V5=450,v.V4=460,v.V3=470,v.V2=480,v.V1=490,v.V0=500,v.R3MIX=1e3,v.STANDARD=1001,v.EXTREME=1002,v.INSANE=1003,v.STANDARD_FAST=1004,v.EXTREME_FAST=1005,v.MEDIUM=1006,v.MEDIUM_FAST=1007,v.LAME_MAXMP3BUFFER=147456;var y,b,x,S,C,w=new c,T,E,O;this.enc=new _,this.setModules=function(e,t,n,r,i,a,o,s,c){y=e,b=t,x=n,S=r,C=i,T=a,E=s,O=c,this.enc.setModules(b,w,S,T)};function k(){this.mask_adjust=0,this.mask_adjust_short=0,this.bo_l_weight=i(_.SBMAX_l),this.bo_s_weight=i(_.SBMAX_s)}function A(){this.lowerlimit=0}function j(e,t){this.lowpass=t}var M=4294479419;function N(t){var r;return t.class_id=M,r=t.internal_flags=new u,t.mode=e.NOT_SET,t.original=1,t.in_samplerate=44100,t.num_channels=2,t.num_samples=-1,t.bWriteVbrTag=!0,t.quality=-1,t.short_blocks=null,r.subblock_gain=-1,t.lowpassfreq=0,t.highpassfreq=0,t.lowpasswidth=-1,t.highpasswidth=-1,t.VBR=n.vbr_off,t.VBR_q=4,t.ATHcurve=-1,t.VBR_mean_bitrate_kbps=128,t.VBR_min_bitrate_kbps=0,t.VBR_max_bitrate_kbps=0,t.VBR_hard_min=0,r.VBR_min_bitrate=1,r.VBR_max_bitrate=13,t.quant_comp=-1,t.quant_comp_short=-1,t.msfix=-1,r.resample_ratio=1,r.OldValue[0]=180,r.OldValue[1]=180,r.CurrentStep[0]=4,r.CurrentStep[1]=4,r.masking_lower=1,r.nsPsy.attackthre=-1,r.nsPsy.attackthre_s=-1,t.scale=-1,t.athaa_type=-1,t.ATHtype=-1,t.athaa_loudapprox=-1,t.athaa_sensitivity=0,t.useTemporal=null,t.interChRatio=-1,r.mf_samples_to_encode=_.ENCDELAY+_.POSTDELAY,t.encoder_padding=0,r.mf_size=_.ENCDELAY-_.MDCTDELAY,t.findReplayGain=!1,t.decode_on_the_fly=!1,r.decode_on_the_fly=!1,r.findReplayGain=!1,r.findPeakSample=!1,r.RadioGain=0,r.AudiophileGain=0,r.noclipGainChange=0,r.noclipScale=-1,t.preset=0,t.write_id3tag_automatic=!0,0}this.lame_init=function(){var e=new l;return N(e),e.lame_allocated_gfp=1,e};function P(e){return e>1?0:e<=0?1:Math.cos(Math.PI/2*e)}this.nearestBitrateFullIndex=function(e){var t=[8,16,24,32,40,48,56,64,80,96,112,128,160,192,224,256,320],n=0,r=0,i=0,a=0;a=t[16],i=16,r=t[16],n=16;for(var o=0;o<16;o++)if(Math.max(e,t[o+1])!=e){a=t[o+1],i=o+1,r=t[o],n=o;break}return a-e>e-r?n:i};function F(e,t){var n=44100;return t>=48e3?n=48e3:t>=44100?n=44100:t>=32e3?n=32e3:t>=24e3?n=24e3:t>=22050?n=22050:t>=16e3?n=16e3:t>=12e3?n=12e3:t>=11025?n=11025:t>=8e3&&(n=8e3),e==-1?n:(e<=15960&&(n=44100),e<=15250&&(n=32e3),e<=11220&&(n=24e3),e<=9970&&(n=22050),e<=7230&&(n=16e3),e<=5420&&(n=12e3),e<=4510&&(n=11025),e<=3970&&(n=8e3),t<n?t>44100?48e3:t>32e3?44100:t>24e3?32e3:t>22050?24e3:t>16e3?22050:t>12e3?16e3:t>11025?12e3:t>8e3?11025:8e3:n)}function I(e,t){switch(e){case 44100:return t.version=1,0;case 48e3:return t.version=1,1;case 32e3:return t.version=1,2;case 22050:return t.version=0,0;case 24e3:return t.version=0,1;case 16e3:return t.version=0,2;case 11025:return t.version=0,0;case 12e3:return t.version=0,1;case 8e3:return t.version=0,2;default:return t.version=0,-1}}function L(e,t,n){n<16e3&&(t=2);for(var r=h.bitrate_table[t][1],i=2;i<=14;i++)h.bitrate_table[t][i]>0&&Math.abs(h.bitrate_table[t][i]-e)<Math.abs(r-e)&&(r=h.bitrate_table[t][i]);return r}function R(e,t,n){n<16e3&&(t=2);for(var r=0;r<=14;r++)if(h.bitrate_table[t][r]>0&&h.bitrate_table[t][r]==e)return r;return-1}function z(e,t){e.lowerlimit=[new j(8,2e3),new j(16,3700),new j(24,3900),new j(32,5500),new j(40,7e3),new j(48,7500),new j(56,1e4),new j(64,11e3),new j(80,13500),new j(96,15100),new j(112,15600),new j(128,17e3),new j(160,17500),new j(192,18600),new j(224,19400),new j(256,19700),new j(320,20500)][g.nearestBitrateFullIndex(t)].lowpass}function B(e){var n=e.internal_flags,r=32,i=-1;if(n.lowpass1>0){for(var a=999,o=0;o<=31;o++){var s=o/31;s>=n.lowpass2&&(r=Math.min(r,o)),n.lowpass1<s&&s<n.lowpass2&&(a=Math.min(a,o))}a==999?n.lowpass1=(r-.75)/31:n.lowpass1=(a-.75)/31,n.lowpass2=r/31}if(n.highpass2>0&&n.highpass2<.75/31*.9&&(n.highpass1=0,n.highpass2=0,t.err.println(`Warning: highpass filter disabled. highpass frequency too small
14
- `)),n.highpass2>0){for(var c=-1,o=0;o<=31;o++){var s=o/31;s<=n.highpass1&&(i=Math.max(i,o)),n.highpass1<s&&s<n.highpass2&&(c=Math.max(c,o))}n.highpass1=i/31,c==-1?n.highpass2=(i+.75)/31:n.highpass2=(c+.75)/31}for(var o=0;o<32;o++){var l,u,s=o/31;l=n.highpass2>n.highpass1?P((n.highpass2-s)/(n.highpass2-n.highpass1+1e-20)):1,u=n.lowpass2>n.lowpass1?P((s-n.lowpass1)/(n.lowpass2-n.lowpass1+1e-20)):1,n.amp_filter[o]=l*u}}function V(e){var t=e.internal_flags;switch(e.quality){default:case 9:t.psymodel=0,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 8:e.quality=7;case 7:t.psymodel=1,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 6:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 5:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 4:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 3:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=1,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 2:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=1,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 1:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 0:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break}}function ee(e){var t=e.internal_flags;e.frameNum=0,e.write_id3tag_automatic&&E.id3tag_write_v2(e),t.bitrate_stereoMode_Hist=a([16,5]),t.bitrate_blockType_Hist=a([16,6]),t.PeakSample=0,e.bWriteVbrTag&&T.InitVbrTag(e)}this.lame_init_params=function(t){var i=t.internal_flags;if(i.Class_ID=0,i.ATH??=new d,i.PSY??=new k,i.rgdata??=new f,i.channels_in=t.num_channels,i.channels_in==1&&(t.mode=e.MONO),i.channels_out=t.mode==e.MONO?1:2,i.mode_ext=_.MPG_MD_MS_LR,t.mode==e.MONO&&(t.force_ms=!1),t.VBR==n.vbr_off&&t.VBR_mean_bitrate_kbps!=128&&t.brate==0&&(t.brate=t.VBR_mean_bitrate_kbps),t.VBR==n.vbr_off||t.VBR==n.vbr_mtrh||t.VBR==n.vbr_mt||(t.free_format=!1),t.VBR==n.vbr_off&&t.brate==0&&m.EQ(t.compression_ratio,0)&&(t.compression_ratio=11.025),t.VBR==n.vbr_off&&t.compression_ratio>0&&(t.out_samplerate==0&&(t.out_samplerate=map2MP3Frequency(int(.97*t.in_samplerate))),t.brate=0|t.out_samplerate*16*i.channels_out/(1e3*t.compression_ratio),i.samplerate_index=I(t.out_samplerate,t),t.free_format||(t.brate=L(t.brate,t.version,t.out_samplerate))),t.out_samplerate!=0&&(t.out_samplerate<16e3?(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,8),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,64)):t.out_samplerate<32e3?(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,8),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,160)):(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,32),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,320))),t.lowpassfreq==0){var a=16e3;switch(t.VBR){case n.vbr_off:var o=new A;z(o,t.brate),a=o.lowerlimit;break;case n.vbr_abr:var o=new A;z(o,t.VBR_mean_bitrate_kbps),a=o.lowerlimit;break;case n.vbr_rh:var l=[19500,19e3,18600,18e3,17500,16e3,15600,14900,12500,1e4,3950];if(0<=t.VBR_q&&t.VBR_q<=9){var u=l[t.VBR_q],g=l[t.VBR_q+1],v=t.VBR_q_frac;a=linear_int(u,g,v)}else a=19500;break;default:var l=[19500,19e3,18500,18e3,17500,16500,15500,14500,12500,9500,3950];if(0<=t.VBR_q&&t.VBR_q<=9){var u=l[t.VBR_q],g=l[t.VBR_q+1],v=t.VBR_q_frac;a=linear_int(u,g,v)}else a=19500}t.mode==e.MONO&&(t.VBR==n.vbr_off||t.VBR==n.vbr_abr)&&(a*=1.5),t.lowpassfreq=a|0}if(t.out_samplerate==0&&(2*t.lowpassfreq>t.in_samplerate&&(t.lowpassfreq=t.in_samplerate/2),t.out_samplerate=F(t.lowpassfreq|0,t.in_samplerate)),t.lowpassfreq=Math.min(20500,t.lowpassfreq),t.lowpassfreq=Math.min(t.out_samplerate/2,t.lowpassfreq),t.VBR==n.vbr_off&&(t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.brate)),t.VBR==n.vbr_abr&&(t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.VBR_mean_bitrate_kbps)),t.bWriteVbrTag||(t.findReplayGain=!1,t.decode_on_the_fly=!1,i.findPeakSample=!1),i.findReplayGain=t.findReplayGain,i.decode_on_the_fly=t.decode_on_the_fly,i.decode_on_the_fly&&(i.findPeakSample=!0),i.findReplayGain&&y.InitGainAnalysis(i.rgdata,t.out_samplerate)==GainAnalysis.INIT_GAIN_ANALYSIS_ERROR)return t.internal_flags=null,-6;switch(i.decode_on_the_fly&&!t.decode_only&&(i.hip!=null&&O.hip_decode_exit(i.hip),i.hip=O.hip_decode_init()),i.mode_gr=t.out_samplerate<=24e3?1:2,t.framesize=576*i.mode_gr,t.encoder_delay=_.ENCDELAY,i.resample_ratio=t.in_samplerate/t.out_samplerate,t.VBR){case n.vbr_mt:case n.vbr_rh:case n.vbr_mtrh:t.compression_ratio=[5.7,6.5,7.3,8.2,10,11.9,13,14,15,16.5][t.VBR_q];break;case n.vbr_abr:t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.VBR_mean_bitrate_kbps);break;default:t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.brate);break}if(t.mode==e.NOT_SET&&(t.mode=e.JOINT_STEREO),t.highpassfreq>0?(i.highpass1=2*t.highpassfreq,t.highpasswidth>=0?i.highpass2=2*(t.highpassfreq+t.highpasswidth):i.highpass2=2*t.highpassfreq,i.highpass1/=t.out_samplerate,i.highpass2/=t.out_samplerate):(i.highpass1=0,i.highpass2=0),t.lowpassfreq>0?(i.lowpass2=2*t.lowpassfreq,t.lowpasswidth>=0?(i.lowpass1=2*(t.lowpassfreq-t.lowpasswidth),i.lowpass1<0&&(i.lowpass1=0)):i.lowpass1=2*t.lowpassfreq,i.lowpass1/=t.out_samplerate,i.lowpass2/=t.out_samplerate):(i.lowpass1=0,i.lowpass2=0),B(t),i.samplerate_index=I(t.out_samplerate,t),i.samplerate_index<0)return t.internal_flags=null,-1;if(t.VBR==n.vbr_off){if(t.free_format)i.bitrate_index=0;else if(t.brate=L(t.brate,t.version,t.out_samplerate),i.bitrate_index=R(t.brate,t.version,t.out_samplerate),i.bitrate_index<=0)return t.internal_flags=null,-1}else i.bitrate_index=1;t.analysis&&(t.bWriteVbrTag=!1),i.pinfo!=null&&(t.bWriteVbrTag=!1),b.init_bit_stream_w(i);for(var T=i.samplerate_index+3*t.version+6*(t.out_samplerate<16e3),E=0;E<_.SBMAX_l+1;E++)i.scalefac_band.l[E]=S.sfBandIndex[T].l[E];for(var E=0;E<_.PSFB21+1;E++){var D=(i.scalefac_band.l[22]-i.scalefac_band.l[21])/_.PSFB21,j=i.scalefac_band.l[21]+E*D;i.scalefac_band.psfb21[E]=j}i.scalefac_band.psfb21[_.PSFB21]=576;for(var E=0;E<_.SBMAX_s+1;E++)i.scalefac_band.s[E]=S.sfBandIndex[T].s[E];for(var E=0;E<_.PSFB12+1;E++){var D=(i.scalefac_band.s[13]-i.scalefac_band.s[12])/_.PSFB12,j=i.scalefac_band.s[12]+E*D;i.scalefac_band.psfb12[E]=j}i.scalefac_band.psfb12[_.PSFB12]=192,t.version==1?i.sideinfo_len=i.channels_out==1?21:36:i.sideinfo_len=i.channels_out==1?13:21,t.error_protection&&(i.sideinfo_len+=2),ee(t),i.Class_ID=M;var N;for(N=0;N<19;N++)i.nsPsy.pefirbuf[N]=700*i.mode_gr*i.channels_out;switch(t.ATHtype==-1&&(t.ATHtype=4),s(t.VBR_q<=9),s(t.VBR_q>=0),t.VBR){case n.vbr_mt:t.VBR=n.vbr_mtrh;case n.vbr_mtrh:t.useTemporal??=!1,x.apply_preset(t,500-t.VBR_q*10,0),t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),t.quality<5&&(t.quality=0),t.quality>5&&(t.quality=5),i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,t.experimentalY?i.sfb21_extra=!1:i.sfb21_extra=t.out_samplerate>44e3,i.iteration_loop=new VBRNewIterationLoop(C);break;case n.vbr_rh:x.apply_preset(t,500-t.VBR_q*10,0),i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,t.experimentalY?i.sfb21_extra=!1:i.sfb21_extra=t.out_samplerate>44e3,t.quality>6&&(t.quality=6),t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),i.iteration_loop=new VBROldIterationLoop(C);break;default:var P;i.sfb21_extra=!1,t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),P=t.VBR,P==n.vbr_off&&(t.VBR_mean_bitrate_kbps=t.brate),x.apply_preset(t,t.VBR_mean_bitrate_kbps,0),t.VBR=P,i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,P==n.vbr_off?i.iteration_loop=new p(C):i.iteration_loop=new ABRIterationLoop(C);break}if(s(t.scale>=0),t.VBR!=n.vbr_off){if(i.VBR_min_bitrate=1,i.VBR_max_bitrate=14,t.out_samplerate<16e3&&(i.VBR_max_bitrate=8),t.VBR_min_bitrate_kbps!=0&&(t.VBR_min_bitrate_kbps=L(t.VBR_min_bitrate_kbps,t.version,t.out_samplerate),i.VBR_min_bitrate=R(t.VBR_min_bitrate_kbps,t.version,t.out_samplerate),i.VBR_min_bitrate<0)||t.VBR_max_bitrate_kbps!=0&&(t.VBR_max_bitrate_kbps=L(t.VBR_max_bitrate_kbps,t.version,t.out_samplerate),i.VBR_max_bitrate=R(t.VBR_max_bitrate_kbps,t.version,t.out_samplerate),i.VBR_max_bitrate<0))return-1;t.VBR_min_bitrate_kbps=h.bitrate_table[t.version][i.VBR_min_bitrate],t.VBR_max_bitrate_kbps=h.bitrate_table[t.version][i.VBR_max_bitrate],t.VBR_mean_bitrate_kbps=Math.min(h.bitrate_table[t.version][i.VBR_max_bitrate],t.VBR_mean_bitrate_kbps),t.VBR_mean_bitrate_kbps=Math.max(h.bitrate_table[t.version][i.VBR_min_bitrate],t.VBR_mean_bitrate_kbps)}return t.tune&&(i.PSY.mask_adjust+=t.tune_value_a,i.PSY.mask_adjust_short+=t.tune_value_a),V(t),s(t.scale>=0),t.athaa_type<0?i.ATH.useAdjust=3:i.ATH.useAdjust=t.athaa_type,i.ATH.aaSensitivityP=10**(t.athaa_sensitivity/-10),t.short_blocks??=r.short_block_allowed,t.short_blocks==r.short_block_allowed&&(t.mode==e.JOINT_STEREO||t.mode==e.STEREO)&&(t.short_blocks=r.short_block_coupled),t.quant_comp<0&&(t.quant_comp=1),t.quant_comp_short<0&&(t.quant_comp_short=0),t.msfix<0&&(t.msfix=0),t.exp_nspsytune|=1,t.internal_flags.nsPsy.attackthre<0&&(t.internal_flags.nsPsy.attackthre=c.NSATTACKTHRE),t.internal_flags.nsPsy.attackthre_s<0&&(t.internal_flags.nsPsy.attackthre_s=c.NSATTACKTHRE_S),s(t.scale>=0),t.scale<0&&(t.scale=1),t.ATHtype<0&&(t.ATHtype=4),t.ATHcurve<0&&(t.ATHcurve=4),t.athaa_loudapprox<0&&(t.athaa_loudapprox=2),t.interChRatio<0&&(t.interChRatio=0),t.useTemporal??=!0,i.slot_lag=i.frac_SpF=0,t.VBR==n.vbr_off&&(i.slot_lag=i.frac_SpF=(t.version+1)*72e3*t.brate%t.out_samplerate|0),S.iteration_init(t),w.psymodel_init(t),s(t.scale>=0),0};function H(e,t){(e.in_buffer_0==null||e.in_buffer_nsamples<t)&&(e.in_buffer_0=i(t),e.in_buffer_1=i(t),e.in_buffer_nsamples=t)}this.lame_encode_flush=function(e,t,n,r){var i=e.internal_flags,a=o([2,1152]),s=0,c,l,u,d,f=i.mf_samples_to_encode-_.POSTDELAY,p=U(e);if(i.mf_samples_to_encode<1)return 0;for(c=0,e.in_samplerate!=e.out_samplerate&&(f+=16*e.out_samplerate/e.in_samplerate),u=e.framesize-f%e.framesize,u<576&&(u+=e.framesize),e.encoder_padding=u,d=(f+u)/e.framesize;d>0&&s>=0;){var m=p-i.mf_size,h=e.frameNum;m*=e.in_samplerate,m/=e.out_samplerate,m>1152&&(m=1152),m<1&&(m=1),l=r-c,r==0&&(l=0),s=this.lame_encode_buffer(e,a[0],a[1],m,t,n,l),n+=s,c+=s,d-=h==e.frameNum?0:1}if(i.mf_samples_to_encode=0,s<0||(l=r-c,r==0&&(l=0),b.flush_bitstream(e),s=b.copy_buffer(i,t,n,l,1),s<0))return s;if(n+=s,c+=s,l=r-c,r==0&&(l=0),e.write_id3tag_automatic){if(E.id3tag_write_v1(e),s=b.copy_buffer(i,t,n,l,0),s<0)return s;c+=s}return c},this.lame_encode_buffer=function(e,t,n,r,i,a,o){var s=e.internal_flags,c=[null,null];if(s.Class_ID!=M)return-3;if(r==0)return 0;H(s,r),c[0]=s.in_buffer_0,c[1]=s.in_buffer_1;for(var l=0;l<r;l++)c[0][l]=t[l],s.channels_in>1&&(c[1][l]=n[l]);return te(e,c[0],c[1],r,i,a,o)};function U(e){var t=_.BLKSIZE+e.framesize-_.FFTOFFSET;return t=Math.max(t,512+e.framesize-32),t}function te(e,t,n,r,i,a,o){var c=e.internal_flags,l=0,d,f,p,h,g,v=[null,null],x=[null,null];if(c.Class_ID!=M)return-3;if(r==0)return 0;if(g=b.copy_buffer(c,i,a,o,0),g<0)return g;if(a+=g,l+=g,x[0]=t,x[1]=n,m.NEQ(e.scale,0)&&m.NEQ(e.scale,1))for(f=0;f<r;++f)x[0][f]*=e.scale,c.channels_out==2&&(x[1][f]*=e.scale);if(m.NEQ(e.scale_left,0)&&m.NEQ(e.scale_left,1))for(f=0;f<r;++f)x[0][f]*=e.scale_left;if(m.NEQ(e.scale_right,0)&&m.NEQ(e.scale_right,1))for(f=0;f<r;++f)x[1][f]*=e.scale_right;if(e.num_channels==2&&c.channels_out==1)for(f=0;f<r;++f)x[0][f]=.5*(x[0][f]+x[1][f]),x[1][f]=0;h=U(e),v[0]=c.mfbuf[0],v[1]=c.mfbuf[1];for(var S=0;r>0;){var C=[null,null],w=0,T=0;C[0]=x[0],C[1]=x[1];var E=new ne;if(oe(e,v,C,S,r,E),w=E.n_in,T=E.n_out,c.findReplayGain&&!c.decode_on_the_fly&&y.AnalyzeSamples(c.rgdata,v[0],c.mf_size,v[1],c.mf_size,T,c.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6;if(r-=w,S+=w,c.channels_out,c.mf_size+=T,s(c.mf_size<=u.MFSIZE),c.mf_samples_to_encode<1&&(c.mf_samples_to_encode=_.ENCDELAY+_.POSTDELAY),c.mf_samples_to_encode+=T,c.mf_size>=h){var D=o-l;if(o==0&&(D=0),d=W(e,v[0],v[1],i,a,D),d<0)return d;for(a+=d,l+=d,c.mf_size-=e.framesize,c.mf_samples_to_encode-=e.framesize,p=0;p<c.channels_out;p++)for(f=0;f<c.mf_size;f++)v[p][f]=v[p][f+e.framesize]}}return l}function W(e,t,n,r,i,a){var o=g.enc.lame_encode_mp3_frame(e,t,n,r,i,a);return e.frameNum++,o}function ne(){this.n_in=0,this.n_out=0}function G(){this.num_used=0}function re(e,t){return t==0?e:re(t,e%t)}function ie(e,t,n){var r=Math.PI*t;e/=n,e<0&&(e=0),e>1&&(e=1);var i=e-.5,a=.42-.5*Math.cos(2*e*Math.PI)+.08*Math.cos(4*e*Math.PI);return Math.abs(i)<1e-9?r/Math.PI:a*Math.sin(n*r*i)/(Math.PI*n*i)}function ae(e,t,n,r,a,o,c,l,d){var f=e.internal_flags,p,m=0,h,g=e.out_samplerate/re(e.out_samplerate,e.in_samplerate);g>u.BPC&&(g=u.BPC);var _=+(Math.abs(f.resample_ratio-Math.floor(.5+f.resample_ratio))<1e-4),v=1/f.resample_ratio;v>1&&(v=1);var y=31;y%2==0&&--y,y+=_;var b=y+1;if(f.fill_buffer_resample_init==0){for(f.inbuf_old[0]=i(b),f.inbuf_old[1]=i(b),p=0;p<=2*g;++p)f.blackfilt[p]=i(b);for(f.itime[0]=0,f.itime[1]=0,m=0;m<=2*g;m++){var x=0,S=(m-g)/(2*g);for(p=0;p<=y;p++)x+=f.blackfilt[m][p]=ie(p-S,v,y);for(p=0;p<=y;p++)f.blackfilt[m][p]/=x}f.fill_buffer_resample_init=1}var C=f.inbuf_old[d];for(h=0;h<r;h++){var w,T;if(w=h*f.resample_ratio,m=0|Math.floor(w-f.itime[d]),y+m-y/2>=c)break;var S=w-f.itime[d]-(m+y%2*.5);T=0|Math.floor(S*2*g+g+.5);var E=0;for(p=0;p<=y;++p){var D=0|p+m-y/2,O=D<0?C[b+D]:a[o+D];E+=O*f.blackfilt[T][p]}t[n+h]=E}if(l.num_used=Math.min(c,y+m-y/2),f.itime[d]+=l.num_used-h*f.resample_ratio,l.num_used>=b)for(p=0;p<b;p++)C[p]=a[o+l.num_used+p-b];else{var k=b-l.num_used;for(p=0;p<k;++p)C[p]=C[p+l.num_used];for(m=0;p<b;++p,++m)C[p]=a[o+m];s(m==l.num_used)}return h}function oe(e,t,n,r,i,a){var o=e.internal_flags;if(o.resample_ratio<.9999||o.resample_ratio>1.0001)for(var s=0;s<o.channels_out;s++){var c=new G;a.n_out=ae(e,t[s],o.mf_size,e.framesize,n[s],r,i,c,s),a.n_in=c.num_used}else{a.n_out=Math.min(e.framesize,i),a.n_in=a.n_out;for(var l=0;l<a.n_out;++l)t[0][o.mf_size+l]=n[0][r+l],o.channels_out==2&&(t[1][o.mf_size+l]=n[1][r+l])}}}return At=v,At}var Nt=g.VbrMode;function Pt(){var e=Mt();function t(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){this.vbr_q=e,this.quant_comp=t,this.quant_comp_s=n,this.expY=r,this.st_lrm=i,this.st_s=a,this.masking_adj=o,this.masking_adj_short=s,this.ath_lower=c,this.ath_curve=l,this.ath_sensitivity=u,this.interch=d,this.safejoint=f,this.sfb21mod=p,this.msfix=m}function n(e,t,n,r,i,a,o,s,c,l,u,d,f,p){this.quant_comp=t,this.quant_comp_s=n,this.safejoint=r,this.nsmsfix=i,this.st_lrm=a,this.st_s=o,this.nsbass=s,this.scale=c,this.masking_adj=l,this.ath_lower=u,this.ath_curve=d,this.interch=f,this.sfscale=p}var r;this.setModules=function(e){r=e};var i=[new t(0,9,9,0,5.2,125,-4.2,-6.3,4.8,1,0,0,2,21,.97),new t(1,9,9,0,5.3,125,-3.6,-5.6,4.5,1.5,0,0,2,21,1.35),new t(2,9,9,0,5.6,125,-2.2,-3.5,2.8,2,0,0,2,21,1.49),new t(3,9,9,1,5.8,130,-1.8,-2.8,2.6,3,-4,0,2,20,1.64),new t(4,9,9,1,6,135,-.7,-1.1,1.1,3.5,-8,0,2,0,1.79),new t(5,9,9,1,6.4,140,.5,.4,-7.5,4,-12,2e-4,0,0,1.95),new t(6,9,9,1,6.6,145,.67,.65,-14.7,6.5,-19,4e-4,0,0,2.3),new t(7,9,9,1,6.6,145,.8,.75,-19.7,8,-22,6e-4,0,0,2.7),new t(8,9,9,1,6.6,145,1.2,1.15,-27.5,10,-23,7e-4,0,0,0),new t(9,9,9,1,6.6,145,1.6,1.6,-36,11,-25,8e-4,0,0,0),new t(10,9,9,1,6.6,145,2,2,-36,12,-25,8e-4,0,0,0)],a=[new t(0,9,9,0,4.2,25,-7,-4,7.5,1,0,0,2,26,.97),new t(1,9,9,0,4.2,25,-5.6,-3.6,4.5,1.5,0,0,2,21,1.35),new t(2,9,9,0,4.2,25,-4.4,-1.8,2,2,0,0,2,18,1.49),new t(3,9,9,1,4.2,25,-3.4,-1.25,1.1,3,-4,0,2,15,1.64),new t(4,9,9,1,4.2,25,-2.2,.1,0,3.5,-8,0,2,0,1.79),new t(5,9,9,1,4.2,25,-1,1.65,-7.7,4,-12,2e-4,0,0,1.95),new t(6,9,9,1,4.2,25,-0,2.47,-7.7,6.5,-19,4e-4,0,0,2),new t(7,9,9,1,4.2,25,.5,2,-14.5,8,-22,6e-4,0,0,2),new t(8,9,9,1,4.2,25,1,2.4,-22,10,-23,7e-4,0,0,2),new t(9,9,9,1,4.2,25,1.5,2.95,-30,11,-25,8e-4,0,0,2),new t(10,9,9,1,4.2,25,2,2.95,-36,12,-30,8e-4,0,0,2)];function o(e,t,n){var r=e.VBR==Nt.vbr_rh?i:a,o=e.VBR_q_frac,s=r[t],c=r[t+1],u=s;s.st_lrm+=o*(c.st_lrm-s.st_lrm),s.st_s+=o*(c.st_s-s.st_s),s.masking_adj+=o*(c.masking_adj-s.masking_adj),s.masking_adj_short+=o*(c.masking_adj_short-s.masking_adj_short),s.ath_lower+=o*(c.ath_lower-s.ath_lower),s.ath_curve+=o*(c.ath_curve-s.ath_curve),s.ath_sensitivity+=o*(c.ath_sensitivity-s.ath_sensitivity),s.interch+=o*(c.interch-s.interch),s.msfix+=o*(c.msfix-s.msfix),l(e,u.vbr_q),n==0&&Math.abs(e.quant_comp- -1)>0||(e.quant_comp=u.quant_comp),n==0&&Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=u.quant_comp_s),u.expY!=0&&(e.experimentalY=u.expY!=0),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=u.st_lrm),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=u.st_s),n==0&&Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=u.masking_adj),n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=u.masking_adj_short),n==0&&Math.abs(-e.ATHlower*10-0)>0||(e.ATHlower=-u.ath_lower/10),n==0&&Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=u.ath_curve),n==0&&Math.abs(e.athaa_sensitivity- -1)>0||(e.athaa_sensitivity=u.ath_sensitivity),u.interch>0&&(n==0&&Math.abs(e.interChRatio- -1)>0||(e.interChRatio=u.interch)),u.safejoint>0&&(e.exp_nspsytune|=u.safejoint),u.sfb21mod>0&&(e.exp_nspsytune|=u.sfb21mod<<20),n==0&&Math.abs(e.msfix- -1)>0||(e.msfix=u.msfix),n==0&&(e.VBR_q=t,e.VBR_q_frac=o)}var s=[new n(8,9,9,0,0,6.6,145,0,.95,0,-30,11,.0012,1),new n(16,9,9,0,0,6.6,145,0,.95,0,-25,11,.001,1),new n(24,9,9,0,0,6.6,145,0,.95,0,-20,11,.001,1),new n(32,9,9,0,0,6.6,145,0,.95,0,-15,11,.001,1),new n(40,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new n(48,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new n(56,9,9,0,0,6.6,145,0,.95,0,-6,11,8e-4,1),new n(64,9,9,0,0,6.6,145,0,.95,0,-2,11,8e-4,1),new n(80,9,9,0,0,6.6,145,0,.95,0,0,8,7e-4,1),new n(96,9,9,0,2.5,6.6,145,0,.95,0,1,5.5,6e-4,1),new n(112,9,9,0,2.25,6.6,145,0,.95,0,2,4.5,5e-4,1),new n(128,9,9,0,1.95,6.4,140,0,.95,0,3,4,2e-4,1),new n(160,9,9,1,1.79,6,135,0,.95,-2,5,3.5,0,1),new n(192,9,9,1,1.49,5.6,125,0,.97,-4,7,3,0,0),new n(224,9,9,1,1.25,5.2,125,0,.98,-6,9,2,0,0),new n(256,9,9,1,.97,5.2,125,0,1,-8,10,1,0,0),new n(320,9,9,1,.9,5.2,125,0,1,-10,12,0,0,0)];function c(e,t,n){var i=t,a=r.nearestBitrateFullIndex(t);if(e.VBR=Nt.vbr_abr,e.VBR_mean_bitrate_kbps=i,e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320),e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.brate=e.VBR_mean_bitrate_kbps,e.VBR_mean_bitrate_kbps>320&&(e.disable_reservoir=!0),s[a].safejoint>0&&(e.exp_nspsytune|=2),s[a].sfscale>0&&(e.internal_flags.noise_shaping=2),Math.abs(s[a].nsbass)>0){var o=int(s[a].nsbass*4);o<0&&(o+=64),e.exp_nspsytune|=o<<2}return n==0&&Math.abs(e.quant_comp- -1)>0||(e.quant_comp=s[a].quant_comp),n==0&&Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=s[a].quant_comp_s),n==0&&Math.abs(e.msfix- -1)>0||(e.msfix=s[a].nsmsfix),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=s[a].st_lrm),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=s[a].st_s),n==0&&Math.abs(e.scale- -1)>0||(e.scale=s[a].scale),n==0&&Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=s[a].masking_adj),s[a].masking_adj>0?n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=s[a].masking_adj*.9):n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=s[a].masking_adj*1.1),n==0&&Math.abs(-e.ATHlower*10-0)>0||(e.ATHlower=-s[a].ath_lower/10),n==0&&Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=s[a].ath_curve),n==0&&Math.abs(e.interChRatio- -1)>0||(e.interChRatio=s[a].interch),t}this.apply_preset=function(t,n,r){switch(n){case e.R3MIX:n=e.V3,t.VBR=Nt.vbr_mtrh;break;case e.MEDIUM:n=e.V4,t.VBR=Nt.vbr_rh;break;case e.MEDIUM_FAST:n=e.V4,t.VBR=Nt.vbr_mtrh;break;case e.STANDARD:n=e.V2,t.VBR=Nt.vbr_rh;break;case e.STANDARD_FAST:n=e.V2,t.VBR=Nt.vbr_mtrh;break;case e.EXTREME:n=e.V0,t.VBR=Nt.vbr_rh;break;case e.EXTREME_FAST:n=e.V0,t.VBR=Nt.vbr_mtrh;break;case e.INSANE:return n=320,t.preset=n,c(t,n,r),t.VBR=Nt.vbr_off,n}switch(t.preset=n,n){case e.V9:return o(t,9,r),n;case e.V8:return o(t,8,r),n;case e.V7:return o(t,7,r),n;case e.V6:return o(t,6,r),n;case e.V5:return o(t,5,r),n;case e.V4:return o(t,4,r),n;case e.V3:return o(t,3,r),n;case e.V2:return o(t,2,r),n;case e.V1:return o(t,1,r),n;case e.V0:return o(t,0,r),n}return 8<=n&&n<=320?c(t,n,r):(t.preset=0,n)};function l(e,t){var n=0;return 0>t&&(n=-1,t=0),9<t&&(n=-1,t=9),e.VBR_q=t,e.VBR_q_frac=0,n}}var Ft=Pt;function It(){this.setModules=function(e,t){}}var Lt=It;function Rt(){this.over_noise=0,this.tot_noise=0,this.max_noise=0,this.over_count=0,this.over_SSD=0,this.bits=0}var zt=Rt,Bt=g,Vt=Bt.new_float,Ht=Bt.new_int;function Ut(){this.global_gain=0,this.sfb_count1=0,this.step=Ht(39),this.noise=Vt(39),this.noise_log=Vt(39)}var Wt=Ut,Gt=g,Kt=Gt.System,qt=Gt.VbrMode,Jt=Gt.Util,Yt=Gt.Arrays,Xt=Gt.new_float,Zt=Gt.assert,Qt=Lt,$t=zt,en=Wt,$=A(),tn=ge,nn=ue;function rn(){var e;this.rv=null;var t;this.qupvt=null;var n,r=new Qt,i;this.setModules=function(a,o,s,c){e=a,t=o,this.rv=o,n=s,this.qupvt=s,i=c,r.setModules(n,i)},this.ms_convert=function(e,t){for(var n=0;n<576;++n){var r=e.tt[t][0].xr[n],i=e.tt[t][1].xr[n];e.tt[t][0].xr[n]=(r+i)*(Jt.SQRT2*.5),e.tt[t][1].xr[n]=(r-i)*(Jt.SQRT2*.5)}};function a(e,t,n,r){r=0;for(var i=0;i<=n;++i){var a=Math.abs(e.xr[i]);r+=a,t[i]=Math.sqrt(a*Math.sqrt(a)),t[i]>e.xrpow_max&&(e.xrpow_max=t[i])}return r}this.init_xrpow=function(e,t,n){var r=0,i=0|t.max_nonzero_coeff;if(t.xrpow_max=0,Yt.fill(n,i,576,0),r=a(t,n,i,r),r>1e-20){var o=0;e.substep_shaping&2&&(o=1);for(var s=0;s<t.psymax;s++)e.pseudohalf[s]=o;return!0}return Yt.fill(t.l3_enc,0,576,0),!1};function o(e,t){var r=e.ATH,i=t.xr;if(t.block_type!=$.SHORT_TYPE)for(var a=!1,o=$.PSFB21-1;o>=0&&!a;o--){var s=e.scalefac_band.psfb21[o],c=e.scalefac_band.psfb21[o+1],l=n.athAdjust(r.adjust,r.psfb21[o],r.floor);e.nsPsy.longfact[21]>1e-12&&(l*=e.nsPsy.longfact[21]);for(var u=c-1;u>=s;u--)if(Math.abs(i[u])<l)i[u]=0;else{a=!0;break}}else for(var d=0;d<3;d++)for(var a=!1,o=$.PSFB12-1;o>=0&&!a;o--){var s=e.scalefac_band.s[12]*3+(e.scalefac_band.s[13]-e.scalefac_band.s[12])*d+(e.scalefac_band.psfb12[o]-e.scalefac_band.psfb12[0]),c=s+(e.scalefac_band.psfb12[o+1]-e.scalefac_band.psfb12[o]),f=n.athAdjust(r.adjust,r.psfb12[o],r.floor);e.nsPsy.shortfact[12]>1e-12&&(f*=e.nsPsy.shortfact[12]);for(var u=c-1;u>=s;u--)if(Math.abs(i[u])<f)i[u]=0;else{a=!0;break}}}this.init_outer_loop=function(e,t){t.part2_3_length=0,t.big_values=0,t.count1=0,t.global_gain=210,t.scalefac_compress=0,t.table_select[0]=0,t.table_select[1]=0,t.table_select[2]=0,t.subblock_gain[0]=0,t.subblock_gain[1]=0,t.subblock_gain[2]=0,t.subblock_gain[3]=0,t.region0_count=0,t.region1_count=0,t.preflag=0,t.scalefac_scale=0,t.count1table_select=0,t.part2_length=0,t.sfb_lmax=$.SBPSY_l,t.sfb_smin=$.SBPSY_s,t.psy_lmax=e.sfb21_extra?$.SBMAX_l:$.SBPSY_l,t.psymax=t.psy_lmax,t.sfbmax=t.sfb_lmax,t.sfbdivide=11;for(var r=0;r<$.SBMAX_l;r++)t.width[r]=e.scalefac_band.l[r+1]-e.scalefac_band.l[r],t.window[r]=3;if(t.block_type==$.SHORT_TYPE){var i=Xt(576);t.sfb_smin=0,t.sfb_lmax=0,t.mixed_block_flag!=0&&(t.sfb_smin=3,t.sfb_lmax=e.mode_gr*2+4),t.psymax=t.sfb_lmax+3*((e.sfb21_extra?$.SBMAX_s:$.SBPSY_s)-t.sfb_smin),t.sfbmax=t.sfb_lmax+3*($.SBPSY_s-t.sfb_smin),t.sfbdivide=t.sfbmax-18,t.psy_lmax=t.sfb_lmax;var a=e.scalefac_band.l[t.sfb_lmax];Kt.arraycopy(t.xr,0,i,0,576);for(var r=t.sfb_smin;r<$.SBMAX_s;r++)for(var s=e.scalefac_band.s[r],c=e.scalefac_band.s[r+1],l=0;l<3;l++)for(var u=s;u<c;u++)t.xr[a++]=i[3*u+l];for(var d=t.sfb_lmax,r=t.sfb_smin;r<$.SBMAX_s;r++)t.width[d]=t.width[d+1]=t.width[d+2]=e.scalefac_band.s[r+1]-e.scalefac_band.s[r],t.window[d]=0,t.window[d+1]=1,t.window[d+2]=2,d+=3}t.count1bits=0,t.sfb_partition_table=n.nr_of_sfb_block[0][0],t.slen[0]=0,t.slen[1]=0,t.slen[2]=0,t.slen[3]=0,t.max_nonzero_coeff=575,Yt.fill(t.scalefac,0),o(e,t)};function s(e){this.ordinal=e}s.BINSEARCH_NONE=new s(0),s.BINSEARCH_UP=new s(1),s.BINSEARCH_DOWN=new s(2);function c(e,t,n,r,a){var o,c=e.CurrentStep[r],l=!1,u=e.OldValue[r],d=s.BINSEARCH_NONE;for(t.global_gain=u,n-=t.part2_length;;){var f;if(o=i.count_bits(e,a,t,null),c==1||o==n)break;o>n?(d==s.BINSEARCH_DOWN&&(l=!0),l&&(c/=2),d=s.BINSEARCH_UP,f=c):(d==s.BINSEARCH_UP&&(l=!0),l&&(c/=2),d=s.BINSEARCH_DOWN,f=-c),t.global_gain+=f,t.global_gain<0&&(t.global_gain=0,l=!0),t.global_gain>255&&(t.global_gain=255,l=!0)}for(Zt(t.global_gain>=0),Zt(t.global_gain<256);o>n&&t.global_gain<255;)t.global_gain++,o=i.count_bits(e,a,t,null);return e.CurrentStep[r]=u-t.global_gain>=4?4:2,e.OldValue[r]=t.global_gain,t.part2_3_length=o,o}this.trancate_smallspectrums=function(e,t,r,a){var o=Xt(nn.SFBMAX);if(!(!(e.substep_shaping&4)&&t.block_type==$.SHORT_TYPE||e.substep_shaping&128)){n.calc_noise(t,r,o,new $t,null);for(var s=0;s<576;s++){var c=0;t.l3_enc[s]!=0&&(c=Math.abs(t.xr[s])),a[s]=c}var s=0,l=8;t.block_type==$.SHORT_TYPE&&(l=6);do{var u,d,f,p,m=t.width[l];if(s+=m,!(o[l]>=1)&&(Yt.sort(a,s-m,m),!BitStream.EQ(a[s-1],0))){u=(1-o[l])*r[l],d=0,p=0;do{var h;for(f=1;p+f<m&&!BitStream.NEQ(a[p+s-m],a[p+s+f-m]);f++);if(h=a[p+s-m]*a[p+s-m]*f,u<h){p!=0&&(d=a[p+s-m-1]);break}u-=h,p+=f}while(p<m);if(!BitStream.EQ(d,0))do Math.abs(t.xr[s-m])<=d&&(t.l3_enc[s-m]=0);while(--m>0)}}while(++l<t.psymax);t.part2_3_length=i.noquant_count_bits(e,t,null)}};function l(e){for(var t=0;t<e.sfbmax;t++)if(e.scalefac[t]+e.subblock_gain[e.window[t]]==0)return!1;return!0}function u(e){return Jt.FAST_LOG10(.368+.632*e*e*e)}function d(e,t){for(var n=1e-37,r=0;r<t.psymax;r++)n+=u(e[r]);return Math.max(1e-20,n)}function f(e,t,n,r,i){var a;switch(e){default:case 9:t.over_count>0?(a=n.over_SSD<=t.over_SSD,n.over_SSD==t.over_SSD&&(a=n.bits<t.bits)):a=n.max_noise<0&&n.max_noise*10+n.bits<=t.max_noise*10+t.bits;break;case 0:a=n.over_count<t.over_count||n.over_count==t.over_count&&n.over_noise<t.over_noise||n.over_count==t.over_count&&BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 8:n.max_noise=d(i,r);case 1:a=n.max_noise<t.max_noise;break;case 2:a=n.tot_noise<t.tot_noise;break;case 3:a=n.tot_noise<t.tot_noise&&n.max_noise<t.max_noise;break;case 4:a=n.max_noise<=0&&t.max_noise>.2||n.max_noise<=0&&t.max_noise<0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise||n.max_noise<=0&&t.max_noise>0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.05&&t.max_noise>n.max_noise-.1&&n.tot_noise+n.over_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.1&&t.max_noise>n.max_noise-.15&&n.tot_noise+n.over_noise+n.over_noise<t.tot_noise+t.over_noise+t.over_noise;break;case 5:a=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 6:a=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&(n.max_noise<t.max_noise||BitStream.EQ(n.max_noise,t.max_noise)&&n.tot_noise<=t.tot_noise);break;case 7:a=n.over_count<t.over_count||n.over_noise<t.over_noise;break}return t.over_count==0&&(a&&=n.bits<t.bits),a}function p(e,t,n,r,i){for(var a=e.internal_flags,o=t.scalefac_scale==0?1.2968395546510096:1.6817928305074292,s=0,c=0;c<t.sfbmax;c++)s<n[c]&&(s=n[c]);var l=a.noise_shaping_amp;switch(l==3&&(l=i?2:1),l){case 2:break;case 1:s>1?s**=.5:s*=.95;break;default:s>1?s=1:s*=.95;break}for(var u=0,c=0;c<t.sfbmax;c++){var d=t.width[c],f;if(u+=d,!(n[c]<s)){if(a.substep_shaping&2&&(a.pseudohalf[c]=+(a.pseudohalf[c]==0),a.pseudohalf[c]==0&&a.noise_shaping_amp==2))return;for(t.scalefac[c]++,f=-d;f<0;f++)r[u+f]*=o,r[u+f]>t.xrpow_max&&(t.xrpow_max=r[u+f]);if(a.noise_shaping_amp==2)return}}}function m(e,t){for(var r=1.2968395546510096,i=0,a=0;a<e.sfbmax;a++){var o=e.width[a],s=e.scalefac[a];if(e.preflag!=0&&(s+=n.pretab[a]),i+=o,s&1){s++;for(var c=-o;c<0;c++)t[i+c]*=r,t[i+c]>e.xrpow_max&&(e.xrpow_max=t[i+c])}e.scalefac[a]=s>>1}e.preflag=0,e.scalefac_scale=1}function h(e,t,r){var i,a=t.scalefac;for(i=0;i<t.sfb_lmax;i++)if(a[i]>=16)return!0;for(var o=0;o<3;o++){var s=0,c=0;for(i=t.sfb_lmax+o;i<t.sfbdivide;i+=3)s<a[i]&&(s=a[i]);for(;i<t.sfbmax;i+=3)c<a[i]&&(c=a[i]);if(!(s<16&&c<8)){if(t.subblock_gain[o]>=7)return!0;t.subblock_gain[o]++;var l=e.scalefac_band.l[t.sfb_lmax];for(i=t.sfb_lmax+o;i<t.sfbmax;i+=3){var u,d=t.width[i],f=a[i];if(f-=4>>t.scalefac_scale,f>=0){a[i]=f,l+=d*3;continue}a[i]=0;var p=210+(f<<t.scalefac_scale+1);u=n.IPOW20(p),l+=d*(o+1);for(var m=-d;m<0;m++)r[l+m]*=u,r[l+m]>t.xrpow_max&&(t.xrpow_max=r[l+m]);l+=d*(3-o-1)}var u=n.IPOW20(202);l+=t.width[i]*(o+1);for(var m=-t.width[i];m<0;m++)r[l+m]*=u,r[l+m]>t.xrpow_max&&(t.xrpow_max=r[l+m])}}return!1}function g(e,t,n,r,a){var o=e.internal_flags;p(e,t,n,r,a);var s=l(t);return s?!1:(s=o.mode_gr==2?i.scale_bitcount(t):i.scale_bitcount_lsf(o,t),s?(o.noise_shaping>1&&(Yt.fill(o.pseudohalf,0),t.scalefac_scale==0?(m(t,r),s=!1):t.block_type==$.SHORT_TYPE&&o.subblock_gain>0&&(s=h(o,t,r)||l(t))),s||=o.mode_gr==2?i.scale_bitcount(t):i.scale_bitcount_lsf(o,t),!s):!0)}this.outer_loop=function(e,t,r,a,o,s){var l=e.internal_flags,u=new tn,d=Xt(576),p=Xt(nn.SFBMAX),m=new $t,h,_=new en,v=9999999,y=!1,b=!1,x=0;if(c(l,t,s,o,a),l.noise_shaping==0)return 100;n.calc_noise(t,r,p,m,_),m.bits=t.part2_3_length,u.assign(t);var S=0;for(Kt.arraycopy(a,0,d,0,576);!y;){do{var C=new $t,w,T=255;if(w=l.substep_shaping&2?20:3,l.sfb21_extra&&(p[u.sfbmax]>1||u.block_type==$.SHORT_TYPE&&(p[u.sfbmax+1]>1||p[u.sfbmax+2]>1))||!g(e,u,p,a,b))break;u.scalefac_scale!=0&&(T=254);var E=s-u.part2_length;if(E<=0)break;for(;(u.part2_3_length=i.count_bits(l,a,u,_))>E&&u.global_gain<=T;)u.global_gain++;if(u.global_gain>T)break;if(m.over_count==0){for(;(u.part2_3_length=i.count_bits(l,a,u,_))>v&&u.global_gain<=T;)u.global_gain++;if(u.global_gain>T)break}if(n.calc_noise(u,r,p,C,_),C.bits=u.part2_3_length,h=t.block_type==$.SHORT_TYPE?e.quant_comp_short:e.quant_comp,h=+!!f(h,m,C,u,p),h!=0)v=t.part2_3_length,m=C,t.assign(u),S=0,Kt.arraycopy(a,0,d,0,576);else if(l.full_outer_loop==0&&(++S>w&&m.over_count==0||l.noise_shaping_amp==3&&b&&S>30||l.noise_shaping_amp==3&&b&&u.global_gain-x>15))break}while(u.global_gain+u.scalefac_scale<255);l.noise_shaping_amp==3?b?y=!0:(u.assign(t),Kt.arraycopy(d,0,a,0,576),S=0,x=u.global_gain,b=!0):y=!0}return Zt(t.global_gain+t.scalefac_scale<=255),e.VBR==qt.vbr_rh||e.VBR==qt.vbr_mtrh?Kt.arraycopy(d,0,a,0,576):l.substep_shaping&1&&trancate_smallspectrums(l,t,r,a),m.over_count},this.iteration_finish_one=function(e,n,r){var a=e.l3_side,o=a.tt[n][r];i.best_scalefac_store(e,n,r,a),e.use_best_huffman==1&&i.best_huffman_divide(e,o),t.ResvAdjust(e,o)},this.VBR_encode_granule=function(e,t,n,r,i,a,o){var s=e.internal_flags,c=new tn,l=Xt(576),u=o,d=o+1,f=(o+a)/2,p,m,h=0,g=s.sfb21_extra;Zt(u<=LameInternalFlags.MAX_BITS_PER_CHANNEL),Yt.fill(c.l3_enc,0);do f>u-42?s.sfb21_extra=!1:s.sfb21_extra=g,m=outer_loop(e,t,n,r,i,f),m<=0?(h=1,d=t.part2_3_length,c.assign(t),Kt.arraycopy(r,0,l,0,576),o=d-32,p=o-a,f=(o+a)/2):(a=f+32,p=o-a,f=(o+a)/2,h!=0&&(h=2,t.assign(c),Kt.arraycopy(l,0,r,0,576)));while(p>12);s.sfb21_extra=g,h==2&&Kt.arraycopy(c.l3_enc,0,t.l3_enc,0,576),Zt(t.part2_3_length<=u)},this.get_framebits=function(n,r){var i=n.internal_flags;i.bitrate_index=i.VBR_min_bitrate;var a=e.getframebits(n);i.bitrate_index=1,a=e.getframebits(n);for(var o=1;o<=i.VBR_max_bitrate;o++){i.bitrate_index=o;var s=new MeanBits(a);r[o]=t.ResvFrameBegin(n,s),a=s.bits}},this.VBR_old_prepare=function(e,r,i,a,o,s,c,l,u){var d=e.internal_flags,f,p=0,m=1,h=0;d.bitrate_index=d.VBR_max_bitrate;var g=t.ResvFrameBegin(e,new MeanBits(0))/d.mode_gr;get_framebits(e,s);for(var _=0;_<d.mode_gr;_++){var v=n.on_pe(e,r,l[_],g,_,0);d.mode_ext==$.MPG_MD_MS_LR&&(ms_convert(d.l3_side,_),n.reduce_side(l[_],i[_],g,v));for(var y=0;y<d.channels_out;++y){var b=d.l3_side.tt[_][y];b.block_type==$.SHORT_TYPE?(p=2.56/(1+Math.exp(3.5-r[_][y]/300))-.14,f=d.PSY.mask_adjust_short-p):(p=1.28/(1+Math.exp(3.5-r[_][y]/300))-.05,f=d.PSY.mask_adjust-p),d.masking_lower=10**(f*.1),init_outer_loop(d,b),u[_][y]=n.calc_xmin(e,a[_][y],b,o[_][y]),u[_][y]!=0&&(m=0),c[_][y]=126,h+=l[_][y]}}for(var _=0;_<d.mode_gr;_++)for(var y=0;y<d.channels_out;y++)h>s[d.VBR_max_bitrate]&&(l[_][y]*=s[d.VBR_max_bitrate],l[_][y]/=h),c[_][y]>l[_][y]&&(c[_][y]=l[_][y]);return m},this.bitpressure_strategy=function(e,t,n,r){for(var i=0;i<e.mode_gr;i++)for(var a=0;a<e.channels_out;a++){for(var o=e.l3_side.tt[i][a],s=t[i][a],c=0,l=0;l<o.psy_lmax;l++)s[c++]*=1+.029*l*l/$.SBMAX_l/$.SBMAX_l;if(o.block_type==$.SHORT_TYPE)for(var l=o.sfb_smin;l<$.SBMAX_s;l++)s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s,s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s,s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s;r[i][a]=0|Math.max(n[i][a],.9*r[i][a])}},this.VBR_new_prepare=function(e,r,i,a,o,s){var c=e.internal_flags,l=1,u=0,d=0,f;if(e.free_format){c.bitrate_index=0;var p=new MeanBits(u);f=t.ResvFrameBegin(e,p),u=p.bits,o[0]=f}else{c.bitrate_index=c.VBR_max_bitrate;var p=new MeanBits(u);t.ResvFrameBegin(e,p),u=p.bits,get_framebits(e,o),f=o[c.VBR_max_bitrate]}for(var m=0;m<c.mode_gr;m++){n.on_pe(e,r,s[m],u,m,0),c.mode_ext==$.MPG_MD_MS_LR&&ms_convert(c.l3_side,m);for(var h=0;h<c.channels_out;++h){var g=c.l3_side.tt[m][h];c.masking_lower=10**(c.PSY.mask_adjust*.1),init_outer_loop(c,g),n.calc_xmin(e,i[m][h],g,a[m][h])!=0&&(l=0),d+=s[m][h]}}for(var m=0;m<c.mode_gr;m++)for(var h=0;h<c.channels_out;h++)d>f&&(s[m][h]*=f,s[m][h]/=d);return l},this.calc_target_bits=function(r,i,a,o,s,c){var l=r.internal_flags,u=l.l3_side,d,f,p,m,h=0;l.bitrate_index=l.VBR_max_bitrate;var g=new MeanBits(h);for(c[0]=t.ResvFrameBegin(r,g),h=g.bits,l.bitrate_index=1,h=e.getframebits(r)-l.sideinfo_len*8,s[0]=h/(l.mode_gr*l.channels_out),h=r.VBR_mean_bitrate_kbps*r.framesize*1e3,l.substep_shaping&1&&(h*=1.09),h/=r.out_samplerate,h-=l.sideinfo_len*8,h/=l.mode_gr*l.channels_out,d=.93+.07*(11-r.compression_ratio)/5.5,d<.9&&(d=.9),d>1&&(d=1),f=0;f<l.mode_gr;f++){var _=0;for(p=0;p<l.channels_out;p++){if(o[f][p]=int(d*h),i[f][p]>700){var v=int((i[f][p]-700)/1.4),y=u.tt[f][p];o[f][p]=int(d*h),y.block_type==$.SHORT_TYPE&&v<h/2&&(v=h/2),v>h*3/2?v=h*3/2:v<0&&(v=0),o[f][p]+=v}o[f][p]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(o[f][p]=LameInternalFlags.MAX_BITS_PER_CHANNEL),_+=o[f][p]}if(_>LameInternalFlags.MAX_BITS_PER_GRANULE)for(p=0;p<l.channels_out;++p)o[f][p]*=LameInternalFlags.MAX_BITS_PER_GRANULE,o[f][p]/=_}if(l.mode_ext==$.MPG_MD_MS_LR)for(f=0;f<l.mode_gr;f++)n.reduce_side(o[f],a[f],h*l.channels_out,LameInternalFlags.MAX_BITS_PER_GRANULE);for(m=0,f=0;f<l.mode_gr;f++)for(p=0;p<l.channels_out;p++)o[f][p]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(o[f][p]=LameInternalFlags.MAX_BITS_PER_CHANNEL),m+=o[f][p];if(m>c[0])for(f=0;f<l.mode_gr;f++)for(p=0;p<l.channels_out;p++)o[f][p]*=c[0],o[f][p]/=m}}var an=rn,on=g.assert;function sn(){var e;this.setModules=function(t){e=t},this.ResvFrameBegin=function(t,n){var r=t.internal_flags,i,a=r.l3_side,o=e.getframebits(t);n.bits=(o-r.sideinfo_len*8)/r.mode_gr;var s=8*256*r.mode_gr-8;t.brate>320?i=8*int(t.brate*1e3/(t.out_samplerate/1152)/8+.5):(i=8*1440,t.strict_ISO&&(i=8*int(32e4/(t.out_samplerate/1152)/8+.5))),r.ResvMax=i-o,r.ResvMax>s&&(r.ResvMax=s),(r.ResvMax<0||t.disable_reservoir)&&(r.ResvMax=0);var c=n.bits*r.mode_gr+Math.min(r.ResvSize,r.ResvMax);return c>i&&(c=i),on(r.ResvMax%8==0),on(r.ResvMax>=0),a.resvDrain_pre=0,r.pinfo!=null&&(r.pinfo.mean_bits=n.bits/2,r.pinfo.resvsize=r.ResvSize),c},this.ResvMaxBits=function(e,t,n,r){var i=e.internal_flags,a,o=i.ResvSize,s=i.ResvMax;r!=0&&(o+=t),i.substep_shaping&1&&(s*=.9),n.bits=t,o*10>s*9?(a=o-s*9/10,n.bits+=a,i.substep_shaping|=128):(a=0,i.substep_shaping&=127,!e.disable_reservoir&&!(i.substep_shaping&1)&&(n.bits-=.1*t));var c=o<i.ResvMax*6/10?o:i.ResvMax*6/10;return c-=a,c<0&&(c=0),c},this.ResvAdjust=function(e,t){e.ResvSize-=t.part2_3_length+t.part2_length},this.ResvFrameEnd=function(e,t){var n,r=e.l3_side;e.ResvSize+=t*e.mode_gr;var i=0;r.resvDrain_post=0,r.resvDrain_pre=0,(n=e.ResvSize%8)!=0&&(i+=n),n=e.ResvSize-i-e.ResvMax,n>0&&(i+=n);var a=Math.min(r.main_data_begin*8,i)/8;r.resvDrain_pre+=8*a,i-=8*a,e.ResvSize-=8*a,r.main_data_begin-=a,r.resvDrain_post+=i,e.ResvSize-=i}}var cn=sn;function ln(){var e=`http://www.mp3dev.org/`,t=3,n=98,r=4,i=0,a=93;this.getLameVersion=function(){return t+`.`+n+`.`+r},this.getLameShortVersion=function(){return t+`.`+n+`.`+r},this.getLameVeryShortVersion=function(){return`LAME`+t+`.`+n+`r`},this.getPsyVersion=function(){return i+`.`+a},this.getLameUrl=function(){return e},this.getLameOsBitness=function(){return`32bits`}}var un=ln,dn=g,fn=dn.System,pn=dn.VbrMode,mn=dn.ShortBlock,hn=dn.Arrays,gn=dn.new_byte,_n=dn.assert;vn.NUMTOCENTRIES=100,vn.MAXFRAMESIZE=2880;function vn(){var e,t,n;this.setModules=function(r,i,a){e=r,t=i,n=a};var r=1,i=2,a=4,o=8,s=vn.NUMTOCENTRIES,c=vn.MAXFRAMESIZE,l=s+4+4+4+4+4+9+1+1+8+1+1+3+1+1+2+4+2+2,u=128,d=64,f=32,p=null,m=`Xing`,h=`Info`,g=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];function _(e,t){if(e.nVbrNumFrames++,e.sum+=t,e.seen++,!(e.seen<e.want)&&(e.pos<e.size&&(e.bag[e.pos]=e.sum,e.pos++,e.seen=0),e.pos==e.size)){for(var n=1;n<e.size;n+=2)e.bag[n/2]=e.bag[n];e.want*=2,e.pos/=2}}function v(e,t){if(!(e.pos<=0))for(var n=1;n<s;++n){var r=n/s,i,a,o=0|Math.floor(r*e.pos);o>e.pos-1&&(o=e.pos-1),i=e.bag[o],a=e.sum;var c=0|256*i/a;c>255&&(c=255),t[n]=255&c}}this.addVbrFrame=function(e){var t=e.internal_flags,n=Tables.bitrate_table[e.version][t.bitrate_index];_n(t.VBR_seek_table.bag!=null),_(t.VBR_seek_table,n)};function y(e,t){var n=e[t+0]&255;return n<<=8,n|=e[t+1]&255,n<<=8,n|=e[t+2]&255,n<<=8,n|=e[t+3]&255,n}function b(e,t,n){e[t+0]=n>>24&255,e[t+1]=n>>16&255,e[t+2]=n>>8&255,e[t+3]=n&255}function x(e,t,n){e[t+0]=n>>8&255,e[t+1]=n&255}function S(e,t){return new String(e,t,m.length(),p).equals(m)||new String(e,t,h.length(),p).equals(h)}function C(e,t,n){return 255&(e<<t|n&~(-1<<t))}function w(t,n){var r=t.internal_flags;n[0]=C(n[0],8,255),n[1]=C(n[1],3,7),n[1]=C(n[1],1,t.out_samplerate<16e3?0:1),n[1]=C(n[1],1,t.version),n[1]=C(n[1],2,1),n[1]=C(n[1],1,+!t.error_protection),n[2]=C(n[2],4,r.bitrate_index),n[2]=C(n[2],2,r.samplerate_index),n[2]=C(n[2],1,0),n[2]=C(n[2],1,t.extension),n[3]=C(n[3],2,t.mode.ordinal()),n[3]=C(n[3],2,r.mode_ext),n[3]=C(n[3],1,t.copyright),n[3]=C(n[3],1,t.original),n[3]=C(n[3],2,t.emphasis),n[0]=255;var i=n[1]&241,a=t.version==1?u:t.out_samplerate<16e3?f:d;t.VBR==pn.vbr_off&&(a=t.brate);var o=t.free_format?0:255&16*e.BitrateIndex(a,t.version,t.out_samplerate);t.version==1?(n[1]=255&(i|10),i=n[2]&13,n[2]=255&(o|i)):(n[1]=255&(i|2),i=n[2]&13,n[2]=255&(o|i))}this.getVbrTag=function(e){var t=new VBRTagData,n=0;t.flags=0;var c=e[n+1]>>3&1,l=e[n+2]>>2&3,u=e[n+3]>>6&3,d=e[n+2]>>4&15;if(d=Tables.bitrate_table[c][d],e[n+1]>>4==14?t.samprate=Tables.samplerate_table[2][l]:t.samprate=Tables.samplerate_table[c][l],c==0?u==3?n+=13:n+=21:u==3?n+=21:n+=36,!S(e,n))return null;n+=4,t.hId=c;var f=t.flags=y(e,n);if(n+=4,f&r&&(t.frames=y(e,n),n+=4),f&i&&(t.bytes=y(e,n),n+=4),f&a){if(t.toc!=null)for(var p=0;p<s;p++)t.toc[p]=e[n+p];n+=s}t.vbrScale=-1,f&o&&(t.vbrScale=y(e,n),n+=4),t.headersize=(c+1)*72e3*d/t.samprate,n+=21;var m=e[n+0]<<4;m+=e[n+1]>>4;var h=(e[n+1]&15)<<8;return h+=e[n+2]&255,(m<0||m>3e3)&&(m=-1),(h<0||h>3e3)&&(h=-1),t.encDelay=m,t.encPadding=h,t},this.InitVbrTag=function(e){var n=e.internal_flags,r=e.version==1?u:e.out_samplerate<16e3?f:d;e.VBR==pn.vbr_off&&(r=e.brate);var i=(e.version+1)*72e3*r/e.out_samplerate,a=n.sideinfo_len+l;if(n.VBR_seek_table.TotalFrameSize=i,i<a||i>c){e.bWriteVbrTag=!1;return}n.VBR_seek_table.nVbrNumFrames=0,n.VBR_seek_table.nBytesWritten=0,n.VBR_seek_table.sum=0,n.VBR_seek_table.seen=0,n.VBR_seek_table.want=1,n.VBR_seek_table.pos=0,n.VBR_seek_table.bag??(n.VBR_seek_table.bag=new int[400],n.VBR_seek_table.size=400);var o=gn(c);w(e,o);for(var s=n.VBR_seek_table.TotalFrameSize,p=0;p<s;++p)t.add_dummy_byte(e,o[p]&255,1)};function T(e,t){var n=t^e;return t=t>>8^g[n&255],t}this.updateMusicCRC=function(e,t,n,r){for(var i=0;i<r;++i)e[0]=T(t[n+i],e[0])};function E(e,t,r,i,a){var o=e.internal_flags,s=0,c=e.encoder_delay,l=e.encoder_padding,u=100-10*e.VBR_q-e.quality,d=n.getLameVeryShortVersion(),f,p=0,m,h=[1,5,3,2,4,0,3],g=0|(e.lowpassfreq/100+.5>255?255:e.lowpassfreq/100+.5),_=0,v=0,y=0,S=e.internal_flags.noise_shaping,C=0,w=0,E=0,D=0,O=0,k=(e.exp_nspsytune&1)!=0,A=(e.exp_nspsytune&2)!=0,j=!1,M=!1,N=e.internal_flags.nogap_total,P=e.internal_flags.nogap_current,F=e.ATHtype,I=0,L;switch(e.VBR){case vbr_abr:L=e.VBR_mean_bitrate_kbps;break;case vbr_off:L=e.brate;break;default:L=e.VBR_min_bitrate_kbps}switch(f=e.VBR.ordinal()<h.length?h[e.VBR.ordinal()]:0,m=16*p+f,o.findReplayGain&&(o.RadioGain>510&&(o.RadioGain=510),o.RadioGain<-510&&(o.RadioGain=-510),v=8192,v|=3072,o.RadioGain>=0?v|=o.RadioGain:(v|=512,v|=-o.RadioGain)),o.findPeakSample&&(_=Math.abs(0|o.PeakSample/32767*2**23+.5)),N!=-1&&(P>0&&(M=!0),P<N-1&&(j=!0)),I=F+(!!k<<4)+(!!A<<5)+(!!j<<6)+(!!M<<7),u<0&&(u=0),e.mode){case MONO:C=0;break;case STEREO:C=1;break;case DUAL_CHANNEL:C=2;break;case JOINT_STEREO:C=e.force_ms?4:3;break;case NOT_SET:default:C=7;break}E=e.in_samplerate<=32e3?0:e.in_samplerate==48e3?2:e.in_samplerate>48e3?3:1,(e.short_blocks==mn.short_block_forced||e.short_blocks==mn.short_block_dispensed||e.lowpassfreq==-1&&e.highpassfreq==-1||e.scale_left<e.scale_right||e.scale_left>e.scale_right||e.disable_reservoir&&e.brate<320||e.noATH||e.ATHonly||F==0||e.in_samplerate<=32e3)&&(w=1),D=S+(C<<2)+(w<<5)+(E<<6),O=o.nMusicCRC,b(r,i+s,u),s+=4;for(var R=0;R<9;R++)r[i+s+R]=255&d.charAt(R);s+=9,r[i+s]=255&m,s++,r[i+s]=255&g,s++,b(r,i+s,_),s+=4,x(r,i+s,v),s+=2,x(r,i+s,y),s+=2,r[i+s]=255&I,s++,L>=255?r[i+s]=255:r[i+s]=255&L,s++,r[i+s]=255&c>>4,r[i+s+1]=255&(c<<4)+(l>>8),r[i+s+2]=255&l,s+=3,r[i+s]=255&D,s++,r[i+ s++]=0,x(r,i+s,e.preset),s+=2,b(r,i+s,t),s+=4,x(r,i+s,O),s+=2;for(var z=0;z<s;z++)a=T(r[i+z],a);return x(r,i+s,a),s+=2,s}function D(e){e.seek(0);var t=gn(10);e.readFully(t);var n;return n=new String(t,`ISO-8859-1`).startsWith(`ID3`)?0:((t[6]&127)<<21|(t[7]&127)<<14|(t[8]&127)<<7|t[9]&127)+t.length,n}this.getLameTagFrame=function(e,n){var c=e.internal_flags;if(!e.bWriteVbrTag||c.Class_ID!=Lame.LAME_ID||c.VBR_seek_table.pos<=0)return 0;if(n.length<c.VBR_seek_table.TotalFrameSize)return c.VBR_seek_table.TotalFrameSize;hn.fill(n,0,c.VBR_seek_table.TotalFrameSize,0),w(e,n);var l=gn(s);if(e.free_format)for(var u=1;u<s;++u)l[u]=255&255*u/100;else v(c.VBR_seek_table,l);var d=c.sideinfo_len;e.error_protection&&(d-=2),e.VBR==pn.vbr_off?(n[d++]=255&h.charAt(0),n[d++]=255&h.charAt(1),n[d++]=255&h.charAt(2),n[d++]=255&h.charAt(3)):(n[d++]=255&m.charAt(0),n[d++]=255&m.charAt(1),n[d++]=255&m.charAt(2),n[d++]=255&m.charAt(3)),b(n,d,r+i+a+o),d+=4,b(n,d,c.VBR_seek_table.nVbrNumFrames),d+=4;var f=c.VBR_seek_table.nBytesWritten+c.VBR_seek_table.TotalFrameSize;b(n,d,0|f),d+=4,fn.arraycopy(l,0,n,d,l.length),d+=l.length,e.error_protection&&t.CRC_writeheader(c,n);for(var p=0,u=0;u<d;u++)p=T(n[u],p);return d+=E(e,f,n,d,p),c.VBR_seek_table.TotalFrameSize},this.putVbrTag=function(e,t){if(e.internal_flags.VBR_seek_table.pos<=0||(t.seek(t.length()),t.length()==0))return-1;var n=D(t);t.seek(n);var r=gn(c),i=getLameTagFrame(e,r);return i>r.length?-1:(i<1||t.write(r,0,i),0)}}var yn=vn,bn=g,xn=bn.new_byte,Sn=bn.assert,Cn=Mt(),wn=Ft,Tn=tt,En=Ct(),Dn=an,On=Et(),kn=cn,An=D,jn=kt();A();var Mn=un,Nn=yn;function Pn(){this.setModules=function(e,t){}}function Fn(){this.setModules=function(e,t,n){}}function In(){}function Ln(){this.setModules=function(e,t){}}function Rn(e,t,n){arguments.length!=3&&(console.error(`WARN: Mp3Encoder(channels, samplerate, kbps) not specified`),e=1,t=44100,n=128);var r=new Cn,i=new Pn,a=new Tn,o=new jn,s=new wn,c=new En,l=new Dn,u=new Nn,d=new Mn,f=new Ln,p=new kn,m=new On,h=new Fn,g=new In;r.setModules(a,o,s,c,l,u,d,f,g),o.setModules(a,g,d,u),f.setModules(o,d),s.setModules(r),l.setModules(o,p,c,m),c.setModules(m,p,r.enc.psy),p.setModules(o),m.setModules(c),u.setModules(r,o,d),i.setModules(h,g),h.setModules(d,f,s);var _=r.lame_init();_.num_channels=e,_.in_samplerate=t,_.brate=n,_.mode=An.STEREO,_.quality=3,_.bWriteVbrTag=!1,_.disable_reservoir=!0,_.write_id3tag_automatic=!1,r.lame_init_params(_);var v=1152,y=0|1.25*v+7200,b=xn(y);this.encodeBuffer=function(t,n){e==1&&(n=t),Sn(t.length==n.length),t.length>v&&(v=t.length,y=0|1.25*v+7200,b=xn(y));var i=r.lame_encode_buffer(_,t,n,t.length,b,0,y);return new Int8Array(b.subarray(0,i))},this.flush=function(){var e=r.lame_encode_flush(_,b,0,y);return new Int8Array(b.subarray(0,e))}}function zn(){this.dataOffset=0,this.dataLen=0,this.channels=0,this.sampleRate=0}function Bn(e){return e.charCodeAt(0)<<24|e.charCodeAt(1)<<16|e.charCodeAt(2)<<8|e.charCodeAt(3)}zn.RIFF=Bn(`RIFF`),zn.WAVE=Bn(`WAVE`),zn.fmt_=Bn(`fmt `),zn.data=Bn(`data`),zn.readHeader=function(e){var t=new zn,n=e.getUint32(0,!1);if(zn.RIFF==n&&(e.getUint32(4,!0),zn.WAVE==e.getUint32(8,!1)&&zn.fmt_==e.getUint32(12,!1))){var r=e.getUint32(16,!0),i=20;switch(r){case 16:case 18:t.channels=e.getUint16(i+2,!0),t.sampleRate=e.getUint32(i+4,!0);break;default:throw`extended fmt chunk not implemented`}i+=r;for(var a=zn.data,o=0;a!=n&&(n=e.getUint32(i,!1),o=e.getUint32(i+4,!0),a!=n);)i+=o+8;return t.dataLen=o,t.dataOffset=i+8,t}};var Vn=e.Mp3Encoder=Rn;e.WavHeader=zn;var Hn=1024,Un=16e3;Hn/Un,Un/Hn;var Wn={m4a:`audio/m4a`,wav:`audio/wav`,mp3:`audio/mpeg`};function Gn(e,t=Un,n=128){try{let r=new Vn(1,t,n),i=new Int16Array(e.length);for(let t=0;t<e.length;t++){let n=Math.max(-1,Math.min(1,e[t]));i[t]=n<0?n*32768:n*32767}let a=[],o=r.encodeBuffer(i);o&&o.length>0&&a.push(o);let s=r.flush();return s&&s.length>0&&a.push(s),a.length===0?null:new Blob(a,{type:Wn.mp3})}catch(e){return console.error(`[ScribeSDK] MP3 encoding failed:`,e),null}}var Kn=3,qn=2e3,Jn=1e4,Yn,Xn=[],Zn=new Map,Qn=null;function $n(e,t){try{e.postMessage(t)}catch{}}function er(e){for(let t of Xn)$n(t,e)}function tr(){return new Promise(e=>{let t=Qn;Qn=()=>{t?.(),e()},setTimeout(()=>{e()},Jn)})}async function nr(e,t,n,r){let i=`Upload failed after retries`,a;for(let o=0;o<=Kn;o++)try{let s=e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`,c={"Content-Type":`audio/mp3`,...r};Yn&&(c.Authorization=`Bearer ${Yn}`);let l=await fetch(s,{method:`POST`,body:n,headers:c});if(l.ok)return{success:!0};if(a=l.status,i=await rr(l),l.status===401){er({type:`token_required`}),await tr();continue}if(l.status>=400&&l.status<500&&l.status!==408&&l.status!==429)return{success:!1,error:i,statusCode:a};o<Kn&&await ir(qn)}catch(e){i=e?.message??`Network error`,o<Kn&&await ir(qn)}return{success:!1,error:i,statusCode:a}}async function rr(e){try{let t=await e.json();return t?.error?.message??t?.message??e.statusText??`Request failed`}catch{return e.statusText??`HTTP ${e.status}`}}function ir(e){return new Promise(t=>setTimeout(t,e))}async function ar(e,t,n,r,i){try{let a=Gn(e);if(!a){$n(i,{type:`upload_failed`,fileName:t,error:`MP3 encoding failed`});return}let o=await nr(n,t,a,r);o.success?$n(i,{type:`upload_success`,fileName:t}):$n(i,{type:`upload_failed`,fileName:t,error:o.error??`Upload failed after retries`,blob:a})}catch(e){$n(i,{type:`upload_failed`,fileName:t,error:e?.message??`Unknown error`})}}function or(e,t){switch(e.type){case`compress_and_upload`:{Zn.has(t)||Zn.set(t,new Set);let n=Zn.get(t),r=ar(e.audioFrames,e.fileName,e.uploadUrl,e.headers,t);n.add(r),r.finally(()=>n.delete(r));break}case`wait_for_all_uploads`:{let e=Zn.get(t)??new Set;Promise.all(e).then(()=>{$n(t,{type:`all_uploads_complete`})});break}case`update_auth_token`:Yn=e.token,Qn&&=(Qn(),null);break;case`terminate`:{let e=Xn.indexOf(t);e>=0&&Xn.splice(e,1),Zn.delete(t);try{t.close()}catch{}Xn.length===0&&self.close();break}}}var sr=self;sr.onconnect=e=>{let t=e.ports[0];Xn.push(t),t.onmessage=e=>{or(e.data,t)},t.start()}})();
14
+ `)),n.highpass2>0){for(var c=-1,o=0;o<=31;o++){var s=o/31;s<=n.highpass1&&(i=Math.max(i,o)),n.highpass1<s&&s<n.highpass2&&(c=Math.max(c,o))}n.highpass1=i/31,c==-1?n.highpass2=(i+.75)/31:n.highpass2=(c+.75)/31}for(var o=0;o<32;o++){var l,u,s=o/31;l=n.highpass2>n.highpass1?P((n.highpass2-s)/(n.highpass2-n.highpass1+1e-20)):1,u=n.lowpass2>n.lowpass1?P((s-n.lowpass1)/(n.lowpass2-n.lowpass1+1e-20)):1,n.amp_filter[o]=l*u}}function V(e){var t=e.internal_flags;switch(e.quality){default:case 9:t.psymodel=0,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 8:e.quality=7;case 7:t.psymodel=1,t.noise_shaping=0,t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.use_best_huffman=0,t.full_outer_loop=0;break;case 6:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 5:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=0,t.full_outer_loop=0;break;case 4:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=0,t.noise_shaping_stop=0,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 3:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.noise_shaping_amp=1,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 2:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=1,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 1:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break;case 0:t.psymodel=1,t.noise_shaping==0&&(t.noise_shaping=1),t.substep_shaping==0&&(t.substep_shaping=2),t.noise_shaping_amp=2,t.noise_shaping_stop=1,t.subblock_gain==-1&&(t.subblock_gain=1),t.use_best_huffman=1,t.full_outer_loop=0;break}}function ee(e){var t=e.internal_flags;e.frameNum=0,e.write_id3tag_automatic&&E.id3tag_write_v2(e),t.bitrate_stereoMode_Hist=a([16,5]),t.bitrate_blockType_Hist=a([16,6]),t.PeakSample=0,e.bWriteVbrTag&&T.InitVbrTag(e)}this.lame_init_params=function(t){var i=t.internal_flags;if(i.Class_ID=0,i.ATH??=new d,i.PSY??=new k,i.rgdata??=new f,i.channels_in=t.num_channels,i.channels_in==1&&(t.mode=e.MONO),i.channels_out=t.mode==e.MONO?1:2,i.mode_ext=_.MPG_MD_MS_LR,t.mode==e.MONO&&(t.force_ms=!1),t.VBR==n.vbr_off&&t.VBR_mean_bitrate_kbps!=128&&t.brate==0&&(t.brate=t.VBR_mean_bitrate_kbps),t.VBR==n.vbr_off||t.VBR==n.vbr_mtrh||t.VBR==n.vbr_mt||(t.free_format=!1),t.VBR==n.vbr_off&&t.brate==0&&m.EQ(t.compression_ratio,0)&&(t.compression_ratio=11.025),t.VBR==n.vbr_off&&t.compression_ratio>0&&(t.out_samplerate==0&&(t.out_samplerate=map2MP3Frequency(int(.97*t.in_samplerate))),t.brate=0|t.out_samplerate*16*i.channels_out/(1e3*t.compression_ratio),i.samplerate_index=I(t.out_samplerate,t),t.free_format||(t.brate=L(t.brate,t.version,t.out_samplerate))),t.out_samplerate!=0&&(t.out_samplerate<16e3?(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,8),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,64)):t.out_samplerate<32e3?(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,8),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,160)):(t.VBR_mean_bitrate_kbps=Math.max(t.VBR_mean_bitrate_kbps,32),t.VBR_mean_bitrate_kbps=Math.min(t.VBR_mean_bitrate_kbps,320))),t.lowpassfreq==0){var a=16e3;switch(t.VBR){case n.vbr_off:var o=new A;z(o,t.brate),a=o.lowerlimit;break;case n.vbr_abr:var o=new A;z(o,t.VBR_mean_bitrate_kbps),a=o.lowerlimit;break;case n.vbr_rh:var l=[19500,19e3,18600,18e3,17500,16e3,15600,14900,12500,1e4,3950];if(0<=t.VBR_q&&t.VBR_q<=9){var u=l[t.VBR_q],g=l[t.VBR_q+1],v=t.VBR_q_frac;a=linear_int(u,g,v)}else a=19500;break;default:var l=[19500,19e3,18500,18e3,17500,16500,15500,14500,12500,9500,3950];if(0<=t.VBR_q&&t.VBR_q<=9){var u=l[t.VBR_q],g=l[t.VBR_q+1],v=t.VBR_q_frac;a=linear_int(u,g,v)}else a=19500}t.mode==e.MONO&&(t.VBR==n.vbr_off||t.VBR==n.vbr_abr)&&(a*=1.5),t.lowpassfreq=a|0}if(t.out_samplerate==0&&(2*t.lowpassfreq>t.in_samplerate&&(t.lowpassfreq=t.in_samplerate/2),t.out_samplerate=F(t.lowpassfreq|0,t.in_samplerate)),t.lowpassfreq=Math.min(20500,t.lowpassfreq),t.lowpassfreq=Math.min(t.out_samplerate/2,t.lowpassfreq),t.VBR==n.vbr_off&&(t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.brate)),t.VBR==n.vbr_abr&&(t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.VBR_mean_bitrate_kbps)),t.bWriteVbrTag||(t.findReplayGain=!1,t.decode_on_the_fly=!1,i.findPeakSample=!1),i.findReplayGain=t.findReplayGain,i.decode_on_the_fly=t.decode_on_the_fly,i.decode_on_the_fly&&(i.findPeakSample=!0),i.findReplayGain&&y.InitGainAnalysis(i.rgdata,t.out_samplerate)==GainAnalysis.INIT_GAIN_ANALYSIS_ERROR)return t.internal_flags=null,-6;switch(i.decode_on_the_fly&&!t.decode_only&&(i.hip!=null&&O.hip_decode_exit(i.hip),i.hip=O.hip_decode_init()),i.mode_gr=t.out_samplerate<=24e3?1:2,t.framesize=576*i.mode_gr,t.encoder_delay=_.ENCDELAY,i.resample_ratio=t.in_samplerate/t.out_samplerate,t.VBR){case n.vbr_mt:case n.vbr_rh:case n.vbr_mtrh:t.compression_ratio=[5.7,6.5,7.3,8.2,10,11.9,13,14,15,16.5][t.VBR_q];break;case n.vbr_abr:t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.VBR_mean_bitrate_kbps);break;default:t.compression_ratio=t.out_samplerate*16*i.channels_out/(1e3*t.brate);break}if(t.mode==e.NOT_SET&&(t.mode=e.JOINT_STEREO),t.highpassfreq>0?(i.highpass1=2*t.highpassfreq,t.highpasswidth>=0?i.highpass2=2*(t.highpassfreq+t.highpasswidth):i.highpass2=2*t.highpassfreq,i.highpass1/=t.out_samplerate,i.highpass2/=t.out_samplerate):(i.highpass1=0,i.highpass2=0),t.lowpassfreq>0?(i.lowpass2=2*t.lowpassfreq,t.lowpasswidth>=0?(i.lowpass1=2*(t.lowpassfreq-t.lowpasswidth),i.lowpass1<0&&(i.lowpass1=0)):i.lowpass1=2*t.lowpassfreq,i.lowpass1/=t.out_samplerate,i.lowpass2/=t.out_samplerate):(i.lowpass1=0,i.lowpass2=0),B(t),i.samplerate_index=I(t.out_samplerate,t),i.samplerate_index<0)return t.internal_flags=null,-1;if(t.VBR==n.vbr_off){if(t.free_format)i.bitrate_index=0;else if(t.brate=L(t.brate,t.version,t.out_samplerate),i.bitrate_index=R(t.brate,t.version,t.out_samplerate),i.bitrate_index<=0)return t.internal_flags=null,-1}else i.bitrate_index=1;t.analysis&&(t.bWriteVbrTag=!1),i.pinfo!=null&&(t.bWriteVbrTag=!1),b.init_bit_stream_w(i);for(var T=i.samplerate_index+3*t.version+6*(t.out_samplerate<16e3),E=0;E<_.SBMAX_l+1;E++)i.scalefac_band.l[E]=S.sfBandIndex[T].l[E];for(var E=0;E<_.PSFB21+1;E++){var D=(i.scalefac_band.l[22]-i.scalefac_band.l[21])/_.PSFB21,j=i.scalefac_band.l[21]+E*D;i.scalefac_band.psfb21[E]=j}i.scalefac_band.psfb21[_.PSFB21]=576;for(var E=0;E<_.SBMAX_s+1;E++)i.scalefac_band.s[E]=S.sfBandIndex[T].s[E];for(var E=0;E<_.PSFB12+1;E++){var D=(i.scalefac_band.s[13]-i.scalefac_band.s[12])/_.PSFB12,j=i.scalefac_band.s[12]+E*D;i.scalefac_band.psfb12[E]=j}i.scalefac_band.psfb12[_.PSFB12]=192,t.version==1?i.sideinfo_len=i.channels_out==1?21:36:i.sideinfo_len=i.channels_out==1?13:21,t.error_protection&&(i.sideinfo_len+=2),ee(t),i.Class_ID=M;var N;for(N=0;N<19;N++)i.nsPsy.pefirbuf[N]=700*i.mode_gr*i.channels_out;switch(t.ATHtype==-1&&(t.ATHtype=4),s(t.VBR_q<=9),s(t.VBR_q>=0),t.VBR){case n.vbr_mt:t.VBR=n.vbr_mtrh;case n.vbr_mtrh:t.useTemporal??=!1,x.apply_preset(t,500-t.VBR_q*10,0),t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),t.quality<5&&(t.quality=0),t.quality>5&&(t.quality=5),i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,t.experimentalY?i.sfb21_extra=!1:i.sfb21_extra=t.out_samplerate>44e3,i.iteration_loop=new VBRNewIterationLoop(C);break;case n.vbr_rh:x.apply_preset(t,500-t.VBR_q*10,0),i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,t.experimentalY?i.sfb21_extra=!1:i.sfb21_extra=t.out_samplerate>44e3,t.quality>6&&(t.quality=6),t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),i.iteration_loop=new VBROldIterationLoop(C);break;default:var P;i.sfb21_extra=!1,t.quality<0&&(t.quality=LAME_DEFAULT_QUALITY),P=t.VBR,P==n.vbr_off&&(t.VBR_mean_bitrate_kbps=t.brate),x.apply_preset(t,t.VBR_mean_bitrate_kbps,0),t.VBR=P,i.PSY.mask_adjust=t.maskingadjust,i.PSY.mask_adjust_short=t.maskingadjust_short,P==n.vbr_off?i.iteration_loop=new p(C):i.iteration_loop=new ABRIterationLoop(C);break}if(s(t.scale>=0),t.VBR!=n.vbr_off){if(i.VBR_min_bitrate=1,i.VBR_max_bitrate=14,t.out_samplerate<16e3&&(i.VBR_max_bitrate=8),t.VBR_min_bitrate_kbps!=0&&(t.VBR_min_bitrate_kbps=L(t.VBR_min_bitrate_kbps,t.version,t.out_samplerate),i.VBR_min_bitrate=R(t.VBR_min_bitrate_kbps,t.version,t.out_samplerate),i.VBR_min_bitrate<0)||t.VBR_max_bitrate_kbps!=0&&(t.VBR_max_bitrate_kbps=L(t.VBR_max_bitrate_kbps,t.version,t.out_samplerate),i.VBR_max_bitrate=R(t.VBR_max_bitrate_kbps,t.version,t.out_samplerate),i.VBR_max_bitrate<0))return-1;t.VBR_min_bitrate_kbps=h.bitrate_table[t.version][i.VBR_min_bitrate],t.VBR_max_bitrate_kbps=h.bitrate_table[t.version][i.VBR_max_bitrate],t.VBR_mean_bitrate_kbps=Math.min(h.bitrate_table[t.version][i.VBR_max_bitrate],t.VBR_mean_bitrate_kbps),t.VBR_mean_bitrate_kbps=Math.max(h.bitrate_table[t.version][i.VBR_min_bitrate],t.VBR_mean_bitrate_kbps)}return t.tune&&(i.PSY.mask_adjust+=t.tune_value_a,i.PSY.mask_adjust_short+=t.tune_value_a),V(t),s(t.scale>=0),t.athaa_type<0?i.ATH.useAdjust=3:i.ATH.useAdjust=t.athaa_type,i.ATH.aaSensitivityP=10**(t.athaa_sensitivity/-10),t.short_blocks??=r.short_block_allowed,t.short_blocks==r.short_block_allowed&&(t.mode==e.JOINT_STEREO||t.mode==e.STEREO)&&(t.short_blocks=r.short_block_coupled),t.quant_comp<0&&(t.quant_comp=1),t.quant_comp_short<0&&(t.quant_comp_short=0),t.msfix<0&&(t.msfix=0),t.exp_nspsytune|=1,t.internal_flags.nsPsy.attackthre<0&&(t.internal_flags.nsPsy.attackthre=c.NSATTACKTHRE),t.internal_flags.nsPsy.attackthre_s<0&&(t.internal_flags.nsPsy.attackthre_s=c.NSATTACKTHRE_S),s(t.scale>=0),t.scale<0&&(t.scale=1),t.ATHtype<0&&(t.ATHtype=4),t.ATHcurve<0&&(t.ATHcurve=4),t.athaa_loudapprox<0&&(t.athaa_loudapprox=2),t.interChRatio<0&&(t.interChRatio=0),t.useTemporal??=!0,i.slot_lag=i.frac_SpF=0,t.VBR==n.vbr_off&&(i.slot_lag=i.frac_SpF=(t.version+1)*72e3*t.brate%t.out_samplerate|0),S.iteration_init(t),w.psymodel_init(t),s(t.scale>=0),0};function H(e,t){(e.in_buffer_0==null||e.in_buffer_nsamples<t)&&(e.in_buffer_0=i(t),e.in_buffer_1=i(t),e.in_buffer_nsamples=t)}this.lame_encode_flush=function(e,t,n,r){var i=e.internal_flags,a=o([2,1152]),s=0,c,l,u,d,f=i.mf_samples_to_encode-_.POSTDELAY,p=U(e);if(i.mf_samples_to_encode<1)return 0;for(c=0,e.in_samplerate!=e.out_samplerate&&(f+=16*e.out_samplerate/e.in_samplerate),u=e.framesize-f%e.framesize,u<576&&(u+=e.framesize),e.encoder_padding=u,d=(f+u)/e.framesize;d>0&&s>=0;){var m=p-i.mf_size,h=e.frameNum;m*=e.in_samplerate,m/=e.out_samplerate,m>1152&&(m=1152),m<1&&(m=1),l=r-c,r==0&&(l=0),s=this.lame_encode_buffer(e,a[0],a[1],m,t,n,l),n+=s,c+=s,d-=h==e.frameNum?0:1}if(i.mf_samples_to_encode=0,s<0||(l=r-c,r==0&&(l=0),b.flush_bitstream(e),s=b.copy_buffer(i,t,n,l,1),s<0))return s;if(n+=s,c+=s,l=r-c,r==0&&(l=0),e.write_id3tag_automatic){if(E.id3tag_write_v1(e),s=b.copy_buffer(i,t,n,l,0),s<0)return s;c+=s}return c},this.lame_encode_buffer=function(e,t,n,r,i,a,o){var s=e.internal_flags,c=[null,null];if(s.Class_ID!=M)return-3;if(r==0)return 0;H(s,r),c[0]=s.in_buffer_0,c[1]=s.in_buffer_1;for(var l=0;l<r;l++)c[0][l]=t[l],s.channels_in>1&&(c[1][l]=n[l]);return te(e,c[0],c[1],r,i,a,o)};function U(e){var t=_.BLKSIZE+e.framesize-_.FFTOFFSET;return t=Math.max(t,512+e.framesize-32),t}function te(e,t,n,r,i,a,o){var c=e.internal_flags,l=0,d,f,p,h,g,v=[null,null],x=[null,null];if(c.Class_ID!=M)return-3;if(r==0)return 0;if(g=b.copy_buffer(c,i,a,o,0),g<0)return g;if(a+=g,l+=g,x[0]=t,x[1]=n,m.NEQ(e.scale,0)&&m.NEQ(e.scale,1))for(f=0;f<r;++f)x[0][f]*=e.scale,c.channels_out==2&&(x[1][f]*=e.scale);if(m.NEQ(e.scale_left,0)&&m.NEQ(e.scale_left,1))for(f=0;f<r;++f)x[0][f]*=e.scale_left;if(m.NEQ(e.scale_right,0)&&m.NEQ(e.scale_right,1))for(f=0;f<r;++f)x[1][f]*=e.scale_right;if(e.num_channels==2&&c.channels_out==1)for(f=0;f<r;++f)x[0][f]=.5*(x[0][f]+x[1][f]),x[1][f]=0;h=U(e),v[0]=c.mfbuf[0],v[1]=c.mfbuf[1];for(var S=0;r>0;){var C=[null,null],w=0,T=0;C[0]=x[0],C[1]=x[1];var E=new ne;if(oe(e,v,C,S,r,E),w=E.n_in,T=E.n_out,c.findReplayGain&&!c.decode_on_the_fly&&y.AnalyzeSamples(c.rgdata,v[0],c.mf_size,v[1],c.mf_size,T,c.channels_out)==GainAnalysis.GAIN_ANALYSIS_ERROR)return-6;if(r-=w,S+=w,c.channels_out,c.mf_size+=T,s(c.mf_size<=u.MFSIZE),c.mf_samples_to_encode<1&&(c.mf_samples_to_encode=_.ENCDELAY+_.POSTDELAY),c.mf_samples_to_encode+=T,c.mf_size>=h){var D=o-l;if(o==0&&(D=0),d=W(e,v[0],v[1],i,a,D),d<0)return d;for(a+=d,l+=d,c.mf_size-=e.framesize,c.mf_samples_to_encode-=e.framesize,p=0;p<c.channels_out;p++)for(f=0;f<c.mf_size;f++)v[p][f]=v[p][f+e.framesize]}}return l}function W(e,t,n,r,i,a){var o=g.enc.lame_encode_mp3_frame(e,t,n,r,i,a);return e.frameNum++,o}function ne(){this.n_in=0,this.n_out=0}function G(){this.num_used=0}function re(e,t){return t==0?e:re(t,e%t)}function ie(e,t,n){var r=Math.PI*t;e/=n,e<0&&(e=0),e>1&&(e=1);var i=e-.5,a=.42-.5*Math.cos(2*e*Math.PI)+.08*Math.cos(4*e*Math.PI);return Math.abs(i)<1e-9?r/Math.PI:a*Math.sin(n*r*i)/(Math.PI*n*i)}function ae(e,t,n,r,a,o,c,l,d){var f=e.internal_flags,p,m=0,h,g=e.out_samplerate/re(e.out_samplerate,e.in_samplerate);g>u.BPC&&(g=u.BPC);var _=+(Math.abs(f.resample_ratio-Math.floor(.5+f.resample_ratio))<1e-4),v=1/f.resample_ratio;v>1&&(v=1);var y=31;y%2==0&&--y,y+=_;var b=y+1;if(f.fill_buffer_resample_init==0){for(f.inbuf_old[0]=i(b),f.inbuf_old[1]=i(b),p=0;p<=2*g;++p)f.blackfilt[p]=i(b);for(f.itime[0]=0,f.itime[1]=0,m=0;m<=2*g;m++){var x=0,S=(m-g)/(2*g);for(p=0;p<=y;p++)x+=f.blackfilt[m][p]=ie(p-S,v,y);for(p=0;p<=y;p++)f.blackfilt[m][p]/=x}f.fill_buffer_resample_init=1}var C=f.inbuf_old[d];for(h=0;h<r;h++){var w,T;if(w=h*f.resample_ratio,m=0|Math.floor(w-f.itime[d]),y+m-y/2>=c)break;var S=w-f.itime[d]-(m+y%2*.5);T=0|Math.floor(S*2*g+g+.5);var E=0;for(p=0;p<=y;++p){var D=0|p+m-y/2,O=D<0?C[b+D]:a[o+D];E+=O*f.blackfilt[T][p]}t[n+h]=E}if(l.num_used=Math.min(c,y+m-y/2),f.itime[d]+=l.num_used-h*f.resample_ratio,l.num_used>=b)for(p=0;p<b;p++)C[p]=a[o+l.num_used+p-b];else{var k=b-l.num_used;for(p=0;p<k;++p)C[p]=C[p+l.num_used];for(m=0;p<b;++p,++m)C[p]=a[o+m];s(m==l.num_used)}return h}function oe(e,t,n,r,i,a){var o=e.internal_flags;if(o.resample_ratio<.9999||o.resample_ratio>1.0001)for(var s=0;s<o.channels_out;s++){var c=new G;a.n_out=ae(e,t[s],o.mf_size,e.framesize,n[s],r,i,c,s),a.n_in=c.num_used}else{a.n_out=Math.min(e.framesize,i),a.n_in=a.n_out;for(var l=0;l<a.n_out;++l)t[0][o.mf_size+l]=n[0][r+l],o.channels_out==2&&(t[1][o.mf_size+l]=n[1][r+l])}}}return At=v,At}var Nt=g.VbrMode;function Pt(){var e=Mt();function t(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){this.vbr_q=e,this.quant_comp=t,this.quant_comp_s=n,this.expY=r,this.st_lrm=i,this.st_s=a,this.masking_adj=o,this.masking_adj_short=s,this.ath_lower=c,this.ath_curve=l,this.ath_sensitivity=u,this.interch=d,this.safejoint=f,this.sfb21mod=p,this.msfix=m}function n(e,t,n,r,i,a,o,s,c,l,u,d,f,p){this.quant_comp=t,this.quant_comp_s=n,this.safejoint=r,this.nsmsfix=i,this.st_lrm=a,this.st_s=o,this.nsbass=s,this.scale=c,this.masking_adj=l,this.ath_lower=u,this.ath_curve=d,this.interch=f,this.sfscale=p}var r;this.setModules=function(e){r=e};var i=[new t(0,9,9,0,5.2,125,-4.2,-6.3,4.8,1,0,0,2,21,.97),new t(1,9,9,0,5.3,125,-3.6,-5.6,4.5,1.5,0,0,2,21,1.35),new t(2,9,9,0,5.6,125,-2.2,-3.5,2.8,2,0,0,2,21,1.49),new t(3,9,9,1,5.8,130,-1.8,-2.8,2.6,3,-4,0,2,20,1.64),new t(4,9,9,1,6,135,-.7,-1.1,1.1,3.5,-8,0,2,0,1.79),new t(5,9,9,1,6.4,140,.5,.4,-7.5,4,-12,2e-4,0,0,1.95),new t(6,9,9,1,6.6,145,.67,.65,-14.7,6.5,-19,4e-4,0,0,2.3),new t(7,9,9,1,6.6,145,.8,.75,-19.7,8,-22,6e-4,0,0,2.7),new t(8,9,9,1,6.6,145,1.2,1.15,-27.5,10,-23,7e-4,0,0,0),new t(9,9,9,1,6.6,145,1.6,1.6,-36,11,-25,8e-4,0,0,0),new t(10,9,9,1,6.6,145,2,2,-36,12,-25,8e-4,0,0,0)],a=[new t(0,9,9,0,4.2,25,-7,-4,7.5,1,0,0,2,26,.97),new t(1,9,9,0,4.2,25,-5.6,-3.6,4.5,1.5,0,0,2,21,1.35),new t(2,9,9,0,4.2,25,-4.4,-1.8,2,2,0,0,2,18,1.49),new t(3,9,9,1,4.2,25,-3.4,-1.25,1.1,3,-4,0,2,15,1.64),new t(4,9,9,1,4.2,25,-2.2,.1,0,3.5,-8,0,2,0,1.79),new t(5,9,9,1,4.2,25,-1,1.65,-7.7,4,-12,2e-4,0,0,1.95),new t(6,9,9,1,4.2,25,-0,2.47,-7.7,6.5,-19,4e-4,0,0,2),new t(7,9,9,1,4.2,25,.5,2,-14.5,8,-22,6e-4,0,0,2),new t(8,9,9,1,4.2,25,1,2.4,-22,10,-23,7e-4,0,0,2),new t(9,9,9,1,4.2,25,1.5,2.95,-30,11,-25,8e-4,0,0,2),new t(10,9,9,1,4.2,25,2,2.95,-36,12,-30,8e-4,0,0,2)];function o(e,t,n){var r=e.VBR==Nt.vbr_rh?i:a,o=e.VBR_q_frac,s=r[t],c=r[t+1],u=s;s.st_lrm+=o*(c.st_lrm-s.st_lrm),s.st_s+=o*(c.st_s-s.st_s),s.masking_adj+=o*(c.masking_adj-s.masking_adj),s.masking_adj_short+=o*(c.masking_adj_short-s.masking_adj_short),s.ath_lower+=o*(c.ath_lower-s.ath_lower),s.ath_curve+=o*(c.ath_curve-s.ath_curve),s.ath_sensitivity+=o*(c.ath_sensitivity-s.ath_sensitivity),s.interch+=o*(c.interch-s.interch),s.msfix+=o*(c.msfix-s.msfix),l(e,u.vbr_q),n==0&&Math.abs(e.quant_comp- -1)>0||(e.quant_comp=u.quant_comp),n==0&&Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=u.quant_comp_s),u.expY!=0&&(e.experimentalY=u.expY!=0),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=u.st_lrm),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=u.st_s),n==0&&Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=u.masking_adj),n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=u.masking_adj_short),n==0&&Math.abs(-e.ATHlower*10-0)>0||(e.ATHlower=-u.ath_lower/10),n==0&&Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=u.ath_curve),n==0&&Math.abs(e.athaa_sensitivity- -1)>0||(e.athaa_sensitivity=u.ath_sensitivity),u.interch>0&&(n==0&&Math.abs(e.interChRatio- -1)>0||(e.interChRatio=u.interch)),u.safejoint>0&&(e.exp_nspsytune|=u.safejoint),u.sfb21mod>0&&(e.exp_nspsytune|=u.sfb21mod<<20),n==0&&Math.abs(e.msfix- -1)>0||(e.msfix=u.msfix),n==0&&(e.VBR_q=t,e.VBR_q_frac=o)}var s=[new n(8,9,9,0,0,6.6,145,0,.95,0,-30,11,.0012,1),new n(16,9,9,0,0,6.6,145,0,.95,0,-25,11,.001,1),new n(24,9,9,0,0,6.6,145,0,.95,0,-20,11,.001,1),new n(32,9,9,0,0,6.6,145,0,.95,0,-15,11,.001,1),new n(40,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new n(48,9,9,0,0,6.6,145,0,.95,0,-10,11,9e-4,1),new n(56,9,9,0,0,6.6,145,0,.95,0,-6,11,8e-4,1),new n(64,9,9,0,0,6.6,145,0,.95,0,-2,11,8e-4,1),new n(80,9,9,0,0,6.6,145,0,.95,0,0,8,7e-4,1),new n(96,9,9,0,2.5,6.6,145,0,.95,0,1,5.5,6e-4,1),new n(112,9,9,0,2.25,6.6,145,0,.95,0,2,4.5,5e-4,1),new n(128,9,9,0,1.95,6.4,140,0,.95,0,3,4,2e-4,1),new n(160,9,9,1,1.79,6,135,0,.95,-2,5,3.5,0,1),new n(192,9,9,1,1.49,5.6,125,0,.97,-4,7,3,0,0),new n(224,9,9,1,1.25,5.2,125,0,.98,-6,9,2,0,0),new n(256,9,9,1,.97,5.2,125,0,1,-8,10,1,0,0),new n(320,9,9,1,.9,5.2,125,0,1,-10,12,0,0,0)];function c(e,t,n){var i=t,a=r.nearestBitrateFullIndex(t);if(e.VBR=Nt.vbr_abr,e.VBR_mean_bitrate_kbps=i,e.VBR_mean_bitrate_kbps=Math.min(e.VBR_mean_bitrate_kbps,320),e.VBR_mean_bitrate_kbps=Math.max(e.VBR_mean_bitrate_kbps,8),e.brate=e.VBR_mean_bitrate_kbps,e.VBR_mean_bitrate_kbps>320&&(e.disable_reservoir=!0),s[a].safejoint>0&&(e.exp_nspsytune|=2),s[a].sfscale>0&&(e.internal_flags.noise_shaping=2),Math.abs(s[a].nsbass)>0){var o=int(s[a].nsbass*4);o<0&&(o+=64),e.exp_nspsytune|=o<<2}return n==0&&Math.abs(e.quant_comp- -1)>0||(e.quant_comp=s[a].quant_comp),n==0&&Math.abs(e.quant_comp_short- -1)>0||(e.quant_comp_short=s[a].quant_comp_s),n==0&&Math.abs(e.msfix- -1)>0||(e.msfix=s[a].nsmsfix),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre- -1)>0||(e.internal_flags.nsPsy.attackthre=s[a].st_lrm),n==0&&Math.abs(e.internal_flags.nsPsy.attackthre_s- -1)>0||(e.internal_flags.nsPsy.attackthre_s=s[a].st_s),n==0&&Math.abs(e.scale- -1)>0||(e.scale=s[a].scale),n==0&&Math.abs(e.maskingadjust-0)>0||(e.maskingadjust=s[a].masking_adj),s[a].masking_adj>0?n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=s[a].masking_adj*.9):n==0&&Math.abs(e.maskingadjust_short-0)>0||(e.maskingadjust_short=s[a].masking_adj*1.1),n==0&&Math.abs(-e.ATHlower*10-0)>0||(e.ATHlower=-s[a].ath_lower/10),n==0&&Math.abs(e.ATHcurve- -1)>0||(e.ATHcurve=s[a].ath_curve),n==0&&Math.abs(e.interChRatio- -1)>0||(e.interChRatio=s[a].interch),t}this.apply_preset=function(t,n,r){switch(n){case e.R3MIX:n=e.V3,t.VBR=Nt.vbr_mtrh;break;case e.MEDIUM:n=e.V4,t.VBR=Nt.vbr_rh;break;case e.MEDIUM_FAST:n=e.V4,t.VBR=Nt.vbr_mtrh;break;case e.STANDARD:n=e.V2,t.VBR=Nt.vbr_rh;break;case e.STANDARD_FAST:n=e.V2,t.VBR=Nt.vbr_mtrh;break;case e.EXTREME:n=e.V0,t.VBR=Nt.vbr_rh;break;case e.EXTREME_FAST:n=e.V0,t.VBR=Nt.vbr_mtrh;break;case e.INSANE:return n=320,t.preset=n,c(t,n,r),t.VBR=Nt.vbr_off,n}switch(t.preset=n,n){case e.V9:return o(t,9,r),n;case e.V8:return o(t,8,r),n;case e.V7:return o(t,7,r),n;case e.V6:return o(t,6,r),n;case e.V5:return o(t,5,r),n;case e.V4:return o(t,4,r),n;case e.V3:return o(t,3,r),n;case e.V2:return o(t,2,r),n;case e.V1:return o(t,1,r),n;case e.V0:return o(t,0,r),n}return 8<=n&&n<=320?c(t,n,r):(t.preset=0,n)};function l(e,t){var n=0;return 0>t&&(n=-1,t=0),9<t&&(n=-1,t=9),e.VBR_q=t,e.VBR_q_frac=0,n}}var Ft=Pt;function It(){this.setModules=function(e,t){}}var Lt=It;function Rt(){this.over_noise=0,this.tot_noise=0,this.max_noise=0,this.over_count=0,this.over_SSD=0,this.bits=0}var zt=Rt,Bt=g,Vt=Bt.new_float,Ht=Bt.new_int;function Ut(){this.global_gain=0,this.sfb_count1=0,this.step=Ht(39),this.noise=Vt(39),this.noise_log=Vt(39)}var Wt=Ut,Gt=g,Kt=Gt.System,qt=Gt.VbrMode,Jt=Gt.Util,Yt=Gt.Arrays,Xt=Gt.new_float,Zt=Gt.assert,Qt=Lt,$t=zt,en=Wt,$=A(),tn=ge,nn=ue;function rn(){var e;this.rv=null;var t;this.qupvt=null;var n,r=new Qt,i;this.setModules=function(a,o,s,c){e=a,t=o,this.rv=o,n=s,this.qupvt=s,i=c,r.setModules(n,i)},this.ms_convert=function(e,t){for(var n=0;n<576;++n){var r=e.tt[t][0].xr[n],i=e.tt[t][1].xr[n];e.tt[t][0].xr[n]=(r+i)*(Jt.SQRT2*.5),e.tt[t][1].xr[n]=(r-i)*(Jt.SQRT2*.5)}};function a(e,t,n,r){r=0;for(var i=0;i<=n;++i){var a=Math.abs(e.xr[i]);r+=a,t[i]=Math.sqrt(a*Math.sqrt(a)),t[i]>e.xrpow_max&&(e.xrpow_max=t[i])}return r}this.init_xrpow=function(e,t,n){var r=0,i=0|t.max_nonzero_coeff;if(t.xrpow_max=0,Yt.fill(n,i,576,0),r=a(t,n,i,r),r>1e-20){var o=0;e.substep_shaping&2&&(o=1);for(var s=0;s<t.psymax;s++)e.pseudohalf[s]=o;return!0}return Yt.fill(t.l3_enc,0,576,0),!1};function o(e,t){var r=e.ATH,i=t.xr;if(t.block_type!=$.SHORT_TYPE)for(var a=!1,o=$.PSFB21-1;o>=0&&!a;o--){var s=e.scalefac_band.psfb21[o],c=e.scalefac_band.psfb21[o+1],l=n.athAdjust(r.adjust,r.psfb21[o],r.floor);e.nsPsy.longfact[21]>1e-12&&(l*=e.nsPsy.longfact[21]);for(var u=c-1;u>=s;u--)if(Math.abs(i[u])<l)i[u]=0;else{a=!0;break}}else for(var d=0;d<3;d++)for(var a=!1,o=$.PSFB12-1;o>=0&&!a;o--){var s=e.scalefac_band.s[12]*3+(e.scalefac_band.s[13]-e.scalefac_band.s[12])*d+(e.scalefac_band.psfb12[o]-e.scalefac_band.psfb12[0]),c=s+(e.scalefac_band.psfb12[o+1]-e.scalefac_band.psfb12[o]),f=n.athAdjust(r.adjust,r.psfb12[o],r.floor);e.nsPsy.shortfact[12]>1e-12&&(f*=e.nsPsy.shortfact[12]);for(var u=c-1;u>=s;u--)if(Math.abs(i[u])<f)i[u]=0;else{a=!0;break}}}this.init_outer_loop=function(e,t){t.part2_3_length=0,t.big_values=0,t.count1=0,t.global_gain=210,t.scalefac_compress=0,t.table_select[0]=0,t.table_select[1]=0,t.table_select[2]=0,t.subblock_gain[0]=0,t.subblock_gain[1]=0,t.subblock_gain[2]=0,t.subblock_gain[3]=0,t.region0_count=0,t.region1_count=0,t.preflag=0,t.scalefac_scale=0,t.count1table_select=0,t.part2_length=0,t.sfb_lmax=$.SBPSY_l,t.sfb_smin=$.SBPSY_s,t.psy_lmax=e.sfb21_extra?$.SBMAX_l:$.SBPSY_l,t.psymax=t.psy_lmax,t.sfbmax=t.sfb_lmax,t.sfbdivide=11;for(var r=0;r<$.SBMAX_l;r++)t.width[r]=e.scalefac_band.l[r+1]-e.scalefac_band.l[r],t.window[r]=3;if(t.block_type==$.SHORT_TYPE){var i=Xt(576);t.sfb_smin=0,t.sfb_lmax=0,t.mixed_block_flag!=0&&(t.sfb_smin=3,t.sfb_lmax=e.mode_gr*2+4),t.psymax=t.sfb_lmax+3*((e.sfb21_extra?$.SBMAX_s:$.SBPSY_s)-t.sfb_smin),t.sfbmax=t.sfb_lmax+3*($.SBPSY_s-t.sfb_smin),t.sfbdivide=t.sfbmax-18,t.psy_lmax=t.sfb_lmax;var a=e.scalefac_band.l[t.sfb_lmax];Kt.arraycopy(t.xr,0,i,0,576);for(var r=t.sfb_smin;r<$.SBMAX_s;r++)for(var s=e.scalefac_band.s[r],c=e.scalefac_band.s[r+1],l=0;l<3;l++)for(var u=s;u<c;u++)t.xr[a++]=i[3*u+l];for(var d=t.sfb_lmax,r=t.sfb_smin;r<$.SBMAX_s;r++)t.width[d]=t.width[d+1]=t.width[d+2]=e.scalefac_band.s[r+1]-e.scalefac_band.s[r],t.window[d]=0,t.window[d+1]=1,t.window[d+2]=2,d+=3}t.count1bits=0,t.sfb_partition_table=n.nr_of_sfb_block[0][0],t.slen[0]=0,t.slen[1]=0,t.slen[2]=0,t.slen[3]=0,t.max_nonzero_coeff=575,Yt.fill(t.scalefac,0),o(e,t)};function s(e){this.ordinal=e}s.BINSEARCH_NONE=new s(0),s.BINSEARCH_UP=new s(1),s.BINSEARCH_DOWN=new s(2);function c(e,t,n,r,a){var o,c=e.CurrentStep[r],l=!1,u=e.OldValue[r],d=s.BINSEARCH_NONE;for(t.global_gain=u,n-=t.part2_length;;){var f;if(o=i.count_bits(e,a,t,null),c==1||o==n)break;o>n?(d==s.BINSEARCH_DOWN&&(l=!0),l&&(c/=2),d=s.BINSEARCH_UP,f=c):(d==s.BINSEARCH_UP&&(l=!0),l&&(c/=2),d=s.BINSEARCH_DOWN,f=-c),t.global_gain+=f,t.global_gain<0&&(t.global_gain=0,l=!0),t.global_gain>255&&(t.global_gain=255,l=!0)}for(Zt(t.global_gain>=0),Zt(t.global_gain<256);o>n&&t.global_gain<255;)t.global_gain++,o=i.count_bits(e,a,t,null);return e.CurrentStep[r]=u-t.global_gain>=4?4:2,e.OldValue[r]=t.global_gain,t.part2_3_length=o,o}this.trancate_smallspectrums=function(e,t,r,a){var o=Xt(nn.SFBMAX);if(!(!(e.substep_shaping&4)&&t.block_type==$.SHORT_TYPE||e.substep_shaping&128)){n.calc_noise(t,r,o,new $t,null);for(var s=0;s<576;s++){var c=0;t.l3_enc[s]!=0&&(c=Math.abs(t.xr[s])),a[s]=c}var s=0,l=8;t.block_type==$.SHORT_TYPE&&(l=6);do{var u,d,f,p,m=t.width[l];if(s+=m,!(o[l]>=1)&&(Yt.sort(a,s-m,m),!BitStream.EQ(a[s-1],0))){u=(1-o[l])*r[l],d=0,p=0;do{var h;for(f=1;p+f<m&&!BitStream.NEQ(a[p+s-m],a[p+s+f-m]);f++);if(h=a[p+s-m]*a[p+s-m]*f,u<h){p!=0&&(d=a[p+s-m-1]);break}u-=h,p+=f}while(p<m);if(!BitStream.EQ(d,0))do Math.abs(t.xr[s-m])<=d&&(t.l3_enc[s-m]=0);while(--m>0)}}while(++l<t.psymax);t.part2_3_length=i.noquant_count_bits(e,t,null)}};function l(e){for(var t=0;t<e.sfbmax;t++)if(e.scalefac[t]+e.subblock_gain[e.window[t]]==0)return!1;return!0}function u(e){return Jt.FAST_LOG10(.368+.632*e*e*e)}function d(e,t){for(var n=1e-37,r=0;r<t.psymax;r++)n+=u(e[r]);return Math.max(1e-20,n)}function f(e,t,n,r,i){var a;switch(e){default:case 9:t.over_count>0?(a=n.over_SSD<=t.over_SSD,n.over_SSD==t.over_SSD&&(a=n.bits<t.bits)):a=n.max_noise<0&&n.max_noise*10+n.bits<=t.max_noise*10+t.bits;break;case 0:a=n.over_count<t.over_count||n.over_count==t.over_count&&n.over_noise<t.over_noise||n.over_count==t.over_count&&BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 8:n.max_noise=d(i,r);case 1:a=n.max_noise<t.max_noise;break;case 2:a=n.tot_noise<t.tot_noise;break;case 3:a=n.tot_noise<t.tot_noise&&n.max_noise<t.max_noise;break;case 4:a=n.max_noise<=0&&t.max_noise>.2||n.max_noise<=0&&t.max_noise<0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise||n.max_noise<=0&&t.max_noise>0&&t.max_noise>n.max_noise-.2&&n.tot_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.05&&t.max_noise>n.max_noise-.1&&n.tot_noise+n.over_noise<t.tot_noise+t.over_noise||n.max_noise>0&&t.max_noise>-.1&&t.max_noise>n.max_noise-.15&&n.tot_noise+n.over_noise+n.over_noise<t.tot_noise+t.over_noise+t.over_noise;break;case 5:a=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&n.tot_noise<t.tot_noise;break;case 6:a=n.over_noise<t.over_noise||BitStream.EQ(n.over_noise,t.over_noise)&&(n.max_noise<t.max_noise||BitStream.EQ(n.max_noise,t.max_noise)&&n.tot_noise<=t.tot_noise);break;case 7:a=n.over_count<t.over_count||n.over_noise<t.over_noise;break}return t.over_count==0&&(a&&=n.bits<t.bits),a}function p(e,t,n,r,i){for(var a=e.internal_flags,o=t.scalefac_scale==0?1.2968395546510096:1.6817928305074292,s=0,c=0;c<t.sfbmax;c++)s<n[c]&&(s=n[c]);var l=a.noise_shaping_amp;switch(l==3&&(l=i?2:1),l){case 2:break;case 1:s>1?s**=.5:s*=.95;break;default:s>1?s=1:s*=.95;break}for(var u=0,c=0;c<t.sfbmax;c++){var d=t.width[c],f;if(u+=d,!(n[c]<s)){if(a.substep_shaping&2&&(a.pseudohalf[c]=+(a.pseudohalf[c]==0),a.pseudohalf[c]==0&&a.noise_shaping_amp==2))return;for(t.scalefac[c]++,f=-d;f<0;f++)r[u+f]*=o,r[u+f]>t.xrpow_max&&(t.xrpow_max=r[u+f]);if(a.noise_shaping_amp==2)return}}}function m(e,t){for(var r=1.2968395546510096,i=0,a=0;a<e.sfbmax;a++){var o=e.width[a],s=e.scalefac[a];if(e.preflag!=0&&(s+=n.pretab[a]),i+=o,s&1){s++;for(var c=-o;c<0;c++)t[i+c]*=r,t[i+c]>e.xrpow_max&&(e.xrpow_max=t[i+c])}e.scalefac[a]=s>>1}e.preflag=0,e.scalefac_scale=1}function h(e,t,r){var i,a=t.scalefac;for(i=0;i<t.sfb_lmax;i++)if(a[i]>=16)return!0;for(var o=0;o<3;o++){var s=0,c=0;for(i=t.sfb_lmax+o;i<t.sfbdivide;i+=3)s<a[i]&&(s=a[i]);for(;i<t.sfbmax;i+=3)c<a[i]&&(c=a[i]);if(!(s<16&&c<8)){if(t.subblock_gain[o]>=7)return!0;t.subblock_gain[o]++;var l=e.scalefac_band.l[t.sfb_lmax];for(i=t.sfb_lmax+o;i<t.sfbmax;i+=3){var u,d=t.width[i],f=a[i];if(f-=4>>t.scalefac_scale,f>=0){a[i]=f,l+=d*3;continue}a[i]=0;var p=210+(f<<t.scalefac_scale+1);u=n.IPOW20(p),l+=d*(o+1);for(var m=-d;m<0;m++)r[l+m]*=u,r[l+m]>t.xrpow_max&&(t.xrpow_max=r[l+m]);l+=d*(3-o-1)}var u=n.IPOW20(202);l+=t.width[i]*(o+1);for(var m=-t.width[i];m<0;m++)r[l+m]*=u,r[l+m]>t.xrpow_max&&(t.xrpow_max=r[l+m])}}return!1}function g(e,t,n,r,a){var o=e.internal_flags;p(e,t,n,r,a);var s=l(t);return s?!1:(s=o.mode_gr==2?i.scale_bitcount(t):i.scale_bitcount_lsf(o,t),s?(o.noise_shaping>1&&(Yt.fill(o.pseudohalf,0),t.scalefac_scale==0?(m(t,r),s=!1):t.block_type==$.SHORT_TYPE&&o.subblock_gain>0&&(s=h(o,t,r)||l(t))),s||=o.mode_gr==2?i.scale_bitcount(t):i.scale_bitcount_lsf(o,t),!s):!0)}this.outer_loop=function(e,t,r,a,o,s){var l=e.internal_flags,u=new tn,d=Xt(576),p=Xt(nn.SFBMAX),m=new $t,h,_=new en,v=9999999,y=!1,b=!1,x=0;if(c(l,t,s,o,a),l.noise_shaping==0)return 100;n.calc_noise(t,r,p,m,_),m.bits=t.part2_3_length,u.assign(t);var S=0;for(Kt.arraycopy(a,0,d,0,576);!y;){do{var C=new $t,w,T=255;if(w=l.substep_shaping&2?20:3,l.sfb21_extra&&(p[u.sfbmax]>1||u.block_type==$.SHORT_TYPE&&(p[u.sfbmax+1]>1||p[u.sfbmax+2]>1))||!g(e,u,p,a,b))break;u.scalefac_scale!=0&&(T=254);var E=s-u.part2_length;if(E<=0)break;for(;(u.part2_3_length=i.count_bits(l,a,u,_))>E&&u.global_gain<=T;)u.global_gain++;if(u.global_gain>T)break;if(m.over_count==0){for(;(u.part2_3_length=i.count_bits(l,a,u,_))>v&&u.global_gain<=T;)u.global_gain++;if(u.global_gain>T)break}if(n.calc_noise(u,r,p,C,_),C.bits=u.part2_3_length,h=t.block_type==$.SHORT_TYPE?e.quant_comp_short:e.quant_comp,h=+!!f(h,m,C,u,p),h!=0)v=t.part2_3_length,m=C,t.assign(u),S=0,Kt.arraycopy(a,0,d,0,576);else if(l.full_outer_loop==0&&(++S>w&&m.over_count==0||l.noise_shaping_amp==3&&b&&S>30||l.noise_shaping_amp==3&&b&&u.global_gain-x>15))break}while(u.global_gain+u.scalefac_scale<255);l.noise_shaping_amp==3?b?y=!0:(u.assign(t),Kt.arraycopy(d,0,a,0,576),S=0,x=u.global_gain,b=!0):y=!0}return Zt(t.global_gain+t.scalefac_scale<=255),e.VBR==qt.vbr_rh||e.VBR==qt.vbr_mtrh?Kt.arraycopy(d,0,a,0,576):l.substep_shaping&1&&trancate_smallspectrums(l,t,r,a),m.over_count},this.iteration_finish_one=function(e,n,r){var a=e.l3_side,o=a.tt[n][r];i.best_scalefac_store(e,n,r,a),e.use_best_huffman==1&&i.best_huffman_divide(e,o),t.ResvAdjust(e,o)},this.VBR_encode_granule=function(e,t,n,r,i,a,o){var s=e.internal_flags,c=new tn,l=Xt(576),u=o,d=o+1,f=(o+a)/2,p,m,h=0,g=s.sfb21_extra;Zt(u<=LameInternalFlags.MAX_BITS_PER_CHANNEL),Yt.fill(c.l3_enc,0);do f>u-42?s.sfb21_extra=!1:s.sfb21_extra=g,m=outer_loop(e,t,n,r,i,f),m<=0?(h=1,d=t.part2_3_length,c.assign(t),Kt.arraycopy(r,0,l,0,576),o=d-32,p=o-a,f=(o+a)/2):(a=f+32,p=o-a,f=(o+a)/2,h!=0&&(h=2,t.assign(c),Kt.arraycopy(l,0,r,0,576)));while(p>12);s.sfb21_extra=g,h==2&&Kt.arraycopy(c.l3_enc,0,t.l3_enc,0,576),Zt(t.part2_3_length<=u)},this.get_framebits=function(n,r){var i=n.internal_flags;i.bitrate_index=i.VBR_min_bitrate;var a=e.getframebits(n);i.bitrate_index=1,a=e.getframebits(n);for(var o=1;o<=i.VBR_max_bitrate;o++){i.bitrate_index=o;var s=new MeanBits(a);r[o]=t.ResvFrameBegin(n,s),a=s.bits}},this.VBR_old_prepare=function(e,r,i,a,o,s,c,l,u){var d=e.internal_flags,f,p=0,m=1,h=0;d.bitrate_index=d.VBR_max_bitrate;var g=t.ResvFrameBegin(e,new MeanBits(0))/d.mode_gr;get_framebits(e,s);for(var _=0;_<d.mode_gr;_++){var v=n.on_pe(e,r,l[_],g,_,0);d.mode_ext==$.MPG_MD_MS_LR&&(ms_convert(d.l3_side,_),n.reduce_side(l[_],i[_],g,v));for(var y=0;y<d.channels_out;++y){var b=d.l3_side.tt[_][y];b.block_type==$.SHORT_TYPE?(p=2.56/(1+Math.exp(3.5-r[_][y]/300))-.14,f=d.PSY.mask_adjust_short-p):(p=1.28/(1+Math.exp(3.5-r[_][y]/300))-.05,f=d.PSY.mask_adjust-p),d.masking_lower=10**(f*.1),init_outer_loop(d,b),u[_][y]=n.calc_xmin(e,a[_][y],b,o[_][y]),u[_][y]!=0&&(m=0),c[_][y]=126,h+=l[_][y]}}for(var _=0;_<d.mode_gr;_++)for(var y=0;y<d.channels_out;y++)h>s[d.VBR_max_bitrate]&&(l[_][y]*=s[d.VBR_max_bitrate],l[_][y]/=h),c[_][y]>l[_][y]&&(c[_][y]=l[_][y]);return m},this.bitpressure_strategy=function(e,t,n,r){for(var i=0;i<e.mode_gr;i++)for(var a=0;a<e.channels_out;a++){for(var o=e.l3_side.tt[i][a],s=t[i][a],c=0,l=0;l<o.psy_lmax;l++)s[c++]*=1+.029*l*l/$.SBMAX_l/$.SBMAX_l;if(o.block_type==$.SHORT_TYPE)for(var l=o.sfb_smin;l<$.SBMAX_s;l++)s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s,s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s,s[c++]*=1+.029*l*l/$.SBMAX_s/$.SBMAX_s;r[i][a]=0|Math.max(n[i][a],.9*r[i][a])}},this.VBR_new_prepare=function(e,r,i,a,o,s){var c=e.internal_flags,l=1,u=0,d=0,f;if(e.free_format){c.bitrate_index=0;var p=new MeanBits(u);f=t.ResvFrameBegin(e,p),u=p.bits,o[0]=f}else{c.bitrate_index=c.VBR_max_bitrate;var p=new MeanBits(u);t.ResvFrameBegin(e,p),u=p.bits,get_framebits(e,o),f=o[c.VBR_max_bitrate]}for(var m=0;m<c.mode_gr;m++){n.on_pe(e,r,s[m],u,m,0),c.mode_ext==$.MPG_MD_MS_LR&&ms_convert(c.l3_side,m);for(var h=0;h<c.channels_out;++h){var g=c.l3_side.tt[m][h];c.masking_lower=10**(c.PSY.mask_adjust*.1),init_outer_loop(c,g),n.calc_xmin(e,i[m][h],g,a[m][h])!=0&&(l=0),d+=s[m][h]}}for(var m=0;m<c.mode_gr;m++)for(var h=0;h<c.channels_out;h++)d>f&&(s[m][h]*=f,s[m][h]/=d);return l},this.calc_target_bits=function(r,i,a,o,s,c){var l=r.internal_flags,u=l.l3_side,d,f,p,m,h=0;l.bitrate_index=l.VBR_max_bitrate;var g=new MeanBits(h);for(c[0]=t.ResvFrameBegin(r,g),h=g.bits,l.bitrate_index=1,h=e.getframebits(r)-l.sideinfo_len*8,s[0]=h/(l.mode_gr*l.channels_out),h=r.VBR_mean_bitrate_kbps*r.framesize*1e3,l.substep_shaping&1&&(h*=1.09),h/=r.out_samplerate,h-=l.sideinfo_len*8,h/=l.mode_gr*l.channels_out,d=.93+.07*(11-r.compression_ratio)/5.5,d<.9&&(d=.9),d>1&&(d=1),f=0;f<l.mode_gr;f++){var _=0;for(p=0;p<l.channels_out;p++){if(o[f][p]=int(d*h),i[f][p]>700){var v=int((i[f][p]-700)/1.4),y=u.tt[f][p];o[f][p]=int(d*h),y.block_type==$.SHORT_TYPE&&v<h/2&&(v=h/2),v>h*3/2?v=h*3/2:v<0&&(v=0),o[f][p]+=v}o[f][p]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(o[f][p]=LameInternalFlags.MAX_BITS_PER_CHANNEL),_+=o[f][p]}if(_>LameInternalFlags.MAX_BITS_PER_GRANULE)for(p=0;p<l.channels_out;++p)o[f][p]*=LameInternalFlags.MAX_BITS_PER_GRANULE,o[f][p]/=_}if(l.mode_ext==$.MPG_MD_MS_LR)for(f=0;f<l.mode_gr;f++)n.reduce_side(o[f],a[f],h*l.channels_out,LameInternalFlags.MAX_BITS_PER_GRANULE);for(m=0,f=0;f<l.mode_gr;f++)for(p=0;p<l.channels_out;p++)o[f][p]>LameInternalFlags.MAX_BITS_PER_CHANNEL&&(o[f][p]=LameInternalFlags.MAX_BITS_PER_CHANNEL),m+=o[f][p];if(m>c[0])for(f=0;f<l.mode_gr;f++)for(p=0;p<l.channels_out;p++)o[f][p]*=c[0],o[f][p]/=m}}var an=rn,on=g.assert;function sn(){var e;this.setModules=function(t){e=t},this.ResvFrameBegin=function(t,n){var r=t.internal_flags,i,a=r.l3_side,o=e.getframebits(t);n.bits=(o-r.sideinfo_len*8)/r.mode_gr;var s=8*256*r.mode_gr-8;t.brate>320?i=8*int(t.brate*1e3/(t.out_samplerate/1152)/8+.5):(i=8*1440,t.strict_ISO&&(i=8*int(32e4/(t.out_samplerate/1152)/8+.5))),r.ResvMax=i-o,r.ResvMax>s&&(r.ResvMax=s),(r.ResvMax<0||t.disable_reservoir)&&(r.ResvMax=0);var c=n.bits*r.mode_gr+Math.min(r.ResvSize,r.ResvMax);return c>i&&(c=i),on(r.ResvMax%8==0),on(r.ResvMax>=0),a.resvDrain_pre=0,r.pinfo!=null&&(r.pinfo.mean_bits=n.bits/2,r.pinfo.resvsize=r.ResvSize),c},this.ResvMaxBits=function(e,t,n,r){var i=e.internal_flags,a,o=i.ResvSize,s=i.ResvMax;r!=0&&(o+=t),i.substep_shaping&1&&(s*=.9),n.bits=t,o*10>s*9?(a=o-s*9/10,n.bits+=a,i.substep_shaping|=128):(a=0,i.substep_shaping&=127,!e.disable_reservoir&&!(i.substep_shaping&1)&&(n.bits-=.1*t));var c=o<i.ResvMax*6/10?o:i.ResvMax*6/10;return c-=a,c<0&&(c=0),c},this.ResvAdjust=function(e,t){e.ResvSize-=t.part2_3_length+t.part2_length},this.ResvFrameEnd=function(e,t){var n,r=e.l3_side;e.ResvSize+=t*e.mode_gr;var i=0;r.resvDrain_post=0,r.resvDrain_pre=0,(n=e.ResvSize%8)!=0&&(i+=n),n=e.ResvSize-i-e.ResvMax,n>0&&(i+=n);var a=Math.min(r.main_data_begin*8,i)/8;r.resvDrain_pre+=8*a,i-=8*a,e.ResvSize-=8*a,r.main_data_begin-=a,r.resvDrain_post+=i,e.ResvSize-=i}}var cn=sn;function ln(){var e=`http://www.mp3dev.org/`,t=3,n=98,r=4,i=0,a=93;this.getLameVersion=function(){return t+`.`+n+`.`+r},this.getLameShortVersion=function(){return t+`.`+n+`.`+r},this.getLameVeryShortVersion=function(){return`LAME`+t+`.`+n+`r`},this.getPsyVersion=function(){return i+`.`+a},this.getLameUrl=function(){return e},this.getLameOsBitness=function(){return`32bits`}}var un=ln,dn=g,fn=dn.System,pn=dn.VbrMode,mn=dn.ShortBlock,hn=dn.Arrays,gn=dn.new_byte,_n=dn.assert;vn.NUMTOCENTRIES=100,vn.MAXFRAMESIZE=2880;function vn(){var e,t,n;this.setModules=function(r,i,a){e=r,t=i,n=a};var r=1,i=2,a=4,o=8,s=vn.NUMTOCENTRIES,c=vn.MAXFRAMESIZE,l=s+4+4+4+4+4+9+1+1+8+1+1+3+1+1+2+4+2+2,u=128,d=64,f=32,p=null,m=`Xing`,h=`Info`,g=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];function _(e,t){if(e.nVbrNumFrames++,e.sum+=t,e.seen++,!(e.seen<e.want)&&(e.pos<e.size&&(e.bag[e.pos]=e.sum,e.pos++,e.seen=0),e.pos==e.size)){for(var n=1;n<e.size;n+=2)e.bag[n/2]=e.bag[n];e.want*=2,e.pos/=2}}function v(e,t){if(!(e.pos<=0))for(var n=1;n<s;++n){var r=n/s,i,a,o=0|Math.floor(r*e.pos);o>e.pos-1&&(o=e.pos-1),i=e.bag[o],a=e.sum;var c=0|256*i/a;c>255&&(c=255),t[n]=255&c}}this.addVbrFrame=function(e){var t=e.internal_flags,n=Tables.bitrate_table[e.version][t.bitrate_index];_n(t.VBR_seek_table.bag!=null),_(t.VBR_seek_table,n)};function y(e,t){var n=e[t+0]&255;return n<<=8,n|=e[t+1]&255,n<<=8,n|=e[t+2]&255,n<<=8,n|=e[t+3]&255,n}function b(e,t,n){e[t+0]=n>>24&255,e[t+1]=n>>16&255,e[t+2]=n>>8&255,e[t+3]=n&255}function x(e,t,n){e[t+0]=n>>8&255,e[t+1]=n&255}function S(e,t){return new String(e,t,m.length(),p).equals(m)||new String(e,t,h.length(),p).equals(h)}function C(e,t,n){return 255&(e<<t|n&~(-1<<t))}function w(t,n){var r=t.internal_flags;n[0]=C(n[0],8,255),n[1]=C(n[1],3,7),n[1]=C(n[1],1,t.out_samplerate<16e3?0:1),n[1]=C(n[1],1,t.version),n[1]=C(n[1],2,1),n[1]=C(n[1],1,+!t.error_protection),n[2]=C(n[2],4,r.bitrate_index),n[2]=C(n[2],2,r.samplerate_index),n[2]=C(n[2],1,0),n[2]=C(n[2],1,t.extension),n[3]=C(n[3],2,t.mode.ordinal()),n[3]=C(n[3],2,r.mode_ext),n[3]=C(n[3],1,t.copyright),n[3]=C(n[3],1,t.original),n[3]=C(n[3],2,t.emphasis),n[0]=255;var i=n[1]&241,a=t.version==1?u:t.out_samplerate<16e3?f:d;t.VBR==pn.vbr_off&&(a=t.brate);var o=t.free_format?0:255&16*e.BitrateIndex(a,t.version,t.out_samplerate);t.version==1?(n[1]=255&(i|10),i=n[2]&13,n[2]=255&(o|i)):(n[1]=255&(i|2),i=n[2]&13,n[2]=255&(o|i))}this.getVbrTag=function(e){var t=new VBRTagData,n=0;t.flags=0;var c=e[n+1]>>3&1,l=e[n+2]>>2&3,u=e[n+3]>>6&3,d=e[n+2]>>4&15;if(d=Tables.bitrate_table[c][d],e[n+1]>>4==14?t.samprate=Tables.samplerate_table[2][l]:t.samprate=Tables.samplerate_table[c][l],c==0?u==3?n+=13:n+=21:u==3?n+=21:n+=36,!S(e,n))return null;n+=4,t.hId=c;var f=t.flags=y(e,n);if(n+=4,f&r&&(t.frames=y(e,n),n+=4),f&i&&(t.bytes=y(e,n),n+=4),f&a){if(t.toc!=null)for(var p=0;p<s;p++)t.toc[p]=e[n+p];n+=s}t.vbrScale=-1,f&o&&(t.vbrScale=y(e,n),n+=4),t.headersize=(c+1)*72e3*d/t.samprate,n+=21;var m=e[n+0]<<4;m+=e[n+1]>>4;var h=(e[n+1]&15)<<8;return h+=e[n+2]&255,(m<0||m>3e3)&&(m=-1),(h<0||h>3e3)&&(h=-1),t.encDelay=m,t.encPadding=h,t},this.InitVbrTag=function(e){var n=e.internal_flags,r=e.version==1?u:e.out_samplerate<16e3?f:d;e.VBR==pn.vbr_off&&(r=e.brate);var i=(e.version+1)*72e3*r/e.out_samplerate,a=n.sideinfo_len+l;if(n.VBR_seek_table.TotalFrameSize=i,i<a||i>c){e.bWriteVbrTag=!1;return}n.VBR_seek_table.nVbrNumFrames=0,n.VBR_seek_table.nBytesWritten=0,n.VBR_seek_table.sum=0,n.VBR_seek_table.seen=0,n.VBR_seek_table.want=1,n.VBR_seek_table.pos=0,n.VBR_seek_table.bag??(n.VBR_seek_table.bag=new int[400],n.VBR_seek_table.size=400);var o=gn(c);w(e,o);for(var s=n.VBR_seek_table.TotalFrameSize,p=0;p<s;++p)t.add_dummy_byte(e,o[p]&255,1)};function T(e,t){var n=t^e;return t=t>>8^g[n&255],t}this.updateMusicCRC=function(e,t,n,r){for(var i=0;i<r;++i)e[0]=T(t[n+i],e[0])};function E(e,t,r,i,a){var o=e.internal_flags,s=0,c=e.encoder_delay,l=e.encoder_padding,u=100-10*e.VBR_q-e.quality,d=n.getLameVeryShortVersion(),f,p=0,m,h=[1,5,3,2,4,0,3],g=0|(e.lowpassfreq/100+.5>255?255:e.lowpassfreq/100+.5),_=0,v=0,y=0,S=e.internal_flags.noise_shaping,C=0,w=0,E=0,D=0,O=0,k=(e.exp_nspsytune&1)!=0,A=(e.exp_nspsytune&2)!=0,j=!1,M=!1,N=e.internal_flags.nogap_total,P=e.internal_flags.nogap_current,F=e.ATHtype,I=0,L;switch(e.VBR){case vbr_abr:L=e.VBR_mean_bitrate_kbps;break;case vbr_off:L=e.brate;break;default:L=e.VBR_min_bitrate_kbps}switch(f=e.VBR.ordinal()<h.length?h[e.VBR.ordinal()]:0,m=16*p+f,o.findReplayGain&&(o.RadioGain>510&&(o.RadioGain=510),o.RadioGain<-510&&(o.RadioGain=-510),v=8192,v|=3072,o.RadioGain>=0?v|=o.RadioGain:(v|=512,v|=-o.RadioGain)),o.findPeakSample&&(_=Math.abs(0|o.PeakSample/32767*2**23+.5)),N!=-1&&(P>0&&(M=!0),P<N-1&&(j=!0)),I=F+(!!k<<4)+(!!A<<5)+(!!j<<6)+(!!M<<7),u<0&&(u=0),e.mode){case MONO:C=0;break;case STEREO:C=1;break;case DUAL_CHANNEL:C=2;break;case JOINT_STEREO:C=e.force_ms?4:3;break;case NOT_SET:default:C=7;break}E=e.in_samplerate<=32e3?0:e.in_samplerate==48e3?2:e.in_samplerate>48e3?3:1,(e.short_blocks==mn.short_block_forced||e.short_blocks==mn.short_block_dispensed||e.lowpassfreq==-1&&e.highpassfreq==-1||e.scale_left<e.scale_right||e.scale_left>e.scale_right||e.disable_reservoir&&e.brate<320||e.noATH||e.ATHonly||F==0||e.in_samplerate<=32e3)&&(w=1),D=S+(C<<2)+(w<<5)+(E<<6),O=o.nMusicCRC,b(r,i+s,u),s+=4;for(var R=0;R<9;R++)r[i+s+R]=255&d.charAt(R);s+=9,r[i+s]=255&m,s++,r[i+s]=255&g,s++,b(r,i+s,_),s+=4,x(r,i+s,v),s+=2,x(r,i+s,y),s+=2,r[i+s]=255&I,s++,L>=255?r[i+s]=255:r[i+s]=255&L,s++,r[i+s]=255&c>>4,r[i+s+1]=255&(c<<4)+(l>>8),r[i+s+2]=255&l,s+=3,r[i+s]=255&D,s++,r[i+ s++]=0,x(r,i+s,e.preset),s+=2,b(r,i+s,t),s+=4,x(r,i+s,O),s+=2;for(var z=0;z<s;z++)a=T(r[i+z],a);return x(r,i+s,a),s+=2,s}function D(e){e.seek(0);var t=gn(10);e.readFully(t);var n;return n=new String(t,`ISO-8859-1`).startsWith(`ID3`)?0:((t[6]&127)<<21|(t[7]&127)<<14|(t[8]&127)<<7|t[9]&127)+t.length,n}this.getLameTagFrame=function(e,n){var c=e.internal_flags;if(!e.bWriteVbrTag||c.Class_ID!=Lame.LAME_ID||c.VBR_seek_table.pos<=0)return 0;if(n.length<c.VBR_seek_table.TotalFrameSize)return c.VBR_seek_table.TotalFrameSize;hn.fill(n,0,c.VBR_seek_table.TotalFrameSize,0),w(e,n);var l=gn(s);if(e.free_format)for(var u=1;u<s;++u)l[u]=255&255*u/100;else v(c.VBR_seek_table,l);var d=c.sideinfo_len;e.error_protection&&(d-=2),e.VBR==pn.vbr_off?(n[d++]=255&h.charAt(0),n[d++]=255&h.charAt(1),n[d++]=255&h.charAt(2),n[d++]=255&h.charAt(3)):(n[d++]=255&m.charAt(0),n[d++]=255&m.charAt(1),n[d++]=255&m.charAt(2),n[d++]=255&m.charAt(3)),b(n,d,r+i+a+o),d+=4,b(n,d,c.VBR_seek_table.nVbrNumFrames),d+=4;var f=c.VBR_seek_table.nBytesWritten+c.VBR_seek_table.TotalFrameSize;b(n,d,0|f),d+=4,fn.arraycopy(l,0,n,d,l.length),d+=l.length,e.error_protection&&t.CRC_writeheader(c,n);for(var p=0,u=0;u<d;u++)p=T(n[u],p);return d+=E(e,f,n,d,p),c.VBR_seek_table.TotalFrameSize},this.putVbrTag=function(e,t){if(e.internal_flags.VBR_seek_table.pos<=0||(t.seek(t.length()),t.length()==0))return-1;var n=D(t);t.seek(n);var r=gn(c),i=getLameTagFrame(e,r);return i>r.length?-1:(i<1||t.write(r,0,i),0)}}var yn=vn,bn=g,xn=bn.new_byte,Sn=bn.assert,Cn=Mt(),wn=Ft,Tn=tt,En=Ct(),Dn=an,On=Et(),kn=cn,An=D,jn=kt();A();var Mn=un,Nn=yn;function Pn(){this.setModules=function(e,t){}}function Fn(){this.setModules=function(e,t,n){}}function In(){}function Ln(){this.setModules=function(e,t){}}function Rn(e,t,n){arguments.length!=3&&(console.error(`WARN: Mp3Encoder(channels, samplerate, kbps) not specified`),e=1,t=44100,n=128);var r=new Cn,i=new Pn,a=new Tn,o=new jn,s=new wn,c=new En,l=new Dn,u=new Nn,d=new Mn,f=new Ln,p=new kn,m=new On,h=new Fn,g=new In;r.setModules(a,o,s,c,l,u,d,f,g),o.setModules(a,g,d,u),f.setModules(o,d),s.setModules(r),l.setModules(o,p,c,m),c.setModules(m,p,r.enc.psy),p.setModules(o),m.setModules(c),u.setModules(r,o,d),i.setModules(h,g),h.setModules(d,f,s);var _=r.lame_init();_.num_channels=e,_.in_samplerate=t,_.brate=n,_.mode=An.STEREO,_.quality=3,_.bWriteVbrTag=!1,_.disable_reservoir=!0,_.write_id3tag_automatic=!1,r.lame_init_params(_);var v=1152,y=0|1.25*v+7200,b=xn(y);this.encodeBuffer=function(t,n){e==1&&(n=t),Sn(t.length==n.length),t.length>v&&(v=t.length,y=0|1.25*v+7200,b=xn(y));var i=r.lame_encode_buffer(_,t,n,t.length,b,0,y);return new Int8Array(b.subarray(0,i))},this.flush=function(){var e=r.lame_encode_flush(_,b,0,y);return new Int8Array(b.subarray(0,e))}}function zn(){this.dataOffset=0,this.dataLen=0,this.channels=0,this.sampleRate=0}function Bn(e){return e.charCodeAt(0)<<24|e.charCodeAt(1)<<16|e.charCodeAt(2)<<8|e.charCodeAt(3)}zn.RIFF=Bn(`RIFF`),zn.WAVE=Bn(`WAVE`),zn.fmt_=Bn(`fmt `),zn.data=Bn(`data`),zn.readHeader=function(e){var t=new zn,n=e.getUint32(0,!1);if(zn.RIFF==n&&(e.getUint32(4,!0),zn.WAVE==e.getUint32(8,!1)&&zn.fmt_==e.getUint32(12,!1))){var r=e.getUint32(16,!0),i=20;switch(r){case 16:case 18:t.channels=e.getUint16(i+2,!0),t.sampleRate=e.getUint32(i+4,!0);break;default:throw`extended fmt chunk not implemented`}i+=r;for(var a=zn.data,o=0;a!=n&&(n=e.getUint32(i,!1),o=e.getUint32(i+4,!0),a!=n);)i+=o+8;return t.dataLen=o,t.dataOffset=i+8,t}};var Vn=e.Mp3Encoder=Rn;e.WavHeader=zn;var Hn=1024,Un=16e3;Hn/Un,Un/Hn;var Wn={m4a:`audio/m4a`,wav:`audio/wav`,mp3:`audio/mpeg`};function Gn(e,t=Un,n=128){try{let r=new Vn(1,t,n),i=new Int16Array(e.length);for(let t=0;t<e.length;t++){let n=Math.max(-1,Math.min(1,e[t]));i[t]=n<0?n*32768:n*32767}let a=[],o=r.encodeBuffer(i);o&&o.length>0&&a.push(o);let s=r.flush();return s&&s.length>0&&a.push(s),a.length===0?null:{blob:new Blob(a,{type:Wn.mp3}),chunks:a}}catch(e){return console.error(`[ScribeSDK] MP3 encoding failed:`,e),null}}var Kn=3,qn=2e3,Jn=1e4,Yn,Xn=[],Zn=new Map,Qn=null;function $n(e,t){try{e.postMessage(t)}catch{}}function er(e){for(let t of Xn)$n(t,e)}function tr(){return new Promise(e=>{let t=Qn;Qn=()=>{t?.(),e()},setTimeout(()=>{e()},Jn)})}async function nr(e,t,n,r){let i=`Upload failed after retries`,a;for(let o=0;o<=Kn;o++)try{let s=e.endsWith(`/`)?`${e}${t}`:`${e}/${t}`,c={"Content-Type":`audio/mp3`,...r};Yn&&(c.Authorization=`Bearer ${Yn}`);let l=await fetch(s,{method:`POST`,body:n,headers:c});if(l.ok)return{success:!0};if(a=l.status,i=await rr(l),l.status===401){er({type:`token_required`}),await tr();continue}if(l.status>=400&&l.status<500&&l.status!==408&&l.status!==429)return{success:!1,error:i,statusCode:a};o<Kn&&await ir(qn)}catch(e){i=e?.message??`Network error`,o<Kn&&await ir(qn)}return{success:!1,error:i,statusCode:a}}async function rr(e){try{let t=await e.json();return t?.error?.message??t?.message??e.statusText??`Request failed`}catch{return e.statusText??`HTTP ${e.status}`}}function ir(e){return new Promise(t=>setTimeout(t,e))}async function ar(e,t,n,r,i){try{let a=Gn(e);if(!a){$n(i,{type:`upload_failed`,fileName:t,error:`MP3 encoding failed`});return}$n(i,{type:`chunk_encoded`,fileName:t,chunkData:a.chunks});let o=await nr(n,t,a.blob,r);o.success?$n(i,{type:`upload_success`,fileName:t}):$n(i,{type:`upload_failed`,fileName:t,error:o.error??`Upload failed after retries`,blob:a.blob})}catch(e){$n(i,{type:`upload_failed`,fileName:t,error:e?.message??`Unknown error`})}}function or(e,t){switch(e.type){case`compress_and_upload`:{Zn.has(t)||Zn.set(t,new Set);let n=Zn.get(t),r=ar(e.audioFrames,e.fileName,e.uploadUrl,e.headers,t);n.add(r),r.finally(()=>n.delete(r));break}case`wait_for_all_uploads`:{let e=Zn.get(t)??new Set;Promise.all(e).then(()=>{$n(t,{type:`all_uploads_complete`})});break}case`update_auth_token`:Yn=e.token,Qn&&=(Qn(),null);break;case`terminate`:{let e=Xn.indexOf(t);e>=0&&Xn.splice(e,1),Zn.delete(t);try{t.close()}catch{}Xn.length===0&&self.close();break}}}var sr=self;sr.onconnect=e=>{let t=e.ports[0];Xn.push(t),t.onmessage=e=>{or(e.data,t)},t.start()}})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "med-scribe-alliance-ts-sdk",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "description": "TypeScript SDK for the MedScribe Alliance Protocol",
5
5
  "main": "dist/index.mjs",
6
6
  "module": "dist/index.mjs",