@livekit/agents-plugin-elevenlabs 0.4.5 → 0.5.0
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/README.md +17 -0
- package/dist/index.cjs +23 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/models.cjs +17 -0
- package/dist/models.cjs.map +1 -0
- package/dist/models.js +0 -4
- package/dist/models.js.map +1 -1
- package/dist/tts.cjs +241 -0
- package/dist/tts.cjs.map +1 -0
- package/dist/tts.d.ts +1 -1
- package/dist/tts.d.ts.map +1 -1
- package/dist/tts.js +201 -198
- package/dist/tts.js.map +1 -1
- package/package.json +23 -7
- package/src/tts.ts +1 -2
- package/.turbo/turbo-build.log +0 -4
- package/CHANGELOG.md +0 -55
- package/api-extractor.json +0 -20
- package/tsconfig.json +0 -16
- package/tsconfig.tsbuildinfo +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
3
|
+
|
|
4
|
+
SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
-->
|
|
6
|
+
# ElevenLabs plugin for LiveKit Agents
|
|
7
|
+
|
|
8
|
+
The Agents Framework is designed for building realtime, programmable
|
|
9
|
+
participants that run on servers. Use it to create conversational, multi-modal
|
|
10
|
+
voice agents that can see, hear, and understand.
|
|
11
|
+
|
|
12
|
+
This package contains the ElevenLabs plugin, which allows for voice synthesis.
|
|
13
|
+
Refer to the [documentation](https://docs.livekit.io/agents/overview/) for
|
|
14
|
+
information on how to use it, or browse the [API
|
|
15
|
+
reference](https://docs.livekit.io/agents-js/modules/plugins_agents_plugin_elevenlabs.html).
|
|
16
|
+
See the [repository](https://github.com/livekit/agents-js) for more information
|
|
17
|
+
about the framework as a whole.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var src_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(src_exports);
|
|
18
|
+
__reExport(src_exports, require("./tts.cjs"), module.exports);
|
|
19
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
20
|
+
0 && (module.exports = {
|
|
21
|
+
...require("./tts.cjs")
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './tts.js';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAIA,wBAAc,qBAJd;","names":[]}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './tts.js';\n"],"mappings":"AAIA,cAAc;","names":[]}
|
package/dist/models.cjs
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var models_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(models_exports);
|
|
17
|
+
//# sourceMappingURL=models.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/models.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport type TTSModels =\n | 'eleven_monolingual_v1'\n | 'eleven_multilingual_v1'\n | 'eleven_multilingual_v2'\n | 'eleven_turbo_v2'\n | 'eleven_turbo_v2_5';\n\nexport type TTSEncoding =\n // XXX(nbsp): MP3 is not yet supported\n // | 'mp3_22050_32'\n // | 'mp3_44100_32'\n // | 'mp3_44100_64'\n // | 'mp3_44100_96'\n // | 'mp3_44100_128'\n // | 'mp3_44100_192'\n 'pcm_16000' | 'pcm_22050' | 'pcm_44100';\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/dist/models.js
CHANGED
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/tts.cjs
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var tts_exports = {};
|
|
20
|
+
__export(tts_exports, {
|
|
21
|
+
SynthesizeStream: () => SynthesizeStream,
|
|
22
|
+
TTS: () => TTS
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(tts_exports);
|
|
25
|
+
var import_agents = require("@livekit/agents");
|
|
26
|
+
var import_rtc_node = require("@livekit/rtc-node");
|
|
27
|
+
var import_node_crypto = require("node:crypto");
|
|
28
|
+
var import_node_url = require("node:url");
|
|
29
|
+
var import_ws = require("ws");
|
|
30
|
+
const DEFAULT_VOICE = {
|
|
31
|
+
id: "EXAVITQu4vr4xnSDxMaL",
|
|
32
|
+
name: "Bella",
|
|
33
|
+
category: "premade",
|
|
34
|
+
settings: {
|
|
35
|
+
stability: 0.71,
|
|
36
|
+
similarity_boost: 0.5,
|
|
37
|
+
style: 0,
|
|
38
|
+
use_speaker_boost: true
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const API_BASE_URL_V1 = "https://api.elevenlabs.io/v1/";
|
|
42
|
+
const AUTHORIZATION_HEADER = "xi-api-key";
|
|
43
|
+
const defaultTTSOptions = {
|
|
44
|
+
apiKey: process.env.ELEVEN_API_KEY,
|
|
45
|
+
voice: DEFAULT_VOICE,
|
|
46
|
+
modelID: "eleven_turbo_v2_5",
|
|
47
|
+
baseURL: API_BASE_URL_V1,
|
|
48
|
+
encoding: "pcm_22050",
|
|
49
|
+
streamingLatency: 3,
|
|
50
|
+
wordTokenizer: new import_agents.tokenize.basic.WordTokenizer(false),
|
|
51
|
+
chunkLengthSchedule: [],
|
|
52
|
+
enableSsmlParsing: false
|
|
53
|
+
};
|
|
54
|
+
class TTS extends import_agents.tts.TTS {
|
|
55
|
+
#opts;
|
|
56
|
+
constructor(opts = {}) {
|
|
57
|
+
super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
|
|
58
|
+
streaming: true
|
|
59
|
+
});
|
|
60
|
+
this.#opts = {
|
|
61
|
+
...defaultTTSOptions,
|
|
62
|
+
...opts
|
|
63
|
+
};
|
|
64
|
+
if (this.#opts.apiKey === void 0) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
"ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY"
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async listVoices() {
|
|
71
|
+
return fetch(this.#opts.baseURL + "/voices", {
|
|
72
|
+
headers: {
|
|
73
|
+
[AUTHORIZATION_HEADER]: this.#opts.apiKey
|
|
74
|
+
}
|
|
75
|
+
}).then((data) => data.json()).then((data) => {
|
|
76
|
+
const voices = [];
|
|
77
|
+
for (const voice of data.voices) {
|
|
78
|
+
voices.push({
|
|
79
|
+
id: voice.voice_id,
|
|
80
|
+
name: voice.name,
|
|
81
|
+
category: voice.category,
|
|
82
|
+
settings: void 0
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return voices;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
synthesize() {
|
|
89
|
+
throw new Error("Chunked responses are not supported on ElevenLabs TTS");
|
|
90
|
+
}
|
|
91
|
+
stream() {
|
|
92
|
+
return new SynthesizeStream(this.#opts);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class SynthesizeStream extends import_agents.tts.SynthesizeStream {
|
|
96
|
+
#opts;
|
|
97
|
+
#logger = (0, import_agents.log)();
|
|
98
|
+
streamURL;
|
|
99
|
+
constructor(opts) {
|
|
100
|
+
super();
|
|
101
|
+
this.#opts = opts;
|
|
102
|
+
this.closed = false;
|
|
103
|
+
const baseURL = opts.baseURL + (opts.baseURL.endsWith("/") ? "" : "/");
|
|
104
|
+
this.streamURL = new import_node_url.URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
|
|
105
|
+
const params = {
|
|
106
|
+
model_id: opts.modelID,
|
|
107
|
+
output_format: opts.encoding,
|
|
108
|
+
optimize_streaming_latency: `${opts.streamingLatency}`,
|
|
109
|
+
enable_ssml_parsing: `${opts.enableSsmlParsing}`
|
|
110
|
+
};
|
|
111
|
+
Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
|
|
112
|
+
this.streamURL.protocol = this.streamURL.protocol.replace("http", "ws");
|
|
113
|
+
this.#run();
|
|
114
|
+
}
|
|
115
|
+
async #run() {
|
|
116
|
+
const segments = new import_agents.AsyncIterableQueue();
|
|
117
|
+
const tokenizeInput = async () => {
|
|
118
|
+
let stream = null;
|
|
119
|
+
for await (const text of this.input) {
|
|
120
|
+
if (text === SynthesizeStream.FLUSH_SENTINEL) {
|
|
121
|
+
stream == null ? void 0 : stream.endInput();
|
|
122
|
+
stream = null;
|
|
123
|
+
} else {
|
|
124
|
+
if (!stream) {
|
|
125
|
+
stream = this.#opts.wordTokenizer.stream();
|
|
126
|
+
segments.put(stream);
|
|
127
|
+
}
|
|
128
|
+
stream.pushText(text);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
segments.close();
|
|
132
|
+
};
|
|
133
|
+
const runStream = async () => {
|
|
134
|
+
for await (const stream of segments) {
|
|
135
|
+
await this.#runWS(stream);
|
|
136
|
+
this.queue.put(SynthesizeStream.END_OF_STREAM);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
await Promise.all([tokenizeInput(), runStream()]);
|
|
140
|
+
this.close();
|
|
141
|
+
}
|
|
142
|
+
async #runWS(stream, maxRetry = 3) {
|
|
143
|
+
let retries = 0;
|
|
144
|
+
let ws;
|
|
145
|
+
while (true) {
|
|
146
|
+
ws = new import_ws.WebSocket(this.streamURL, {
|
|
147
|
+
headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey }
|
|
148
|
+
});
|
|
149
|
+
try {
|
|
150
|
+
await new Promise((resolve, reject) => {
|
|
151
|
+
ws.on("open", resolve);
|
|
152
|
+
ws.on("error", (error) => reject(error));
|
|
153
|
+
ws.on("close", (code) => reject(`WebSocket returned ${code}`));
|
|
154
|
+
});
|
|
155
|
+
break;
|
|
156
|
+
} catch (e) {
|
|
157
|
+
if (retries >= maxRetry) {
|
|
158
|
+
throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);
|
|
159
|
+
}
|
|
160
|
+
const delay = Math.min(retries * 5, 5);
|
|
161
|
+
retries++;
|
|
162
|
+
this.#logger.warn(
|
|
163
|
+
`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`
|
|
164
|
+
);
|
|
165
|
+
await new Promise((resolve) => setTimeout(resolve, delay * 1e3));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const requestId = (0, import_node_crypto.randomUUID)();
|
|
169
|
+
const segmentId = (0, import_node_crypto.randomUUID)();
|
|
170
|
+
ws.send(
|
|
171
|
+
JSON.stringify({
|
|
172
|
+
text: " ",
|
|
173
|
+
voice_settings: this.#opts.voice.settings,
|
|
174
|
+
try_trigger_generation: true,
|
|
175
|
+
chunk_length_schedule: this.#opts.chunkLengthSchedule
|
|
176
|
+
})
|
|
177
|
+
);
|
|
178
|
+
let eosSent = false;
|
|
179
|
+
const sendTask = async () => {
|
|
180
|
+
let xmlContent = [];
|
|
181
|
+
for await (const data of stream) {
|
|
182
|
+
let text = data.token;
|
|
183
|
+
if (this.#opts.enableSsmlParsing && text.startsWith("<phoneme") || xmlContent.length) {
|
|
184
|
+
xmlContent.push(text);
|
|
185
|
+
if (text.indexOf("</phoneme>") !== -1) {
|
|
186
|
+
text = xmlContent.join(" ");
|
|
187
|
+
xmlContent = [];
|
|
188
|
+
} else {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
ws.send(JSON.stringify({ text: text + " ", try_trigger_generation: false }));
|
|
193
|
+
}
|
|
194
|
+
if (xmlContent.length) {
|
|
195
|
+
this.#logger.warn("ElevenLabs stream ended with incomplete XML content");
|
|
196
|
+
}
|
|
197
|
+
ws.send(JSON.stringify({ text: "" }));
|
|
198
|
+
eosSent = true;
|
|
199
|
+
};
|
|
200
|
+
const listenTask = async () => {
|
|
201
|
+
while (!this.closed) {
|
|
202
|
+
try {
|
|
203
|
+
await new Promise((resolve, reject) => {
|
|
204
|
+
ws.removeAllListeners();
|
|
205
|
+
ws.on("message", (data) => resolve(data));
|
|
206
|
+
ws.on("close", (code, reason) => {
|
|
207
|
+
if (!eosSent) {
|
|
208
|
+
this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
|
|
209
|
+
}
|
|
210
|
+
reject();
|
|
211
|
+
});
|
|
212
|
+
}).then((msg) => {
|
|
213
|
+
const json = JSON.parse(msg.toString());
|
|
214
|
+
if ("audio" in json) {
|
|
215
|
+
const data = new Int16Array(Buffer.from(json.audio, "base64").buffer);
|
|
216
|
+
const frame = new import_rtc_node.AudioFrame(
|
|
217
|
+
data,
|
|
218
|
+
sampleRateFromFormat(this.#opts.encoding),
|
|
219
|
+
1,
|
|
220
|
+
data.length
|
|
221
|
+
);
|
|
222
|
+
this.queue.put({ requestId, segmentId, frame });
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
} catch {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
await Promise.all([sendTask(), listenTask()]);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const sampleRateFromFormat = (encoding) => {
|
|
234
|
+
return Number(encoding.split("_")[1]);
|
|
235
|
+
};
|
|
236
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
237
|
+
0 && (module.exports = {
|
|
238
|
+
SynthesizeStream,
|
|
239
|
+
TTS
|
|
240
|
+
});
|
|
241
|
+
//# sourceMappingURL=tts.cjs.map
|
package/dist/tts.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tts.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';\nimport { AudioFrame } from '@livekit/rtc-node';\nimport { randomUUID } from 'node:crypto';\nimport { URL } from 'node:url';\nimport { type RawData, WebSocket } from 'ws';\nimport type { TTSEncoding, TTSModels } from './models.js';\n\ntype Voice = {\n id: string;\n name: string;\n category: string;\n settings?: VoiceSettings;\n};\n\ntype VoiceSettings = {\n stability: number; // 0..1\n similarity_boost: number; // 0..1\n style?: number; // 0..1\n use_speaker_boost: boolean;\n};\n\nconst DEFAULT_VOICE: Voice = {\n id: 'EXAVITQu4vr4xnSDxMaL',\n name: 'Bella',\n category: 'premade',\n settings: {\n stability: 0.71,\n similarity_boost: 0.5,\n style: 0.0,\n use_speaker_boost: true,\n },\n};\n\nconst API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';\nconst AUTHORIZATION_HEADER = 'xi-api-key';\n\nexport interface TTSOptions {\n apiKey?: string;\n voice: Voice;\n modelID: TTSModels;\n baseURL: string;\n encoding: TTSEncoding;\n streamingLatency: number;\n wordTokenizer: tokenize.WordTokenizer;\n chunkLengthSchedule: number[];\n enableSsmlParsing: boolean;\n}\n\nconst defaultTTSOptions: TTSOptions = {\n apiKey: process.env.ELEVEN_API_KEY,\n voice: DEFAULT_VOICE,\n modelID: 'eleven_turbo_v2_5',\n baseURL: API_BASE_URL_V1,\n encoding: 'pcm_22050',\n streamingLatency: 3,\n wordTokenizer: new tokenize.basic.WordTokenizer(false),\n chunkLengthSchedule: [],\n enableSsmlParsing: false,\n};\n\nexport class TTS extends tts.TTS {\n #opts: TTSOptions;\n\n constructor(opts: Partial<TTSOptions> = {}) {\n super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {\n streaming: true,\n });\n\n this.#opts = {\n ...defaultTTSOptions,\n ...opts,\n };\n\n if (this.#opts.apiKey === undefined) {\n throw new Error(\n 'ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY',\n );\n }\n }\n\n async listVoices(): Promise<Voice[]> {\n return fetch(this.#opts.baseURL + '/voices', {\n headers: {\n [AUTHORIZATION_HEADER]: this.#opts.apiKey!,\n },\n })\n .then((data) => data.json())\n .then((data) => {\n const voices: Voice[] = [];\n for (const voice of (\n data as { voices: { voice_id: string; name: string; category: string }[] }\n ).voices) {\n voices.push({\n id: voice.voice_id,\n name: voice.name,\n category: voice.category,\n settings: undefined,\n });\n }\n return voices;\n });\n }\n\n synthesize(): tts.ChunkedStream {\n throw new Error('Chunked responses are not supported on ElevenLabs TTS');\n }\n\n stream(): tts.SynthesizeStream {\n return new SynthesizeStream(this.#opts);\n }\n}\n\nexport class SynthesizeStream extends tts.SynthesizeStream {\n #opts: TTSOptions;\n #logger = log();\n readonly streamURL: URL;\n\n constructor(opts: TTSOptions) {\n super();\n this.#opts = opts;\n this.closed = false;\n\n // add trailing slash to URL if needed\n const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');\n\n this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);\n const params = {\n model_id: opts.modelID,\n output_format: opts.encoding,\n optimize_streaming_latency: `${opts.streamingLatency}`,\n enable_ssml_parsing: `${opts.enableSsmlParsing}`,\n };\n Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));\n this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');\n\n this.#run();\n }\n\n async #run() {\n const segments = new AsyncIterableQueue<tokenize.WordStream>();\n\n const tokenizeInput = async () => {\n let stream: tokenize.WordStream | null = null;\n for await (const text of this.input) {\n if (text === SynthesizeStream.FLUSH_SENTINEL) {\n stream?.endInput();\n stream = null;\n } else {\n if (!stream) {\n stream = this.#opts.wordTokenizer.stream();\n segments.put(stream);\n }\n stream.pushText(text);\n }\n }\n segments.close();\n };\n\n const runStream = async () => {\n for await (const stream of segments) {\n await this.#runWS(stream);\n this.queue.put(SynthesizeStream.END_OF_STREAM);\n }\n };\n\n await Promise.all([tokenizeInput(), runStream()]);\n this.close();\n }\n\n async #runWS(stream: tokenize.WordStream, maxRetry = 3) {\n let retries = 0;\n let ws: WebSocket;\n while (true) {\n ws = new WebSocket(this.streamURL, {\n headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },\n });\n\n try {\n await new Promise((resolve, reject) => {\n ws.on('open', resolve);\n ws.on('error', (error) => reject(error));\n ws.on('close', (code) => reject(`WebSocket returned ${code}`));\n });\n break;\n } catch (e) {\n if (retries >= maxRetry) {\n throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);\n }\n\n const delay = Math.min(retries * 5, 5);\n retries++;\n\n this.#logger.warn(\n `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`,\n );\n await new Promise((resolve) => setTimeout(resolve, delay * 1000));\n }\n }\n\n const requestId = randomUUID();\n const segmentId = randomUUID();\n\n ws.send(\n JSON.stringify({\n text: ' ',\n voice_settings: this.#opts.voice.settings,\n try_trigger_generation: true,\n chunk_length_schedule: this.#opts.chunkLengthSchedule,\n }),\n );\n let eosSent = false;\n\n const sendTask = async () => {\n let xmlContent: string[] = [];\n for await (const data of stream) {\n let text = data.token;\n\n if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {\n xmlContent.push(text);\n if (text.indexOf('</phoneme>') !== -1) {\n text = xmlContent.join(' ');\n xmlContent = [];\n } else {\n continue;\n }\n }\n\n ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));\n }\n\n if (xmlContent.length) {\n this.#logger.warn('ElevenLabs stream ended with incomplete XML content');\n }\n\n ws.send(JSON.stringify({ text: '' }));\n eosSent = true;\n };\n\n const listenTask = async () => {\n while (!this.closed) {\n try {\n await new Promise<RawData>((resolve, reject) => {\n ws.removeAllListeners();\n ws.on('message', (data) => resolve(data));\n ws.on('close', (code, reason) => {\n if (!eosSent) {\n this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);\n }\n reject();\n });\n }).then((msg) => {\n const json = JSON.parse(msg.toString());\n if ('audio' in json) {\n const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);\n const frame = new AudioFrame(\n data,\n sampleRateFromFormat(this.#opts.encoding),\n 1,\n data.length,\n );\n this.queue.put({ requestId, segmentId, frame });\n }\n });\n } catch {\n break;\n }\n }\n };\n\n await Promise.all([sendTask(), listenTask()]);\n }\n}\n\nconst sampleRateFromFormat = (encoding: TTSEncoding): number => {\n return Number(encoding.split('_')[1]);\n};\n"],"mappings":"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","names":[]}
|
package/dist/tts.d.ts
CHANGED
package/dist/tts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAiBF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;IACtC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAcD,qBAAa,GAAI,SAAQ,GAAG,CAAC,GAAG;;gBAGlB,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM;IAiBpC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAuBpC,UAAU,IAAI,GAAG,CAAC,aAAa;IAI/B,MAAM,IAAI,GAAG,CAAC,gBAAgB;CAG/B;AAED,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,gBAAgB;;IAGxD,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;gBAEZ,IAAI,EAAE,UAAU;CA0J7B"}
|
package/dist/tts.js
CHANGED
|
@@ -1,213 +1,216 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import { AudioFrame } from '@livekit/rtc-node';
|
|
7
|
-
import { randomUUID } from 'node:crypto';
|
|
8
|
-
import { URL } from 'node:url';
|
|
9
|
-
import { WebSocket } from 'ws';
|
|
1
|
+
import { AsyncIterableQueue, log, tokenize, tts } from "@livekit/agents";
|
|
2
|
+
import { AudioFrame } from "@livekit/rtc-node";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import { URL } from "node:url";
|
|
5
|
+
import { WebSocket } from "ws";
|
|
10
6
|
const DEFAULT_VOICE = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
id: "EXAVITQu4vr4xnSDxMaL",
|
|
8
|
+
name: "Bella",
|
|
9
|
+
category: "premade",
|
|
10
|
+
settings: {
|
|
11
|
+
stability: 0.71,
|
|
12
|
+
similarity_boost: 0.5,
|
|
13
|
+
style: 0,
|
|
14
|
+
use_speaker_boost: true
|
|
15
|
+
}
|
|
20
16
|
};
|
|
21
|
-
const API_BASE_URL_V1 =
|
|
22
|
-
const AUTHORIZATION_HEADER =
|
|
17
|
+
const API_BASE_URL_V1 = "https://api.elevenlabs.io/v1/";
|
|
18
|
+
const AUTHORIZATION_HEADER = "xi-api-key";
|
|
23
19
|
const defaultTTSOptions = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
apiKey: process.env.ELEVEN_API_KEY,
|
|
21
|
+
voice: DEFAULT_VOICE,
|
|
22
|
+
modelID: "eleven_turbo_v2_5",
|
|
23
|
+
baseURL: API_BASE_URL_V1,
|
|
24
|
+
encoding: "pcm_22050",
|
|
25
|
+
streamingLatency: 3,
|
|
26
|
+
wordTokenizer: new tokenize.basic.WordTokenizer(false),
|
|
27
|
+
chunkLengthSchedule: [],
|
|
28
|
+
enableSsmlParsing: false
|
|
33
29
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
class TTS extends tts.TTS {
|
|
31
|
+
#opts;
|
|
32
|
+
constructor(opts = {}) {
|
|
33
|
+
super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
|
|
34
|
+
streaming: true
|
|
35
|
+
});
|
|
36
|
+
this.#opts = {
|
|
37
|
+
...defaultTTSOptions,
|
|
38
|
+
...opts
|
|
39
|
+
};
|
|
40
|
+
if (this.#opts.apiKey === void 0) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
"ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY"
|
|
43
|
+
);
|
|
47
44
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
settings: undefined,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return voices;
|
|
45
|
+
}
|
|
46
|
+
async listVoices() {
|
|
47
|
+
return fetch(this.#opts.baseURL + "/voices", {
|
|
48
|
+
headers: {
|
|
49
|
+
[AUTHORIZATION_HEADER]: this.#opts.apiKey
|
|
50
|
+
}
|
|
51
|
+
}).then((data) => data.json()).then((data) => {
|
|
52
|
+
const voices = [];
|
|
53
|
+
for (const voice of data.voices) {
|
|
54
|
+
voices.push({
|
|
55
|
+
id: voice.voice_id,
|
|
56
|
+
name: voice.name,
|
|
57
|
+
category: voice.category,
|
|
58
|
+
settings: void 0
|
|
66
59
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
}
|
|
61
|
+
return voices;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
synthesize() {
|
|
65
|
+
throw new Error("Chunked responses are not supported on ElevenLabs TTS");
|
|
66
|
+
}
|
|
67
|
+
stream() {
|
|
68
|
+
return new SynthesizeStream(this.#opts);
|
|
69
|
+
}
|
|
74
70
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
71
|
+
class SynthesizeStream extends tts.SynthesizeStream {
|
|
72
|
+
#opts;
|
|
73
|
+
#logger = log();
|
|
74
|
+
streamURL;
|
|
75
|
+
constructor(opts) {
|
|
76
|
+
super();
|
|
77
|
+
this.#opts = opts;
|
|
78
|
+
this.closed = false;
|
|
79
|
+
const baseURL = opts.baseURL + (opts.baseURL.endsWith("/") ? "" : "/");
|
|
80
|
+
this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
|
|
81
|
+
const params = {
|
|
82
|
+
model_id: opts.modelID,
|
|
83
|
+
output_format: opts.encoding,
|
|
84
|
+
optimize_streaming_latency: `${opts.streamingLatency}`,
|
|
85
|
+
enable_ssml_parsing: `${opts.enableSsmlParsing}`
|
|
86
|
+
};
|
|
87
|
+
Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
|
|
88
|
+
this.streamURL.protocol = this.streamURL.protocol.replace("http", "ws");
|
|
89
|
+
this.#run();
|
|
90
|
+
}
|
|
91
|
+
async #run() {
|
|
92
|
+
const segments = new AsyncIterableQueue();
|
|
93
|
+
const tokenizeInput = async () => {
|
|
94
|
+
let stream = null;
|
|
95
|
+
for await (const text of this.input) {
|
|
96
|
+
if (text === SynthesizeStream.FLUSH_SENTINEL) {
|
|
97
|
+
stream == null ? void 0 : stream.endInput();
|
|
98
|
+
stream = null;
|
|
99
|
+
} else {
|
|
100
|
+
if (!stream) {
|
|
101
|
+
stream = this.#opts.wordTokenizer.stream();
|
|
102
|
+
segments.put(stream);
|
|
103
|
+
}
|
|
104
|
+
stream.pushText(text);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
segments.close();
|
|
108
|
+
};
|
|
109
|
+
const runStream = async () => {
|
|
110
|
+
for await (const stream of segments) {
|
|
111
|
+
await this.#runWS(stream);
|
|
112
|
+
this.queue.put(SynthesizeStream.END_OF_STREAM);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
await Promise.all([tokenizeInput(), runStream()]);
|
|
116
|
+
this.close();
|
|
117
|
+
}
|
|
118
|
+
async #runWS(stream, maxRetry = 3) {
|
|
119
|
+
let retries = 0;
|
|
120
|
+
let ws;
|
|
121
|
+
while (true) {
|
|
122
|
+
ws = new WebSocket(this.streamURL, {
|
|
123
|
+
headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey }
|
|
124
|
+
});
|
|
125
|
+
try {
|
|
126
|
+
await new Promise((resolve, reject) => {
|
|
127
|
+
ws.on("open", resolve);
|
|
128
|
+
ws.on("error", (error) => reject(error));
|
|
129
|
+
ws.on("close", (code) => reject(`WebSocket returned ${code}`));
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
} catch (e) {
|
|
133
|
+
if (retries >= maxRetry) {
|
|
134
|
+
throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);
|
|
135
|
+
}
|
|
136
|
+
const delay = Math.min(retries * 5, 5);
|
|
137
|
+
retries++;
|
|
138
|
+
this.#logger.warn(
|
|
139
|
+
`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`
|
|
140
|
+
);
|
|
141
|
+
await new Promise((resolve) => setTimeout(resolve, delay * 1e3));
|
|
142
|
+
}
|
|
123
143
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
144
|
+
const requestId = randomUUID();
|
|
145
|
+
const segmentId = randomUUID();
|
|
146
|
+
ws.send(
|
|
147
|
+
JSON.stringify({
|
|
148
|
+
text: " ",
|
|
149
|
+
voice_settings: this.#opts.voice.settings,
|
|
150
|
+
try_trigger_generation: true,
|
|
151
|
+
chunk_length_schedule: this.#opts.chunkLengthSchedule
|
|
152
|
+
})
|
|
153
|
+
);
|
|
154
|
+
let eosSent = false;
|
|
155
|
+
const sendTask = async () => {
|
|
156
|
+
let xmlContent = [];
|
|
157
|
+
for await (const data of stream) {
|
|
158
|
+
let text = data.token;
|
|
159
|
+
if (this.#opts.enableSsmlParsing && text.startsWith("<phoneme") || xmlContent.length) {
|
|
160
|
+
xmlContent.push(text);
|
|
161
|
+
if (text.indexOf("</phoneme>") !== -1) {
|
|
162
|
+
text = xmlContent.join(" ");
|
|
163
|
+
xmlContent = [];
|
|
164
|
+
} else {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
ws.send(JSON.stringify({ text: text + " ", try_trigger_generation: false }));
|
|
169
|
+
}
|
|
170
|
+
if (xmlContent.length) {
|
|
171
|
+
this.#logger.warn("ElevenLabs stream ended with incomplete XML content");
|
|
172
|
+
}
|
|
173
|
+
ws.send(JSON.stringify({ text: "" }));
|
|
174
|
+
eosSent = true;
|
|
175
|
+
};
|
|
176
|
+
const listenTask = async () => {
|
|
177
|
+
while (!this.closed) {
|
|
178
|
+
try {
|
|
179
|
+
await new Promise((resolve, reject) => {
|
|
180
|
+
ws.removeAllListeners();
|
|
181
|
+
ws.on("message", (data) => resolve(data));
|
|
182
|
+
ws.on("close", (code, reason) => {
|
|
183
|
+
if (!eosSent) {
|
|
184
|
+
this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
|
|
185
|
+
}
|
|
186
|
+
reject();
|
|
130
187
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
const delay = Math.min(retries * 5, 5);
|
|
144
|
-
retries++;
|
|
145
|
-
this.#logger.warn(`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`);
|
|
146
|
-
await new Promise((resolve) => setTimeout(resolve, delay * 1000));
|
|
188
|
+
}).then((msg) => {
|
|
189
|
+
const json = JSON.parse(msg.toString());
|
|
190
|
+
if ("audio" in json) {
|
|
191
|
+
const data = new Int16Array(Buffer.from(json.audio, "base64").buffer);
|
|
192
|
+
const frame = new AudioFrame(
|
|
193
|
+
data,
|
|
194
|
+
sampleRateFromFormat(this.#opts.encoding),
|
|
195
|
+
1,
|
|
196
|
+
data.length
|
|
197
|
+
);
|
|
198
|
+
this.queue.put({ requestId, segmentId, frame });
|
|
147
199
|
}
|
|
200
|
+
});
|
|
201
|
+
} catch {
|
|
202
|
+
break;
|
|
148
203
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
voice_settings: this.#opts.voice.settings,
|
|
154
|
-
try_trigger_generation: true,
|
|
155
|
-
chunk_length_schedule: this.#opts.chunkLengthSchedule,
|
|
156
|
-
}));
|
|
157
|
-
let eosSent = false;
|
|
158
|
-
const sendTask = async () => {
|
|
159
|
-
let xmlContent = [];
|
|
160
|
-
for await (const data of stream) {
|
|
161
|
-
let text = data.token;
|
|
162
|
-
if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {
|
|
163
|
-
xmlContent.push(text);
|
|
164
|
-
if (text.indexOf('</phoneme>') !== -1) {
|
|
165
|
-
text = xmlContent.join(' ');
|
|
166
|
-
xmlContent = [];
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));
|
|
173
|
-
}
|
|
174
|
-
if (xmlContent.length) {
|
|
175
|
-
this.#logger.warn('ElevenLabs stream ended with incomplete XML content');
|
|
176
|
-
}
|
|
177
|
-
ws.send(JSON.stringify({ text: '' }));
|
|
178
|
-
eosSent = true;
|
|
179
|
-
};
|
|
180
|
-
const listenTask = async () => {
|
|
181
|
-
while (!this.closed) {
|
|
182
|
-
try {
|
|
183
|
-
await new Promise((resolve, reject) => {
|
|
184
|
-
ws.removeAllListeners();
|
|
185
|
-
ws.on('message', (data) => resolve(data));
|
|
186
|
-
ws.on('close', (code, reason) => {
|
|
187
|
-
if (!eosSent) {
|
|
188
|
-
this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
|
|
189
|
-
}
|
|
190
|
-
reject();
|
|
191
|
-
});
|
|
192
|
-
}).then((msg) => {
|
|
193
|
-
const json = JSON.parse(msg.toString());
|
|
194
|
-
if ('audio' in json) {
|
|
195
|
-
const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);
|
|
196
|
-
const frame = new AudioFrame(data, sampleRateFromFormat(this.#opts.encoding), 1, data.length);
|
|
197
|
-
this.queue.put({ requestId, segmentId, frame });
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
catch {
|
|
202
|
-
break;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
await Promise.all([sendTask(), listenTask()]);
|
|
207
|
-
}
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
await Promise.all([sendTask(), listenTask()]);
|
|
207
|
+
}
|
|
208
208
|
}
|
|
209
|
-
_a = SynthesizeStream;
|
|
210
209
|
const sampleRateFromFormat = (encoding) => {
|
|
211
|
-
|
|
210
|
+
return Number(encoding.split("_")[1]);
|
|
211
|
+
};
|
|
212
|
+
export {
|
|
213
|
+
SynthesizeStream,
|
|
214
|
+
TTS
|
|
212
215
|
};
|
|
213
216
|
//# sourceMappingURL=tts.js.map
|
package/dist/tts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/tts.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';\nimport { AudioFrame } from '@livekit/rtc-node';\nimport { randomUUID } from 'node:crypto';\nimport { URL } from 'node:url';\nimport { type RawData, WebSocket } from 'ws';\nimport type { TTSEncoding, TTSModels } from './models.js';\n\ntype Voice = {\n id: string;\n name: string;\n category: string;\n settings?: VoiceSettings;\n};\n\ntype VoiceSettings = {\n stability: number; // 0..1\n similarity_boost: number; // 0..1\n style?: number; // 0..1\n use_speaker_boost: boolean;\n};\n\nconst DEFAULT_VOICE: Voice = {\n id: 'EXAVITQu4vr4xnSDxMaL',\n name: 'Bella',\n category: 'premade',\n settings: {\n stability: 0.71,\n similarity_boost: 0.5,\n style: 0.0,\n use_speaker_boost: true,\n },\n};\n\nconst API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';\nconst AUTHORIZATION_HEADER = 'xi-api-key';\n\nexport interface TTSOptions {\n apiKey?: string;\n voice: Voice;\n modelID: TTSModels;\n baseURL: string;\n encoding: TTSEncoding;\n streamingLatency: number;\n wordTokenizer: tokenize.WordTokenizer;\n chunkLengthSchedule: number[];\n enableSsmlParsing: boolean;\n}\n\nconst defaultTTSOptions: TTSOptions = {\n apiKey: process.env.ELEVEN_API_KEY,\n voice: DEFAULT_VOICE,\n modelID: 'eleven_turbo_v2_5',\n baseURL: API_BASE_URL_V1,\n encoding: 'pcm_22050',\n streamingLatency: 3,\n wordTokenizer: new tokenize.basic.WordTokenizer(false),\n chunkLengthSchedule: [],\n enableSsmlParsing: false,\n};\n\nexport class TTS extends tts.TTS {\n #opts: TTSOptions;\n\n constructor(opts: Partial<TTSOptions> = {}) {\n super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {\n streaming: true,\n });\n\n this.#opts = {\n ...defaultTTSOptions,\n ...opts,\n };\n\n if (this.#opts.apiKey === undefined) {\n throw new Error(\n 'ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY',\n );\n }\n }\n\n async listVoices(): Promise<Voice[]> {\n return fetch(this.#opts.baseURL + '/voices', {\n headers: {\n [AUTHORIZATION_HEADER]: this.#opts.apiKey!,\n },\n })\n .then((data) => data.json())\n .then((data) => {\n const voices: Voice[] = [];\n for (const voice of (\n data as { voices: { voice_id: string; name: string; category: string }[] }\n ).voices) {\n voices.push({\n id: voice.voice_id,\n name: voice.name,\n category: voice.category,\n settings: undefined,\n });\n }\n return voices;\n });\n }\n\n synthesize(): tts.ChunkedStream {\n throw new Error('Chunked responses are not supported on ElevenLabs TTS');\n }\n\n stream(): tts.SynthesizeStream {\n return new SynthesizeStream(this.#opts);\n }\n}\n\nexport class SynthesizeStream extends tts.SynthesizeStream {\n #opts: TTSOptions;\n #logger = log();\n readonly streamURL: URL;\n\n constructor(opts: TTSOptions) {\n super();\n this.#opts = opts;\n this.closed = false;\n\n // add trailing slash to URL if needed\n const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');\n\n this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);\n const params = {\n model_id: opts.modelID,\n output_format: opts.encoding,\n optimize_streaming_latency: `${opts.streamingLatency}`,\n enable_ssml_parsing: `${opts.enableSsmlParsing}`,\n };\n Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));\n this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');\n\n this.#run();\n }\n\n async #run() {\n const segments = new AsyncIterableQueue<tokenize.WordStream>();\n\n const tokenizeInput = async () => {\n let stream: tokenize.WordStream | null = null;\n for await (const text of this.input) {\n if (text === SynthesizeStream.FLUSH_SENTINEL) {\n stream?.endInput();\n stream = null;\n } else {\n if (!stream) {\n stream = this.#opts.wordTokenizer.stream();\n segments.put(stream);\n }\n stream.pushText(text);\n }\n }\n segments.close();\n };\n\n const runStream = async () => {\n for await (const stream of segments) {\n await this.#runWS(stream);\n this.queue.put(SynthesizeStream.END_OF_STREAM);\n }\n };\n\n await Promise.all([tokenizeInput(), runStream()]);\n this.close();\n }\n\n async #runWS(stream: tokenize.WordStream, maxRetry = 3) {\n let retries = 0;\n let ws: WebSocket;\n while (true) {\n ws = new WebSocket(this.streamURL, {\n headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },\n });\n\n try {\n await new Promise((resolve, reject) => {\n ws.on('open', resolve);\n ws.on('error', (error) => reject(error));\n ws.on('close', (code) => reject(`WebSocket returned ${code}`));\n });\n break;\n } catch (e) {\n if (retries >= maxRetry) {\n throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);\n }\n\n const delay = Math.min(retries * 5, 5);\n retries++;\n\n this.#logger.warn(\n `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`,\n );\n await new Promise((resolve) => setTimeout(resolve, delay * 1000));\n }\n }\n\n const requestId = randomUUID();\n const segmentId = randomUUID();\n\n ws.send(\n JSON.stringify({\n text: ' ',\n voice_settings: this.#opts.voice.settings,\n try_trigger_generation: true,\n chunk_length_schedule: this.#opts.chunkLengthSchedule,\n }),\n );\n let eosSent = false;\n\n const sendTask = async () => {\n let xmlContent: string[] = [];\n for await (const data of stream) {\n let text = data.token;\n\n if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {\n xmlContent.push(text);\n if (text.indexOf('</phoneme>') !== -1) {\n text = xmlContent.join(' ');\n xmlContent = [];\n } else {\n continue;\n }\n }\n\n ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));\n }\n\n if (xmlContent.length) {\n this.#logger.warn('ElevenLabs stream ended with incomplete XML content');\n }\n\n ws.send(JSON.stringify({ text: '' }));\n eosSent = true;\n };\n\n const listenTask = async () => {\n while (!this.closed) {\n try {\n await new Promise<RawData>((resolve, reject) => {\n ws.removeAllListeners();\n ws.on('message', (data) => resolve(data));\n ws.on('close', (code, reason) => {\n if (!eosSent) {\n this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);\n }\n reject();\n });\n }).then((msg) => {\n const json = JSON.parse(msg.toString());\n if ('audio' in json) {\n const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);\n const frame = new AudioFrame(\n data,\n sampleRateFromFormat(this.#opts.encoding),\n 1,\n data.length,\n );\n this.queue.put({ requestId, segmentId, frame });\n }\n });\n } catch {\n break;\n }\n }\n };\n\n await Promise.all([sendTask(), listenTask()]);\n }\n}\n\nconst sampleRateFromFormat = (encoding: TTSEncoding): number => {\n return Number(encoding.split('_')[1]);\n};\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,27 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livekit/agents-plugin-elevenlabs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "ElevenLabs plugin for LiveKit Node Agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"require": "dist/index.cjs",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
7
15
|
"author": "LiveKit",
|
|
8
16
|
"type": "module",
|
|
17
|
+
"repository": "git@github.com:livekit/agents-js.git",
|
|
18
|
+
"license": "Apache-2.0",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"src",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
9
24
|
"devDependencies": {
|
|
25
|
+
"@livekit/agents": "^x",
|
|
26
|
+
"@livekit/rtc-node": "^0.12.1",
|
|
10
27
|
"@microsoft/api-extractor": "^7.35.0",
|
|
11
|
-
"@livekit/rtc-node": "^0.11.1",
|
|
12
28
|
"@types/ws": "^8.5.10",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
29
|
+
"tsup": "^8.3.5",
|
|
30
|
+
"typescript": "^5.0.0"
|
|
15
31
|
},
|
|
16
32
|
"dependencies": {
|
|
17
33
|
"ws": "^8.16.0"
|
|
18
34
|
},
|
|
19
35
|
"peerDependencies": {
|
|
20
|
-
"@livekit/rtc-node": "^0.
|
|
21
|
-
"@livekit/agents": "^0.
|
|
36
|
+
"@livekit/rtc-node": "^0.12.1",
|
|
37
|
+
"@livekit/agents": "^0.5.0x"
|
|
22
38
|
},
|
|
23
39
|
"scripts": {
|
|
24
|
-
"build": "tsc",
|
|
40
|
+
"build": "tsup --onSuccess \"tsc --declaration --emitDeclarationOnly\"",
|
|
25
41
|
"clean": "rm -rf dist",
|
|
26
42
|
"clean:build": "pnpm clean && pnpm build",
|
|
27
43
|
"lint": "eslint -f unix \"src/**/*.{ts,js}\"",
|
package/src/tts.ts
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';
|
|
5
|
-
import type { WordStream } from '@livekit/agents/dist/tokenize/tokenizer.js';
|
|
6
5
|
import { AudioFrame } from '@livekit/rtc-node';
|
|
7
6
|
import { randomUUID } from 'node:crypto';
|
|
8
7
|
import { URL } from 'node:url';
|
|
@@ -141,7 +140,7 @@ export class SynthesizeStream extends tts.SynthesizeStream {
|
|
|
141
140
|
}
|
|
142
141
|
|
|
143
142
|
async #run() {
|
|
144
|
-
const segments = new AsyncIterableQueue<WordStream>();
|
|
143
|
+
const segments = new AsyncIterableQueue<tokenize.WordStream>();
|
|
145
144
|
|
|
146
145
|
const tokenizeInput = async () => {
|
|
147
146
|
let stream: tokenize.WordStream | null = null;
|
package/.turbo/turbo-build.log
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# @livekit/agents-plugin-elevenlabs
|
|
2
|
-
|
|
3
|
-
## 0.4.5
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Use peer dependencies for @livekit/rtc-node and @livekit/agents - [#170](https://github.com/livekit/agents-js/pull/170) ([@lukasIO](https://github.com/lukasIO))
|
|
8
|
-
|
|
9
|
-
- Override with defaults if opts are provided - [#165](https://github.com/livekit/agents-js/pull/165) ([@gching](https://github.com/gching))
|
|
10
|
-
|
|
11
|
-
- Ensure token stream flushes - [#167](https://github.com/livekit/agents-js/pull/167) ([@gching](https://github.com/gching))
|
|
12
|
-
|
|
13
|
-
- Updated dependencies [[`f5dc9896a9eec2ba1e703d7209936bcc22d46b33`](https://github.com/livekit/agents-js/commit/f5dc9896a9eec2ba1e703d7209936bcc22d46b33), [`141519068094ca72f0fa86c4ee829ab3746bc02f`](https://github.com/livekit/agents-js/commit/141519068094ca72f0fa86c4ee829ab3746bc02f), [`6bff3b030063b2e851946b90ad9e7d981a46e2aa`](https://github.com/livekit/agents-js/commit/6bff3b030063b2e851946b90ad9e7d981a46e2aa), [`b719e7d5ffa37b541b219cd05c631483480e2103`](https://github.com/livekit/agents-js/commit/b719e7d5ffa37b541b219cd05c631483480e2103), [`1558b9bc4ed8ddc1c6b552875549a4fb96ec3802`](https://github.com/livekit/agents-js/commit/1558b9bc4ed8ddc1c6b552875549a4fb96ec3802)]:
|
|
14
|
-
- @livekit/agents@0.4.5
|
|
15
|
-
|
|
16
|
-
## 0.4.4
|
|
17
|
-
|
|
18
|
-
### Patch Changes
|
|
19
|
-
|
|
20
|
-
- add ChunkedStream, openai.TTS - [#155](https://github.com/livekit/agents-js/pull/155) ([@nbsp](https://github.com/nbsp))
|
|
21
|
-
|
|
22
|
-
- Updated dependencies [[`95ac1798daf846a14a4fb8b240412a7f66a897e6`](https://github.com/livekit/agents-js/commit/95ac1798daf846a14a4fb8b240412a7f66a897e6), [`cb500cb4319aab982d965c2ff118d2acbac965a8`](https://github.com/livekit/agents-js/commit/cb500cb4319aab982d965c2ff118d2acbac965a8), [`ddab1203ac56a88aa44defcc46f60b761b006292`](https://github.com/livekit/agents-js/commit/ddab1203ac56a88aa44defcc46f60b761b006292), [`cb500cb4319aab982d965c2ff118d2acbac965a8`](https://github.com/livekit/agents-js/commit/cb500cb4319aab982d965c2ff118d2acbac965a8)]:
|
|
23
|
-
- @livekit/agents@0.4.4
|
|
24
|
-
|
|
25
|
-
## 0.4.3
|
|
26
|
-
|
|
27
|
-
### Patch Changes
|
|
28
|
-
|
|
29
|
-
- Updated dependencies []:
|
|
30
|
-
- @livekit/agents@0.4.3
|
|
31
|
-
|
|
32
|
-
## 0.4.2
|
|
33
|
-
|
|
34
|
-
### Patch Changes
|
|
35
|
-
|
|
36
|
-
- Updated dependencies [[`38dd4c7d820de6faad512f0ac57c60f0fb1963be`](https://github.com/livekit/agents-js/commit/38dd4c7d820de6faad512f0ac57c60f0fb1963be)]:
|
|
37
|
-
- @livekit/agents@0.4.2
|
|
38
|
-
|
|
39
|
-
## 0.4.1
|
|
40
|
-
|
|
41
|
-
### Patch Changes
|
|
42
|
-
|
|
43
|
-
- Updated dependencies [[`d2f1ef9f54cd7dd13892aa2ebe2f3f348b01afcb`](https://github.com/livekit/agents-js/commit/d2f1ef9f54cd7dd13892aa2ebe2f3f348b01afcb)]:
|
|
44
|
-
- @livekit/agents@0.4.1
|
|
45
|
-
|
|
46
|
-
## 0.4.0
|
|
47
|
-
|
|
48
|
-
### Minor Changes
|
|
49
|
-
|
|
50
|
-
- re-add ElevenLabs TTS plugin - [#140](https://github.com/livekit/agents-js/pull/140) ([@nbsp](https://github.com/nbsp))
|
|
51
|
-
|
|
52
|
-
### Patch Changes
|
|
53
|
-
|
|
54
|
-
- Updated dependencies [[`d9273f27ae8df6c41e56a8258f540a4ffd9a7b7b`](https://github.com/livekit/agents-js/commit/d9273f27ae8df6c41e56a8258f540a4ffd9a7b7b), [`b4b9c1d337ff9a0212e90fb31002d4fcf58fe287`](https://github.com/livekit/agents-js/commit/b4b9c1d337ff9a0212e90fb31002d4fcf58fe287), [`4713a0490a3e4cd823aa648172c618ea924ae5d6`](https://github.com/livekit/agents-js/commit/4713a0490a3e4cd823aa648172c618ea924ae5d6), [`09782ec316590aa956d1a234dfb5594a8974dbfc`](https://github.com/livekit/agents-js/commit/09782ec316590aa956d1a234dfb5594a8974dbfc), [`d32f2470d4d1ea6786f4e13334f7251cc9823c04`](https://github.com/livekit/agents-js/commit/d32f2470d4d1ea6786f4e13334f7251cc9823c04), [`37bcf55aa75a289978af82e86332298dd7c07c73`](https://github.com/livekit/agents-js/commit/37bcf55aa75a289978af82e86332298dd7c07c73), [`35265a5b58adcbc048078d39c115412734dd4462`](https://github.com/livekit/agents-js/commit/35265a5b58adcbc048078d39c115412734dd4462), [`61899cde8c7fc19791d9d7d6a5ccabc2bb8f94dd`](https://github.com/livekit/agents-js/commit/61899cde8c7fc19791d9d7d6a5ccabc2bb8f94dd), [`644effb7c607e214e8d3ff8147afa7aec4a2496b`](https://github.com/livekit/agents-js/commit/644effb7c607e214e8d3ff8147afa7aec4a2496b), [`0e40262f3a60823d3d9cabbbd90f71c943db6c0e`](https://github.com/livekit/agents-js/commit/0e40262f3a60823d3d9cabbbd90f71c943db6c0e), [`cb788b7c37ca2297c04f5deb410a2fdab70d5c5f`](https://github.com/livekit/agents-js/commit/cb788b7c37ca2297c04f5deb410a2fdab70d5c5f), [`f844e8bb865beadbc58ea1c3a21e362aee1dce55`](https://github.com/livekit/agents-js/commit/f844e8bb865beadbc58ea1c3a21e362aee1dce55)]:
|
|
55
|
-
- @livekit/agents@0.4.0
|
package/api-extractor.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config file for API Extractor. For more info, please visit: https://api-extractor.com
|
|
3
|
-
*/
|
|
4
|
-
{
|
|
5
|
-
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Optionally specifies another JSON config file that this file extends from. This provides a way for
|
|
9
|
-
* standard settings to be shared across multiple projects.
|
|
10
|
-
*
|
|
11
|
-
* If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains
|
|
12
|
-
* the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be
|
|
13
|
-
* resolved using NodeJS require().
|
|
14
|
-
*
|
|
15
|
-
* SUPPORTED TOKENS: none
|
|
16
|
-
* DEFAULT VALUE: ""
|
|
17
|
-
*/
|
|
18
|
-
"extends": "../../api-extractor-shared.json",
|
|
19
|
-
"mainEntryPointFilePath": "./dist/index.d.ts"
|
|
20
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
|
-
"include": ["./src"],
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
// match output dir to input dir. e.g. dist/index instead of dist/src/index
|
|
6
|
-
"rootDir": "./src",
|
|
7
|
-
"declarationDir": "./dist",
|
|
8
|
-
"outDir": "./dist"
|
|
9
|
-
},
|
|
10
|
-
"typedocOptions": {
|
|
11
|
-
"name": "plugins/agents-plugin-elevenlabs",
|
|
12
|
-
"entryPointStrategy": "resolve",
|
|
13
|
-
"readme": "none",
|
|
14
|
-
"entryPoints": ["src/index.ts"]
|
|
15
|
-
}
|
|
16
|
-
}
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.full.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dom-events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/globals.global.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field-list.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto2.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/descriptor_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/service-type.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/feature-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/descriptor-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-wrapper.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message-type.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/type-registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/json-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-list.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/util.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/extensions.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/proto-runtime.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto3.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-double.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-base64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-delimited.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/reify-wkt.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/codegen-info.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/is-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension-accessor.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-descriptor-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry-from-desc.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/to-plain-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/compiler/plugin_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/source_context_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/any_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/type_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/api_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/duration_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/empty_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/field_mask_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/struct_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/timestamp_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/wrappers_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/index.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_metrics_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_models_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_agent_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_agent_dispatch_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_egress_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_ingress_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_room_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_rtc_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_sip_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_webhook_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/version.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/json-value.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/unsafe.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect-types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/guard.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/base64-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/error.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/names.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/nested-types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/to-binary.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/size-delimited.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/is-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/create.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/clone.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/equals.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/fields.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/extensions.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/boot.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/embed.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/extension.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/file.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/service.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/symbols.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/e2ee_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/handle_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/participant_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/stats_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/track_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/video_frame_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/room_pb.d.ts","../../node_modules/.pnpm/@livekit+typed-emitter@3.0.0/node_modules/@livekit/typed-emitter/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/e2ee.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/napi/native.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/audio_frame_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/rpc_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/ffi_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/ffi_client.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/rpc.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_frame.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_source.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_frame.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_source.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/track.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/track_publication.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/transcription.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/types.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/participant.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/room.d.ts","../../node_modules/.pnpm/@livekit+mutex@1.1.0/node_modules/@livekit/mutex/dist/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_stream.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_resampler.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_stream.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/index.d.ts","../../agents/dist/job.d.ts","../../agents/dist/worker.d.ts","../../agents/dist/cli.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/typeAliases.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/util.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/ZodError.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/locales/en.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/errors.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/parseUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/enumUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/errorUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/partialUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/types.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/external.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/index.d.ts","../../agents/dist/llm/function_context.d.ts","../../agents/dist/llm/chat_context.d.ts","../../agents/dist/utils.d.ts","../../agents/dist/llm/llm.d.ts","../../agents/dist/llm/index.d.ts","../../agents/dist/multimodal/multimodal_agent.d.ts","../../agents/dist/transcription.d.ts","../../agents/dist/multimodal/agent_playout.d.ts","../../agents/dist/multimodal/index.d.ts","../../agents/dist/stt/stt.d.ts","../../agents/dist/vad.d.ts","../../agents/dist/stt/stream_adapter.d.ts","../../agents/dist/stt/index.d.ts","../../agents/dist/tokenize/tokenizer.d.ts","../../agents/dist/tts/tts.d.ts","../../agents/dist/tokenize/basic/basic.d.ts","../../agents/dist/tokenize/basic/index.d.ts","../../agents/dist/tokenize/token_stream.d.ts","../../agents/dist/tokenize/index.d.ts","../../agents/dist/tts/stream_adapter.d.ts","../../agents/dist/tts/index.d.ts","../../agents/dist/pipeline/agent_playout.d.ts","../../agents/dist/pipeline/agent_output.d.ts","../../agents/dist/pipeline/pipeline_agent.d.ts","../../agents/dist/pipeline/index.d.ts","../../agents/dist/plugin.d.ts","../../agents/dist/version.d.ts","../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/index.d.ts","../../node_modules/.pnpm/sonic-boom@3.8.1/node_modules/sonic-boom/types/index.d.ts","../../node_modules/.pnpm/pino@8.21.0/node_modules/pino/pino.d.ts","../../agents/dist/log.d.ts","../../agents/dist/generator.d.ts","../../agents/dist/audio.d.ts","../../agents/dist/index.d.ts","../../node_modules/.pnpm/@types+ws@8.5.10/node_modules/@types/ws/index.d.ts","./src/models.ts","./src/tts.ts","./src/index.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"73e370058f82add1fdbc78ef3d1aab110108f2d5d9c857cb55d3361982347ace","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","e142fda89ed689ea53d6f2c93693898464c7d29a0ae71c6dc8cdfe5a1d76c775","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","4d2b0eb911816f66abe4970898f97a2cfc902bcd743cbfa5017fad79f7ef90d8","bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","24b8685c62562f5d98615c5a0c1d05f297cf5065f15246edfe99e81ec4c0e011","93507c745e8f29090efb99399c3f77bec07db17acd75634249dc92f961573387","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107",{"version":"964f307d249df0d7e8eb16d594536c0ac6cc63c8d467edf635d05542821dec8e","affectsGlobalScope":true},"db3ec8993b7596a4ef47f309c7b25ee2505b519c13050424d9c34701e5973315",{"version":"6a1ebd564896d530364f67b3257c62555b61d60494a73dfe8893274878c6589d","affectsGlobalScope":true},"af49b066a76ce26673fe49d1885cc6b44153f1071ed2d952f2a90fccba1095c9","f22fd1dc2df53eaf5ce0ff9e0a3326fc66f880d6a652210d50563ae72625455f",{"version":"3ddbdb519e87a7827c4f0c4007013f3628ca0ebb9e2b018cf31e5b2f61c593f1","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"6d498d4fd8036ea02a4edcae10375854a0eb1df0496cf0b9d692577d3c0fd603","affectsGlobalScope":true},"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","fd09b892597ab93e7f79745ce725a3aaf6dd005e8db20f0c63a5d10984cba328","a3be878ff1e1964ab2dc8e0a3b67087cf838731c7f3d8f603337e7b712fdd558","5433f7f77cd1fd53f45bd82445a4e437b2f6a72a32070e907530a4fea56c30c8","9be74296ee565af0c12d7071541fdd23260f53c3da7731fb6361f61150a791f6",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"f501a53b94ba382d9ba396a5c486969a3abc68309828fa67f916035f5d37fe2b","affectsGlobalScope":true},"aa658b5d765f630c312ac9202d110bbaf2b82d180376457f0a9d57b42629714a","312ac7cbd070107766a9886fd27f9faad997ef57d93fdfb4095df2c618ac8162","2e9b4e7f9942af902eb85bae6066d04ef1afee51d61554a62d144df3da7dec94","672ad3045f329e94002256f8ed460cfd06173a50c92cde41edaadfacffd16808","64da4965d1e0559e134d9c1621ae400279a216f87ed00c4cce4f2c7c78021712","2205527b976f4f1844adc46a3f0528729fb68cac70027a5fb13c49ca23593797",{"version":"0166fce1204d520fdfd6b5febb3cda3deee438bcbf8ce9ffeb2b1bcde7155346","affectsGlobalScope":true},"d8b13eab85b532285031b06a971fa051bf0175d8fff68065a24a6da9c1c986cf","50c382ba1827988c59aa9cc9d046e386d55d70f762e9e352e95ee8cb7337cdb8","bb9627ab9d078c79bb5623de4ac8e5d08f806ec9b970962dfc83b3211373690d",{"version":"21d7e87f271e72d02f8d167edc902f90b04525edc7918f00f01dd0bd00599f7e","affectsGlobalScope":true},{"version":"6f6abdaf8764ef01a552a958f45e795b5e79153b87ddad3af5264b86d2681b72","affectsGlobalScope":true},"a215554477f7629e3dcbc8cde104bec036b78673650272f5ffdc5a2cee399a0a","c3497fc242aabfedcd430b5932412f94f157b5906568e737f6a18cc77b36a954","cdc1de3b672f9ef03ff15c443aa1b631edca35b6ae6970a7da6400647ff74d95","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","bf01fdd3b93cf633b3f7420718457af19c57ab8cbfea49268df60bae2e84d627","15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","5f461d6f5d9ff474f1121cc3fd86aa3cd67476c701f55c306d323c5112201207","65b39cc6b610a4a4aecc321f6efb436f10c0509d686124795b4c36a5e915b89e","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633",{"version":"83fe38aa2243059ea859325c006da3964ead69b773429fe049ebb0426e75424d","affectsGlobalScope":true},"d3edb86744e2c19f2c1503849ac7594a5e06024f2451bacae032390f2e20314a",{"version":"e501cbca25bd54f0bcb89c00f092d3cae227e970b93fd76207287fd8110b123d","affectsGlobalScope":true},{"version":"8a3e61347b8f80aa5af532094498bceb0c0b257b25a6aa8ab4880fd6ed57c95a","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","950f6810f7c80e0cffefcf1bcc6ade3485c94394720e334c3c2be3c16b6922fb","5475df7cfc493a08483c9d7aa61cc04791aecba9d0a2efc213f23c4006d4d3cd","000720870b275764c65e9f28ac97cc9e4d9e4a36942d4750ca8603e416e9c57c",{"version":"54412c70bacb9ed547ed6caae8836f712a83ccf58d94466f3387447ec4e82dc3","affectsGlobalScope":true},{"version":"8701e60428b700ed0206c805d702cfb2a7b4b0b76423439451d1018fa70610e4","affectsGlobalScope":true},"4c48e931a72f6971b5add7fdb1136be1d617f124594e94595f7114af749395e0","478eb5c32250678a906d91e0529c70243fc4d75477a08f3da408e2615396f558","e686a88c9ee004c8ba12ffc9d674ca3192a4c50ed0ca6bd5b2825c289e2b2bfe",{"version":"0d27932df2fbc3728e78b98892540e24084424ce12d3bd32f62a23cf307f411f","affectsGlobalScope":true},"4423fb3d6abe6eefb8d7f79eb2df9510824a216ec1c6feee46718c9b18e6d89f",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"01c47d1c006b3a15b51d89d7764fff7e4fabc4e412b3a61ee5357bd74b822879","d35d462c95a35e34cc56d4d1dbf6f41999283dc642013a6eba9c293da48922fc","961ae7c3710ad5925a8041716e5816ac1e301088c3815b710f20d3ae09695430","90d6939e56a48b142c601779694d77983fd71520694844f6928781c4718886fb","2d737ff39762a1fcfabd3b0f97c4b7d891d8f9bb8c45982e6e87549a90982481","465dfadcd4b4362963bc40a8f94ace0d1ecda68e869eeddc20be6bf57e0110fb","808fd1efdfa85e4eab8012c7a087a2ebb8b0c6a536d2518ff6cead7a3192eaf1","fb3304ed260dec0eaad2f713317b6bbc218c0d21cb67c78580bb3897c15575c6","b3850321b5b187ef1dd451bbd7b83c6e6831cce74a4a8bee95b9ff31b2d5172f","eb257064d5dacdcfe73a4cef3325562fd3a7927fcaadcede2b5dddb5b92da417","6ea9588a03dd2768754a9360166daae3b1bf5120e65f3baef43c5cd3dcb4fbb8","d67615efb0127284da59f73194545cf9410d2b48da3129a3b326abdead17c6f6","5af50732b404045bcc0bcb63cb7883ece1b4e6852b64517945e914432363bc2c","58070c94ea0e5108c0539458badde653762717cfeecdf5d25512e2f8171416fb","4d2f45800ddb1cb1de1ab34196c010fbdd2e2bef101c4e4b97091dc5040c2ca9","70fe05199ca2af2c83c0a914ec18e92ffb271c2e4a2f8ee3c04f6e031b14acbc","6a4692a562d2905f78f4bba3799e9a5c1f17a15d3f1a3f9d0b95fc5a93ed0886","92a33be4e45b94a0f4572071c4768189817546e2880ab38befcb844cdf102534","5fe7963c7ca10d11035871bebc893f20c5be4c63e30fbdac989da71ca5eebdbf","dd4ded215da5342d94173e6643650023ea248c0d9c0bbe0318caebe7274438c5","2ffb2971267f8df92b64cc3916630e376de936171df46a29612088f60293cd41","5c228e9ec4226c3f61ed137a59a15bdfd0574c4bfddbdc013c62d6e0b27b0b6a","9a84ba25d436d82f0830f9f88c0e698857c131f6305e80594a9861c65a10ae30","7d6568f33fe202d6e75ed60ddeac15bca8ce1e01077385e4cb3dd9dd0130da28","82d3cdd488466e697681b914420994c88fd8595bc6888c46c421af7919405c71","aa61e6cb5e048437ab87d09e316ac45770840de626f5736c98a192c7d60c907a","071a8cff6dad210ba0bf897f1388eeeaa805a526b9ec7cc7c8dddc635163d806","e29f94fc3483a23f83a1acb0d931ff693e97b1109554552aa521402beb0bf48e","147e333507832d5d99734b020def22f33f995d5fc86d747b4f5356d0188e63fd","8c4a8552716e1e0fdc136f0854f3f06f5fb8782b70adeb1a90aff8fe215629b8","899200619538b0f98db2b5bc852350aad059f2070aa814deedead6c02c9d8d46","64531510183ce687dc1484b1872abce3b9c6e01eceb2b6470e0a9c57fd2712d0","db9086eccd3256f810ac13f48e370f8b5137a63208f8040422a94744f781e73c","cebd0ffc617a714a5b393684d3d67486c23113268ff72169dbd67a1ade72cef8","e712cad833246cdf450f5554ee1510f584a95a5e281efd52e29bed2deb1cc4c9","d7c8351dfa3a584c6fdc09544ef019194cb2ea7d9e85fb11230a3e42c4dc983a","33f99657300799c354171117d7f70da1f325f2083371074d92c6e07903110f87","fa6b27a596fa69645ea962f3d865eedb7a6e431fb1abe7648722fb33d30307e3","5174f5ef2b78013a23512cbc7836bf85781a5cad54c927f1ddbac41f28855b39","60da60a86767337d4f2184af60c1d8a5a3d78d2468323ae688478a4aac33d6e8","9d5758e932374ed7965ac329d30700098a4c752efdb1ce8170d74b3354475a7c","9a2205771a9ac694ee379c7da11c2ecbf92df025bf3ca0a7c67d5a466169da3b","ee7cf7d3f43ab03590c2af84c8c0f6685a950d28a1ba86a5ec594fc21fd892d1","eb9b4a340fdfa222f0bb5ca5cc57cfbdd2a8aece5b4c25543309a90906a7493a","2ef5231141ed12543768d0c0c5765ffd12d1a28fc231ec4c40caf11aa19908df","921572e442e836b604dfb2042ae0b4a268c9713c694a1807b3ad2f6acdf93737","b45c6a853aa17d19445f501aef85f135d7287b6e349a2297f1554e95d079d9d0","629b8d970c312fe6a7c8ea39455e881ae08339e6648afa7e13e3ddf7c32710e3","f9f80efd0794729d4b8c70d143a19192e959fb97d920fdc475f8c6e0f4e01a8f","2d9b62a13b17c07567426574ac304b51d3c742015b41d34ca109e6637bec2889","167482c31a85717a3f13a74f3c810182cb7bff3b2385a3a318f1cce3b202452d","238b20bd02420031a196a1a75287da685f5b2fd9a5c3f06cd242419dd528a207","622afde6c98207cfb043648ace587b2ec5d5cd1c2c37c42cc9167cb80c4258ef","f0b1a98e596c14356b25b1c9e6c7c5c79d1b1c0515f82c344db1a3c6662e5a76","01d6ff7fd033282f3add1e8874b6d4f414e44f15201f90fa42bce018a7e09773","b0d94f63dc74ab1d3bdbfd3ab17e636f51c8f8a2ef3bdd24280fbae28bd858d7","2c1eabb35e6fe65727ccfe6c1cf3d3438bc0d8af6bd8dd87b0d8f0243d3092f9","ea8c6ce2a531e91397ae797c28291168641ca5f33ffcaf7d627fe2e65a36dd64","8a60ed93d81f472e270e213c5da23bdfc2a87b6616031f4d397aced25f727217","defe8a3179ae2cd6450ccaf59e213c3922b16c64628e40feeaca43c8b4cdfc0e","64dcb61d505101fdfaf0de26676a7af9155cfff0406b0db92dbfbd1edd73b9e6","f7c1b2c8138d0bfcfa8dd75a4ec6468e8eb07ed226a05de057dcf4a9b6988c24","e952316a52a63a0d31a8251a90b61b73653c150bb4a74729cc1d1853fcc51290","42324ae49b347a0c3786cbbc137112fdaffa46e2c62fb5f4ea316e23a8041da8","d98c08cb061156883fc65d3ce894b294ae5f4fd56b7477c56fdbb57aefd213f1","ad2979f82cb32b7f92693b08da5eb056027a07c9ffe29ef69bbe0266f1fb7e26","d1fd3e3ef27702e000befb854e02a4650e52a4371fa0803d1c895946572cca93","5593440344062522e165ac4e22fb2c5b5b5e37c36f1c4eec28c4a45ab9cd69b4","7d3fdad815e3574a70ff4ccc45778fdfb0f935c685ab44bd9e7d0193207dc648","bda6b36d8a25b85779ff53e9149804ebe3e0b09c0094b5f4b41914f5cff15c54","e3a995d5ef286d36316cd3bc0c7aa5f8015c4799bab1ded702fa392892fd3559","e2edffb28e4b058115ff37c9eae06b5e9e346a04c4a69e134a6aa889d0461741","9e7a73194e54c8997d305f1fd55084b6c00345432549d5e4911a8d209dacaab6","1425dc46c00443dbfb14c0e3dffad339562bce1a756cf1a2c13435d9819dc832","19581a13361eb59eb33fb8f86d0cec58d068d102396f12ec25422872299af6b2","6e5f487a0ea2e10829d45b7a3888ade2e901ec4423a48c0ff5aee355bc70d5aa","5764e607c41990f74103fc9b49793366c3f0c94c6451b27c6cba47d864b238b0","9cb81ed0e172fc08a1e2b5064471d243b1eadd6a608732330a98b3abc1c09608","3fd3eaed39db12e95a43cdae262d304ea9e50aeb1423453350fd5511a33cc7d3","cbf797eac91e76a70272787efc3eb972278d3a91580d03c6bd22dea1245a55a0","a7114eb40f84278eacbd3b67a10f28bde8f139e4b5c9e7be634f32d6be79a0f7","dda4e6be50a8912eb66ad1f12e382f4e92d8ea0101bd350dd00d47db03924b54","d13e95194a4e39d255971136c025679c16c5f72cbfdc4c9d49075c7f9129b68f","a169ea6f6eb49b7ac0212d3070f4379d7433ac098ed46b6d2867ae24839cd79a","cc5970c174f4d5473201768c5ed267c4052efec308b1e5537132c2525bf6e3cd","b8396dc07381e5232e64b362080bb89170799df874a057b77305d33157a0f05a","7e0736c57a0a0fe112725146a32f78c69765bbe397a0f5b5877fd12b8f60a203","213376670843aa2398aaaf57967b47ac967d9869e161df41a0dd6e4e21489119","40d7b0296975a9556f7957fb4222f99a38127c74fa2bb6a17c1cd31a37887357","e8f9d744212a82e079d072347fc3b48e66c1df6a7b3e33b6ac0138d39cfd1d82","04535f6cffc32f1b2f8a464a2df97a67539435f095f3592add6b652f939421c9","8ccfd8867eb08b17c7fe3a75c251f014d583defe37ee21d592a53badb400724b","b73d36d9e0c4951bd4a60f9eb8582de18ab1f1f34086c701cf210695eba24111","0eaa960ef12452dbcdf65c8eac7c911faef8f459ed39a99d2ab34b9015aecca3","c277f3132ace38a724909dcdf7b878f5b8880879ed680fc2d242b4796ad0a555","72c4a46226a3d7d6fa883cac212f2a346c9052de6cd3a895988afa2e81698ea6","314af91ec010e81f89207256064c68871798d2f979a632d227a4e9e2379b8f75","c1c5a951894ba0de853755f53a860454eeb12e4550e44faced1702ec48b7032b","f60c1fb7f1ca4a215054c0ea9295fc05198ef130e60d388bd13f0b6d6f28aecb","c8e4a090dd30aa3cd8a35910bfc1b055ed8d3dc523b60890b3ccefb4dbed84bf","28fa33a0d694f3f85b2bc1a647335e64d8766b3954f739b650d12e762ed5804a","c361c3d85a097d0b6648da8bd6e19a2ddab396c31f4313de7d23ab9851d53af1","1761d398c323f9bcacb4d40e685f0fd541d70d47f430aab96eae37eb3c4e2498","cf341a2e7298fd192c45dcdde6de4d29335d6f16c95c0fa138d751658056f0d3","984e7a6d56374faa0e78be62eb0ab28aa93408e4d6421a5c53fe224739143e96","854af8bfa9824a288c9bfe060386979184d9855583c3a207246fb49bef2d46ba","cd167765f0c850f8063802b7aae835473a1a4d379dbc087e1e5f42f479277b7c","73b7c60b3a5af8a2a558abf8ad387a8c97b88ca074798b7e0e3c26a884388279","c9cbec71f5c62173b909e07a5ed5d65c4867eb5a1965a6076b94d1714c1d0ebf","8139cef526b26e7970b2d1c1fab0e6f3570bbc39ac82f33488828eea11741b2e","1d79cc92129aac5d45f1841a6f4eb697e6b30a5306cb51e398636e39694ebc2e","eb28b0b3095f90805c23a886b63f80f1f4a249e2f476061dc3358e83c40f2d52","d28d219b1b02a558eeddb203edb985c484b79e29336ff114c36cb3b8f0b6a235","d93424251be6a1179ccd06011da456f2236fa3c6ef30cdb544508930afc12108","3980d7830a35679bb6930a3b62e6cbbd038cd65933a655c80c76d42c5072d74d","1d15c6610a7821cbc312e84c01135684e7a4a8028ee47027b42e538b3d488d2f","f9feee5e5d29febebd91d5299995dbb76fa8290ef4d7e59fd85073f5e05a49cf","c542cfcefc011022b945cad74e31c1dd521bf580014b211afd90797c67f78e64","a9c3b43c19597965e04b2c3a2d3c2cc0421126fc91616cd75521c864b47a8e36","64672214e922297f8a9638327f0086f50a05b47cac3dbd71e440091c7bc42bbb","af06cb1420eba0403860ccfa5947c872575e306846ef5bf31e52ceddb6bc7a15","ded8bf62ba392e6740ecef57b86df7ecb404fb36f115e6ec3a6f922af36e9cad","8d7440deb880db3e82b88490886d7b69deb02e44c47baa2762a39b2092ddf869","d071c5bdfba35e2a241ebbe4d5aca46397e73a22da5cd34b2040e68e9b1f0fe3","71e7203d1e31360a200dc8cf4b5e41bba0fa2b6d4e6507cd8a9168a3901c62ac","af892137afa521fc56341fa45710c0c9acb44248764422ec98b8eb42ee442838","a1b0607cd211035cd9a317622160735178d90469d0cd76b8bf22e6a867559806","0afe7205c09ca9e2392179baeccd3218940b6bc25d5896512c53e65e04cb8f5b","6525bf43eb7f48aba2553d987338f99e0fe53f832b543e5813b51641c076cba3","c2af70187a9d59f129658374b13cb49e0e443627fb0c20eb45c5092b8117c680","87c2bd2e129506a956ad14d96de4dbef46fcd552e36347bb76f1367cfe0b5796","5def8fad9c90fa049bb881acb8ea0d3c606d04f9af57ea3d28ca6f689088fa56","edb860c3dd028ed101bd6b6857f195e9d766576bedba59a4c59d966b66e3dbab","a502a8e832091a522cb10a20bdfd52d0238ea1582ec9aabe8761ac6be0eac8a2","0ce4bcfab3fa4469f9dd2c5ad38a38fe6428246995b16a89cdb0b2bfa6a340a4","a21524bcc96e9bab6c661e183cfbefaedfb45f0e88db86c2fbfaf744d9e727fe","5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","c2869c4f2f79fd2d03278a68ce7c061a5a8f4aed59efb655e25fe502e3e471d5","b8fe42dbf4b0efba2eb4dbfb2b95a3712676717ff8469767dc439e75d0c1a3b6","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","83306c97a4643d78420f082547ea0d488a0d134c922c8e65fc0b4f08ef66d92b","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","dccd26a5c85325a011aff40f401e0892bd0688d44132ba79e803c67e68fffea5","f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","f3ccc22c2ede3dad04372a5b434232ed6082478792f78e04eb2edd6bed1e94dc","b146a3095f9a38b4f22d83879632b2d972bf45fd70b789097839f396c7bc2fee","5d0b50bdec633a334493fdb30dc93bef3be71535eee8a883ad9511fc36c626bc","e4a9c9f9680bb9226ec16aee63c20719651a3e20943359bbf14361ca2ace7182","bbf12814571af6f9f2e6572155a8aadb5fe345bab69cc5f37585dba368d99181","ff850cf35ad82873ca73198d172ead12f8704820e2e0399527e24224da4a5864","fd7bbea1583e8817696c260d1caf4ff1cfba5299d4b3dd47a7e748821ade7817","0a08d66930b314d5955ceef61faad866dcc2d271b43363621eb7bf2d3d1ab99d","2812ffd97913ff7c4c12d8e387c81976fb581ccc78aa440efb662c4281ff6590","a724edd1c65c21c1f166b4322f633111aceefa90806299c4af827c206195aec7","8f8af5356fe332dce2d85a3b597be83f5169f6efaebf82ef39418209b13330be","acd37eb01975d35f5c5f9a18d41d8871831ee0320c4e0aa9e0cfd873f29c6123","a7e9495cefe0134a61a94b73e3652bd20b7c555990cacfbde36f8faca0066e67","9f979baadc279cb9489804d923b59b78aa09e4b046567d5ffa3f5a5be608bd96","09f4eec1900124ccc8ee02f70ffee2dd9a6d68aec9624d5076c85af14392f52b","a15e64dd8f7a9b0aa2cdaac994ab64fe6e1805fa6e57fea21014b819c86cccad","585e3971c58a8e2d976b6a728a46a6df207707e60152cea6ba184f5f0a5a15ea","49e0522ad7a6db53cf2094b5867f50a2444a8dd79dad93769bd194ce9a0bd5af","56284627943e856df1fb18b0e62a99b2fd8ef0c748af7f130fe79118455c84b1","2b1792b90db874cdea9dc68629f1347dc4bbad3565dc1348a5ed1666f007ea4b","39afa915ceb7daccc694ee495970e8076cc5d089f8ba61dbbf035e7168e5e3d0","0ad5b4210a6a6bfb8dc2ab2ab2147274d956bd523f65c0f7ada6e17a554c551c","e53fbbabdc7ecd942e6d2773400cfe3f54f1c4a7e2e7b249e9d7c88b4a1a06f1","abef510d1322b541164612dc72f6a9befd08bb5a348da70a3de4a76d8c59a24b","a79a0ee179275e1f1b31e42aaa6f3c9c91f0b6dc38da9577b726faec94c636a9","4be291a8409ee35fc524dd083e3d0785eba74a084335b71081dd906ade83ea8f","0924b0b955e11e834563b021009dcddf6c164215e8394d55f3740f44aac73307","4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","ad70fdf3826676b87e49c859035690311e6e1f27fc58c76ebfd5c714f7cee2e6","edd2bf117f61517d22264e2204925df0f422315f5df9be844feebb3aab4876f0","b2a5387ffc09137f8349da15fe2871477b5f2f47e6ad584a5a7cf7c8bd8f13fe","a5e0ea4f577abccb66b40be940cf14872d4f65ea24f913aa1b055dc930c6db44","a79c00254f4c0545fca39bdbec7ad07f29e51a08ca86c38df44862da2d423783","c73dd36e515bd8243f2ebccc89182e9bac47bde668d98e44af6a41b68fd62bc0","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8",{"version":"d49f47fa929066b5c6e4ef819e3ea1ba030ef1ab9f1b094a7b8c91f0502d4fa3","signature":"3732c3d57ffa801dce6d8ea7bc0ed09812402a3e3dd6ed17bb479c02173627c3"},{"version":"29fe90be00d60e4bf915c582954763783a7ecac7007ae160506eb8c701ea4c8f","signature":"486f503611f0d9533ff773fd157f289f31e8b5c10a9d13e051378b9375927c74"},{"version":"92acbe5d5758024da1324d7b5fb0786346bbc6d8cf8f4a47100bd2625cf5b07c","signature":"5b345ed0ad436c0f92745ee165e22b17e4e4ff158b9306300ddd2781670fa2e5"}],"root":[[342,344]],"options":{"allowJs":false,"composite":true,"declaration":true,"declarationDir":"./dist","declarationMap":true,"esModuleInterop":true,"module":7,"noUncheckedIndexedAccess":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"fileIdsList":[[290],[292],[291],[291,292,293,309,311,313,315,317,319,325,327,331,332,333,337,338,339],[217,290],[290,307],[306],[307,308,310],[307,308,309],[336],[119,158,290,309,313],[312,314],[119,158,290,311],[290,309,327,328],[268,290,309,329],[330],[268,290,311,317,319,320,327,329],[316,318],[290,316,317],[290,309],[325],[322],[320,323,324],[309,320],[309],[321,326],[321,325],[119,158,217,291],[159,170,172],[164,167,186],[163,167,171],[163,167,174],[160,165,169,173,174],[163,164,165,166],[171,172,173],[169,170,172,180],[170],[160,164,169],[161,169,171,172,174,175,181],[161,171,172,175,181,195,197],[161,162,163,171,172,175],[161,162,171,172,175],[161,171,172,175,181],[161,171,172,175,181,195,196],[159,160,161,162,163,164,165,167,169,170,171,172,173,174,175,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204],[169,172],[164,169,172,174],[161,168,171,172,175,180],[169,171,175],[160],[159,169,170,172,173,180],[163,171],[161,170],[164,167,169,172],[160,169,171,172,173,175,176,177,178,179],[167],[160,161,169,172,176,177],[169,171,172],[180],[172],[160,165,169,173],[220,239],[218,220],[218,220,251],[220,221,222],[220,222,239],[220],[222,251,252,253,254,255,256,257,258,259],[220,221,222,239],[220,222],[220,221,239],[218,219],[218,220,224,239],[220,226,234,239],[220,221,239,245],[220,221,235,236,239,240,241,242,243,244,245,246,247,248,249],[219,220,224,239],[219,224,225,230,231,232,233],[219,220,223,239],[220,224,239],[220,221,222,225,238],[226,227,228,229,237],[220,235,236,239],[222,239],[205,208],[205,207],[205],[205,206],[205,207,209,210],[205,207,210,211],[205,206,207,208,209,210,211,212,213,214,215,216],[271],[276],[270,271,276],[271,274,276,280,286],[261],[250,268,270,273],[250,261,263,265,266,267,269,274,275,276,277,278,279,280,281,282,283,284,285,287,288,289],[263,267,274,275,280,281,282,283],[250,260,262,265],[250,260],[250,260,261,265,266,267,271,272],[250,260,262],[250,260,261,262,263,264,265,266],[250,260,261,262,264],[267,268,269,280,281,283,284],[272],[265,274,277,279],[261,265,270,280],[266],[266,274,278],[266,274,278,280,286],[65],[106],[107,112,142],[108,113,119,120,127,139,150],[108,109,119,127],[110,151],[111,112,120,128],[112,139,147],[113,115,119,127],[106,114],[115,116],[119],[117,119],[106,119],[119,120,121,139,150],[119,120,121,134,139,142],[104,155],[104,115,119,122,127,139,150],[119,120,122,123,127,139,147,150],[122,124,139,147,150],[65,66,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157],[119,125],[126,150,155],[115,119,127,139],[128],[129],[106,130],[65,66,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156],[132],[133],[119,134,135],[134,136,151,153],[107,119,139,140,141,142],[107,139,141],[139,140],[142],[143],[65,139],[119,145,146],[145,146],[112,127,139,147],[148],[127,149],[107,122,133,150],[112,151],[139,152],[126,153],[154],[107,112,119,121,130,139,150,153,155],[139,156],[119,122,124,139,147,150,156,158],[122,158],[119,155,334,335],[119,158],[76,80,150],[76,139,150],[71],[73,76,147,150],[127,147],[158],[71,158],[73,76,127,150],[68,69,72,75,107,119,139,150],[76,83],[68,74],[76,97,98],[72,76,107,142,150,158],[107,158],[97,107,158],[70,71,158],[76],[70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103],[76,91],[76,83,84],[74,76,84,85],[75],[68,71,76],[76,80,84,85],[80],[74,76,79,150],[68,73,76,83],[107,139],[71,76,97,107,155,158],[305],[294,295,305],[296,297],[294,295,296,298,299,303],[295,296],[304],[296],[294,295,296,299,300,301,302],[343],[112,150,290,320,340,341,342],[150,340,342]],"referencedMap":[[339,1],[293,2],[338,3],[340,4],[291,5],[308,6],[307,7],[311,8],[310,9],[337,10],[314,11],[315,12],[312,13],[329,14],[328,15],[331,16],[330,17],[319,18],[318,19],[316,20],[322,21],[323,22],[325,23],[324,24],[320,25],[313,1],[327,26],[326,27],[321,20],[309,1],[317,20],[292,28],[171,29],[187,30],[190,31],[192,32],[191,33],[167,34],[189,35],[173,36],[161,37],[170,38],[196,39],[198,40],[194,41],[163,42],[199,43],[200,43],[201,43],[195,43],[202,43],[203,43],[197,44],[204,43],[205,45],[188,46],[175,47],[169,48],[172,49],[177,50],[179,51],[166,52],[176,53],[168,54],[180,55],[186,56],[178,57],[185,58],[162,59],[181,59],[165,46],[193,60],[174,61],[242,62],[251,63],[252,64],[253,65],[254,66],[255,67],[260,68],[256,69],[259,67],[257,70],[222,71],[241,62],[220,72],[243,62],[248,73],[244,62],[236,74],[247,75],[250,76],[240,62],[230,67],[225,77],[234,78],[232,67],[224,79],[233,80],[219,67],[223,67],[245,63],[235,74],[246,75],[239,81],[238,82],[237,83],[229,67],[218,84],[209,85],[208,86],[210,86],[211,86],[206,87],[207,88],[212,89],[213,86],[214,86],[215,90],[217,91],[276,92],[288,93],[277,94],[287,95],[269,96],[274,97],[290,98],[284,99],[271,100],[261,101],[273,102],[262,101],[263,103],[267,104],[272,101],[264,101],[265,105],[266,100],[285,106],[275,107],[280,108],[281,109],[278,110],[279,111],[289,112],[65,113],[66,113],[106,114],[107,115],[108,116],[109,117],[110,118],[111,119],[112,120],[113,121],[114,122],[115,123],[116,123],[118,124],[117,125],[119,126],[120,127],[121,128],[105,129],[122,130],[123,131],[124,132],[158,133],[125,134],[126,135],[127,136],[128,137],[129,138],[130,139],[131,140],[132,141],[133,142],[134,143],[135,143],[136,144],[139,145],[141,146],[140,147],[142,148],[143,149],[144,150],[145,151],[146,152],[147,153],[148,154],[149,155],[150,156],[151,157],[152,158],[153,159],[154,160],[155,161],[156,162],[341,163],[334,164],[336,165],[335,166],[83,167],[93,168],[82,167],[103,169],[74,170],[73,171],[102,172],[96,173],[101,174],[76,175],[90,176],[75,177],[99,178],[71,179],[70,180],[100,181],[72,182],[77,183],[81,183],[104,184],[94,185],[85,186],[86,187],[88,188],[84,189],[87,190],[97,172],[79,191],[80,192],[89,193],[69,194],[92,185],[91,183],[98,195],[306,196],[296,197],[298,198],[304,199],[299,200],[302,196],[305,201],[297,202],[303,203],[344,204],[343,205]],"exportedModulesMap":[[339,1],[293,2],[338,3],[340,4],[291,5],[308,6],[307,7],[311,8],[310,9],[337,10],[314,11],[315,12],[312,13],[329,14],[328,15],[331,16],[330,17],[319,18],[318,19],[316,20],[322,21],[323,22],[325,23],[324,24],[320,25],[313,1],[327,26],[326,27],[321,20],[309,1],[317,20],[292,28],[171,29],[187,30],[190,31],[192,32],[191,33],[167,34],[189,35],[173,36],[161,37],[170,38],[196,39],[198,40],[194,41],[163,42],[199,43],[200,43],[201,43],[195,43],[202,43],[203,43],[197,44],[204,43],[205,45],[188,46],[175,47],[169,48],[172,49],[177,50],[179,51],[166,52],[176,53],[168,54],[180,55],[186,56],[178,57],[185,58],[162,59],[181,59],[165,46],[193,60],[174,61],[242,62],[251,63],[252,64],[253,65],[254,66],[255,67],[260,68],[256,69],[259,67],[257,70],[222,71],[241,62],[220,72],[243,62],[248,73],[244,62],[236,74],[247,75],[250,76],[240,62],[230,67],[225,77],[234,78],[232,67],[224,79],[233,80],[219,67],[223,67],[245,63],[235,74],[246,75],[239,81],[238,82],[237,83],[229,67],[218,84],[209,85],[208,86],[210,86],[211,86],[206,87],[207,88],[212,89],[213,86],[214,86],[215,90],[217,91],[276,92],[288,93],[277,94],[287,95],[269,96],[274,97],[290,98],[284,99],[271,100],[261,101],[273,102],[262,101],[263,103],[267,104],[272,101],[264,101],[265,105],[266,100],[285,106],[275,107],[280,108],[281,109],[278,110],[279,111],[289,112],[65,113],[66,113],[106,114],[107,115],[108,116],[109,117],[110,118],[111,119],[112,120],[113,121],[114,122],[115,123],[116,123],[118,124],[117,125],[119,126],[120,127],[121,128],[105,129],[122,130],[123,131],[124,132],[158,133],[125,134],[126,135],[127,136],[128,137],[129,138],[130,139],[131,140],[132,141],[133,142],[134,143],[135,143],[136,144],[139,145],[141,146],[140,147],[142,148],[143,149],[144,150],[145,151],[146,152],[147,153],[148,154],[149,155],[150,156],[151,157],[152,158],[153,159],[154,160],[155,161],[156,162],[341,163],[334,164],[336,165],[335,166],[83,167],[93,168],[82,167],[103,169],[74,170],[73,171],[102,172],[96,173],[101,174],[76,175],[90,176],[75,177],[99,178],[71,179],[70,180],[100,181],[72,182],[77,183],[81,183],[104,184],[94,185],[85,186],[86,187],[88,188],[84,189],[87,190],[97,172],[79,191],[80,192],[89,193],[69,194],[92,185],[91,183],[98,195],[306,196],[296,197],[298,198],[304,199],[299,200],[302,196],[305,201],[297,202],[303,203],[344,204],[343,206]],"semanticDiagnosticsPerFile":[339,293,338,340,291,308,307,311,310,337,314,315,312,329,328,331,330,332,319,318,316,322,323,325,324,320,313,327,326,321,309,317,333,292,159,171,187,190,192,191,167,160,189,173,161,170,196,198,194,163,199,200,201,195,202,203,197,204,205,188,175,169,172,177,179,166,176,168,180,186,178,184,185,182,183,162,181,164,165,193,174,242,251,252,253,254,255,260,256,259,257,258,222,241,220,243,248,244,236,247,250,240,221,249,230,225,234,231,232,224,233,219,223,245,235,246,239,227,226,238,237,228,229,218,286,209,208,210,211,206,207,212,213,214,215,216,217,276,288,277,287,269,274,290,270,284,271,261,273,262,263,267,272,264,265,266,285,275,280,281,282,283,278,279,289,268,65,66,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,105,157,122,123,124,158,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,141,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,341,67,334,336,335,62,63,12,10,11,16,15,2,17,18,19,20,21,22,23,24,3,25,4,26,30,27,28,29,31,32,33,5,34,35,36,37,6,41,38,39,40,42,7,43,48,49,44,45,46,47,8,53,50,51,52,54,9,55,64,56,57,60,58,59,1,61,14,13,83,93,82,103,74,73,102,96,101,76,90,75,99,71,70,100,72,77,78,81,68,104,94,85,86,88,84,87,97,79,80,89,69,92,91,95,98,306,296,298,304,300,301,299,302,294,295,305,297,303,344,342,343],"latestChangedDtsFile":"./dist/index.d.ts"},"version":"5.4.5"}
|