whisper.rn 0.5.0-rc.1 → 0.5.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +119 -50
  2. package/android/src/main/java/com/rnwhisper/RNWhisper.java +26 -0
  3. package/android/src/main/java/com/rnwhisper/WhisperContext.java +25 -0
  4. package/android/src/main/jni.cpp +81 -0
  5. package/android/src/newarch/java/com/rnwhisper/RNWhisperModule.java +5 -0
  6. package/android/src/oldarch/java/com/rnwhisper/RNWhisperModule.java +5 -0
  7. package/ios/RNWhisper.mm +11 -0
  8. package/ios/RNWhisperContext.h +1 -0
  9. package/ios/RNWhisperContext.mm +46 -0
  10. package/lib/commonjs/AudioSessionIos.js +2 -1
  11. package/lib/commonjs/AudioSessionIos.js.map +1 -1
  12. package/lib/commonjs/NativeRNWhisper.js.map +1 -1
  13. package/lib/commonjs/index.js +26 -0
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/jest-mock.js +126 -0
  16. package/lib/commonjs/jest-mock.js.map +1 -0
  17. package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js +831 -0
  18. package/lib/commonjs/realtime-transcription/RealtimeTranscriber.js.map +1 -0
  19. package/lib/commonjs/realtime-transcription/SliceManager.js +233 -0
  20. package/lib/commonjs/realtime-transcription/SliceManager.js.map +1 -0
  21. package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js +133 -0
  22. package/lib/commonjs/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
  23. package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js +201 -0
  24. package/lib/commonjs/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
  25. package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +309 -0
  26. package/lib/commonjs/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
  27. package/lib/commonjs/realtime-transcription/index.js +27 -0
  28. package/lib/commonjs/realtime-transcription/index.js.map +1 -0
  29. package/lib/commonjs/realtime-transcription/types.js +114 -0
  30. package/lib/commonjs/realtime-transcription/types.js.map +1 -0
  31. package/lib/commonjs/utils/WavFileReader.js +158 -0
  32. package/lib/commonjs/utils/WavFileReader.js.map +1 -0
  33. package/lib/commonjs/utils/WavFileWriter.js +181 -0
  34. package/lib/commonjs/utils/WavFileWriter.js.map +1 -0
  35. package/lib/commonjs/utils/common.js +25 -0
  36. package/lib/commonjs/utils/common.js.map +1 -0
  37. package/lib/module/AudioSessionIos.js +2 -1
  38. package/lib/module/AudioSessionIos.js.map +1 -1
  39. package/lib/module/NativeRNWhisper.js.map +1 -1
  40. package/lib/module/index.js +24 -0
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/jest-mock.js +124 -0
  43. package/lib/module/jest-mock.js.map +1 -0
  44. package/lib/module/realtime-transcription/RealtimeTranscriber.js +825 -0
  45. package/lib/module/realtime-transcription/RealtimeTranscriber.js.map +1 -0
  46. package/lib/module/realtime-transcription/SliceManager.js +226 -0
  47. package/lib/module/realtime-transcription/SliceManager.js.map +1 -0
  48. package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js +124 -0
  49. package/lib/module/realtime-transcription/adapters/AudioPcmStreamAdapter.js.map +1 -0
  50. package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js +194 -0
  51. package/lib/module/realtime-transcription/adapters/JestAudioStreamAdapter.js.map +1 -0
  52. package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js +302 -0
  53. package/lib/module/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.js.map +1 -0
  54. package/lib/module/realtime-transcription/index.js +8 -0
  55. package/lib/module/realtime-transcription/index.js.map +1 -0
  56. package/lib/module/realtime-transcription/types.js +107 -0
  57. package/lib/module/realtime-transcription/types.js.map +1 -0
  58. package/lib/module/utils/WavFileReader.js +151 -0
  59. package/lib/module/utils/WavFileReader.js.map +1 -0
  60. package/lib/module/utils/WavFileWriter.js +174 -0
  61. package/lib/module/utils/WavFileWriter.js.map +1 -0
  62. package/lib/module/utils/common.js +18 -0
  63. package/lib/module/utils/common.js.map +1 -0
  64. package/lib/typescript/AudioSessionIos.d.ts +1 -1
  65. package/lib/typescript/AudioSessionIos.d.ts.map +1 -1
  66. package/lib/typescript/NativeRNWhisper.d.ts +1 -0
  67. package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
  68. package/lib/typescript/index.d.ts +4 -0
  69. package/lib/typescript/index.d.ts.map +1 -1
  70. package/lib/typescript/jest-mock.d.ts +2 -0
  71. package/lib/typescript/jest-mock.d.ts.map +1 -0
  72. package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts +165 -0
  73. package/lib/typescript/realtime-transcription/RealtimeTranscriber.d.ts.map +1 -0
  74. package/lib/typescript/realtime-transcription/SliceManager.d.ts +72 -0
  75. package/lib/typescript/realtime-transcription/SliceManager.d.ts.map +1 -0
  76. package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts +22 -0
  77. package/lib/typescript/realtime-transcription/adapters/AudioPcmStreamAdapter.d.ts.map +1 -0
  78. package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts +44 -0
  79. package/lib/typescript/realtime-transcription/adapters/JestAudioStreamAdapter.d.ts.map +1 -0
  80. package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts +75 -0
  81. package/lib/typescript/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.d.ts.map +1 -0
  82. package/lib/typescript/realtime-transcription/index.d.ts +6 -0
  83. package/lib/typescript/realtime-transcription/index.d.ts.map +1 -0
  84. package/lib/typescript/realtime-transcription/types.d.ts +216 -0
  85. package/lib/typescript/realtime-transcription/types.d.ts.map +1 -0
  86. package/lib/typescript/utils/WavFileReader.d.ts +61 -0
  87. package/lib/typescript/utils/WavFileReader.d.ts.map +1 -0
  88. package/lib/typescript/utils/WavFileWriter.d.ts +57 -0
  89. package/lib/typescript/utils/WavFileWriter.d.ts.map +1 -0
  90. package/lib/typescript/utils/common.d.ts +9 -0
  91. package/lib/typescript/utils/common.d.ts.map +1 -0
  92. package/package.json +18 -6
  93. package/src/AudioSessionIos.ts +3 -2
  94. package/src/NativeRNWhisper.ts +2 -0
  95. package/src/index.ts +34 -0
  96. package/{jest/mock.js → src/jest-mock.ts} +2 -2
  97. package/src/realtime-transcription/RealtimeTranscriber.ts +983 -0
  98. package/src/realtime-transcription/SliceManager.ts +252 -0
  99. package/src/realtime-transcription/adapters/AudioPcmStreamAdapter.ts +143 -0
  100. package/src/realtime-transcription/adapters/JestAudioStreamAdapter.ts +251 -0
  101. package/src/realtime-transcription/adapters/SimulateFileAudioStreamAdapter.ts +378 -0
  102. package/src/realtime-transcription/index.ts +34 -0
  103. package/src/realtime-transcription/types.ts +277 -0
  104. package/src/utils/WavFileReader.ts +202 -0
  105. package/src/utils/WavFileWriter.ts +206 -0
  106. package/src/utils/common.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SliceManager","WavFileWriter","VAD_PRESETS","RealtimeTranscriber","callbacks","isActive","isTranscribing","vadEnabled","transcriptionQueue","accumulatedData","Uint8Array","wavFileWriter","lastSpeechDetectedTime","lastVadState","lastStatsSnapshot","transcriptionResults","Map","constructor","dependencies","options","arguments","length","undefined","whisperContext","vadContext","audioStream","fs","audioSliceSec","audioMinSec","maxSlicesInMemory","vadOptions","default","vadPreset","autoSliceOnSpeechEnd","autoSliceThreshold","transcribeOptions","initialPrompt","promptPreviousSlices","audioOutputPath","logger","sliceManager","onData","handleAudioData","bind","onError","handleError","onStatusChange","handleAudioStatusChange","start","Error","_this$callbacks$onSta","_this$callbacks","_this$options$audioSt4","_this$options$audioSt5","_this$options$audioSt6","_this$options$audioSt7","_this$options$audioSt8","call","reset","_this$options$audioSt","_this$options$audioSt2","_this$options$audioSt3","sampleRate","audioStreamConfig","channels","bitsPerSample","initialize","audioSource","bufferSize","emitStatsUpdate","log","error","_this$callbacks$onSta2","_this$callbacks2","stop","_this$callbacks$onSta3","_this$callbacks3","processAccumulatedDataForSliceManagement","processTranscriptionQueue","finalize","streamData","appendAudioData","data","catch","accumulateAudioData","errorMessage","message","newData","combined","set","minBufferSamples","result","addAudioData","slice","index","processSliceVAD","queueSliceForTranscription","checkAutoSlice","vadEvent","_slice","shouldTriggerAutoSlice","type","currentSliceInfo","getCurrentSliceInfo","currentSlice","getSliceByIndex","currentSliceIndex","currentDuration","Date","now","startTime","targetDuration","minDuration","meetsMinDuration","meetsThreshold","toFixed","nextSlice","_this$callbacks$onVad","_this$callbacks4","audioData","getAudioDataForTranscription","detectSpeech","timestamp","onVad","isSpeech","isSpeechEnd","speechDuration","unshift","sliceIndex","currentTimestamp","vadEventType","confidence","duration","audioBuffer","buffer","vadSegments","detectSpeechData","_vadSegments","totalTime","reduce","sum","segment","t1","t0","audioDuration","Math","min","threshold","currentThreshold","isProcessingTranscriptionQueue","item","shift","processTranscription","buildPrompt","promptParts","push","previousResults","Array","from","entries","filter","_ref","sort","_ref2","_ref3","a","b","map","_ref4","_result$transcribeEve","transcribeEvent","Boolean","join","_this$callbacks$onTra","_this$callbacks5","prompt","promise","transcribeData","onProgress","endTime","isCapturing","isRecording","processTime","recordingTime","memoryUsage","getMemoryUsage","onTranscribe","sampleCount","isProcessed","isReleased","_this$callbacks$onTra2","_this$callbacks6","errorEvent","_this$callbacks$onErr","_this$callbacks7","updateCallbacks","updateVadOptions","updateAutoSliceOptions","getStatistics","audioStats","accumulatedSamples","vadStats","enabled","contextAvailable","sliceStats","autoSliceConfig","getTranscriptionResults","values","_this$callbacks$onTra3","_this$callbacks8","startEvent","forceNextSlice","cancel","clear","release","_this$wavFileWriter","eventType","currentStats","shouldEmitStatsUpdate","_this$callbacks$onSta4","_this$callbacks9","statsEvent","onStatsUpdate","current","previous","_current$sliceStats","_current$sliceStats$m","_previous$sliceStats","_previous$sliceStats$","currentMemory","estimatedMB","previousMemory","memoryDiff","abs"],"sourceRoot":"../../../src","sources":["realtime-transcription/RealtimeTranscriber.ts"],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ export class SliceManager {
