@livekit/rtc-node 0.7.0 → 0.8.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/dist/audio_stream.d.ts +3 -1
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/audio_stream.js +5 -1
- package/dist/audio_stream.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/napi/native.d.ts +8 -5
- package/dist/participant.d.ts +2 -0
- package/dist/participant.d.ts.map +1 -1
- package/dist/participant.js +25 -1
- package/dist/participant.js.map +1 -1
- package/dist/proto/audio_frame_pb.d.ts +59 -0
- package/dist/proto/audio_frame_pb.d.ts.map +1 -1
- package/dist/proto/audio_frame_pb.js +83 -0
- package/dist/proto/audio_frame_pb.js.map +1 -1
- package/dist/proto/ffi_pb.d.ts +73 -25
- package/dist/proto/ffi_pb.d.ts.map +1 -1
- package/dist/proto/ffi_pb.js +33 -25
- package/dist/proto/ffi_pb.js.map +1 -1
- package/dist/proto/participant_pb.d.ts +29 -0
- package/dist/proto/participant_pb.d.ts.map +1 -1
- package/dist/proto/participant_pb.js +39 -0
- package/dist/proto/participant_pb.js.map +1 -1
- package/dist/proto/track_pb.d.ts +80 -0
- package/dist/proto/track_pb.d.ts.map +1 -1
- package/dist/proto/track_pb.js +134 -0
- package/dist/proto/track_pb.js.map +1 -1
- package/dist/proto/video_frame_pb.d.ts +53 -0
- package/dist/proto/video_frame_pb.d.ts.map +1 -1
- package/dist/proto/video_frame_pb.js +75 -0
- package/dist/proto/video_frame_pb.js.map +1 -1
- package/dist/transcription.d.ts +14 -0
- package/dist/transcription.d.ts.map +1 -0
- package/dist/transcription.js +2 -0
- package/dist/transcription.js.map +1 -0
- package/package.json +6 -6
- package/src/audio_stream.ts +7 -1
- package/src/index.ts +3 -2
- package/src/napi/native.d.ts +8 -5
- package/src/participant.ts +36 -0
- package/src/proto/audio_frame_pb.ts +111 -0
- package/src/proto/ffi_pb.ts +103 -47
- package/src/proto/participant_pb.ts +44 -0
- package/src/proto/track_pb.ts +164 -0
- package/src/proto/video_frame_pb.ts +101 -0
- package/src/transcription.ts +17 -0
package/src/proto/ffi_pb.ts
CHANGED
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
|
|
21
21
|
import { Message, proto3, protoInt64 } from "@bufbuild/protobuf";
|
|
22
22
|
import { ConnectCallback, ConnectRequest, ConnectResponse, DisconnectCallback, DisconnectRequest, DisconnectResponse, GetSessionStatsCallback, GetSessionStatsRequest, GetSessionStatsResponse, PublishDataCallback, PublishDataRequest, PublishDataResponse, PublishSipDtmfCallback, PublishSipDtmfRequest, PublishSipDtmfResponse, PublishTrackCallback, PublishTrackRequest, PublishTrackResponse, PublishTranscriptionCallback, PublishTranscriptionRequest, PublishTranscriptionResponse, RoomEvent, SetLocalAttributesCallback, SetLocalAttributesRequest, SetLocalAttributesResponse, SetLocalMetadataCallback, SetLocalMetadataRequest, SetLocalMetadataResponse, SetLocalNameCallback, SetLocalNameRequest, SetLocalNameResponse, SetSubscribedRequest, SetSubscribedResponse, UnpublishTrackCallback, UnpublishTrackRequest, UnpublishTrackResponse } from "./room_pb.js";
|
|
23
|
-
import { CreateAudioTrackRequest, CreateAudioTrackResponse, CreateVideoTrackRequest, CreateVideoTrackResponse, GetStatsCallback, GetStatsRequest, GetStatsResponse, TrackEvent } from "./track_pb.js";
|
|
24
|
-
import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequest, NewVideoSourceResponse, NewVideoStreamRequest, NewVideoStreamResponse, VideoConvertRequest, VideoConvertResponse, VideoStreamEvent } from "./video_frame_pb.js";
|
|
25
|
-
import { AudioStreamEvent, CaptureAudioFrameCallback, CaptureAudioFrameRequest, CaptureAudioFrameResponse, NewAudioResamplerRequest, NewAudioResamplerResponse, NewAudioSourceRequest, NewAudioSourceResponse, NewAudioStreamRequest, NewAudioStreamResponse, RemixAndResampleRequest, RemixAndResampleResponse } from "./audio_frame_pb.js";
|
|
23
|
+
import { CreateAudioTrackRequest, CreateAudioTrackResponse, CreateVideoTrackRequest, CreateVideoTrackResponse, EnableRemoteTrackRequest, EnableRemoteTrackResponse, GetStatsCallback, GetStatsRequest, GetStatsResponse, LocalTrackMuteRequest, LocalTrackMuteResponse, TrackEvent } from "./track_pb.js";
|
|
24
|
+
import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequest, NewVideoSourceResponse, NewVideoStreamRequest, NewVideoStreamResponse, VideoConvertRequest, VideoConvertResponse, VideoStreamEvent, VideoStreamFromParticipantRequest, VideoStreamFromParticipantResponse } from "./video_frame_pb.js";
|
|
25
|
+
import { AudioStreamEvent, AudioStreamFromParticipantRequest, AudioStreamFromParticipantResponse, CaptureAudioFrameCallback, CaptureAudioFrameRequest, CaptureAudioFrameResponse, NewAudioResamplerRequest, NewAudioResamplerResponse, NewAudioSourceRequest, NewAudioSourceResponse, NewAudioStreamRequest, NewAudioStreamResponse, RemixAndResampleRequest, RemixAndResampleResponse } from "./audio_frame_pb.js";
|
|
26
26
|
import { E2eeRequest, E2eeResponse } from "./e2ee_pb.js";
|
|
27
27
|
|
|
28
28
|
/**
|
|
@@ -169,7 +169,19 @@ export class FfiRequest extends Message<FfiRequest> {
|
|
|
169
169
|
case: "createAudioTrack";
|
|
170
170
|
} | {
|
|
171
171
|
/**
|
|
172
|
-
* @generated from field: livekit.proto.
|
|
172
|
+
* @generated from field: livekit.proto.LocalTrackMuteRequest local_track_mute = 17;
|
|
173
|
+
*/
|
|
174
|
+
value: LocalTrackMuteRequest;
|
|
175
|
+
case: "localTrackMute";
|
|
176
|
+
} | {
|
|
177
|
+
/**
|
|
178
|
+
* @generated from field: livekit.proto.EnableRemoteTrackRequest enable_remote_track = 18;
|
|
179
|
+
*/
|
|
180
|
+
value: EnableRemoteTrackRequest;
|
|
181
|
+
case: "enableRemoteTrack";
|
|
182
|
+
} | {
|
|
183
|
+
/**
|
|
184
|
+
* @generated from field: livekit.proto.GetStatsRequest get_stats = 19;
|
|
173
185
|
*/
|
|
174
186
|
value: GetStatsRequest;
|
|
175
187
|
case: "getStats";
|
|
@@ -177,66 +189,78 @@ export class FfiRequest extends Message<FfiRequest> {
|
|
|
177
189
|
/**
|
|
178
190
|
* Video
|
|
179
191
|
*
|
|
180
|
-
* @generated from field: livekit.proto.NewVideoStreamRequest new_video_stream =
|
|
192
|
+
* @generated from field: livekit.proto.NewVideoStreamRequest new_video_stream = 20;
|
|
181
193
|
*/
|
|
182
194
|
value: NewVideoStreamRequest;
|
|
183
195
|
case: "newVideoStream";
|
|
184
196
|
} | {
|
|
185
197
|
/**
|
|
186
|
-
* @generated from field: livekit.proto.NewVideoSourceRequest new_video_source =
|
|
198
|
+
* @generated from field: livekit.proto.NewVideoSourceRequest new_video_source = 21;
|
|
187
199
|
*/
|
|
188
200
|
value: NewVideoSourceRequest;
|
|
189
201
|
case: "newVideoSource";
|
|
190
202
|
} | {
|
|
191
203
|
/**
|
|
192
|
-
* @generated from field: livekit.proto.CaptureVideoFrameRequest capture_video_frame =
|
|
204
|
+
* @generated from field: livekit.proto.CaptureVideoFrameRequest capture_video_frame = 22;
|
|
193
205
|
*/
|
|
194
206
|
value: CaptureVideoFrameRequest;
|
|
195
207
|
case: "captureVideoFrame";
|
|
196
208
|
} | {
|
|
197
209
|
/**
|
|
198
|
-
* @generated from field: livekit.proto.VideoConvertRequest video_convert =
|
|
210
|
+
* @generated from field: livekit.proto.VideoConvertRequest video_convert = 23;
|
|
199
211
|
*/
|
|
200
212
|
value: VideoConvertRequest;
|
|
201
213
|
case: "videoConvert";
|
|
214
|
+
} | {
|
|
215
|
+
/**
|
|
216
|
+
* @generated from field: livekit.proto.VideoStreamFromParticipantRequest video_stream_from_participant = 24;
|
|
217
|
+
*/
|
|
218
|
+
value: VideoStreamFromParticipantRequest;
|
|
219
|
+
case: "videoStreamFromParticipant";
|
|
202
220
|
} | {
|
|
203
221
|
/**
|
|
204
222
|
* Audio
|
|
205
223
|
*
|
|
206
|
-
* @generated from field: livekit.proto.NewAudioStreamRequest new_audio_stream =
|
|
224
|
+
* @generated from field: livekit.proto.NewAudioStreamRequest new_audio_stream = 25;
|
|
207
225
|
*/
|
|
208
226
|
value: NewAudioStreamRequest;
|
|
209
227
|
case: "newAudioStream";
|
|
210
228
|
} | {
|
|
211
229
|
/**
|
|
212
|
-
* @generated from field: livekit.proto.NewAudioSourceRequest new_audio_source =
|
|
230
|
+
* @generated from field: livekit.proto.NewAudioSourceRequest new_audio_source = 26;
|
|
213
231
|
*/
|
|
214
232
|
value: NewAudioSourceRequest;
|
|
215
233
|
case: "newAudioSource";
|
|
216
234
|
} | {
|
|
217
235
|
/**
|
|
218
|
-
* @generated from field: livekit.proto.CaptureAudioFrameRequest capture_audio_frame =
|
|
236
|
+
* @generated from field: livekit.proto.CaptureAudioFrameRequest capture_audio_frame = 27;
|
|
219
237
|
*/
|
|
220
238
|
value: CaptureAudioFrameRequest;
|
|
221
239
|
case: "captureAudioFrame";
|
|
222
240
|
} | {
|
|
223
241
|
/**
|
|
224
|
-
* @generated from field: livekit.proto.NewAudioResamplerRequest new_audio_resampler =
|
|
242
|
+
* @generated from field: livekit.proto.NewAudioResamplerRequest new_audio_resampler = 28;
|
|
225
243
|
*/
|
|
226
244
|
value: NewAudioResamplerRequest;
|
|
227
245
|
case: "newAudioResampler";
|
|
228
246
|
} | {
|
|
229
247
|
/**
|
|
230
|
-
* @generated from field: livekit.proto.RemixAndResampleRequest remix_and_resample =
|
|
248
|
+
* @generated from field: livekit.proto.RemixAndResampleRequest remix_and_resample = 29;
|
|
231
249
|
*/
|
|
232
250
|
value: RemixAndResampleRequest;
|
|
233
251
|
case: "remixAndResample";
|
|
234
252
|
} | {
|
|
235
253
|
/**
|
|
236
|
-
* @generated from field: livekit.proto.E2eeRequest e2ee =
|
|
254
|
+
* @generated from field: livekit.proto.E2eeRequest e2ee = 30;
|
|
237
255
|
*/
|
|
238
256
|
value: E2eeRequest;
|
|
239
257
|
case: "e2ee";
|
|
258
|
+
} | {
|
|
259
|
+
/**
|
|
260
|
+
* @generated from field: livekit.proto.AudioStreamFromParticipantRequest audio_stream_from_participant = 31;
|
|
261
|
+
*/
|
|
262
|
+
value: AudioStreamFromParticipantRequest;
|
|
263
|
+
case: "audioStreamFromParticipant";
|
|
240
264
|
} | { case: undefined; value?: undefined } = { case: undefined };
|
|
241
265
|
|
|
242
266
|
constructor(data?: PartialMessage<FfiRequest>) {
|
|
@@ -262,17 +286,21 @@ export class FfiRequest extends Message<FfiRequest> {
|
|
|
262
286
|
{ no: 14, name: "publish_sip_dtmf", kind: "message", T: PublishSipDtmfRequest, oneof: "message" },
|
|
263
287
|
{ no: 15, name: "create_video_track", kind: "message", T: CreateVideoTrackRequest, oneof: "message" },
|
|
264
288
|
{ no: 16, name: "create_audio_track", kind: "message", T: CreateAudioTrackRequest, oneof: "message" },
|
|
265
|
-
{ no: 17, name: "
|
|
266
|
-
{ no: 18, name: "
|
|
267
|
-
{ no: 19, name: "
|
|
268
|
-
{ no: 20, name: "
|
|
269
|
-
{ no: 21, name: "
|
|
270
|
-
{ no:
|
|
271
|
-
{ no:
|
|
272
|
-
{ no:
|
|
273
|
-
{ no:
|
|
274
|
-
{ no:
|
|
275
|
-
{ no:
|
|
289
|
+
{ no: 17, name: "local_track_mute", kind: "message", T: LocalTrackMuteRequest, oneof: "message" },
|
|
290
|
+
{ no: 18, name: "enable_remote_track", kind: "message", T: EnableRemoteTrackRequest, oneof: "message" },
|
|
291
|
+
{ no: 19, name: "get_stats", kind: "message", T: GetStatsRequest, oneof: "message" },
|
|
292
|
+
{ no: 20, name: "new_video_stream", kind: "message", T: NewVideoStreamRequest, oneof: "message" },
|
|
293
|
+
{ no: 21, name: "new_video_source", kind: "message", T: NewVideoSourceRequest, oneof: "message" },
|
|
294
|
+
{ no: 22, name: "capture_video_frame", kind: "message", T: CaptureVideoFrameRequest, oneof: "message" },
|
|
295
|
+
{ no: 23, name: "video_convert", kind: "message", T: VideoConvertRequest, oneof: "message" },
|
|
296
|
+
{ no: 24, name: "video_stream_from_participant", kind: "message", T: VideoStreamFromParticipantRequest, oneof: "message" },
|
|
297
|
+
{ no: 25, name: "new_audio_stream", kind: "message", T: NewAudioStreamRequest, oneof: "message" },
|
|
298
|
+
{ no: 26, name: "new_audio_source", kind: "message", T: NewAudioSourceRequest, oneof: "message" },
|
|
299
|
+
{ no: 27, name: "capture_audio_frame", kind: "message", T: CaptureAudioFrameRequest, oneof: "message" },
|
|
300
|
+
{ no: 28, name: "new_audio_resampler", kind: "message", T: NewAudioResamplerRequest, oneof: "message" },
|
|
301
|
+
{ no: 29, name: "remix_and_resample", kind: "message", T: RemixAndResampleRequest, oneof: "message" },
|
|
302
|
+
{ no: 30, name: "e2ee", kind: "message", T: E2eeRequest, oneof: "message" },
|
|
303
|
+
{ no: 31, name: "audio_stream_from_participant", kind: "message", T: AudioStreamFromParticipantRequest, oneof: "message" },
|
|
276
304
|
]);
|
|
277
305
|
|
|
278
306
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiRequest {
|
|
@@ -397,7 +425,19 @@ export class FfiResponse extends Message<FfiResponse> {
|
|
|
397
425
|
case: "createAudioTrack";
|
|
398
426
|
} | {
|
|
399
427
|
/**
|
|
400
|
-
* @generated from field: livekit.proto.
|
|
428
|
+
* @generated from field: livekit.proto.LocalTrackMuteResponse local_track_mute = 17;
|
|
429
|
+
*/
|
|
430
|
+
value: LocalTrackMuteResponse;
|
|
431
|
+
case: "localTrackMute";
|
|
432
|
+
} | {
|
|
433
|
+
/**
|
|
434
|
+
* @generated from field: livekit.proto.EnableRemoteTrackResponse enable_remote_track = 18;
|
|
435
|
+
*/
|
|
436
|
+
value: EnableRemoteTrackResponse;
|
|
437
|
+
case: "enableRemoteTrack";
|
|
438
|
+
} | {
|
|
439
|
+
/**
|
|
440
|
+
* @generated from field: livekit.proto.GetStatsResponse get_stats = 19;
|
|
401
441
|
*/
|
|
402
442
|
value: GetStatsResponse;
|
|
403
443
|
case: "getStats";
|
|
@@ -405,63 +445,75 @@ export class FfiResponse extends Message<FfiResponse> {
|
|
|
405
445
|
/**
|
|
406
446
|
* Video
|
|
407
447
|
*
|
|
408
|
-
* @generated from field: livekit.proto.NewVideoStreamResponse new_video_stream =
|
|
448
|
+
* @generated from field: livekit.proto.NewVideoStreamResponse new_video_stream = 20;
|
|
409
449
|
*/
|
|
410
450
|
value: NewVideoStreamResponse;
|
|
411
451
|
case: "newVideoStream";
|
|
412
452
|
} | {
|
|
413
453
|
/**
|
|
414
|
-
* @generated from field: livekit.proto.NewVideoSourceResponse new_video_source =
|
|
454
|
+
* @generated from field: livekit.proto.NewVideoSourceResponse new_video_source = 21;
|
|
415
455
|
*/
|
|
416
456
|
value: NewVideoSourceResponse;
|
|
417
457
|
case: "newVideoSource";
|
|
418
458
|
} | {
|
|
419
459
|
/**
|
|
420
|
-
* @generated from field: livekit.proto.CaptureVideoFrameResponse capture_video_frame =
|
|
460
|
+
* @generated from field: livekit.proto.CaptureVideoFrameResponse capture_video_frame = 22;
|
|
421
461
|
*/
|
|
422
462
|
value: CaptureVideoFrameResponse;
|
|
423
463
|
case: "captureVideoFrame";
|
|
424
464
|
} | {
|
|
425
465
|
/**
|
|
426
|
-
* @generated from field: livekit.proto.VideoConvertResponse video_convert =
|
|
466
|
+
* @generated from field: livekit.proto.VideoConvertResponse video_convert = 23;
|
|
427
467
|
*/
|
|
428
468
|
value: VideoConvertResponse;
|
|
429
469
|
case: "videoConvert";
|
|
470
|
+
} | {
|
|
471
|
+
/**
|
|
472
|
+
* @generated from field: livekit.proto.VideoStreamFromParticipantResponse video_stream_from_participant = 24;
|
|
473
|
+
*/
|
|
474
|
+
value: VideoStreamFromParticipantResponse;
|
|
475
|
+
case: "videoStreamFromParticipant";
|
|
430
476
|
} | {
|
|
431
477
|
/**
|
|
432
478
|
* Audio
|
|
433
479
|
*
|
|
434
|
-
* @generated from field: livekit.proto.NewAudioStreamResponse new_audio_stream =
|
|
480
|
+
* @generated from field: livekit.proto.NewAudioStreamResponse new_audio_stream = 25;
|
|
435
481
|
*/
|
|
436
482
|
value: NewAudioStreamResponse;
|
|
437
483
|
case: "newAudioStream";
|
|
438
484
|
} | {
|
|
439
485
|
/**
|
|
440
|
-
* @generated from field: livekit.proto.NewAudioSourceResponse new_audio_source =
|
|
486
|
+
* @generated from field: livekit.proto.NewAudioSourceResponse new_audio_source = 26;
|
|
441
487
|
*/
|
|
442
488
|
value: NewAudioSourceResponse;
|
|
443
489
|
case: "newAudioSource";
|
|
444
490
|
} | {
|
|
445
491
|
/**
|
|
446
|
-
* @generated from field: livekit.proto.CaptureAudioFrameResponse capture_audio_frame =
|
|
492
|
+
* @generated from field: livekit.proto.CaptureAudioFrameResponse capture_audio_frame = 27;
|
|
447
493
|
*/
|
|
448
494
|
value: CaptureAudioFrameResponse;
|
|
449
495
|
case: "captureAudioFrame";
|
|
450
496
|
} | {
|
|
451
497
|
/**
|
|
452
|
-
* @generated from field: livekit.proto.NewAudioResamplerResponse new_audio_resampler =
|
|
498
|
+
* @generated from field: livekit.proto.NewAudioResamplerResponse new_audio_resampler = 28;
|
|
453
499
|
*/
|
|
454
500
|
value: NewAudioResamplerResponse;
|
|
455
501
|
case: "newAudioResampler";
|
|
456
502
|
} | {
|
|
457
503
|
/**
|
|
458
|
-
* @generated from field: livekit.proto.RemixAndResampleResponse remix_and_resample =
|
|
504
|
+
* @generated from field: livekit.proto.RemixAndResampleResponse remix_and_resample = 29;
|
|
459
505
|
*/
|
|
460
506
|
value: RemixAndResampleResponse;
|
|
461
507
|
case: "remixAndResample";
|
|
462
508
|
} | {
|
|
463
509
|
/**
|
|
464
|
-
* @generated from field: livekit.proto.
|
|
510
|
+
* @generated from field: livekit.proto.AudioStreamFromParticipantResponse audio_stream_from_participant = 30;
|
|
511
|
+
*/
|
|
512
|
+
value: AudioStreamFromParticipantResponse;
|
|
513
|
+
case: "audioStreamFromParticipant";
|
|
514
|
+
} | {
|
|
515
|
+
/**
|
|
516
|
+
* @generated from field: livekit.proto.E2eeResponse e2ee = 31;
|
|
465
517
|
*/
|
|
466
518
|
value: E2eeResponse;
|
|
467
519
|
case: "e2ee";
|
|
@@ -490,17 +542,21 @@ export class FfiResponse extends Message<FfiResponse> {
|
|
|
490
542
|
{ no: 14, name: "publish_sip_dtmf", kind: "message", T: PublishSipDtmfResponse, oneof: "message" },
|
|
491
543
|
{ no: 15, name: "create_video_track", kind: "message", T: CreateVideoTrackResponse, oneof: "message" },
|
|
492
544
|
{ no: 16, name: "create_audio_track", kind: "message", T: CreateAudioTrackResponse, oneof: "message" },
|
|
493
|
-
{ no: 17, name: "
|
|
494
|
-
{ no: 18, name: "
|
|
495
|
-
{ no: 19, name: "
|
|
496
|
-
{ no: 20, name: "
|
|
497
|
-
{ no: 21, name: "
|
|
498
|
-
{ no: 22, name: "
|
|
499
|
-
{ no: 23, name: "
|
|
500
|
-
{ no: 24, name: "
|
|
501
|
-
{ no: 25, name: "
|
|
502
|
-
{ no: 26, name: "
|
|
503
|
-
{ no: 27, name: "
|
|
545
|
+
{ no: 17, name: "local_track_mute", kind: "message", T: LocalTrackMuteResponse, oneof: "message" },
|
|
546
|
+
{ no: 18, name: "enable_remote_track", kind: "message", T: EnableRemoteTrackResponse, oneof: "message" },
|
|
547
|
+
{ no: 19, name: "get_stats", kind: "message", T: GetStatsResponse, oneof: "message" },
|
|
548
|
+
{ no: 20, name: "new_video_stream", kind: "message", T: NewVideoStreamResponse, oneof: "message" },
|
|
549
|
+
{ no: 21, name: "new_video_source", kind: "message", T: NewVideoSourceResponse, oneof: "message" },
|
|
550
|
+
{ no: 22, name: "capture_video_frame", kind: "message", T: CaptureVideoFrameResponse, oneof: "message" },
|
|
551
|
+
{ no: 23, name: "video_convert", kind: "message", T: VideoConvertResponse, oneof: "message" },
|
|
552
|
+
{ no: 24, name: "video_stream_from_participant", kind: "message", T: VideoStreamFromParticipantResponse, oneof: "message" },
|
|
553
|
+
{ no: 25, name: "new_audio_stream", kind: "message", T: NewAudioStreamResponse, oneof: "message" },
|
|
554
|
+
{ no: 26, name: "new_audio_source", kind: "message", T: NewAudioSourceResponse, oneof: "message" },
|
|
555
|
+
{ no: 27, name: "capture_audio_frame", kind: "message", T: CaptureAudioFrameResponse, oneof: "message" },
|
|
556
|
+
{ no: 28, name: "new_audio_resampler", kind: "message", T: NewAudioResamplerResponse, oneof: "message" },
|
|
557
|
+
{ no: 29, name: "remix_and_resample", kind: "message", T: RemixAndResampleResponse, oneof: "message" },
|
|
558
|
+
{ no: 30, name: "audio_stream_from_participant", kind: "message", T: AudioStreamFromParticipantResponse, oneof: "message" },
|
|
559
|
+
{ no: 31, name: "e2ee", kind: "message", T: E2eeResponse, oneof: "message" },
|
|
504
560
|
]);
|
|
505
561
|
|
|
506
562
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiResponse {
|
|
@@ -21,6 +21,44 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM
|
|
|
21
21
|
import { Message, proto3 } from "@bufbuild/protobuf";
|
|
22
22
|
import { FfiOwnedHandle } from "./handle_pb.js";
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* @generated from enum livekit.proto.ParticipantKind
|
|
26
|
+
*/
|
|
27
|
+
export enum ParticipantKind {
|
|
28
|
+
/**
|
|
29
|
+
* @generated from enum value: PARTICIPANT_KIND_STANDARD = 0;
|
|
30
|
+
*/
|
|
31
|
+
STANDARD = 0,
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @generated from enum value: PARTICIPANT_KIND_INGRESS = 1;
|
|
35
|
+
*/
|
|
36
|
+
INGRESS = 1,
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @generated from enum value: PARTICIPANT_KIND_EGRESS = 2;
|
|
40
|
+
*/
|
|
41
|
+
EGRESS = 2,
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @generated from enum value: PARTICIPANT_KIND_SIP = 3;
|
|
45
|
+
*/
|
|
46
|
+
SIP = 3,
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @generated from enum value: PARTICIPANT_KIND_AGENT = 4;
|
|
50
|
+
*/
|
|
51
|
+
AGENT = 4,
|
|
52
|
+
}
|
|
53
|
+
// Retrieve enum metadata with: proto3.getEnumType(ParticipantKind)
|
|
54
|
+
proto3.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
|
|
55
|
+
{ no: 0, name: "PARTICIPANT_KIND_STANDARD" },
|
|
56
|
+
{ no: 1, name: "PARTICIPANT_KIND_INGRESS" },
|
|
57
|
+
{ no: 2, name: "PARTICIPANT_KIND_EGRESS" },
|
|
58
|
+
{ no: 3, name: "PARTICIPANT_KIND_SIP" },
|
|
59
|
+
{ no: 4, name: "PARTICIPANT_KIND_AGENT" },
|
|
60
|
+
]);
|
|
61
|
+
|
|
24
62
|
/**
|
|
25
63
|
* @generated from message livekit.proto.ParticipantInfo
|
|
26
64
|
*/
|
|
@@ -50,6 +88,11 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
|
50
88
|
*/
|
|
51
89
|
attributes: { [key: string]: string } = {};
|
|
52
90
|
|
|
91
|
+
/**
|
|
92
|
+
* @generated from field: livekit.proto.ParticipantKind kind = 6;
|
|
93
|
+
*/
|
|
94
|
+
kind = ParticipantKind.STANDARD;
|
|
95
|
+
|
|
53
96
|
constructor(data?: PartialMessage<ParticipantInfo>) {
|
|
54
97
|
super();
|
|
55
98
|
proto3.util.initPartial(data, this);
|
|
@@ -63,6 +106,7 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
|
63
106
|
{ no: 3, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
64
107
|
{ no: 4, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
|
65
108
|
{ no: 5, name: "attributes", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
|
|
109
|
+
{ no: 6, name: "kind", kind: "enum", T: proto3.getEnumType(ParticipantKind) },
|
|
66
110
|
]);
|
|
67
111
|
|
|
68
112
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantInfo {
|
package/src/proto/track_pb.ts
CHANGED
|
@@ -681,3 +681,167 @@ export class OwnedTrack extends Message<OwnedTrack> {
|
|
|
681
681
|
}
|
|
682
682
|
}
|
|
683
683
|
|
|
684
|
+
/**
|
|
685
|
+
* Mute/UnMute a track
|
|
686
|
+
*
|
|
687
|
+
* @generated from message livekit.proto.LocalTrackMuteRequest
|
|
688
|
+
*/
|
|
689
|
+
export class LocalTrackMuteRequest extends Message<LocalTrackMuteRequest> {
|
|
690
|
+
/**
|
|
691
|
+
* @generated from field: uint64 track_handle = 1;
|
|
692
|
+
*/
|
|
693
|
+
trackHandle = protoInt64.zero;
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* @generated from field: bool mute = 2;
|
|
697
|
+
*/
|
|
698
|
+
mute = false;
|
|
699
|
+
|
|
700
|
+
constructor(data?: PartialMessage<LocalTrackMuteRequest>) {
|
|
701
|
+
super();
|
|
702
|
+
proto3.util.initPartial(data, this);
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
706
|
+
static readonly typeName = "livekit.proto.LocalTrackMuteRequest";
|
|
707
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
708
|
+
{ no: 1, name: "track_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
|
|
709
|
+
{ no: 2, name: "mute", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
710
|
+
]);
|
|
711
|
+
|
|
712
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteRequest {
|
|
713
|
+
return new LocalTrackMuteRequest().fromBinary(bytes, options);
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {
|
|
717
|
+
return new LocalTrackMuteRequest().fromJson(jsonValue, options);
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteRequest {
|
|
721
|
+
return new LocalTrackMuteRequest().fromJsonString(jsonString, options);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
static equals(a: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined, b: LocalTrackMuteRequest | PlainMessage<LocalTrackMuteRequest> | undefined): boolean {
|
|
725
|
+
return proto3.util.equals(LocalTrackMuteRequest, a, b);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
/**
|
|
730
|
+
* @generated from message livekit.proto.LocalTrackMuteResponse
|
|
731
|
+
*/
|
|
732
|
+
export class LocalTrackMuteResponse extends Message<LocalTrackMuteResponse> {
|
|
733
|
+
/**
|
|
734
|
+
* @generated from field: bool muted = 1;
|
|
735
|
+
*/
|
|
736
|
+
muted = false;
|
|
737
|
+
|
|
738
|
+
constructor(data?: PartialMessage<LocalTrackMuteResponse>) {
|
|
739
|
+
super();
|
|
740
|
+
proto3.util.initPartial(data, this);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
744
|
+
static readonly typeName = "livekit.proto.LocalTrackMuteResponse";
|
|
745
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
746
|
+
{ no: 1, name: "muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
747
|
+
]);
|
|
748
|
+
|
|
749
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): LocalTrackMuteResponse {
|
|
750
|
+
return new LocalTrackMuteResponse().fromBinary(bytes, options);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {
|
|
754
|
+
return new LocalTrackMuteResponse().fromJson(jsonValue, options);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): LocalTrackMuteResponse {
|
|
758
|
+
return new LocalTrackMuteResponse().fromJsonString(jsonString, options);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
static equals(a: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined, b: LocalTrackMuteResponse | PlainMessage<LocalTrackMuteResponse> | undefined): boolean {
|
|
762
|
+
return proto3.util.equals(LocalTrackMuteResponse, a, b);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Enable/Disable a remote track
|
|
768
|
+
*
|
|
769
|
+
* @generated from message livekit.proto.EnableRemoteTrackRequest
|
|
770
|
+
*/
|
|
771
|
+
export class EnableRemoteTrackRequest extends Message<EnableRemoteTrackRequest> {
|
|
772
|
+
/**
|
|
773
|
+
* @generated from field: uint64 track_handle = 1;
|
|
774
|
+
*/
|
|
775
|
+
trackHandle = protoInt64.zero;
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* @generated from field: bool enabled = 2;
|
|
779
|
+
*/
|
|
780
|
+
enabled = false;
|
|
781
|
+
|
|
782
|
+
constructor(data?: PartialMessage<EnableRemoteTrackRequest>) {
|
|
783
|
+
super();
|
|
784
|
+
proto3.util.initPartial(data, this);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
788
|
+
static readonly typeName = "livekit.proto.EnableRemoteTrackRequest";
|
|
789
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
790
|
+
{ no: 1, name: "track_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
|
|
791
|
+
{ no: 2, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
792
|
+
]);
|
|
793
|
+
|
|
794
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackRequest {
|
|
795
|
+
return new EnableRemoteTrackRequest().fromBinary(bytes, options);
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {
|
|
799
|
+
return new EnableRemoteTrackRequest().fromJson(jsonValue, options);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackRequest {
|
|
803
|
+
return new EnableRemoteTrackRequest().fromJsonString(jsonString, options);
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
static equals(a: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined, b: EnableRemoteTrackRequest | PlainMessage<EnableRemoteTrackRequest> | undefined): boolean {
|
|
807
|
+
return proto3.util.equals(EnableRemoteTrackRequest, a, b);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/**
|
|
812
|
+
* @generated from message livekit.proto.EnableRemoteTrackResponse
|
|
813
|
+
*/
|
|
814
|
+
export class EnableRemoteTrackResponse extends Message<EnableRemoteTrackResponse> {
|
|
815
|
+
/**
|
|
816
|
+
* @generated from field: bool enabled = 1;
|
|
817
|
+
*/
|
|
818
|
+
enabled = false;
|
|
819
|
+
|
|
820
|
+
constructor(data?: PartialMessage<EnableRemoteTrackResponse>) {
|
|
821
|
+
super();
|
|
822
|
+
proto3.util.initPartial(data, this);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
826
|
+
static readonly typeName = "livekit.proto.EnableRemoteTrackResponse";
|
|
827
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
828
|
+
{ no: 1, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
829
|
+
]);
|
|
830
|
+
|
|
831
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnableRemoteTrackResponse {
|
|
832
|
+
return new EnableRemoteTrackResponse().fromBinary(bytes, options);
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {
|
|
836
|
+
return new EnableRemoteTrackResponse().fromJson(jsonValue, options);
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnableRemoteTrackResponse {
|
|
840
|
+
return new EnableRemoteTrackResponse().fromJsonString(jsonString, options);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
static equals(a: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined, b: EnableRemoteTrackResponse | PlainMessage<EnableRemoteTrackResponse> | undefined): boolean {
|
|
844
|
+
return proto3.util.equals(EnableRemoteTrackResponse, a, b);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
|
|
21
21
|
import { Message, proto3, protoInt64 } from "@bufbuild/protobuf";
|
|
22
|
+
import { TrackSource } from "./track_pb.js";
|
|
22
23
|
import { FfiOwnedHandle } from "./handle_pb.js";
|
|
23
24
|
|
|
24
25
|
/**
|
|
@@ -298,6 +299,106 @@ export class NewVideoStreamResponse extends Message<NewVideoStreamResponse> {
|
|
|
298
299
|
}
|
|
299
300
|
}
|
|
300
301
|
|
|
302
|
+
/**
|
|
303
|
+
* Request a video stream from a participant
|
|
304
|
+
*
|
|
305
|
+
* @generated from message livekit.proto.VideoStreamFromParticipantRequest
|
|
306
|
+
*/
|
|
307
|
+
export class VideoStreamFromParticipantRequest extends Message<VideoStreamFromParticipantRequest> {
|
|
308
|
+
/**
|
|
309
|
+
* @generated from field: uint64 participant_handle = 1;
|
|
310
|
+
*/
|
|
311
|
+
participantHandle = protoInt64.zero;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* @generated from field: livekit.proto.VideoStreamType type = 2;
|
|
315
|
+
*/
|
|
316
|
+
type = VideoStreamType.VIDEO_STREAM_NATIVE;
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* @generated from field: livekit.proto.TrackSource track_source = 3;
|
|
320
|
+
*/
|
|
321
|
+
trackSource = TrackSource.SOURCE_UNKNOWN;
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* @generated from field: optional livekit.proto.VideoBufferType format = 4;
|
|
325
|
+
*/
|
|
326
|
+
format?: VideoBufferType;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* @generated from field: bool normalize_stride = 5;
|
|
330
|
+
*/
|
|
331
|
+
normalizeStride = false;
|
|
332
|
+
|
|
333
|
+
constructor(data?: PartialMessage<VideoStreamFromParticipantRequest>) {
|
|
334
|
+
super();
|
|
335
|
+
proto3.util.initPartial(data, this);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
339
|
+
static readonly typeName = "livekit.proto.VideoStreamFromParticipantRequest";
|
|
340
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
341
|
+
{ no: 1, name: "participant_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */ },
|
|
342
|
+
{ no: 2, name: "type", kind: "enum", T: proto3.getEnumType(VideoStreamType) },
|
|
343
|
+
{ no: 3, name: "track_source", kind: "enum", T: proto3.getEnumType(TrackSource) },
|
|
344
|
+
{ no: 4, name: "format", kind: "enum", T: proto3.getEnumType(VideoBufferType), opt: true },
|
|
345
|
+
{ no: 5, name: "normalize_stride", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
|
346
|
+
]);
|
|
347
|
+
|
|
348
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantRequest {
|
|
349
|
+
return new VideoStreamFromParticipantRequest().fromBinary(bytes, options);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {
|
|
353
|
+
return new VideoStreamFromParticipantRequest().fromJson(jsonValue, options);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantRequest {
|
|
357
|
+
return new VideoStreamFromParticipantRequest().fromJsonString(jsonString, options);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
static equals(a: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined, b: VideoStreamFromParticipantRequest | PlainMessage<VideoStreamFromParticipantRequest> | undefined): boolean {
|
|
361
|
+
return proto3.util.equals(VideoStreamFromParticipantRequest, a, b);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* @generated from message livekit.proto.VideoStreamFromParticipantResponse
|
|
367
|
+
*/
|
|
368
|
+
export class VideoStreamFromParticipantResponse extends Message<VideoStreamFromParticipantResponse> {
|
|
369
|
+
/**
|
|
370
|
+
* @generated from field: livekit.proto.OwnedVideoStream stream = 1;
|
|
371
|
+
*/
|
|
372
|
+
stream?: OwnedVideoStream;
|
|
373
|
+
|
|
374
|
+
constructor(data?: PartialMessage<VideoStreamFromParticipantResponse>) {
|
|
375
|
+
super();
|
|
376
|
+
proto3.util.initPartial(data, this);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
static readonly runtime: typeof proto3 = proto3;
|
|
380
|
+
static readonly typeName = "livekit.proto.VideoStreamFromParticipantResponse";
|
|
381
|
+
static readonly fields: FieldList = proto3.util.newFieldList(() => [
|
|
382
|
+
{ no: 1, name: "stream", kind: "message", T: OwnedVideoStream },
|
|
383
|
+
]);
|
|
384
|
+
|
|
385
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VideoStreamFromParticipantResponse {
|
|
386
|
+
return new VideoStreamFromParticipantResponse().fromBinary(bytes, options);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {
|
|
390
|
+
return new VideoStreamFromParticipantResponse().fromJson(jsonValue, options);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VideoStreamFromParticipantResponse {
|
|
394
|
+
return new VideoStreamFromParticipantResponse().fromJsonString(jsonString, options);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
static equals(a: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined, b: VideoStreamFromParticipantResponse | PlainMessage<VideoStreamFromParticipantResponse> | undefined): boolean {
|
|
398
|
+
return proto3.util.equals(VideoStreamFromParticipantResponse, a, b);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
301
402
|
/**
|
|
302
403
|
* Create a new VideoSource
|
|
303
404
|
* VideoSource is used to send video frame to a track
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
export interface TranscriptionSegment {
|
|
5
|
+
id: string;
|
|
6
|
+
text: string;
|
|
7
|
+
startTime: bigint;
|
|
8
|
+
endTime: bigint;
|
|
9
|
+
language: string;
|
|
10
|
+
final: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface Transcription {
|
|
14
|
+
participantIdentity: string;
|
|
15
|
+
trackSid: string;
|
|
16
|
+
segments: TranscriptionSegment[];
|
|
17
|
+
}
|