2
+ slices = [];
3
+ currentSliceIndex = 0;
4
+ transcribeSliceIndex = 0;
5
+ constructor() {
6
+ let sliceDurationSec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30;
7
+ let maxSlicesInMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
8
+ let sampleRate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16000;
9
+ this.sliceDurationSec = sliceDurationSec;
10
+ this.maxSlicesInMemory = maxSlicesInMemory;
11
+ this.sampleRate = sampleRate;
12
+ }
13
+
14
+ /**
15
+ * Add audio data to the current slice
16
+ */
17
+ addAudioData(audioData) {
18
+ // Get or create current slice
19
+ const currentSlice = this.getCurrentSlice();
20
+
21
+ // Calculate bytes per slice (2 bytes per sample for 16-bit PCM)
22
+ const bytesPerSlice = this.sliceDurationSec * this.sampleRate * 2;
23
+
24
+ // Check if adding this data would exceed slice capacity
25
+ if (currentSlice.sampleCount + audioData.length > bytesPerSlice) {
26
+ // Finalize current slice and create new one
27
+ this.finalizeCurrentSlice();
28
+ this.currentSliceIndex += 1;
29
+ return this.addAudioData(audioData); // Recursively add to new slice
30
+ }
31
+
32
+ // Append data to current slice
33
+ const newData = new Uint8Array(currentSlice.sampleCount + audioData.length);
34
+ newData.set(currentSlice.data.subarray(0, currentSlice.sampleCount));
35
+ newData.set(audioData, currentSlice.sampleCount);
36
+ currentSlice.data = newData;
37
+ currentSlice.sampleCount += audioData.length;
38
+ currentSlice.endTime = Date.now();
39
+
40
+ // Check if slice is complete
41
+ const isSliceComplete = currentSlice.sampleCount >= bytesPerSlice * 0.8; // 80% full
42
+
43
+ if (isSliceComplete) {
44
+ this.finalizeCurrentSlice();
45
+ }
46
+ return {
47
+ slice: currentSlice
48
+ };
49
+ }
50
+
51
+ /**
52
+ * Get the current slice being built
53
+ */
54
+ getCurrentSlice() {
55
+ let slice = this.slices.find(s => s.index === this.currentSliceIndex);
56
+ if (!slice) {
57
+ const bytesPerSlice = this.sliceDurationSec * this.sampleRate * 2; // 2 bytes per sample
58
+ slice = {
59
+ index: this.currentSliceIndex,
60
+ data: new Uint8Array(bytesPerSlice),
61
+ sampleCount: 0,
62
+ startTime: Date.now(),
63
+ endTime: Date.now(),
64
+ isProcessed: false,
65
+ isReleased: false
66
+ };
67
+ this.slices.push(slice);
68
+
69
+ // Clean up old slices if we have too many
70
+ this.cleanupOldSlices();
71
+ }
72
+ return slice;
73
+ }
74
+
75
+ /**
76
+ * Finalize the current slice
77
+ */
78
+ finalizeCurrentSlice() {
79
+ const slice = this.slices.find(s => s.index === this.currentSliceIndex);
80
+ if (slice && slice.sampleCount > 0) {
81
+ // Trim the data array to actual size
82
+ slice.data = slice.data.subarray(0, slice.sampleCount);
83
+ slice.endTime = Date.now();
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Get a slice for transcription
89
+ */
90
+ getSliceForTranscription() {
91
+ const slice = this.slices.find(s => s.index === this.transcribeSliceIndex && !s.isProcessed);
92
+ if (slice && slice.sampleCount > 0) {
93
+ return slice;
94
+ }
95
+ return null;
96
+ }
97
+
98
+ /**
99
+ * Mark a slice as processed
100
+ */
101
+ markSliceAsProcessed(sliceIndex) {
102
+ const slice = this.slices.find(s => s.index === sliceIndex);
103
+ if (slice) {
104
+ slice.isProcessed = true;
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Move to the next slice for transcription
110
+ */
111
+ moveToNextTranscribeSlice() {
112
+ this.transcribeSliceIndex += 1;
113
+ }
114
+
115
+ /**
116
+ * Get audio data for transcription (base64 encoded)
117
+ */
118
+ getAudioDataForTranscription(sliceIndex) {
119
+ const slice = this.slices.find(s => s.index === sliceIndex);
120
+ if (!slice || slice.sampleCount === 0) {
121
+ return null;
122
+ }
123
+ return slice.data.subarray(0, slice.sampleCount);
124
+ }
125
+
126
+ /**
127
+ * Get a slice by index
128
+ */
129
+ getSliceByIndex(sliceIndex) {
130
+ return this.slices.find(s => s.index === sliceIndex) || null;
131
+ }
132
+
133
+ /**
134
+ * Clean up old slices to manage memory
135
+ */
136
+ cleanupOldSlices() {
137
+ if (this.slices.length <= this.maxSlicesInMemory) {
138
+ return;
139
+ }
140
+
141
+ // Sort slices by index
142
+ this.slices.sort((a, b) => a.index - b.index);
143
+
144
+ // Keep only the most recent slices
145
+ const slicesToKeep = this.slices.slice(-this.maxSlicesInMemory);
146
+ const slicesToRemove = this.slices.slice(0, -this.maxSlicesInMemory);
147
+
148
+ // Release old slices
149
+ slicesToRemove.forEach(slice => {
150
+ if (!slice.isReleased) {
151
+ slice.isReleased = true;
152
+ // Clear the audio data to free memory
153
+ slice.data = new Uint8Array(0);
154
+ }
155
+ });
156
+ this.slices = slicesToKeep;
157
+ }
158
+
159
+ /**
160
+ * Get memory usage statistics
161
+ */
162
+ getMemoryUsage() {
163
+ const activeSlices = this.slices.filter(s => !s.isReleased);
164
+ const totalBytes = activeSlices.reduce((sum, slice) => sum + slice.sampleCount, 0);
165
+
166
+ // Estimate memory usage (Uint8Array = 1 byte per sample)
167
+ const estimatedMB = totalBytes / (1024 * 1024);
168
+ return {
169
+ slicesInMemory: activeSlices.length,
170
+ totalSamples: totalBytes / 2,
171
+ // Convert bytes to samples (2 bytes per sample)
172
+ estimatedMB: Math.round(estimatedMB * 100) / 100 // Round to 2 decimal places
173
+ };
174
+ }
175
+
176
+ /**
177
+ * Reset all slices and indices
178
+ */
179
+ reset() {
180
+ // Release all slices
181
+ this.slices.forEach(slice => {
182
+ slice.isReleased = true;
183
+ // Clear the audio data to free memory
184
+ slice.data = new Uint8Array(0);
185
+ });
186
+
187
+ // Reset state
188
+ this.slices = [];
189
+ this.currentSliceIndex = 0;
190
+ this.transcribeSliceIndex = 0;
191
+ }
192
+
193
+ /**
194
+ * Get current slice information
195
+ */
196
+ getCurrentSliceInfo() {
197
+ return {
198
+ currentSliceIndex: this.currentSliceIndex,
199
+ transcribeSliceIndex: this.transcribeSliceIndex,
200
+ totalSlices: this.slices.length,
201
+ memoryUsage: this.getMemoryUsage()
202
+ };
203
+ }
204
+
205
+ /**
206
+ * Force move to the next slice, finalizing the current one regardless of capacity
207
+ */
208
+ forceNextSlice() {
209
+ const currentSlice = this.slices.find(s => s.index === this.currentSliceIndex);
210
+ if (currentSlice && currentSlice.sampleCount > 0) {
211
+ // Finalize current slice
212
+ this.finalizeCurrentSlice();
213
+
214
+ // Move to next slice
215
+ this.currentSliceIndex += 1;
216
+ return {
217
+ slice: currentSlice
218
+ };
219
+ }
220
+
221
+ // If no current slice or it's empty, just move to next index
222
+ this.currentSliceIndex += 1;
223
+ return {};
224
+ }
225
+ }
226
+ //# sourceMappingURL=SliceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SliceManager","slices","currentSliceIndex","transcribeSliceIndex","constructor","sliceDurationSec","arguments","length","undefined","maxSlicesInMemory","sampleRate","addAudioData","audioData","currentSlice","getCurrentSlice","bytesPerSlice","sampleCount","finalizeCurrentSlice","newData","Uint8Array","set","data","subarray","endTime","Date","now","isSliceComplete","slice","find","s","index","startTime","isProcessed","isReleased","push","cleanupOldSlices","getSliceForTranscription","markSliceAsProcessed","sliceIndex","moveToNextTranscribeSlice","getAudioDataForTranscription","getSliceByIndex","sort","a","b","slicesToKeep","slicesToRemove","forEach","getMemoryUsage","activeSlices","filter","totalBytes","reduce","sum","estimatedMB","slicesInMemory","totalSamples","Math","round","reset","getCurrentSliceInfo","totalSlices","memoryUsage","forceNextSlice"],"sourceRoot":"../../../src","sources":["realtime-transcription/SliceManager.ts"],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ // @ts-ignore
3
+ import LiveAudioStream from '@fugood/react-native-audio-pcm-stream';
4
+ import { base64ToUint8Array } from '../../utils/common';
5
+ export class AudioPcmStreamAdapter {
6
+ isInitialized = false;
7
+ recording = false;
8
+ config = null;
9
+ async initialize(config) {
10
+ if (this.isInitialized) {
11
+ await this.release();
12
+ }
13
+ try {
14
+ this.config = config || null;
15
+
16
+ // Initialize LiveAudioStream
17
+ LiveAudioStream.init({
18
+ sampleRate: config.sampleRate || 16000,
19
+ channels: config.channels || 1,
20
+ bitsPerSample: config.bitsPerSample || 16,
21
+ audioSource: config.audioSource || 6,
22
+ bufferSize: config.bufferSize || 16 * 1024,
23
+ wavFile: '' // We handle file writing separately
24
+ });
25
+
26
+ // Set up data listener
27
+ LiveAudioStream.on('data', this.handleAudioData.bind(this));
28
+ this.isInitialized = true;
29
+ } catch (error) {
30
+ var _this$errorCallback;
31
+ const errorMessage = error instanceof Error ? error.message : 'Unknown initialization error';
32
+ (_this$errorCallback = this.errorCallback) === null || _this$errorCallback === void 0 ? void 0 : _this$errorCallback.call(this, errorMessage);
33
+ throw new Error(`Failed to initialize LiveAudioStream: ${errorMessage}`);
34
+ }
35
+ }
36
+ async start() {
37
+ if (!this.isInitialized) {
38
+ throw new Error('AudioStream not initialized');
39
+ }
40
+ if (this.recording) {
41
+ return;
42
+ }
43
+ try {
44
+ var _this$statusCallback;
45
+ LiveAudioStream.start();
46
+ this.recording = true;
47
+ (_this$statusCallback = this.statusCallback) === null || _this$statusCallback === void 0 ? void 0 : _this$statusCallback.call(this, true);
48
+ } catch (error) {
49
+ var _this$errorCallback2;
50
+ const errorMessage = error instanceof Error ? error.message : 'Unknown start error';
51
+ (_this$errorCallback2 = this.errorCallback) === null || _this$errorCallback2 === void 0 ? void 0 : _this$errorCallback2.call(this, errorMessage);
52
+ throw new Error(`Failed to start recording: ${errorMessage}`);
53
+ }
54
+ }
55
+ async stop() {
56
+ if (!this.recording) {
57
+ return;
58
+ }
59
+ try {
60
+ var _this$statusCallback2;
61
+ await LiveAudioStream.stop();
62
+ this.recording = false;
63
+ (_this$statusCallback2 = this.statusCallback) === null || _this$statusCallback2 === void 0 ? void 0 : _this$statusCallback2.call(this, false);
64
+ } catch (error) {
65
+ var _this$errorCallback3;
66
+ const errorMessage = error instanceof Error ? error.message : 'Unknown stop error';
67
+ (_this$errorCallback3 = this.errorCallback) === null || _this$errorCallback3 === void 0 ? void 0 : _this$errorCallback3.call(this, errorMessage);
68
+ throw new Error(`Failed to stop recording: ${errorMessage}`);
69
+ }
70
+ }
71
+ isRecording() {
72
+ return this.recording;
73
+ }
74
+ onData(callback) {
75
+ this.dataCallback = callback;
76
+ }
77
+ onError(callback) {
78
+ this.errorCallback = callback;
79
+ }
80
+ onStatusChange(callback) {
81
+ this.statusCallback = callback;
82
+ }
83
+ async release() {
84
+ if (this.recording) {
85
+ await this.stop();
86
+ }
87
+ try {
88
+ // LiveAudioStream doesn't have an explicit release method
89
+ // But we should remove listeners and reset state
90
+ this.isInitialized = false;
91
+ this.config = null;
92
+ this.dataCallback = undefined;
93
+ this.errorCallback = undefined;
94
+ this.statusCallback = undefined;
95
+ } catch (error) {
96
+ console.warn('Error during LiveAudioStream release:', error);
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Handle incoming audio data from LiveAudioStream
102
+ */
103
+ handleAudioData(base64Data) {
104
+ if (!this.dataCallback) {
105
+ return;
106
+ }
107
+ try {
108
+ var _this$config, _this$config2;
109
+ const audioData = base64ToUint8Array(base64Data);
110
+ const streamData = {
111
+ data: audioData,
112
+ sampleRate: ((_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config.sampleRate) || 16000,
113
+ channels: ((_this$config2 = this.config) === null || _this$config2 === void 0 ? void 0 : _this$config2.channels) || 1,
114
+ timestamp: Date.now()
115
+ };
116
+ this.dataCallback(streamData);
117
+ } catch (error) {
118
+ var _this$errorCallback4;
119
+ const errorMessage = error instanceof Error ? error.message : 'Audio processing error';
120
+ (_this$errorCallback4 = this.errorCallback) === null || _this$errorCallback4 === void 0 ? void 0 : _this$errorCallback4.call(this, errorMessage);
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=AudioPcmStreamAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LiveAudioStream","base64ToUint8Array","AudioPcmStreamAdapter","isInitialized","recording","config","initialize","release","init","sampleRate","channels","bitsPerSample","audioSource","bufferSize","wavFile","on","handleAudioData","bind","error","_this$errorCallback","errorMessage","Error","message","errorCallback","call","start","_this$statusCallback","statusCallback","_this$errorCallback2","stop","_this$statusCallback2","_this$errorCallback3","isRecording","onData","callback","dataCallback","onError","onStatusChange","undefined","console","warn","base64Data","_this$config","_this$config2","audioData","streamData","data","timestamp","Date","now","_this$errorCallback4"],"sourceRoot":"../../../../src","sources":["realtime-transcription/adapters/AudioPcmStreamAdapter.ts"],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ export class JestAudioStreamAdapter {
2
+ config = null;
3
+ isInitialized = false;
4
+ recording = false;
5
+ chunksSent = 0;
6
+ startTime = 0;
7
+ constructor() {
8
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
9
+ this.options = {
10
+ sampleRate: 16000,
11
+ channels: 1,
12
+ bitsPerSample: 16,
13
+ simulateLatency: 0,
14
+ simulateErrors: false,
15
+ chunkSize: 3200,
16
+ // 100ms at 16kHz, 16-bit, mono
17
+ chunkInterval: 100,
18
+ // 100ms
19
+ maxChunks: -1,
20
+ // unlimited
21
+ generateSilence: true,
22
+ ...options
23
+ };
24
+ }
25
+ async initialize(config) {
26
+ if (this.isInitialized) {
27
+ await this.release();
28
+ }
29
+ if (this.options.simulateLatency > 0) {
30
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
31
+ }
32
+ if (this.options.simulateErrors && !this.options.simulateStartErrorOnly) {
33
+ throw new Error('Simulated initialization error');
34
+ }
35
+ this.config = config;
36
+ this.isInitialized = true;
37
+ }
38
+ async start() {
39
+ var _this$statusCallback;
40
+ if (!this.isInitialized) {
41
+ throw new Error('AudioStream not initialized');
42
+ }
43
+ if (this.recording) {
44
+ return;
45
+ }
46
+ if (this.options.simulateLatency > 0) {
47
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
48
+ }
49
+ if (this.options.simulateErrors) {
50
+ throw new Error('Simulated start error');
51
+ }
52
+ this.recording = true;
53
+ this.chunksSent = 0;
54
+ this.startTime = Date.now();
55
+ (_this$statusCallback = this.statusCallback) === null || _this$statusCallback === void 0 ? void 0 : _this$statusCallback.call(this, true);
56
+ this.startStreaming();
57
+ }
58
+ async stop() {
59
+ var _this$statusCallback2;
60
+ if (!this.recording) {
61
+ return;
62
+ }
63
+ if (this.options.simulateLatency > 0) {
64
+ await JestAudioStreamAdapter.delay(this.options.simulateLatency);
65
+ }
66
+ this.recording = false;
67
+ (_this$statusCallback2 = this.statusCallback) === null || _this$statusCallback2 === void 0 ? void 0 : _this$statusCallback2.call(this, false);
68
+ if (this.streamInterval) {
69
+ clearTimeout(this.streamInterval);
70
+ this.streamInterval = undefined;
71
+ }
72
+ }
73
+ isRecording() {
74
+ return this.recording;
75
+ }
76
+ onData(callback) {
77
+ this.dataCallback = callback;
78
+ }
79
+ onError(callback) {
80
+ this.errorCallback = callback;
81
+ }
82
+ onStatusChange(callback) {
83
+ this.statusCallback = callback;
84
+ }
85
+ async release() {
86
+ if (this.recording) {
87
+ await this.stop();
88
+ }
89
+ this.isInitialized = false;
90
+ this.config = null;
91
+ this.dataCallback = undefined;
92
+ this.errorCallback = undefined;
93
+ this.statusCallback = undefined;
94
+ this.chunksSent = 0;
95
+ }
96
+
97
+ // Test helper methods
98
+ simulateError(error) {
99
+ var _this$errorCallback;
100
+ (_this$errorCallback = this.errorCallback) === null || _this$errorCallback === void 0 ? void 0 : _this$errorCallback.call(this, error);
101
+ }
102
+ simulateDataChunk(data) {
103
+ if (!this.dataCallback || !this.config) {
104
+ return;
105
+ }
106
+ const streamData = {
107
+ data,
108
+ sampleRate: this.config.sampleRate || this.options.sampleRate,
109
+ channels: this.config.channels || this.options.channels,
110
+ timestamp: Date.now()
111
+ };
112
+ this.dataCallback(streamData);
113
+ }
114
+ getChunksSent() {
115
+ return this.chunksSent;
116
+ }
117
+ getTotalBytesStreamed() {
118
+ return this.chunksSent * this.options.chunkSize;
119
+ }
120
+ getStreamDuration() {
121
+ return this.recording ? Date.now() - this.startTime : 0;
122
+ }
123
+ startStreaming() {
124
+ if (!this.dataCallback || !this.config) {
125
+ return;
126
+ }
127
+ const streamChunk = () => {
128
+ if (!this.recording) {
129
+ return;
130
+ }
131
+
132
+ // Check if we've reached the maximum chunks
133
+ if (this.options.maxChunks > 0 && this.chunksSent >= this.options.maxChunks) {
134
+ this.stop();
135
+ return;
136
+ }
137
+
138
+ // Generate or use provided audio data
139
+ const audioData = this.generateAudioChunk();
140
+ if (audioData) {
141
+ this.simulateDataChunk(audioData);
142
+ this.chunksSent += 1;
143
+ }
144
+
145
+ // Schedule next chunk if still recording
146
+ if (this.recording) {
147
+ this.streamInterval = setTimeout(streamChunk, this.options.chunkInterval);
148
+ }
149
+ };
150
+
151
+ // Start streaming after a short delay
152
+ this.streamInterval = setTimeout(streamChunk, this.options.chunkInterval);
153
+ }
154
+ generateAudioChunk() {
155
+ // If we have pre-defined audio data, use it
156
+ if (this.options.audioData) {
157
+ const startByte = this.chunksSent * this.options.chunkSize;
158
+ const endByte = Math.min(startByte + this.options.chunkSize, this.options.audioData.length);
159
+ if (startByte >= this.options.audioData.length) {
160
+ return null; // No more data
161
+ }
162
+
163
+ return this.options.audioData.subarray(startByte, endByte);
164
+ }
165
+
166
+ // Generate silence or simple tone
167
+ const chunkSize = this.options.chunkSize;
168
+ const audioData = new Uint8Array(chunkSize);
169
+ if (this.options.generateSilence) {
170
+ // Generate silence (all zeros)
171
+ audioData.fill(0);
172
+ } else {
173
+ // Generate a simple sine wave tone for testing
174
+ const sampleRate = this.options.sampleRate;
175
+ const frequency = 440; // A4 note
176
+ const samplesPerChunk = chunkSize / 2; // 16-bit samples
177
+ const timeOffset = this.chunksSent * samplesPerChunk / sampleRate;
178
+ for (let i = 0; i < samplesPerChunk; i += 1) {
179
+ const time = timeOffset + i / sampleRate;
180
+ const amplitude = Math.sin(2 * Math.PI * frequency * time) * 0.5;
181
+ const sample = Math.round(amplitude * 32767); // 16-bit signed sample
182
+
183
+ // Convert to little-endian bytes
184
+ audioData[i * 2] = sample % 256;
185
+ audioData[i * 2 + 1] = Math.floor(sample / 256) % 256;
186
+ }
187
+ }
188
+ return audioData;
189
+ }
190
+ static delay(ms) {
191
+ return new Promise(resolve => setTimeout(resolve, ms));
192
+ }
193
+ }
194
+ //# sourceMappingURL=JestAudioStreamAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["JestAudioStreamAdapter","config","isInitialized","recording","chunksSent","startTime","constructor","options","arguments","length","undefined","sampleRate","channels","bitsPerSample","simulateLatency","simulateErrors","chunkSize","chunkInterval","maxChunks","generateSilence","initialize","release","delay","simulateStartErrorOnly","Error","start","_this$statusCallback","Date","now","statusCallback","call","startStreaming","stop","_this$statusCallback2","streamInterval","clearTimeout","isRecording","onData","callback","dataCallback","onError","errorCallback","onStatusChange","simulateError","error","_this$errorCallback","simulateDataChunk","data","streamData","timestamp","getChunksSent","getTotalBytesStreamed","getStreamDuration","streamChunk","audioData","generateAudioChunk","setTimeout","startByte","endByte","Math","min","subarray","Uint8Array","fill","frequency","samplesPerChunk","timeOffset","i","time","amplitude","sin","PI","sample","round","floor","ms","Promise","resolve"],"sourceRoot":"../../../../src","sources":["realtime-transcription/adapters/JestAudioStreamAdapter.ts"],"mappings":"AAgBA,OAAO,MAAMA,sBAAsB,CAAiC;EAC1DC,MAAM,GAA6B,IAAI;EAIvCC,aAAa,GAAG,KAAK;EAErBC,SAAS,GAAG,KAAK;EAUjBC,UAAU,GAAG,CAAC;EAEdC,SAAS,GAAG,CAAC;EAErBC,WAAWA,CAAA,EAA8C;IAAA,IAA7CC,OAAsC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACrD,IAAI,CAACD,OAAO,GAAG;MACbI,UAAU,EAAE,KAAK;MACjBC,QAAQ,EAAE,CAAC;MACXC,aAAa,EAAE,EAAE;MACjBC,eAAe,EAAE,CAAC;MAClBC,cAAc,EAAE,KAAK;MACrBC,SAAS,EAAE,IAAI;MAAE;MACjBC,aAAa,EAAE,GAAG;MAAE;MACpBC,SAAS,EAAE,CAAC,CAAC;MAAE;MACfC,eAAe,EAAE,IAAI;MACrB,GAAGZ;IACL,CAAC;EACH;EAEA,MAAMa,UAAUA,CAACnB,MAAyB,EAAiB;IACzD,IAAI,IAAI,CAACC,aAAa,EAAE;MACtB,MAAM,IAAI,CAACmB,OAAO,EAAE;IACtB;IAEA,IAAI,IAAI,CAACd,OAAO,CAACO,eAAe,GAAI,CAAC,EAAE;MACrC,MAAMd,sBAAsB,CAACsB,KAAK,CAAC,IAAI,CAACf,OAAO,CAACO,eAAe,CAAE;IACnE;IAEA,IAAI,IAAI,CAACP,OAAO,CAACQ,cAAc,IAAI,CAAC,IAAI,CAACR,OAAO,CAACgB,sBAAsB,EAAE;MACvE,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;IACnD;IAEA,IAAI,CAACvB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,aAAa,GAAG,IAAI;EAC3B;EAEA,MAAMuB,KAAKA,CAAA,EAAkB;IAAA,IAAAC,oBAAA;IAC3B,IAAI,CAAC,IAAI,CAACxB,aAAa,EAAE;MACvB,MAAM,IAAIsB,KAAK,CAAC,6BAA6B,CAAC;IAChD;IAEA,IAAI,IAAI,CAACrB,SAAS,EAAE;MAClB;IACF;IAEA,IAAI,IAAI,CAACI,OAAO,CAACO,eAAe,GAAI,CAAC,EAAE;MACrC,MAAMd,sBAAsB,CAACsB,KAAK,CAAC,IAAI,CAACf,OAAO,CAACO,eAAe,CAAE;IACnE;IAEA,IAAI,IAAI,CAACP,OAAO,CAACQ,cAAc,EAAE;MAC/B,MAAM,IAAIS,KAAK,CAAC,uBAAuB,CAAC;IAC1C;IAEA,IAAI,CAACrB,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,SAAS,GAAGsB,IAAI,CAACC,GAAG,EAAE;IAC3B,CAAAF,oBAAA,OAAI,CAACG,cAAc,cAAAH,oBAAA,uBAAnBA,oBAAA,CAAAI,IAAA,KAAI,EAAkB,IAAI,CAAC;IAC3B,IAAI,CAACC,cAAc,EAAE;EACvB;EAEA,MAAMC,IAAIA,CAAA,EAAkB;IAAA,IAAAC,qBAAA;IAC1B,IAAI,CAAC,IAAI,CAAC9B,SAAS,EAAE;MACnB;IACF;IAEA,IAAI,IAAI,CAACI,OAAO,CAACO,eAAe,GAAI,CAAC,EAAE;MACrC,MAAMd,sBAAsB,CAACsB,KAAK,CAAC,IAAI,CAACf,OAAO,CAACO,eAAe,CAAE;IACnE;IAEA,IAAI,CAACX,SAAS,GAAG,KAAK;IACtB,CAAA8B,qBAAA,OAAI,CAACJ,cAAc,cAAAI,qBAAA,uBAAnBA,qBAAA,CAAAH,IAAA,KAAI,EAAkB,KAAK,CAAC;IAE5B,IAAI,IAAI,CAACI,cAAc,EAAE;MACvBC,YAAY,CAAC,IAAI,CAACD,cAAc,CAAC;MACjC,IAAI,CAACA,cAAc,GAAGxB,SAAS;IACjC;EACF;EAEA0B,WAAWA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACjC,SAAS;EACvB;EAEAkC,MAAMA,CAACC,QAAyC,EAAQ;IACtD,IAAI,CAACC,YAAY,GAAGD,QAAQ;EAC9B;EAEAE,OAAOA,CAACF,QAAiC,EAAQ;IAC/C,IAAI,CAACG,aAAa,GAAGH,QAAQ;EAC/B;EAEAI,cAAcA,CAACJ,QAAwC,EAAQ;IAC7D,IAAI,CAACT,cAAc,GAAGS,QAAQ;EAChC;EAEA,MAAMjB,OAAOA,CAAA,EAAkB;IAC7B,IAAI,IAAI,CAAClB,SAAS,EAAE;MAClB,MAAM,IAAI,CAAC6B,IAAI,EAAE;IACnB;IAEA,IAAI,CAAC9B,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACD,MAAM,GAAG,IAAI;IAClB,IAAI,CAACsC,YAAY,GAAG7B,SAAS;IAC7B,IAAI,CAAC+B,aAAa,GAAG/B,SAAS;IAC9B,IAAI,CAACmB,cAAc,GAAGnB,SAAS;IAC/B,IAAI,CAACN,UAAU,GAAG,CAAC;EACrB;;EAEA;EACAuC,aAAaA,CAACC,KAAa,EAAQ;IAAA,IAAAC,mBAAA;IACjC,CAAAA,mBAAA,OAAI,CAACJ,aAAa,cAAAI,mBAAA,uBAAlBA,mBAAA,CAAAf,IAAA,KAAI,EAAiBc,KAAK,CAAC;EAC7B;EAEAE,iBAAiBA,CAACC,IAAgB,EAAQ;IACxC,IAAI,CAAC,IAAI,CAACR,YAAY,IAAI,CAAC,IAAI,CAACtC,MAAM,EAAE;MACtC;IACF;IAEA,MAAM+C,UAA2B,GAAG;MAClCD,IAAI;MACJpC,UAAU,EAAE,IAAI,CAACV,MAAM,CAACU,UAAU,IAAI,IAAI,CAACJ,OAAO,CAACI,UAAW;MAC9DC,QAAQ,EAAE,IAAI,CAACX,MAAM,CAACW,QAAQ,IAAI,IAAI,CAACL,OAAO,CAACK,QAAS;MACxDqC,SAAS,EAAEtB,IAAI,CAACC,GAAG;IACrB,CAAC;IAED,IAAI,CAACW,YAAY,CAACS,UAAU,CAAC;EAC/B;EAEAE,aAAaA,CAAA,EAAW;IACtB,OAAO,IAAI,CAAC9C,UAAU;EACxB;EAEA+C,qBAAqBA,CAAA,EAAW;IAC9B,OAAO,IAAI,CAAC/C,UAAU,GAAG,IAAI,CAACG,OAAO,CAACS,SAAU;EAClD;EAEAoC,iBAAiBA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAACjD,SAAS,GAAGwB,IAAI,CAACC,GAAG,EAAE,GAAG,IAAI,CAACvB,SAAS,GAAG,CAAC;EACzD;EAEU0B,cAAcA,CAAA,EAAS;IAC/B,IAAI,CAAC,IAAI,CAACQ,YAAY,IAAI,CAAC,IAAI,CAACtC,MAAM,EAAE;MACtC;IACF;IAEA,MAAMoD,WAAW,GAAGA,CAAA,KAAM;MACxB,IAAI,CAAC,IAAI,CAAClD,SAAS,EAAE;QACnB;MACF;;MAEA;MACA,IAAI,IAAI,CAACI,OAAO,CAACW,SAAS,GAAI,CAAC,IAAI,IAAI,CAACd,UAAU,IAAI,IAAI,CAACG,OAAO,CAACW,SAAU,EAAE;QAC7E,IAAI,CAACc,IAAI,EAAE;QACX;MACF;;MAEA;MACA,MAAMsB,SAAS,GAAG,IAAI,CAACC,kBAAkB,EAAE;MAE3C,IAAID,SAAS,EAAE;QACb,IAAI,CAACR,iBAAiB,CAACQ,SAAS,CAAC;QACjC,IAAI,CAAClD,UAAU,IAAI,CAAC;MACtB;;MAEA;MACA,IAAI,IAAI,CAACD,SAAS,EAAE;QAClB,IAAI,CAAC+B,cAAc,GAAGsB,UAAU,CAACH,WAAW,EAAE,IAAI,CAAC9C,OAAO,CAACU,aAAa,CAAE;MAC5E;IACF,CAAC;;IAED;IACA,IAAI,CAACiB,cAAc,GAAGsB,UAAU,CAACH,WAAW,EAAE,IAAI,CAAC9C,OAAO,CAACU,aAAa,CAAE;EAC5E;EAEQsC,kBAAkBA,CAAA,EAAsB;IAC9C;IACA,IAAI,IAAI,CAAChD,OAAO,CAAC+C,SAAS,EAAE;MAC1B,MAAMG,SAAS,GAAG,IAAI,CAACrD,UAAU,GAAG,IAAI,CAACG,OAAO,CAACS,SAAU;MAC3D,MAAM0C,OAAO,GAAGC,IAAI,CAACC,GAAG,CAACH,SAAS,GAAG,IAAI,CAAClD,OAAO,CAACS,SAAU,EAAE,IAAI,CAACT,OAAO,CAAC+C,SAAS,CAAC7C,MAAM,CAAC;MAE5F,IAAIgD,SAAS,IAAI,IAAI,CAAClD,OAAO,CAAC+C,SAAS,CAAC7C,MAAM,EAAE;QAC9C,OAAO,IAAI,EAAC;MACd;;MAEA,OAAO,IAAI,CAACF,OAAO,CAAC+C,SAAS,CAACO,QAAQ,CAACJ,SAAS,EAAEC,OAAO,CAAC;IAC5D;;IAEA;IACA,MAAM1C,SAAS,GAAG,IAAI,CAACT,OAAO,CAACS,SAAU;IACzC,MAAMsC,SAAS,GAAG,IAAIQ,UAAU,CAAC9C,SAAS,CAAC;IAE3C,IAAI,IAAI,CAACT,OAAO,CAACY,eAAe,EAAE;MAChC;MACAmC,SAAS,CAACS,IAAI,CAAC,CAAC,CAAC;IACnB,CAAC,MAAM;MACL;MACA,MAAMpD,UAAU,GAAG,IAAI,CAACJ,OAAO,CAACI,UAAW;MAC3C,MAAMqD,SAAS,GAAG,GAAG,EAAC;MACtB,MAAMC,eAAe,GAAGjD,SAAS,GAAG,CAAC,EAAC;MACtC,MAAMkD,UAAU,GAAI,IAAI,CAAC9D,UAAU,GAAG6D,eAAe,GAAItD,UAAU;MAE7D,KAAK,IAAIwD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,eAAe,EAAEE,CAAC,IAAI,CAAC,EAAE;QACjD,MAAMC,IAAI,GAAGF,UAAU,GAAGC,CAAC,GAAGxD,UAAU;QACxC,MAAM0D,SAAS,GAAGV,IAAI,CAACW,GAAG,CAAC,CAAC,GAAGX,IAAI,CAACY,EAAE,GAAGP,SAAS,GAAGI,IAAI,CAAC,GAAG,GAAG;QAChE,MAAMI,MAAM,GAAGb,IAAI,CAACc,KAAK,CAACJ,SAAS,GAAG,KAAK,CAAC,EAAC;;QAE7C;QACAf,SAAS,CAACa,CAAC,GAAG,CAAC,CAAC,GAAGK,MAAM,GAAG,GAAG;QAC/BlB,SAAS,CAACa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGR,IAAI,CAACe,KAAK,CAACF,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;MACvD;IACF;IAEA,OAAOlB,SAAS;EAClB;EAEA,OAAehC,KAAKA,CAACqD,EAAU,EAAiB;IAC9C,OAAO,IAAIC,OAAO,CAACC,OAAO,IAAIrB,UAAU,CAACqB,OAAO,EAAEF,EAAE,CAAC,CAAC;EACxD;AACF"}