@elevenlabs/convai-widget-embed 0.14.2 → 0.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(){function e(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function t(t,n=`Expected a JSON object`){if(!e(t))throw Error(n)}async function n(t){try{let n=await t.json();if(!e(n))return t.statusText||`Unknown error`;let r=n.detail,i=e(r)?r.message:r;if(typeof i==`string`)return i}catch(e){console.warn(`Failed to parse API error response as JSON:`,e)}return t.statusText||`Unknown error`}var r=class extends Error{closeCode;closeReason;constructor(e,t){super(e),this.name=`SessionConnectionError`,this.closeCode=t?.closeCode,this.closeReason=t?.closeReason}},i=`https://api.elevenlabs.io`,a={reason:`agent`,context:{type:`end_call`,reason:`Agent ended the call`}};function o(e){let{textOnly:t}=e.overrides?.conversation??{},{textOnly:n}=e;if(typeof n==`boolean`)return typeof t==`boolean`&&n!==t&&console.warn(`Conflicting textOnly options provided: ${n} via options.textOnly (will be used) and ${t} via options.overrides.conversation.textOnly (will be ignored)`),n;if(typeof t==`boolean`)return t}var s=class{options;connection;lastInterruptTimestamp=0;mode=`listening`;status=`connecting`;volume=1;currentEventId=1;lastFeedbackEventId=0;canSendFeedback=!1;static getFullOptions(e){let t=o(e);return{clientTools:{},onConnect:()=>{},onDebug:()=>{},onDisconnect:()=>{},onError:()=>{},onMessage:()=>{},onAudio:()=>{},onModeChange:()=>{},onStatusChange:()=>{},onCanSendFeedbackChange:()=>{},onInterruption:()=>{},onAgentResponseCorrection:()=>{},onAgentTyping:()=>{},onExternalAgentConnected:()=>{},...e,textOnly:t,overrides:{...e.overrides,conversation:{...e.overrides?.conversation,textOnly:t}}}}constructor(e,t){this.options=e,this.connection=t,this.connection.onMessage(this.onMessage),this.connection.onDisconnect(this.endSessionWithDetails),this.connection.onModeChange(e=>this.updateMode(e))}markConnected(){this.updateStatus(`connected`)}endSession(){return this.endSessionWithDetails({reason:`user`})}endSessionWithDetails=async e=>{this.status!==`connected`&&this.status!==`connecting`||(this.updateStatus(`disconnecting`),await this.handleEndSession(),this.updateStatus(`disconnected`),this.options.onDisconnect&&this.options.onDisconnect(e))};async handleEndSession(){this.connection.close()}updateMode(e){e!==this.mode&&(this.mode=e,this.options.onModeChange&&this.options.onModeChange({mode:e}))}updateStatus(e){e!==this.status&&(this.status=e,this.options.onStatusChange&&this.options.onStatusChange({status:e}))}updateCanSendFeedback(){let e=this.currentEventId!==this.lastFeedbackEventId;this.canSendFeedback!==e&&(this.canSendFeedback=e,this.options.onCanSendFeedbackChange&&this.options.onCanSendFeedbackChange({canSendFeedback:e}))}handleInterruption(e){e.interruption_event&&(this.lastInterruptTimestamp=e.interruption_event.event_id,this.options.onInterruption&&this.options.onInterruption({event_id:e.interruption_event.event_id}))}handleAgentResponse(e){this.options.onMessage&&this.options.onMessage({source:`ai`,role:`agent`,message:e.agent_response_event.agent_response,event_id:e.agent_response_event.event_id})}handleAgentResponseCorrection(e){this.options.onAgentResponseCorrection&&this.options.onAgentResponseCorrection(e.agent_response_correction_event)}handleUserTranscript(e){this.options.onMessage&&this.options.onMessage({source:`user`,role:`user`,message:e.user_transcription_event.user_transcript,event_id:e.user_transcription_event.event_id})}handleTentativeAgentResponse(e){this.options.onDebug&&this.options.onDebug({type:`tentative_agent_response`,response:e.tentative_agent_response_internal_event.tentative_agent_response})}handleVadScore(e){this.options.onVadScore&&this.options.onVadScore({vadScore:e.vad_score_event.vad_score})}async handleClientToolCall(e){if(Object.prototype.hasOwnProperty.call(this.options.clientTools,e.client_tool_call.tool_name))try{let t=await this.options.clientTools[e.client_tool_call.tool_name](e.client_tool_call.parameters)??`Client tool execution successful.`,n=typeof t==`object`?JSON.stringify(t):String(t);this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:n,is_error:!1})}catch(t){this.onError(`Client tool execution failed with following error: ${t?.message}`,{clientToolName:e.client_tool_call.tool_name}),this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:`Client tool execution failed: ${t?.message}`,is_error:!0})}else{if(this.options.onUnhandledClientToolCall){this.options.onUnhandledClientToolCall(e.client_tool_call);return}this.onError(`Client tool with name ${e.client_tool_call.tool_name} is not defined on client`,{clientToolName:e.client_tool_call.tool_name}),this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:`Client tool with name ${e.client_tool_call.tool_name} is not defined on client`,is_error:!0})}}handleAudio(e){}handleMCPToolCall(e){this.options.onMCPToolCall&&this.options.onMCPToolCall(e.mcp_tool_call)}handleMCPConnectionStatus(e){this.options.onMCPConnectionStatus&&this.options.onMCPConnectionStatus(e.mcp_connection_status)}handleAgentToolRequest(e){this.options.onAgentToolRequest&&this.options.onAgentToolRequest(e.agent_tool_request)}handleAgentToolResponse(e){e.agent_tool_response.tool_name===`end_call`&&this.endSessionWithDetails(a).catch(e=>{this.onError(`Failed to end session after agent end_call`,e)}),this.options.onAgentToolResponse?.(e.agent_tool_response)}handleAgentToolResponseFullPayload(e){e.agent_tool_response_full_payload.tool_name===`end_call`&&this.endSessionWithDetails(a).catch(e=>{this.onError(`Failed to end session after agent end_call`,e)}),this.options.onAgentToolResponse?.(e.agent_tool_response_full_payload)}handleConversationMetadata(e){this.options.onConversationMetadata&&this.options.onConversationMetadata(e.conversation_initiation_metadata_event)}handleAsrInitiationMetadata(e){this.options.onAsrInitiationMetadata&&this.options.onAsrInitiationMetadata(e.asr_initiation_metadata_event)}handleAgentChatResponsePart(e){this.options.onAgentChatResponsePart&&this.options.onAgentChatResponsePart(e.text_response_part)}handleGuardrailTriggered(e){this.options.onGuardrailTriggered&&this.options.onGuardrailTriggered()}handleAgentTyping(e){this.options.onAgentTyping&&this.options.onAgentTyping(e.agent_typing_event)}handleExternalAgentConnected(e){this.options.onExternalAgentConnected&&this.options.onExternalAgentConnected()}handleErrorEvent(e){let t=e.error_event.error_type,n=e.error_event.message||e.error_event.reason||`Unknown error`;if(t===`max_duration_exceeded`){this.endSessionWithDetails({reason:`error`,message:n,context:{type:`max_duration_exceeded`}}).catch(e=>{this.onError(`Failed to end session after max_duration_exceeded`,e)});return}this.onError(`Server error: ${n}`,{errorType:t,code:e.error_event.code,debugMessage:e.error_event.debug_message,details:e.error_event.details})}onMessage=async e=>{switch(e.type){case`interruption`:this.handleInterruption(e);return;case`agent_response`:this.handleAgentResponse(e);return;case`agent_response_correction`:this.handleAgentResponseCorrection(e);return;case`user_transcript`:this.handleUserTranscript(e);return;case`internal_tentative_agent_response`:this.handleTentativeAgentResponse(e);return;case`client_tool_call`:try{await this.handleClientToolCall(e)}catch(t){this.onError(`Unexpected error in client tool call handling: ${t instanceof Error?t.message:String(t)}`,{clientToolName:e.client_tool_call.tool_name,toolCallId:e.client_tool_call.tool_call_id})}return;case`audio`:this.handleAudio(e);return;case`vad_score`:this.handleVadScore(e);return;case`ping`:this.connection.sendMessage({type:`pong`,event_id:e.ping_event.event_id});return;case`mcp_tool_call`:this.handleMCPToolCall(e);return;case`mcp_connection_status`:this.handleMCPConnectionStatus(e);return;case`agent_tool_request`:this.handleAgentToolRequest(e);return;case`agent_tool_response`:this.handleAgentToolResponse(e);return;case`agent_tool_response_full_payload`:this.handleAgentToolResponseFullPayload(e);return;case`conversation_initiation_metadata`:this.handleConversationMetadata(e);return;case`asr_initiation_metadata`:this.handleAsrInitiationMetadata(e);return;case`agent_chat_response_part`:this.handleAgentChatResponsePart(e);return;case`guardrail_triggered`:this.handleGuardrailTriggered(e);return;case`error`:this.handleErrorEvent(e);return;case`agent_typing`:this.handleAgentTyping(e);return;case`external_agent_connected`:this.handleExternalAgentConnected(e);return;default:this.options.onDebug&&this.options.onDebug(e);return}};onError(e,t){console.error(e,t),this.options.onError&&this.options.onError(e,t)}getId(){return this.connection.conversationId}isOpen(){return this.status===`connected`}sendFeedback(e){if(!this.canSendFeedback){console.warn(this.lastFeedbackEventId===0?`Cannot send feedback: the conversation has not started yet.`:`Cannot send feedback: feedback has already been sent for the current response.`);return}this.connection.sendMessage({type:`feedback`,score:e?`like`:`dislike`,event_id:this.currentEventId}),this.lastFeedbackEventId=this.currentEventId,this.updateCanSendFeedback()}sendContextualUpdate(e,t){this.connection.sendMessage({type:`contextual_update`,text:e,...t?.contextId?{context_id:t.contextId}:{}})}sendUserMessage(e){this.connection.sendMessage({type:`user_message`,text:e})}sendUserActivity(){this.connection.sendMessage({type:`user_activity`})}sendMCPToolApprovalResult(e,t){this.connection.sendMessage({type:`mcp_tool_approval_result`,tool_call_id:e,is_approved:t})}sendMultimodalMessage(e){this.connection.sendMessage({type:`multimodal_message`,text:e.text?{type:`user_message`,text:e.text}:void 0,file:e.fileId?{type:`file_input`,file_id:e.fileId}:void 0})}async uploadFile(e){let r=(this.options.origin??i).replace(/^wss:\/\//,`https://`).replace(/^ws:\/\//,`http://`),a=`name`in e&&typeof e.name==`string`?e.name:`upload.${(e.type||`image/png`).split(`/`).pop()?.split(`+`)[0]}`,o=new FormData;o.append(`file`,e,a);let s=await fetch(`${r}/v1/convai/conversations/${this.connection.conversationId}/files`,{method:`POST`,body:o});if(!s.ok){let e=await n(s);throw Error(`Upload failed: ${s.status} ${e}`)}let c=await s.json();t(c,`Upload response is not a JSON object`);let{file_id:l}=c;if(typeof l!=`string`||!l)throw Error(`Upload response is missing a valid file_id`);return{fileId:l}}},c=Object.freeze({name:`js_sdk`,version:`1.11.1`});function l(e){c=Object.freeze(e)}var u=class{queue=[];disconnectionDetails=null;onDisconnectCallback=null;onMessageCallback=null;onModeChangeCallback=null;onDebug;constructor(e={}){this.onDebug=e.onDebug}debug(e){this.onDebug&&this.onDebug(e)}onMessage(e){this.onMessageCallback=e;let t=this.queue;this.queue=[],t.length>0&&queueMicrotask(()=>{t.forEach(e)})}onDisconnect(e){this.onDisconnectCallback=e;let t=this.disconnectionDetails;t&&queueMicrotask(()=>{e(t)})}onModeChange(e){this.onModeChangeCallback=e}updateMode(e){this.onModeChangeCallback?.(e)}disconnect(e){this.disconnectionDetails||(this.disconnectionDetails=e,this.onDisconnectCallback?.(e))}handleMessage(e){this.onMessageCallback?this.onMessageCallback(e):this.queue.push(e)}};function d(e){let[t,n]=e.split(`_`);if(![`pcm`,`ulaw`].includes(t))throw Error(`Invalid format: ${e}`);let r=Number.parseInt(n);if(Number.isNaN(r))throw Error(`Invalid sample rate: ${n}`);return{format:t,sampleRate:r}}function f(e){return!!e.type}function p(e,t){return t.forEach(function(t){t&&typeof t!=`string`&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if(n!==`default`&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}var m=Object.defineProperty,h=(e,t,n)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t,n)=>h(e,typeof t==`symbol`?t:t+``,n),_=class{constructor(){g(this,`_locking`),g(this,`_locks`),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e,t=new Promise(t=>e=()=>{--this._locks,t()}),n=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),n}};function v(e,t){if(!e)throw Error(t)}var y=34028234663852886e22,b=-34028234663852886e22,x=4294967295,S=2147483647,C=-2147483648;function w(e){if(typeof e!=`number`)throw Error(`invalid int 32: `+typeof e);if(!Number.isInteger(e)||e>S||e<C)throw Error(`invalid int 32: `+e)}function T(e){if(typeof e!=`number`)throw Error(`invalid uint 32: `+typeof e);if(!Number.isInteger(e)||e>x||e<0)throw Error(`invalid uint 32: `+e)}function ee(e){if(typeof e!=`number`)throw Error(`invalid float 32: `+typeof e);if(Number.isFinite(e)&&(e>y||e<b))throw Error(`invalid float 32: `+e)}var te=Symbol(`@bufbuild/protobuf/enum-type`);function ne(e){let t=e[te];return v(t,`missing enum type on enum object`),t}function re(e,t,n,r){e[te]=ie(t,n.map(t=>({no:t.no,name:t.name,localName:e[t.no]})))}function ie(e,t,n){let r=Object.create(null),i=Object.create(null),a=[];for(let e of t){let t=oe(e);a.push(t),r[e.name]=t,i[e.no]=t}return{typeName:e,values:a,findName(e){return r[e]},findNumber(e){return i[e]}}}function ae(e,t,n){let r={};for(let e of t){let t=oe(e);r[t.localName]=t.no,r[t.no]=t.localName}return re(r,e,t),r}function oe(e){return`localName`in e?e:Object.assign(Object.assign({},e),{localName:e.name})}var se=class{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){let n=this.getType().runtime.bin,r=n.makeReadOptions(t);return n.readMessage(this,r.readerFactory(e),e.byteLength,r),this}fromJson(e,t){let n=this.getType(),r=n.runtime.json,i=r.makeReadOptions(t);return r.readMessage(n,e,i,this),this}fromJsonString(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`cannot decode ${this.getType().typeName} from JSON: ${e instanceof Error?e.message:String(e)}`)}return this.fromJson(n,t)}toBinary(e){let t=this.getType().runtime.bin,n=t.makeWriteOptions(e),r=n.writerFactory();return t.writeMessage(this,r,n),r.finish()}toJson(e){let t=this.getType().runtime.json,n=t.makeWriteOptions(e);return t.writeMessage(this,n)}toJsonString(e){let t=this.toJson(e);return JSON.stringify(t,null,e?.prettySpaces??0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}};function E(e,t,n,r){let i=r?.localName??t.substring(t.lastIndexOf(`.`)+1),a={[i]:function(t){e.util.initFields(this),e.util.initPartial(t,this)}}[i];return Object.setPrototypeOf(a.prototype,new se),Object.assign(a,{runtime:e,typeName:t,fields:e.util.newFieldList(n),fromBinary(e,t){return new a().fromBinary(e,t)},fromJson(e,t){return new a().fromJson(e,t)},fromJsonString(e,t){return new a().fromJsonString(e,t)},equals(t,n){return e.util.equals(a,t,n)}}),a}function ce(){let e=0,t=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<n,!(r&128))return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(n&15)<<28,t=(n&112)>>4,!(n&128))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(t|=(r&127)<<n,!(r&128))return this.assertBounds(),[e,t]}throw Error(`invalid varint`)}function le(e,t,n){for(let r=0;r<28;r+=7){let i=e>>>r,a=!(!(i>>>7)&&t==0),o=(a?i|128:i)&255;if(n.push(o),!a)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),i){for(let e=3;e<31;e+=7){let r=t>>>e,i=!!(r>>>7),a=(i?r|128:r)&255;if(n.push(a),!i)return}n.push(t>>>31&1)}}var ue=4294967296;function de(e){let t=e[0]===`-`;t&&(e=e.slice(1));let n=1e6,r=0,i=0;function a(t,a){let o=Number(e.slice(t,a));i*=n,r=r*n+o,r>=ue&&(i+=r/ue|0,r%=ue)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?ge(r,i):he(r,i)}function fe(e,t){let n=he(e,t),r=n.hi&2147483648;r&&(n=ge(n.lo,n.hi));let i=pe(n.lo,n.hi);return r?`-`+i:i}function pe(e,t){if({lo:e,hi:t}=me(e,t),t<=2097151)return String(ue*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+_e(o)+_e(a)}function me(e,t){return{lo:e>>>0,hi:t>>>0}}function he(e,t){return{lo:e|0,hi:t|0}}function ge(e,t){return t=~t,e?e=~e+1:t+=1,he(e,t)}var _e=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function ve(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e>>=7;t.push(1)}}function ye(){let e=this.buf[this.pos++],t=e&127;if(!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}function be(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(typeof process!=`object`||typeof process.env!=`object`||process.env.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||r<t)throw Error(`int64 invalid: ${e}`);return r},uParse(e){let t=typeof e==`bigint`?e:BigInt(e);if(t>i||t<r)throw Error(`uint64 invalid: ${e}`);return t},enc(t){return e.setBigInt64(0,this.parse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(t){return e.setBigInt64(0,this.uParse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(t,n){return e.setInt32(0,t,!0),e.setInt32(4,n,!0),e.getBigInt64(0,!0)},uDec(t,n){return e.setInt32(0,t,!0),e.setInt32(4,n,!0),e.getBigUint64(0,!0)}}}let t=e=>v(/^-?[0-9]+$/.test(e),`int64 invalid: ${e}`),n=e=>v(/^[0-9]+$/.test(e),`uint64 invalid: ${e}`);return{zero:`0`,supported:!1,parse(e){return typeof e!=`string`&&(e=e.toString()),t(e),e},uParse(e){return typeof e!=`string`&&(e=e.toString()),n(e),e},enc(e){return typeof e!=`string`&&(e=e.toString()),t(e),de(e)},uEnc(e){return typeof e!=`string`&&(e=e.toString()),n(e),de(e)},dec(e,t){return fe(e,t)},uDec(e,t){return pe(e,t)}}}var xe=be(),D;(function(e){e[e.DOUBLE=1]=`DOUBLE`,e[e.FLOAT=2]=`FLOAT`,e[e.INT64=3]=`INT64`,e[e.UINT64=4]=`UINT64`,e[e.INT32=5]=`INT32`,e[e.FIXED64=6]=`FIXED64`,e[e.FIXED32=7]=`FIXED32`,e[e.BOOL=8]=`BOOL`,e[e.STRING=9]=`STRING`,e[e.BYTES=12]=`BYTES`,e[e.UINT32=13]=`UINT32`,e[e.SFIXED32=15]=`SFIXED32`,e[e.SFIXED64=16]=`SFIXED64`,e[e.SINT32=17]=`SINT32`,e[e.SINT64=18]=`SINT64`})(D||={});var Se;(function(e){e[e.BIGINT=0]=`BIGINT`,e[e.STRING=1]=`STRING`})(Se||={});function Ce(e,t,n){if(t===n)return!0;if(e==D.BYTES){if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array)||t.length!==n.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!1;return!0}switch(e){case D.UINT64:case D.FIXED64:case D.INT64:case D.SFIXED64:case D.SINT64:return t==n}return!1}function we(e,t){switch(e){case D.BOOL:return!1;case D.UINT64:case D.FIXED64:case D.INT64:case D.SFIXED64:case D.SINT64:return t==0?xe.zero:`0`;case D.DOUBLE:case D.FLOAT:return 0;case D.BYTES:return new Uint8Array;case D.STRING:return``;default:return 0}}function Te(e,t){switch(e){case D.BOOL:return t===!1;case D.STRING:return t===``;case D.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return t==0}}var Ee;(function(e){e[e.Varint=0]=`Varint`,e[e.Bit64=1]=`Bit64`,e[e.LengthDelimited=2]=`LengthDelimited`,e[e.StartGroup=3]=`StartGroup`,e[e.EndGroup=4]=`EndGroup`,e[e.Bit32=5]=`Bit32`})(Ee||={});var De=class{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),n=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],n),n+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw Error(`invalid state, fork stack empty`);return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(T(e);e>127;)this.buf.push(e&127|128),e>>>=7;return this.buf.push(e),this}int32(e){return w(e),ve(e,this.buf),this}bool(e){return this.buf.push(+!!e),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){ee(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){T(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){w(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return w(e),e=(e<<1^e>>31)>>>0,ve(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=xe.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=xe.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=xe.enc(e);return le(t.lo,t.hi,this.buf),this}sint64(e){let t=xe.enc(e),n=t.hi>>31;return le(t.lo<<1^n,(t.hi<<1|t.lo>>>31)^n,this.buf),this}uint64(e){let t=xe.uEnc(e);return le(t.lo,t.hi,this.buf),this}},Oe=class{constructor(e,t){this.varint64=ce,this.uint32=ye,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,n=e&7;if(t<=0||n<0||n>5)throw Error(`illegal tag: field no `+t+` wire type `+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case Ee.Varint:for(;this.buf[this.pos++]&128;);break;case Ee.Bit64:this.pos+=4;case Ee.Bit32:this.pos+=4;break;case Ee.LengthDelimited:let n=this.uint32();this.pos+=n;break;case Ee.StartGroup:for(;;){let[e,n]=this.tag();if(n===Ee.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(n,e)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return xe.dec(...this.varint64())}uint64(){return xe.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,xe.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return xe.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return xe.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}};function ke(e,t,n,r){let i;return{typeName:t,extendee:n,get field(){if(!i){let n=typeof r==`function`?r():r;n.name=t.split(`.`).pop(),n.jsonName=`[${t}]`,i=e.util.newFieldList([n]).list()[0]}return i},runtime:e}}function Ae(e){let t=e.field.localName,n=Object.create(null);return n[t]=je(e),[n,()=>n[t]]}function je(e){let t=e.field;if(t.repeated)return[];if(t.default!==void 0)return t.default;switch(t.kind){case`enum`:return t.T.values[0].no;case`scalar`:return we(t.T,t.L);case`message`:let e=t.T,n=new e;return e.fieldWrapper?e.fieldWrapper.unwrapField(n):n;case`map`:throw`map fields are not allowed to be extensions`}}function Me(e,t){if(!t.repeated&&(t.kind==`enum`||t.kind==`scalar`)){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.no)return[e[n]];return[]}return e.filter(e=>e.no===t.no)}var Ne=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.split(``),Pe=[];for(let e=0;e<Ne.length;e++)Pe[Ne[e].charCodeAt(0)]=e;Pe[45]=Ne.indexOf(`+`),Pe[95]=Ne.indexOf(`/`);var Fe={dec(e){let t=e.length*3/4;e[e.length-2]==`=`?t-=2:e[e.length-1]==`=`&&--t;let n=new Uint8Array(t),r=0,i=0,a,o=0;for(let t=0;t<e.length;t++){if(a=Pe[e.charCodeAt(t)],a===void 0)switch(e[t]){case`=`:i=0;case`
1
+ (function(){function e(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function t(t,n=`Expected a JSON object`){if(!e(t))throw Error(n)}async function n(t){try{let n=await t.json();if(!e(n))return t.statusText||`Unknown error`;let r=n.detail,i=e(r)?r.message:r;if(typeof i==`string`)return i}catch(e){console.warn(`Failed to parse API error response as JSON:`,e)}return t.statusText||`Unknown error`}var r=class extends Error{closeCode;closeReason;constructor(e,t){super(e),this.name=`SessionConnectionError`,this.closeCode=t?.closeCode,this.closeReason=t?.closeReason}},i=`https://api.elevenlabs.io`,a={reason:`agent`,context:{type:`end_call`,reason:`Agent ended the call`}};function o(e){let{textOnly:t}=e.overrides?.conversation??{},{textOnly:n}=e;if(typeof n==`boolean`)return typeof t==`boolean`&&n!==t&&console.warn(`Conflicting textOnly options provided: ${n} via options.textOnly (will be used) and ${t} via options.overrides.conversation.textOnly (will be ignored)`),n;if(typeof t==`boolean`)return t}var s=class{options;connection;lastInterruptTimestamp=0;mode=`listening`;status=`connecting`;volume=1;currentEventId=1;lastFeedbackEventId=0;canSendFeedback=!1;static getFullOptions(e){let t=o(e);return{clientTools:{},onConnect:()=>{},onDebug:()=>{},onDisconnect:()=>{},onError:()=>{},onMessage:()=>{},onAudio:()=>{},onModeChange:()=>{},onStatusChange:()=>{},onCanSendFeedbackChange:()=>{},onInterruption:()=>{},onAgentResponseCorrection:()=>{},onAgentTyping:()=>{},onExternalAgentConnected:()=>{},...e,textOnly:t,overrides:{...e.overrides,conversation:{...e.overrides?.conversation,textOnly:t}}}}constructor(e,t){this.options=e,this.connection=t,this.connection.onMessage(this.onMessage),this.connection.onDisconnect(this.endSessionWithDetails),this.connection.onModeChange(e=>this.updateMode(e))}markConnected(){this.updateStatus(`connected`)}endSession(){return this.endSessionWithDetails({reason:`user`})}endSessionWithDetails=async e=>{this.status!==`connected`&&this.status!==`connecting`||(this.updateStatus(`disconnecting`),await this.handleEndSession(),this.updateStatus(`disconnected`),this.options.onDisconnect&&this.options.onDisconnect(e))};async handleEndSession(){this.connection.close()}updateMode(e){e!==this.mode&&(this.mode=e,this.options.onModeChange&&this.options.onModeChange({mode:e}))}updateStatus(e){e!==this.status&&(this.status=e,this.options.onStatusChange&&this.options.onStatusChange({status:e}))}updateCanSendFeedback(){let e=this.currentEventId!==this.lastFeedbackEventId;this.canSendFeedback!==e&&(this.canSendFeedback=e,this.options.onCanSendFeedbackChange&&this.options.onCanSendFeedbackChange({canSendFeedback:e}))}handleInterruption(e){e.interruption_event&&(this.lastInterruptTimestamp=e.interruption_event.event_id,this.options.onInterruption&&this.options.onInterruption({event_id:e.interruption_event.event_id}))}handleAgentResponse(e){this.options.onMessage&&this.options.onMessage({source:`ai`,role:`agent`,message:e.agent_response_event.agent_response,event_id:e.agent_response_event.event_id})}handleAgentResponseCorrection(e){this.options.onAgentResponseCorrection&&this.options.onAgentResponseCorrection(e.agent_response_correction_event)}handleUserTranscript(e){this.options.onMessage&&this.options.onMessage({source:`user`,role:`user`,message:e.user_transcription_event.user_transcript,event_id:e.user_transcription_event.event_id})}handleTentativeAgentResponse(e){this.options.onDebug&&this.options.onDebug({type:`tentative_agent_response`,response:e.tentative_agent_response_internal_event.tentative_agent_response})}handleVadScore(e){this.options.onVadScore&&this.options.onVadScore({vadScore:e.vad_score_event.vad_score})}async handleClientToolCall(e){if(Object.prototype.hasOwnProperty.call(this.options.clientTools,e.client_tool_call.tool_name))try{let t=await this.options.clientTools[e.client_tool_call.tool_name](e.client_tool_call.parameters)??`Client tool execution successful.`,n=typeof t==`object`?JSON.stringify(t):String(t);this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:n,is_error:!1})}catch(t){this.onError(`Client tool execution failed with following error: ${t?.message}`,{clientToolName:e.client_tool_call.tool_name}),this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:`Client tool execution failed: ${t?.message}`,is_error:!0})}else{if(this.options.onUnhandledClientToolCall){this.options.onUnhandledClientToolCall(e.client_tool_call);return}this.onError(`Client tool with name ${e.client_tool_call.tool_name} is not defined on client`,{clientToolName:e.client_tool_call.tool_name}),this.connection.sendMessage({type:`client_tool_result`,tool_call_id:e.client_tool_call.tool_call_id,result:`Client tool with name ${e.client_tool_call.tool_name} is not defined on client`,is_error:!0})}}handleAudio(e){}handleMCPToolCall(e){this.options.onMCPToolCall&&this.options.onMCPToolCall(e.mcp_tool_call)}handleMCPConnectionStatus(e){this.options.onMCPConnectionStatus&&this.options.onMCPConnectionStatus(e.mcp_connection_status)}handleAgentToolRequest(e){this.options.onAgentToolRequest&&this.options.onAgentToolRequest(e.agent_tool_request)}handleAgentToolResponse(e){e.agent_tool_response.tool_name===`end_call`&&this.endSessionWithDetails(a).catch(e=>{this.onError(`Failed to end session after agent end_call`,e)}),this.options.onAgentToolResponse?.(e.agent_tool_response)}handleAgentToolResponseFullPayload(e){e.agent_tool_response_full_payload.tool_name===`end_call`&&this.endSessionWithDetails(a).catch(e=>{this.onError(`Failed to end session after agent end_call`,e)}),this.options.onAgentToolResponse?.(e.agent_tool_response_full_payload)}handleConversationMetadata(e){this.options.onConversationMetadata&&this.options.onConversationMetadata(e.conversation_initiation_metadata_event)}handleAsrInitiationMetadata(e){this.options.onAsrInitiationMetadata&&this.options.onAsrInitiationMetadata(e.asr_initiation_metadata_event)}handleAgentChatResponsePart(e){this.options.onAgentChatResponsePart&&this.options.onAgentChatResponsePart(e.text_response_part)}handleGuardrailTriggered(e){this.options.onGuardrailTriggered&&this.options.onGuardrailTriggered()}handleAgentTyping(e){this.options.onAgentTyping&&this.options.onAgentTyping(e.agent_typing_event)}handleExternalAgentConnected(e){this.options.onExternalAgentConnected&&this.options.onExternalAgentConnected()}handleErrorEvent(e){let t=e.error_event.error_type,n=e.error_event.message||e.error_event.reason||`Unknown error`;if(t===`max_duration_exceeded`){this.endSessionWithDetails({reason:`error`,message:n,context:{type:`max_duration_exceeded`}}).catch(e=>{this.onError(`Failed to end session after max_duration_exceeded`,e)});return}this.onError(`Server error: ${n}`,{errorType:t,code:e.error_event.code,debugMessage:e.error_event.debug_message,details:e.error_event.details})}onMessage=async e=>{switch(e.type){case`interruption`:this.handleInterruption(e);return;case`agent_response`:this.handleAgentResponse(e);return;case`agent_response_correction`:this.handleAgentResponseCorrection(e);return;case`user_transcript`:this.handleUserTranscript(e);return;case`internal_tentative_agent_response`:this.handleTentativeAgentResponse(e);return;case`client_tool_call`:try{await this.handleClientToolCall(e)}catch(t){this.onError(`Unexpected error in client tool call handling: ${t instanceof Error?t.message:String(t)}`,{clientToolName:e.client_tool_call.tool_name,toolCallId:e.client_tool_call.tool_call_id})}return;case`audio`:this.handleAudio(e);return;case`vad_score`:this.handleVadScore(e);return;case`ping`:this.connection.sendMessage({type:`pong`,event_id:e.ping_event.event_id});return;case`mcp_tool_call`:this.handleMCPToolCall(e);return;case`mcp_connection_status`:this.handleMCPConnectionStatus(e);return;case`agent_tool_request`:this.handleAgentToolRequest(e);return;case`agent_tool_response`:this.handleAgentToolResponse(e);return;case`agent_tool_response_full_payload`:this.handleAgentToolResponseFullPayload(e);return;case`conversation_initiation_metadata`:this.handleConversationMetadata(e);return;case`asr_initiation_metadata`:this.handleAsrInitiationMetadata(e);return;case`agent_chat_response_part`:this.handleAgentChatResponsePart(e);return;case`guardrail_triggered`:this.handleGuardrailTriggered(e);return;case`error`:this.handleErrorEvent(e);return;case`agent_typing`:this.handleAgentTyping(e);return;case`external_agent_connected`:this.handleExternalAgentConnected(e);return;default:this.options.onDebug&&this.options.onDebug(e);return}};onError(e,t){console.error(e,t),this.options.onError&&this.options.onError(e,t)}getId(){return this.connection.conversationId}isOpen(){return this.status===`connected`}sendFeedback(e){if(!this.canSendFeedback){console.warn(this.lastFeedbackEventId===0?`Cannot send feedback: the conversation has not started yet.`:`Cannot send feedback: feedback has already been sent for the current response.`);return}this.connection.sendMessage({type:`feedback`,score:e?`like`:`dislike`,event_id:this.currentEventId}),this.lastFeedbackEventId=this.currentEventId,this.updateCanSendFeedback()}sendContextualUpdate(e,t){this.connection.sendMessage({type:`contextual_update`,text:e,...t?.contextId?{context_id:t.contextId}:{}})}sendUserMessage(e){this.connection.sendMessage({type:`user_message`,text:e})}sendUserActivity(){this.connection.sendMessage({type:`user_activity`})}sendMCPToolApprovalResult(e,t){this.connection.sendMessage({type:`mcp_tool_approval_result`,tool_call_id:e,is_approved:t})}sendMultimodalMessage(e){this.connection.sendMessage({type:`multimodal_message`,text:e.text?{type:`user_message`,text:e.text}:void 0,file:e.fileId?{type:`file_input`,file_id:e.fileId}:void 0})}async uploadFile(e){let r=(this.options.origin??i).replace(/^wss:\/\//,`https://`).replace(/^ws:\/\//,`http://`),a=`name`in e&&typeof e.name==`string`?e.name:`upload.${(e.type||`image/png`).split(`/`).pop()?.split(`+`)[0]}`,o=new FormData;o.append(`file`,e,a);let s=await fetch(`${r}/v1/convai/conversations/${this.connection.conversationId}/files`,{method:`POST`,body:o});if(!s.ok){let e=await n(s);throw Error(`Upload failed: ${s.status} ${e}`)}let c=await s.json();t(c,`Upload response is not a JSON object`);let{file_id:l}=c;if(typeof l!=`string`||!l)throw Error(`Upload response is missing a valid file_id`);return{fileId:l}}},c=Object.freeze({name:`js_sdk`,version:`1.12.0`});function l(e){c=Object.freeze(e)}var u=class{queue=[];disconnectionDetails=null;onDisconnectCallback=null;onMessageCallback=null;onModeChangeCallback=null;onDebug;constructor(e={}){this.onDebug=e.onDebug}debug(e){this.onDebug&&this.onDebug(e)}onMessage(e){this.onMessageCallback=e;let t=this.queue;this.queue=[],t.length>0&&queueMicrotask(()=>{t.forEach(e)})}onDisconnect(e){this.onDisconnectCallback=e;let t=this.disconnectionDetails;t&&queueMicrotask(()=>{e(t)})}onModeChange(e){this.onModeChangeCallback=e}updateMode(e){this.onModeChangeCallback?.(e)}disconnect(e){this.disconnectionDetails||(this.disconnectionDetails=e,this.onDisconnectCallback?.(e))}handleMessage(e){this.onMessageCallback?this.onMessageCallback(e):this.queue.push(e)}};function d(e){let[t,n]=e.split(`_`);if(![`pcm`,`ulaw`].includes(t))throw Error(`Invalid format: ${e}`);let r=Number.parseInt(n);if(Number.isNaN(r))throw Error(`Invalid sample rate: ${n}`);return{format:t,sampleRate:r}}function f(e){return!!e.type}function p(e,t){return t.forEach(function(t){t&&typeof t!=`string`&&!Array.isArray(t)&&Object.keys(t).forEach(function(n){if(n!==`default`&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}})}),Object.freeze(e)}var m=Object.defineProperty,h=(e,t,n)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t,n)=>h(e,typeof t==`symbol`?t:t+``,n),_=class{constructor(){g(this,`_locking`),g(this,`_locks`),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e,t=new Promise(t=>e=()=>{--this._locks,t()}),n=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),n}};function v(e,t){if(!e)throw Error(t)}var y=34028234663852886e22,b=-34028234663852886e22,x=4294967295,S=2147483647,C=-2147483648;function w(e){if(typeof e!=`number`)throw Error(`invalid int 32: `+typeof e);if(!Number.isInteger(e)||e>S||e<C)throw Error(`invalid int 32: `+e)}function T(e){if(typeof e!=`number`)throw Error(`invalid uint 32: `+typeof e);if(!Number.isInteger(e)||e>x||e<0)throw Error(`invalid uint 32: `+e)}function ee(e){if(typeof e!=`number`)throw Error(`invalid float 32: `+typeof e);if(Number.isFinite(e)&&(e>y||e<b))throw Error(`invalid float 32: `+e)}var te=Symbol(`@bufbuild/protobuf/enum-type`);function ne(e){let t=e[te];return v(t,`missing enum type on enum object`),t}function re(e,t,n,r){e[te]=ie(t,n.map(t=>({no:t.no,name:t.name,localName:e[t.no]})))}function ie(e,t,n){let r=Object.create(null),i=Object.create(null),a=[];for(let e of t){let t=oe(e);a.push(t),r[e.name]=t,i[e.no]=t}return{typeName:e,values:a,findName(e){return r[e]},findNumber(e){return i[e]}}}function ae(e,t,n){let r={};for(let e of t){let t=oe(e);r[t.localName]=t.no,r[t.no]=t.localName}return re(r,e,t),r}function oe(e){return`localName`in e?e:Object.assign(Object.assign({},e),{localName:e.name})}var se=class{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){let n=this.getType().runtime.bin,r=n.makeReadOptions(t);return n.readMessage(this,r.readerFactory(e),e.byteLength,r),this}fromJson(e,t){let n=this.getType(),r=n.runtime.json,i=r.makeReadOptions(t);return r.readMessage(n,e,i,this),this}fromJsonString(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`cannot decode ${this.getType().typeName} from JSON: ${e instanceof Error?e.message:String(e)}`)}return this.fromJson(n,t)}toBinary(e){let t=this.getType().runtime.bin,n=t.makeWriteOptions(e),r=n.writerFactory();return t.writeMessage(this,r,n),r.finish()}toJson(e){let t=this.getType().runtime.json,n=t.makeWriteOptions(e);return t.writeMessage(this,n)}toJsonString(e){let t=this.toJson(e);return JSON.stringify(t,null,e?.prettySpaces??0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}};function E(e,t,n,r){let i=r?.localName??t.substring(t.lastIndexOf(`.`)+1),a={[i]:function(t){e.util.initFields(this),e.util.initPartial(t,this)}}[i];return Object.setPrototypeOf(a.prototype,new se),Object.assign(a,{runtime:e,typeName:t,fields:e.util.newFieldList(n),fromBinary(e,t){return new a().fromBinary(e,t)},fromJson(e,t){return new a().fromJson(e,t)},fromJsonString(e,t){return new a().fromJsonString(e,t)},equals(t,n){return e.util.equals(a,t,n)}}),a}function ce(){let e=0,t=0;for(let n=0;n<28;n+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<n,!(r&128))return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(n&15)<<28,t=(n&112)>>4,!(n&128))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let r=this.buf[this.pos++];if(t|=(r&127)<<n,!(r&128))return this.assertBounds(),[e,t]}throw Error(`invalid varint`)}function le(e,t,n){for(let r=0;r<28;r+=7){let i=e>>>r,a=!(!(i>>>7)&&t==0),o=(a?i|128:i)&255;if(n.push(o),!a)return}let r=e>>>28&15|(t&7)<<4,i=!!(t>>3);if(n.push((i?r|128:r)&255),i){for(let e=3;e<31;e+=7){let r=t>>>e,i=!!(r>>>7),a=(i?r|128:r)&255;if(n.push(a),!i)return}n.push(t>>>31&1)}}var ue=4294967296;function de(e){let t=e[0]===`-`;t&&(e=e.slice(1));let n=1e6,r=0,i=0;function a(t,a){let o=Number(e.slice(t,a));i*=n,r=r*n+o,r>=ue&&(i+=r/ue|0,r%=ue)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?ge(r,i):he(r,i)}function fe(e,t){let n=he(e,t),r=n.hi&2147483648;r&&(n=ge(n.lo,n.hi));let i=pe(n.lo,n.hi);return r?`-`+i:i}function pe(e,t){if({lo:e,hi:t}=me(e,t),t<=2097151)return String(ue*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+_e(o)+_e(a)}function me(e,t){return{lo:e>>>0,hi:t>>>0}}function he(e,t){return{lo:e|0,hi:t|0}}function ge(e,t){return t=~t,e?e=~e+1:t+=1,he(e,t)}var _e=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function ve(e,t){if(e>=0){for(;e>127;)t.push(e&127|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(e&127|128),e>>=7;t.push(1)}}function ye(){let e=this.buf[this.pos++],t=e&127;if(!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}function be(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(typeof process!=`object`||typeof process.env!=`object`||process.env.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||r<t)throw Error(`int64 invalid: ${e}`);return r},uParse(e){let t=typeof e==`bigint`?e:BigInt(e);if(t>i||t<r)throw Error(`uint64 invalid: ${e}`);return t},enc(t){return e.setBigInt64(0,this.parse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(t){return e.setBigInt64(0,this.uParse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec(t,n){return e.setInt32(0,t,!0),e.setInt32(4,n,!0),e.getBigInt64(0,!0)},uDec(t,n){return e.setInt32(0,t,!0),e.setInt32(4,n,!0),e.getBigUint64(0,!0)}}}let t=e=>v(/^-?[0-9]+$/.test(e),`int64 invalid: ${e}`),n=e=>v(/^[0-9]+$/.test(e),`uint64 invalid: ${e}`);return{zero:`0`,supported:!1,parse(e){return typeof e!=`string`&&(e=e.toString()),t(e),e},uParse(e){return typeof e!=`string`&&(e=e.toString()),n(e),e},enc(e){return typeof e!=`string`&&(e=e.toString()),t(e),de(e)},uEnc(e){return typeof e!=`string`&&(e=e.toString()),n(e),de(e)},dec(e,t){return fe(e,t)},uDec(e,t){return pe(e,t)}}}var xe=be(),D;(function(e){e[e.DOUBLE=1]=`DOUBLE`,e[e.FLOAT=2]=`FLOAT`,e[e.INT64=3]=`INT64`,e[e.UINT64=4]=`UINT64`,e[e.INT32=5]=`INT32`,e[e.FIXED64=6]=`FIXED64`,e[e.FIXED32=7]=`FIXED32`,e[e.BOOL=8]=`BOOL`,e[e.STRING=9]=`STRING`,e[e.BYTES=12]=`BYTES`,e[e.UINT32=13]=`UINT32`,e[e.SFIXED32=15]=`SFIXED32`,e[e.SFIXED64=16]=`SFIXED64`,e[e.SINT32=17]=`SINT32`,e[e.SINT64=18]=`SINT64`})(D||={});var Se;(function(e){e[e.BIGINT=0]=`BIGINT`,e[e.STRING=1]=`STRING`})(Se||={});function Ce(e,t,n){if(t===n)return!0;if(e==D.BYTES){if(!(t instanceof Uint8Array)||!(n instanceof Uint8Array)||t.length!==n.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!1;return!0}switch(e){case D.UINT64:case D.FIXED64:case D.INT64:case D.SFIXED64:case D.SINT64:return t==n}return!1}function we(e,t){switch(e){case D.BOOL:return!1;case D.UINT64:case D.FIXED64:case D.INT64:case D.SFIXED64:case D.SINT64:return t==0?xe.zero:`0`;case D.DOUBLE:case D.FLOAT:return 0;case D.BYTES:return new Uint8Array;case D.STRING:return``;default:return 0}}function Te(e,t){switch(e){case D.BOOL:return t===!1;case D.STRING:return t===``;case D.BYTES:return t instanceof Uint8Array&&!t.byteLength;default:return t==0}}var Ee;(function(e){e[e.Varint=0]=`Varint`,e[e.Bit64=1]=`Bit64`,e[e.LengthDelimited=2]=`LengthDelimited`,e[e.StartGroup=3]=`StartGroup`,e[e.EndGroup=4]=`EndGroup`,e[e.Bit32=5]=`Bit32`})(Ee||={});var De=class{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),n=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],n),n+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw Error(`invalid state, fork stack empty`);return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(T(e);e>127;)this.buf.push(e&127|128),e>>>=7;return this.buf.push(e),this}int32(e){return w(e),ve(e,this.buf),this}bool(e){return this.buf.push(+!!e),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){ee(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){T(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){w(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return w(e),e=(e<<1^e>>31)>>>0,ve(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=xe.enc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),r=xe.uEnc(e);return n.setInt32(0,r.lo,!0),n.setInt32(4,r.hi,!0),this.raw(t)}int64(e){let t=xe.enc(e);return le(t.lo,t.hi,this.buf),this}sint64(e){let t=xe.enc(e),n=t.hi>>31;return le(t.lo<<1^n,(t.hi<<1|t.lo>>>31)^n,this.buf),this}uint64(e){let t=xe.uEnc(e);return le(t.lo,t.hi,this.buf),this}},Oe=class{constructor(e,t){this.varint64=ce,this.uint32=ye,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,n=e&7;if(t<=0||n<0||n>5)throw Error(`illegal tag: field no `+t+` wire type `+n);return[t,n]}skip(e,t){let n=this.pos;switch(e){case Ee.Varint:for(;this.buf[this.pos++]&128;);break;case Ee.Bit64:this.pos+=4;case Ee.Bit32:this.pos+=4;break;case Ee.LengthDelimited:let n=this.uint32();this.pos+=n;break;case Ee.StartGroup:for(;;){let[e,n]=this.tag();if(n===Ee.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(n,e)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(n,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return xe.dec(...this.varint64())}uint64(){return xe.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,xe.dec(e,t)}bool(){let[e,t]=this.varint64();return e!==0||t!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return xe.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return xe.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}};function ke(e,t,n,r){let i;return{typeName:t,extendee:n,get field(){if(!i){let n=typeof r==`function`?r():r;n.name=t.split(`.`).pop(),n.jsonName=`[${t}]`,i=e.util.newFieldList([n]).list()[0]}return i},runtime:e}}function Ae(e){let t=e.field.localName,n=Object.create(null);return n[t]=je(e),[n,()=>n[t]]}function je(e){let t=e.field;if(t.repeated)return[];if(t.default!==void 0)return t.default;switch(t.kind){case`enum`:return t.T.values[0].no;case`scalar`:return we(t.T,t.L);case`message`:let e=t.T,n=new e;return e.fieldWrapper?e.fieldWrapper.unwrapField(n):n;case`map`:throw`map fields are not allowed to be extensions`}}function Me(e,t){if(!t.repeated&&(t.kind==`enum`||t.kind==`scalar`)){for(let n=e.length-1;n>=0;--n)if(e[n].no==t.no)return[e[n]];return[]}return e.filter(e=>e.no===t.no)}var Ne=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.split(``),Pe=[];for(let e=0;e<Ne.length;e++)Pe[Ne[e].charCodeAt(0)]=e;Pe[45]=Ne.indexOf(`+`),Pe[95]=Ne.indexOf(`/`);var Fe={dec(e){let t=e.length*3/4;e[e.length-2]==`=`?t-=2:e[e.length-1]==`=`&&--t;let n=new Uint8Array(t),r=0,i=0,a,o=0;for(let t=0;t<e.length;t++){if(a=Pe[e.charCodeAt(t)],a===void 0)switch(e[t]){case`=`:i=0;case`
2
2
  `:case`\r`:case` `:case` `:continue;default:throw Error(`invalid base64 string.`)}switch(i){case 0:o=a,i=1;break;case 1:n[r++]=o<<2|(a&48)>>4,o=a,i=2;break;case 2:n[r++]=(o&15)<<4|(a&60)>>2,o=a,i=3;break;case 3:n[r++]=(o&3)<<6|a,i=0;break}}if(i==1)throw Error(`invalid base64 string.`);return n.subarray(0,r)},enc(e){let t=``,n=0,r,i=0;for(let a=0;a<e.length;a++)switch(r=e[a],n){case 0:t+=Ne[r>>2],i=(r&3)<<4,n=1;break;case 1:t+=Ne[i|r>>4],i=(r&15)<<2,n=2;break;case 2:t+=Ne[i|r>>6],t+=Ne[r&63],n=0;break}return n&&(t+=Ne[i],t+=`=`,n==1&&(t+=`=`)),t}};function Ie(e,t,n){ze(t,e);let r=t.runtime.bin.makeReadOptions(n),i=Me(e.getType().runtime.bin.listUnknownFields(e),t.field),[a,o]=Ae(t);for(let e of i)t.runtime.bin.readField(a,r.readerFactory(e.data),t.field,e.wireType,r);return o()}function Le(e,t,n,r){ze(t,e);let i=t.runtime.bin.makeReadOptions(r),a=t.runtime.bin.makeWriteOptions(r);if(Re(e,t)){let n=e.getType().runtime.bin.listUnknownFields(e).filter(e=>e.no!=t.field.no);e.getType().runtime.bin.discardUnknownFields(e);for(let t of n)e.getType().runtime.bin.onUnknownField(e,t.no,t.wireType,t.data)}let o=a.writerFactory(),s=t.field;!s.opt&&!s.repeated&&(s.kind==`enum`||s.kind==`scalar`)&&(s=Object.assign(Object.assign({},t.field),{opt:!0})),t.runtime.bin.writeField(s,n,o,a);let c=i.readerFactory(o.finish());for(;c.pos<c.len;){let[t,n]=c.tag(),r=c.skip(n,t);e.getType().runtime.bin.onUnknownField(e,t,n,r)}}function Re(e,t){let n=e.getType();return t.extendee.typeName===n.typeName&&!!n.runtime.bin.listUnknownFields(e).find(e=>e.no==t.field.no)}function ze(e,t){v(e.extendee.typeName==t.getType().typeName,`extension ${e.typeName} can only be applied to message ${e.extendee.typeName}`)}function Be(e,t){let n=e.localName;if(e.repeated)return t[n].length>0;if(e.oneof)return t[e.oneof.localName].case===n;switch(e.kind){case`enum`:case`scalar`:return e.opt||e.req?t[n]!==void 0:e.kind==`enum`?t[n]!==e.T.values[0].no:!Te(e.T,t[n]);case`message`:return t[n]!==void 0;case`map`:return Object.keys(t[n]).length>0}}function Ve(e,t){let n=e.localName,r=!e.opt&&!e.req;if(e.repeated)t[n]=[];else if(e.oneof)t[e.oneof.localName]={case:void 0};else switch(e.kind){case`map`:t[n]={};break;case`enum`:t[n]=r?e.T.values[0].no:void 0;break;case`scalar`:t[n]=r?we(e.T,e.L):void 0;break;case`message`:t[n]=void 0;break}}function He(e,t){if(typeof e!=`object`||!e||!Object.getOwnPropertyNames(se.prototype).every(t=>t in e&&typeof e[t]==`function`))return!1;let n=e.getType();return n===null||typeof n!=`function`||!(`typeName`in n)||typeof n.typeName!=`string`?!1:t===void 0?!0:n.typeName==t.typeName}function Ue(e,t){return He(t)||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}D.DOUBLE,D.FLOAT,D.INT64,D.UINT64,D.INT32,D.UINT32,D.BOOL,D.STRING,D.BYTES;var We={ignoreUnknownFields:!1},Ge={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function Ke(e){return e?Object.assign(Object.assign({},We),e):We}function qe(e){return e?Object.assign(Object.assign({},Ge),e):Ge}var Je=Symbol(),Ye=Symbol();function Xe(){return{makeReadOptions:Ke,makeWriteOptions:qe,readMessage(e,t,n,r){if(t==null||Array.isArray(t)||typeof t!=`object`)throw Error(`cannot decode message ${e.typeName} from JSON: ${Ze(t)}`);r??=new e;let i=new Map,a=n.typeRegistry;for(let[o,s]of Object.entries(t)){let t=e.fields.findJsonName(o);if(t){if(t.oneof){if(s===null&&t.kind==`scalar`)continue;let n=i.get(t.oneof);if(n!==void 0)throw Error(`cannot decode message ${e.typeName} from JSON: multiple keys for oneof "${t.oneof.name}" present: "${n}", "${o}"`);i.set(t.oneof,o)}Qe(r,s,t,n,e)}else{let t=!1;if(a?.findExtension&&o.startsWith(`[`)&&o.endsWith(`]`)){let i=a.findExtension(o.substring(1,o.length-1));if(i&&i.extendee.typeName==e.typeName){t=!0;let[e,a]=Ae(i);Qe(e,s,i.field,n,i),Le(r,i,a(),n)}}if(!t&&!n.ignoreUnknownFields)throw Error(`cannot decode message ${e.typeName} from JSON: key "${o}" is unknown`)}}return r},writeMessage(e,t){let n=e.getType(),r={},i;try{for(i of n.fields.byNumber()){if(!Be(i,e)){if(i.req)throw`required field not set`;if(!t.emitDefaultValues||!nt(i))continue}let n=i.oneof?e[i.oneof.localName].value:e[i.localName],a=rt(i,n,t);a!==void 0&&(r[t.useProtoFieldName?i.name:i.jsonName]=a)}let a=t.typeRegistry;if(a?.findExtensionFor)for(let i of n.runtime.bin.listUnknownFields(e)){let o=a.findExtensionFor(n.typeName,i.no);if(o&&Re(e,o)){let n=Ie(e,o,t),i=rt(o.field,n,t);i!==void 0&&(r[o.field.jsonName]=i)}}}catch(e){let t=i?`cannot encode field ${n.typeName}.${i.name} to JSON`:`cannot encode message ${n.typeName} to JSON`,r=e instanceof Error?e.message:String(e);throw Error(t+(r.length>0?`: ${r}`:``))}return r},readScalar(e,t,n){return et(e,t,n??Se.BIGINT,!0)},writeScalar(e,t,n){if(t!==void 0&&(n||Te(e,t)))return at(e,t)},debug:Ze}}function Ze(e){if(e===null)return`null`;switch(typeof e){case`object`:return Array.isArray(e)?`array`:`object`;case`string`:return e.length>100?`string`:`"${e.split(`"`).join(`\\"`)}"`;default:return String(e)}}function Qe(e,t,n,r,i){let a=n.localName;if(n.repeated){if(v(n.kind!=`map`),t===null)return;if(!Array.isArray(t))throw Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${Ze(t)}`);let o=e[a];for(let e of t){if(e===null)throw Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${Ze(e)}`);switch(n.kind){case`message`:o.push(n.T.fromJson(e,r));break;case`enum`:let t=tt(n.T,e,r.ignoreUnknownFields,!0);t!==Ye&&o.push(t);break;case`scalar`:try{o.push(et(n.T,e,n.L,!0))}catch(t){let r=`cannot decode field ${i.typeName}.${n.name} from JSON: ${Ze(e)}`;throw t instanceof Error&&t.message.length>0&&(r+=`: ${t.message}`),Error(r)}break}}}else if(n.kind==`map`){if(t===null)return;if(typeof t!=`object`||Array.isArray(t))throw Error(`cannot decode field ${i.typeName}.${n.name} from JSON: ${Ze(t)}`);let o=e[a];for(let[e,a]of Object.entries(t)){if(a===null)throw Error(`cannot decode field ${i.typeName}.${n.name} from JSON: map value null`);let s;try{s=$e(n.K,e)}catch(e){let r=`cannot decode map key for field ${i.typeName}.${n.name} from JSON: ${Ze(t)}`;throw e instanceof Error&&e.message.length>0&&(r+=`: ${e.message}`),Error(r)}switch(n.V.kind){case`message`:o[s]=n.V.T.fromJson(a,r);break;case`enum`:let e=tt(n.V.T,a,r.ignoreUnknownFields,!0);e!==Ye&&(o[s]=e);break;case`scalar`:try{o[s]=et(n.V.T,a,Se.BIGINT,!0)}catch(e){let r=`cannot decode map value for field ${i.typeName}.${n.name} from JSON: ${Ze(t)}`;throw e instanceof Error&&e.message.length>0&&(r+=`: ${e.message}`),Error(r)}break}}}else switch(n.oneof&&(e=e[n.oneof.localName]={case:a},a=`value`),n.kind){case`message`:let o=n.T;if(t===null&&o.typeName!=`google.protobuf.Value`)return;let s=e[a];He(s)?s.fromJson(t,r):(e[a]=s=o.fromJson(t,r),o.fieldWrapper&&!n.oneof&&(e[a]=o.fieldWrapper.unwrapField(s)));break;case`enum`:let c=tt(n.T,t,r.ignoreUnknownFields,!1);switch(c){case Je:Ve(n,e);break;case Ye:break;default:e[a]=c;break}break;case`scalar`:try{let r=et(n.T,t,n.L,!1);switch(r){case Je:Ve(n,e);break;default:e[a]=r;break}}catch(e){let r=`cannot decode field ${i.typeName}.${n.name} from JSON: ${Ze(t)}`;throw e instanceof Error&&e.message.length>0&&(r+=`: ${e.message}`),Error(r)}break}}function $e(e,t){if(e===D.BOOL)switch(t){case`true`:t=!0;break;case`false`:t=!1;break}return et(e,t,Se.BIGINT,!0).toString()}function et(e,t,n,r){if(t===null)return r?we(e,n):Je;switch(e){case D.DOUBLE:case D.FLOAT:if(t===`NaN`)return NaN;if(t===`Infinity`)return 1/0;if(t===`-Infinity`)return-1/0;if(t===``||typeof t==`string`&&t.trim().length!==t.length||typeof t!=`string`&&typeof t!=`number`)break;let r=Number(t);if(Number.isNaN(r)||!Number.isFinite(r))break;return e==D.FLOAT&&ee(r),r;case D.INT32:case D.FIXED32:case D.SFIXED32:case D.SINT32:case D.UINT32:let i;if(typeof t==`number`?i=t:typeof t==`string`&&t.length>0&&t.trim().length===t.length&&(i=Number(t)),i===void 0)break;return e==D.UINT32||e==D.FIXED32?T(i):w(i),i;case D.INT64:case D.SFIXED64:case D.SINT64:if(typeof t!=`number`&&typeof t!=`string`)break;let a=xe.parse(t);return n?a.toString():a;case D.FIXED64:case D.UINT64:if(typeof t!=`number`&&typeof t!=`string`)break;let o=xe.uParse(t);return n?o.toString():o;case D.BOOL:if(typeof t!=`boolean`)break;return t;case D.STRING:if(typeof t!=`string`)break;return t;case D.BYTES:if(t===``)return new Uint8Array;if(typeof t!=`string`)break;return Fe.dec(t)}throw Error()}function tt(e,t,n,r){if(t===null)return e.typeName==`google.protobuf.NullValue`?0:r?e.values[0].no:Je;switch(typeof t){case`number`:if(Number.isInteger(t))return t;break;case`string`:let r=e.findName(t);if(r!==void 0)return r.no;if(n)return Ye;break}throw Error(`cannot decode enum ${e.typeName} from JSON: ${Ze(t)}`)}function nt(e){return e.repeated||e.kind==`map`?!0:!(e.oneof||e.kind==`message`||e.opt||e.req)}function rt(e,t,n){if(e.kind==`map`){v(typeof t==`object`&&!!t);let r={},i=Object.entries(t);switch(e.V.kind){case`scalar`:for(let[t,n]of i)r[t.toString()]=at(e.V.T,n);break;case`message`:for(let[e,t]of i)r[e.toString()]=t.toJson(n);break;case`enum`:let t=e.V.T;for(let[e,a]of i)r[e.toString()]=it(t,a,n.enumAsInteger);break}return n.emitDefaultValues||i.length>0?r:void 0}if(e.repeated){v(Array.isArray(t));let r=[];switch(e.kind){case`scalar`:for(let n=0;n<t.length;n++)r.push(at(e.T,t[n]));break;case`enum`:for(let i=0;i<t.length;i++)r.push(it(e.T,t[i],n.enumAsInteger));break;case`message`:for(let e=0;e<t.length;e++)r.push(t[e].toJson(n));break}return n.emitDefaultValues||r.length>0?r:void 0}switch(e.kind){case`scalar`:return at(e.T,t);case`enum`:return it(e.T,t,n.enumAsInteger);case`message`:return Ue(e.T,t).toJson(n)}}function it(e,t,n){return v(typeof t==`number`),e.typeName==`google.protobuf.NullValue`?null:n?t:e.findNumber(t)?.name??t}function at(e,t){switch(e){case D.INT32:case D.SFIXED32:case D.SINT32:case D.FIXED32:case D.UINT32:return v(typeof t==`number`),t;case D.FLOAT:case D.DOUBLE:return v(typeof t==`number`),Number.isNaN(t)?`NaN`:t===1/0?`Infinity`:t===-1/0?`-Infinity`:t;case D.STRING:return v(typeof t==`string`),t;case D.BOOL:return v(typeof t==`boolean`),t;case D.UINT64:case D.FIXED64:case D.INT64:case D.SFIXED64:case D.SINT64:return v(typeof t==`bigint`||typeof t==`string`||typeof t==`number`),t.toString();case D.BYTES:return v(t instanceof Uint8Array),Fe.enc(t)}}var ot=Symbol(`@bufbuild/protobuf/unknown-fields`),st={readUnknownFields:!0,readerFactory:e=>new Oe(e)},ct={writeUnknownFields:!0,writerFactory:()=>new De};function lt(e){return e?Object.assign(Object.assign({},st),e):st}function ut(e){return e?Object.assign(Object.assign({},ct),e):ct}function dt(){return{makeReadOptions:lt,makeWriteOptions:ut,listUnknownFields(e){return e[ot]??[]},discardUnknownFields(e){delete e[ot]},writeUnknownFields(e,t){let n=e[ot];if(n)for(let e of n)t.tag(e.no,e.wireType).raw(e.data)},onUnknownField(e,t,n,r){let i=e;Array.isArray(i[ot])||(i[ot]=[]),i[ot].push({no:t,wireType:n,data:r})},readMessage(e,t,n,r,i){let a=e.getType(),o=i?t.len:t.pos+n,s,c;for(;t.pos<o&&([s,c]=t.tag(),!(i===!0&&c==Ee.EndGroup));){let n=a.fields.find(s);if(!n){let n=t.skip(c,s);r.readUnknownFields&&this.onUnknownField(e,s,c,n);continue}ft(e,t,n,c,r)}if(i&&(c!=Ee.EndGroup||s!==n))throw Error(`invalid end group tag`)},readField:ft,writeMessage(e,t,n){let r=e.getType();for(let i of r.fields.byNumber()){if(!Be(i,e)){if(i.req)throw Error(`cannot encode field ${r.typeName}.${i.name} to binary: required field not set`);continue}_t(i,i.oneof?e[i.oneof.localName].value:e[i.localName],t,n)}return n.writeUnknownFields&&this.writeUnknownFields(e,t),t},writeField(e,t,n,r){t!==void 0&&_t(e,t,n,r)}}}function ft(e,t,n,r,i){let{repeated:a,localName:o}=n;switch(n.oneof&&(e=e[n.oneof.localName],e.case!=o&&delete e.value,e.case=o,o=`value`),n.kind){case`scalar`:case`enum`:let s=n.kind==`enum`?D.INT32:n.T,c=gt;if(n.kind==`scalar`&&n.L>0&&(c=ht),a){let n=e[o];if(r==Ee.LengthDelimited&&s!=D.STRING&&s!=D.BYTES){let e=t.uint32()+t.pos;for(;t.pos<e;)n.push(c(t,s))}else n.push(c(t,s))}else e[o]=c(t,s);break;case`message`:let l=n.T;a?e[o].push(pt(t,new l,i,n)):He(e[o])?pt(t,e[o],i,n):(e[o]=pt(t,new l,i,n),l.fieldWrapper&&!n.oneof&&!n.repeated&&(e[o]=l.fieldWrapper.unwrapField(e[o])));break;case`map`:let[u,d]=mt(n,t,i);e[o][u]=d;break}}function pt(e,t,n,r){let i=t.getType().runtime.bin,a=r?.delimited;return i.readMessage(t,e,a?r.no:e.uint32(),n,a),t}function mt(e,t,n){let r=t.uint32(),i=t.pos+r,a,o;for(;t.pos<i;){let[r]=t.tag();switch(r){case 1:a=gt(t,e.K);break;case 2:switch(e.V.kind){case`scalar`:o=gt(t,e.V.T);break;case`enum`:o=t.int32();break;case`message`:o=pt(t,new e.V.T,n,void 0);break}break}}if(a===void 0&&(a=we(e.K,Se.BIGINT)),typeof a!=`string`&&typeof a!=`number`&&(a=a.toString()),o===void 0)switch(e.V.kind){case`scalar`:o=we(e.V.T,Se.BIGINT);break;case`enum`:o=e.V.T.values[0].no;break;case`message`:o=new e.V.T;break}return[a,o]}function ht(e,t){let n=gt(e,t);return typeof n==`bigint`?n.toString():n}function gt(e,t){switch(t){case D.STRING:return e.string();case D.BOOL:return e.bool();case D.DOUBLE:return e.double();case D.FLOAT:return e.float();case D.INT32:return e.int32();case D.INT64:return e.int64();case D.UINT64:return e.uint64();case D.FIXED64:return e.fixed64();case D.BYTES:return e.bytes();case D.FIXED32:return e.fixed32();case D.SFIXED32:return e.sfixed32();case D.SFIXED64:return e.sfixed64();case D.SINT64:return e.sint64();case D.UINT32:return e.uint32();case D.SINT32:return e.sint32()}}function _t(e,t,n,r){v(t!==void 0);let i=e.repeated;switch(e.kind){case`scalar`:case`enum`:let a=e.kind==`enum`?D.INT32:e.T;if(i)if(v(Array.isArray(t)),e.packed)xt(n,a,e.no,t);else for(let r of t)bt(n,a,e.no,r);else bt(n,a,e.no,t);break;case`message`:if(i){v(Array.isArray(t));for(let i of t)yt(n,r,e,i)}else yt(n,r,e,t);break;case`map`:v(typeof t==`object`&&!!t);for(let[i,a]of Object.entries(t))vt(n,r,e,i,a);break}}function vt(e,t,n,r,i){e.tag(n.no,Ee.LengthDelimited),e.fork();let a=r;switch(n.K){case D.INT32:case D.FIXED32:case D.UINT32:case D.SFIXED32:case D.SINT32:a=Number.parseInt(r);break;case D.BOOL:v(r==`true`||r==`false`),a=r==`true`;break}switch(bt(e,n.K,1,a),n.V.kind){case`scalar`:bt(e,n.V.T,2,i);break;case`enum`:bt(e,D.INT32,2,i);break;case`message`:v(i!==void 0),e.tag(2,Ee.LengthDelimited).bytes(i.toBinary(t));break}e.join()}function yt(e,t,n,r){let i=Ue(n.T,r);n.delimited?e.tag(n.no,Ee.StartGroup).raw(i.toBinary(t)).tag(n.no,Ee.EndGroup):e.tag(n.no,Ee.LengthDelimited).bytes(i.toBinary(t))}function bt(e,t,n,r){v(r!==void 0);let[i,a]=St(t);e.tag(n,i)[a](r)}function xt(e,t,n,r){if(!r.length)return;e.tag(n,Ee.LengthDelimited).fork();let[,i]=St(t);for(let t=0;t<r.length;t++)e[i](r[t]);e.join()}function St(e){let t=Ee.Varint;switch(e){case D.BYTES:case D.STRING:t=Ee.LengthDelimited;break;case D.DOUBLE:case D.FIXED64:case D.SFIXED64:t=Ee.Bit64;break;case D.FIXED32:case D.SFIXED32:case D.FLOAT:t=Ee.Bit32;break}let n=D[e].toLowerCase();return[t,n]}function Ct(){return{setEnumType:re,initPartial(e,t){if(e===void 0)return;let n=t.getType();for(let r of n.fields.byMember()){let n=r.localName,i=t,a=e;if(a[n]!=null)switch(r.kind){case`oneof`:let e=a[n].case;if(e===void 0)continue;let t=r.findField(e),o=a[n].value;t&&t.kind==`message`&&!He(o,t.T)?o=new t.T(o):t&&t.kind===`scalar`&&t.T===D.BYTES&&(o=Tt(o)),i[n]={case:e,value:o};break;case`scalar`:case`enum`:let s=a[n];r.T===D.BYTES&&(s=r.repeated?s.map(Tt):Tt(s)),i[n]=s;break;case`map`:switch(r.V.kind){case`scalar`:case`enum`:if(r.V.T===D.BYTES)for(let[e,t]of Object.entries(a[n]))i[n][e]=Tt(t);else Object.assign(i[n],a[n]);break;case`message`:let e=r.V.T;for(let t of Object.keys(a[n])){let r=a[n][t];e.fieldWrapper||(r=new e(r)),i[n][t]=r}break}break;case`message`:let c=r.T;if(r.repeated)i[n]=a[n].map(e=>He(e,c)?e:new c(e));else{let e=a[n];c.fieldWrapper?c.typeName===`google.protobuf.BytesValue`?i[n]=Tt(e):i[n]=e:i[n]=He(e,c)?e:new c(e)}break}}},equals(e,t,n){return t===n?!0:!t||!n?!1:e.fields.byMember().every(e=>{let r=t[e.localName],i=n[e.localName];if(e.repeated){if(r.length!==i.length)return!1;switch(e.kind){case`message`:return r.every((t,n)=>e.T.equals(t,i[n]));case`scalar`:return r.every((t,n)=>Ce(e.T,t,i[n]));case`enum`:return r.every((e,t)=>Ce(D.INT32,e,i[t]))}throw Error(`repeated cannot contain ${e.kind}`)}switch(e.kind){case`message`:let t=r,n=i;return e.T.fieldWrapper&&(t!==void 0&&!He(t)&&(t=e.T.fieldWrapper.wrapField(t)),n!==void 0&&!He(n)&&(n=e.T.fieldWrapper.wrapField(n))),e.T.equals(t,n);case`enum`:return Ce(D.INT32,r,i);case`scalar`:return Ce(e.T,r,i);case`oneof`:if(r.case!==i.case)return!1;let a=e.findField(r.case);if(a===void 0)return!0;switch(a.kind){case`message`:return a.T.equals(r.value,i.value);case`enum`:return Ce(D.INT32,r.value,i.value);case`scalar`:return Ce(a.T,r.value,i.value)}throw Error(`oneof cannot contain ${a.kind}`);case`map`:let o=Object.keys(r).concat(Object.keys(i));switch(e.V.kind){case`message`:let t=e.V.T;return o.every(e=>t.equals(r[e],i[e]));case`enum`:return o.every(e=>Ce(D.INT32,r[e],i[e]));case`scalar`:let n=e.V.T;return o.every(e=>Ce(n,r[e],i[e]))}break}})},clone(e){let t=e.getType(),n=new t,r=n;for(let n of t.fields.byMember()){let t=e[n.localName],i;if(n.repeated)i=t.map(wt);else if(n.kind==`map`){i=r[n.localName];for(let[e,n]of Object.entries(t))i[e]=wt(n)}else i=n.kind==`oneof`?n.findField(t.case)?{case:t.case,value:wt(t.value)}:{case:void 0}:wt(t);r[n.localName]=i}for(let n of t.runtime.bin.listUnknownFields(e))t.runtime.bin.onUnknownField(r,n.no,n.wireType,n.data);return n}}}function wt(e){if(e===void 0)return e;if(He(e))return e.clone();if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t}return e}function Tt(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function Et(e,t,n){return{syntax:e,json:Xe(),bin:dt(),util:Object.assign(Object.assign({},Ct()),{newFieldList:t,initFields:n}),makeMessageType(e,t,n){return E(this,e,t,n)},makeEnum:ae,makeEnumType:ie,getEnumType:ne,makeExtension(e,t,n){return ke(this,e,t,n)}}}var Dt=class{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){let e={};for(let t of this.list())e[t.jsonName]=e[t.name]=t;this.jsonNames=e}return this.jsonNames[e]}find(e){if(!this.numbers){let e={};for(let t of this.list())e[t.no]=t;this.numbers=e}return this.numbers[e]}list(){return this.all||=this._normalizer(this._fields),this.all}byNumber(){return this.numbersAsc||=this.list().concat().sort((e,t)=>e.no-t.no),this.numbersAsc}byMember(){if(!this.members){this.members=[];let e=this.members,t;for(let n of this.list())n.oneof?n.oneof!==t&&(t=n.oneof,e.push(t)):e.push(n)}return this.members}};function Ot(e,t){let n=jt(e);return t?n:It(Ft(n))}function kt(e){return Ot(e,!1)}var At=jt;function jt(e){let t=!1,n=[];for(let r=0;r<e.length;r++){let i=e.charAt(r);switch(i){case`_`:t=!0;break;case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:n.push(i),t=!1;break;default:t&&(t=!1,i=i.toUpperCase()),n.push(i);break}}return n.join(``)}var Mt=new Set([`constructor`,`toString`,`toJSON`,`valueOf`]),Nt=new Set([`getType`,`clone`,`equals`,`fromBinary`,`fromJson`,`fromJsonString`,`toBinary`,`toJson`,`toJsonString`,`toObject`]),Pt=e=>`${e}\$`,Ft=e=>Nt.has(e)?Pt(e):e,It=e=>Mt.has(e)?Pt(e):e,Lt=class{constructor(e){this.kind=`oneof`,this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=kt(e)}addField(e){v(e.oneof===this,`field ${e.name} not one of ${this.name}`),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let e=0;e<this.fields.length;e++)this._lookup[this.fields[e].localName]=this.fields[e]}return this._lookup[e]}};function Rt(e,t){let n=[],r;for(let t of typeof e==`function`?e():e){let e=t;if(e.localName=Ot(t.name,t.oneof!==void 0),e.jsonName=t.jsonName??At(t.name),e.repeated=t.repeated??!1,t.kind==`scalar`&&(e.L=t.L??Se.BIGINT),e.delimited=t.delimited??!1,e.req=t.req??!1,e.opt=t.opt??!1,t.packed===void 0&&(e.packed=t.kind==`enum`||t.kind==`scalar`&&t.T!=D.BYTES&&t.T!=D.STRING),t.oneof!==void 0){let n=typeof t.oneof==`string`?t.oneof:t.oneof.name;(!r||r.name!=n)&&(r=new Lt(n)),e.oneof=r,r.addField(e)}n.push(e)}return n}var O=Et(`proto3`,e=>new Dt(e,e=>Rt(e)),e=>{for(let t of e.getType().fields.byMember()){if(t.opt)continue;let n=t.localName,r=e;if(t.repeated){r[n]=[];continue}switch(t.kind){case`oneof`:r[n]={case:void 0};break;case`enum`:r[n]=0;break;case`map`:r[n]={};break;case`scalar`:r[n]=we(t.T,t.L);break}}}),zt=class e extends se{constructor(e){super(),this.seconds=xe.zero,this.nanos=0,O.util.initPartial(e,this)}fromJson(e,t){if(typeof e!=`string`)throw Error(`cannot decode google.protobuf.Timestamp from JSON: ${O.json.debug(e)}`);let n=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!n)throw Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);let r=Date.parse(n[1]+`-`+n[2]+`-`+n[3]+`T`+n[4]+`:`+n[5]+`:`+n[6]+(n[8]?n[8]:`Z`));if(Number.isNaN(r))throw Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);if(r<Date.parse(`0001-01-01T00:00:00Z`)||r>Date.parse(`9999-12-31T23:59:59Z`))throw Error(`cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);return this.seconds=xe.parse(r/1e3),this.nanos=0,n[7]&&(this.nanos=parseInt(`1`+n[7]+`0`.repeat(9-n[7].length))-1e9),this}toJson(e){let t=Number(this.seconds)*1e3;if(t<Date.parse(`0001-01-01T00:00:00Z`)||t>Date.parse(`9999-12-31T23:59:59Z`))throw Error(`cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(this.nanos<0)throw Error(`cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative`);let n=`Z`;if(this.nanos>0){let e=(this.nanos+1e9).toString().substring(1);n=e.substring(3)===`000000`?`.`+e.substring(0,3)+`Z`:e.substring(6)===`000`?`.`+e.substring(0,6)+`Z`:`.`+e+`Z`}return new Date(t).toISOString().replace(`.000Z`,n)}toDate(){return new Date(Number(this.seconds)*1e3+Math.ceil(this.nanos/1e6))}static now(){return e.fromDate(new Date)}static fromDate(t){let n=t.getTime();return new e({seconds:xe.parse(Math.floor(n/1e3)),nanos:n%1e3*1e6})}static fromBinary(t,n){return new e().fromBinary(t,n)}static fromJson(t,n){return new e().fromJson(t,n)}static fromJsonString(t,n){return new e().fromJsonString(t,n)}static equals(t,n){return O.util.equals(e,t,n)}};zt.runtime=O,zt.typeName=`google.protobuf.Timestamp`,zt.fields=O.util.newFieldList(()=>[{no:1,name:`seconds`,kind:`scalar`,T:3},{no:2,name:`nanos`,kind:`scalar`,T:5}]);var Bt=O.makeMessageType(`livekit.MetricsBatch`,()=>[{no:1,name:`timestamp_ms`,kind:`scalar`,T:3},{no:2,name:`normalized_timestamp`,kind:`message`,T:zt},{no:3,name:`str_data`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`time_series`,kind:`message`,T:Vt,repeated:!0},{no:5,name:`events`,kind:`message`,T:Ut,repeated:!0}]),Vt=O.makeMessageType(`livekit.TimeSeriesMetric`,()=>[{no:1,name:`label`,kind:`scalar`,T:13},{no:2,name:`participant_identity`,kind:`scalar`,T:13},{no:3,name:`track_sid`,kind:`scalar`,T:13},{no:4,name:`samples`,kind:`message`,T:Ht,repeated:!0},{no:5,name:`rid`,kind:`scalar`,T:13}]),Ht=O.makeMessageType(`livekit.MetricSample`,()=>[{no:1,name:`timestamp_ms`,kind:`scalar`,T:3},{no:2,name:`normalized_timestamp`,kind:`message`,T:zt},{no:3,name:`value`,kind:`scalar`,T:2}]),Ut=O.makeMessageType(`livekit.EventMetric`,()=>[{no:1,name:`label`,kind:`scalar`,T:13},{no:2,name:`participant_identity`,kind:`scalar`,T:13},{no:3,name:`track_sid`,kind:`scalar`,T:13},{no:4,name:`start_timestamp_ms`,kind:`scalar`,T:3},{no:5,name:`end_timestamp_ms`,kind:`scalar`,T:3,opt:!0},{no:6,name:`normalized_start_timestamp`,kind:`message`,T:zt},{no:7,name:`normalized_end_timestamp`,kind:`message`,T:zt,opt:!0},{no:8,name:`metadata`,kind:`scalar`,T:9},{no:9,name:`rid`,kind:`scalar`,T:13}]),Wt=O.makeEnum(`livekit.BackupCodecPolicy`,[{no:0,name:`PREFER_REGRESSION`},{no:1,name:`SIMULCAST`},{no:2,name:`REGRESSION`}]),Gt=O.makeEnum(`livekit.TrackType`,[{no:0,name:`AUDIO`},{no:1,name:`VIDEO`},{no:2,name:`DATA`}]),Kt=O.makeEnum(`livekit.TrackSource`,[{no:0,name:`UNKNOWN`},{no:1,name:`CAMERA`},{no:2,name:`MICROPHONE`},{no:3,name:`SCREEN_SHARE`},{no:4,name:`SCREEN_SHARE_AUDIO`}]),qt=O.makeEnum(`livekit.VideoQuality`,[{no:0,name:`LOW`},{no:1,name:`MEDIUM`},{no:2,name:`HIGH`},{no:3,name:`OFF`}]),Jt=O.makeEnum(`livekit.ConnectionQuality`,[{no:0,name:`POOR`},{no:1,name:`GOOD`},{no:2,name:`EXCELLENT`},{no:3,name:`LOST`}]),Yt=O.makeEnum(`livekit.ClientConfigSetting`,[{no:0,name:`UNSET`},{no:1,name:`DISABLED`},{no:2,name:`ENABLED`}]),Xt=O.makeEnum(`livekit.DisconnectReason`,[{no:0,name:`UNKNOWN_REASON`},{no:1,name:`CLIENT_INITIATED`},{no:2,name:`DUPLICATE_IDENTITY`},{no:3,name:`SERVER_SHUTDOWN`},{no:4,name:`PARTICIPANT_REMOVED`},{no:5,name:`ROOM_DELETED`},{no:6,name:`STATE_MISMATCH`},{no:7,name:`JOIN_FAILURE`},{no:8,name:`MIGRATION`},{no:9,name:`SIGNAL_CLOSE`},{no:10,name:`ROOM_CLOSED`},{no:11,name:`USER_UNAVAILABLE`},{no:12,name:`USER_REJECTED`},{no:13,name:`SIP_TRUNK_FAILURE`},{no:14,name:`CONNECTION_TIMEOUT`},{no:15,name:`MEDIA_FAILURE`}]),Zt=O.makeEnum(`livekit.ReconnectReason`,[{no:0,name:`RR_UNKNOWN`},{no:1,name:`RR_SIGNAL_DISCONNECTED`},{no:2,name:`RR_PUBLISHER_FAILED`},{no:3,name:`RR_SUBSCRIBER_FAILED`},{no:4,name:`RR_SWITCH_CANDIDATE`}]),Qt=O.makeEnum(`livekit.SubscriptionError`,[{no:0,name:`SE_UNKNOWN`},{no:1,name:`SE_CODEC_UNSUPPORTED`},{no:2,name:`SE_TRACK_NOTFOUND`}]),$t=O.makeEnum(`livekit.AudioTrackFeature`,[{no:0,name:`TF_STEREO`},{no:1,name:`TF_NO_DTX`},{no:2,name:`TF_AUTO_GAIN_CONTROL`},{no:3,name:`TF_ECHO_CANCELLATION`},{no:4,name:`TF_NOISE_SUPPRESSION`},{no:5,name:`TF_ENHANCED_NOISE_CANCELLATION`},{no:6,name:`TF_PRECONNECT_BUFFER`}]),en=O.makeMessageType(`livekit.Room`,()=>[{no:1,name:`sid`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`empty_timeout`,kind:`scalar`,T:13},{no:14,name:`departure_timeout`,kind:`scalar`,T:13},{no:4,name:`max_participants`,kind:`scalar`,T:13},{no:5,name:`creation_time`,kind:`scalar`,T:3},{no:15,name:`creation_time_ms`,kind:`scalar`,T:3},{no:6,name:`turn_password`,kind:`scalar`,T:9},{no:7,name:`enabled_codecs`,kind:`message`,T:tn,repeated:!0},{no:8,name:`metadata`,kind:`scalar`,T:9},{no:9,name:`num_participants`,kind:`scalar`,T:13},{no:11,name:`num_publishers`,kind:`scalar`,T:13},{no:10,name:`active_recording`,kind:`scalar`,T:8},{no:13,name:`version`,kind:`message`,T:In}]),tn=O.makeMessageType(`livekit.Codec`,()=>[{no:1,name:`mime`,kind:`scalar`,T:9},{no:2,name:`fmtp_line`,kind:`scalar`,T:9}]),nn=O.makeMessageType(`livekit.ParticipantPermission`,()=>[{no:1,name:`can_subscribe`,kind:`scalar`,T:8},{no:2,name:`can_publish`,kind:`scalar`,T:8},{no:3,name:`can_publish_data`,kind:`scalar`,T:8},{no:9,name:`can_publish_sources`,kind:`enum`,T:O.getEnumType(Kt),repeated:!0},{no:7,name:`hidden`,kind:`scalar`,T:8},{no:8,name:`recorder`,kind:`scalar`,T:8},{no:10,name:`can_update_metadata`,kind:`scalar`,T:8},{no:11,name:`agent`,kind:`scalar`,T:8},{no:12,name:`can_subscribe_metrics`,kind:`scalar`,T:8}]),rn=O.makeMessageType(`livekit.ParticipantInfo`,()=>[{no:1,name:`sid`,kind:`scalar`,T:9},{no:2,name:`identity`,kind:`scalar`,T:9},{no:3,name:`state`,kind:`enum`,T:O.getEnumType(an)},{no:4,name:`tracks`,kind:`message`,T:un,repeated:!0},{no:5,name:`metadata`,kind:`scalar`,T:9},{no:6,name:`joined_at`,kind:`scalar`,T:3},{no:17,name:`joined_at_ms`,kind:`scalar`,T:3},{no:9,name:`name`,kind:`scalar`,T:9},{no:10,name:`version`,kind:`scalar`,T:13},{no:11,name:`permission`,kind:`message`,T:nn},{no:12,name:`region`,kind:`scalar`,T:9},{no:13,name:`is_publisher`,kind:`scalar`,T:8},{no:14,name:`kind`,kind:`enum`,T:O.getEnumType(on)},{no:15,name:`attributes`,kind:`map`,K:9,V:{kind:`scalar`,T:9}},{no:16,name:`disconnect_reason`,kind:`enum`,T:O.getEnumType(Xt)},{no:18,name:`kind_details`,kind:`enum`,T:O.getEnumType(sn),repeated:!0}]),an=O.makeEnum(`livekit.ParticipantInfo.State`,[{no:0,name:`JOINING`},{no:1,name:`JOINED`},{no:2,name:`ACTIVE`},{no:3,name:`DISCONNECTED`}]),on=O.makeEnum(`livekit.ParticipantInfo.Kind`,[{no:0,name:`STANDARD`},{no:1,name:`INGRESS`},{no:2,name:`EGRESS`},{no:3,name:`SIP`},{no:4,name:`AGENT`},{no:7,name:`CONNECTOR`}]),sn=O.makeEnum(`livekit.ParticipantInfo.KindDetail`,[{no:0,name:`CLOUD_AGENT`},{no:1,name:`FORWARDED`}]),cn=O.makeEnum(`livekit.Encryption.Type`,[{no:0,name:`NONE`},{no:1,name:`GCM`},{no:2,name:`CUSTOM`}]),ln=O.makeMessageType(`livekit.SimulcastCodecInfo`,()=>[{no:1,name:`mime_type`,kind:`scalar`,T:9},{no:2,name:`mid`,kind:`scalar`,T:9},{no:3,name:`cid`,kind:`scalar`,T:9},{no:4,name:`layers`,kind:`message`,T:dn,repeated:!0},{no:5,name:`video_layer_mode`,kind:`enum`,T:O.getEnumType(fn)},{no:6,name:`sdp_cid`,kind:`scalar`,T:9}]),un=O.makeMessageType(`livekit.TrackInfo`,()=>[{no:1,name:`sid`,kind:`scalar`,T:9},{no:2,name:`type`,kind:`enum`,T:O.getEnumType(Gt)},{no:3,name:`name`,kind:`scalar`,T:9},{no:4,name:`muted`,kind:`scalar`,T:8},{no:5,name:`width`,kind:`scalar`,T:13},{no:6,name:`height`,kind:`scalar`,T:13},{no:7,name:`simulcast`,kind:`scalar`,T:8},{no:8,name:`disable_dtx`,kind:`scalar`,T:8},{no:9,name:`source`,kind:`enum`,T:O.getEnumType(Kt)},{no:10,name:`layers`,kind:`message`,T:dn,repeated:!0},{no:11,name:`mime_type`,kind:`scalar`,T:9},{no:12,name:`mid`,kind:`scalar`,T:9},{no:13,name:`codecs`,kind:`message`,T:ln,repeated:!0},{no:14,name:`stereo`,kind:`scalar`,T:8},{no:15,name:`disable_red`,kind:`scalar`,T:8},{no:16,name:`encryption`,kind:`enum`,T:O.getEnumType(cn)},{no:17,name:`stream`,kind:`scalar`,T:9},{no:18,name:`version`,kind:`message`,T:In},{no:19,name:`audio_features`,kind:`enum`,T:O.getEnumType($t),repeated:!0},{no:20,name:`backup_codec_policy`,kind:`enum`,T:O.getEnumType(Wt)}]),dn=O.makeMessageType(`livekit.VideoLayer`,()=>[{no:1,name:`quality`,kind:`enum`,T:O.getEnumType(qt)},{no:2,name:`width`,kind:`scalar`,T:13},{no:3,name:`height`,kind:`scalar`,T:13},{no:4,name:`bitrate`,kind:`scalar`,T:13},{no:5,name:`ssrc`,kind:`scalar`,T:13},{no:6,name:`spatial_layer`,kind:`scalar`,T:5},{no:7,name:`rid`,kind:`scalar`,T:9}]),fn=O.makeEnum(`livekit.VideoLayer.Mode`,[{no:0,name:`MODE_UNUSED`},{no:1,name:`ONE_SPATIAL_LAYER_PER_STREAM`},{no:2,name:`MULTIPLE_SPATIAL_LAYERS_PER_STREAM`},{no:3,name:`ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR`}]),pn=O.makeMessageType(`livekit.DataPacket`,()=>[{no:1,name:`kind`,kind:`enum`,T:O.getEnumType(mn)},{no:4,name:`participant_identity`,kind:`scalar`,T:9},{no:5,name:`destination_identities`,kind:`scalar`,T:9,repeated:!0},{no:2,name:`user`,kind:`message`,T:yn,oneof:`value`},{no:3,name:`speaker`,kind:`message`,T:_n,oneof:`value`},{no:6,name:`sip_dtmf`,kind:`message`,T:bn,oneof:`value`},{no:7,name:`transcription`,kind:`message`,T:xn,oneof:`value`},{no:8,name:`metrics`,kind:`message`,T:Bt,oneof:`value`},{no:9,name:`chat_message`,kind:`message`,T:Cn,oneof:`value`},{no:10,name:`rpc_request`,kind:`message`,T:wn,oneof:`value`},{no:11,name:`rpc_ack`,kind:`message`,T:Tn,oneof:`value`},{no:12,name:`rpc_response`,kind:`message`,T:En,oneof:`value`},{no:13,name:`stream_header`,kind:`message`,T:Bn,oneof:`value`},{no:14,name:`stream_chunk`,kind:`message`,T:Vn,oneof:`value`},{no:15,name:`stream_trailer`,kind:`message`,T:Hn,oneof:`value`},{no:18,name:`encrypted_packet`,kind:`message`,T:hn,oneof:`value`},{no:16,name:`sequence`,kind:`scalar`,T:13},{no:17,name:`participant_sid`,kind:`scalar`,T:9}]),mn=O.makeEnum(`livekit.DataPacket.Kind`,[{no:0,name:`RELIABLE`},{no:1,name:`LOSSY`}]),hn=O.makeMessageType(`livekit.EncryptedPacket`,()=>[{no:1,name:`encryption_type`,kind:`enum`,T:O.getEnumType(cn)},{no:2,name:`iv`,kind:`scalar`,T:12},{no:3,name:`key_index`,kind:`scalar`,T:13},{no:4,name:`encrypted_value`,kind:`scalar`,T:12}]),gn=O.makeMessageType(`livekit.EncryptedPacketPayload`,()=>[{no:1,name:`user`,kind:`message`,T:yn,oneof:`value`},{no:3,name:`chat_message`,kind:`message`,T:Cn,oneof:`value`},{no:4,name:`rpc_request`,kind:`message`,T:wn,oneof:`value`},{no:5,name:`rpc_ack`,kind:`message`,T:Tn,oneof:`value`},{no:6,name:`rpc_response`,kind:`message`,T:En,oneof:`value`},{no:7,name:`stream_header`,kind:`message`,T:Bn,oneof:`value`},{no:8,name:`stream_chunk`,kind:`message`,T:Vn,oneof:`value`},{no:9,name:`stream_trailer`,kind:`message`,T:Hn,oneof:`value`}]),_n=O.makeMessageType(`livekit.ActiveSpeakerUpdate`,()=>[{no:1,name:`speakers`,kind:`message`,T:vn,repeated:!0}]),vn=O.makeMessageType(`livekit.SpeakerInfo`,()=>[{no:1,name:`sid`,kind:`scalar`,T:9},{no:2,name:`level`,kind:`scalar`,T:2},{no:3,name:`active`,kind:`scalar`,T:8}]),yn=O.makeMessageType(`livekit.UserPacket`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:5,name:`participant_identity`,kind:`scalar`,T:9},{no:2,name:`payload`,kind:`scalar`,T:12},{no:3,name:`destination_sids`,kind:`scalar`,T:9,repeated:!0},{no:6,name:`destination_identities`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`topic`,kind:`scalar`,T:9,opt:!0},{no:8,name:`id`,kind:`scalar`,T:9,opt:!0},{no:9,name:`start_time`,kind:`scalar`,T:4,opt:!0},{no:10,name:`end_time`,kind:`scalar`,T:4,opt:!0},{no:11,name:`nonce`,kind:`scalar`,T:12}]),bn=O.makeMessageType(`livekit.SipDTMF`,()=>[{no:3,name:`code`,kind:`scalar`,T:13},{no:4,name:`digit`,kind:`scalar`,T:9}]),xn=O.makeMessageType(`livekit.Transcription`,()=>[{no:2,name:`transcribed_participant_identity`,kind:`scalar`,T:9},{no:3,name:`track_id`,kind:`scalar`,T:9},{no:4,name:`segments`,kind:`message`,T:Sn,repeated:!0}]),Sn=O.makeMessageType(`livekit.TranscriptionSegment`,()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`text`,kind:`scalar`,T:9},{no:3,name:`start_time`,kind:`scalar`,T:4},{no:4,name:`end_time`,kind:`scalar`,T:4},{no:5,name:`final`,kind:`scalar`,T:8},{no:6,name:`language`,kind:`scalar`,T:9}]),Cn=O.makeMessageType(`livekit.ChatMessage`,()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`timestamp`,kind:`scalar`,T:3},{no:3,name:`edit_timestamp`,kind:`scalar`,T:3,opt:!0},{no:4,name:`message`,kind:`scalar`,T:9},{no:5,name:`deleted`,kind:`scalar`,T:8},{no:6,name:`generated`,kind:`scalar`,T:8}]),wn=O.makeMessageType(`livekit.RpcRequest`,()=>[{no:1,name:`id`,kind:`scalar`,T:9},{no:2,name:`method`,kind:`scalar`,T:9},{no:3,name:`payload`,kind:`scalar`,T:9},{no:4,name:`response_timeout_ms`,kind:`scalar`,T:13},{no:5,name:`version`,kind:`scalar`,T:13}]),Tn=O.makeMessageType(`livekit.RpcAck`,()=>[{no:1,name:`request_id`,kind:`scalar`,T:9}]),En=O.makeMessageType(`livekit.RpcResponse`,()=>[{no:1,name:`request_id`,kind:`scalar`,T:9},{no:2,name:`payload`,kind:`scalar`,T:9,oneof:`value`},{no:3,name:`error`,kind:`message`,T:Dn,oneof:`value`}]),Dn=O.makeMessageType(`livekit.RpcError`,()=>[{no:1,name:`code`,kind:`scalar`,T:13},{no:2,name:`message`,kind:`scalar`,T:9},{no:3,name:`data`,kind:`scalar`,T:9}]),On=O.makeMessageType(`livekit.ParticipantTracks`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:2,name:`track_sids`,kind:`scalar`,T:9,repeated:!0}]),kn=O.makeMessageType(`livekit.ServerInfo`,()=>[{no:1,name:`edition`,kind:`enum`,T:O.getEnumType(An)},{no:2,name:`version`,kind:`scalar`,T:9},{no:3,name:`protocol`,kind:`scalar`,T:5},{no:4,name:`region`,kind:`scalar`,T:9},{no:5,name:`node_id`,kind:`scalar`,T:9},{no:6,name:`debug_info`,kind:`scalar`,T:9},{no:7,name:`agent_protocol`,kind:`scalar`,T:5}]),An=O.makeEnum(`livekit.ServerInfo.Edition`,[{no:0,name:`Standard`},{no:1,name:`Cloud`}]),jn=O.makeMessageType(`livekit.ClientInfo`,()=>[{no:1,name:`sdk`,kind:`enum`,T:O.getEnumType(Mn)},{no:2,name:`version`,kind:`scalar`,T:9},{no:3,name:`protocol`,kind:`scalar`,T:5},{no:4,name:`os`,kind:`scalar`,T:9},{no:5,name:`os_version`,kind:`scalar`,T:9},{no:6,name:`device_model`,kind:`scalar`,T:9},{no:7,name:`browser`,kind:`scalar`,T:9},{no:8,name:`browser_version`,kind:`scalar`,T:9},{no:9,name:`address`,kind:`scalar`,T:9},{no:10,name:`network`,kind:`scalar`,T:9},{no:11,name:`other_sdks`,kind:`scalar`,T:9}]),Mn=O.makeEnum(`livekit.ClientInfo.SDK`,[{no:0,name:`UNKNOWN`},{no:1,name:`JS`},{no:2,name:`SWIFT`},{no:3,name:`ANDROID`},{no:4,name:`FLUTTER`},{no:5,name:`GO`},{no:6,name:`UNITY`},{no:7,name:`REACT_NATIVE`},{no:8,name:`RUST`},{no:9,name:`PYTHON`},{no:10,name:`CPP`},{no:11,name:`UNITY_WEB`},{no:12,name:`NODE`},{no:13,name:`UNREAL`},{no:14,name:`ESP32`}]),Nn=O.makeMessageType(`livekit.ClientConfiguration`,()=>[{no:1,name:`video`,kind:`message`,T:Pn},{no:2,name:`screen`,kind:`message`,T:Pn},{no:3,name:`resume_connection`,kind:`enum`,T:O.getEnumType(Yt)},{no:4,name:`disabled_codecs`,kind:`message`,T:Fn},{no:5,name:`force_relay`,kind:`enum`,T:O.getEnumType(Yt)}]),Pn=O.makeMessageType(`livekit.VideoConfiguration`,()=>[{no:1,name:`hardware_encoder`,kind:`enum`,T:O.getEnumType(Yt)}]),Fn=O.makeMessageType(`livekit.DisabledCodecs`,()=>[{no:1,name:`codecs`,kind:`message`,T:tn,repeated:!0},{no:2,name:`publish`,kind:`message`,T:tn,repeated:!0}]),In=O.makeMessageType(`livekit.TimedVersion`,()=>[{no:1,name:`unix_micro`,kind:`scalar`,T:3},{no:2,name:`ticks`,kind:`scalar`,T:5}]),Ln=O.makeEnum(`livekit.DataStream.OperationType`,[{no:0,name:`CREATE`},{no:1,name:`UPDATE`},{no:2,name:`DELETE`},{no:3,name:`REACTION`}]),Rn=O.makeMessageType(`livekit.DataStream.TextHeader`,()=>[{no:1,name:`operation_type`,kind:`enum`,T:O.getEnumType(Ln)},{no:2,name:`version`,kind:`scalar`,T:5},{no:3,name:`reply_to_stream_id`,kind:`scalar`,T:9},{no:4,name:`attached_stream_ids`,kind:`scalar`,T:9,repeated:!0},{no:5,name:`generated`,kind:`scalar`,T:8}],{localName:`DataStream_TextHeader`}),zn=O.makeMessageType(`livekit.DataStream.ByteHeader`,()=>[{no:1,name:`name`,kind:`scalar`,T:9}],{localName:`DataStream_ByteHeader`}),Bn=O.makeMessageType(`livekit.DataStream.Header`,()=>[{no:1,name:`stream_id`,kind:`scalar`,T:9},{no:2,name:`timestamp`,kind:`scalar`,T:3},{no:3,name:`topic`,kind:`scalar`,T:9},{no:4,name:`mime_type`,kind:`scalar`,T:9},{no:5,name:`total_length`,kind:`scalar`,T:4,opt:!0},{no:7,name:`encryption_type`,kind:`enum`,T:O.getEnumType(cn)},{no:8,name:`attributes`,kind:`map`,K:9,V:{kind:`scalar`,T:9}},{no:9,name:`text_header`,kind:`message`,T:Rn,oneof:`content_header`},{no:10,name:`byte_header`,kind:`message`,T:zn,oneof:`content_header`}],{localName:`DataStream_Header`}),Vn=O.makeMessageType(`livekit.DataStream.Chunk`,()=>[{no:1,name:`stream_id`,kind:`scalar`,T:9},{no:2,name:`chunk_index`,kind:`scalar`,T:4},{no:3,name:`content`,kind:`scalar`,T:12},{no:4,name:`version`,kind:`scalar`,T:5},{no:5,name:`iv`,kind:`scalar`,T:12,opt:!0}],{localName:`DataStream_Chunk`}),Hn=O.makeMessageType(`livekit.DataStream.Trailer`,()=>[{no:1,name:`stream_id`,kind:`scalar`,T:9},{no:2,name:`reason`,kind:`scalar`,T:9},{no:3,name:`attributes`,kind:`map`,K:9,V:{kind:`scalar`,T:9}}],{localName:`DataStream_Trailer`}),Un=O.makeMessageType(`livekit.SubscribedAudioCodec`,()=>[{no:1,name:`codec`,kind:`scalar`,T:9},{no:2,name:`enabled`,kind:`scalar`,T:8}]),Wn=O.makeEnum(`livekit.SignalTarget`,[{no:0,name:`PUBLISHER`},{no:1,name:`SUBSCRIBER`}]),Gn=O.makeEnum(`livekit.StreamState`,[{no:0,name:`ACTIVE`},{no:1,name:`PAUSED`}]),Kn=O.makeEnum(`livekit.CandidateProtocol`,[{no:0,name:`UDP`},{no:1,name:`TCP`},{no:2,name:`TLS`}]),qn=O.makeMessageType(`livekit.SignalRequest`,()=>[{no:1,name:`offer`,kind:`message`,T:rr,oneof:`message`},{no:2,name:`answer`,kind:`message`,T:rr,oneof:`message`},{no:3,name:`trickle`,kind:`message`,T:Zn,oneof:`message`},{no:4,name:`add_track`,kind:`message`,T:Xn,oneof:`message`},{no:5,name:`mute`,kind:`message`,T:Qn,oneof:`message`},{no:6,name:`subscription`,kind:`message`,T:ar,oneof:`message`},{no:7,name:`track_setting`,kind:`message`,T:or,oneof:`message`},{no:8,name:`leave`,kind:`message`,T:lr,oneof:`message`},{no:10,name:`update_layers`,kind:`message`,T:dr,oneof:`message`},{no:11,name:`subscription_permission`,kind:`message`,T:Tr,oneof:`message`},{no:12,name:`sync_state`,kind:`message`,T:Or,oneof:`message`},{no:13,name:`simulate`,kind:`message`,T:jr,oneof:`message`},{no:14,name:`ping`,kind:`scalar`,T:3,oneof:`message`},{no:15,name:`update_metadata`,kind:`message`,T:fr,oneof:`message`},{no:16,name:`ping_req`,kind:`message`,T:Mr,oneof:`message`},{no:17,name:`update_audio_track`,kind:`message`,T:sr,oneof:`message`},{no:18,name:`update_video_track`,kind:`message`,T:cr,oneof:`message`}]),Jn=O.makeMessageType(`livekit.SignalResponse`,()=>[{no:1,name:`join`,kind:`message`,T:$n,oneof:`message`},{no:2,name:`answer`,kind:`message`,T:rr,oneof:`message`},{no:3,name:`offer`,kind:`message`,T:rr,oneof:`message`},{no:4,name:`trickle`,kind:`message`,T:Zn,oneof:`message`},{no:5,name:`update`,kind:`message`,T:ir,oneof:`message`},{no:6,name:`track_published`,kind:`message`,T:tr,oneof:`message`},{no:8,name:`leave`,kind:`message`,T:lr,oneof:`message`},{no:9,name:`mute`,kind:`message`,T:Qn,oneof:`message`},{no:10,name:`speakers_changed`,kind:`message`,T:mr,oneof:`message`},{no:11,name:`room_update`,kind:`message`,T:hr,oneof:`message`},{no:12,name:`connection_quality`,kind:`message`,T:_r,oneof:`message`},{no:13,name:`stream_state_update`,kind:`message`,T:yr,oneof:`message`},{no:14,name:`subscribed_quality_update`,kind:`message`,T:Sr,oneof:`message`},{no:15,name:`subscription_permission_update`,kind:`message`,T:Er,oneof:`message`},{no:16,name:`refresh_token`,kind:`scalar`,T:9,oneof:`message`},{no:17,name:`track_unpublished`,kind:`message`,T:nr,oneof:`message`},{no:18,name:`pong`,kind:`scalar`,T:3,oneof:`message`},{no:19,name:`reconnect`,kind:`message`,T:er,oneof:`message`},{no:20,name:`pong_resp`,kind:`message`,T:Nr,oneof:`message`},{no:21,name:`subscription_response`,kind:`message`,T:Ir,oneof:`message`},{no:22,name:`request_response`,kind:`message`,T:Lr,oneof:`message`},{no:23,name:`track_subscribed`,kind:`message`,T:zr,oneof:`message`},{no:24,name:`room_moved`,kind:`message`,T:Dr,oneof:`message`},{no:25,name:`media_sections_requirement`,kind:`message`,T:Wr,oneof:`message`},{no:26,name:`subscribed_audio_codec_update`,kind:`message`,T:Cr,oneof:`message`}]),Yn=O.makeMessageType(`livekit.SimulcastCodec`,()=>[{no:1,name:`codec`,kind:`scalar`,T:9},{no:2,name:`cid`,kind:`scalar`,T:9},{no:4,name:`layers`,kind:`message`,T:dn,repeated:!0},{no:5,name:`video_layer_mode`,kind:`enum`,T:O.getEnumType(fn)}]),Xn=O.makeMessageType(`livekit.AddTrackRequest`,()=>[{no:1,name:`cid`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`type`,kind:`enum`,T:O.getEnumType(Gt)},{no:4,name:`width`,kind:`scalar`,T:13},{no:5,name:`height`,kind:`scalar`,T:13},{no:6,name:`muted`,kind:`scalar`,T:8},{no:7,name:`disable_dtx`,kind:`scalar`,T:8},{no:8,name:`source`,kind:`enum`,T:O.getEnumType(Kt)},{no:9,name:`layers`,kind:`message`,T:dn,repeated:!0},{no:10,name:`simulcast_codecs`,kind:`message`,T:Yn,repeated:!0},{no:11,name:`sid`,kind:`scalar`,T:9},{no:12,name:`stereo`,kind:`scalar`,T:8},{no:13,name:`disable_red`,kind:`scalar`,T:8},{no:14,name:`encryption`,kind:`enum`,T:O.getEnumType(cn)},{no:15,name:`stream`,kind:`scalar`,T:9},{no:16,name:`backup_codec_policy`,kind:`enum`,T:O.getEnumType(Wt)},{no:17,name:`audio_features`,kind:`enum`,T:O.getEnumType($t),repeated:!0}]),Zn=O.makeMessageType(`livekit.TrickleRequest`,()=>[{no:1,name:`candidateInit`,kind:`scalar`,T:9},{no:2,name:`target`,kind:`enum`,T:O.getEnumType(Wn)},{no:3,name:`final`,kind:`scalar`,T:8}]),Qn=O.makeMessageType(`livekit.MuteTrackRequest`,()=>[{no:1,name:`sid`,kind:`scalar`,T:9},{no:2,name:`muted`,kind:`scalar`,T:8}]),$n=O.makeMessageType(`livekit.JoinResponse`,()=>[{no:1,name:`room`,kind:`message`,T:en},{no:2,name:`participant`,kind:`message`,T:rn},{no:3,name:`other_participants`,kind:`message`,T:rn,repeated:!0},{no:4,name:`server_version`,kind:`scalar`,T:9},{no:5,name:`ice_servers`,kind:`message`,T:pr,repeated:!0},{no:6,name:`subscriber_primary`,kind:`scalar`,T:8},{no:7,name:`alternative_url`,kind:`scalar`,T:9},{no:8,name:`client_configuration`,kind:`message`,T:Nn},{no:9,name:`server_region`,kind:`scalar`,T:9},{no:10,name:`ping_timeout`,kind:`scalar`,T:5},{no:11,name:`ping_interval`,kind:`scalar`,T:5},{no:12,name:`server_info`,kind:`message`,T:kn},{no:13,name:`sif_trailer`,kind:`scalar`,T:12},{no:14,name:`enabled_publish_codecs`,kind:`message`,T:tn,repeated:!0},{no:15,name:`fast_publish`,kind:`scalar`,T:8}]),er=O.makeMessageType(`livekit.ReconnectResponse`,()=>[{no:1,name:`ice_servers`,kind:`message`,T:pr,repeated:!0},{no:2,name:`client_configuration`,kind:`message`,T:Nn},{no:3,name:`server_info`,kind:`message`,T:kn},{no:4,name:`last_message_seq`,kind:`scalar`,T:13}]),tr=O.makeMessageType(`livekit.TrackPublishedResponse`,()=>[{no:1,name:`cid`,kind:`scalar`,T:9},{no:2,name:`track`,kind:`message`,T:un}]),nr=O.makeMessageType(`livekit.TrackUnpublishedResponse`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9}]),rr=O.makeMessageType(`livekit.SessionDescription`,()=>[{no:1,name:`type`,kind:`scalar`,T:9},{no:2,name:`sdp`,kind:`scalar`,T:9},{no:3,name:`id`,kind:`scalar`,T:13},{no:4,name:`mid_to_track_id`,kind:`map`,K:9,V:{kind:`scalar`,T:9}}]),ir=O.makeMessageType(`livekit.ParticipantUpdate`,()=>[{no:1,name:`participants`,kind:`message`,T:rn,repeated:!0}]),ar=O.makeMessageType(`livekit.UpdateSubscription`,()=>[{no:1,name:`track_sids`,kind:`scalar`,T:9,repeated:!0},{no:2,name:`subscribe`,kind:`scalar`,T:8},{no:3,name:`participant_tracks`,kind:`message`,T:On,repeated:!0}]),or=O.makeMessageType(`livekit.UpdateTrackSettings`,()=>[{no:1,name:`track_sids`,kind:`scalar`,T:9,repeated:!0},{no:3,name:`disabled`,kind:`scalar`,T:8},{no:4,name:`quality`,kind:`enum`,T:O.getEnumType(qt)},{no:5,name:`width`,kind:`scalar`,T:13},{no:6,name:`height`,kind:`scalar`,T:13},{no:7,name:`fps`,kind:`scalar`,T:13},{no:8,name:`priority`,kind:`scalar`,T:13}]),sr=O.makeMessageType(`livekit.UpdateLocalAudioTrack`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`features`,kind:`enum`,T:O.getEnumType($t),repeated:!0}]),cr=O.makeMessageType(`livekit.UpdateLocalVideoTrack`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`width`,kind:`scalar`,T:13},{no:3,name:`height`,kind:`scalar`,T:13}]),lr=O.makeMessageType(`livekit.LeaveRequest`,()=>[{no:1,name:`can_reconnect`,kind:`scalar`,T:8},{no:2,name:`reason`,kind:`enum`,T:O.getEnumType(Xt)},{no:3,name:`action`,kind:`enum`,T:O.getEnumType(ur)},{no:4,name:`regions`,kind:`message`,T:Pr}]),ur=O.makeEnum(`livekit.LeaveRequest.Action`,[{no:0,name:`DISCONNECT`},{no:1,name:`RESUME`},{no:2,name:`RECONNECT`}]),dr=O.makeMessageType(`livekit.UpdateVideoLayers`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`layers`,kind:`message`,T:dn,repeated:!0}]),fr=O.makeMessageType(`livekit.UpdateParticipantMetadata`,()=>[{no:1,name:`metadata`,kind:`scalar`,T:9},{no:2,name:`name`,kind:`scalar`,T:9},{no:3,name:`attributes`,kind:`map`,K:9,V:{kind:`scalar`,T:9}},{no:4,name:`request_id`,kind:`scalar`,T:13}]),pr=O.makeMessageType(`livekit.ICEServer`,()=>[{no:1,name:`urls`,kind:`scalar`,T:9,repeated:!0},{no:2,name:`username`,kind:`scalar`,T:9},{no:3,name:`credential`,kind:`scalar`,T:9}]),mr=O.makeMessageType(`livekit.SpeakersChanged`,()=>[{no:1,name:`speakers`,kind:`message`,T:vn,repeated:!0}]),hr=O.makeMessageType(`livekit.RoomUpdate`,()=>[{no:1,name:`room`,kind:`message`,T:en}]),gr=O.makeMessageType(`livekit.ConnectionQualityInfo`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:2,name:`quality`,kind:`enum`,T:O.getEnumType(Jt)},{no:3,name:`score`,kind:`scalar`,T:2}]),_r=O.makeMessageType(`livekit.ConnectionQualityUpdate`,()=>[{no:1,name:`updates`,kind:`message`,T:gr,repeated:!0}]),vr=O.makeMessageType(`livekit.StreamStateInfo`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:2,name:`track_sid`,kind:`scalar`,T:9},{no:3,name:`state`,kind:`enum`,T:O.getEnumType(Gn)}]),yr=O.makeMessageType(`livekit.StreamStateUpdate`,()=>[{no:1,name:`stream_states`,kind:`message`,T:vr,repeated:!0}]),br=O.makeMessageType(`livekit.SubscribedQuality`,()=>[{no:1,name:`quality`,kind:`enum`,T:O.getEnumType(qt)},{no:2,name:`enabled`,kind:`scalar`,T:8}]),xr=O.makeMessageType(`livekit.SubscribedCodec`,()=>[{no:1,name:`codec`,kind:`scalar`,T:9},{no:2,name:`qualities`,kind:`message`,T:br,repeated:!0}]),Sr=O.makeMessageType(`livekit.SubscribedQualityUpdate`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`subscribed_qualities`,kind:`message`,T:br,repeated:!0},{no:3,name:`subscribed_codecs`,kind:`message`,T:xr,repeated:!0}]),Cr=O.makeMessageType(`livekit.SubscribedAudioCodecUpdate`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`subscribed_audio_codecs`,kind:`message`,T:Un,repeated:!0}]),wr=O.makeMessageType(`livekit.TrackPermission`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:2,name:`all_tracks`,kind:`scalar`,T:8},{no:3,name:`track_sids`,kind:`scalar`,T:9,repeated:!0},{no:4,name:`participant_identity`,kind:`scalar`,T:9}]),Tr=O.makeMessageType(`livekit.SubscriptionPermission`,()=>[{no:1,name:`all_participants`,kind:`scalar`,T:8},{no:2,name:`track_permissions`,kind:`message`,T:wr,repeated:!0}]),Er=O.makeMessageType(`livekit.SubscriptionPermissionUpdate`,()=>[{no:1,name:`participant_sid`,kind:`scalar`,T:9},{no:2,name:`track_sid`,kind:`scalar`,T:9},{no:3,name:`allowed`,kind:`scalar`,T:8}]),Dr=O.makeMessageType(`livekit.RoomMovedResponse`,()=>[{no:1,name:`room`,kind:`message`,T:en},{no:2,name:`token`,kind:`scalar`,T:9},{no:3,name:`participant`,kind:`message`,T:rn},{no:4,name:`other_participants`,kind:`message`,T:rn,repeated:!0}]),Or=O.makeMessageType(`livekit.SyncState`,()=>[{no:1,name:`answer`,kind:`message`,T:rr},{no:2,name:`subscription`,kind:`message`,T:ar},{no:3,name:`publish_tracks`,kind:`message`,T:tr,repeated:!0},{no:4,name:`data_channels`,kind:`message`,T:Ar,repeated:!0},{no:5,name:`offer`,kind:`message`,T:rr},{no:6,name:`track_sids_disabled`,kind:`scalar`,T:9,repeated:!0},{no:7,name:`datachannel_receive_states`,kind:`message`,T:kr,repeated:!0}]),kr=O.makeMessageType(`livekit.DataChannelReceiveState`,()=>[{no:1,name:`publisher_sid`,kind:`scalar`,T:9},{no:2,name:`last_seq`,kind:`scalar`,T:13}]),Ar=O.makeMessageType(`livekit.DataChannelInfo`,()=>[{no:1,name:`label`,kind:`scalar`,T:9},{no:2,name:`id`,kind:`scalar`,T:13},{no:3,name:`target`,kind:`enum`,T:O.getEnumType(Wn)}]),jr=O.makeMessageType(`livekit.SimulateScenario`,()=>[{no:1,name:`speaker_update`,kind:`scalar`,T:5,oneof:`scenario`},{no:2,name:`node_failure`,kind:`scalar`,T:8,oneof:`scenario`},{no:3,name:`migration`,kind:`scalar`,T:8,oneof:`scenario`},{no:4,name:`server_leave`,kind:`scalar`,T:8,oneof:`scenario`},{no:5,name:`switch_candidate_protocol`,kind:`enum`,T:O.getEnumType(Kn),oneof:`scenario`},{no:6,name:`subscriber_bandwidth`,kind:`scalar`,T:3,oneof:`scenario`},{no:7,name:`disconnect_signal_on_resume`,kind:`scalar`,T:8,oneof:`scenario`},{no:8,name:`disconnect_signal_on_resume_no_messages`,kind:`scalar`,T:8,oneof:`scenario`},{no:9,name:`leave_request_full_reconnect`,kind:`scalar`,T:8,oneof:`scenario`}]),Mr=O.makeMessageType(`livekit.Ping`,()=>[{no:1,name:`timestamp`,kind:`scalar`,T:3},{no:2,name:`rtt`,kind:`scalar`,T:3}]),Nr=O.makeMessageType(`livekit.Pong`,()=>[{no:1,name:`last_ping_timestamp`,kind:`scalar`,T:3},{no:2,name:`timestamp`,kind:`scalar`,T:3}]),Pr=O.makeMessageType(`livekit.RegionSettings`,()=>[{no:1,name:`regions`,kind:`message`,T:Fr,repeated:!0}]),Fr=O.makeMessageType(`livekit.RegionInfo`,()=>[{no:1,name:`region`,kind:`scalar`,T:9},{no:2,name:`url`,kind:`scalar`,T:9},{no:3,name:`distance`,kind:`scalar`,T:3}]),Ir=O.makeMessageType(`livekit.SubscriptionResponse`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9},{no:2,name:`err`,kind:`enum`,T:O.getEnumType(Qt)}]),Lr=O.makeMessageType(`livekit.RequestResponse`,()=>[{no:1,name:`request_id`,kind:`scalar`,T:13},{no:2,name:`reason`,kind:`enum`,T:O.getEnumType(Rr)},{no:3,name:`message`,kind:`scalar`,T:9},{no:4,name:`trickle`,kind:`message`,T:Zn,oneof:`request`},{no:5,name:`add_track`,kind:`message`,T:Xn,oneof:`request`},{no:6,name:`mute`,kind:`message`,T:Qn,oneof:`request`},{no:7,name:`update_metadata`,kind:`message`,T:fr,oneof:`request`},{no:8,name:`update_audio_track`,kind:`message`,T:sr,oneof:`request`},{no:9,name:`update_video_track`,kind:`message`,T:cr,oneof:`request`}]),Rr=O.makeEnum(`livekit.RequestResponse.Reason`,[{no:0,name:`OK`},{no:1,name:`NOT_FOUND`},{no:2,name:`NOT_ALLOWED`},{no:3,name:`LIMIT_EXCEEDED`},{no:4,name:`QUEUED`},{no:5,name:`UNSUPPORTED_TYPE`},{no:6,name:`UNCLASSIFIED_ERROR`}]),zr=O.makeMessageType(`livekit.TrackSubscribed`,()=>[{no:1,name:`track_sid`,kind:`scalar`,T:9}]),Br=O.makeMessageType(`livekit.ConnectionSettings`,()=>[{no:1,name:`auto_subscribe`,kind:`scalar`,T:8},{no:2,name:`adaptive_stream`,kind:`scalar`,T:8},{no:3,name:`subscriber_allow_pause`,kind:`scalar`,T:8,opt:!0},{no:4,name:`disable_ice_lite`,kind:`scalar`,T:8}]),Vr=O.makeMessageType(`livekit.JoinRequest`,()=>[{no:1,name:`client_info`,kind:`message`,T:jn},{no:2,name:`connection_settings`,kind:`message`,T:Br},{no:3,name:`metadata`,kind:`scalar`,T:9},{no:4,name:`participant_attributes`,kind:`map`,K:9,V:{kind:`scalar`,T:9}},{no:5,name:`add_track_requests`,kind:`message`,T:Xn,repeated:!0},{no:6,name:`publisher_offer`,kind:`message`,T:rr},{no:7,name:`reconnect`,kind:`scalar`,T:8},{no:8,name:`reconnect_reason`,kind:`enum`,T:O.getEnumType(Zt)},{no:9,name:`participant_sid`,kind:`scalar`,T:9},{no:10,name:`sync_state`,kind:`message`,T:Or}]),Hr=O.makeMessageType(`livekit.WrappedJoinRequest`,()=>[{no:1,name:`compression`,kind:`enum`,T:O.getEnumType(Ur)},{no:2,name:`join_request`,kind:`scalar`,T:12}]),Ur=O.makeEnum(`livekit.WrappedJoinRequest.Compression`,[{no:0,name:`NONE`},{no:1,name:`GZIP`}]),Wr=O.makeMessageType(`livekit.MediaSectionsRequirement`,()=>[{no:1,name:`num_audios`,kind:`scalar`,T:13},{no:2,name:`num_videos`,kind:`scalar`,T:13}]);function Gr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}var Kr={exports:{}},qr=Kr.exports,Jr;function Yr(){return Jr?Kr.exports:(Jr=1,(function(e){(function(t,n){e.exports?e.exports=n():t.log=n()})(qr,function(){var e=function(){},t=`undefined`,n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=[`trace`,`debug`,`info`,`warn`,`error`],i={},a=null;function o(e,t){var n=e[t];if(typeof n.bind==`function`)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch{return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(r){return r===`debug`&&(r=`log`),typeof console===t?!1:r===`trace`&&n?s:console[r]===void 0?console.log===void 0?e:o(console,`log`):o(console,r)}function l(){for(var n=this.getLevel(),i=0;i<r.length;i++){var a=r[i];this[a]=i<n?e:this.methodFactory(a,n,this.name)}if(this.log=this.debug,typeof console===t&&n<this.levels.SILENT)return`No console available for logging`}function u(e){return function(){typeof console!==t&&(l.call(this),this[e].apply(this,arguments))}}function d(e,t,n){return c(e)||u.apply(this,arguments)}function f(e,n){var o=this,s,c,u,f=`loglevel`;typeof e==`string`?f+=`:`+e:typeof e==`symbol`&&(f=void 0);function p(e){var n=(r[e]||`silent`).toUpperCase();if(!(typeof window===t||!f)){try{window.localStorage[f]=n;return}catch{}try{window.document.cookie=encodeURIComponent(f)+`=`+n+`;`}catch{}}}function m(){var e;if(!(typeof window===t||!f)){try{e=window.localStorage[f]}catch{}if(typeof e===t)try{var n=window.document.cookie,r=encodeURIComponent(f),i=n.indexOf(r+`=`);i!==-1&&(e=/^([^;]+)/.exec(n.slice(i+r.length+1))[1])}catch{}return o.levels[e]===void 0&&(e=void 0),e}}function h(){if(!(typeof window===t||!f)){try{window.localStorage.removeItem(f)}catch{}try{window.document.cookie=encodeURIComponent(f)+`=; expires=Thu, 01 Jan 1970 00:00:00 UTC`}catch{}}}function g(e){var t=e;if(typeof t==`string`&&o.levels[t.toUpperCase()]!==void 0&&(t=o.levels[t.toUpperCase()]),typeof t==`number`&&t>=0&&t<=o.levels.SILENT)return t;throw TypeError(`log.setLevel() called with invalid level: `+e)}o.name=e,o.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},o.methodFactory=n||d,o.getLevel=function(){return u??c??s},o.setLevel=function(e,t){return u=g(e),t!==!1&&p(u),l.call(o)},o.setDefaultLevel=function(e){c=g(e),m()||o.setLevel(e,!1)},o.resetLevel=function(){u=null,h(),l.call(o)},o.enableAll=function(e){o.setLevel(o.levels.TRACE,e)},o.disableAll=function(e){o.setLevel(o.levels.SILENT,e)},o.rebuild=function(){if(a!==o&&(s=g(a.getLevel())),l.call(o),a===o)for(var e in i)i[e].rebuild()},s=g(a?a.getLevel():`WARN`);var _=m();_!=null&&(u=g(_)),l.call(o)}a=new f,a.getLogger=function(e){if(typeof e!=`symbol`&&typeof e!=`string`||e===``)throw TypeError(`You must supply a name when creating a logger.`);var t=i[e];return t||=i[e]=new f(e,a.methodFactory),t};var p=typeof window===t?void 0:window.log;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=p),a},a.getLoggers=function(){return i},a.default=a,a})})(Kr),Kr.exports)}var Xr=Yr(),Zr;(function(e){e[e.trace=0]=`trace`,e[e.debug=1]=`debug`,e[e.info=2]=`info`,e[e.warn=3]=`warn`,e[e.error=4]=`error`,e[e.silent=5]=`silent`})(Zr||={});var Qr;(function(e){e.Default=`livekit`,e.Room=`livekit-room`,e.TokenSource=`livekit-token-source`,e.Participant=`livekit-participant`,e.Track=`livekit-track`,e.Publication=`livekit-track-publication`,e.Engine=`livekit-engine`,e.Signal=`livekit-signal`,e.PCManager=`livekit-pc-manager`,e.PCTransport=`livekit-pc-transport`,e.E2EE=`lk-e2ee`})(Qr||={});var $r=Xr.getLogger(`livekit`);Object.values(Qr).map(e=>Xr.getLogger(e)),$r.setDefaultLevel(Zr.info);function ei(e){let t=Xr.getLogger(e);return t.setDefaultLevel($r.getLevel()),t}var ti=Xr.getLogger(`lk-e2ee`),ni=7e3,ri=[0,300,4*300,9*300,16*300,ni,ni,ni,ni,ni],ii=class{constructor(e){this._retryDelays=e===void 0?ri:[...e]}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;let t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+Math.random()*1e3}};function ai(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function k(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function oi(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function si(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof oi==`function`?oi(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}var ci={exports:{}},li;function ui(){if(li)return ci.exports;li=1;var e=typeof Reflect==`object`?Reflect:null,t=e&&typeof e.apply==`function`?e.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},n=e&&typeof e.ownKeys==`function`?e.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};function r(e){console&&console.warn&&console.warn(e)}var i=Number.isNaN||function(e){return e!==e};function a(){a.init.call(this)}ci.exports=a,ci.exports.once=_,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(e){if(typeof e!=`function`)throw TypeError(`The "listener" argument must be of type Function. Received type `+typeof e)}Object.defineProperty(a,`defaultMaxListeners`,{enumerable:!0,get:function(){return o},set:function(e){if(typeof e!=`number`||e<0||i(e))throw RangeError(`The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received `+e+`.`);o=e}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(e){if(typeof e!=`number`||e<0||i(e))throw RangeError(`The value of "n" is out of range. It must be a non-negative number. Received `+e+`.`);return this._maxListeners=e,this};function c(e){return e._maxListeners===void 0?a.defaultMaxListeners:e._maxListeners}a.prototype.getMaxListeners=function(){return c(this)},a.prototype.emit=function(e){for(var n=[],r=1;r<arguments.length;r++)n.push(arguments[r]);var i=e===`error`,a=this._events;if(a!==void 0)i&&=a.error===void 0;else if(!i)return!1;if(i){var o;if(n.length>0&&(o=n[0]),o instanceof Error)throw o;var s=Error(`Unhandled error.`+(o?` (`+o.message+`)`:``));throw s.context=o,s}var c=a[e];if(c===void 0)return!1;if(typeof c==`function`)t(c,this,n);else for(var l=c.length,u=m(c,l),r=0;r<l;++r)t(u[r],this,n);return!0};function l(e,t,n,i){var a,o,l;if(s(n),o=e._events,o===void 0?(o=e._events=Object.create(null),e._eventsCount=0):(o.newListener!==void 0&&(e.emit(`newListener`,t,n.listener?n.listener:n),o=e._events),l=o[t]),l===void 0)l=o[t]=n,++e._eventsCount;else if(typeof l==`function`?l=o[t]=i?[n,l]:[l,n]:i?l.unshift(n):l.push(n),a=c(e),a>0&&l.length>a&&!l.warned){l.warned=!0;var u=Error(`Possible EventEmitter memory leak detected. `+l.length+` `+String(t)+` listeners added. Use emitter.setMaxListeners() to increase limit`);u.name=`MaxListenersExceededWarning`,u.emitter=e,u.type=t,u.count=l.length,r(u)}return e}a.prototype.addListener=function(e,t){return l(this,e,t,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(e,t){return l(this,e,t,!0)};function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=u.bind(r);return i.listener=n,r.wrapFn=i,i}a.prototype.once=function(e,t){return s(t),this.on(e,d(this,e,t)),this},a.prototype.prependOnceListener=function(e,t){return s(t),this.prependListener(e,d(this,e,t)),this},a.prototype.removeListener=function(e,t){var n,r,i,a,o;if(s(t),r=this._events,r===void 0||(n=r[e],n===void 0))return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit(`removeListener`,e,n.listener||t));else if(typeof n!=`function`){for(i=-1,a=n.length-1;a>=0;a--)if(n[a]===t||n[a].listener===t){o=n[a].listener,i=a;break}if(i<0)return this;i===0?n.shift():h(n,i),n.length===1&&(r[e]=n[0]),r.removeListener!==void 0&&this.emit(`removeListener`,e,o||t)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(e){var t,n=this._events,r;if(n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),a;for(r=0;r<i.length;++r)a=i[r],a!==`removeListener`&&this.removeAllListeners(a);return this.removeAllListeners(`removeListener`),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t==`function`)this.removeListener(e,t);else if(t!==void 0)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this};function f(e,t,n){var r=e._events;if(r===void 0)return[];var i=r[t];return i===void 0?[]:typeof i==`function`?n?[i.listener||i]:[i]:n?g(i):m(i,i.length)}a.prototype.listeners=function(e){return f(this,e,!0)},a.prototype.rawListeners=function(e){return f(this,e,!1)},a.listenerCount=function(e,t){return typeof e.listenerCount==`function`?e.listenerCount(t):p.call(e,t)},a.prototype.listenerCount=p;function p(e){var t=this._events;if(t!==void 0){var n=t[e];if(typeof n==`function`)return 1;if(n!==void 0)return n.length}return 0}a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]};function m(e,t){for(var n=Array(t),r=0;r<t;++r)n[r]=e[r];return n}function h(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function g(e){for(var t=Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}function _(e,t){return new Promise(function(n,r){function i(n){e.removeListener(t,a),r(n)}function a(){typeof e.removeListener==`function`&&e.removeListener(`error`,i),n([].slice.call(arguments))}y(e,t,a,{once:!0}),t!==`error`&&v(e,i,{once:!0})})}function v(e,t,n){typeof e.on==`function`&&y(e,`error`,t,n)}function y(e,t,n,r){if(typeof e.on==`function`)r.once?e.once(t,n):e.on(t,n);else if(typeof e.addEventListener==`function`)e.addEventListener(t,function i(a){r.once&&e.removeEventListener(t,i),n(a)});else throw TypeError(`The "emitter" argument must be of type EventEmitter. Received type `+typeof e)}return ci.exports}var di=ui(),fi=!0,pi=!0;function mi(e,t,n){let r=e.match(t);return r&&r.length>=n&&parseFloat(r[n],10)}function hi(e,t,n){if(!e.RTCPeerConnection)return;let r=e.RTCPeerConnection.prototype;try{r.addEventListener=r.addEventListener}catch(e){console.warn(`livekit-client: skipping RTCPeerConnection event patching — addEventListener is non-writable`,e);return}let i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);let a=e=>{let t=n(e);t&&(r.handleEvent?r.handleEvent(t):r(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(r,a),i.apply(this,[e,a])};let a=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(n))return a.apply(this,arguments);let r=this._eventMap[t].get(n);return this._eventMap[t].delete(n),this._eventMap[t].size===0&&delete this._eventMap[t],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[e,r])},Object.defineProperty(r,`on`+t,{get(){return this[`_on`+t]},set(e){this[`_on`+t]&&(this.removeEventListener(t,this[`_on`+t]),delete this[`_on`+t]),e&&this.addEventListener(t,this[`_on`+t]=e)},enumerable:!0,configurable:!0})}function gi(e){return typeof e==`boolean`?(fi=e,e?`adapter.js logging disabled`:`adapter.js logging enabled`):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function _i(e){return typeof e==`boolean`?(pi=!e,`adapter.js deprecation warnings `+(e?`disabled`:`enabled`)):Error(`Argument type: `+typeof e+`. Please use a boolean.`)}function vi(){if(typeof window==`object`){if(fi)return;typeof console<`u`&&typeof console.log==`function`&&console.log.apply(console,arguments)}}function yi(e,t){pi&&console.warn(e+` is deprecated, please use `+t+` instead.`)}function bi(e){let t={browser:null,version:null};if(e===void 0||!e.navigator||!e.navigator.userAgent)return t.browser=`Not a browser.`,t;let{navigator:n}=e;if(n.userAgentData&&n.userAgentData.brands){let e=n.userAgentData.brands.find(e=>e.brand===`Chromium`);if(e)return{browser:`chrome`,version:parseInt(e.version,10)}}if(n.mozGetUserMedia)t.browser=`firefox`,t.version=parseInt(mi(n.userAgent,/Firefox\/(\d+)\./,1));else if(n.webkitGetUserMedia||e.isSecureContext===!1&&e.webkitRTCPeerConnection)t.browser=`chrome`,t.version=parseInt(mi(n.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else if(e.RTCPeerConnection&&n.userAgent.match(/AppleWebKit\/(\d+)\./))t.browser=`safari`,t.version=parseInt(mi(n.userAgent,/AppleWebKit\/(\d+)\./,1)),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&`currentDirection`in e.RTCRtpTransceiver.prototype,t._safariVersion=mi(n.userAgent,/Version\/(\d+(\.?\d+))/,1);else return t.browser=`Not a supported browser.`,t;return t}function xi(e){return Object.prototype.toString.call(e)===`[object Object]`}function Si(e){return xi(e)?Object.keys(e).reduce(function(t,n){let r=xi(e[n]),i=r?Si(e[n]):e[n],a=r&&!Object.keys(i).length;return i===void 0||a?t:Object.assign(t,{[n]:i})},{}):e}function Ci(e,t,n){!t||n.has(t.id)||(n.set(t.id,t),Object.keys(t).forEach(r=>{r.endsWith(`Id`)?Ci(e,e.get(t[r]),n):r.endsWith(`Ids`)&&t[r].forEach(t=>{Ci(e,e.get(t),n)})}))}function wi(e,t,n){let r=n?`outbound-rtp`:`inbound-rtp`,i=new Map;if(t===null)return i;let a=[];return e.forEach(e=>{e.type===`track`&&e.trackIdentifier===t.id&&a.push(e)}),a.forEach(t=>{e.forEach(n=>{n.type===r&&n.trackId===t.id&&Ci(e,n,i)})}),i}var Ti=vi;function Ei(e,t){let n=e&&e.navigator;if(!n.mediaDevices)return;let r=function(e){if(typeof e!=`object`||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(n=>{if(n===`require`||n===`advanced`||n===`mediaSource`)return;let r=typeof e[n]==`object`?e[n]:{ideal:e[n]};r.exact!==void 0&&typeof r.exact==`number`&&(r.min=r.max=r.exact);let i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):t===`deviceId`?`sourceId`:t};if(r.ideal!==void 0){t.optional=t.optional||[];let e={};typeof r.ideal==`number`?(e[i(`min`,n)]=r.ideal,t.optional.push(e),e={},e[i(`max`,n)]=r.ideal,t.optional.push(e)):(e[i(``,n)]=r.ideal,t.optional.push(e))}r.exact!==void 0&&typeof r.exact!=`number`?(t.mandatory=t.mandatory||{},t.mandatory[i(``,n)]=r.exact):[`min`,`max`].forEach(e=>{r[e]!==void 0&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])})}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if(e=JSON.parse(JSON.stringify(e)),e&&typeof e.audio==`object`){let t=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};e=JSON.parse(JSON.stringify(e)),t(e.audio,`autoGainControl`,`googAutoGainControl`),t(e.audio,`noiseSuppression`,`googNoiseSuppression`),e.audio=r(e.audio)}if(e&&typeof e.video==`object`){let a=e.video.facingMode;a&&=typeof a==`object`?a:{ideal:a};let o=t.version<66;if(a&&(a.exact===`user`||a.exact===`environment`||a.ideal===`user`||a.ideal===`environment`)&&!(n.mediaDevices.getSupportedConstraints&&n.mediaDevices.getSupportedConstraints().facingMode&&!o)){delete e.video.facingMode;let t;if(a.exact===`environment`||a.ideal===`environment`?t=[`back`,`rear`]:(a.exact===`user`||a.ideal===`user`)&&(t=[`front`]),t)return n.mediaDevices.enumerateDevices().then(n=>{n=n.filter(e=>e.kind===`videoinput`);let o=n.find(e=>t.some(t=>e.label.toLowerCase().includes(t)));return!o&&n.length&&t.includes(`back`)&&(o=n[n.length-1]),o&&(e.video.deviceId=a.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=r(e.video),Ti(`chrome: `+JSON.stringify(e)),i(e)})}e.video=r(e.video)}return Ti(`chrome: `+JSON.stringify(e)),i(e)},a=function(e){return t.version>=64?e:{name:{PermissionDeniedError:`NotAllowedError`,PermissionDismissedError:`NotAllowedError`,InvalidStateError:`NotAllowedError`,DevicesNotFoundError:`NotFoundError`,ConstraintNotSatisfiedError:`OverconstrainedError`,TrackStartError:`NotReadableError`,MediaDeviceFailedDueToShutdown:`NotAllowedError`,MediaDeviceKillSwitchOn:`NotAllowedError`,TabCaptureError:`AbortError`,ScreenCaptureError:`AbortError`,DeviceCaptureError:`AbortError`}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&`: `)+this.message}}};if(n.getUserMedia=function(e,t,r){i(e,e=>{n.webkitGetUserMedia(e,t,e=>{r&&r(a(e))})})}.bind(n),n.mediaDevices.getUserMedia){let e=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(t){return i(t,t=>e(t).then(e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach(e=>{e.stop()}),new DOMException(``,`NotFoundError`);return e},e=>Promise.reject(a(e))))}}}function Di(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Oi(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`ontrack`in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,`ontrack`,{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener(`track`,this._ontrack),this.addEventListener(`track`,this._ontrack=e)},enumerable:!0,configurable:!0});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener(`addtrack`,n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.track.id):{track:n.track};let i=new Event(`track`);i.track=n.track,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)}),t.stream.getTracks().forEach(n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===n.id):{track:n};let i=new Event(`track`);i.track=n,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)})},this.addEventListener(`addstream`,this._ontrackpoly)),t.apply(this,arguments)}}else hi(e,`track`,e=>(e.transceiver||Object.defineProperty(e,`transceiver`,{value:{receiver:e.receiver}}),e))}function ki(e){if(typeof e==`object`&&e.RTCPeerConnection&&!(`getSenders`in e.RTCPeerConnection.prototype)&&`createDTMFSender`in e.RTCPeerConnection.prototype){let t=function(e,t){return{track:t,get dtmf(){return this._dtmf===void 0&&(t.kind===`audio`?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){let i=n.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};let r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){r.apply(this,arguments);let t=this._senders.indexOf(e);t!==-1&&this._senders.splice(t,1)}}let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{this._senders.push(t(this,e))})};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach(e=>{let t=this._senders.find(t=>t.track===e);t&&this._senders.splice(this._senders.indexOf(t),1)})}}else if(typeof e==`object`&&e.RTCPeerConnection&&`getSenders`in e.RTCPeerConnection.prototype&&`createDTMFSender`in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!(`dtmf`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e},Object.defineProperty(e.RTCRtpSender.prototype,`dtmf`,{get(){return this._dtmf===void 0&&(this.track.kind===`audio`?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ai(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!(`getStats`in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>wi(t,e.track,!0))}}if(!(`getStats`in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),hi(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>wi(t,e.track,!1))}}if(!(`getStats`in e.RTCRtpSender.prototype&&`getStats`in e.RTCRtpReceiver.prototype))return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e=arguments[0],t,n,r;return this.getSenders().forEach(n=>{n.track===e&&(t?r=!0:t=n)}),this.getReceivers().forEach(t=>(t.track===e&&(n?r=!0:n=t),t.track===e)),r||t&&n?Promise.reject(new DOMException(`There are more than one sender or receiver for the track.`,`InvalidAccessError`)):t?t.getStats():n?n.getStats():Promise.reject(new DOMException(`There is no sender or receiver for the track.`,`InvalidAccessError`))}return t.apply(this,arguments)}}function ji(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?this._shimmedLocalStreams[n.id].indexOf(r)===-1&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};let n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)});let t=this.getSenders();n.apply(this,arguments);let r=this.getSenders().filter(e=>t.indexOf(e)===-1);this._shimmedLocalStreams[e.id]=[e].concat(r)};let r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};let i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let n=this._shimmedLocalStreams[t].indexOf(e);n!==-1&&this._shimmedLocalStreams[t].splice(n,1),this._shimmedLocalStreams[t].length===1&&delete this._shimmedLocalStreams[t]}),i.apply(this,arguments)}}function Mi(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return ji(e);let n=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=n.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach(e=>{if(this.getSenders().find(t=>t.track===e))throw new DOMException(`Track already exists.`,`InvalidAccessError`)}),!this._reverseStreams[t.id]){let n=new e.MediaStream(t.getTracks());this._streams[t.id]=n,this._reverseStreams[n.id]=t,t=n}r.apply(this,[t])};let i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);let r=[].slice.call(arguments,1);if(r.length!==1||!r[0].getTracks().find(e=>e===t))throw new DOMException(`The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.`,`NotSupportedError`);if(this.getSenders().find(e=>e.track===t))throw new DOMException(`Track already exists.`,`InvalidAccessError`);this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let i=this._streams[n.id];if(i)i.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event(`negotiationneeded`))});else{let r=new e.MediaStream([t]);this._streams[n.id]=r,this._reverseStreams[r.id]=n,this.addStream(r)}return this.getSenders().find(e=>e.track===t)};function a(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,`g`),r.id)}),new RTCSessionDescription({type:t.type,sdp:n})}function o(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,`g`),i.id)}),new RTCSessionDescription({type:t.type,sdp:n})}[`createOffer`,`createAnswer`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){let e=arguments;return arguments.length&&typeof arguments[0]==`function`?n.apply(this,[t=>{let n=a(this,t);e[0].apply(null,[n])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):n.apply(this,arguments).then(e=>a(this,e))}};e.RTCPeerConnection.prototype[t]=r[t]});let s=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type||(arguments[0]=o(this,arguments[0])),s.apply(this,arguments)};let c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,`localDescription`);Object.defineProperty(e.RTCPeerConnection.prototype,`localDescription`,{get(){let e=c.get.apply(this);return e.type===``?e:a(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if(this.signalingState===`closed`)throw new DOMException(`The RTCPeerConnection's signalingState is 'closed'.`,`InvalidStateError`);if(!e._pc)throw new DOMException(`Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.`,`TypeError`);if(e._pc!==this)throw new DOMException(`Sender was not created by this connection.`,`InvalidAccessError`);this._streams=this._streams||{};let t;Object.keys(this._streams).forEach(n=>{this._streams[n].getTracks().find(t=>e.track===t)&&(t=this._streams[n])}),t&&(t.getTracks().length===1?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event(`negotiationneeded`)))}}function Ni(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]})}function Pi(e,t){hi(e,`negotiationneeded`,e=>{let n=e.target;if(!((t.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics===`plan-b`)&&n.signalingState!==`stable`))return e})}var Fi=Object.freeze({__proto__:null,fixNegotiationNeeded:Pi,shimAddTrackRemoveTrack:Mi,shimAddTrackRemoveTrackWithNative:ji,shimGetSendersWithDtmf:ki,shimGetUserMedia:Ei,shimMediaStream:Di,shimOnTrack:Oi,shimPeerConnection:Ni,shimSenderReceiverGetStats:Ai});function Ii(e,t){let n=e&&e.navigator,r=e&&e.MediaStreamTrack;if(n.getUserMedia=function(e,t,r){yi(`navigator.getUserMedia`,`navigator.mediaDevices.getUserMedia`),n.mediaDevices.getUserMedia(e).then(t,r)},!(t.version>55&&`autoGainControl`in n.mediaDevices.getSupportedConstraints())){let e=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},t=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(n.mediaDevices.getUserMedia=function(n){return typeof n==`object`&&typeof n.audio==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n.audio,`autoGainControl`,`mozAutoGainControl`),e(n.audio,`noiseSuppression`,`mozNoiseSuppression`)),t(n)},r&&r.prototype.getSettings){let t=r.prototype.getSettings;r.prototype.getSettings=function(){let n=t.apply(this,arguments);return e(n,`mozAutoGainControl`,`autoGainControl`),e(n,`mozNoiseSuppression`,`noiseSuppression`),n}}if(r&&r.prototype.applyConstraints){let t=r.prototype.applyConstraints;r.prototype.applyConstraints=function(n){return this.kind===`audio`&&typeof n==`object`&&(n=JSON.parse(JSON.stringify(n)),e(n,`autoGainControl`,`mozAutoGainControl`),e(n,`noiseSuppression`,`mozNoiseSuppression`)),t.apply(this,[n])}}}}function Li(e,t){e.navigator.mediaDevices&&`getDisplayMedia`in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){let e=new DOMException(`getDisplayMedia without video constraints is undefined`);return e.name=`NotFoundError`,e.code=8,Promise.reject(e)}return n.video===!0?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}function Ri(e){typeof e==`object`&&e.RTCTrackEvent&&`receiver`in e.RTCTrackEvent.prototype&&!(`transceiver`in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,`transceiver`,{get(){return{receiver:this.receiver}}})}function zi(e,t){if(typeof e!=`object`||!(e.RTCPeerConnection||e.mozRTCPeerConnection))return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&[`setLocalDescription`,`setRemoteDescription`,`addIceCandidate`].forEach(function(t){let n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new(t===`addIceCandidate`?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]});let n={inboundrtp:`inbound-rtp`,outboundrtp:`outbound-rtp`,candidatepair:`candidate-pair`,localcandidate:`local-candidate`,remotecandidate:`remote-candidate`},r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[e,i,a]=arguments;return r.apply(this,[e||null]).then(e=>{if(t.version<53&&!i)try{e.forEach(e=>{e.type=n[e.type]||e.type})}catch(t){if(t.name!==`TypeError`)throw t;e.forEach((t,r)=>{e.set(r,Object.assign({},t,{type:n[t.type]||t.type}))})}return e}).then(i,a)}}function Bi(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Vi(e){if(!(typeof e==`object`&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&`getStats`in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),hi(e,`track`,e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Hi(e){!e.RTCPeerConnection||`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){yi(`removeStream`,`removeTrack`),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function Ui(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Wi(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;e===void 0&&(e=[]),e=[...e];let n=e.length>0;n&&e.forEach(e=>{if(`rid`in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError(`Invalid RID value provided.`);if(`scaleResolutionDownBy`in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError(`scale_resolution_down_by must be >= 1.0`);if(`maxFramerate`in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError(`max_framerate must be >= 0.0`)});let r=t.apply(this,arguments);if(n){let{sender:t}=r,n=t.getParameters();(!(`encodings`in n)||n.encodings.length===1&&Object.keys(n.encodings[0]).length===0)&&(n.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(n).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return r})}function Gi(e){if(!(typeof e==`object`&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return`encodings`in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Ki(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}function qi(e){if(!(typeof e==`object`&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>t.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):t.apply(this,arguments)}}var Ji=Object.freeze({__proto__:null,shimAddTransceiver:Wi,shimCreateAnswer:qi,shimCreateOffer:Ki,shimGetDisplayMedia:Li,shimGetParameters:Gi,shimGetUserMedia:Ii,shimOnTrack:Ri,shimPeerConnection:zi,shimRTCDataChannel:Ui,shimReceiverGetStats:Vi,shimRemoveStream:Hi,shimSenderGetStats:Bi});function Yi(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)){if(`getLocalStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||=[],this._localStreams}),!(`addStream`in e.RTCPeerConnection.prototype)){let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||=[],this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach(n=>t.call(this,n,e)),e.getVideoTracks().forEach(n=>t.call(this,n,e))},e.RTCPeerConnection.prototype.addTrack=function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return r&&r.forEach(e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]}),t.apply(this,arguments)}}`removeStream`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||=[];let t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);let n=e.getTracks();this.getSenders().forEach(e=>{n.includes(e.track)&&this.removeTrack(e)})})}}function Xi(e){if(!(typeof e!=`object`||!e.RTCPeerConnection)&&(`getRemoteStreams`in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!(`onaddstream`in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,`onaddstream`,{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener(`addstream`,this._onaddstream),this.removeEventListener(`track`,this._onaddstreampoly)),this.addEventListener(`addstream`,this._onaddstream=e),this.addEventListener(`track`,this._onaddstreampoly=e=>{e.streams.forEach(e=>{if(this._remoteStreams||=[],this._remoteStreams.includes(e))return;this._remoteStreams.push(e);let t=new Event(`addstream`);t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let e=this;return this._onaddstreampoly||this.addEventListener(`track`,this._onaddstreampoly=function(t){t.streams.forEach(t=>{if(e._remoteStreams||=[],e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);let n=new Event(`addstream`);n.stream=t,e.dispatchEvent(n)})}),t.apply(e,arguments)}}}function Zi(e){if(typeof e!=`object`||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){let r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){let n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};let s=function(e,t,n){let r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=s,s=function(e,t,n){let r=a.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=s,s=function(e,t,n){let r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=s}function Qi(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,n=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>n($i(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t))}function $i(e){return e&&e.video!==void 0?Object.assign({},e,{video:Si(e.video)}):e}function ea(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){let t=[];for(let n=0;n<e.iceServers.length;n++){let r=e.iceServers[n];r.urls===void 0&&r.url?(yi(`RTCIceServer.url`,`RTCIceServer.urls`),r=JSON.parse(JSON.stringify(r)),r.urls=r.url,delete r.url,t.push(r)):t.push(e.iceServers[n])}e.iceServers=t}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,`generateCertificate`in t&&Object.defineProperty(e.RTCPeerConnection,`generateCertificate`,{get(){return t.generateCertificate}})}function ta(e){typeof e==`object`&&e.RTCTrackEvent&&`receiver`in e.RTCTrackEvent.prototype&&!(`transceiver`in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,`transceiver`,{get(){return{receiver:this.receiver}}})}function na(e){let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){e.offerToReceiveAudio!==void 0&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);let t=this.getTransceivers().find(e=>e.receiver.track.kind===`audio`);e.offerToReceiveAudio===!1&&t?t.direction===`sendrecv`?t.setDirection?t.setDirection(`sendonly`):t.direction=`sendonly`:t.direction===`recvonly`&&(t.setDirection?t.setDirection(`inactive`):t.direction=`inactive`):e.offerToReceiveAudio===!0&&!t&&this.addTransceiver(`audio`,{direction:`recvonly`}),e.offerToReceiveVideo!==void 0&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);let n=this.getTransceivers().find(e=>e.receiver.track.kind===`video`);e.offerToReceiveVideo===!1&&n?n.direction===`sendrecv`?n.setDirection?n.setDirection(`sendonly`):n.direction=`sendonly`:n.direction===`recvonly`&&(n.setDirection?n.setDirection(`inactive`):n.direction=`inactive`):e.offerToReceiveVideo===!0&&!n&&this.addTransceiver(`video`,{direction:`recvonly`})}return t.apply(this,arguments)}}function ra(e){typeof e!=`object`||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var ia=Object.freeze({__proto__:null,shimAudioContext:ra,shimCallbacksAPI:Zi,shimConstraints:$i,shimCreateOfferLegacy:na,shimGetUserMedia:Qi,shimLocalStreamsAPI:Yi,shimRTCIceServerUrls:ea,shimRemoteStreamsAPI:Xi,shimTrackEventTransceiver:ta}),aa={exports:{}},oa;function sa(){return oa?aa.exports:(oa=1,(function(e){let t={};t.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split(`
3
3
  `).map(e=>e.trim())},t.splitSections=function(e){return e.split(`
4
4
  m=`).map((e,t)=>(t>0?`m=`+e:e).trim()+`\r
@@ -35,7 +35,7 @@ a=extmap-allow-mixed`)!==-1){let n=t.sdp.split(`
35
35
  `).filter(e=>e.trim()!==`a=extmap-allow-mixed`).join(`
36
36
  `);e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return n.apply(this,arguments)}}function _a(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let n=e.RTCPeerConnection.prototype.addIceCandidate;!n||n.length===0||(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(t.browser===`chrome`&&t.version<78||t.browser===`firefox`&&t.version<68||t.browser===`safari`)&&arguments[0]&&arguments[0].candidate===``?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function va(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let n=e.RTCPeerConnection.prototype.setLocalDescription;!n||n.length===0||(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if(typeof e!=`object`||e.type&&e.sdp)return n.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case`stable`:case`have-local-offer`:case`have-remote-pranswer`:e.type=`offer`;break;default:e.type=`answer`;break}return e.sdp||e.type!==`offer`&&e.type!==`answer`?n.apply(this,[e]):(e.type===`offer`?this.createOffer:this.createAnswer).apply(this).then(e=>n.apply(this,[e]))})}var ya=Object.freeze({__proto__:null,removeExtmapAllowMixed:ga,shimAddIceCandidateNullOrEmpty:_a,shimConnectionState:ha,shimMaxMessageSize:pa,shimParameterlessSetLocalDescription:va,shimRTCIceCandidate:da,shimRTCIceCandidateRelayProtocol:fa,shimSendThrowTypeError:ma});function ba(){let{window:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},n=vi,r=bi(e),i={browserDetails:r,commonShim:ya,extractVersion:mi,disableLog:gi,disableWarnings:_i,sdp:ua};switch(r.browser){case`chrome`:if(!Fi||!Ni||!t.shimChrome)return n(`Chrome shim is not included in this adapter release.`),i;if(r.version===null)return n(`Chrome shim can not determine version, not shimming.`),i;n(`adapter.js shimming chrome.`),i.browserShim=Fi,_a(e,r),va(e),Ei(e,r),Di(e),Ni(e,r),Oi(e),Mi(e,r),ki(e),Ai(e),Pi(e,r),da(e),fa(e),ha(e),pa(e,r),ma(e),ga(e,r);break;case`firefox`:if(!Ji||!zi||!t.shimFirefox)return n(`Firefox shim is not included in this adapter release.`),i;n(`adapter.js shimming firefox.`),i.browserShim=Ji,_a(e,r),va(e),Ii(e,r),zi(e,r),Ri(e),Hi(e),Bi(e),Vi(e),Ui(e),Wi(e),Gi(e),Ki(e),qi(e),da(e),ha(e),pa(e,r),ma(e);break;case`safari`:if(!ia||!t.shimSafari)return n(`Safari shim is not included in this adapter release.`),i;n(`adapter.js shimming safari.`),i.browserShim=ia,_a(e,r),va(e),ea(e),na(e),Zi(e),Yi(e),Xi(e),ta(e),Qi(e),ra(e),da(e),fa(e),pa(e,r),ma(e),ga(e,r);break;default:n(`Unsupported browser!`);break}return i}ba({window:typeof window>`u`?void 0:window});var xa=/version\/(\d+(\.?_?\d+)+)/i,Sa;function Ca(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e===void 0&&typeof navigator>`u`)return;let n=(e??navigator.userAgent).toLowerCase();return(Sa===void 0||t)&&(Sa=wa.find(e=>{let{test:t}=e;return t.test(n)})?.describe(n)),Sa}var wa=[{test:/firefox|iceweasel|fxios/i,describe(e){return{name:`Firefox`,version:Ta(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes(`fxios`)?`iOS`:void 0,osVersion:Ea(e)}}},{test:/chrom|crios|crmo/i,describe(e){return{name:`Chrome`,version:Ta(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes(`crios`)?`iOS`:void 0,osVersion:Ea(e)}}},{test:/safari|applewebkit/i,describe(e){return{name:`Safari`,version:Ta(xa,e),os:e.includes(`mobile/`)?`iOS`:`macOS`,osVersion:Ea(e)}}}];function Ta(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,r=t.match(e);return r&&r.length>=n&&r[n]||``}function Ea(e){return e.includes(`mac os`)?Ta(/\(.+?(\d+_\d+(:?_\d+)?)/,e,1).replace(/_/g,`.`):void 0}var Da=`2.16.1`,Oa=class extends Error{constructor(e,t){super(t||`an error has occured`),this.name=`LiveKitError`,this.code=e}},ka;(function(e){e[e.NotAllowed=0]=`NotAllowed`,e[e.ServerUnreachable=1]=`ServerUnreachable`,e[e.InternalError=2]=`InternalError`,e[e.Cancelled=3]=`Cancelled`,e[e.LeaveRequest=4]=`LeaveRequest`,e[e.Timeout=5]=`Timeout`,e[e.WebSocket=6]=`WebSocket`})(ka||={});var Aa=class e extends Oa{constructor(e,t,n,r){super(1,e),this.name=`ConnectionError`,this.status=n,this.reason=t,this.context=r,this.reasonName=ka[t]}static notAllowed(t,n,r){return new e(t,ka.NotAllowed,n,r)}static timeout(t){return new e(t,ka.Timeout)}static leaveRequest(t,n){return new e(t,ka.LeaveRequest,void 0,n)}static internal(t,n){return new e(t,ka.InternalError,void 0,n)}static cancelled(t){return new e(t,ka.Cancelled)}static serverUnreachable(t,n){return new e(t,ka.ServerUnreachable,n)}static websocket(t,n,r){return new e(t,ka.WebSocket,n,r)}},ja=class extends Oa{constructor(e){super(21,e??`device is unsupported`),this.name=`DeviceUnsupportedError`}},Ma=class extends Oa{constructor(e){super(20,e??`track is invalid`),this.name=`TrackInvalidError`}},Na=class extends Oa{constructor(e){super(10,e??`unsupported server`),this.name=`UnsupportedServer`}},Pa=class extends Oa{constructor(e){super(12,e??`unexpected connection state`),this.name=`UnexpectedConnectionState`}},Fa=class extends Oa{constructor(e){super(13,e??`unable to negotiate`),this.name=`NegotiationError`}},Ia=class extends Oa{constructor(e,t){super(15,e),this.name=`PublishTrackError`,this.status=t}},La=class extends Oa{constructor(e,t){super(15,e),this.name=`SignalRequestError`,this.reason=t,this.reasonName=typeof t==`string`?t:Rr[t]}},Ra;(function(e){e[e.AlreadyOpened=0]=`AlreadyOpened`,e[e.AbnormalEnd=1]=`AbnormalEnd`,e[e.DecodeFailed=2]=`DecodeFailed`,e[e.LengthExceeded=3]=`LengthExceeded`,e[e.Incomplete=4]=`Incomplete`,e[e.HandlerAlreadyRegistered=7]=`HandlerAlreadyRegistered`,e[e.EncryptionTypeMismatch=8]=`EncryptionTypeMismatch`})(Ra||={});var za=class extends Oa{constructor(e,t){super(16,e),this.name=`DataStreamError`,this.reason=t,this.reasonName=Ra[t]}},Ba=class extends Oa{constructor(e){super(18,e),this.name=`SignalReconnectError`}},Va;(function(e){e.PermissionDenied=`PermissionDenied`,e.NotFound=`NotFound`,e.DeviceInUse=`DeviceInUse`,e.Other=`Other`})(Va||={}),(function(e){function t(t){if(t&&`name`in t)return t.name===`NotFoundError`||t.name===`DevicesNotFoundError`?e.NotFound:t.name===`NotAllowedError`||t.name===`PermissionDeniedError`?e.PermissionDenied:t.name===`NotReadableError`||t.name===`TrackStartError`?e.DeviceInUse:e.Other}e.getFailure=t})(Va||={});var Ha=class{};Ha.setTimeout=function(){return setTimeout(...arguments)},Ha.setInterval=function(){return setInterval(...arguments)},Ha.clearTimeout=function(){return clearTimeout(...arguments)},Ha.clearInterval=function(){return clearInterval(...arguments)};var A;(function(e){e.Connected=`connected`,e.Reconnecting=`reconnecting`,e.SignalReconnecting=`signalReconnecting`,e.Reconnected=`reconnected`,e.Disconnected=`disconnected`,e.ConnectionStateChanged=`connectionStateChanged`,e.Moved=`moved`,e.MediaDevicesChanged=`mediaDevicesChanged`,e.ParticipantConnected=`participantConnected`,e.ParticipantDisconnected=`participantDisconnected`,e.TrackPublished=`trackPublished`,e.TrackSubscribed=`trackSubscribed`,e.TrackSubscriptionFailed=`trackSubscriptionFailed`,e.TrackUnpublished=`trackUnpublished`,e.TrackUnsubscribed=`trackUnsubscribed`,e.TrackMuted=`trackMuted`,e.TrackUnmuted=`trackUnmuted`,e.LocalTrackPublished=`localTrackPublished`,e.LocalTrackUnpublished=`localTrackUnpublished`,e.LocalAudioSilenceDetected=`localAudioSilenceDetected`,e.ActiveSpeakersChanged=`activeSpeakersChanged`,e.ParticipantMetadataChanged=`participantMetadataChanged`,e.ParticipantNameChanged=`participantNameChanged`,e.ParticipantAttributesChanged=`participantAttributesChanged`,e.ParticipantActive=`participantActive`,e.RoomMetadataChanged=`roomMetadataChanged`,e.DataReceived=`dataReceived`,e.SipDTMFReceived=`sipDTMFReceived`,e.TranscriptionReceived=`transcriptionReceived`,e.ConnectionQualityChanged=`connectionQualityChanged`,e.TrackStreamStateChanged=`trackStreamStateChanged`,e.TrackSubscriptionPermissionChanged=`trackSubscriptionPermissionChanged`,e.TrackSubscriptionStatusChanged=`trackSubscriptionStatusChanged`,e.AudioPlaybackStatusChanged=`audioPlaybackChanged`,e.VideoPlaybackStatusChanged=`videoPlaybackChanged`,e.MediaDevicesError=`mediaDevicesError`,e.ParticipantPermissionsChanged=`participantPermissionsChanged`,e.SignalConnected=`signalConnected`,e.RecordingStatusChanged=`recordingStatusChanged`,e.ParticipantEncryptionStatusChanged=`participantEncryptionStatusChanged`,e.EncryptionError=`encryptionError`,e.DCBufferStatusChanged=`dcBufferStatusChanged`,e.ActiveDeviceChanged=`activeDeviceChanged`,e.ChatMessage=`chatMessage`,e.LocalTrackSubscribed=`localTrackSubscribed`,e.MetricsReceived=`metricsReceived`})(A||={});var j;(function(e){e.TrackPublished=`trackPublished`,e.TrackSubscribed=`trackSubscribed`,e.TrackSubscriptionFailed=`trackSubscriptionFailed`,e.TrackUnpublished=`trackUnpublished`,e.TrackUnsubscribed=`trackUnsubscribed`,e.TrackMuted=`trackMuted`,e.TrackUnmuted=`trackUnmuted`,e.LocalTrackPublished=`localTrackPublished`,e.LocalTrackUnpublished=`localTrackUnpublished`,e.LocalTrackCpuConstrained=`localTrackCpuConstrained`,e.LocalSenderCreated=`localSenderCreated`,e.ParticipantMetadataChanged=`participantMetadataChanged`,e.ParticipantNameChanged=`participantNameChanged`,e.DataReceived=`dataReceived`,e.SipDTMFReceived=`sipDTMFReceived`,e.TranscriptionReceived=`transcriptionReceived`,e.IsSpeakingChanged=`isSpeakingChanged`,e.ConnectionQualityChanged=`connectionQualityChanged`,e.TrackStreamStateChanged=`trackStreamStateChanged`,e.TrackSubscriptionPermissionChanged=`trackSubscriptionPermissionChanged`,e.TrackSubscriptionStatusChanged=`trackSubscriptionStatusChanged`,e.TrackCpuConstrained=`trackCpuConstrained`,e.MediaDevicesError=`mediaDevicesError`,e.AudioStreamAcquired=`audioStreamAcquired`,e.ParticipantPermissionsChanged=`participantPermissionsChanged`,e.PCTrackAdded=`pcTrackAdded`,e.AttributesChanged=`attributesChanged`,e.LocalTrackSubscribed=`localTrackSubscribed`,e.ChatMessage=`chatMessage`,e.Active=`active`})(j||={});var M;(function(e){e.TransportsCreated=`transportsCreated`,e.Connected=`connected`,e.Disconnected=`disconnected`,e.Resuming=`resuming`,e.Resumed=`resumed`,e.Restarting=`restarting`,e.Restarted=`restarted`,e.SignalResumed=`signalResumed`,e.SignalRestarted=`signalRestarted`,e.Closing=`closing`,e.MediaTrackAdded=`mediaTrackAdded`,e.ActiveSpeakersUpdate=`activeSpeakersUpdate`,e.DataPacketReceived=`dataPacketReceived`,e.RTPVideoMapUpdate=`rtpVideoMapUpdate`,e.DCBufferStatusChanged=`dcBufferStatusChanged`,e.ParticipantUpdate=`participantUpdate`,e.RoomUpdate=`roomUpdate`,e.SpeakersChanged=`speakersChanged`,e.StreamStateChanged=`streamStateChanged`,e.ConnectionQualityUpdate=`connectionQualityUpdate`,e.SubscriptionError=`subscriptionError`,e.SubscriptionPermissionUpdate=`subscriptionPermissionUpdate`,e.RemoteMute=`remoteMute`,e.SubscribedQualityUpdate=`subscribedQualityUpdate`,e.LocalTrackUnpublished=`localTrackUnpublished`,e.LocalTrackSubscribed=`localTrackSubscribed`,e.Offline=`offline`,e.SignalRequestResponse=`signalRequestResponse`,e.SignalConnected=`signalConnected`,e.RoomMoved=`roomMoved`})(M||={});var N;(function(e){e.Message=`message`,e.Muted=`muted`,e.Unmuted=`unmuted`,e.Restarted=`restarted`,e.Ended=`ended`,e.Subscribed=`subscribed`,e.Unsubscribed=`unsubscribed`,e.CpuConstrained=`cpuConstrained`,e.UpdateSettings=`updateSettings`,e.UpdateSubscription=`updateSubscription`,e.AudioPlaybackStarted=`audioPlaybackStarted`,e.AudioPlaybackFailed=`audioPlaybackFailed`,e.AudioSilenceDetected=`audioSilenceDetected`,e.VisibilityChanged=`visibilityChanged`,e.VideoDimensionsChanged=`videoDimensionsChanged`,e.VideoPlaybackStarted=`videoPlaybackStarted`,e.VideoPlaybackFailed=`videoPlaybackFailed`,e.ElementAttached=`elementAttached`,e.ElementDetached=`elementDetached`,e.UpstreamPaused=`upstreamPaused`,e.UpstreamResumed=`upstreamResumed`,e.SubscriptionPermissionChanged=`subscriptionPermissionChanged`,e.SubscriptionStatusChanged=`subscriptionStatusChanged`,e.SubscriptionFailed=`subscriptionFailed`,e.TrackProcessorUpdate=`trackProcessorUpdate`,e.AudioTrackFeatureUpdate=`audioTrackFeatureUpdate`,e.TranscriptionReceived=`transcriptionReceived`,e.TimeSyncUpdate=`timeSyncUpdate`,e.PreConnectBufferFlushed=`preConnectBufferFlushed`})(N||={});function Ua(e){return e===void 0?e:typeof structuredClone==`function`?typeof e==`object`&&e?structuredClone(Object.assign({},e)):structuredClone(e):JSON.parse(JSON.stringify(e))}var Wa=class{constructor(e,t,n,r,i){if(typeof e==`object`)this.width=e.width,this.height=e.height,this.aspectRatio=e.aspectRatio,this.encoding={maxBitrate:e.maxBitrate,maxFramerate:e.maxFramerate,priority:e.priority};else if(t!==void 0&&n!==void 0)this.width=e,this.height=t,this.aspectRatio=e/t,this.encoding={maxBitrate:n,maxFramerate:r,priority:i};else throw TypeError(`Unsupported options: provide at least width, height and maxBitrate`)}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}},Ga=[`vp8`,`h264`],Ka=[`vp8`,`h264`,`vp9`,`av1`,`h265`];function qa(e){return!!Ga.find(t=>t===e)}var Ja=qa,Ya;(function(e){e[e.PREFER_REGRESSION=0]=`PREFER_REGRESSION`,e[e.SIMULCAST=1]=`SIMULCAST`,e[e.REGRESSION=2]=`REGRESSION`})(Ya||={});var Xa;(function(e){e.telephone={maxBitrate:12e3},e.speech={maxBitrate:24e3},e.music={maxBitrate:48e3},e.musicStereo={maxBitrate:64e3},e.musicHighQuality={maxBitrate:96e3},e.musicHighQualityStereo={maxBitrate:128e3}})(Xa||={});var Za={h90:new Wa(160,90,9e4,20),h180:new Wa(320,180,16e4,20),h216:new Wa(384,216,18e4,20),h360:new Wa(640,360,45e4,20),h540:new Wa(960,540,8e5,25),h720:new Wa(1280,720,17e5,30),h1080:new Wa(1920,1080,3e6,30),h1440:new Wa(2560,1440,5e6,30),h2160:new Wa(3840,2160,8e6,30)},Qa={h120:new Wa(160,120,7e4,20),h180:new Wa(240,180,125e3,20),h240:new Wa(320,240,14e4,20),h360:new Wa(480,360,33e4,20),h480:new Wa(640,480,5e5,20),h540:new Wa(720,540,6e5,25),h720:new Wa(960,720,13e5,30),h1080:new Wa(1440,1080,23e5,30),h1440:new Wa(1920,1440,38e5,30)},$a={h360fps3:new Wa(640,360,2e5,3,`medium`),h360fps15:new Wa(640,360,4e5,15,`medium`),h720fps5:new Wa(1280,720,8e5,5,`medium`),h720fps15:new Wa(1280,720,15e5,15,`medium`),h720fps30:new Wa(1280,720,2e6,30,`medium`),h1080fps15:new Wa(1920,1080,25e5,15,`medium`),h1080fps30:new Wa(1920,1080,5e6,30,`medium`),original:new Wa(0,0,7e6,30,`medium`)};function eo(e,t,n){var r,i;let{optionsWithoutProcessor:a,audioProcessor:o,videoProcessor:s}=mo(e??{}),c=t?.processor,l=n?.processor,u=a??{};return u.audio===!0&&(u.audio={}),u.video===!0&&(u.video={}),u.audio&&(to(u.audio,t),(r=u.audio).deviceId??(r.deviceId={ideal:`default`}),(o||c)&&(u.audio.processor=o??c)),u.video&&(to(u.video,n),(i=u.video).deviceId??(i.deviceId={ideal:`default`}),(s||l)&&(u.video.processor=s??l)),u}function to(e,t){return Object.keys(t).forEach(n=>{e[n]===void 0&&(e[n]=t[n])}),e}function no(e){var t,n;let r={};if(e.video)if(typeof e.video==`object`){let n={},i=n,a=e.video;Object.keys(a).forEach(e=>{switch(e){case`resolution`:to(i,a.resolution);break;default:i[e]=a[e]}}),r.video=n,(t=r.video).deviceId??(t.deviceId={ideal:`default`})}else r.video=e.video?{deviceId:{ideal:`default`}}:!1;else r.video=!1;return e.audio?typeof e.audio==`object`?(r.audio=e.audio,(n=r.audio).deviceId??(n.deviceId={ideal:`default`})):r.audio={deviceId:{ideal:`default`}}:r.audio=!1,r}function ro(e){return k(this,arguments,void 0,function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:200;return function*(){let n=io();if(n){let r=n.createAnalyser();r.fftSize=2048;let i=r.frequencyBinCount,a=new Uint8Array(i);n.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(r),yield Eo(t),r.getByteTimeDomainData(a);let o=a.some(e=>e!==128&&e!==0);return n.close(),!o}return!1}()})}function io(){let e=typeof window<`u`&&(window.AudioContext||window.webkitAudioContext);if(e){let t=new e({latencyHint:`interactive`});if(t.state===`suspended`&&typeof window<`u`&&window.document?.body){let e=()=>k(this,void 0,void 0,function*(){var n;try{t.state===`suspended`&&(yield t.resume())}catch(e){console.warn(`Error trying to auto-resume audio context`,e)}finally{(n=window.document.body)==null||n.removeEventListener(`click`,e)}});t.addEventListener(`statechange`,()=>{var n;t.state===`closed`&&((n=window.document.body)==null||n.removeEventListener(`click`,e))}),window.document.body.addEventListener(`click`,e)}return t}}function ao(e){return e===`audioinput`?P.Source.Microphone:e===`videoinput`?P.Source.Camera:P.Source.Unknown}function oo(e){if(e===P.Source.Microphone)return`audioinput`;if(e===P.Source.Camera)return`videoinput`}function so(e){let t=e.video??!0;return e.resolution&&e.resolution.width>0&&e.resolution.height>0&&(t=typeof t==`boolean`?{}:t,t=Io()?Object.assign(Object.assign({},t),{width:{max:e.resolution.width},height:{max:e.resolution.height},frameRate:e.resolution.frameRate}):Object.assign(Object.assign({},t),{width:{ideal:e.resolution.width},height:{ideal:e.resolution.height},frameRate:e.resolution.frameRate})),{audio:e.audio??!1,video:t,controller:e.controller,selfBrowserSurface:e.selfBrowserSurface,surfaceSwitching:e.surfaceSwitching,systemAudio:e.systemAudio,preferCurrentTab:e.preferCurrentTab}}function co(e){return e.split(`/`)[1].toLowerCase()}function lo(e){let t=[];return e.forEach(e=>{e.track!==void 0&&t.push(new tr({cid:e.track.mediaStreamID,track:e.trackInfo}))}),t}function uo(e){return`mediaStreamTrack`in e?{trackID:e.sid,source:e.source,muted:e.isMuted,enabled:e.mediaStreamTrack.enabled,kind:e.kind,streamID:e.mediaStreamID,streamTrackID:e.mediaStreamTrack.id}:{trackID:e.trackSid,enabled:e.isEnabled,muted:e.isMuted,trackInfo:Object.assign({mimeType:e.mimeType,name:e.trackName,encrypted:e.isEncrypted,kind:e.kind,source:e.source},e.track?uo(e.track):{})}}function fo(){return typeof RTCRtpReceiver<`u`&&`getSynchronizationSources`in RTCRtpReceiver}function po(e,t){e===void 0&&(e={}),t===void 0&&(t={});let n=[...Object.keys(t),...Object.keys(e)],r={};for(let i of n)e[i]!==t[i]&&(r[i]=t[i]??``);return r}function mo(e){let t=Object.assign({},e),n,r;return typeof t.audio==`object`&&t.audio.processor&&(n=t.audio.processor,t.audio=Object.assign(Object.assign({},t.audio),{processor:void 0})),typeof t.video==`object`&&t.video.processor&&(r=t.video.processor,t.video=Object.assign(Object.assign({},t.video),{processor:void 0})),{audioProcessor:n,videoProcessor:r,optionsWithoutProcessor:Ua(t)}}function ho(e){switch(e){case Kt.CAMERA:return P.Source.Camera;case Kt.MICROPHONE:return P.Source.Microphone;case Kt.SCREEN_SHARE:return P.Source.ScreenShare;case Kt.SCREEN_SHARE_AUDIO:return P.Source.ScreenShareAudio;default:return P.Source.Unknown}}function go(e,t){return e.width*e.height<t.width*t.height}function _o(e,t){return e.layers?.find(e=>e.quality===t)}var vo=5e3,yo=[],bo;(function(e){e[e.LOW=0]=`LOW`,e[e.MEDIUM=1]=`MEDIUM`,e[e.HIGH=2]=`HIGH`})(bo||={});var P=class e extends di.EventEmitter{get streamState(){return this._streamState}setStreamState(e){this._streamState=e}constructor(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};super(),this.attachedElements=[],this.isMuted=!1,this._streamState=e.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.log=$r,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),document.visibilityState===`hidden`?this.backgroundTimeout=setTimeout(()=>this.handleAppVisibilityChanged(),vo):this.handleAppVisibilityChanged()},this.log=ei(r.loggerName??Qr.Track),this.loggerContextCb=r.loggerContextCb,this.setMaxListeners(100),this.kind=n,this._mediaStreamTrack=t,this._mediaStreamID=t.id,this.source=e.Source.Unknown}get logContext(){return Object.assign(Object.assign({},this.loggerContextCb?.call(this)),uo(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(t){let n=`audio`;this.kind===e.Kind.Video&&(n=`video`),this.attachedElements.length===0&&this.kind===e.Kind.Video&&this.addAppVisibilityListener(),t||(n===`audio`&&(yo.forEach(e=>{e.parentElement===null&&!t&&(t=e)}),t&&yo.splice(yo.indexOf(t),1)),t||=document.createElement(n)),this.attachedElements.includes(t)||this.attachedElements.push(t),xo(this.mediaStreamTrack,t);let r=t.srcObject.getTracks(),i=r.some(e=>e.kind===`audio`);return t.play().then(()=>{this.emit(i?N.AudioPlaybackStarted:N.VideoPlaybackStarted)}).catch(e=>{e.name===`NotAllowedError`?this.emit(i?N.AudioPlaybackFailed:N.VideoPlaybackFailed,e):e.name===`AbortError`?$r.debug(`${i?`audio`:`video`} playback aborted, likely due to new play request`):$r.warn(`could not playback ${i?`audio`:`video`}`,e),i&&t&&r.some(e=>e.kind===`video`)&&e.name===`NotAllowedError`&&(t.muted=!0,t.play().catch(()=>{}))}),this.emit(N.ElementAttached,t),t}detach(e){try{if(e){So(this.mediaStreamTrack,e);let t=this.attachedElements.indexOf(e);return t>=0&&(this.attachedElements.splice(t,1),this.recycleElement(e),this.emit(N.ElementDetached,e)),e}let t=[];return this.attachedElements.forEach(e=>{So(this.mediaStreamTrack,e),t.push(e),this.recycleElement(e),this.emit(N.ElementDetached,e)}),this.attachedElements=[],t}finally{this.attachedElements.length===0&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval),this.timeSyncHandle&&cancelAnimationFrame(this.timeSyncHandle)}updateLoggerOptions(e){e.loggerName&&(this.log=ei(e.loggerName)),e.loggerContextCb&&(this.loggerContextCb=e.loggerContextCb)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),yo.forEach(e=>{e.parentElement||(t=!1)}),t&&yo.push(e)}}handleAppVisibilityChanged(){return k(this,void 0,void 0,function*(){this.isInBackground=document.visibilityState===`hidden`,!this.isInBackground&&this.kind===e.Kind.Video&&setTimeout(()=>this.attachedElements.forEach(e=>e.play().catch(()=>{})),0)})}addAppVisibilityListener(){Ho()?(this.isInBackground=document.visibilityState===`hidden`,document.addEventListener(`visibilitychange`,this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){Ho()&&document.removeEventListener(`visibilitychange`,this.appVisibilityChangedListener)}};function xo(e,t){let n;n=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream;let r;r=e.kind===`audio`?n.getAudioTracks():n.getVideoTracks(),r.includes(e)||(r.forEach(e=>{n.removeTrack(e)}),n.addTrack(e)),(!Io()||!(t instanceof HTMLVideoElement))&&(t.autoplay=!0),t.muted=n.getAudioTracks().length===0,t instanceof HTMLVideoElement&&(t.playsInline=!0),t.srcObject!==n&&(t.srcObject=n,(Io()||Po())&&t instanceof HTMLVideoElement&&setTimeout(()=>{t.srcObject=n,t.play().catch(()=>{})},0))}function So(e,t){if(t.srcObject instanceof MediaStream){let n=t.srcObject;n.removeTrack(e),n.getTracks().length>0?t.srcObject=n:t.srcObject=null}}(function(e){let t;(function(e){e.Audio=`audio`,e.Video=`video`,e.Unknown=`unknown`})(t=e.Kind||={});let n;(function(e){e.Camera=`camera`,e.Microphone=`microphone`,e.ScreenShare=`screen_share`,e.ScreenShareAudio=`screen_share_audio`,e.Unknown=`unknown`})(n=e.Source||={});let r;(function(e){e.Active=`active`,e.Paused=`paused`,e.Unknown=`unknown`})(r=e.StreamState||={});function i(e){switch(e){case t.Audio:return Gt.AUDIO;case t.Video:return Gt.VIDEO;default:return Gt.DATA}}e.kindToProto=i;function a(e){switch(e){case Gt.AUDIO:return t.Audio;case Gt.VIDEO:return t.Video;default:return t.Unknown}}e.kindFromProto=a;function o(e){switch(e){case n.Camera:return Kt.CAMERA;case n.Microphone:return Kt.MICROPHONE;case n.ScreenShare:return Kt.SCREEN_SHARE;case n.ScreenShareAudio:return Kt.SCREEN_SHARE_AUDIO;default:return Kt.UNKNOWN}}e.sourceToProto=o;function s(e){switch(e){case Kt.CAMERA:return n.Camera;case Kt.MICROPHONE:return n.Microphone;case Kt.SCREEN_SHARE:return n.ScreenShare;case Kt.SCREEN_SHARE_AUDIO:return n.ScreenShareAudio;default:return n.Unknown}}e.sourceFromProto=s;function c(e){switch(e){case Gn.ACTIVE:return r.Active;case Gn.PAUSED:return r.Paused;default:return r.Unknown}}e.streamStateFromProto=c})(P||={});var Co=`|`,wo=`https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension`;function To(e){let t=e.split(Co);return t.length>1?[t[0],e.substr(t[0].length+1)]:[e,``]}function Eo(e){return k(this,void 0,void 0,function*(){return new Promise(t=>Ha.setTimeout(t,e))})}function Do(){return`addTransceiver`in RTCPeerConnection.prototype}function Oo(){return`addTrack`in RTCPeerConnection.prototype}function ko(){if(!(`getCapabilities`in RTCRtpSender)||Io()||Po())return!1;let e=RTCRtpSender.getCapabilities(`video`),t=!1;if(e){for(let n of e.codecs)if(n.mimeType.toLowerCase()===`video/av1`){t=!0;break}}return t}function Ao(){if(!(`getCapabilities`in RTCRtpSender)||Po())return!1;if(Io()){let e=Ca();if(e?.version&&Yo(e.version,`16`)<0||e?.os===`iOS`&&e?.osVersion&&Yo(e.osVersion,`16`)<0)return!1}let e=RTCRtpSender.getCapabilities(`video`),t=!1;if(e){for(let n of e.codecs)if(n.mimeType.toLowerCase()===`video/vp9`){t=!0;break}}return t}function jo(e){return e===`av1`||e===`vp9`}function Mo(e){return!document||Lo()?!1:(e||=document.createElement(`audio`),`setSinkId`in e)}function No(){return typeof RTCPeerConnection>`u`?!1:Do()||Oo()}function Po(){return Ca()?.name===`Firefox`}function Fo(){let e=Ca();return!!e&&e.name===`Chrome`&&e.os!==`iOS`}function Io(){return Ca()?.name===`Safari`}function Lo(){let e=Ca();return e?.name===`Safari`||e?.os===`iOS`}function Ro(){let e=Ca();return e?.name===`Safari`&&e.version.startsWith(`17.`)||e?.os===`iOS`&&!!e?.osVersion&&Yo(e.osVersion,`17`)>=0}function zo(e){return e||=Ca(),e?.name===`Safari`&&Yo(e.version,`18.3`)>0||e?.os===`iOS`&&!!e?.osVersion&&Yo(e.osVersion,`18.3`)>0}function Bo(){return Ho()?navigator.userAgentData?.mobile??/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent):!1}function Vo(){let e=Ca(),t=`17.2`;if(e)return e.name!==`Safari`&&e.os!==`iOS`||e.os===`iOS`&&e.osVersion&&Yo(e.osVersion,t)>=0?!0:e.name===`Safari`&&Yo(e.version,t)>=0}function Ho(){return typeof document<`u`}function Uo(){return navigator.product==`ReactNative`}function Wo(e){return e.hostname.endsWith(`.livekit.cloud`)||e.hostname.endsWith(`.livekit.run`)}function Go(e){return Wo(e)?e.hostname.split(`.`)[0]:null}function Ko(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function qo(){if(!Uo())return;let e=Ko();if(e)return e.platform}function Jo(){if(Ho())return window.devicePixelRatio;if(Uo()){let e=Ko();if(e)return e.devicePixelRatio}return 1}function Yo(e,t){let n=e.split(`.`),r=t.split(`.`),i=Math.min(n.length,r.length);for(let e=0;e<i;++e){let t=parseInt(n[e],10),a=parseInt(r[e],10);if(t>a)return 1;if(t<a)return-1;if(e===i-1&&t===a)return 0}return e===``&&t!==``?-1:t===``?1:n.length==r.length?0:n.length<r.length?-1:1}function Xo(e){for(let t of e)t.target.handleResize(t)}function Zo(e){for(let t of e)t.target.handleVisibilityChanged(t)}var Qo=null,$o=()=>(Qo||=new ResizeObserver(Xo),Qo),es=null,ts=()=>(es||=new IntersectionObserver(Zo,{root:null,rootMargin:`0px`}),es);function ns(){let e=new jn({sdk:Mn.JS,protocol:16,version:Da});return Uo()&&(e.os=qo()??``),e}function rs(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:16,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=document.createElement(`canvas`);i.width=e,i.height=t;let a=i.getContext(`2d`);a?.fillRect(0,0,i.width,i.height),r&&a&&(a.beginPath(),a.arc(e/2,t/2,50,0,Math.PI*2,!0),a.closePath(),a.fillStyle=`grey`,a.fill());let[o]=i.captureStream().getTracks();if(!o)throw Error(`Could not get empty media stream video track`);return o.enabled=n,o}var is;function as(){if(!is){let e=new AudioContext,t=e.createOscillator(),n=e.createGain();n.gain.setValueAtTime(0,0);let r=e.createMediaStreamDestination();if(t.connect(n),n.connect(r),t.start(),[is]=r.stream.getAudioTracks(),!is)throw Error(`Could not get empty media stream audio track`);is.enabled=!1}return is.clone()}var os=class{get isResolved(){return this._isResolved}constructor(e,t){this._isResolved=!1,this.onFinally=t,this.promise=new Promise((t,n)=>k(this,void 0,void 0,function*(){this.resolve=t,this.reject=n,e&&(yield e(t,n))})).finally(()=>{var e;this._isResolved=!0,(e=this.onFinally)==null||e.call(this)})}};function ss(e){return Ka.includes(e)}function cs(e){if(typeof e==`string`||typeof e==`number`)return e;if(Array.isArray(e))return e[0];if(e.exact!==void 0)return Array.isArray(e.exact)?e.exact[0]:e.exact;if(e.ideal!==void 0)return Array.isArray(e.ideal)?e.ideal[0]:e.ideal;throw Error(`could not unwrap constraint`)}function ls(e){return e.startsWith(`http`)?e.replace(/^(http)/,`ws`):e}function us(e){return e.startsWith(`ws`)?e.replace(/^(ws)/,`http`):e}function ds(e,t){return e.segments.map(e=>{let{id:n,text:r,language:i,startTime:a,endTime:o,final:s}=e,c=t.get(n)??Date.now(),l=Date.now();return s?t.delete(n):t.set(n,c),{id:n,text:r,startTime:Number.parseInt(a.toString()),endTime:Number.parseInt(o.toString()),final:s,language:i,firstReceivedTime:c,lastReceivedTime:l}})}function fs(e){let{id:t,timestamp:n,message:r,editTimestamp:i}=e;return{id:t,timestamp:Number.parseInt(n.toString()),editTimestamp:i?Number.parseInt(i.toString()):void 0,message:r}}function ps(e){switch(e.reason){case ka.LeaveRequest:return e.context;case ka.Cancelled:return Xt.CLIENT_INITIATED;case ka.NotAllowed:return Xt.USER_REJECTED;case ka.ServerUnreachable:return Xt.JOIN_FAILURE;default:return Xt.UNKNOWN_REASON}}function ms(e){return e===void 0?void 0:Number(e)}function hs(e){return e===void 0?void 0:BigInt(e)}function gs(e){return!!e&&!(e instanceof MediaStreamTrack)&&e.isLocal}function _s(e){return!!e&&e.kind==P.Kind.Audio}function vs(e){return!!e&&e.kind==P.Kind.Video}function ys(e){return gs(e)&&vs(e)}function bs(e){return gs(e)&&_s(e)}function xs(e){return!!e&&!e.isLocal}function Ss(e){return!!e&&!e.isLocal}function Cs(e){return xs(e)&&vs(e)}function ws(e){return e.isLocal}function Ts(e,t){let n=[],r=new TextEncoder().encode(e);for(;r.length>t;){let e=t;for(;e>0;){let t=r[e];if(t!==void 0&&(t&192)!=128)break;e--}n.push(r.slice(0,e)),r=r.slice(e)}return r.length>0&&n.push(r),n}function Es(e){let t=e.get(`Cache-Control`);if(t){let e=t.match(/(?:^|[,\s])max-age=(\d+)/)?.[1];if(e)return parseInt(e,10)}}function Ds(e,t){let n=new URL(ls(e));return t.forEach((e,t)=>{n.searchParams.set(t,e)}),As(n,`rtc`)}function Os(e){return As(new URL(us(e)),`validate`)}function ks(e){return e.endsWith(`/`)?e:`${e}/`}function As(e,t){return e.pathname=`${ks(e.pathname)}${t}`,e.toString()}function js(e){if(typeof e==`string`)return Jn.fromJson(JSON.parse(e),{ignoreUnknownFields:!0});if(e instanceof ArrayBuffer)return Jn.fromBinary(new Uint8Array(e));throw Error(`could not decode websocket message: ${typeof e}`)}function Ms(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Unknown reason`;if(!(e instanceof AbortSignal))return t;let n=e.reason;switch(typeof n){case`string`:return n;case`object`:return n instanceof Error?n.message:t;default:return`toString`in n?n.toString():t}}var Ns=`lk_e2ee`,Ps;(function(e){e.SetKey=`setKey`,e.RatchetRequest=`ratchetRequest`,e.KeyRatcheted=`keyRatcheted`})(Ps||={});var Fs;(function(e){e.KeyRatcheted=`keyRatcheted`})(Fs||={});var Is;(function(e){e.ParticipantEncryptionStatusChanged=`participantEncryptionStatusChanged`,e.EncryptionError=`encryptionError`})(Is||={});var Ls;(function(e){e.Error=`cryptorError`})(Ls||={});function Rs(){return Bs()||zs()}function zs(){return window.RTCRtpScriptTransform!==void 0}function Bs(){return window.RTCRtpSender!==void 0&&window.RTCRtpSender.prototype.createEncodedStreams!==void 0}function Vs(e){if(e.value?.case!==`sipDtmf`&&e.value?.case!==`metrics`&&e.value?.case!==`speaker`&&e.value?.case!==`transcription`&&e.value?.case!==`encryptedPacket`)return new gn({value:e.value})}di.EventEmitter;var Hs;(function(e){e[e.InvalidKey=0]=`InvalidKey`,e[e.MissingKey=1]=`MissingKey`,e[e.InternalError=2]=`InternalError`})(Hs||={});var Us=class extends di.EventEmitter{constructor(e,t){super(),this.decryptDataRequests=new Map,this.encryptDataRequests=new Map,this.onWorkerMessage=e=>{let{kind:t,data:n}=e.data;switch(t){case`error`:if($r.error(n.error.message),n.uuid){let e=this.decryptDataRequests.get(n.uuid);if(e?.reject){e.reject(n.error);break}let t=this.encryptDataRequests.get(n.uuid);if(t?.reject){t.reject(n.error);break}}this.emit(Is.EncryptionError,n.error,n.participantIdentity);break;case`initAck`:n.enabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e)});break;case`enable`:if(n.enabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e)}),this.encryptionEnabled!==n.enabled&&n.participantIdentity===this.room?.localParticipant.identity)this.emit(Is.ParticipantEncryptionStatusChanged,n.enabled,this.room.localParticipant),this.encryptionEnabled=n.enabled;else if(n.participantIdentity){let e=this.room?.getParticipantByIdentity(n.participantIdentity);if(!e)throw TypeError(`couldn't set encryption status, participant not found${n.participantIdentity}`);this.emit(Is.ParticipantEncryptionStatusChanged,n.enabled,e)}break;case`ratchetKey`:this.keyProvider.emit(Ps.KeyRatcheted,n.ratchetResult,n.participantIdentity,n.keyIndex);break;case`decryptDataResponse`:let e=this.decryptDataRequests.get(n.uuid);e?.resolve&&e.resolve(n);break;case`encryptDataResponse`:let t=this.encryptDataRequests.get(n.uuid);t?.resolve&&t.resolve(n);break}},this.onWorkerError=e=>{$r.error(`e2ee worker encountered an error:`,{error:e.error}),this.emit(Is.EncryptionError,e.error,void 0)},this.keyProvider=e.keyProvider,this.worker=e.worker,this.encryptionEnabled=!1,this.dataChannelEncryptionEnabled=t}get isEnabled(){return this.encryptionEnabled}get isDataChannelEncryptionEnabled(){return this.isEnabled&&this.dataChannelEncryptionEnabled}setup(e){if(!Rs())throw new ja(`tried to setup end-to-end encryption on an unsupported browser`);if($r.info(`setting up e2ee`),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);let t={kind:`init`,data:{keyProviderOptions:this.keyProvider.getOptions(),loglevel:ti.getLevel()}};this.worker&&($r.info(`initializing worker`,{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){$r.debug(`set e2ee to ${e} for participant ${t}`),this.postEnable(e,t)}setSifTrailer(e){!e||e.length===0?$r.warn(`ignoring server sent trailer as it's empty`):this.postSifTrailer(e)}setupEngine(e){e.on(M.RTPVideoMapUpdate,e=>{this.postRTPMap(e)})}setupEventListeners(e,t){e.on(A.TrackPublished,(e,t)=>this.setParticipantCryptorEnabled(e.trackInfo.encryption!==cn.NONE,t.identity)),e.on(A.ConnectionStateChanged,t=>{t===lu.Connected&&e.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{this.setParticipantCryptorEnabled(t.trackInfo.encryption!==cn.NONE,e.identity)})})}).on(A.TrackUnsubscribed,(e,t,n)=>{var r;let i={kind:`removeTransform`,data:{participantIdentity:n.identity,trackId:e.mediaStreamID}};(r=this.worker)==null||r.postMessage(i)}).on(A.TrackSubscribed,(e,t,n)=>{this.setupE2EEReceiver(e,n.identity,t.trackInfo)}).on(A.SignalConnected,()=>{if(!this.room)throw TypeError(`expected room to be present on signal connect`);t.getKeys().forEach(e=>{this.postKey(e)}),this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity)}),e.localParticipant.on(j.LocalSenderCreated,(e,t)=>k(this,void 0,void 0,function*(){this.setupE2EESender(t,e)})),e.localParticipant.on(j.LocalTrackPublished,e=>{if(!vs(e.track)||!Lo())return;let t={kind:`updateCodec`,data:{trackId:e.track.mediaStreamID,codec:co(e.trackInfo.codecs[0].mimeType),participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(t)}),t.on(Ps.SetKey,e=>this.postKey(e)).on(Ps.RatchetRequest,(e,t)=>this.postRatchetRequest(e,t))}encryptData(e){return k(this,void 0,void 0,function*(){if(!this.worker)throw Error(`could not encrypt data, worker is missing`);let t=crypto.randomUUID(),n={kind:`encryptDataRequest`,data:{uuid:t,payload:e,participantIdentity:this.room.localParticipant.identity}},r=new os;return r.onFinally=()=>{this.encryptDataRequests.delete(t)},this.encryptDataRequests.set(t,r),this.worker.postMessage(n),r.promise})}handleEncryptedData(e,t,n,r){if(!this.worker)throw Error(`could not handle encrypted data, worker is missing`);let i=crypto.randomUUID(),a={kind:`decryptDataRequest`,data:{uuid:i,payload:e,iv:t,participantIdentity:n,keyIndex:r}},o=new os;return o.onFinally=()=>{this.decryptDataRequests.delete(i)},this.decryptDataRequests.set(i,o),this.worker.postMessage(a),o.promise}postRatchetRequest(e,t){if(!this.worker)throw Error(`could not ratchet key, worker is missing`);let n={kind:`ratchetRequest`,data:{participantIdentity:e,keyIndex:t}};this.worker.postMessage(n)}postKey(e){let{key:t,participantIdentity:n,keyIndex:r}=e;if(!this.worker)throw Error(`could not set key, worker is missing`);let i={kind:`setKey`,data:{participantIdentity:n,isPublisher:n===this.room?.localParticipant.identity,key:t,keyIndex:r}};this.worker.postMessage(i)}postEnable(e,t){if(this.worker){let n={kind:`enable`,data:{enabled:e,participantIdentity:t}};this.worker.postMessage(n)}else throw ReferenceError(`failed to enable e2ee, worker is not ready`)}postRTPMap(e){if(!this.worker)throw TypeError(`could not post rtp map, worker is missing`);if(!this.room?.localParticipant.identity)throw TypeError(`could not post rtp map, local participant identity is missing`);let t={kind:`setRTPMap`,data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(t)}postSifTrailer(e){if(!this.worker)throw Error(`could not post SIF trailer, worker is missing`);let t={kind:`setSifTrailer`,data:{trailer:e}};this.worker.postMessage(t)}setupE2EEReceiver(e,t,n){if(e.receiver){if(!n?.mimeType||n.mimeType===``)throw TypeError(`MimeType missing from trackInfo, cannot set up E2EE cryptor`);this.handleReceiver(e.receiver,e.mediaStreamID,t,e.kind===`video`?co(n.mimeType):void 0)}}setupE2EESender(e,t){if(!gs(e)||!t){t||$r.warn(`early return because sender is not ready`);return}this.handleSender(t,e.mediaStreamID,void 0)}handleReceiver(e,t,n,r){return k(this,void 0,void 0,function*(){if(this.worker){if(zs()&&!Fo()){let i={kind:`decode`,participantIdentity:n,trackId:t,codec:r};e.transform=new RTCRtpScriptTransform(this.worker,i)}else{if(Ns in e&&r){let e={kind:`updateCodec`,data:{trackId:t,codec:r,participantIdentity:n}};this.worker.postMessage(e);return}let i=e.writableStream,a=e.readableStream;if(!i||!a){let t=e.createEncodedStreams();e.writableStream=t.writable,i=t.writable,e.readableStream=t.readable,a=t.readable}let o={kind:`decode`,data:{readableStream:a,writableStream:i,trackId:t,codec:r,participantIdentity:n,isReuse:Ns in e}};this.worker.postMessage(o,[a,i])}e[Ns]=!0}})}handleSender(e,t,n){if(!(Ns in e||!this.worker)){if(!this.room?.localParticipant.identity||this.room.localParticipant.identity===``)throw TypeError(`local identity needs to be known in order to set up encrypted sender`);if(zs()&&!Fo()){$r.info(`initialize script transform`);let r={kind:`encode`,participantIdentity:this.room.localParticipant.identity,trackId:t,codec:n};e.transform=new RTCRtpScriptTransform(this.worker,r)}else{$r.info(`initialize encoded streams`);let r=e.createEncodedStreams(),i={kind:`encode`,data:{readableStream:r.readable,writableStream:r.writable,codec:n,trackId:t,participantIdentity:this.room.localParticipant.identity,isReuse:!1}};this.worker.postMessage(i,[r.readable,r.writable])}e[Ns]=!0}}},Ws=500,Gs=15e3,Ks=class e{constructor(){this.failedConnectionAttempts=new Map,this.backOffPromises=new Map}static getInstance(){return this._instance||=new e,this._instance}addFailedConnectionAttempt(e){let t=Go(new URL(e));if(!t)return;let n=this.failedConnectionAttempts.get(t)??0;this.failedConnectionAttempts.set(t,n+1),this.backOffPromises.set(t,Eo(Math.min(Ws*2**n,Gs)))}getBackOffPromise(e){let t=new URL(e),n=t&&Go(t);return n&&this.backOffPromises.get(n)||Promise.resolve()}resetFailedConnectionAttempts(e){let t=new URL(e),n=t&&Go(t);n&&(this.failedConnectionAttempts.set(n,0),this.backOffPromises.set(n,Promise.resolve()))}resetAll(){this.backOffPromises.clear(),this.failedConnectionAttempts.clear()}};Ks._instance=null;var qs=`default`,Js=class e{constructor(){this._previousDevices=[]}static getInstance(){return this.instance===void 0&&(this.instance=new e),this.instance}get previousDevices(){return this._previousDevices}getDevices(t){return k(this,arguments,void 0,function(t){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){if(e.userMediaPromiseMap?.size>0){$r.debug(`awaiting getUserMedia promise`);try{t?yield e.userMediaPromiseMap.get(t):yield Promise.all(e.userMediaPromiseMap.values())}catch{$r.warn(`error waiting for media permissons`)}}let i=yield navigator.mediaDevices.enumerateDevices();if(r&&!(Io()&&n.hasDeviceInUse(t))&&(i.filter(e=>e.kind===t).length===0||i.some(e=>{let n=e.label===``,r=t?e.kind===t:!0;return n&&r}))){let e={video:t!==`audioinput`&&t!==`audiooutput`,audio:t!==`videoinput`&&{deviceId:{ideal:`default`}}},n=yield navigator.mediaDevices.getUserMedia(e);i=yield navigator.mediaDevices.enumerateDevices(),n.getTracks().forEach(e=>{e.stop()})}return n._previousDevices=i,t&&(i=i.filter(e=>e.kind===t)),i}()})}normalizeDeviceId(e,t,n){return k(this,void 0,void 0,function*(){if(t!==qs)return t;let r=yield this.getDevices(e),i=r.find(e=>e.deviceId===qs);if(!i){$r.warn(`could not reliably determine default device`);return}let a=r.find(e=>e.deviceId!==qs&&e.groupId===(n??i.groupId));if(!a){$r.warn(`could not reliably determine default device`);return}return a?.deviceId})}hasDeviceInUse(t){return t?e.userMediaPromiseMap.has(t):e.userMediaPromiseMap.size>0}};Js.mediaDeviceKinds=[`audioinput`,`audiooutput`,`videoinput`],Js.userMediaPromiseMap=new Map;var Ys;(function(e){e[e.WAITING=0]=`WAITING`,e[e.RUNNING=1]=`RUNNING`,e[e.COMPLETED=2]=`COMPLETED`})(Ys||={});var Xs=class{constructor(){this.pendingTasks=new Map,this.taskMutex=new _,this.nextTaskIndex=0}run(e){return k(this,void 0,void 0,function*(){let t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:Ys.WAITING};this.pendingTasks.set(t.id,t);let n=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=Ys.RUNNING,yield e()}finally{t.status=Ys.COMPLETED,this.pendingTasks.delete(t.id),n()}})}flush(){return k(this,void 0,void 0,function*(){return this.run(()=>k(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}},Zs=class{get readyState(){return this.ws.readyState}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t.signal?.aborted)throw new DOMException(`This operation was aborted`,`AbortError`);this.url=e;let n=new WebSocket(e,t.protocols??[]);n.binaryType=`arraybuffer`,this.ws=n;let r=function(){let{closeCode:e,reason:t}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return n.close(e,t)};this.opened=new Promise((e,t)=>{n.onopen=()=>{e({readable:new ReadableStream({start(e){n.onmessage=t=>{let{data:n}=t;return e.enqueue(n)},n.onerror=t=>e.error(t)},cancel:r}),writable:new WritableStream({write(e){n.send(e)},abort(){n.close()},close:r}),protocol:n.protocol,extensions:n.extensions}),n.removeEventListener(`error`,t)},n.addEventListener(`error`,t)}),this.closed=new Promise((e,t)=>{let r=()=>k(this,void 0,void 0,function*(){let r=new Promise(e=>{n.readyState!==WebSocket.CLOSED&&n.addEventListener(`close`,t=>{e(t)},{once:!0})}),i=yield Promise.race([Eo(250),r]);i?e(i):t(Error(`Encountered unspecified websocket error without a timely close event`))});n.onclose=t=>{let{code:i,reason:a}=t;e({closeCode:i,reason:a}),n.removeEventListener(`error`,r)},n.addEventListener(`error`,r)}),t.signal&&(t.signal.onabort=()=>n.close()),this.close=r}},Qs=[`syncState`,`trickle`,`offer`,`answer`,`simulate`,`leave`];function $s(e){let t=Qs.indexOf(e.case)>=0;return $r.trace(`request allowed to bypass queue:`,{canPass:t,req:e}),t}var ec;(function(e){e[e.CONNECTING=0]=`CONNECTING`,e[e.CONNECTED=1]=`CONNECTED`,e[e.RECONNECTING=2]=`RECONNECTING`,e[e.DISCONNECTING=3]=`DISCONNECTING`,e[e.DISCONNECTED=4]=`DISCONNECTED`})(ec||={});var tc=250,nc=class{get currentState(){return this.state}get isDisconnected(){return this.state===ec.DISCONNECTING||this.state===ec.DISCONNECTED}get isEstablishingConnection(){return this.state===ec.CONNECTING||this.state===ec.RECONNECTING}getNextRequestId(){return this._requestId+=1,this._requestId}constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.rtt=0,this.state=ec.DISCONNECTED,this.log=$r,this._requestId=0,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0,this.onMediaSectionsRequirement=void 0},this.log=ei(t.loggerName??Qr.Signal),this.loggerContextCb=t.loggerContextCb,this.useJSON=e,this.requestQueue=new Xs,this.queuedRequests=[],this.closingLock=new _,this.connectionLock=new _,this.state=ec.DISCONNECTED}get logContext(){return this.loggerContextCb?.call(this)??{}}join(e,t,n,r){return k(this,void 0,void 0,function*(){return this.state=ec.CONNECTING,this.options=n,yield this.connect(e,t,n,r)})}reconnect(e,t,n,r){return k(this,void 0,void 0,function*(){if(!this.options){this.log.warn(`attempted to reconnect without signal options being set, ignoring`,this.logContext);return}return this.state=ec.RECONNECTING,this.clearPingInterval(),yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:n,reconnectReason:r}))})}connect(e,t,n,r){return k(this,void 0,void 0,function*(){let i=yield this.connectionLock.lock();this.connectOptions=n;let a=ns(),o=Ds(e,n.singlePeerConnection?oc(t,a,n):ac(t,a,n)),s=Os(o);return new Promise((e,t)=>k(this,void 0,void 0,function*(){try{let i=!1,a=e=>k(this,void 0,void 0,function*(){if(i)return;i=!0;let n=Ms(e instanceof Event?e.currentTarget:e,`Abort handler called`);this.streamWriter&&!this.isDisconnected?this.sendLeave().then(()=>this.close(n)).catch(e=>{this.log.error(e),this.close()}):this.close(),c(),t(Aa.cancelled(n))});r?.addEventListener(`abort`,a);let c=()=>{clearTimeout(l),r?.removeEventListener(`abort`,a)},l=setTimeout(()=>{a(Aa.timeout(`room connection has timed out (signal)`))},n.websocketTimeout),u=(e,t)=>{this.handleSignalConnected(e,l,t)},d=new URL(o);d.searchParams.has(`access_token`)&&d.searchParams.set(`access_token`,`<redacted>`),this.log.debug(`connecting to ${d}`,Object.assign({reconnect:n.reconnect,reconnectReason:n.reconnectReason},this.logContext)),this.ws&&(yield this.close(!1)),this.ws=new Zs(o);try{this.ws.closed.then(e=>{this.isEstablishingConnection&&t(Aa.internal(`Websocket got closed during a (re)connection attempt: ${e.reason}`)),e.closeCode!==1e3&&(this.log.warn(`websocket closed`,Object.assign(Object.assign({},this.logContext),{reason:e.reason,code:e.closeCode,wasClean:e.closeCode===1e3,state:this.state})),this.state===ec.CONNECTED&&this.handleOnClose(e.reason??`Unexpected WS error`))}).catch(e=>{this.isEstablishingConnection&&t(Aa.internal(`Websocket error during a (re)connection attempt: ${e}`))});let r=yield this.ws.opened.catch(e=>k(this,void 0,void 0,function*(){if(this.state!==ec.CONNECTED){this.state=ec.DISCONNECTED,clearTimeout(l),t(yield this.handleConnectionError(e,s));return}this.handleWSError(e),t(e)}));if(clearTimeout(l),!r)return;let i=r.readable.getReader();this.streamWriter=r.writable.getWriter();let a=yield i.read();if(i.releaseLock(),!a.value)throw Aa.internal(`no message received as first message`);let o=js(a.value),c=this.validateFirstMessage(o,n.reconnect??!1);if(!c.isValid){t(c.error);return}o.message?.case===`join`&&(this.pingTimeoutDuration=o.message.value.pingTimeout,this.pingIntervalDuration=o.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&this.log.debug(`ping config`,Object.assign(Object.assign({},this.logContext),{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration}))),u(r,c.shouldProcessFirstMessage?o:void 0),e(c.response)}catch(e){t(e)}finally{c()}}finally{i()}}))})}startReadingLoop(e,t){return k(this,void 0,void 0,function*(){for(t&&this.handleSignalResponse(t);;){this.signalLatency&&(yield Eo(this.signalLatency));let{done:t,value:n}=yield e.read();if(t)break;let r=js(n);this.handleSignalResponse(r)}})}close(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Close method called on signal client`;return function*(){if([ec.DISCONNECTING||ec.DISCONNECTED].includes(e.state)){e.log.debug(`ignoring signal close as it's already in disconnecting state`);return}let r=yield e.closingLock.lock();try{if(e.clearPingInterval(),t&&(e.state=ec.DISCONNECTING),e.ws){e.ws.close({closeCode:1e3,reason:n});let t=e.ws.closed;e.ws=void 0,e.streamWriter=void 0,yield Promise.race([t,Eo(tc)])}}catch(t){e.log.debug(`websocket error while closing`,Object.assign(Object.assign({},e.logContext),{error:t}))}finally{t&&(e.state=ec.DISCONNECTED),r()}}()})}sendOffer(e,t){this.log.debug(`sending offer`,Object.assign(Object.assign({},this.logContext),{offerSdp:e.sdp})),this.sendRequest({case:`offer`,value:ic(e,t)})}sendAnswer(e,t){return this.log.debug(`sending answer`,Object.assign(Object.assign({},this.logContext),{answerSdp:e.sdp})),this.sendRequest({case:`answer`,value:ic(e,t)})}sendIceCandidate(e,t){return this.log.debug(`sending ice candidate`,Object.assign(Object.assign({},this.logContext),{candidate:e})),this.sendRequest({case:`trickle`,value:new Zn({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:`mute`,value:new Qn({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:`addTrack`,value:e})}sendUpdateLocalMetadata(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return function*(){let i=n.getNextRequestId();return yield n.sendRequest({case:`updateMetadata`,value:new fr({requestId:i,metadata:e,name:t,attributes:r})}),i}()})}sendUpdateTrackSettings(e){this.sendRequest({case:`trackSetting`,value:e})}sendUpdateSubscription(e){return this.sendRequest({case:`subscription`,value:e})}sendSyncState(e){return this.sendRequest({case:`syncState`,value:e})}sendUpdateVideoLayers(e,t){return this.sendRequest({case:`updateLayers`,value:new dr({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:`subscriptionPermission`,value:new Tr({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:`simulate`,value:e})}sendPing(){return Promise.all([this.sendRequest({case:`ping`,value:xe.parse(Date.now())}),this.sendRequest({case:`pingReq`,value:new Mr({timestamp:xe.parse(Date.now()),rtt:xe.parse(this.rtt)})})])}sendUpdateLocalAudioTrack(e,t){return this.sendRequest({case:`updateAudioTrack`,value:new sr({trackSid:e,features:t})})}sendLeave(){return this.sendRequest({case:`leave`,value:new lr({reason:Xt.CLIENT_INITIATED,action:ur.DISCONNECT})})}sendRequest(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return function*(){if(!n&&!$s(e)&&t.state===ec.RECONNECTING){t.queuedRequests.push(()=>k(t,void 0,void 0,function*(){yield this.sendRequest(e,!0)}));return}if(n||(yield t.requestQueue.flush()),t.signalLatency&&(yield Eo(t.signalLatency)),t.isDisconnected){t.log.debug(`skipping signal request (type: ${e.case}) - SignalClient disconnected`);return}if(!t.streamWriter){t.log.error(`cannot send signal request before connected, type: ${e?.case}`,t.logContext);return}let r=new qn({message:e});try{t.useJSON?yield t.streamWriter.write(r.toJsonString()):yield t.streamWriter.write(r.toBinary())}catch(e){t.log.error(`error sending signal message`,Object.assign(Object.assign({},t.logContext),{error:e}))}}()})}handleSignalResponse(e){let t=e.message;if(t==null){this.log.debug(`received unsupported message`,this.logContext);return}let n=!1;if(t.case===`answer`){let e=rc(t.value);this.onAnswer&&this.onAnswer(e,t.value.id,t.value.midToTrackId)}else if(t.case===`offer`){let e=rc(t.value);this.onOffer&&this.onOffer(e,t.value.id,t.value.midToTrackId)}else if(t.case===`trickle`){let e=JSON.parse(t.value.candidateInit);this.onTrickle&&this.onTrickle(e,t.value.target)}else t.case===`update`?this.onParticipantUpdate&&this.onParticipantUpdate(t.value.participants??[]):t.case===`trackPublished`?this.onLocalTrackPublished&&this.onLocalTrackPublished(t.value):t.case===`speakersChanged`?this.onSpeakersChanged&&this.onSpeakersChanged(t.value.speakers??[]):t.case===`leave`?this.onLeave&&this.onLeave(t.value):t.case===`mute`?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(t.value.sid,t.value.muted):t.case===`roomUpdate`?this.onRoomUpdate&&t.value.room&&this.onRoomUpdate(t.value.room):t.case===`connectionQuality`?this.onConnectionQuality&&this.onConnectionQuality(t.value):t.case===`streamStateUpdate`?this.onStreamStateUpdate&&this.onStreamStateUpdate(t.value):t.case===`subscribedQualityUpdate`?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(t.value):t.case===`subscriptionPermissionUpdate`?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(t.value):t.case===`refreshToken`?this.onTokenRefresh&&this.onTokenRefresh(t.value):t.case===`trackUnpublished`?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(t.value):t.case===`subscriptionResponse`?this.onSubscriptionError&&this.onSubscriptionError(t.value):t.case===`pong`||(t.case===`pongResp`?(this.rtt=Date.now()-Number.parseInt(t.value.lastPingTimestamp.toString()),this.resetPingTimeout(),n=!0):t.case===`requestResponse`?this.onRequestResponse&&this.onRequestResponse(t.value):t.case===`trackSubscribed`?this.onLocalTrackSubscribed&&this.onLocalTrackSubscribed(t.value.trackSid):t.case===`roomMoved`?(this.onTokenRefresh&&this.onTokenRefresh(t.value.token),this.onRoomMoved&&this.onRoomMoved(t.value)):t.case===`mediaSectionsRequirement`?this.onMediaSectionsRequirement&&this.onMediaSectionsRequirement(t.value):this.log.debug(`unsupported message`,Object.assign(Object.assign({},this.logContext),{msgCase:t.case})));n||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){let e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}}handleOnClose(e){return k(this,void 0,void 0,function*(){if(this.state===ec.DISCONNECTED)return;let t=this.onClose;yield this.close(void 0,e),this.log.debug(`websocket connection closed: ${e}`,Object.assign(Object.assign({},this.logContext),{reason:e})),t&&t(e)})}handleWSError(e){this.log.error(`websocket error`,Object.assign(Object.assign({},this.logContext),{error:e}))}resetPingTimeout(){if(this.clearPingTimeout(),!this.pingTimeoutDuration){this.log.warn(`ping timeout duration not set`,this.logContext);return}this.pingTimeout=Ha.setTimeout(()=>{this.log.warn(`ping timeout triggered. last pong received at: ${new Date(Date.now()-this.pingTimeoutDuration*1e3).toUTCString()}`,this.logContext),this.handleOnClose(`ping timeout`)},this.pingTimeoutDuration*1e3)}clearPingTimeout(){this.pingTimeout&&Ha.clearTimeout(this.pingTimeout)}startPingInterval(){if(this.clearPingInterval(),this.resetPingTimeout(),!this.pingIntervalDuration){this.log.warn(`ping interval duration not set`,this.logContext);return}this.log.debug(`start ping interval`,this.logContext),this.pingInterval=Ha.setInterval(()=>{this.sendPing()},this.pingIntervalDuration*1e3)}clearPingInterval(){this.log.debug(`clearing ping interval`,this.logContext),this.clearPingTimeout(),this.pingInterval&&Ha.clearInterval(this.pingInterval)}handleSignalConnected(e,t,n){this.state=ec.CONNECTED,clearTimeout(t),this.startPingInterval(),this.startReadingLoop(e.readable.getReader(),n)}validateFirstMessage(e,t){return e.message?.case===`join`?{isValid:!0,response:e.message.value}:this.state===ec.RECONNECTING&&e.message?.case!==`leave`?e.message?.case===`reconnect`?{isValid:!0,response:e.message.value}:(this.log.debug(`declaring signal reconnected without reconnect response received`,this.logContext),{isValid:!0,response:void 0,shouldProcessFirstMessage:!0}):this.isEstablishingConnection&&e.message?.case===`leave`?{isValid:!1,error:Aa.leaveRequest(`Received leave request while trying to (re)connect`,e.message.value.reason)}:t?{isValid:!1,error:Aa.internal(`Unexpected first message`)}:{isValid:!1,error:Aa.internal(`did not receive join response, got ${e.message?.case} instead`)}}handleConnectionError(e,t){return k(this,void 0,void 0,function*(){try{let n=yield fetch(t);if(n.status.toFixed(0).startsWith(`4`)){let e=yield n.text();return Aa.notAllowed(e,n.status)}else if(e instanceof Aa)return e;else return Aa.internal(`Encountered unknown websocket error during connection: ${e}`,{status:n.status,statusText:n.statusText})}catch(e){return e instanceof Aa?e:Aa.serverUnreachable(e instanceof Error?e.message:`server was not reachable`)}})}};function rc(e){let t={type:`offer`,sdp:e.sdp};switch(e.type){case`answer`:case`offer`:case`pranswer`:case`rollback`:t.type=e.type;break}return t}function ic(e,t){return new rr({sdp:e.sdp,type:e.type,id:t})}function ac(e,t,n){let r=new URLSearchParams;return r.set(`access_token`,e),n.reconnect&&(r.set(`reconnect`,`1`),n.sid&&r.set(`sid`,n.sid)),r.set(`auto_subscribe`,n.autoSubscribe?`1`:`0`),r.set(`sdk`,Uo()?`reactnative`:`js`),r.set(`version`,t.version),r.set(`protocol`,t.protocol.toString()),t.deviceModel&&r.set(`device_model`,t.deviceModel),t.os&&r.set(`os`,t.os),t.osVersion&&r.set(`os_version`,t.osVersion),t.browser&&r.set(`browser`,t.browser),t.browserVersion&&r.set(`browser_version`,t.browserVersion),n.adaptiveStream&&r.set(`adaptive_stream`,`1`),n.reconnectReason&&r.set(`reconnect_reason`,n.reconnectReason.toString()),navigator.connection?.type&&r.set(`network`,navigator.connection.type),r}function oc(e,t,n){let r=new URLSearchParams;r.set(`access_token`,e);let i=new Vr({clientInfo:t,connectionSettings:new Br({autoSubscribe:!!n.autoSubscribe,adaptiveStream:!!n.adaptiveStream}),reconnect:!!n.reconnect,participantSid:n.sid?n.sid:void 0});n.reconnectReason&&(i.reconnectReason=n.reconnectReason);let a=new Hr({joinRequest:i.toBinary()});return r.set(`join_request`,btoa(new TextDecoder(`utf-8`).decode(a.toBinary()))),r}var sc=class{constructor(){this.buffer=[],this._totalSize=0}push(e){this.buffer.push(e),this._totalSize+=e.data.byteLength}pop(){let e=this.buffer.shift();return e&&(this._totalSize-=e.data.byteLength),e}getAll(){return this.buffer.slice()}popToSequence(e){for(;this.buffer.length>0&&this.buffer[0].sequence<=e;)this.pop()}alignBufferedAmount(e){for(;this.buffer.length>0;){let t=this.buffer[0];if(this._totalSize-t.data.byteLength<=e)break;this.pop()}}get length(){return this.buffer.length}},cc=class{constructor(e){this._map=new Map,this._lastCleanup=0,this.ttl=e}set(e,t){let n=Date.now();n-this._lastCleanup>this.ttl/2&&this.cleanup();let r=n+this.ttl;return this._map.set(e,{value:t,expiresAt:r}),this}get(e){let t=this._map.get(e);if(t){if(t.expiresAt<Date.now()){this._map.delete(e);return}return t.value}}has(e){let t=this._map.get(e);return t?t.expiresAt<Date.now()?(this._map.delete(e),!1):!0:!1}delete(e){return this._map.delete(e)}clear(){this._map.clear()}cleanup(){let e=Date.now();for(let[t,n]of this._map.entries())n.expiresAt<e&&this._map.delete(t);this._lastCleanup=e}get size(){return this.cleanup(),this._map.size}forEach(e){this.cleanup();for(let[t,n]of this._map.entries())n.expiresAt>=Date.now()&&e(n.value,t,this.asValueMap())}map(e){this.cleanup();let t=[],n=this.asValueMap();for(let[r,i]of n.entries())t.push(e(i,r,n));return t}asValueMap(){let e=new Map;for(let[t,n]of this._map.entries())n.expiresAt>=Date.now()&&e.set(t,n.value);return e}},lc={},uc={},dc={exports:{}},fc;function pc(){if(fc)return dc.exports;fc=1;var e=dc.exports={v:[{name:`version`,reg:/^(\d*)$/}],o:[{name:`origin`,reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:[`username`,`sessionId`,`sessionVersion`,`netType`,`ipVer`,`address`],format:`%s %s %d %s IP%d %s`}],s:[{name:`name`}],i:[{name:`description`}],u:[{name:`uri`}],e:[{name:`email`}],p:[{name:`phone`}],z:[{name:`timezones`}],r:[{name:`repeats`}],t:[{name:`timing`,reg:/^(\d*) (\d*)/,names:[`start`,`stop`],format:`%d %d`}],c:[{name:`connection`,reg:/^IN IP(\d) (\S*)/,names:[`version`,`ip`],format:`IN IP%d %s`}],b:[{push:`bandwidth`,reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:[`type`,`limit`],format:`%s:%s`}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:[`type`,`port`,`protocol`,`payloads`],format:`%s %d %s %s`}],a:[{push:`rtp`,reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:[`payload`,`codec`,`rate`,`encoding`],format:function(e){return e.encoding?`rtpmap:%d %s/%s/%s`:e.rate?`rtpmap:%d %s/%s`:`rtpmap:%d %s`}},{push:`fmtp`,reg:/^fmtp:(\d*) ([\S| ]*)/,names:[`payload`,`config`],format:`fmtp:%d %s`},{name:`control`,reg:/^control:(.*)/,format:`control:%s`},{name:`rtcp`,reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:[`port`,`netType`,`ipVer`,`address`],format:function(e){return e.address==null?`rtcp:%d`:`rtcp:%d %s IP%d %s`}},{push:`rtcpFbTrrInt`,reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:[`payload`,`value`],format:`rtcp-fb:%s trr-int %d`},{push:`rtcpFb`,reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:[`payload`,`type`,`subtype`],format:function(e){return e.subtype==null?`rtcp-fb:%s %s`:`rtcp-fb:%s %s %s`}},{push:`ext`,reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:[`value`,`direction`,`encrypt-uri`,`uri`,`config`],format:function(e){return`extmap:%d`+(e.direction?`/%s`:`%v`)+(e[`encrypt-uri`]?` %s`:`%v`)+` %s`+(e.config?` %s`:``)}},{name:`extmapAllowMixed`,reg:/^(extmap-allow-mixed)/},{push:`crypto`,reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:[`id`,`suite`,`config`,`sessionConfig`],format:function(e){return e.sessionConfig==null?`crypto:%d %s %s`:`crypto:%d %s %s %s`}},{name:`setup`,reg:/^setup:(\w*)/,format:`setup:%s`},{name:`connectionType`,reg:/^connection:(new|existing)/,format:`connection:%s`},{name:`mid`,reg:/^mid:([^\s]*)/,format:`mid:%s`},{name:`msid`,reg:/^msid:(.*)/,format:`msid:%s`},{name:`ptime`,reg:/^ptime:(\d*(?:\.\d*)*)/,format:`ptime:%d`},{name:`maxptime`,reg:/^maxptime:(\d*(?:\.\d*)*)/,format:`maxptime:%d`},{name:`direction`,reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:`icelite`,reg:/^(ice-lite)/},{name:`iceUfrag`,reg:/^ice-ufrag:(\S*)/,format:`ice-ufrag:%s`},{name:`icePwd`,reg:/^ice-pwd:(\S*)/,format:`ice-pwd:%s`},{name:`fingerprint`,reg:/^fingerprint:(\S*) (\S*)/,names:[`type`,`hash`],format:`fingerprint:%s %s`},{push:`candidates`,reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:[`foundation`,`component`,`transport`,`priority`,`ip`,`port`,`type`,`raddr`,`rport`,`tcptype`,`generation`,`network-id`,`network-cost`],format:function(e){var t=`candidate:%s %d %s %d %s %d typ %s`;return t+=e.raddr==null?`%v%v`:` raddr %s rport %d`,t+=e.tcptype==null?`%v`:` tcptype %s`,e.generation!=null&&(t+=` generation %d`),t+=e[`network-id`]==null?`%v`:` network-id %d`,t+=e[`network-cost`]==null?`%v`:` network-cost %d`,t}},{name:`endOfCandidates`,reg:/^(end-of-candidates)/},{name:`remoteCandidates`,reg:/^remote-candidates:(.*)/,format:`remote-candidates:%s`},{name:`iceOptions`,reg:/^ice-options:(\S*)/,format:`ice-options:%s`},{push:`ssrcs`,reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:[`id`,`attribute`,`value`],format:function(e){var t=`ssrc:%d`;return e.attribute!=null&&(t+=` %s`,e.value!=null&&(t+=`:%s`)),t}},{push:`ssrcGroups`,reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:[`semantics`,`ssrcs`],format:`ssrc-group:%s %s`},{name:`msidSemantic`,reg:/^msid-semantic:\s?(\w*) (\S*)/,names:[`semantic`,`token`],format:`msid-semantic: %s %s`},{push:`groups`,reg:/^group:(\w*) (.*)/,names:[`type`,`mids`],format:`group:%s %s`},{name:`rtcpMux`,reg:/^(rtcp-mux)/},{name:`rtcpRsize`,reg:/^(rtcp-rsize)/},{name:`sctpmap`,reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:[`sctpmapNumber`,`app`,`maxMessageSize`],format:function(e){return e.maxMessageSize==null?`sctpmap:%s %s`:`sctpmap:%s %s %s`}},{name:`xGoogleFlag`,reg:/^x-google-flag:([^\s]*)/,format:`x-google-flag:%s`},{push:`rids`,reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:[`id`,`direction`,`params`],format:function(e){return e.params?`rid:%s %s %s`:`rid:%s %s`}},{push:`imageattrs`,reg:RegExp(`^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?`),names:[`pt`,`dir1`,`attrs1`,`dir2`,`attrs2`],format:function(e){return`imageattr:%s %s %s`+(e.dir2?` %s %s`:``)}},{name:`simulcast`,reg:RegExp(`^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$`),names:[`dir1`,`list1`,`dir2`,`list2`],format:function(e){return`simulcast:%s %s`+(e.dir2?` %s %s`:``)}},{name:`simulcast_03`,reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:[`value`],format:`simulcast: %s`},{name:`framerate`,reg:/^framerate:(\d+(?:$|\.\d+))/,format:`framerate:%s`},{name:`sourceFilter`,reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:[`filterMode`,`netType`,`addressTypes`,`destAddress`,`srcList`],format:`source-filter: %s %s %s %s %s`},{name:`bundleOnly`,reg:/^(bundle-only)/},{name:`label`,reg:/^label:(.+)/,format:`label:%s`},{name:`sctpPort`,reg:/^sctp-port:(\d+)$/,format:`sctp-port:%s`},{name:`maxMessageSize`,reg:/^max-message-size:(\d+)$/,format:`max-message-size:%s`},{push:`tsRefClocks`,reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:[`clksrc`,`clksrcExt`],format:function(e){return`ts-refclk:%s`+(e.clksrcExt==null?``:`=%s`)}},{name:`mediaClk`,reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:[`id`,`mediaClockName`,`mediaClockValue`,`rateNumerator`,`rateDenominator`],format:function(e){var t=`mediaclk:`;return t+=e.id==null?`%v%s`:`id=%s %s`,t+=e.mediaClockValue==null?``:`=%s`,t+=e.rateNumerator==null?``:` rate=%s`,t+=e.rateDenominator==null?``:`/%s`,t}},{name:`keywords`,reg:/^keywds:(.+)$/,format:`keywds:%s`},{name:`content`,reg:/^content:(.+)/,format:`content:%s`},{name:`bfcpFloorCtrl`,reg:/^floorctrl:(c-only|s-only|c-s)/,format:`floorctrl:%s`},{name:`bfcpConfId`,reg:/^confid:(\d+)/,format:`confid:%s`},{name:`bfcpUserId`,reg:/^userid:(\d+)/,format:`userid:%s`},{name:`bfcpFloorId`,reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:[`id`,`mStream`],format:`floorid:%s mstrm:%s`},{push:`invalid`,names:[`value`]}]};return Object.keys(e).forEach(function(t){e[t].forEach(function(e){e.reg||=/(.*)/,e.format||=`%s`})}),dc.exports}var mc;function hc(){return mc?uc:(mc=1,(function(e){var t=function(e){return String(Number(e))===e?Number(e):e},n=function(e,n,r,i){if(i&&!r)n[i]=t(e[1]);else for(var a=0;a<r.length;a+=1)e[a+1]!=null&&(n[r[a]]=t(e[a+1]))},r=function(e,t,r){var i=e.name&&e.names;e.push&&!t[e.push]?t[e.push]=[]:i&&!t[e.name]&&(t[e.name]={});var a=e.push?{}:i?t[e.name]:t;n(r.match(e.reg),a,e.names,e.name),e.push&&t[e.push].push(a)},i=pc(),a=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(a).forEach(function(e){var t=e[0],a=e.slice(2);t===`m`&&(n.push({rtp:[],fmtp:[]}),o=n[n.length-1]);for(var s=0;s<(i[t]||[]).length;s+=1){var c=i[t][s];if(c.reg.test(a))return r(c,o,a)}}),t.media=n,t};var o=function(e,n){var r=n.split(/=(.+)/,2);return r.length===2?e[r[0]]=t(r[1]):r.length===1&&n.length>1&&(e[r[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(o,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(` `).map(Number)},e.parseRemoteCandidates=function(e){for(var n=[],r=e.split(` `).map(t),i=0;i<r.length;i+=3)n.push({component:r[i],ip:r[i+1],port:r[i+2]});return n},e.parseImageAttributes=function(e){return e.split(` `).map(function(e){return e.substring(1,e.length-1).split(`,`).reduce(o,{})})},e.parseSimulcastStreamList=function(e){return e.split(`;`).map(function(e){return e.split(`,`).map(function(e){var n,r=!1;return e[0]===`~`?(n=t(e.substring(1,e.length)),r=!0):n=t(e),{scid:n,paused:r}})})}})(uc),uc)}var gc,_c;function vc(){if(_c)return gc;_c=1;var e=pc(),t=/%[sdv%]/g,n=function(e){var n=1,r=arguments,i=r.length;return e.replace(t,function(e){if(n>=i)return e;var t=r[n];switch(n+=1,e){case`%%`:return`%`;case`%s`:return String(t);case`%d`:return Number(t);case`%v`:return``}})},r=function(e,t,r){var i=t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format,a=[e+`=`+i];if(t.names)for(var o=0;o<t.names.length;o+=1){var s=t.names[o];t.name?a.push(r[t.name][s]):a.push(r[t.names[o]])}else a.push(r[t.name]);return n.apply(null,a)},i=[`v`,`o`,`s`,`i`,`u`,`e`,`p`,`c`,`b`,`t`,`r`,`z`,`a`],a=[`i`,`c`,`b`,`a`];return gc=function(t,n){n||={},t.version??=0,t.name??=` `,t.media.forEach(function(e){e.payloads??=``});var o=n.outerOrder||i,s=n.innerOrder||a,c=[];return o.forEach(function(n){e[n].forEach(function(e){e.name in t&&t[e.name]!=null?c.push(r(n,e,t)):e.push in t&&t[e.push]!=null&&t[e.push].forEach(function(t){c.push(r(n,e,t))})})}),t.media.forEach(function(t){c.push(r(`m`,e.m[0],t)),s.forEach(function(n){e[n].forEach(function(e){e.name in t&&t[e.name]!=null?c.push(r(n,e,t)):e.push in t&&t[e.push]!=null&&t[e.push].forEach(function(t){c.push(r(n,e,t))})})})}),c.join(`\r
37
37
  `)+`\r
38
- `},gc}var yc;function bc(){if(yc)return lc;yc=1;var e=hc(),t=vc();return lc.grammar=pc(),lc.write=t,lc.parse=e.parse,lc.parseParams=e.parseParams,lc.parseFmtpConfig=e.parseFmtpConfig,lc.parsePayloads=e.parsePayloads,lc.parseRemoteCandidates=e.parseRemoteCandidates,lc.parseImageAttributes=e.parseImageAttributes,lc.parseSimulcastStreamList=e.parseSimulcastStreamList,lc}var xc=bc();function Sc(e,t,n){var r,i,a;t===void 0&&(t=50),n===void 0&&(n={});var o=(r=n.isImmediate)!=null&&r,s=(i=n.callback)!=null&&i,c=n.maxWait,l=Date.now(),u=[];function d(){if(c!==void 0){var e=Date.now()-l;if(e+t>=c)return c-e}return t}var f=function(){var t=[].slice.call(arguments),n=this;return new Promise(function(r,i){var c=o&&a===void 0;if(a!==void 0&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,l=Date.now(),!o){var r=e.apply(n,t);s&&s(r),u.forEach(function(e){return(0,e.resolve)(r)}),u=[]}},d()),c){var f=e.apply(n,t);return s&&s(f),r(f)}u.push({resolve:r,reject:i})})};return f.cancel=function(e){a!==void 0&&clearTimeout(a),u.forEach(function(t){return(0,t.reject)(e)}),u=[]},f}var Cc=.7,wc=20,Tc={NegotiationStarted:`negotiationStarted`,NegotiationComplete:`negotiationComplete`,RTPVideoPayloadTypes:`rtpVideoPayloadTypes`},Ec=class extends di.EventEmitter{get pc(){return this._pc||=this.createPC(),this._pc}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),this.log=$r,this.ddExtID=0,this.latestOfferId=0,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=Sc(e=>k(this,void 0,void 0,function*(){this.emit(Tc.NegotiationStarted);try{yield this.createAndSendOffer()}catch(t){if(e)e(t);else throw t}}),wc),this.close=()=>{this._pc&&=(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,null)},this.log=ei(t.loggerName??Qr.PCTransport),this.loggerOptions=t,this.config=e,this._pc=this.createPC(),this.offerLock=new _}createPC(){let e=new RTCPeerConnection(this.config);return e.onicecandidate=e=>{var t;e.candidate&&((t=this.onIceCandidate)==null||t.call(this,e.candidate))},e.onicecandidateerror=e=>{var t;(t=this.onIceCandidateError)==null||t.call(this,e)},e.oniceconnectionstatechange=()=>{var t;(t=this.onIceConnectionStateChange)==null||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;(t=this.onSignalingStatechange)==null||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;(t=this.onConnectionStateChange)==null||t.call(this,e.connectionState)},e.ondatachannel=e=>{var t;(t=this.onDataChannel)==null||t.call(this,e)},e.ontrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)},e}get logContext(){var e;return Object.assign({},(e=this.loggerOptions).loggerContextCb?.call(e))}get isICEConnected(){return this._pc!==null&&(this.pc.iceConnectionState===`connected`||this.pc.iceConnectionState===`completed`)}addIceCandidate(e){return k(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)})}setRemoteDescription(e,t){return k(this,void 0,void 0,function*(){if(e.type===`answer`&&this.latestOfferId>0&&t>0&&t!==this.latestOfferId)return this.log.warn(`ignoring answer for old offer`,Object.assign(Object.assign({},this.logContext),{offerId:t,latestOfferId:this.latestOfferId})),!1;let n;if(e.type===`offer`){let{stereoMids:t,nackMids:n}=Oc(e);this.remoteStereoMids=t,this.remoteNackMids=n}else if(e.type===`answer`){let t=xc.parse(e.sdp??``);t.media.forEach(e=>{let t=Ac(e.mid);e.type===`audio`&&this.trackBitrates.some(n=>{if(!n.transceiver||t!=n.transceiver.mid)return!1;let r=0;if(e.rtp.some(e=>e.codec.toUpperCase()===n.codec.toUpperCase()?(r=e.payload,!0):!1),r===0)return!0;let i=!1;for(let t of e.fmtp)if(t.payload===r){t.config=t.config.split(`;`).filter(e=>!e.includes(`maxaveragebitrate`)).join(`;`),n.maxbr>0&&(t.config+=`;maxaveragebitrate=${n.maxbr*1e3}`),i=!0;break}return i||n.maxbr>0&&e.fmtp.push({payload:r,config:`maxaveragebitrate=${n.maxbr*1e3}`}),!0})}),n=xc.write(t)}return yield this.setMungedSDP(e,n,!0),this.pendingCandidates.forEach(e=>{this.pc.addIceCandidate(e)}),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):e.type===`answer`&&(this.emit(Tc.NegotiationComplete),e.sdp&&xc.parse(e.sdp).media.forEach(e=>{e.type===`video`&&this.emit(Tc.RTPVideoPayloadTypes,e.rtp)})),!0})}createAndSendOffer(e){return k(this,void 0,void 0,function*(){let t=yield this.offerLock.lock();try{if(this.onOffer===void 0)return;if(e?.iceRestart&&(this.log.debug(`restarting ICE`,this.logContext),this.restartingIce=!0),this._pc&&this._pc.signalingState===`have-local-offer`){let t=this._pc.remoteDescription;if(e?.iceRestart&&t)yield this._pc.setRemoteDescription(t);else{this.renegotiate=!0;return}}else if(!this._pc||this._pc.signalingState===`closed`){this.log.warn(`could not createOffer with closed peer connection`,this.logContext);return}this.log.debug(`starting to negotiate`,this.logContext);let t=this.latestOfferId+1;this.latestOfferId=t;let n=yield this.pc.createOffer(e);this.log.debug(`original offer`,Object.assign({sdp:n.sdp},this.logContext));let r=xc.parse(n.sdp??``);if(r.media.forEach(e=>{kc(e),e.type===`audio`?Dc(e,[`all`],[]):e.type===`video`&&this.trackBitrates.some(t=>{if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let n=0;if(e.rtp.some(e=>e.codec.toUpperCase()===t.codec.toUpperCase()?(n=e.payload,!0):!1),n===0||(jo(t.codec)&&!Io()&&this.ensureVideoDDExtensionForSVC(e,r),!jo(t.codec)))return!0;let i=Math.round(t.maxbr*Cc);for(let t of e.fmtp)if(t.payload===n){t.config.includes(`x-google-start-bitrate`)||(t.config+=`;x-google-start-bitrate=${i}`);break}return!0})}),this.latestOfferId>t){this.log.warn(`latestOfferId mismatch`,Object.assign(Object.assign({},this.logContext),{latestOfferId:this.latestOfferId,offerId:t}));return}yield this.setMungedSDP(n,xc.write(r)),this.onOffer(n,this.latestOfferId)}finally{t()}})}createAndSetAnswer(){return k(this,void 0,void 0,function*(){let e=yield this.pc.createAnswer(),t=xc.parse(e.sdp??``);return t.media.forEach(e=>{kc(e),e.type===`audio`&&Dc(e,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(e,xc.write(t)),e})}createDataChannel(e,t){return this.pc.createDataChannel(e,t)}addTransceiver(e,t){return this.pc.addTransceiver(e,t)}addTransceiverOfKind(e,t){return this.pc.addTransceiver(e,t)}addTrack(e){if(!this._pc)throw new Pa(`PC closed, cannot add track`);return this._pc.addTrack(e)}setTrackCodecBitrate(e){this.trackBitrates.push(e)}setConfiguration(e){if(!this._pc)throw new Pa(`PC closed, cannot configure`);return this._pc?.setConfiguration(e)}canRemoveTrack(){return!!this._pc?.removeTrack}removeTrack(e){return this._pc?.removeTrack(e)}getConnectionState(){return this._pc?.connectionState??`closed`}getICEConnectionState(){return this._pc?.iceConnectionState??`closed`}getSignallingState(){return this._pc?.signalingState??`closed`}getTransceivers(){return this._pc?.getTransceivers()??[]}getSenders(){return this._pc?.getSenders()??[]}getLocalDescription(){return this._pc?.localDescription}getRemoteDescription(){return this.pc?.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return k(this,void 0,void 0,function*(){if(!this._pc)return;let e=``,t=new Map,n=new Map;if((yield this._pc.getStats()).forEach(r=>{switch(r.type){case`transport`:e=r.selectedCandidatePairId;break;case`candidate-pair`:e===``&&r.selected&&(e=r.id),t.set(r.id,r);break;case`remote-candidate`:n.set(r.id,`${r.address}:${r.port}`);break}}),e===``)return;let r=t.get(e)?.remoteCandidateId;if(r!==void 0)return n.get(r)})}setMungedSDP(e,t,n){return k(this,void 0,void 0,function*(){if(t){let r=e.sdp;e.sdp=t;try{this.log.debug(`setting munged ${n?`remote`:`local`} description`,this.logContext),n?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e);return}catch(n){this.log.warn(`not able to set ${e.type}, falling back to unmodified sdp`,Object.assign(Object.assign({},this.logContext),{error:n,sdp:t})),e.sdp=r}}try{n?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(t){let r=`unknown error`;t instanceof Error?r=t.message:typeof t==`string`&&(r=t);let i={error:r,sdp:e.sdp};throw!n&&this.pc.remoteDescription&&(i.remoteSdp=this.pc.remoteDescription),this.log.error(`unable to set ${e.type}`,Object.assign(Object.assign({},this.logContext),{fields:i})),new Fa(r)}})}ensureVideoDDExtensionForSVC(e,t){var n;if(!e.ext?.some(e=>e.uri===wo)){if(this.ddExtID===0){let e=0;t.media.forEach(t=>{var n;t.type===`video`&&((n=t.ext)==null||n.forEach(t=>{t.value>e&&(e=t.value)}))}),this.ddExtID=e+1}(n=e.ext)==null||n.push({value:this.ddExtID,uri:wo})}}};function Dc(e,t,n){let r=Ac(e.mid),i=0;e.rtp.some(e=>e.codec===`opus`?(i=e.payload,!0):!1),i>0&&(e.rtcpFb||=[],n.includes(r)&&!e.rtcpFb.some(e=>e.payload===i&&e.type===`nack`)&&e.rtcpFb.push({payload:i,type:`nack`}),(t.includes(r)||t.length===1&&t[0]===`all`)&&e.fmtp.some(e=>e.payload===i?(e.config.includes(`stereo=1`)||(e.config+=`;stereo=1`),!0):!1))}function Oc(e){let t=[],n=[],r=xc.parse(e.sdp??``),i=0;return r.media.forEach(e=>{let r=Ac(e.mid);e.type===`audio`&&(e.rtp.some(e=>e.codec===`opus`?(i=e.payload,!0):!1),e.rtcpFb?.some(e=>e.payload===i&&e.type===`nack`)&&n.push(r),e.fmtp.some(e=>e.payload===i?(e.config.includes(`sprop-stereo=1`)&&t.push(r),!0):!1))}),{stereoMids:t,nackMids:n}}function kc(e){if(e.connection){let t=e.connection.ip.indexOf(`:`)>=0;(e.connection.version===4&&t||e.connection.version===6&&!t)&&(e.connection.ip=`0.0.0.0`,e.connection.version=4)}}function Ac(e){return typeof e==`number`?e.toFixed(0):e}var jc=`vp8`,Mc={audioPreset:Xa.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:$a.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:jc,backupCodec:!0,preConnectBuffer:!1},Nc={deviceId:{ideal:`default`},autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},Pc={deviceId:{ideal:`default`},resolution:Za.h720.resolution},Fc={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new ii,disconnectOnPageLeave:!0,webAudioMix:!1,singlePeerConnection:!1},Ic={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3},Lc;(function(e){e[e.NEW=0]=`NEW`,e[e.CONNECTING=1]=`CONNECTING`,e[e.CONNECTED=2]=`CONNECTED`,e[e.FAILED=3]=`FAILED`,e[e.CLOSING=4]=`CLOSING`,e[e.CLOSED=5]=`CLOSED`})(Lc||={});var Rc=class{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}constructor(e,t,n){this.peerConnectionTimeout=Ic.peerConnectionTimeout,this.log=$r,this.updateState=()=>{var e;let t=this.state,n=this.requiredTransports.map(e=>e.getConnectionState());n.every(e=>e===`connected`)?this.state=Lc.CONNECTED:n.some(e=>e===`failed`)?this.state=Lc.FAILED:n.some(e=>e===`connecting`)?this.state=Lc.CONNECTING:n.every(e=>e===`closed`)?this.state=Lc.CLOSED:n.some(e=>e===`closed`)?this.state=Lc.CLOSING:n.every(e=>e===`new`)&&(this.state=Lc.NEW),t!==this.state&&(this.log.debug(`pc state change: from ${Lc[t]} to ${Lc[this.state]}`,this.logContext),(e=this.onStateChange)==null||e.call(this,this.state,this.publisher.getConnectionState(),this.subscriber?.getConnectionState()))},this.log=ei(n.loggerName??Qr.PCManager),this.loggerOptions=n,this.isPublisherConnectionRequired=t!==`subscriber-primary`,this.isSubscriberConnectionRequired=t===`subscriber-primary`,this.publisher=new Ec(e,n),t!==`publisher-only`&&(this.subscriber=new Ec(e,n),this.subscriber.onConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.subscriber.onIceCandidate=e=>{var t;(t=this.onIceCandidate)==null||t.call(this,e,Wn.SUBSCRIBER)},this.subscriber.onDataChannel=e=>{var t;(t=this.onDataChannel)==null||t.call(this,e)},this.subscriber.onTrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)}),this.publisher.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=e=>{var t;(t=this.onIceCandidate)==null||t.call(this,e,Wn.PUBLISHER)},this.publisher.onTrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)},this.publisher.onOffer=(e,t)=>{var n;(n=this.onPublisherOffer)==null||n.call(this,e,t)},this.state=Lc.NEW,this.connectionLock=new _,this.remoteOfferLock=new _}get logContext(){var e;return Object.assign({},(e=this.loggerOptions).loggerContextCb?.call(e))}requirePublisher(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.isPublisherConnectionRequired=e,this.updateState()}createAndSendPublisherOffer(e){return this.publisher.createAndSendOffer(e)}setPublisherAnswer(e,t){return this.publisher.setRemoteDescription(e,t)}removeTrack(e){return this.publisher.removeTrack(e)}close(){return k(this,void 0,void 0,function*(){if(this.publisher&&this.publisher.getSignallingState()!==`closed`){let e=this.publisher;for(let t of e.getSenders())try{e.canRemoveTrack()&&e.removeTrack(t)}catch(e){this.log.warn(`could not removeTrack`,Object.assign(Object.assign({},this.logContext),{error:e}))}}yield Promise.all([this.publisher.close(),this.subscriber?.close()]),this.updateState()})}triggerIceRestart(){return k(this,void 0,void 0,function*(){this.subscriber&&(this.subscriber.restartingIce=!0),this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(e,t){return k(this,void 0,void 0,function*(){t===Wn.PUBLISHER?yield this.publisher.addIceCandidate(e):yield this.subscriber?.addIceCandidate(e)})}createSubscriberAnswerFromOffer(e,t){return k(this,void 0,void 0,function*(){this.log.debug(`received server offer`,Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,signalingState:this.subscriber?.getSignallingState().toString()}));let n=yield this.remoteOfferLock.lock();try{return(yield this.subscriber?.setRemoteDescription(e,t))?yield this.subscriber?.createAndSetAnswer():void 0}finally{n()}})}updateConfiguration(e,t){var n;this.publisher.setConfiguration(e),(n=this.subscriber)==null||n.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return k(this,void 0,void 0,function*(){let n=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&this.publisher.getConnectionState()!==`connected`&&this.publisher.getConnectionState()!==`connecting`&&(this.log.debug(`negotiation required, start negotiating`,this.logContext),this.publisher.negotiate()),yield Promise.all(this.requiredTransports?.map(n=>this.ensureTransportConnected(n,e,t)))}finally{n()}})}negotiate(e){return k(this,void 0,void 0,function*(){return new Promise((t,n)=>k(this,void 0,void 0,function*(){let r=setTimeout(()=>{n(`negotiation timed out`)},this.peerConnectionTimeout);e.signal.addEventListener(`abort`,()=>{clearTimeout(r),n(`negotiation aborted`)}),this.publisher.once(Tc.NegotiationStarted,()=>{e.signal.aborted||this.publisher.once(Tc.NegotiationComplete,()=>{clearTimeout(r),t()})}),yield this.publisher.negotiate(e=>{clearTimeout(r),n(e)})}))})}addPublisherTransceiver(e,t){return this.publisher.addTransceiver(e,t)}addPublisherTransceiverOfKind(e,t){return this.publisher.addTransceiverOfKind(e,t)}getMidForReceiver(e){return(this.subscriber?this.subscriber.getTransceivers():this.publisher.getTransceivers()).find(t=>t.receiver===e)?.mid}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===Wn.PUBLISHER||e===Wn.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){let e=[];return this.isPublisherConnectionRequired&&e.push(this.publisher),this.isSubscriberConnectionRequired&&this.subscriber&&e.push(this.subscriber),e}ensureTransportConnected(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.peerConnectionTimeout;return function*(){if(e.getConnectionState()!==`connected`)return new Promise((e,i)=>k(n,void 0,void 0,function*(){let n=()=>{this.log.warn(`abort transport connection`,this.logContext),Ha.clearTimeout(a),i(Aa.cancelled(`room connection has been cancelled`))};t?.signal.aborted&&n(),t?.signal.addEventListener(`abort`,n);let a=Ha.setTimeout(()=>{t?.signal.removeEventListener(`abort`,n),i(Aa.internal(`could not establish pc connection`))},r);for(;this.state!==Lc.CONNECTED;)if(yield Eo(50),t?.signal.aborted){i(Aa.cancelled(`room connection has been cancelled`));return}Ha.clearTimeout(a),t?.signal.removeEventListener(`abort`,n),e()}))}()})}},zc=5e3,Bc=3e4,Vc=class e{static fetchRegionSettings(t,n,r){return k(this,void 0,void 0,function*(){let i=yield e.fetchLock.lock();try{let e=yield fetch(`${Hc(t)}/regions`,{headers:{authorization:`Bearer ${n}`},signal:r});if(e.ok){let t=Es(e.headers),n=t?t*1e3:zc;return{regionSettings:yield e.json(),updatedAtInMs:Date.now(),maxAgeInMs:n}}else if(e.status===401)throw Aa.notAllowed(`Could not fetch region settings: ${e.statusText}`,e.status);else throw Aa.internal(`Could not fetch region settings: ${e.statusText}`)}catch(e){throw e instanceof Aa?e:r?.aborted?Aa.cancelled(`Region fetching was aborted`):Aa.serverUnreachable(`Could not fetch region settings, ${e instanceof Error?`${e.name}: ${e.message}`:e}`)}finally{i()}})}static scheduleRefetch(t,n,r){return k(this,void 0,void 0,function*(){let i=e.settingsTimeouts.get(t.hostname);clearTimeout(i),e.settingsTimeouts.set(t.hostname,setTimeout(()=>k(this,void 0,void 0,function*(){try{let r=yield e.fetchRegionSettings(t,n);e.updateCachedRegionSettings(t,n,r)}catch(i){if(i instanceof Aa&&i.reason===ka.NotAllowed){$r.debug(`token is not valid, cancelling auto region refresh`);return}$r.debug(`auto refetching of region settings failed`,{error:i}),e.scheduleRefetch(t,n,r)}}),r))})}static updateCachedRegionSettings(t,n,r){e.cache.set(t.hostname,r),e.scheduleRefetch(t,n,r.maxAgeInMs)}static stopRefetch(t){let n=e.settingsTimeouts.get(t);n&&(clearTimeout(n),e.settingsTimeouts.delete(t))}static scheduleCleanup(t){let n=e.connectionTrackers.get(t);n&&(n.cleanupTimeout&&clearTimeout(n.cleanupTimeout),n.cleanupTimeout=setTimeout(()=>{let n=e.connectionTrackers.get(t);n&&n.connectionCount===0&&($r.debug(`stopping region refetch after disconnect delay`,{hostname:t}),e.stopRefetch(t)),n&&(n.cleanupTimeout=void 0)},Bc))}static cancelCleanup(t){let n=e.connectionTrackers.get(t);n?.cleanupTimeout&&(clearTimeout(n.cleanupTimeout),n.cleanupTimeout=void 0)}notifyConnected(){let t=this.serverUrl.hostname,n=e.connectionTrackers.get(t);n||(n={connectionCount:0},e.connectionTrackers.set(t,n)),n.connectionCount++,e.cancelCleanup(t)}notifyDisconnected(){let t=this.serverUrl.hostname,n=e.connectionTrackers.get(t);n&&(n.connectionCount=Math.max(0,n.connectionCount-1),n.connectionCount===0&&e.scheduleCleanup(t))}constructor(e,t){this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){this.token=e}isCloud(){return Wo(this.serverUrl)}getServerUrl(){return this.serverUrl}fetchRegionSettings(t){return k(this,void 0,void 0,function*(){return e.fetchRegionSettings(this.serverUrl,this.token,t)})}getNextBestRegionUrl(t){return k(this,void 0,void 0,function*(){if(!this.isCloud())throw Error(`region availability is only supported for LiveKit Cloud domains`);let n=e.cache.get(this.serverUrl.hostname);(!n||Date.now()-n.updatedAtInMs>n.maxAgeInMs)&&(n=yield this.fetchRegionSettings(t),e.updateCachedRegionSettings(this.serverUrl,this.token,n));let r=n.regionSettings.regions.filter(e=>!this.attemptedRegions.find(t=>t.url===e.url));if(r.length>0){let e=r[0];return this.attemptedRegions.push(e),$r.debug(`next region: ${e.region}`),e.url}else return null})}resetAttempts(){this.attemptedRegions=[]}setServerReportedRegions(t){e.updateCachedRegionSettings(this.serverUrl,this.token,t)}};Vc.cache=new Map,Vc.settingsTimeouts=new Map,Vc.connectionTrackers=new Map,Vc.fetchLock=new _;function Hc(e){return`${e.protocol.replace(`ws`,`http`)}//${e.host}/settings`}var Uc=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.message=Kc(n,e.MAX_MESSAGE_BYTES),this.data=r?Kc(r,e.MAX_DATA_BYTES):void 0}static fromProto(t){return new e(t.code,t.message,t.data)}toProto(){return new Dn({code:this.code,message:this.message,data:this.data})}static builtIn(t,n){return new e(e.ErrorCode[t],e.ErrorMessage[t],n)}};Uc.MAX_MESSAGE_BYTES=256,Uc.MAX_DATA_BYTES=15360,Uc.ErrorCode={APPLICATION_ERROR:1500,CONNECTION_TIMEOUT:1501,RESPONSE_TIMEOUT:1502,RECIPIENT_DISCONNECTED:1503,RESPONSE_PAYLOAD_TOO_LARGE:1504,SEND_FAILED:1505,UNSUPPORTED_METHOD:1400,RECIPIENT_NOT_FOUND:1401,REQUEST_PAYLOAD_TOO_LARGE:1402,UNSUPPORTED_SERVER:1403,UNSUPPORTED_VERSION:1404},Uc.ErrorMessage={APPLICATION_ERROR:`Application error in method handler`,CONNECTION_TIMEOUT:`Connection timeout`,RESPONSE_TIMEOUT:`Response timeout`,RECIPIENT_DISCONNECTED:`Recipient disconnected`,RESPONSE_PAYLOAD_TOO_LARGE:`Response payload too large`,SEND_FAILED:`Failed to send`,UNSUPPORTED_METHOD:`Method not supported at destination`,RECIPIENT_NOT_FOUND:`Recipient not found`,REQUEST_PAYLOAD_TOO_LARGE:`Request payload too large`,UNSUPPORTED_SERVER:`RPC not supported by server`,UNSUPPORTED_VERSION:`Unsupported RPC version`};var Wc=15360;function Gc(e){return new TextEncoder().encode(e).length}function Kc(e,t){if(Gc(e)<=t)return e;let n=0,r=e.length,i=new TextEncoder;for(;n<r;){let a=Math.floor((n+r+1)/2);i.encode(e.slice(0,a)).length<=t?n=a:r=a-1}return e.slice(0,n)}var qc=2e3;function Jc(e,t){if(!t)return 0;let n,r;return`bytesReceived`in e?(n=e.bytesReceived,r=t.bytesReceived):`bytesSent`in e&&(n=e.bytesSent,r=t.bytesSent),n===void 0||r===void 0||e.timestamp===void 0||t.timestamp===void 0?0:(n-r)*8*1e3/(e.timestamp-t.timestamp)}var Yc=typeof MediaRecorder<`u`,Xc=Yc?MediaRecorder:class{constructor(){throw Error(`MediaRecorder is not available in this environment`)}},Zc=class extends Xc{constructor(e,t){if(!Yc)throw Error(`MediaRecorder is not available in this environment`);super(new MediaStream([e.mediaStreamTrack]),t);let n,r,i=()=>r===void 0,a=()=>{this.removeEventListener(`dataavailable`,n),this.removeEventListener(`stop`,a),this.removeEventListener(`error`,o),r?.close(),r=void 0},o=e=>{r?.error(e),this.removeEventListener(`dataavailable`,n),this.removeEventListener(`stop`,a),this.removeEventListener(`error`,o),r=void 0};this.byteStream=new ReadableStream({start:e=>{r=e,n=t=>k(this,void 0,void 0,function*(){let n;if(t.data.arrayBuffer){let e=yield t.data.arrayBuffer();n=new Uint8Array(e)}else if(t.data.byteArray)n=t.data.byteArray;else throw Error(`no data available!`);i()||e.enqueue(n)}),this.addEventListener(`dataavailable`,n)},cancel:()=>{a()}}),this.addEventListener(`stop`,a),this.addEventListener(`error`,o)}};function Qc(){return Yc}var $c=1e3,el=1e4,tl=class extends P{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}get hasPreConnectBuffer(){return!!this.localTrackRecorder}constructor(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=arguments.length>4?arguments[4]:void 0;super(e,t,i),this.manuallyStopped=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch(()=>this.log.debug(`track mute bounce got cancelled by an unmute event`,this.logContext)),this.debouncedTrackMuteHandler=Sc(()=>k(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>k(this,void 0,void 0,function*(){this.debouncedTrackMuteHandler.cancel(`unmute`),yield this.resumeUpstream()}),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent),this.emit(N.Ended,this)},this.reacquireTrack=!1,this.providedByUser=r,this.muteLock=new _,this.pauseUpstreamLock=new _,this.trackChangeLock=new _,this.trackChangeLock.lock().then(t=>k(this,void 0,void 0,function*(){try{yield this.setMediaStreamTrack(e,!0)}finally{t()}})),this._constraints=e.getConstraints(),n&&(this._constraints=n)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==P.Kind.Video)return;let{width:e,height:t}=this._mediaStreamTrack.getSettings();if(e&&t)return{width:e,height:t}}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){return this.processor?.processedTrack??this._mediaStreamTrack}get isLocal(){return!0}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(e,t){return k(this,void 0,void 0,function*(){if(e===this._mediaStreamTrack&&!t)return;this._mediaStreamTrack&&(this.attachedElements.forEach(e=>{So(this._mediaStreamTrack,e)}),this.debouncedTrackMuteHandler.cancel(`new-track`),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent)),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener(`ended`,this.handleEnded),e.addEventListener(`mute`,this.handleTrackMuteEvent),e.addEventListener(`unmute`,this.handleTrackUnmuteEvent),this._constraints=e.getConstraints());let n;if(this.processor&&e){if(this.log.debug(`restarting processor`,this.logContext),this.kind===`unknown`)throw TypeError(`cannot set processor on track of unknown kind`);this.processorElement&&(xo(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),n=this.processor.processedTrack}this.sender&&this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(n??e)),!this.providedByUser&&this._mediaStreamTrack!==e&&this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(t=>{xo(n??e,t)}))})}waitForDimensions(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$c;return function*(){if(e.kind===P.Kind.Audio)throw Error(`cannot get dimensions for audio tracks`);Ca()?.os===`iOS`&&(yield Eo(10));let n=Date.now();for(;Date.now()-n<t;){let t=e.dimensions;if(t)return t;yield Eo(50)}throw new Ma(`unable to get track dimensions after timeout`)}()})}setDeviceId(e){return k(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===cs(e)||(this._constraints.deviceId=e,this.isMuted)?!0:(yield this.restartTrack(),cs(e)===this._mediaStreamTrack.getSettings().deviceId)})}getDeviceId(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){if(e.source===P.Source.ScreenShare)return;let{deviceId:n,groupId:r}=e._mediaStreamTrack.getSettings(),i=e.kind===P.Kind.Audio?`audioinput`:`videoinput`;return t?Js.getInstance().normalizeDeviceId(i,n,r):n}()})}mute(){return k(this,void 0,void 0,function*(){return this.setTrackMuted(!0),this})}unmute(){return k(this,void 0,void 0,function*(){return this.setTrackMuted(!1),this})}replaceTrack(e,t){return k(this,void 0,void 0,function*(){let n=yield this.trackChangeLock.lock();try{if(!this.sender)throw new Ma(`unable to replace an unpublished track`);let n,r;return typeof t==`boolean`?n=t:t!==void 0&&(n=t.userProvidedTrack,r=t.stopProcessor),this.providedByUser=n??!0,this.log.debug(`replace MediaStreamTrack`,this.logContext),yield this.setMediaStreamTrack(e),r&&this.processor&&(yield this.internalStopProcessor()),this}finally{n()}})}restart(e){return k(this,void 0,void 0,function*(){this.manuallyStopped=!1;let t=yield this.trackChangeLock.lock();try{e||=this._constraints;let{deviceId:t,facingMode:n}=e,r=ai(e,[`deviceId`,`facingMode`]);this.log.debug(`restarting track with constraints`,Object.assign(Object.assign({},this.logContext),{constraints:e}));let i={audio:!1,video:!1};this.kind===P.Kind.Video?i.video=t||n?{deviceId:t,facingMode:n}:!0:i.audio=t?Object.assign({deviceId:t},r):!0,this.attachedElements.forEach(e=>{So(this.mediaStreamTrack,e)}),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.stop();let a=(yield navigator.mediaDevices.getUserMedia(i)).getTracks()[0];return this.kind===P.Kind.Video&&(yield a.applyConstraints(r)),a.addEventListener(`ended`,this.handleEnded),this.log.debug(`re-acquired MediaStreamTrack`,this.logContext),yield this.setMediaStreamTrack(a),this._constraints=e,this.emit(N.Restarted,this),this.manuallyStopped&&(this.log.warn(`track was stopped during a restart, stopping restarted track`,this.logContext),this.stop()),this}finally{t()}})}setTrackMuted(e){this.log.debug(`setting ${this.kind} track ${e?`muted`:`unmuted`}`,this.logContext),!(this.isMuted===e&&this._mediaStreamTrack.enabled!==e)&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}get needsReAcquisition(){return this._mediaStreamTrack.readyState!==`live`||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Bo()&&(this.log.debug(`visibility changed, is in Background: ${this.isInBackground}`,this.logContext),!this.isInBackground&&this.needsReAcquisition&&!this.isUserProvided&&!this.isMuted&&(this.log.debug(`track needs to be reacquired, restarting ${this.source}`,this.logContext),yield this.restart(),this.reacquireTrack=!1))})}stop(){var e;this.manuallyStopped=!0,super.stop(),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent),(e=this.processor)==null||e.destroy(),this.processor=void 0}pauseUpstream(){return k(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!0)return;if(!this.sender){this.log.warn(`unable to pause upstream for an unpublished track`,this.logContext);return}this._isUpstreamPaused=!0,this.emit(N.UpstreamPaused,this);let e=Ca();if(e?.name===`Safari`&&Yo(e.version,`12.0`)<0)throw new ja(`pauseUpstream is not supported on Safari < 12.`);this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(null))}finally{e()}})}resumeUpstream(){return k(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!1)return;if(!this.sender){this.log.warn(`unable to resume upstream for an unpublished track`,this.logContext);return}this._isUpstreamPaused=!1,this.emit(N.UpstreamResumed,this),this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(this.mediaStreamTrack))}finally{e()}})}getRTCStatsReport(){return k(this,void 0,void 0,function*(){if(this.sender?.getStats)return yield this.sender.getStats()})}setProcessor(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){let r=yield t.trackChangeLock.lock();try{t.log.debug(`setting up processor`,t.logContext);let r=document.createElement(t.kind),i={kind:t.kind,track:t._mediaStreamTrack,element:r,audioContext:t.audioContext};if(yield e.init(i),t.log.debug(`processor initialized`,t.logContext),t.processor&&(yield t.internalStopProcessor()),t.kind===`unknown`)throw TypeError(`cannot set processor on track of unknown kind`);if(xo(t._mediaStreamTrack,r),r.muted=!0,r.play().catch(e=>{e instanceof DOMException&&e.name===`AbortError`?(t.log.warn(`failed to play processor element, retrying`,Object.assign(Object.assign({},t.logContext),{error:e})),setTimeout(()=>{r.play().catch(e=>{t.log.error(`failed to play processor element`,Object.assign(Object.assign({},t.logContext),{err:e}))})},100)):t.log.error(`failed to play processor element`,Object.assign(Object.assign({},t.logContext),{error:e}))}),t.processor=e,t.processorElement=r,t.processor.processedTrack){for(let e of t.attachedElements)e!==t.processorElement&&n&&(So(t._mediaStreamTrack,e),xo(t.processor.processedTrack,e));yield t.sender?.replaceTrack(t.processor.processedTrack)}t.emit(N.TrackProcessorUpdate,t.processor)}finally{r()}}()})}getProcessor(){return this.processor}stopProcessor(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){let n=yield e.trackChangeLock.lock();try{yield e.internalStopProcessor(t)}finally{n()}}()})}internalStopProcessor(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var n,r;e.processor&&(e.log.debug(`stopping processor`,e.logContext),(n=e.processor.processedTrack)==null||n.stop(),yield e.processor.destroy(),e.processor=void 0,t||((r=e.processorElement)==null||r.remove(),e.processorElement=void 0),yield e._mediaStreamTrack.applyConstraints(e._constraints),yield e.setMediaStreamTrack(e._mediaStreamTrack,!0),e.emit(N.TrackProcessorUpdate))}()})}startPreConnectBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:100;if(!Qc()){this.log.warn(`MediaRecorder is not available, cannot start preconnect buffer`,this.logContext);return}if(this.localTrackRecorder){this.log.warn(`preconnect buffer already started`);return}else{let e=`audio/webm;codecs=opus`;MediaRecorder.isTypeSupported(e)||(e=`video/mp4`),this.localTrackRecorder=new Zc(this,{mimeType:e})}this.localTrackRecorder.start(e),this.autoStopPreConnectBuffer=setTimeout(()=>{this.log.warn(`preconnect buffer timed out, stopping recording automatically`,this.logContext),this.stopPreConnectBuffer()},el)}stopPreConnectBuffer(){clearTimeout(this.autoStopPreConnectBuffer),this.localTrackRecorder&&=(this.localTrackRecorder.stop(),void 0)}getPreConnectBuffer(){return this.localTrackRecorder?.byteStream}getPreConnectBufferMimeType(){return this.localTrackRecorder?.mimeType}},nl=class extends tl{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;super(e,P.Kind.Audio,t,n,i),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>k(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let e;try{e=yield this.getSenderStats()}catch(e){this.log.error(`could not get audio sender stats`,Object.assign(Object.assign({},this.logContext),{error:e}));return}e&&this.prevStats&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug(`Krisp noise filter enabled`,this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,$t.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug(`Krisp noise filter disabled`,this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,$t.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=r,this.checkForSilence()}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug(`Track already muted`,this.logContext),this):(this.source===P.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug(`stopping mic track`,this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug(`Track already unmuted`,this.logContext),this;let t=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==cs(this._constraints.deviceId);return this.source===P.Source.Microphone&&(this.stopOnMute||this._mediaStreamTrack.readyState===`ended`||t)&&!this.isUserProvided&&(this.log.debug(`reacquiring mic track`,this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}})}restartTrack(e){return k(this,void 0,void 0,function*(){let t;if(e){let n=no({audio:e});typeof n.audio!=`boolean`&&(t=n.audio)}yield this.restart(t)})}restart(e){let t=Object.create(null,{restart:{get:()=>super.restart}});return k(this,void 0,void 0,function*(){let n=yield t.restart.call(this,e);return this.checkForSilence(),n})}startMonitor(){Ho()&&(this.monitorInterval||=setInterval(()=>{this.monitorSender()},qc))}setProcessor(e){return k(this,void 0,void 0,function*(){let t=yield this.trackChangeLock.lock();try{if(!Uo()&&!this.audioContext)throw Error(`Audio context needs to be set on LocalAudioTrack in order to enable processors`);this.processor&&(yield this.internalStopProcessor());let t={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};this.log.debug(`setting up audio processor ${e.name}`,this.logContext),yield e.init(t),this.processor=e,this.processor.processedTrack&&(yield this.sender?.replaceTrack(this.processor.processedTrack),this.processor.processedTrack.addEventListener(`enable-lk-krisp-noise-filter`,this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener(`disable-lk-krisp-noise-filter`,this.handleKrispNoiseFilterDisable)),this.emit(N.TrackProcessorUpdate,this.processor)}finally{t()}})}setAudioContext(e){this.audioContext=e}getSenderStats(){return k(this,void 0,void 0,function*(){if(!this.sender?.getStats)return;let e=yield this.sender.getStats(),t;return e.forEach(e=>{e.type===`outbound-rtp`&&(t={type:`audio`,streamId:e.id,packetsSent:e.packetsSent,packetsLost:e.packetsLost,bytesSent:e.bytesSent,timestamp:e.timestamp,roundTripTime:e.roundTripTime,jitter:e.jitter})}),t})}checkForSilence(){return k(this,void 0,void 0,function*(){let e=yield ro(this);return e&&(this.isMuted||this.log.debug(`silence detected on local audio track`,this.logContext),this.emit(N.AudioSilenceDetected)),e})}};function rl(e,t,n){switch(e.kind){case`audio`:return new nl(e,t,!1,void 0,n);case`video`:return new xl(e,t,!1,n);default:throw new Ma(`unsupported track type: ${e.kind}`)}}var il=Object.values(Za),al=Object.values(Qa),ol=Object.values($a),sl=[Za.h180,Za.h360],cl=[Qa.h180,Qa.h360],ll=e=>[{scaleResolutionDownBy:2,fps:e.encoding.maxFramerate}].map(t=>new Wa(Math.floor(e.width/t.scaleResolutionDownBy),Math.floor(e.height/t.scaleResolutionDownBy),Math.max(15e4,Math.floor(e.encoding.maxBitrate/(t.scaleResolutionDownBy**2*((e.encoding.maxFramerate??30)/(t.fps??30))))),t.fps,e.encoding.priority)),ul=[`q`,`h`,`f`];function dl(e,t,n,r){let i=r?.videoEncoding;e&&(i=r?.screenShareEncoding);let a=r?.simulcast,o=r?.scalabilityMode,s=r?.videoCodec;if(!i&&!a&&!o||!t||!n)return[{}];i||(i=pl(e,t,n,s),$r.debug(`using video encoding`,i));let c=i.maxFramerate,l=new Wa(t,n,i.maxBitrate,i.maxFramerate,i.priority);if(o&&jo(s)){let e=new vl(o),t=[];if(e.spatial>3)throw Error(`unsupported scalabilityMode: ${o}`);let n=Ca();if(Lo()||Uo()||n?.name===`Chrome`&&Yo(n?.version,`113`)<0){let r=e.suffix==`h`?2:3,a=zo(n);for(let n=0;n<e.spatial;n+=1)t.push({rid:ul[2-n],maxBitrate:i.maxBitrate/r**+n,maxFramerate:l.encoding.maxFramerate,scaleResolutionDownBy:a?2**n:void 0});t[0].scalabilityMode=o}else t.push({maxBitrate:i.maxBitrate,maxFramerate:l.encoding.maxFramerate,scalabilityMode:o});return l.encoding.priority&&(t[0].priority=l.encoding.priority,t[0].networkPriority=l.encoding.priority),$r.debug(`using svc encoding`,{encodings:t}),t}if(!a)return[i];let u=[];u=e?_l(r?.screenShareSimulcastLayers)??hl(e,l):_l(r?.videoSimulcastLayers)??hl(e,l);let d;if(u.length>0){let e=u[0];u.length>1&&([,d]=u);let r=Math.max(t,n);if(r>=960&&d)return gl(t,n,[e,d,l],c);if(r>=480)return gl(t,n,[e,l],c)}return gl(t,n,[l])}function fl(e,t,n){if(!n.backupCodec||n.backupCodec===!0||n.backupCodec.codec===n.videoCodec)return;t!==n.backupCodec.codec&&$r.warn(`requested a different codec than specified as backup`,{serverRequested:t,backup:n.backupCodec.codec}),n.videoCodec=t,n.videoEncoding=n.backupCodec.encoding;let r=e.mediaStreamTrack.getSettings(),i=r.width??e.dimensions?.width,a=r.height??e.dimensions?.height;return e.source===P.Source.ScreenShare&&n.simulcast&&(n.simulcast=!1),dl(e.source===P.Source.ScreenShare,i,a,n)}function pl(e,t,n,r){let i=ml(e,t,n),{encoding:a}=i[0],o=Math.max(t,n);for(let e=0;e<i.length;e+=1){let t=i[e];if(a=t.encoding,t.width>=o)break}if(r)switch(r){case`av1`:case`h265`:a=Object.assign({},a),a.maxBitrate*=.7;break;case`vp9`:a=Object.assign({},a),a.maxBitrate*=.85;break}return a}function ml(e,t,n){if(e)return ol;let r=t>n?t/n:n/t;return Math.abs(r-16/9)<Math.abs(r-4/3)?il:al}function hl(e,t){if(e)return ll(t);let{width:n,height:r}=t,i=n>r?n/r:r/n;return Math.abs(i-16/9)<Math.abs(i-4/3)?sl:cl}function gl(e,t,n,r){let i=[];if(n.forEach((n,a)=>{if(a>=ul.length)return;let o=Math.min(e,t),s={rid:ul[a],scaleResolutionDownBy:Math.max(1,o/Math.min(n.width,n.height)),maxBitrate:n.encoding.maxBitrate},c=r&&n.encoding.maxFramerate?Math.min(r,n.encoding.maxFramerate):n.encoding.maxFramerate;c&&(s.maxFramerate=c);let l=Po()||a===0;n.encoding.priority&&l&&(s.priority=n.encoding.priority,s.networkPriority=n.encoding.priority),i.push(s)}),Uo()&&qo()===`ios`){let e;i.forEach(t=>{e?t.maxFramerate&&t.maxFramerate>e&&(e=t.maxFramerate):e=t.maxFramerate});let t=!0;i.forEach(n=>{n.maxFramerate!=e&&(t&&(t=!1,$r.info(`Simulcast on iOS React-Native requires all encodings to share the same framerate.`)),$r.info(`Setting framerate of encoding "${n.rid??``}" to ${e}`),n.maxFramerate=e)})}return i}function _l(e){if(e)return e.sort((e,t)=>{let{encoding:n}=e,{encoding:r}=t;return n.maxBitrate>r.maxBitrate?1:n.maxBitrate<r.maxBitrate?-1:n.maxBitrate===r.maxBitrate&&n.maxFramerate&&r.maxFramerate?n.maxFramerate>r.maxFramerate?1:-1:0})}var vl=class{constructor(e){let t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw Error(`invalid scalability mode`);if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case`h`:case`_KEY`:case`_KEY_SHIFT`:this.suffix=t[3]}}toString(){return`L${this.spatial}T${this.temporal}${this.suffix??``}`}};function yl(e){return e.source===P.Source.ScreenShare||e.constraints.height&&cs(e.constraints.height)>=1080?`maintain-resolution`:`balanced`}var bl=5e3,xl=class extends tl{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3?arguments[3]:void 0;super(e,P.Kind.Video,t,n,r),this.simulcastCodecs=new Map,this.degradationPreference=`balanced`,this.isCpuConstrained=!1,this.optimizeForPerformance=!1,this.monitorSender=()=>k(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let e;try{e=yield this.getSenderStats()}catch(e){this.log.error(`could not get video sender stats`,Object.assign(Object.assign({},this.logContext),{error:e}));return}let t=new Map(e.map(e=>[e.rid,e])),n=e.some(e=>e.qualityLimitationReason===`cpu`);if(n!==this.isCpuConstrained&&(this.isCpuConstrained=n,this.isCpuConstrained&&this.emit(N.CpuConstrained)),this.prevStats){let e=0;t.forEach((t,n)=>{let r=this.prevStats?.get(n);e+=Jc(t,r)}),this._currentBitrate=e}this.prevStats=t}),this.senderLock=new _}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){if(this.signalClient=e,!Ho())return;let t=this.sender?.getParameters();t&&(this.encodings=t.encodings),!this.monitorInterval&&(this.monitorInterval=setInterval(()=>{this.monitorSender()},qc))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(e=>{e.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){let e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return k(this,void 0,void 0,function*(){var t,n,r,i;yield e.pauseUpstream.call(this);try{for(var a=!0,o=si(this.simulcastCodecs.values()),s;s=yield o.next(),t=s.done,!t;a=!0)i=s.value,a=!1,yield i.sender?.replaceTrack(null)}catch(e){n={error:e}}finally{try{!a&&!t&&(r=o.return)&&(yield r.call(o))}finally{if(n)throw n.error}}})}resumeUpstream(){let e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return k(this,void 0,void 0,function*(){var t,n,r,i;yield e.resumeUpstream.call(this);try{for(var a=!0,o=si(this.simulcastCodecs.values()),s;s=yield o.next(),t=s.done,!t;a=!0){i=s.value,a=!1;let e=i;yield e.sender?.replaceTrack(e.mediaStreamTrack)}}catch(e){n={error:e}}finally{try{!a&&!t&&(r=o.return)&&(yield r.call(o))}finally{if(n)throw n.error}}})}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug(`Track already muted`,this.logContext),this):(this.source===P.Source.Camera&&!this.isUserProvided&&(this.log.debug(`stopping camera track`,this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.source===P.Source.Camera&&!this.isUserProvided&&(this.log.debug(`reacquiring camera track`,this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this):(this.log.debug(`Track already unmuted`,this.logContext),this)}finally{t()}})}setTrackMuted(e){super.setTrackMuted(e);for(let t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){return k(this,void 0,void 0,function*(){if(!this.sender?.getStats)return[];let e=[],t=yield this.sender.getStats();return t.forEach(n=>{if(n.type===`outbound-rtp`){let r={type:`video`,streamId:n.id,frameHeight:n.frameHeight,frameWidth:n.frameWidth,framesPerSecond:n.framesPerSecond,framesSent:n.framesSent,firCount:n.firCount,pliCount:n.pliCount,nackCount:n.nackCount,packetsSent:n.packetsSent,bytesSent:n.bytesSent,qualityLimitationReason:n.qualityLimitationReason,qualityLimitationDurations:n.qualityLimitationDurations,qualityLimitationResolutionChanges:n.qualityLimitationResolutionChanges,rid:n.rid??n.id,retransmittedPacketsSent:n.retransmittedPacketsSent,targetBitrate:n.targetBitrate,timestamp:n.timestamp},i=t.get(n.remoteId);i&&(r.jitter=i.jitter,r.packetsLost=i.packetsLost,r.roundTripTime=i.roundTripTime),e.push(r)}}),e.sort((e,t)=>(t.frameWidth??0)-(e.frameWidth??0)),e})}setPublishingQuality(e){let t=[];for(let n=bo.LOW;n<=bo.HIGH;n+=1)t.push(new br({quality:n,enabled:n<=e}));this.log.debug(`setting publishing quality. max quality ${e}`,this.logContext),this.setPublishingLayers(jo(this.codec),t)}restartTrack(e){return k(this,void 0,void 0,function*(){var t,n,r,i;let a;if(e){let t=no({video:e});typeof t.video!=`boolean`&&(a=t.video)}yield this.restart(a),this.isCpuConstrained=!1;try{for(var o=!0,s=si(this.simulcastCodecs.values()),c;c=yield s.next(),t=c.done,!t;o=!0){i=c.value,o=!1;let e=i;e.sender&&e.sender.transport?.state!==`closed`&&(e.mediaStreamTrack=this.mediaStreamTrack.clone(),yield e.sender.replaceTrack(e.mediaStreamTrack))}}catch(e){n={error:e}}finally{try{!o&&!t&&(r=s.return)&&(yield r.call(s))}finally{if(n)throw n.error}}})}setProcessor(e){let t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return k(this,arguments,void 0,function(e){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){var i,a,o,s;if(yield t.setProcessor.call(n,e,r),n.processor?.processedTrack)try{for(var c=!0,l=si(n.simulcastCodecs.values()),u;u=yield l.next(),i=u.done,!i;c=!0)s=u.value,c=!1,yield s.sender?.replaceTrack(n.processor.processedTrack)}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield o.call(l))}finally{if(a)throw a.error}}}()})}setDegradationPreference(e){return k(this,void 0,void 0,function*(){if(this.degradationPreference=e,this.sender)try{this.log.debug(`setting degradationPreference to ${e}`,this.logContext);let t=this.sender.getParameters();t.degradationPreference=e,this.sender.setParameters(t)}catch(e){this.log.warn(`failed to set degradationPreference`,Object.assign({error:e},this.logContext))}})}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e)){this.log.error(`${e} already added, skipping adding simulcast codec`,this.logContext);return}let n={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,n),n}setSimulcastTrackSender(e,t){let n=this.simulcastCodecs.get(e);n&&(n.sender=t,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},bl))}setPublishingCodecs(e){return k(this,void 0,void 0,function*(){var t,n,r,i,a,o,s;if(this.log.debug(`setting publishing codecs`,Object.assign(Object.assign({},this.logContext),{codecs:e,currentCodec:this.codec})),!this.codec&&e.length>0)return yield this.setPublishingLayers(jo(e[0].codec),e[0].qualities),[];this.subscribedCodecs=e;let c=[];try{for(t=!0,n=si(e);r=yield n.next(),i=r.done,!i;t=!0){s=r.value,t=!1;let e=s;if(!this.codec||this.codec===e.codec)yield this.setPublishingLayers(jo(e.codec),e.qualities);else{let t=this.simulcastCodecs.get(e.codec);if(this.log.debug(`try setPublishingCodec for ${e.codec}`,Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:t})),!t||!t.sender){for(let t of e.qualities)if(t.enabled){c.push(e.codec);break}}else t.encodings&&(this.log.debug(`try setPublishingLayersForSender ${e.codec}`,this.logContext),yield Sl(t.sender,t.encodings,e.qualities,this.senderLock,jo(e.codec),this.log,this.logContext))}}}catch(e){a={error:e}}finally{try{!t&&!i&&(o=n.return)&&(yield o.call(n))}finally{if(a)throw a.error}}return c})}setPublishingLayers(e,t){return k(this,void 0,void 0,function*(){if(this.optimizeForPerformance){this.log.info(`skipping setPublishingLayers due to optimized publishing performance`,Object.assign(Object.assign({},this.logContext),{qualities:t}));return}this.log.debug(`setting publishing layers`,Object.assign(Object.assign({},this.logContext),{qualities:t})),!(!this.sender||!this.encodings)&&(yield Sl(this.sender,this.encodings,t,this.senderLock,e,this.log,this.logContext))})}prioritizePerformance(){return k(this,void 0,void 0,function*(){if(!this.sender)throw Error(`sender not found`);let e=yield this.senderLock.lock();try{this.optimizeForPerformance=!0;let e=this.sender.getParameters();e.encodings=e.encodings.map((e,t)=>Object.assign(Object.assign({},e),{active:t===0,scaleResolutionDownBy:Math.max(1,Math.ceil((this.mediaStreamTrack.getSettings().height??360)/360)),scalabilityMode:t===0&&jo(this.codec)?`L1T3`:void 0,maxFramerate:t===0?15:0,maxBitrate:t===0?e.maxBitrate:0})),this.log.debug(`setting performance optimised encodings`,Object.assign(Object.assign({},this.logContext),{encodings:e.encodings})),this.encodings=e.encodings,yield this.sender.setParameters(e)}catch(e){this.log.error(`failed to set performance optimised encodings`,Object.assign(Object.assign({},this.logContext),{error:e})),this.optimizeForPerformance=!1}finally{e()}})}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Bo()&&this.isInBackground&&this.source===P.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}};function Sl(e,t,n,r,i,a,o){return k(this,void 0,void 0,function*(){let s=yield r.lock();a.debug(`setPublishingLayersForSender`,Object.assign(Object.assign({},o),{sender:e,qualities:n,senderEncodings:t}));try{let r=e.getParameters(),{encodings:s}=r;if(!s)return;if(s.length!==t.length){a.warn(`cannot set publishing layers, encodings mismatch`,Object.assign(Object.assign({},o),{encodings:s,senderEncodings:t}));return}let c=!1;i&&n.some(e=>e.enabled)&&n.forEach(e=>e.enabled=!0),s.forEach((e,r)=>{let i=e.rid??``;i===``&&(i=`q`);let s=Cl(i),l=n.find(e=>e.quality===s);l&&e.active!==l.enabled&&(c=!0,e.active=l.enabled,a.debug(`setting layer ${l.quality} to ${e.active?`enabled`:`disabled`}`,o),Po()&&(l.enabled?(e.scaleResolutionDownBy=t[r].scaleResolutionDownBy,e.maxBitrate=t[r].maxBitrate,e.maxFrameRate=t[r].maxFrameRate):(e.scaleResolutionDownBy=4,e.maxBitrate=10,e.maxFrameRate=2)))}),c&&(r.encodings=s,a.debug(`setting encodings`,Object.assign(Object.assign({},o),{encodings:r.encodings})),yield e.setParameters(r))}finally{s()}})}function Cl(e){switch(e){case`f`:return bo.HIGH;case`h`:return bo.MEDIUM;case`q`:return bo.LOW;default:return bo.HIGH}}function wl(e,t,n,r){if(!n)return[new dn({quality:bo.HIGH,width:e,height:t,bitrate:0,ssrc:0})];if(r){let r=n[0].scalabilityMode,i=new vl(r),a=[],o=i.suffix==`h`?1.5:2,s=i.suffix==`h`?2:3;for(let r=0;r<i.spatial;r+=1)a.push(new dn({quality:Math.min(bo.HIGH,i.spatial-1)-r,width:Math.ceil(e/o**+r),height:Math.ceil(t/o**+r),bitrate:n[0].maxBitrate?Math.ceil(n[0].maxBitrate/s**+r):0,ssrc:0}));return a}return n.map(n=>{let r=n.scaleResolutionDownBy??1;return new dn({quality:Cl(n.rid??``),width:Math.ceil(e/r),height:Math.ceil(t/r),bitrate:n.maxBitrate??0,ssrc:0})})}var Tl=`_lossy`,El=`_reliable`,Dl=2*1e3,Ol=`leave-reconnect`,kl=3e4,Al=8*1024,jl=256*1024,Ml;(function(e){e[e.New=0]=`New`,e[e.Connected=1]=`Connected`,e[e.Disconnected=2]=`Disconnected`,e[e.Reconnecting=3]=`Reconnecting`,e[e.Closed=4]=`Closed`})(Ml||={});var Nl=class extends di.EventEmitter{get isClosed(){return this._isClosed}get pendingReconnect(){return!!this.reconnectTimeout}constructor(e){super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=Ic.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.latestRemoteOfferId=0,this.subscriberPrimary=!1,this.pcState=Ml.New,this._isClosed=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.log=$r,this.reliableDataSequence=1,this.reliableMessageBuffer=new sc,this.reliableReceivedState=new cc(kl),this.lossyDataStatCurrentBytes=0,this.lossyDataStatByterate=0,this.lossyDataDropCount=0,this.midToTrackId={},this.isWaitingForNetworkReconnect=!1,this.handleDataChannel=e=>k(this,[e],void 0,function(e){var t=this;let{channel:n}=e;return function*(){if(n){if(n.label===El)t.reliableDCSub=n;else if(n.label===Tl)t.lossyDCSub=n;else return;t.log.debug(`on data channel ${n.id}, ${n.label}`,t.logContext),n.onmessage=t.handleDataMessage}}()}),this.handleDataMessage=e=>k(this,void 0,void 0,function*(){let t=yield this.dataProcessLock.lock();try{let t;if(e.data instanceof ArrayBuffer)t=e.data;else if(e.data instanceof Blob)t=yield e.data.arrayBuffer();else{this.log.error(`unsupported data type`,Object.assign(Object.assign({},this.logContext),{data:e.data}));return}let n=pn.fromBinary(new Uint8Array(t));if(n.sequence>0&&n.participantSid!==``){let e=this.reliableReceivedState.get(n.participantSid);if(e&&n.sequence<=e)return;this.reliableReceivedState.set(n.participantSid,n.sequence)}if(n.value?.case===`speaker`)this.emit(M.ActiveSpeakersUpdate,n.value.value.speakers);else if(n.value?.case===`encryptedPacket`){if(!this.e2eeManager){this.log.error(`Received encrypted packet but E2EE not set up`,this.logContext);return}let e=yield this.e2eeManager?.handleEncryptedData(n.value.value.encryptedValue,n.value.value.iv,n.participantIdentity,n.value.value.keyIndex),t=new pn({value:gn.fromBinary(e.payload).value,participantIdentity:n.participantIdentity,participantSid:n.participantSid});t.value?.case===`user`&&Fl(t,t.value.value),this.emit(M.DataPacketReceived,t,n.value.value.encryptionType)}else n.value?.case===`user`&&Fl(n,n.value.value),this.emit(M.DataPacketReceived,n,cn.NONE)}finally{t()}}),this.handleDataError=e=>{let t=e.currentTarget.maxRetransmits===0?`lossy`:`reliable`;if(e instanceof ErrorEvent&&e.error){let{error:n}=e.error;this.log.error(`DataChannel error on ${t}: ${e.message}`,Object.assign(Object.assign({},this.logContext),{error:n}))}else this.log.error(`Unknown DataChannel error on ${t}`,Object.assign(Object.assign({},this.logContext),{event:e}))},this.handleBufferedAmountLow=e=>{let t=e.currentTarget.maxRetransmits===0?mn.LOSSY:mn.RELIABLE;this.updateAndEmitDCBufferStatus(t)},this.handleDisconnect=(e,t)=>{if(this._isClosed)return;this.log.warn(`${e} disconnected`,this.logContext),this.reconnectAttempts===0&&(this.reconnectStart=Date.now());let n=e=>{this.log.warn(`could not recover connection after ${this.reconnectAttempts} attempts, ${e}ms. giving up`,this.logContext),this.emit(M.Disconnected),this.close()},r=Date.now()-this.reconnectStart,i=this.getNextRetryDelay({elapsedMs:r,retryCount:this.reconnectAttempts});if(i===null){n(r);return}e===Ol&&(i=0),this.log.debug(`reconnecting in ${i}ms`,this.logContext),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=Ha.setTimeout(()=>this.attemptReconnect(t).finally(()=>this.reconnectTimeout=void 0),i)},this.waitForRestarted=()=>new Promise((e,t)=>{this.pcState===Ml.Connected&&e();let n=()=>{this.off(M.Disconnected,r),e()},r=()=>{this.off(M.Restarted,n),t()};this.once(M.Restarted,n),this.once(M.Disconnected,r)}),this.updateAndEmitDCBufferStatus=e=>{if(e===mn.RELIABLE){let t=this.dataChannelForKind(e);t&&this.reliableMessageBuffer.alignBufferedAmount(t.bufferedAmount)}let t=this.isBufferStatusLow(e);t!==void 0&&t!==this.dcBufferStatus.get(e)&&(this.dcBufferStatus.set(e,t),this.emit(M.DCBufferStatusChanged,t,e))},this.isBufferStatusLow=e=>{let t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>k(this,void 0,void 0,function*(){this.url&&(yield fetch(us(this.url),{method:`HEAD`}).then(e=>e.ok).catch(()=>!1))&&(this.log.info(`detected network reconnected`),(this.client.currentState===ec.RECONNECTING||this.isWaitingForNetworkReconnect&&this.client.currentState===ec.CONNECTED)&&(this.clearReconnectTimeout(),this.attemptReconnect(Zt.RR_SIGNAL_DISCONNECTED),this.isWaitingForNetworkReconnect=!1))}),this.handleBrowserOffline=()=>k(this,void 0,void 0,function*(){if(this.url)try{yield Promise.race([fetch(us(this.url),{method:`HEAD`}),Eo(4e3).then(()=>Promise.reject())])}catch{window.navigator.onLine===!1&&(this.log.info(`detected network interruption`),this.isWaitingForNetworkReconnect=!0)}}),this.log=ei(e.loggerName??Qr.Engine),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new nc(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.closingLock=new _,this.dataProcessLock=new _,this.dcBufferStatus=new Map([[mn.LOSSY,!0],[mn.RELIABLE,!0]]),this.client.onParticipantUpdate=e=>this.emit(M.ParticipantUpdate,e),this.client.onConnectionQuality=e=>this.emit(M.ConnectionQualityUpdate,e),this.client.onRoomUpdate=e=>this.emit(M.RoomUpdate,e),this.client.onSubscriptionError=e=>this.emit(M.SubscriptionError,e),this.client.onSubscriptionPermissionUpdate=e=>this.emit(M.SubscriptionPermissionUpdate,e),this.client.onSpeakersChanged=e=>this.emit(M.SpeakersChanged,e),this.client.onStreamStateUpdate=e=>this.emit(M.StreamStateChanged,e),this.client.onRequestResponse=e=>this.emit(M.SignalRequestResponse,e)}get logContext(){return{room:this.latestJoinResponse?.room?.name,roomID:this.latestJoinResponse?.room?.sid,participant:this.latestJoinResponse?.participant?.identity,pID:this.participantSid}}join(e,t,n,r){return k(this,void 0,void 0,function*(){this.url=e,this.token=t,this.signalOpts=n,this.maxJoinAttempts=n.maxRetries;try{this.joinAttempts+=1,this.setupSignalClientCallbacks();let i=yield this.client.join(e,t,n,r);return this._isClosed=!1,this.latestJoinResponse=i,this.subscriberPrimary=i.subscriberPrimary,this.pcManager||(yield this.configure(i)),(!this.subscriberPrimary||i.fastPublish)&&this.negotiate().catch(e=>{$r.error(e,this.logContext)}),this.registerOnLineListener(),this.clientConfiguration=i.clientConfiguration,this.emit(M.SignalConnected,i),i}catch(i){if(i instanceof Aa&&i.reason===ka.ServerUnreachable&&(this.log.warn(`Couldn't connect to server, attempt ${this.joinAttempts} of ${this.maxJoinAttempts}`,this.logContext),this.joinAttempts<this.maxJoinAttempts))return this.join(e,t,n,r);throw i}})}close(){return k(this,void 0,void 0,function*(){let e=yield this.closingLock.lock();if(this.isClosed){e();return}try{this._isClosed=!0,this.joinAttempts=0,this.emit(M.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),this.cleanupLossyDataStats(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{e()}})}cleanupPeerConnections(){return k(this,void 0,void 0,function*(){yield this.pcManager?.close(),this.pcManager=void 0;let e=e=>{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};e(this.lossyDC),e(this.lossyDCSub),e(this.reliableDC),e(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0,this.reliableMessageBuffer=new sc,this.reliableDataSequence=1,this.reliableReceivedState.clear()})}cleanupLossyDataStats(){this.lossyDataStatByterate=0,this.lossyDataStatCurrentBytes=0,this.lossyDataStatInterval&&=(clearInterval(this.lossyDataStatInterval),void 0),this.lossyDataDropCount=0}cleanupClient(){return k(this,void 0,void 0,function*(){yield this.client.close(),this.client.resetCallbacks()})}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new Ma(`a track with the same ID has already been published`);return new Promise((t,n)=>{let r=setTimeout(()=>{delete this.pendingTrackResolvers[e.cid],n(Aa.timeout(`publication of local track timed out, no response from server`))},1e4);this.pendingTrackResolvers[e.cid]={resolve:e=>{clearTimeout(r),t(e)},reject:()=>{clearTimeout(r),n(Error(`Cancelled publication by calling unpublish`))}},this.client.sendAddTrack(e)})}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){let{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(e){this.log.warn(`failed to remove track`,Object.assign(Object.assign({},this.logContext),{error:e}))}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){return this.reliableDCSub?.readyState}getConnectedServerAddress(){return k(this,void 0,void 0,function*(){return this.pcManager?.getConnectedAddress()})}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(e){return k(this,void 0,void 0,function*(){if(this.pcManager&&this.pcManager.currentState!==Lc.NEW)return;this.participantSid=e.participant?.sid;let t=this.makeRTCConfiguration(e);this.pcManager=new Rc(t,this.options.singlePeerConnection?`publisher-only`:e.subscriberPrimary?`subscriber-primary`:`publisher-primary`,this.loggerOptions),this.emit(M.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(e,t)=>{this.client.sendIceCandidate(e,t)},this.pcManager.onPublisherOffer=(e,t)=>{this.client.sendOffer(e,t)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(t,n,r)=>k(this,void 0,void 0,function*(){if(this.log.debug(`primary PC state changed ${t}`,this.logContext),[`closed`,`disconnected`,`failed`].includes(n)&&(this.publisherConnectionPromise=void 0),t===Lc.CONNECTED){let t=this.pcState===Ml.New;this.pcState=Ml.Connected,t&&this.emit(M.Connected,e)}else t===Lc.FAILED&&(this.pcState===Ml.Connected||this.pcState===Ml.Reconnecting)&&(this.pcState=Ml.Disconnected,this.handleDisconnect(`peerconnection failed`,r===`failed`?Zt.RR_SUBSCRIBER_FAILED:Zt.RR_PUBLISHER_FAILED));let i=this.client.isDisconnected||this.client.currentState===ec.RECONNECTING,a=[Lc.FAILED,Lc.CLOSING,Lc.CLOSED].includes(t);i&&a&&!this._isClosed&&this.emit(M.Offline)}),this.pcManager.onTrack=e=>{e.streams.length!==0&&this.emit(M.MediaTrackAdded,e.track,e.streams[0],e.receiver)},Pl(e.serverInfo?.protocol)||this.createDataChannels()})}setupSignalClientCallbacks(){this.client.onAnswer=(e,t,n)=>k(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug(`received server answer`,Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,midToTrackId:n})),this.midToTrackId=n,yield this.pcManager.setPublisherAnswer(e,t))}),this.client.onTrickle=(e,t)=>{this.pcManager&&(this.log.debug(`got ICE candidate from peer`,Object.assign(Object.assign({},this.logContext),{candidate:e,target:t})),this.pcManager.addIceCandidate(e,t))},this.client.onOffer=(e,t,n)=>k(this,void 0,void 0,function*(){if(this.latestRemoteOfferId=t,!this.pcManager)return;this.midToTrackId=n;let r=yield this.pcManager.createSubscriberAnswerFromOffer(e,t);r&&this.client.sendAnswer(r,t)}),this.client.onLocalTrackPublished=e=>{if(this.log.debug(`received trackPublishedResponse`,Object.assign(Object.assign({},this.logContext),{cid:e.cid,track:e.track?.sid})),!this.pendingTrackResolvers[e.cid]){this.log.error(`missing track resolver for ${e.cid}`,Object.assign(Object.assign({},this.logContext),{cid:e.cid}));return}let{resolve:t}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],t(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(M.LocalTrackUnpublished,e)},this.client.onLocalTrackSubscribed=e=>{this.emit(M.LocalTrackSubscribed,e)},this.client.onTokenRefresh=e=>{var t;this.token=e,(t=this.regionUrlProvider)==null||t.updateToken(e)},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(M.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(M.SubscribedQualityUpdate,e)},this.client.onRoomMoved=e=>{this.participantSid=e.participant?.sid,this.latestJoinResponse&&(this.latestJoinResponse.room=e.room),this.emit(M.RoomMoved,e)},this.client.onMediaSectionsRequirement=e=>{var t,n;let r={direction:`recvonly`};for(let n=0;n<e.numAudios;n++)(t=this.pcManager)==null||t.addPublisherTransceiverOfKind(`audio`,r);for(let t=0;t<e.numVideos;t++)(n=this.pcManager)==null||n.addPublisherTransceiverOfKind(`video`,r);this.negotiate()},this.client.onClose=()=>{this.handleDisconnect(`signal`,Zt.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{switch(this.log.debug(`client leave request`,Object.assign(Object.assign({},this.logContext),{reason:e?.reason})),e.regions&&this.regionUrlProvider&&(this.log.debug(`updating regions`,this.logContext),this.regionUrlProvider.setServerReportedRegions({updatedAtInMs:Date.now(),maxAgeInMs:zc,regionSettings:e.regions})),e.action){case ur.DISCONNECT:this.emit(M.Disconnected,e?.reason),this.close();break;case ur.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(Ol);break;case ur.RESUME:this.handleDisconnect(Ol)}}}makeRTCConfiguration(e){let t=Object.assign({},this.rtcConfig);if(this.signalOpts?.e2eeEnabled&&(this.log.debug(`E2EE - setting up transports with insertable streams`,this.logContext),t.encodedInsertableStreams=!0),e.iceServers&&!t.iceServers){let n=[];e.iceServers.forEach(e=>{let t={urls:e.urls};e.username&&(t.username=e.username),e.credential&&(t.credential=e.credential),n.push(t)}),t.iceServers=n}return e.clientConfiguration&&e.clientConfiguration.forceRelay===Yt.ENABLED&&(t.iceTransportPolicy=`relay`),t.sdpSemantics=`unified-plan`,t.continualGatheringPolicy=`gather_continually`,t}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(Tl,{ordered:!1,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(El,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow,this.cleanupLossyDataStats(),this.lossyDataStatInterval=setInterval(()=>{this.lossyDataStatByterate=this.lossyDataStatCurrentBytes,this.lossyDataStatCurrentBytes=0;let e=this.dataChannelForKind(mn.LOSSY);if(e){let t=this.lossyDataStatByterate/10;e.bufferedAmountLowThreshold=Math.min(Math.max(t,Al),jl)}},1e3))}createSender(e,t,n){return k(this,void 0,void 0,function*(){if(Do())return yield this.createTransceiverRTCRtpSender(e,t,n);if(Oo())return this.log.warn(`using add-track fallback`,this.logContext),yield this.createRTCRtpSender(e.mediaStreamTrack);throw new Pa(`Required webRTC APIs not supported on this device`)})}createSimulcastSender(e,t,n,r){return k(this,void 0,void 0,function*(){if(Do())return this.createSimulcastTransceiverSender(e,t,n,r);if(Oo())return this.log.debug(`using add-track fallback`,this.logContext),this.createRTCRtpSender(e.mediaStreamTrack);throw new Pa(`Cannot stream on this device`)})}createTransceiverRTCRtpSender(e,t,n){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);let r=[];e.mediaStream&&r.push(e.mediaStream),vs(e)&&(e.codec=t.videoCodec);let i={direction:`sendonly`,streams:r};return n&&(i.sendEncodings=n),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,i)).sender})}createSimulcastTransceiverSender(e,t,n,r){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);let i={direction:`sendonly`};r&&(i.sendEncodings=r);let a=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,i);if(n.videoCodec)return e.setSimulcastTrackSender(n.videoCodec,a.sender),a.sender})}createRTCRtpSender(e){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);return this.pcManager.addPublisherTrack(e)})}attemptReconnect(e){return k(this,void 0,void 0,function*(){if(!this._isClosed){if(this.attemptingReconnect){$r.warn(`already attempting reconnect, returning early`,this.logContext);return}(this.clientConfiguration?.resumeConnection===Yt.DISABLED||(this.pcManager?.currentState??Lc.NEW)===Lc.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(e){this.reconnectAttempts+=1;let t=!0;e instanceof Pa?(this.log.debug(`received unrecoverable error`,Object.assign(Object.assign({},this.logContext),{error:e})),t=!1):e instanceof Ba||(this.fullReconnectOnNext=!0),t?this.handleDisconnect(`reconnect`,Zt.RR_UNKNOWN):(this.log.info(`could not recover connection after ${this.reconnectAttempts} attempts, ${Date.now()-this.reconnectStart}ms. giving up`,this.logContext),this.emit(M.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){this.log.warn(`encountered error in reconnect policy`,Object.assign(Object.assign({},this.logContext),{error:e}))}return null}restartConnection(e){return k(this,void 0,void 0,function*(){var t,n;try{if(!this.url||!this.token)throw new Pa(`could not reconnect, url or token not saved`);this.log.info(`reconnecting, attempt: ${this.reconnectAttempts}`,this.logContext),this.emit(M.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();let n;try{if(!this.signalOpts)throw this.log.warn(`attempted connection restart, without signal options present`,this.logContext),new Ba;n=yield this.join(e??this.url,this.token,this.signalOpts)}catch(e){throw e instanceof Aa&&e.reason===ka.NotAllowed?new Pa(`could not reconnect, token might be expired`):new Ba}if(this.shouldFailNext)throw this.shouldFailNext=!1,Error(`simulated failure`);if(this.client.setReconnected(),this.emit(M.SignalRestarted,n),yield this.waitForPCReconnected(),this.client.currentState!==ec.CONNECTED)throw new Ba(`Signal connection got severed during reconnect`);(t=this.regionUrlProvider)==null||t.resetAttempts(),this.emit(M.Restarted)}catch(e){let t=yield this.regionUrlProvider?.getNextBestRegionUrl();if(t){yield this.restartConnection(t);return}else throw(n=this.regionUrlProvider)==null||n.resetAttempts(),e}})}resumeConnection(e){return k(this,void 0,void 0,function*(){if(!this.url||!this.token)throw new Pa(`could not reconnect, url or token not saved`);if(!this.pcManager)throw new Pa(`publisher and subscriber connections unset`);this.log.info(`resuming signal connection, attempt ${this.reconnectAttempts}`,this.logContext),this.emit(M.Resuming);let t;try{this.setupSignalClientCallbacks(),t=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(e){let t=``;throw e instanceof Error&&(t=e.message,this.log.error(e.message,Object.assign(Object.assign({},this.logContext),{error:e}))),e instanceof Aa&&e.reason===ka.NotAllowed?new Pa(`could not reconnect, token might be expired`):e instanceof Aa&&e.reason===ka.LeaveRequest?e:new Ba(t)}if(this.emit(M.SignalResumed),t){let e=this.makeRTCConfiguration(t);this.pcManager.updateConfiguration(e),this.latestJoinResponse&&(this.latestJoinResponse.serverInfo=t.serverInfo)}else this.log.warn(`Did not receive reconnect response`,this.logContext);if(this.shouldFailNext)throw this.shouldFailNext=!1,Error(`simulated failure`);if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==ec.CONNECTED)throw new Ba(`Signal connection got severed during reconnect`);this.client.setReconnected(),this.reliableDC?.readyState===`open`&&this.reliableDC.id===null&&this.createDataChannels(),t?.lastMessageSeq&&this.resendReliableMessagesForResume(t.lastMessageSeq),this.emit(M.Resumed)})}waitForPCInitialConnection(e,t){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`PC manager is closed`);yield this.pcManager.ensurePCTransportConnection(t,e)})}waitForPCReconnected(){return k(this,void 0,void 0,function*(){this.pcState=Ml.Reconnecting,this.log.debug(`waiting for peer connection to reconnect`,this.logContext);try{if(yield Eo(Dl),!this.pcManager)throw new Pa(`PC manager is closed`);yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=Ml.Connected}catch(e){throw this.pcState=Ml.Disconnected,Aa.internal(`could not establish PC connection, ${e.message}`)}})}publishRpcResponse(e,t,n,r){return k(this,void 0,void 0,function*(){let i=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcResponse`,value:new En({requestId:t,value:r?{case:`error`,value:r.toProto()}:{case:`payload`,value:n??``}})}});yield this.sendDataPacket(i,mn.RELIABLE)})}publishRpcAck(e,t){return k(this,void 0,void 0,function*(){let n=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcAck`,value:new Tn({requestId:t})}});yield this.sendDataPacket(n,mn.RELIABLE)})}sendDataPacket(e,t){return k(this,void 0,void 0,function*(){if(yield this.ensurePublisherConnected(t),this.e2eeManager&&this.e2eeManager.isDataChannelEncryptionEnabled){let t=Vs(e);if(t){let n=yield this.e2eeManager.encryptData(t.toBinary());e.value={case:`encryptedPacket`,value:new hn({encryptedValue:n.payload,iv:n.iv,keyIndex:n.keyIndex})}}}t===mn.RELIABLE&&(e.sequence=this.reliableDataSequence,this.reliableDataSequence+=1);let n=e.toBinary(),r=this.dataChannelForKind(t);if(r){if(t===mn.RELIABLE)yield this.waitForBufferStatusLow(t),this.reliableMessageBuffer.push({data:n,sequence:e.sequence});else{if(!this.isBufferStatusLow(t)){this.lossyDataDropCount+=1,this.lossyDataDropCount%100==0&&this.log.warn(`dropping lossy data channel messages, total dropped: ${this.lossyDataDropCount}`,this.logContext);return}this.lossyDataStatCurrentBytes+=n.byteLength}if(this.attemptingReconnect)return;r.send(n)}this.updateAndEmitDCBufferStatus(t)})}resendReliableMessagesForResume(e){return k(this,void 0,void 0,function*(){yield this.ensurePublisherConnected(mn.RELIABLE);let t=this.dataChannelForKind(mn.RELIABLE);t&&(this.reliableMessageBuffer.popToSequence(e),this.reliableMessageBuffer.getAll().forEach(e=>{t.send(e.data)})),this.updateAndEmitDCBufferStatus(mn.RELIABLE)})}waitForBufferStatusLow(e){return new Promise((t,n)=>k(this,void 0,void 0,function*(){if(this.isBufferStatusLow(e))t();else{let r=()=>n(`Engine closed`);for(this.once(M.Closing,r);!this.dcBufferStatus.get(e);)yield Eo(10);this.off(M.Closing,r),t()}}))}ensureDataTransportConnected(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscriberPrimary;return function*(){if(!t.pcManager)throw new Pa(`PC manager is closed`);let r=n?t.pcManager.subscriber:t.pcManager.publisher,i=n?`Subscriber`:`Publisher`;if(!r)throw Aa.internal(`${i} connection not set`);let a=!1;if(!n&&!t.dataChannelForKind(e,n)&&(t.createDataChannels(),a=!0),!a&&!n&&!t.pcManager.publisher.isICEConnected&&t.pcManager.publisher.getICEConnectionState()!==`checking`&&(a=!0),a&&t.negotiate().catch(e=>{$r.error(e,t.logContext)}),t.dataChannelForKind(e,n)?.readyState===`open`)return;let o=new Date().getTime()+t.peerConnectionTimeout;for(;new Date().getTime()<o;){if(r.isICEConnected&&t.dataChannelForKind(e,n)?.readyState===`open`)return;yield Eo(50)}throw Aa.internal(`could not establish ${i} connection, state: ${r.getICEConnectionState()}`)}()})}ensurePublisherConnected(e){return k(this,void 0,void 0,function*(){this.publisherConnectionPromise||=this.ensureDataTransportConnected(e,!1),yield this.publisherConnectionPromise})}verifyTransport(){return!(!this.pcManager||this.pcManager.currentState!==Lc.CONNECTED||!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)}negotiate(){return k(this,void 0,void 0,function*(){return new Promise((e,t)=>k(this,void 0,void 0,function*(){if(!this.pcManager){t(new Fa(`PC manager is closed`));return}this.pcManager.requirePublisher(),this.pcManager.publisher.getTransceivers().length==0&&!this.lossyDC&&!this.reliableDC&&this.createDataChannels();let n=new AbortController,r=()=>{n.abort(),this.log.debug(`engine disconnected while negotiation was ongoing`,this.logContext),e()};this.isClosed&&t(`cannot negotiate on closed engine`),this.on(M.Closing,r),this.pcManager.publisher.once(Tc.RTPVideoPayloadTypes,e=>{let t=new Map;e.forEach(e=>{let n=e.codec.toLowerCase();ss(n)&&t.set(e.payload,n)}),this.emit(M.RTPVideoMapUpdate,t)});try{yield this.pcManager.negotiate(n),e()}catch(e){e instanceof Fa&&(this.fullReconnectOnNext=!0),this.handleDisconnect(`negotiation`,Zt.RR_UNKNOWN),t(e)}finally{this.off(M.Closing,r)}}))})}dataChannelForKind(e,t){if(t){if(e===mn.LOSSY)return this.lossyDCSub;if(e===mn.RELIABLE)return this.reliableDCSub}else{if(e===mn.LOSSY)return this.lossyDC;if(e===mn.RELIABLE)return this.reliableDC}}sendSyncState(e,t){if(!this.pcManager){this.log.warn(`sync state cannot be sent without peer connection setup`,this.logContext);return}let n=this.pcManager.publisher.getLocalDescription(),r=this.pcManager.publisher.getRemoteDescription(),i=this.pcManager.subscriber?.getRemoteDescription(),a=this.pcManager.subscriber?.getLocalDescription(),o=this.signalOpts?.autoSubscribe??!0,s=[],c=[];e.forEach(e=>{e.isDesired!==o&&s.push(e.trackSid),e.isEnabled||c.push(e.trackSid)}),this.client.sendSyncState(new Or({answer:this.options.singlePeerConnection?r?ic({sdp:r.sdp,type:r.type}):void 0:a?ic({sdp:a.sdp,type:a.type}):void 0,offer:this.options.singlePeerConnection?n?ic({sdp:n.sdp,type:n.type}):void 0:i?ic({sdp:i.sdp,type:i.type}):void 0,subscription:new ar({trackSids:s,subscribe:!o,participantTracks:[]}),publishTracks:lo(t),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:c,datachannelReceiveStates:this.reliableReceivedState.map((e,t)=>new kr({publisherSid:t,lastSeq:e}))}))}failNext(){this.shouldFailNext=!0}dataChannelsInfo(){let e=[],t=(t,n)=>{t?.id!==void 0&&t.id!==null&&e.push(new Ar({label:t.label,id:t.id,target:n}))};return t(this.dataChannelForKind(mn.LOSSY),Wn.PUBLISHER),t(this.dataChannelForKind(mn.RELIABLE),Wn.PUBLISHER),t(this.dataChannelForKind(mn.LOSSY,!0),Wn.SUBSCRIBER),t(this.dataChannelForKind(mn.RELIABLE,!0),Wn.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&Ha.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Ho()&&(window.addEventListener(`online`,this.handleBrowserOnLine),window.addEventListener(`offline`,this.handleBrowserOffline))}deregisterOnLineListener(){Ho()&&(window.removeEventListener(`online`,this.handleBrowserOnLine),window.removeEventListener(`offline`,this.handleBrowserOffline))}getTrackIdForReceiver(e){let t=this.pcManager?.getMidForReceiver(e);if(t){let e=Object.entries(this.midToTrackId).find(e=>{let[n]=e;return n===t});if(e)return e[1]}}};function Pl(e){return e!==void 0&&e>13}function Fl(e,t){let n=e.participantIdentity?e.participantIdentity:t.participantIdentity;e.participantIdentity=n,t.participantIdentity=n;let r=e.destinationIdentities.length===0?t.destinationIdentities:e.destinationIdentities;e.destinationIdentities=r,t.destinationIdentities=r}var Il=class{get info(){return this._info}validateBytesReceived(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(!(typeof this.totalByteSize!=`number`||this.totalByteSize===0)){if(e&&this.bytesReceived<this.totalByteSize)throw new za(`Not enough chunk(s) received - expected ${this.totalByteSize} bytes of data total, only received ${this.bytesReceived} bytes`,Ra.Incomplete);if(this.bytesReceived>this.totalByteSize)throw new za(`Extra chunk(s) received - expected ${this.totalByteSize} bytes of data total, received ${this.bytesReceived} bytes`,Ra.LengthExceeded)}}constructor(e,t,n,r){this.reader=t,this.totalByteSize=n,this._info=e,this.bytesReceived=0,this.outOfBandFailureRejectingFuture=r}},Ll=class extends Il{handleChunkReceived(e){var t;this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let n=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;(t=this.onProgress)==null||t.call(this,n)}[Symbol.asyncIterator](){let e=this.reader.getReader(),t=new os,n=null,r=null;if(this.signal){let e=this.signal;r=()=>{var n;(n=t.reject)==null||n.call(t,e.reason)},e.addEventListener(`abort`,r),n=e}let i=()=>{e.releaseLock(),n&&r&&n.removeEventListener(`abort`,r),this.signal=void 0};return{next:()=>k(this,void 0,void 0,function*(){try{let{done:n,value:r}=yield Promise.race([e.read(),t.promise,this.outOfBandFailureRejectingFuture?.promise??new Promise(()=>{})]);return n?(this.validateBytesReceived(!0),{done:!0,value:void 0}):(this.handleChunkReceived(r),{done:!1,value:r.content})}catch(e){throw i(),e}}),return(){return k(this,void 0,void 0,function*(){return i(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return function*(){var n,r,i,a;let o=new Set,s=t.signal?e.withAbortSignal(t.signal):e;try{for(var c=!0,l=si(s),u;u=yield l.next(),n=u.done,!n;c=!0){a=u.value,c=!1;let e=a;o.add(e)}}catch(e){r={error:e}}finally{try{!c&&!n&&(i=l.return)&&(yield i.call(l))}finally{if(r)throw r.error}}return Array.from(o)}()})}},Rl=class extends Il{constructor(e,t,n,r){super(e,t,n,r),this.receivedChunks=new Map}handleChunkReceived(e){var t;let n=ms(e.chunkIndex),r=this.receivedChunks.get(n);if(r&&r.version>e.version)return;this.receivedChunks.set(n,e),this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let i=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;(t=this.onProgress)==null||t.call(this,i)}[Symbol.asyncIterator](){let e=this.reader.getReader(),t=new TextDecoder(`utf-8`,{fatal:!0}),n=new os,r=null,i=null;if(this.signal){let e=this.signal;i=()=>{var t;(t=n.reject)==null||t.call(n,e.reason)},e.addEventListener(`abort`,i),r=e}let a=()=>{e.releaseLock(),r&&i&&r.removeEventListener(`abort`,i),this.signal=void 0};return{next:()=>k(this,void 0,void 0,function*(){try{let{done:r,value:i}=yield Promise.race([e.read(),n.promise,this.outOfBandFailureRejectingFuture?.promise??new Promise(()=>{})]);if(r)return this.validateBytesReceived(!0),{done:!0,value:void 0};{this.handleChunkReceived(i);let e;try{e=t.decode(i.content)}catch(e){throw new za(`Cannot decode datastream chunk ${i.chunkIndex} as text: ${e}`,Ra.DecodeFailed)}return{done:!1,value:e}}}catch(e){throw a(),e}}),return(){return k(this,void 0,void 0,function*(){return a(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return function*(){var n,r,i,a;let o=``,s=t.signal?e.withAbortSignal(t.signal):e;try{for(var c=!0,l=si(s),u;u=yield l.next(),n=u.done,!n;c=!0)a=u.value,c=!1,o+=a}catch(e){r={error:e}}finally{try{!c&&!n&&(i=l.return)&&(yield i.call(l))}finally{if(r)throw r.error}}return o}()})}},zl=class{constructor(){this.log=$r,this.byteStreamControllers=new Map,this.textStreamControllers=new Map,this.byteStreamHandlers=new Map,this.textStreamHandlers=new Map}registerTextStreamHandler(e,t){if(this.textStreamHandlers.has(e))throw new za(`A text stream handler for topic "${e}" has already been set.`,Ra.HandlerAlreadyRegistered);this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}registerByteStreamHandler(e,t){if(this.byteStreamHandlers.has(e))throw new za(`A byte stream handler for topic "${e}" has already been set.`,Ra.HandlerAlreadyRegistered);this.byteStreamHandlers.set(e,t)}unregisterByteStreamHandler(e){this.byteStreamHandlers.delete(e)}clearControllers(){this.byteStreamControllers.clear(),this.textStreamControllers.clear()}validateParticipantHasNoActiveDataStreams(e){var t,n,r,i;let a=Array.from(this.textStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e),o=Array.from(this.byteStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e);if(a.length>0||o.length>0){let s=new za(`Participant ${e} unexpectedly disconnected in the middle of sending data`,Ra.AbnormalEnd);for(let[e,r]of o)(n=(t=r.outOfBandFailureRejectingFuture).reject)==null||n.call(t,s),this.byteStreamControllers.delete(e);for(let[e,t]of a)(i=(r=t.outOfBandFailureRejectingFuture).reject)==null||i.call(r,s),this.textStreamControllers.delete(e)}}handleDataStreamPacket(e,t){return k(this,void 0,void 0,function*(){switch(e.value.case){case`streamHeader`:return this.handleStreamHeader(e.value.value,e.participantIdentity,t);case`streamChunk`:return this.handleStreamChunk(e.value.value,t);case`streamTrailer`:return this.handleStreamTrailer(e.value.value,t);default:throw Error(`DataPacket of value "${e.value.case}" is not data stream related!`)}})}handleStreamHeader(e,t,n){return k(this,void 0,void 0,function*(){if(e.contentHeader.case===`byteHeader`){let r=this.byteStreamHandlers.get(e.topic);if(!r){this.log.debug(`ignoring incoming byte stream due to no handler for topic`,e.topic);return}let i,a=new os;a.promise.catch(e=>{this.log.error(e)});let o={id:e.streamId,name:e.contentHeader.value.name??`unknown`,mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:ms(e.timestamp),attributes:e.attributes,encryptionType:n};r(new Ll(o,new ReadableStream({start:n=>{if(i=n,this.textStreamControllers.has(e.streamId))throw new za(`A data stream read is already in progress for a stream with id ${e.streamId}.`,Ra.AlreadyOpened);this.byteStreamControllers.set(e.streamId,{info:o,controller:i,startTime:Date.now(),sendingParticipantIdentity:t,outOfBandFailureRejectingFuture:a})}}),ms(e.totalLength),a),{identity:t})}else if(e.contentHeader.case===`textHeader`){let r=this.textStreamHandlers.get(e.topic);if(!r){this.log.debug(`ignoring incoming text stream due to no handler for topic`,e.topic);return}let i,a=new os;a.promise.catch(e=>{this.log.error(e)});let o={id:e.streamId,mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:Number(e.timestamp),attributes:e.attributes,encryptionType:n};r(new Rl(o,new ReadableStream({start:n=>{if(i=n,this.textStreamControllers.has(e.streamId))throw new za(`A data stream read is already in progress for a stream with id ${e.streamId}.`,Ra.AlreadyOpened);this.textStreamControllers.set(e.streamId,{info:o,controller:i,startTime:Date.now(),sendingParticipantIdentity:t,outOfBandFailureRejectingFuture:a})}}),ms(e.totalLength),a),{identity:t})}})}handleStreamChunk(e,t){let n=this.byteStreamControllers.get(e.streamId);n&&(n.info.encryptionType===t?e.content.length>0&&n.controller.enqueue(e):(n.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${n.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId)));let r=this.textStreamControllers.get(e.streamId);r&&(r.info.encryptionType===t?e.content.length>0&&r.controller.enqueue(e):(r.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${r.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.textStreamControllers.delete(e.streamId)))}handleStreamTrailer(e,t){let n=this.textStreamControllers.get(e.streamId);n&&(n.info.encryptionType===t?(n.info.attributes=Object.assign(Object.assign({},n.info.attributes),e.attributes),n.controller.close(),this.textStreamControllers.delete(e.streamId)):n.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${n.info.encryptionType}`,Ra.EncryptionTypeMismatch)));let r=this.byteStreamControllers.get(e.streamId);r&&(r.info.encryptionType===t?(r.info.attributes=Object.assign(Object.assign({},r.info.attributes),e.attributes),r.controller.close()):r.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${r.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId))}},Bl=class{constructor(e,t,n){this.writableStream=e,this.defaultWriter=e.getWriter(),this.onClose=n,this.info=t}write(e){return this.defaultWriter.write(e)}close(){return k(this,void 0,void 0,function*(){var e;yield this.defaultWriter.close(),this.defaultWriter.releaseLock(),(e=this.onClose)==null||e.call(this)})}},Vl=class extends Bl{},Hl=class extends Bl{},Ul=15e3,Wl=class{constructor(e,t){this.engine=e,this.log=t}setupEngine(e){this.engine=e}sendText(e,t){return k(this,void 0,void 0,function*(){let n=crypto.randomUUID(),r=new TextEncoder().encode(e).byteLength,i=(t?.attachments)?.map(()=>crypto.randomUUID()),a=Array(i?i.length+1:1).fill(0),o=(e,n)=>{var r;a[n]=e;let i=a.reduce((e,t)=>e+t,0);(r=t?.onProgress)==null||r.call(t,i)},s=yield this.streamText({streamId:n,totalSize:r,destinationIdentities:t?.destinationIdentities,topic:t?.topic,attachedStreamIds:i,attributes:t?.attributes});return yield s.write(e),o(1,0),yield s.close(),t?.attachments&&i&&(yield Promise.all(t.attachments.map((e,n)=>k(this,void 0,void 0,function*(){return this._sendFile(i[n],e,{topic:t.topic,mimeType:e.type,onProgress:e=>{o(e,n+1)}})})))),s.info})}streamText(e){return k(this,void 0,void 0,function*(){let t=e?.streamId??crypto.randomUUID(),n={id:t,mimeType:`text/plain`,timestamp:Date.now(),topic:e?.topic??``,size:e?.totalSize,attributes:e?.attributes,encryptionType:this.engine.e2eeManager?.isDataChannelEncryptionEnabled?cn.GCM:cn.NONE},r=new Bn({streamId:t,mimeType:n.mimeType,topic:n.topic,timestamp:hs(n.timestamp),totalLength:hs(e?.totalSize),attributes:n.attributes,contentHeader:{case:`textHeader`,value:new Rn({version:e?.version,attachedStreamIds:e?.attachedStreamIds,replyToStreamId:e?.replyToStreamId,operationType:e?.type===`update`?Ln.UPDATE:Ln.CREATE})}}),i=e?.destinationIdentities,a=new pn({destinationIdentities:i,value:{case:`streamHeader`,value:r}});yield this.engine.sendDataPacket(a,mn.RELIABLE);let o=0,s=this.engine,c=new WritableStream({write(e){return k(this,void 0,void 0,function*(){for(let n of Ts(e,Ul)){let e=new pn({destinationIdentities:i,value:{case:`streamChunk`,value:new Vn({content:n,streamId:t,chunkIndex:hs(o)})}});yield s.sendDataPacket(e,mn.RELIABLE),o+=1}})},close(){return k(this,void 0,void 0,function*(){let e=new pn({destinationIdentities:i,value:{case:`streamTrailer`,value:new Hn({streamId:t})}});yield s.sendDataPacket(e,mn.RELIABLE)})},abort(e){console.log(`Sink error:`,e)}}),l=()=>k(this,void 0,void 0,function*(){yield u.close()});s.once(M.Closing,l);let u=new Vl(c,n,()=>this.engine.off(M.Closing,l));return u})}sendFile(e,t){return k(this,void 0,void 0,function*(){let n=crypto.randomUUID();return yield this._sendFile(n,e,t),{id:n}})}_sendFile(e,t,n){return k(this,void 0,void 0,function*(){let r=yield this.streamBytes({streamId:e,totalSize:t.size,name:t.name,mimeType:n?.mimeType??t.type,topic:n?.topic,destinationIdentities:n?.destinationIdentities}),i=t.stream().getReader();for(;;){let{done:e,value:t}=yield i.read();if(e)break;yield r.write(t)}return yield r.close(),r.info})}streamBytes(e){return k(this,void 0,void 0,function*(){let t=e?.streamId??crypto.randomUUID(),n=e?.destinationIdentities,r={id:t,mimeType:e?.mimeType??`application/octet-stream`,topic:e?.topic??``,timestamp:Date.now(),attributes:e?.attributes,size:e?.totalSize,name:e?.name??`unknown`,encryptionType:this.engine.e2eeManager?.isDataChannelEncryptionEnabled?cn.GCM:cn.NONE},i=new pn({destinationIdentities:n,value:{case:`streamHeader`,value:new Bn({totalLength:hs(r.size??0),mimeType:r.mimeType,streamId:t,topic:r.topic,timestamp:hs(Date.now()),attributes:r.attributes,contentHeader:{case:`byteHeader`,value:new zn({name:r.name})}})}});yield this.engine.sendDataPacket(i,mn.RELIABLE);let a=0,o=new _,s=this.engine,c=this.log;return new Hl(new WritableStream({write(e){return k(this,void 0,void 0,function*(){let r=yield o.lock(),i=0;try{for(;i<e.byteLength;){let r=e.slice(i,i+Ul),o=new pn({destinationIdentities:n,value:{case:`streamChunk`,value:new Vn({content:r,streamId:t,chunkIndex:hs(a)})}});yield s.sendDataPacket(o,mn.RELIABLE),a+=1,i+=r.byteLength}}finally{r()}})},close(){return k(this,void 0,void 0,function*(){let e=new pn({destinationIdentities:n,value:{case:`streamTrailer`,value:new Hn({streamId:t})}});yield s.sendDataPacket(e,mn.RELIABLE)})},abort(e){c.error(`Sink error:`,e)}}),r)})}},Gl=class extends P{constructor(e,t,n,r,i){super(e,n,i),this.sid=t,this.receiver=r}get isLocal(){return!1}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}setMediaStream(e){this.mediaStream=e;let t=n=>{n.track===this._mediaStreamTrack&&(e.removeEventListener(`removetrack`,t),this.receiver&&`playoutDelayHint`in this.receiver&&(this.receiver.playoutDelayHint=void 0),this.receiver=void 0,this._currentBitrate=0,this.emit(N.Ended,this))};e.addEventListener(`removetrack`,t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return k(this,void 0,void 0,function*(){if(this.receiver?.getStats)return yield this.receiver.getStats()})}setPlayoutDelay(e){this.receiver?`playoutDelayHint`in this.receiver?this.receiver.playoutDelayHint=e:this.log.warn(`Playout delay not supported in this browser`):this.log.warn(`Cannot set playout delay, track already ended`)}getPlayoutDelay(){if(this.receiver){if(`playoutDelayHint`in this.receiver)return this.receiver.playoutDelayHint;this.log.warn(`Playout delay not supported in this browser`)}else this.log.warn(`Cannot get playout delay, track already ended`);return 0}startMonitor(){this.monitorInterval||=setInterval(()=>this.monitorReceiver(),qc),fo()&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){let e=()=>{this.timeSyncHandle=requestAnimationFrame(()=>e());let t=this.receiver?.getSynchronizationSources()[0];if(t){let{timestamp:e,rtpTimestamp:n}=t;n&&this.rtpTimestamp!==n&&(this.emit(N.TimeSyncUpdate,{timestamp:e,rtpTimestamp:n}),this.rtpTimestamp=n)}};e()}},Kl=class extends Gl{constructor(e,t,n,r,i,a){super(e,t,P.Kind.Audio,n,a),this.monitorReceiver=()=>k(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.audioContext=r,this.webAudioPluginNodes=[],i&&(this.sinkId=i.deviceId)}setVolume(e){var t;for(let n of this.attachedElements)this.audioContext?(t=this.gainNode)==null||t.gain.setTargetAtTime(e,0,.1):n.volume=e;Uo()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(Uo())return 1;let e=0;return this.attachedElements.forEach(t=>{t.volume>e&&(e=t.volume)}),e}setSinkId(e){return k(this,void 0,void 0,function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map(t=>{if(Mo(t))return t.setSinkId(e)}))})}attach(e){let t=this.attachedElements.length===0;return e?super.attach(e):e=super.attach(),this.sinkId&&Mo(e)&&e.setSinkId(this.sinkId).catch(e=>{this.log.error(`Failed to set sink id on remote audio track`,e,this.logContext)}),this.audioContext&&t&&(this.log.debug(`using audio context mapping`,this.logContext),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(e,t){this.disconnectWebAudio(),this.sourceNode=e.createMediaStreamSource(t.srcObject);let n=this.sourceNode;this.webAudioPluginNodes.forEach(e=>{n.connect(e),n=e}),this.gainNode=e.createGain(),n.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),e.state!==`running`&&e.resume().then(()=>{e.state!==`running`&&this.emit(N.AudioPlaybackFailed,Error(`Audio Context couldn't be started automatically`))}).catch(e=>{this.emit(N.AudioPlaybackFailed,e)})}disconnectWebAudio(){var e,t;(e=this.gainNode)==null||e.disconnect(),(t=this.sourceNode)==null||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return k(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;let e=yield this.receiver.getStats(),t;return e.forEach(e=>{e.type===`inbound-rtp`&&(t={type:`audio`,streamId:e.id,timestamp:e.timestamp,jitter:e.jitter,bytesReceived:e.bytesReceived,concealedSamples:e.concealedSamples,concealmentEvents:e.concealmentEvents,silentConcealedSamples:e.silentConcealedSamples,silentConcealmentEvents:e.silentConcealmentEvents,totalAudioEnergy:e.totalAudioEnergy,totalSamplesDuration:e.totalSamplesDuration})}),t})}},ql=100,Jl=class extends Gl{constructor(e,t,n,r,i){super(e,t,P.Kind.Video,n,i),this.elementInfos=[],this.monitorReceiver=()=>k(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.debouncedHandleResize=Sc(()=>{this.updateDimensions()},ql),this.adaptiveStreamSettings=r}get isAdaptiveStream(){return this.adaptiveStreamSettings!==void 0}setStreamState(e){super.setStreamState(e),this.log.debug(`setStreamState`,e),this.isAdaptiveStream&&e===P.StreamState.Active&&this.updateVisibility()}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach(t=>{e?So(this._mediaStreamTrack,t):xo(this._mediaStreamTrack,t)})}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&this.elementInfos.find(t=>t.element===e)===void 0){let t=new Yl(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&this.elementInfos.find(t=>t===e)===void 0?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):this.log.warn(`visibility resize observer not triggered`,this.logContext)}stopObservingElementInfo(e){if(!this.isAdaptiveStream){this.log.warn(`stopObservingElementInfo ignored`,this.logContext);return}let t=this.elementInfos.filter(t=>t===e);for(let e of t)e.stopObserving();this.elementInfos=this.elementInfos.filter(t=>t!==e),this.updateVisibility(),this.debouncedHandleResize()}detach(e){let t=[];if(e)return this.stopObservingElement(e),super.detach(e);t=super.detach();for(let e of t)this.stopObservingElement(e);return t}getDecoderImplementation(){return this.prevStats?.decoderImplementation}getReceiverStats(){return k(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;let e=yield this.receiver.getStats(),t,n=``,r=new Map;return e.forEach(e=>{e.type===`inbound-rtp`?(n=e.codecId,t={type:`video`,streamId:e.id,framesDecoded:e.framesDecoded,framesDropped:e.framesDropped,framesReceived:e.framesReceived,packetsReceived:e.packetsReceived,packetsLost:e.packetsLost,frameWidth:e.frameWidth,frameHeight:e.frameHeight,pliCount:e.pliCount,firCount:e.firCount,nackCount:e.nackCount,jitter:e.jitter,timestamp:e.timestamp,bytesReceived:e.bytesReceived,decoderImplementation:e.decoderImplementation}):e.type===`codec`&&r.set(e.id,e)}),t&&n!==``&&r.get(n)&&(t.mimeType=r.get(n).mimeType),t})}stopObservingElement(e){let t=this.elementInfos.filter(t=>t.element===e);for(let e of t)this.stopObservingElementInfo(e)}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(e){let t=this.elementInfos.reduce((e,t)=>Math.max(e,t.visibilityChangedAt||0),0),n=this.adaptiveStreamSettings?.pauseVideoInBackground??!0?this.isInBackground:!1,r=this.elementInfos.some(e=>e.pictureInPicture),i=this.elementInfos.some(e=>e.visible)&&!n||r;if(!(this.lastVisible===i&&!e)){if(!i&&Date.now()-t<ql){Ha.setTimeout(()=>{this.updateVisibility()},ql);return}this.lastVisible=i,this.emit(N.VisibilityChanged,i,this)}}updateDimensions(){let e=0,t=0,n=this.getPixelDensity();for(let r of this.elementInfos){let i=r.width()*n,a=r.height()*n;i+a>e+t&&(e=i,t=a)}this.lastDimensions?.width===e&&this.lastDimensions?.height===t||(this.lastDimensions={width:e,height:t},this.emit(N.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){let e=this.adaptiveStreamSettings?.pixelDensity;return e===`screen`?Jo():e||(Jo()>2?2:1)}},Yl=class{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;let{target:n,isIntersecting:r}=e;n===this.element&&(this.isIntersecting=r,this.isPiP=Xl(this.element),this.visibilityChangedAt=Date.now(),(t=this.handleVisibilityChanged)==null||t.call(this))},this.onEnterPiP=()=>{var e,t;(e=window.documentPictureInPicture?.window)==null||e.addEventListener(`pagehide`,this.onLeavePiP),this.isPiP=Xl(this.element),(t=this.handleVisibilityChanged)==null||t.call(this)},this.onLeavePiP=()=>{var e;this.isPiP=Xl(this.element),(e=this.handleVisibilityChanged)==null||e.call(this)},this.element=e,this.isIntersecting=t??Zl(e),this.isPiP=Ho()&&Xl(e),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var e,t;this.isIntersecting=Zl(this.element),this.isPiP=Xl(this.element),this.element.handleResize=()=>{var e;(e=this.handleResize)==null||e.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,ts().observe(this.element),$o().observe(this.element),this.element.addEventListener(`enterpictureinpicture`,this.onEnterPiP),this.element.addEventListener(`leavepictureinpicture`,this.onLeavePiP),(e=window.documentPictureInPicture)==null||e.addEventListener(`enter`,this.onEnterPiP),(t=window.documentPictureInPicture?.window)==null||t.addEventListener(`pagehide`,this.onLeavePiP)}stopObserving(){var e,t,n,r;(e=ts())==null||e.unobserve(this.element),(t=$o())==null||t.unobserve(this.element),this.element.removeEventListener(`enterpictureinpicture`,this.onEnterPiP),this.element.removeEventListener(`leavepictureinpicture`,this.onLeavePiP),(n=window.documentPictureInPicture)==null||n.removeEventListener(`enter`,this.onEnterPiP),(r=window.documentPictureInPicture?.window)==null||r.removeEventListener(`pagehide`,this.onLeavePiP)}};function Xl(e){return document.pictureInPictureElement===e?!0:window.documentPictureInPicture?.window?Zl(e,window.documentPictureInPicture?.window):!1}function Zl(e,t){let n=t||window,r=e.offsetTop,i=e.offsetLeft,a=e.offsetWidth,o=e.offsetHeight,{hidden:s}=e,{display:c}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,r+=e.offsetTop,i+=e.offsetLeft;return r<n.pageYOffset+n.innerHeight&&i<n.pageXOffset+n.innerWidth&&r+o>n.pageYOffset&&i+a>n.pageXOffset&&!s&&c!==`none`}var Ql=class extends di.EventEmitter{constructor(e,t,n,r){super(),this.metadataMuted=!1,this.encryption=cn.NONE,this.log=$r,this.handleMuted=()=>{this.emit(N.Muted)},this.handleUnmuted=()=>{this.emit(N.Unmuted)},this.log=ei(r?.loggerName??Qr.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=n,this.source=P.Source.Unknown}setTrack(e){this.track&&(this.track.off(N.Muted,this.handleMuted),this.track.off(N.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(N.Muted,this.handleMuted),e.on(N.Unmuted,this.handleUnmuted))}get logContext(){return Object.assign(Object.assign({},this.loggerContextCb?.call(this)),uo(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return this.track!==void 0}get isEncrypted(){return this.encryption!==cn.NONE}get audioTrack(){if(_s(this.track))return this.track}get videoTrack(){if(vs(this.track))return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=P.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===P.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,this.log.debug(`update publication info`,Object.assign(Object.assign({},this.logContext),{info:e}))}};(function(e){(function(e){e.Desired=`desired`,e.Subscribed=`subscribed`,e.Unsubscribed=`unsubscribed`})(e.SubscriptionStatus||={}),(function(e){e.Allowed=`allowed`,e.NotAllowed=`not_allowed`})(e.PermissionStatus||={})})(Ql||={});var $l=class extends Ql{get isUpstreamPaused(){return this.track?.isUpstreamPaused}constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.handleTrackEnded=()=>{this.emit(N.Ended)},this.handleCpuConstrained=()=>{this.track&&vs(this.track)&&this.emit(N.CpuConstrained,this.track)},this.updateInfo(t),this.setTrack(n)}setTrack(e){this.track&&(this.track.off(N.Ended,this.handleTrackEnded),this.track.off(N.CpuConstrained,this.handleCpuConstrained)),super.setTrack(e),e&&(e.on(N.Ended,this.handleTrackEnded),e.on(N.CpuConstrained,this.handleCpuConstrained))}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}get isLocal(){return!0}mute(){return k(this,void 0,void 0,function*(){return this.track?.mute()})}unmute(){return k(this,void 0,void 0,function*(){return this.track?.unmute()})}pauseUpstream(){return k(this,void 0,void 0,function*(){yield this.track?.pauseUpstream()})}resumeUpstream(){return k(this,void 0,void 0,function*(){yield this.track?.resumeUpstream()})}getTrackFeatures(){if(_s(this.track)){let e=this.track.getSourceTrackSettings(),t=new Set;return e.autoGainControl&&t.add($t.TF_AUTO_GAIN_CONTROL),e.echoCancellation&&t.add($t.TF_ECHO_CANCELLATION),e.noiseSuppression&&t.add($t.TF_NOISE_SUPPRESSION),e.channelCount&&e.channelCount>1&&t.add($t.TF_STEREO),this.options?.dtx||t.add($t.TF_NO_DTX),this.track.enhancedNoiseCancellation&&t.add($t.TF_ENHANCED_NOISE_CANCELLATION),Array.from(t.values())}else return[]}};function eu(e,t){return k(this,void 0,void 0,function*(){e??={};let n=!1,{audioProcessor:r,videoProcessor:i,optionsWithoutProcessor:a}=mo(e),o=a.audio,s=a.video;if(r&&typeof a.audio==`object`&&(a.audio.processor=r),i&&typeof a.video==`object`&&(a.video.processor=i),e.audio&&typeof a.audio==`object`&&typeof a.audio.deviceId==`string`){let e=a.audio.deviceId;a.audio.deviceId={exact:e},n=!0,o=Object.assign(Object.assign({},a.audio),{deviceId:{ideal:e}})}if(a.video&&typeof a.video==`object`&&typeof a.video.deviceId==`string`){let e=a.video.deviceId;a.video.deviceId={exact:e},n=!0,s=Object.assign(Object.assign({},a.video),{deviceId:{ideal:e}})}a.audio===!0?a.audio={deviceId:`default`}:typeof a.audio==`object`&&a.audio!==null&&(a.audio=Object.assign(Object.assign({},a.audio),{deviceId:a.audio.deviceId||`default`})),a.video===!0?a.video={deviceId:`default`}:typeof a.video==`object`&&!a.video.deviceId&&(a.video.deviceId=`default`);let c=eo(a,Nc,Pc),l=no(c),u=navigator.mediaDevices.getUserMedia(l);a.audio&&(Js.userMediaPromiseMap.set(`audioinput`,u),u.catch(()=>Js.userMediaPromiseMap.delete(`audioinput`))),a.video&&(Js.userMediaPromiseMap.set(`videoinput`,u),u.catch(()=>Js.userMediaPromiseMap.delete(`videoinput`)));try{let e=yield u;return yield Promise.all(e.getTracks().map(n=>k(this,void 0,void 0,function*(){let a=n.kind===`audio`,o=a?c.audio:c.video;(typeof o==`boolean`||!o)&&(o={});let s,u=a?l.audio:l.video;typeof u!=`boolean`&&(s=u);let d=n.getSettings().deviceId;s?.deviceId&&cs(s.deviceId)!==d?s.deviceId=d:s||={deviceId:d};let f=rl(n,s,t);return f.kind===P.Kind.Video?f.source=P.Source.Camera:f.kind===P.Kind.Audio&&(f.source=P.Source.Microphone),f.mediaStream=e,_s(f)&&r?yield f.setProcessor(r):vs(f)&&i&&(yield f.setProcessor(i)),f})))}catch(r){if(!n)throw r;return eu(Object.assign(Object.assign({},e),{audio:o,video:s}),t)}})}function tu(e){return k(this,void 0,void 0,function*(){return(yield eu({audio:e??!0,video:!1}))[0]})}var nu;(function(e){e.Excellent=`excellent`,e.Good=`good`,e.Poor=`poor`,e.Lost=`lost`,e.Unknown=`unknown`})(nu||={});function ru(e){switch(e){case Jt.EXCELLENT:return nu.Excellent;case Jt.GOOD:return nu.Good;case Jt.POOR:return nu.Poor;case Jt.LOST:return nu.Lost;default:return nu.Unknown}}var iu=class extends di.EventEmitter{get logContext(){var e;return Object.assign({},((e=this.loggerOptions)?.loggerContextCb)?.call(e))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every(e=>e.isEncrypted)}get isAgent(){return this.permissions?.agent||this.kind===on.AGENT}get isActive(){return this.participantInfo?.state===an.ACTIVE}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(e,t,n,r,i,a){let o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:on.STANDARD;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=nu.Unknown,this.log=$r,this.log=ei(a?.loggerName??Qr.Participant),this.loggerOptions=a,this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=n,this.metadata=r,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=o,this._attributes=i??{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(let[,t]of this.trackPublications)if(t.source===e)return t}getTrackPublicationByName(e){for(let[,t]of this.trackPublications)if(t.trackName===e)return t}waitUntilActive(){return this.isActive?Promise.resolve():this.activeFuture?this.activeFuture.promise:(this.activeFuture=new os,this.once(j.Active,()=>{var e,t;(t=(e=this.activeFuture)?.resolve)==null||t.call(e),this.activeFuture=void 0}),this.activeFuture.promise)}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){return!(this.getTrackPublication(P.Source.Camera)?.isMuted??!0)}get isMicrophoneEnabled(){return!(this.getTrackPublication(P.Source.Microphone)?.isMuted??!0)}get isScreenShareEnabled(){return!!this.getTrackPublication(P.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(Number.parseInt(this.participantInfo.joinedAt.toString())*1e3):new Date}updateInfo(e){return this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version?!1:(this.identity=e.identity,this.sid=e.sid,this._setName(e.name),this._setMetadata(e.metadata),this._setAttributes(e.attributes),e.state===an.ACTIVE&&this.participantInfo?.state!==an.ACTIVE&&this.emit(j.Active),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,!0)}_setMetadata(e){let t=this.metadata!==e,n=this.metadata;this.metadata=e,t&&this.emit(j.ParticipantMetadataChanged,n)}_setName(e){let t=this.name!==e;this.name=e,t&&this.emit(j.ParticipantNameChanged,e)}_setAttributes(e){let t=po(this.attributes,e);this._attributes=e,Object.keys(t).length>0&&this.emit(j.AttributesChanged,t)}setPermissions(e){let t=this.permissions,n=e.canPublish!==this.permissions?.canPublish||e.canSubscribe!==this.permissions?.canSubscribe||e.canPublishData!==this.permissions?.canPublishData||e.hidden!==this.permissions?.hidden||e.recorder!==this.permissions?.recorder||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some((e,t)=>e!==this.permissions?.canPublishSources[t])||e.canSubscribeMetrics!==this.permissions?.canSubscribeMetrics;return this.permissions=e,n&&this.emit(j.ParticipantPermissionsChanged,t),n}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(j.IsSpeakingChanged,e))}setConnectionQuality(e){let t=this._connectionQuality;this._connectionQuality=ru(e),t!==this._connectionQuality&&this.emit(j.ConnectionQualityChanged,this._connectionQuality)}setDisconnected(){var e,t;this.activeFuture&&=((t=(e=this.activeFuture).reject)==null||t.call(e,Error(`Participant disconnected`)),void 0)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach(t=>_s(t.track)&&t.track.setAudioContext(e))}addTrackPublication(e){e.on(N.Muted,()=>{this.emit(j.TrackMuted,e)}),e.on(N.Unmuted,()=>{this.emit(j.TrackUnmuted,e)});let t=e;switch(t.track&&(t.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case P.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case P.Kind.Video:this.videoTrackPublications.set(e.trackSid,e);break}}};function au(e){if(!e.participantSid&&!e.participantIdentity)throw Error(`Invalid track permission, must provide at least one of participantIdentity and participantSid`);return new wr({participantIdentity:e.participantIdentity??``,participantSid:e.participantSid??``,allTracks:e.allowAll??!1,trackSids:e.allowedTrackSids||[]})}var ou=class extends iu{constructor(e,t,n,r,i,a){super(e,t,void 0,void 0,void 0,{loggerName:r.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=cn.NONE,this.enabledPublishVideoCodecs=[],this.pendingAcks=new Map,this.pendingResponses=new Map,this.handleReconnecting=()=>{this.reconnectFuture||=new os},this.handleReconnected=()=>{var e,t;(t=(e=this.reconnectFuture)?.resolve)==null||t.call(e),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleClosing=()=>{var e,t,n,r,i,a;this.reconnectFuture&&=(this.reconnectFuture.promise.catch(e=>this.log.warn(e.message,this.logContext)),(t=(e=this.reconnectFuture)?.reject)==null||t.call(e,Error(`Got disconnected during reconnection attempt`)),void 0),this.signalConnectedFuture&&=((r=(n=this.signalConnectedFuture).reject)==null||r.call(n,Error(`Got disconnected without signal connected`)),void 0),(a=(i=this.activeAgentFuture)?.reject)==null||a.call(i,Error(`Got disconnected without active agent present`)),this.activeAgentFuture=void 0,this.firstActiveAgent=void 0},this.handleSignalConnected=e=>{var t,n;e.participant&&this.updateInfo(e.participant),this.signalConnectedFuture||=new os,(n=(t=this.signalConnectedFuture).resolve)==null||n.call(t)},this.handleSignalRequestResponse=e=>{let{requestId:t,reason:n,message:r}=e,i=this.pendingSignalRequests.get(t);i&&(n!==Rr.OK&&i.reject(new La(r,n)),this.pendingSignalRequests.delete(t))},this.handleDataPacket=e=>{switch(e.value.case){case`rpcResponse`:let t=e.value.value,n=null,r=null;t.value.case===`payload`?n=t.value.value:t.value.case===`error`&&(r=Uc.fromProto(t.value.value)),this.handleIncomingRpcResponse(t.requestId,n,r);break;case`rpcAck`:let i=e.value.value;this.handleIncomingRpcAck(i.requestId);break}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug(`updating track subscription permissions`,Object.assign(Object.assign({},this.logContext),{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions})),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map(e=>au(e)))},this.onTrackUnmuted=e=>{this.onTrackMuted(e,e.isUpstreamPaused)},this.onTrackMuted=(e,t)=>{if(t===void 0&&(t=!0),!e.sid){this.log.error(`could not update mute status for unpublished track`,Object.assign(Object.assign({},this.logContext),uo(e)));return}this.engine.updateMuteStatus(e.sid,t)},this.onTrackUpstreamPaused=e=>{this.log.debug(`upstream paused`,Object.assign(Object.assign({},this.logContext),uo(e))),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{this.log.debug(`upstream resumed`,Object.assign(Object.assign({},this.logContext),uo(e))),this.onTrackMuted(e,e.isMuted)},this.onTrackFeatureUpdate=e=>{let t=this.audioTrackPublications.get(e.sid);if(!t){this.log.warn(`Could not update local audio track settings, missing publication for track ${e.sid}`,this.logContext);return}this.engine.client.sendUpdateLocalAudioTrack(t.trackSid,t.getTrackFeatures())},this.onTrackCpuConstrained=(e,t)=>{this.log.debug(`track cpu constrained`,Object.assign(Object.assign({},this.logContext),uo(t))),this.emit(j.LocalTrackCpuConstrained,e,t)},this.handleSubscribedQualityUpdate=e=>k(this,void 0,void 0,function*(){var t,n,r,i;if(!this.roomOptions?.dynacast)return;let a=this.videoTrackPublications.get(e.trackSid);if(!a){this.log.warn(`received subscribed quality update for unknown track`,Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}if(!a.videoTrack)return;let o=yield a.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var s=!0,c=si(o),l;l=yield c.next(),t=l.done,!t;s=!0){i=l.value,s=!1;let e=i;Ja(e)&&(this.log.debug(`publish ${e} for ${a.videoTrack.sid}`,Object.assign(Object.assign({},this.logContext),uo(a))),yield this.publishAdditionalCodecForTrack(a.videoTrack,e,a.options))}}catch(e){n={error:e}}finally{try{!s&&!t&&(r=c.return)&&(yield r.call(c))}finally{if(n)throw n.error}}}),this.handleLocalTrackUnpublished=e=>{let t=this.trackPublications.get(e.trackSid);if(!t){this.log.warn(`received unpublished event for unknown track`,Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}this.unpublishTrack(t.track)},this.handleTrackEnded=e=>k(this,void 0,void 0,function*(){if(e.source===P.Source.ScreenShare||e.source===P.Source.ScreenShareAudio)this.log.debug(`unpublishing local track due to TrackEnded`,Object.assign(Object.assign({},this.logContext),uo(e))),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(bs(e)||ys(e))try{if(Ho())try{let t=yield navigator==null?void 0:navigator.permissions.query({name:e.source===P.Source.Camera?`camera`:`microphone`});if(t&&t.state===`denied`)throw this.log.warn(`user has revoked access to ${e.source}`,Object.assign(Object.assign({},this.logContext),uo(e))),t.onchange=()=>{t.state!==`denied`&&(e.isMuted||e.restartTrack(),t.onchange=null)},Error(`GetUserMedia Permission denied`)}catch{}e.isMuted||(this.log.debug(`track ended, attempting to use a different device`,Object.assign(Object.assign({},this.logContext),uo(e))),bs(e)?yield e.restartTrack({deviceId:`default`}):yield e.restartTrack())}catch{this.log.warn(`could not restart track, muting instead`,Object.assign(Object.assign({},this.logContext),uo(e))),yield e.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=n,this.roomOptions=r,this.setupEngine(n),this.activeDeviceMap=new Map([[`audioinput`,`default`],[`videoinput`,`default`],[`audiooutput`,`default`]]),this.pendingSignalRequests=new Map,this.rpcHandlers=i,this.roomOutgoingDataStreamManager=a}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==cn.NONE}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setupEngine(e){this.engine=e,this.engine.on(M.RemoteMute,(e,t)=>{let n=this.trackPublications.get(e);!n||!n.track||(t?n.mute():n.unmute())}),this.signalConnectedFuture?.isResolved&&(this.signalConnectedFuture=void 0),this.engine.on(M.Connected,this.handleReconnected).on(M.SignalConnected,this.handleSignalConnected).on(M.SignalRestarted,this.handleReconnected).on(M.SignalResumed,this.handleReconnected).on(M.Restarting,this.handleReconnecting).on(M.Resuming,this.handleReconnecting).on(M.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(M.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(M.Closing,this.handleClosing).on(M.SignalRequestResponse,this.handleSignalRequestResponse).on(M.DataPacketReceived,this.handleDataPacket)}setMetadata(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({metadata:e})})}setName(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({name:e})})}setAttributes(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({attributes:e})})}requestMetadataUpdate(e){return k(this,arguments,void 0,function(e){var t=this;let{metadata:n,name:r,attributes:i}=e;return function*(){return new Promise((e,a)=>k(t,void 0,void 0,function*(){try{let t=!1,o=yield this.engine.client.sendUpdateLocalMetadata(n??this.metadata??``,r??this.name??``,i),s=performance.now();for(this.pendingSignalRequests.set(o,{resolve:e,reject:e=>{a(e),t=!0},values:{name:r,metadata:n,attributes:i}});performance.now()-s<5e3&&!t;){if((!r||this.name===r)&&(!n||this.metadata===n)&&(!i||Object.entries(i).every(e=>{let[t,n]=e;return this.attributes[t]===n||n===``&&!this.attributes[t]}))){this.pendingSignalRequests.delete(o),e();return}yield Eo(50)}a(new La(`Request to update local metadata timed out`,`TimeoutError`))}catch(e){e instanceof Error&&a(e)}}))}()})}setCameraEnabled(e,t,n){return this.setTrackEnabled(P.Source.Camera,e,t,n)}setMicrophoneEnabled(e,t,n){return this.setTrackEnabled(P.Source.Microphone,e,t,n)}setScreenShareEnabled(e,t,n){return this.setTrackEnabled(P.Source.ScreenShare,e,t,n)}setE2EEEnabled(e){return k(this,void 0,void 0,function*(){this.encryptionType=e?cn.GCM:cn.NONE,yield this.republishAllTracks(void 0,!1)})}setTrackEnabled(e,t,n,r){return k(this,void 0,void 0,function*(){this.log.debug(`setTrackEnabled`,Object.assign(Object.assign({},this.logContext),{source:e,enabled:t})),this.republishPromise&&(yield this.republishPromise);let i=this.getTrackPublication(e);if(t)if(i)yield i.unmute();else{let t;if(this.pendingPublishing.has(e)){let t=yield this.waitForPendingPublicationOfSource(e);return t||this.log.info(`waiting for pending publication promise timed out`,Object.assign(Object.assign({},this.logContext),{source:e})),yield t?.unmute(),t}this.pendingPublishing.add(e);try{switch(e){case P.Source.Camera:t=yield this.createTracks({video:n??!0});break;case P.Source.Microphone:t=yield this.createTracks({audio:n??!0});break;case P.Source.ScreenShare:t=yield this.createScreenTracks(Object.assign({},n));break;default:throw new Ma(e)}}catch(n){throw t?.forEach(e=>{e.stop()}),n instanceof Error&&this.emit(j.MediaDevicesError,n,oo(e)),this.pendingPublishing.delete(e),n}for(let r of t){let t=Object.assign(Object.assign({},this.roomOptions.publishDefaults),n);e===P.Source.Microphone&&_s(r)&&t.preConnectBuffer&&(this.log.info(`starting preconnect buffer for microphone`,Object.assign({},this.logContext)),r.startPreConnectBuffer())}try{let e=[];for(let n of t)this.log.info(`publishing track`,Object.assign(Object.assign({},this.logContext),uo(n))),e.push(this.publishTrack(n,r));let n=yield Promise.all(e);[i]=n}catch(e){throw t?.forEach(e=>{e.stop()}),e}finally{this.pendingPublishing.delete(e)}}else if(!i?.track&&this.pendingPublishing.has(e)&&(i=yield this.waitForPendingPublicationOfSource(e),i||this.log.info(`waiting for pending publication promise timed out`,Object.assign(Object.assign({},this.logContext),{source:e}))),i&&i.track)if(e===P.Source.ScreenShare){i=yield this.unpublishTrack(i.track);let e=this.getTrackPublication(P.Source.ScreenShareAudio);e&&e.track&&this.unpublishTrack(e.track)}else yield i.mute();return i})}enableCameraAndMicrophone(){return k(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(P.Source.Camera)||this.pendingPublishing.has(P.Source.Microphone))){this.pendingPublishing.add(P.Source.Camera),this.pendingPublishing.add(P.Source.Microphone);try{let e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map(e=>this.publishTrack(e)))}finally{this.pendingPublishing.delete(P.Source.Camera),this.pendingPublishing.delete(P.Source.Microphone)}}})}createTracks(e){return k(this,void 0,void 0,function*(){e??={};let t=eo(e,this.roomOptions?.audioCaptureDefaults,this.roomOptions?.videoCaptureDefaults);try{return(yield eu(t,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext})).map(e=>(_s(e)&&(this.microphoneError=void 0,e.setAudioContext(this.audioContext),e.source=P.Source.Microphone,this.emit(j.AudioStreamAcquired)),vs(e)&&(this.cameraError=void 0,e.source=P.Source.Camera),e))}catch(t){throw t instanceof Error&&(e.audio&&(this.microphoneError=t),e.video&&(this.cameraError=t)),t}})}createScreenTracks(e){return k(this,void 0,void 0,function*(){if(e===void 0&&(e={}),navigator.mediaDevices.getDisplayMedia===void 0)throw new ja(`getDisplayMedia not supported`);e.resolution===void 0&&!Ro()&&(e.resolution=$a.h1080fps30.resolution);let t=so(e),n=yield navigator.mediaDevices.getDisplayMedia(t),r=n.getVideoTracks();if(r.length===0)throw new Ma(`no video track found`);let i=new xl(r[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});i.source=P.Source.ScreenShare,e.contentHint&&(i.mediaStreamTrack.contentHint=e.contentHint);let a=[i];if(n.getAudioTracks().length>0){this.emit(j.AudioStreamAcquired);let e=new nl(n.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});e.source=P.Source.ScreenShareAudio,a.push(e)}return a})}publishTrack(e,t){return k(this,void 0,void 0,function*(){return this.publishOrRepublishTrack(e,t)})}publishOrRepublishTrack(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function*(){bs(e)&&e.setAudioContext(n.audioContext),yield n.reconnectFuture?.promise,n.republishPromise&&!r&&(yield n.republishPromise),gs(e)&&n.pendingPublishPromises.has(e)&&(yield n.pendingPublishPromises.get(e));let i;if(e instanceof MediaStreamTrack)i=e.getConstraints();else{i=e.constraints;let t;switch(e.source){case P.Source.Microphone:t=`audioinput`;break;case P.Source.Camera:t=`videoinput`}t&&n.activeDeviceMap.has(t)&&(i=Object.assign(Object.assign({},i),{deviceId:n.activeDeviceMap.get(t)}))}if(e instanceof MediaStreamTrack)switch(e.kind){case`audio`:e=new nl(e,i,!0,n.audioContext,{loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});break;case`video`:e=new xl(e,i,!0,{loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});break;default:throw new Ma(`unsupported MediaStreamTrack kind ${e.kind}`)}else e.updateLoggerOptions({loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});let a;if(n.trackPublications.forEach(t=>{t.track&&t.track===e&&(a=t)}),a)return n.log.warn(`track has already been published, skipping`,Object.assign(Object.assign({},n.logContext),uo(a))),a;let o=Object.assign(Object.assign({},n.roomOptions.publishDefaults),t),s=`channelCount`in e.mediaStreamTrack.getSettings()&&e.mediaStreamTrack.getSettings().channelCount===2||e.mediaStreamTrack.getConstraints().channelCount===2,c=o.forceStereo??s;c&&(o.dtx===void 0&&n.log.info(`Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.`,Object.assign(Object.assign({},n.logContext),uo(e))),o.red===void 0&&n.log.info(`Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work.`),o.dtx??=!1,o.red??=!1),!Vo()&&n.roomOptions.e2ee&&(n.log.info(`End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2`,Object.assign({},n.logContext)),o.simulcast=!1),o.source&&(e.source=o.source);let l=new Promise((t,r)=>k(n,void 0,void 0,function*(){try{if(this.engine.client.currentState!==ec.CONNECTED){this.log.debug(`deferring track publication until signal is connected`,Object.assign(Object.assign({},this.logContext),{track:uo(e)}));let n=!1,i=setTimeout(()=>{n=!0,e.stop(),r(new Ia(`publishing rejected as engine not connected within timeout`,408))},15e3);if(yield this.waitUntilEngineConnected(),clearTimeout(i),n)return;t(yield this.publish(e,o,c))}else try{t(yield this.publish(e,o,c))}catch(e){r(e)}}catch(e){r(e)}}));n.pendingPublishPromises.set(e,l);try{return yield l}catch(e){throw e}finally{n.pendingPublishPromises.delete(e)}}()})}waitUntilEngineConnected(){return this.signalConnectedFuture||=new os,this.signalConnectedFuture.promise}hasPermissionsToPublish(e){if(!this.permissions)return this.log.warn(`no permissions present for publishing track`,Object.assign(Object.assign({},this.logContext),uo(e))),!1;let{canPublish:t,canPublishSources:n}=this.permissions;return t&&(n.length===0||n.map(e=>ho(e)).includes(e.source))?!0:(this.log.warn(`insufficient permissions to publish`,Object.assign(Object.assign({},this.logContext),uo(e))),!1)}publish(e,t,n){return k(this,void 0,void 0,function*(){if(!this.hasPermissionsToPublish(e))throw new Ia(`failed to publish track, insufficient permissions`,403);Array.from(this.trackPublications.values()).find(t=>gs(e)&&t.source===e.source)&&e.source!==P.Source.Unknown&&this.log.info(`publishing a second track with the same source: ${e.source}`,Object.assign(Object.assign({},this.logContext),uo(e))),t.stopMicTrackOnMute&&_s(e)&&(e.stopOnMute=!0),e.source===P.Source.ScreenShare&&Po()&&(t.simulcast=!1),t.videoCodec===`av1`&&!ko()&&(t.videoCodec=void 0),t.videoCodec===`vp9`&&!Ao()&&(t.videoCodec=void 0),t.videoCodec===void 0&&(t.videoCodec=jc),this.enabledPublishVideoCodecs.length>0&&(this.enabledPublishVideoCodecs.some(e=>t.videoCodec===co(e.mime))||(t.videoCodec=co(this.enabledPublishVideoCodecs[0].mime)));let r=t.videoCodec;e.on(N.Muted,this.onTrackMuted),e.on(N.Unmuted,this.onTrackUnmuted),e.on(N.Ended,this.handleTrackEnded),e.on(N.UpstreamPaused,this.onTrackUpstreamPaused),e.on(N.UpstreamResumed,this.onTrackUpstreamResumed),e.on(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let i=[],a=!(t.dtx??!0),o=e.getSourceTrackSettings();o.autoGainControl&&i.push($t.TF_AUTO_GAIN_CONTROL),o.echoCancellation&&i.push($t.TF_ECHO_CANCELLATION),o.noiseSuppression&&i.push($t.TF_NOISE_SUPPRESSION),o.channelCount&&o.channelCount>1&&i.push($t.TF_STEREO),a&&i.push($t.TF_NO_DTX),bs(e)&&e.hasPreConnectBuffer&&i.push($t.TF_PRECONNECT_BUFFER);let s=new Xn({cid:e.mediaStreamTrack.id,name:t.name,type:P.kindToProto(e.kind),muted:e.isMuted,source:P.sourceToProto(e.source),disableDtx:a,encryption:this.encryptionType,stereo:n,disableRed:this.isE2EEEnabled||!(t.red??!0),stream:t?.stream,backupCodecPolicy:t?.backupCodecPolicy,audioFeatures:i}),c;if(e.kind===P.Kind.Video){let n={width:0,height:0};try{n=yield e.waitForDimensions()}catch{let t=this.roomOptions.videoCaptureDefaults?.resolution??Za.h720.resolution;n={width:t.width,height:t.height},this.log.error(`could not determine track dimensions, using defaults`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{dims:n}))}s.width=n.width,s.height=n.height,ys(e)&&(jo(r)&&(e.source===P.Source.ScreenShare&&(t.scalabilityMode=`L1T3`,`contentHint`in e.mediaStreamTrack&&(e.mediaStreamTrack.contentHint=`motion`,this.log.info(`forcing contentHint to motion for screenshare with SVC codecs`,Object.assign(Object.assign({},this.logContext),uo(e))))),t.scalabilityMode=t.scalabilityMode??`L3T3_KEY`),s.simulcastCodecs=[new Yn({codec:r,cid:e.mediaStreamTrack.id})],t.backupCodec===!0&&(t.backupCodec={codec:jc}),t.backupCodec&&r!==t.backupCodec.codec&&s.encryption===cn.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),s.simulcastCodecs.push(new Yn({codec:t.backupCodec.codec,cid:``})))),c=dl(e.source===P.Source.ScreenShare,s.width,s.height,t),s.layers=wl(s.width,s.height,c,jo(t.videoCodec))}else e.kind===P.Kind.Audio&&(c=[{maxBitrate:t.audioPreset?.maxBitrate,priority:t.audioPreset?.priority??`high`,networkPriority:t.audioPreset?.priority??`high`}]);if(!this.engine||this.engine.isClosed)throw new Pa(`cannot publish track when not connected`);let l=()=>k(this,void 0,void 0,function*(){if(!this.engine.pcManager)throw new Pa(`pcManager is not ready`);if(e.sender=yield this.engine.createSender(e,t,c),this.emit(j.LocalSenderCreated,e.sender,e),ys(e)&&(t.degradationPreference??=yl(e),e.setDegradationPreference(t.degradationPreference)),c)if(Po()&&e.kind===P.Kind.Audio){let t;for(let n of this.engine.pcManager.publisher.getTransceivers())if(n.sender===e.sender){t=n;break}t&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:t,codec:`opus`,maxbr:c[0]?.maxBitrate?c[0].maxBitrate/1e3:0})}else e.codec&&jo(e.codec)&&c[0]?.maxBitrate&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:s.cid,codec:e.codec,maxbr:c[0].maxBitrate/1e3});yield this.engine.negotiate()}),u,d=new Promise((t,n)=>k(this,void 0,void 0,function*(){try{u=yield this.engine.addTrack(s),t(u)}catch(t){e.sender&&this.engine.pcManager?.publisher&&(this.engine.pcManager.publisher.removeTrack(e.sender),yield this.engine.negotiate().catch(t=>{this.log.error(`failed to negotiate after removing track due to failed add track request`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{error:t}))})),n(t)}}));if(this.enabledPublishVideoCodecs.length>0)u=(yield Promise.all([d,l()]))[0];else{u=yield d;let n;if(u.codecs.forEach(e=>{n===void 0&&(n=e.mimeType)}),n&&e.kind===P.Kind.Video){let i=co(n);i!==r&&(this.log.debug(`falling back to server selected codec`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{codec:i})),t.videoCodec=i,c=dl(e.source===P.Source.ScreenShare,s.width,s.height,t))}yield l()}let f=new $l(e.kind,u,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(f.on(N.CpuConstrained,e=>this.onTrackCpuConstrained(e,f)),f.options=t,e.sid=u.sid,this.log.debug(`publishing ${e.kind} with encodings`,Object.assign(Object.assign({},this.logContext),{encodings:c,trackInfo:u})),ys(e)?e.startMonitor(this.engine.client):bs(e)&&e.startMonitor(),this.addTrackPublication(f),this.emit(j.LocalTrackPublished,f),bs(e)&&u.audioFeatures.includes($t.TF_PRECONNECT_BUFFER)){let t=e.getPreConnectBuffer(),n=e.getPreConnectBufferMimeType();this.on(j.LocalTrackSubscribed,t=>{if(t.trackSid===u.sid){if(!e.hasPreConnectBuffer){this.log.warn(`subscribe event came to late, buffer already closed`,this.logContext);return}this.log.debug(`finished recording preconnect buffer`,Object.assign(Object.assign({},this.logContext),uo(e))),e.stopPreConnectBuffer()}}),t&&new Promise((r,i)=>k(this,void 0,void 0,function*(){var a,s,c,l;try{this.log.debug(`waiting for agent`,Object.assign(Object.assign({},this.logContext),uo(e)));let m=setTimeout(()=>{i(Error(`agent not active within 10 seconds`))},1e4),h=yield this.waitUntilActiveAgentPresent();clearTimeout(m),this.log.debug(`sending preconnect buffer`,Object.assign(Object.assign({},this.logContext),uo(e)));let g=yield this.streamBytes({name:`preconnect-buffer`,mimeType:n,topic:`lk.agent.pre-connect-audio-buffer`,destinationIdentities:[h.identity],attributes:{trackId:f.trackSid,sampleRate:String(o.sampleRate??`48000`),channels:String(o.channelCount??`1`)}});try{for(var u=!0,d=si(t),p;p=yield d.next(),a=p.done,!a;u=!0){l=p.value,u=!1;let e=l;yield g.write(e)}}catch(e){s={error:e}}finally{try{!u&&!a&&(c=d.return)&&(yield c.call(d))}finally{if(s)throw s.error}}yield g.close(),r()}catch(e){i(e)}})).then(()=>{this.log.debug(`preconnect buffer sent successfully`,Object.assign(Object.assign({},this.logContext),uo(e)))}).catch(t=>{this.log.error(`error sending preconnect buffer`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{error:t}))})}return f})}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,n){return k(this,void 0,void 0,function*(){if(this.encryptionType!==cn.NONE)return;let r;if(this.trackPublications.forEach(t=>{t.track&&t.track===e&&(r=t)}),!r)throw new Ma(`track is not published`);if(!ys(e))throw new Ma(`track is not a video track`);let i=Object.assign(Object.assign({},this.roomOptions?.publishDefaults),n),a=fl(e,t,i);if(!a){this.log.info(`backup codec has been disabled, ignoring request to add additional codec for track`,Object.assign(Object.assign({},this.logContext),uo(e)));return}let o=e.addSimulcastTrack(t,a);if(!o)return;let s=new Xn({cid:o.mediaStreamTrack.id,type:P.kindToProto(e.kind),muted:e.isMuted,source:P.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:i.videoCodec,cid:o.mediaStreamTrack.id}]});if(s.layers=wl(s.width,s.height,a),!this.engine||this.engine.isClosed)throw new Pa(`cannot publish track when not connected`);let c=(yield Promise.all([this.engine.addTrack(s),k(this,void 0,void 0,function*(){yield this.engine.createSimulcastSender(e,o,i,a),yield this.engine.negotiate()})]))[0];this.log.debug(`published ${t} for track ${e.sid}`,Object.assign(Object.assign({},this.logContext),{encodings:a,trackInfo:c}))})}unpublishTrack(e,t){return k(this,void 0,void 0,function*(){if(gs(e)){let t=this.pendingPublishPromises.get(e);t&&(this.log.info(`awaiting publish promise before attempting to unpublish`,Object.assign(Object.assign({},this.logContext),uo(e))),yield t)}let n=this.getPublicationForTrack(e),r=n?uo(n):void 0;if(this.log.debug(`unpublishing track`,Object.assign(Object.assign({},this.logContext),r)),!n||!n.track){this.log.warn(`track was not unpublished because no publication was found`,Object.assign(Object.assign({},this.logContext),r));return}e=n.track,e.off(N.Muted,this.onTrackMuted),e.off(N.Unmuted,this.onTrackUnmuted),e.off(N.Ended,this.handleTrackEnded),e.off(N.UpstreamPaused,this.onTrackUpstreamPaused),e.off(N.UpstreamResumed,this.onTrackUpstreamResumed),e.off(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),t===void 0&&(t=this.roomOptions?.stopLocalTrackOnUnpublish??!0),t?e.stop():e.stopMonitor();let i=!1,a=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<Lc.FAILED&&a)try{for(let e of this.engine.pcManager.publisher.getTransceivers())e.sender===a&&(e.direction=`inactive`,i=!0);if(this.engine.removeTrack(a)&&(i=!0),ys(e)){for(let[,t]of e.simulcastCodecs)t.sender&&=(this.engine.removeTrack(t.sender)&&(i=!0),void 0);e.simulcastCodecs.clear()}}catch(e){this.log.warn(`failed to unpublish track`,Object.assign(Object.assign(Object.assign({},this.logContext),r),{error:e}))}switch(this.trackPublications.delete(n.trackSid),n.kind){case P.Kind.Audio:this.audioTrackPublications.delete(n.trackSid);break;case P.Kind.Video:this.videoTrackPublications.delete(n.trackSid);break}return this.emit(j.LocalTrackUnpublished,n),n.setTrack(void 0),i&&(yield this.engine.negotiate()),n})}unpublishTracks(e){return k(this,void 0,void 0,function*(){return(yield Promise.all(e.map(e=>this.unpublishTrack(e)))).filter(e=>!!e)})}republishAllTracks(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){t.republishPromise&&(yield t.republishPromise),t.republishPromise=new Promise((r,i)=>k(t,void 0,void 0,function*(){try{let t=[];this.trackPublications.forEach(n=>{n.track&&(e&&(n.options=Object.assign(Object.assign({},n.options),e)),t.push(n))}),yield Promise.all(t.map(e=>k(this,void 0,void 0,function*(){let t=e.track;yield this.unpublishTrack(t,!1),n&&!t.isMuted&&t.source!==P.Source.ScreenShare&&t.source!==P.Source.ScreenShareAudio&&(bs(t)||ys(t))&&!t.isUserProvided&&(this.log.debug(`restarting existing track`,Object.assign(Object.assign({},this.logContext),{track:e.trackSid})),yield t.restartTrack()),yield this.publishOrRepublishTrack(t,e.options,!0)}))),r()}catch(e){i(e)}finally{this.republishPromise=void 0}})),yield t.republishPromise}()})}publishData(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return function*(){let r=n.reliable?mn.RELIABLE:mn.LOSSY,i=n.destinationIdentities,a=n.topic,o=new pn({kind:r,value:{case:`user`,value:new yn({participantIdentity:t.identity,payload:e,destinationIdentities:i,topic:a})}});yield t.engine.sendDataPacket(o,r)}()})}publishDtmf(e,t){return k(this,void 0,void 0,function*(){let n=new pn({kind:mn.RELIABLE,value:{case:`sipDtmf`,value:new bn({code:e,digit:t})}});yield this.engine.sendDataPacket(n,mn.RELIABLE)})}sendChatMessage(e,t){return k(this,void 0,void 0,function*(){let n={id:crypto.randomUUID(),message:e,timestamp:Date.now(),attachedFiles:t?.attachments},r=new pn({value:{case:`chatMessage`,value:new Cn(Object.assign(Object.assign({},n),{timestamp:xe.parse(n.timestamp)}))}});return yield this.engine.sendDataPacket(r,mn.RELIABLE),this.emit(j.ChatMessage,n),n})}editChatMessage(e,t){return k(this,void 0,void 0,function*(){let n=Object.assign(Object.assign({},t),{message:e,editTimestamp:Date.now()}),r=new pn({value:{case:`chatMessage`,value:new Cn(Object.assign(Object.assign({},n),{timestamp:xe.parse(n.timestamp),editTimestamp:xe.parse(n.editTimestamp)}))}});return yield this.engine.sendDataPacket(r,mn.RELIABLE),this.emit(j.ChatMessage,n),n})}sendText(e,t){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendText(e,t)})}streamText(e){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamText(e)})}sendFile(e,t){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendFile(e,t)})}streamBytes(e){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamBytes(e)})}performRpc(e){return k(this,arguments,void 0,function(e){var t=this;let{destinationIdentity:n,method:r,payload:i,responseTimeout:a=15e3}=e;return function*(){let e=7e3;return e+1e3,new Promise((o,s)=>k(t,void 0,void 0,function*(){if(Gc(i)>Wc){s(Uc.builtIn(`REQUEST_PAYLOAD_TOO_LARGE`));return}if(this.engine.latestJoinResponse?.serverInfo?.version&&Yo(this.engine.latestJoinResponse?.serverInfo?.version,`1.8.0`)<0){s(Uc.builtIn(`UNSUPPORTED_SERVER`));return}let t=Math.max(a,8e3),c=crypto.randomUUID();yield this.publishRpcRequest(n,c,r,i,t);let l=setTimeout(()=>{this.pendingAcks.delete(c),s(Uc.builtIn(`CONNECTION_TIMEOUT`)),this.pendingResponses.delete(c),clearTimeout(u)},e);this.pendingAcks.set(c,{resolve:()=>{clearTimeout(l)},participantIdentity:n});let u=setTimeout(()=>{this.pendingResponses.delete(c),s(Uc.builtIn(`RESPONSE_TIMEOUT`))},a);this.pendingResponses.set(c,{resolve:(e,t)=>{clearTimeout(u),this.pendingAcks.has(c)&&(this.log.warn(`RPC response received before ack`,c),this.pendingAcks.delete(c),clearTimeout(l)),t?s(t):o(e??``)},participantIdentity:n})}))}()})}registerRpcMethod(e,t){this.rpcHandlers.has(e)&&this.log.warn(`you're overriding the RPC handler for method ${e}, in the future this will throw an error`),this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}handleIncomingRpcAck(e){let t=this.pendingAcks.get(e);t?(t.resolve(),this.pendingAcks.delete(e)):console.error(`Ack received for unexpected RPC request`,e)}handleIncomingRpcResponse(e,t,n){let r=this.pendingResponses.get(e);r?(r.resolve(t,n),this.pendingResponses.delete(e)):console.error(`Response received for unexpected RPC request`,e)}publishRpcRequest(e,t,n,r,i){return k(this,void 0,void 0,function*(){let a=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcRequest`,value:new wn({id:t,method:n,payload:r,responseTimeoutMs:i,version:1})}});yield this.engine.sendDataPacket(a,mn.RELIABLE)})}handleParticipantDisconnected(e){for(let[t,{participantIdentity:n}]of this.pendingAcks)n===e&&this.pendingAcks.delete(t);for(let[t,{participantIdentity:n,resolve:r}]of this.pendingResponses)n===e&&(r(null,Uc.builtIn(`RECIPIENT_DISCONNECTED`)),this.pendingResponses.delete(t))}setEnabledPublishCodecs(e){this.enabledPublishVideoCodecs=e.filter(e=>e.mime.split(`/`)[0].toLowerCase()===`video`)}updateInfo(e){return super.updateInfo(e)?(e.tracks.forEach(e=>{let t=this.trackPublications.get(e.sid);if(t){let n=t.isMuted||(t.track?.isUpstreamPaused??!1);n!==e.muted&&(this.log.debug(`updating server mute state after reconcile`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(t)),{mutedOnServer:n})),this.engine.client.sendMuteTrack(e.sid,n))}}),!0):!1}setActiveAgent(e){var t,n,r,i;this.firstActiveAgent=e,e&&!this.firstActiveAgent&&(this.firstActiveAgent=e),e?(n=(t=this.activeAgentFuture)?.resolve)==null||n.call(t,e):(i=(r=this.activeAgentFuture)?.reject)==null||i.call(r,Error(`Agent disconnected`)),this.activeAgentFuture=void 0}waitUntilActiveAgentPresent(){return this.firstActiveAgent?Promise.resolve(this.firstActiveAgent):(this.activeAgentFuture||=new os,this.activeAgentFuture.promise)}getPublicationForTrack(e){let t;return this.trackPublications.forEach(n=>{let r=n.track;r&&(e instanceof MediaStreamTrack?(bs(r)||ys(r))&&r.mediaStreamTrack===e&&(t=n):e===r&&(t=n))}),t}waitForPendingPublicationOfSource(e){return k(this,void 0,void 0,function*(){let t=Date.now();for(;Date.now()<t+1e4;){let t=Array.from(this.pendingPublishPromises.entries()).find(t=>{let[n]=t;return n.source===e});if(t)return t[1];yield Eo(20)}})}},su=class extends Ql{constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.allowed=!0,this.requestedDisabled=void 0,this.visible=!0,this.handleEnded=e=>{this.setTrack(void 0),this.emit(N.Ended,e)},this.handleVisibilityChange=e=>{this.log.debug(`adaptivestream video visibility ${this.trackSid}, visible=${e}`,this.logContext),this.visible=e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{this.log.debug(`adaptivestream video dimensions ${e.width}x${e.height}`,this.logContext),this.videoDimensionsAdaptiveStream=e,this.emitTrackUpdate()},this.subscribed=n,this.updateInfo(t)}setSubscribed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);let r=new ar({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new On({participantSid:``,trackSids:[this.trackSid]})]});this.emit(N.UpdateSubscription,r),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(n)}get subscriptionStatus(){return this.subscribed===!1?Ql.SubscriptionStatus.Unsubscribed:super.isSubscribed?Ql.SubscriptionStatus.Subscribed:Ql.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?Ql.PermissionStatus.Allowed:Ql.PermissionStatus.NotAllowed}get isSubscribed(){return this.subscribed===!1?!1:super.isSubscribed}get isDesired(){return this.subscribed!==!1}get isEnabled(){return this.requestedDisabled===void 0?this.isAdaptiveStream?this.visible:!0:!this.requestedDisabled}get isLocal(){return!1}setEnabled(e){!this.isManualOperationAllowed()||this.requestedDisabled===!e||(this.requestedDisabled=!e,this.emitTrackUpdate())}setVideoQuality(e){!this.isManualOperationAllowed()||this.requestedMaxQuality===e||(this.requestedMaxQuality=e,this.requestedVideoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){this.isManualOperationAllowed()&&(this.requestedVideoDimensions?.width===e.width&&this.requestedVideoDimensions?.height===e.height||(Cs(this.track)&&(this.requestedVideoDimensions=e),this.requestedMaxQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&Cs(this.track)&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.requestedMaxQuality??bo.HIGH}setTrack(e){let t=this.subscriptionStatus,n=this.permissionStatus,r=this.track;r!==e&&(r&&(r.off(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),r.off(N.VisibilityChanged,this.handleVisibilityChange),r.off(N.Ended,this.handleEnded),r.detach(),r.stopMonitor(),this.emit(N.Unsubscribed,r)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(N.VisibilityChanged,this.handleVisibilityChange),e.on(N.Ended,this.handleEnded),this.emit(N.Subscribed,e)),this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(N.SubscriptionFailed,e)}updateInfo(e){super.updateInfo(e);let t=this.metadataMuted;this.metadataMuted=e.muted,this.track?this.track.setMuted(e.muted):t!==e.muted&&this.emit(e.muted?N.Muted:N.Unmuted)}emitSubscriptionUpdateIfChanged(e){let t=this.subscriptionStatus;e!==t&&this.emit(N.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(N.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return this.isDesired?!0:(this.log.warn(`cannot update track settings when not subscribed`,this.logContext),!1)}get isAdaptiveStream(){return Cs(this.track)&&this.track.isAdaptiveStream}emitTrackUpdate(){let e=new or({trackSids:[this.trackSid],disabled:!this.isEnabled,fps:this.fps});if(this.kind===P.Kind.Video){let t=this.requestedVideoDimensions;if(this.videoDimensionsAdaptiveStream!==void 0)if(t)go(this.videoDimensionsAdaptiveStream,t)&&(this.log.debug(`using adaptive stream dimensions instead of requested`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream);else if(this.requestedMaxQuality!==void 0&&this.trackInfo){let e=_o(this.trackInfo,this.requestedMaxQuality);e&&go(this.videoDimensionsAdaptiveStream,e)&&(this.log.debug(`using adaptive stream dimensions instead of max quality layer`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream)}else this.log.debug(`using adaptive stream dimensions`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream;t?(e.width=Math.ceil(t.width),e.height=Math.ceil(t.height)):this.requestedMaxQuality===void 0?(this.log.debug(`using default quality`,Object.assign(Object.assign({},this.logContext),{quality:bo.HIGH})),e.quality=bo.HIGH):(this.log.debug(`using requested max quality`,Object.assign(Object.assign({},this.logContext),{quality:this.requestedMaxQuality})),e.quality=this.requestedMaxQuality)}this.emit(N.UpdateSettings,e)}},cu=class e extends iu{static fromParticipantInfo(t,n,r){return new e(t,n.sid,n.identity,n.name,n.metadata,n.attributes,r,n.kind)}get logContext(){return Object.assign(Object.assign({},super.logContext),{rpID:this.sid,remoteParticipant:this.identity})}constructor(e,t,n,r,i,a,o){let s=arguments.length>7&&arguments[7]!==void 0?arguments[7]:on.STANDARD;super(t,n||``,r,i,a,o,s),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.volumeMap=new Map}addTrackPublication(e){super.addTrackPublication(e),e.on(N.UpdateSettings,t=>{this.log.debug(`send update settings`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{settings:t})),this.signalClient.sendUpdateTrackSettings(t)}),e.on(N.UpdateSubscription,e=>{e.participantTracks.forEach(e=>{e.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(e)}),e.on(N.SubscriptionPermissionChanged,t=>{this.emit(j.TrackSubscriptionPermissionChanged,e,t)}),e.on(N.SubscriptionStatusChanged,t=>{this.emit(j.TrackSubscriptionStatusChanged,e,t)}),e.on(N.Subscribed,t=>{this.emit(j.TrackSubscribed,t,e)}),e.on(N.Unsubscribed,t=>{this.emit(j.TrackUnsubscribed,t,e)}),e.on(N.SubscriptionFailed,t=>{this.emit(j.TrackSubscriptionFailed,e.trackSid,t)})}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.Source.Microphone;this.volumeMap.set(t,e);let n=this.getTrackPublication(t);n&&n.track&&n.track.setVolume(e)}getVolume(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:P.Source.Microphone,t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,n,r,i,a){let o=this.getTrackPublicationBySid(t);if(o||t.startsWith(`TR`)||this.trackPublications.forEach(t=>{!o&&e.kind===t.kind.toString()&&(o=t)}),!o){if(a===0){this.log.error(`could not find published track`,Object.assign(Object.assign({},this.logContext),{trackSid:t})),this.emit(j.TrackSubscriptionFailed,t);return}a===void 0&&(a=20),setTimeout(()=>{this.addSubscribedMediaTrack(e,t,n,r,i,a-1)},150);return}if(e.readyState===`ended`){this.log.error(`unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()`,Object.assign(Object.assign({},this.logContext),uo(o))),this.emit(j.TrackSubscriptionFailed,t);return}let s=e.kind===`video`,c;return c=s?new Jl(e,t,r,i):new Kl(e,t,r,this.audioContext,this.audioOutput),c.source=o.source,c.isMuted=o.isMuted,c.setMediaStream(n),c.start(),o.setTrack(c),this.volumeMap.has(o.source)&&xs(c)&&_s(c)&&c.setVolume(this.volumeMap.get(o.source)),o}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(e){return this.trackPublications.get(e)}updateInfo(e){if(!super.updateInfo(e))return!1;let t=new Map,n=new Map;return e.tracks.forEach(e=>{let r=this.getTrackPublicationBySid(e.sid);if(r)r.updateInfo(e);else{let t=P.kindFromProto(e.type);if(!t)return;r=new su(t,e,this.signalClient.connectOptions?.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:this.loggerOptions?.loggerName}),r.updateInfo(e),n.set(e.sid,r);let i=Array.from(this.trackPublications.values()).find(e=>e.source===r?.source);i&&r.source!==P.Source.Unknown&&this.log.debug(`received a second track publication for ${this.identity} with the same source: ${r.source}`,Object.assign(Object.assign({},this.logContext),{oldTrack:uo(i),newTrack:uo(r)})),this.addTrackPublication(r)}t.set(e.sid,r)}),this.trackPublications.forEach(e=>{t.has(e.trackSid)||(this.log.trace(`detected removed track on remote participant, unpublishing`,Object.assign(Object.assign({},this.logContext),uo(e))),this.unpublishTrack(e.trackSid,!0))}),n.forEach(e=>{this.emit(j.TrackPublished,e)}),!0}unpublishTrack(e,t){let n=this.trackPublications.get(e);if(!n)return;let{track:r}=n;switch(r&&(r.stop(),n.setTrack(void 0)),this.trackPublications.delete(e),n.kind){case P.Kind.Audio:this.audioTrackPublications.delete(e);break;case P.Kind.Video:this.videoTrackPublications.delete(e);break}t&&this.emit(j.TrackUnpublished,n)}setAudioOutput(e){return k(this,void 0,void 0,function*(){this.audioOutput=e;let t=[];this.audioTrackPublications.forEach(n=>{_s(n.track)&&xs(n.track)&&t.push(n.track.setSinkId(e.deviceId??`default`))}),yield Promise.all(t)})}emit(e){var t=[...arguments].slice(1);return this.log.trace(`participant event`,Object.assign(Object.assign({},this.logContext),{event:e,args:t})),super.emit(e,...t)}},lu;(function(e){e.Disconnected=`disconnected`,e.Connecting=`connecting`,e.Connected=`connected`,e.Reconnecting=`reconnecting`,e.SignalReconnecting=`signalReconnecting`})(lu||={});var uu=4*1e3,du=class e extends di.EventEmitter{get hasE2EESetup(){return this.e2eeManager!==void 0}constructor(t){var n,r;if(super(),n=this,this.state=lu.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.isVideoPlaybackBlocked=!1,this.log=$r,this.bufferedEvents=[],this.isResuming=!1,this.rpcHandlers=new Map,this.connect=(e,t,n)=>k(this,void 0,void 0,function*(){if(!No())throw Uo()?Error(`WebRTC isn't detected, have you called registerGlobals?`):Error(`LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.`);let r=yield this.disconnectLock.lock();if(this.state===lu.Connected)return this.log.info(`already connected to room ${this.name}`,this.logContext),r(),Promise.resolve();if(this.connectFuture)return r(),this.connectFuture.promise;this.setAndEmitConnectionState(lu.Connecting),this.regionUrlProvider?.getServerUrl().toString()!==ks(e)&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),Wo(new URL(e))&&(this.regionUrlProvider===void 0?this.regionUrlProvider=new Vc(e,t):this.regionUrlProvider.updateToken(t),this.regionUrlProvider.fetchRegionSettings().then(e=>{var t;(t=this.regionUrlProvider)==null||t.setServerReportedRegions(e)}).catch(e=>{this.log.warn(`could not fetch region settings`,Object.assign(Object.assign({},this.logContext),{error:e}))}));let i=(a,o,s)=>k(this,void 0,void 0,function*(){this.abortController&&this.abortController.abort();let c=new AbortController;this.abortController=c,r?.();try{if(yield Ks.getInstance().getBackOffPromise(e),c.signal.aborted)throw Aa.cancelled(`Connection attempt aborted`);yield this.attemptConnection(s??e,t,n,c),this.abortController=void 0,a()}catch(t){if(this.regionUrlProvider&&t instanceof Aa&&t.reason!==ka.Cancelled&&t.reason!==ka.NotAllowed){let n=null;try{this.log.debug(`Fetching next region`),n=yield this.regionUrlProvider.getNextBestRegionUrl(this.abortController?.signal)}catch(e){if(e instanceof Aa&&(e.status===401||e.reason===ka.Cancelled)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),o(e);return}}[ka.InternalError,ka.ServerUnreachable,ka.Timeout].includes(t.reason)&&(this.log.debug(`Adding failed connection attempt to back off`),Ks.getInstance().addFailedConnectionAttempt(e)),n&&!this.abortController?.signal.aborted?(this.log.info(`Initial connection failed with ConnectionError: ${t.message}. Retrying with another region: ${n}`,this.logContext),this.recreateEngine(),yield i(a,o,n)):(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,ps(t)),o(t))}else{let e=Xt.UNKNOWN_REASON;t instanceof Aa&&(e=ps(t)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e),o(t)}}}),a=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new os((e,t)=>{i(e,t,a)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(e,t,n,r,i,a)=>k(this,void 0,void 0,function*(){let o=yield n.join(e,t,{autoSubscribe:r.autoSubscribe,adaptiveStream:typeof i.adaptiveStream==`object`?!0:i.adaptiveStream,maxRetries:r.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:r.websocketTimeout,singlePeerConnection:i.singlePeerConnection},a.signal),s=o.serverInfo;if(s||={version:o.serverVersion,region:o.serverRegion},this.serverInfo=s,this.log.debug(`connected to Livekit Server ${Object.entries(s).map(e=>{let[t,n]=e;return`${t}: ${n}`}).join(`, `)}`,{room:o.room?.name,roomSid:o.room?.sid,identity:o.participant?.identity}),!s.version)throw new Na(`unknown server version`);return s.version===`0.15.1`&&this.options.dynacast&&(this.log.debug(`disabling dynacast due to server version`,this.logContext),i.dynacast=!1),o}),this.applyJoinResponse=e=>{let t=e.participant;if(this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.localParticipant.setEnabledPublishCodecs(e.enabledPublishCodecs),this.e2eeManager)try{this.e2eeManager.setSifTrailer(e.sifTrailer)}catch(e){this.log.error(e instanceof Error?e.message:`Could not set SifTrailer`,Object.assign(Object.assign({},this.logContext),{error:e}))}this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room)},this.attemptConnection=(e,t,n,r)=>k(this,void 0,void 0,function*(){this.state===lu.Reconnecting||this.isResuming||this.engine?.pendingReconnect?(this.log.info(`Reconnection attempt replaced by new connection attempt`,this.logContext),this.recreateEngine()):this.maybeCreateEngine(),this.regionUrlProvider?.isCloud()&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},Ic),n),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let n=yield this.connectSignal(e,t,this.engine,this.connOptions,this.options,r);this.applyJoinResponse(n),this.setupLocalParticipantEvents(),this.emit(A.SignalConnected)}catch(e){yield this.engine.close(),this.recreateEngine();let t=r.signal.aborted?Aa.cancelled(`Signal connection aborted`):Aa.serverUnreachable(`could not establish signal connection`);throw e instanceof Error&&(t.message=`${t.message}: ${e.message}`),e instanceof Aa&&(t.reason=e.reason,t.status=e.status),this.log.debug(`error trying to establish signal connection`,Object.assign(Object.assign({},this.logContext),{error:e})),t}if(r.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),Aa.cancelled(`Connection attempt aborted`);try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,r)}catch(e){throw yield this.engine.close(),this.recreateEngine(),e}Ho()&&this.options.disconnectOnPageLeave&&(window.addEventListener(`pagehide`,this.onPageLeave),window.addEventListener(`beforeunload`,this.onPageLeave)),Ho()&&window.addEventListener(`freeze`,this.onPageLeave),this.setAndEmitConnectionState(lu.Connected),this.emit(A.Connected),Ks.getInstance().resetFailedConnectionAttempts(e),this.registerConnectionReconcile(),this.regionUrlProvider&&this.regionUrlProvider.notifyConnected()}),this.disconnect=function(){return k(n,[...arguments],void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var n,r,i;let a=yield e.disconnectLock.lock();try{if(e.state===lu.Disconnected){e.log.debug(`already disconnected`,e.logContext);return}if(e.log.info(`disconnect from room`,Object.assign({},e.logContext)),e.state===lu.Connecting||e.state===lu.Reconnecting||e.isResuming){let t=`Abort connection attempt due to user initiated disconnect`;e.log.warn(t,e.logContext),(n=e.abortController)==null||n.abort(t),(i=(r=e.connectFuture)?.reject)==null||i.call(r,Aa.cancelled(`Client initiated disconnect`)),e.connectFuture=void 0}e.engine&&(e.engine.client.isDisconnected||(yield e.engine.client.sendLeave()),yield e.engine.close()),e.handleDisconnect(t,Xt.CLIENT_INITIATED),e.engine=void 0}finally{a()}}()})},this.onPageLeave=()=>k(this,void 0,void 0,function*(){this.log.info(`Page leave detected, disconnecting`,this.logContext),yield this.disconnect()}),this.startAudio=()=>k(this,void 0,void 0,function*(){let e=[],t=Ca();if(t&&t.os===`iOS`){let t=`livekit-dummy-audio-el`,n=document.getElementById(t);if(!n){n=document.createElement(`audio`),n.id=t,n.autoplay=!0,n.hidden=!0;let e=as();e.enabled=!0;let r=new MediaStream([e]);n.srcObject=r,document.addEventListener(`visibilitychange`,()=>{n&&(n.srcObject=document.hidden?null:r,document.hidden||(this.log.debug(`page visible again, triggering startAudio to resume playback and update playback status`,this.logContext),this.startAudio()))}),document.body.append(n),this.once(A.Disconnected,()=>{n?.remove(),n=null})}e.push(n)}this.remoteParticipants.forEach(t=>{t.audioTrackPublications.forEach(t=>{t.track&&t.track.attachedElements.forEach(t=>{e.push(t)})})});try{yield Promise.all([this.acquireAudioContext(),...e.map(e=>(e.muted=!1,e.play()))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}),this.startVideo=()=>k(this,void 0,void 0,function*(){let e=[];for(let t of this.remoteParticipants.values())t.videoTrackPublications.forEach(t=>{var n;(n=t.track)==null||n.attachedElements.forEach(t=>{e.includes(t)||e.push(t)})});yield Promise.all(e.map(e=>e.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(e=>{e.name===`NotAllowedError`?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler",this.logContext)})}),this.handleRestarting=()=>{this.clearConnectionReconcile(),this.isResuming=!1;for(let e of this.remoteParticipants.values())this.handleParticipantDisconnected(e.identity,e);this.setAndEmitConnectionState(lu.Reconnecting)&&this.emit(A.Reconnecting)},this.handleSignalRestarted=e=>k(this,void 0,void 0,function*(){this.log.debug(`signal reconnected to server, region ${e.serverRegion}`,Object.assign(Object.assign({},this.logContext),{region:e.serverRegion})),this.bufferedEvents=[],this.applyJoinResponse(e);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(e){this.log.error(`error trying to re-publish tracks after reconnection`,Object.assign(Object.assign({},this.logContext),{error:e}))}try{yield this.engine.waitForRestarted(),this.log.debug(`fully reconnected to server`,Object.assign(Object.assign({},this.logContext),{region:e.serverRegion}))}catch{return}this.setAndEmitConnectionState(lu.Connected),this.emit(A.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=e=>{e.forEach(e=>{if(e.identity===this.localParticipant.identity){this.localParticipant.updateInfo(e);return}e.identity===``&&(e.identity=this.sidToIdentity.get(e.sid)??``);let t=this.remoteParticipants.get(e.identity);e.state===an.DISCONNECTED?this.handleParticipantDisconnected(e.identity,t):t=this.getOrCreateParticipant(e.identity,e)})},this.handleActiveSpeakersUpdate=e=>{let t=[],n={};e.forEach(e=>{if(n[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),t.push(this.localParticipant);else{let n=this.getRemoteParticipantBySid(e.sid);n&&(n.audioLevel=e.level,n.setIsSpeaking(!0),t.push(n))}}),n[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach(e=>{n[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))}),this.activeSpeakers=t,this.emitWhenConnected(A.ActiveSpeakersChanged,t)},this.handleSpeakersChanged=e=>{let t=new Map;this.activeSpeakers.forEach(e=>{let n=this.remoteParticipants.get(e.identity);n&&n.sid!==e.sid||t.set(e.sid,e)}),e.forEach(e=>{let n=this.getRemoteParticipantBySid(e.sid);e.sid===this.localParticipant.sid&&(n=this.localParticipant),n&&(n.audioLevel=e.level,n.setIsSpeaking(e.active),e.active?t.set(e.sid,n):t.delete(e.sid))});let n=Array.from(t.values());n.sort((e,t)=>t.audioLevel-e.audioLevel),this.activeSpeakers=n,this.emitWhenConnected(A.ActiveSpeakersChanged,n)},this.handleStreamStateUpdate=e=>{e.streamStates.forEach(e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);if(!n||!n.track)return;let r=P.streamStateFromProto(e.state);n.track.setStreamState(r),r!==n.track.streamState&&(t.emit(j.TrackStreamStateChanged,n,n.track.streamState),this.emitWhenConnected(A.TrackStreamStateChanged,n,n.track.streamState,t))})},this.handleSubscriptionPermissionUpdate=e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);n&&n.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{let t=Array.from(this.remoteParticipants.values()).find(t=>t.trackPublications.has(e.trackSid));if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);n&&n.setSubscriptionError(e.err)},this.handleDataPacket=(e,t)=>{let n=this.remoteParticipants.get(e.participantIdentity);if(e.value.case===`user`)this.handleUserPacket(n,e.value.value,e.kind,t);else if(e.value.case===`transcription`)this.handleTranscription(n,e.value.value);else if(e.value.case===`sipDtmf`)this.handleSipDtmf(n,e.value.value);else if(e.value.case===`chatMessage`)this.handleChatMessage(n,e.value.value);else if(e.value.case===`metrics`)this.handleMetrics(e.value.value,n);else if(e.value.case===`streamHeader`||e.value.case===`streamChunk`||e.value.case===`streamTrailer`)this.handleDataStream(e,t);else if(e.value.case===`rpcRequest`){let t=e.value.value;this.handleIncomingRpcRequest(e.participantIdentity,t.id,t.method,t.payload,t.responseTimeoutMs,t.version)}},this.handleUserPacket=(e,t,n,r)=>{this.emit(A.DataReceived,t.payload,e,n,t.topic,r),e?.emit(j.DataReceived,t.payload,n,r)},this.handleSipDtmf=(e,t)=>{this.emit(A.SipDTMFReceived,t,e),e?.emit(j.SipDTMFReceived,t)},this.handleTranscription=(e,t)=>{let n=t.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(t.transcribedParticipantIdentity),r=n?.trackPublications.get(t.trackId),i=ds(t,this.transcriptionReceivedTimes);r?.emit(N.TranscriptionReceived,i),n?.emit(j.TranscriptionReceived,i,r),this.emit(A.TranscriptionReceived,i,n,r)},this.handleChatMessage=(e,t)=>{let n=fs(t);this.emit(A.ChatMessage,n,e)},this.handleMetrics=(e,t)=>{this.emit(A.MetricsReceived,e,t)},this.handleDataStream=(e,t)=>{this.incomingDataStreamManager.handleDataStreamPacket(e,t)},this.bufferedSegments=new Map,this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(A.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=e=>{this.log.warn(`could not playback audio`,Object.assign(Object.assign({},this.logContext),{error:e})),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(A.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(A.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(A.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>k(this,void 0,void 0,function*(){Ca()?.os!==`iOS`&&(yield this.selectDefaultDevices()),this.emit(A.MediaDevicesChanged)}),this.handleRoomUpdate=e=>{let t=this.roomInfo;this.roomInfo=e,t&&t.metadata!==e.metadata&&this.emitWhenConnected(A.RoomMetadataChanged,e.metadata),t?.activeRecording!==e.activeRecording&&this.emitWhenConnected(A.RecordingStatusChanged,e.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach(e=>{if(e.participantSid===this.localParticipant.sid){this.localParticipant.setConnectionQuality(e.quality);return}let t=this.getRemoteParticipantBySid(e.participantSid);t&&t.setConnectionQuality(e.quality)})},this.onLocalParticipantMetadataChanged=e=>{this.emit(A.ParticipantMetadataChanged,e,this.localParticipant)},this.onLocalParticipantNameChanged=e=>{this.emit(A.ParticipantNameChanged,e,this.localParticipant)},this.onLocalAttributesChanged=e=>{this.emit(A.ParticipantAttributesChanged,e,this.localParticipant)},this.onLocalTrackMuted=e=>{this.emit(A.TrackMuted,e,this.localParticipant)},this.onLocalTrackUnmuted=e=>{this.emit(A.TrackUnmuted,e,this.localParticipant)},this.onTrackProcessorUpdate=e=>{var t;(t=e?.onPublish)==null||t.call(e,this)},this.onLocalTrackPublished=e=>k(this,void 0,void 0,function*(){var t,n,r,i;(t=e.track)==null||t.on(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(n=e.track)==null||n.on(N.Restarted,this.onLocalTrackRestarted),(i=(r=e.track?.getProcessor())?.onPublish)==null||i.call(r,this),this.emit(A.LocalTrackPublished,e,this.localParticipant),bs(e.track)&&(yield e.track.checkForSilence())&&this.emit(A.LocalAudioSilenceDetected,e);let a=yield e.track?.getDeviceId(!1),o=oo(e.source);o&&a&&a!==this.localParticipant.activeDeviceMap.get(o)&&(this.localParticipant.activeDeviceMap.set(o,a),this.emit(A.ActiveDeviceChanged,o,a))}),this.onLocalTrackUnpublished=e=>{var t,n;(t=e.track)==null||t.off(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(n=e.track)==null||n.off(N.Restarted,this.onLocalTrackRestarted),this.emit(A.LocalTrackUnpublished,e,this.localParticipant)},this.onLocalTrackRestarted=e=>k(this,void 0,void 0,function*(){let t=yield e.getDeviceId(!1),n=oo(e.source);n&&t&&t!==this.localParticipant.activeDeviceMap.get(n)&&(this.log.debug(`local track restarted, setting ${n} ${t} active`,this.logContext),this.localParticipant.activeDeviceMap.set(n,t),this.emit(A.ActiveDeviceChanged,n,t))}),this.onLocalConnectionQualityChanged=e=>{this.emit(A.ConnectionQualityChanged,e,this.localParticipant)},this.onMediaDevicesError=(e,t)=>{this.emit(A.MediaDevicesError,e,t)},this.onLocalParticipantPermissionsChanged=e=>{this.emit(A.ParticipantPermissionsChanged,e,this.localParticipant)},this.onLocalChatMessageSent=e=>{this.emit(A.ChatMessage,e,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},Fc),t),this.log=ei(this.options.loggerName??Qr.Room),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},Nc),t?.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},Pc),t?.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},Mc),t?.publishDefaults),this.maybeCreateEngine(),this.incomingDataStreamManager=new zl,this.outgoingDataStreamManager=new Wl(this.engine,this.log),this.disconnectLock=new _,this.localParticipant=new ou(``,``,this.engine,this.options,this.rpcHandlers,this.outgoingDataStreamManager),(this.options.e2ee||this.options.encryption)&&this.setupE2EE(),this.engine.e2eeManager=this.e2eeManager,this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set(`videoinput`,cs(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set(`audioinput`,cs(this.options.audioCaptureDefaults.deviceId)),this.options.audioOutput?.deviceId&&this.switchActiveDevice(`audiooutput`,cs(this.options.audioOutput.deviceId)).catch(e=>this.log.warn(`Could not set audio output: ${e.message}`,this.logContext)),Ho()){let t=new AbortController;(r=navigator.mediaDevices)==null||r.addEventListener(`devicechange`,this.handleDeviceChange,{signal:t.signal}),e.cleanupRegistry&&e.cleanupRegistry.register(this,()=>{t.abort()})}}registerTextStreamHandler(e,t){return this.incomingDataStreamManager.registerTextStreamHandler(e,t)}unregisterTextStreamHandler(e){return this.incomingDataStreamManager.unregisterTextStreamHandler(e)}registerByteStreamHandler(e,t){return this.incomingDataStreamManager.registerByteStreamHandler(e,t)}unregisterByteStreamHandler(e){return this.incomingDataStreamManager.unregisterByteStreamHandler(e)}registerRpcMethod(e,t){if(this.rpcHandlers.has(e))throw Error(`RPC handler already registered for method ${e}, unregisterRpcMethod before trying to register again`);this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}setE2EEEnabled(e){return k(this,void 0,void 0,function*(){if(this.e2eeManager)yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),this.localParticipant.identity!==``&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity);else throw Error(`e2ee not configured, please set e2ee settings within the room options`)})}setupE2EE(){var e;let t=!!this.options.encryption,n=this.options.encryption||this.options.e2ee;n&&(`e2eeManager`in n?(this.e2eeManager=n.e2eeManager,this.e2eeManager.isDataChannelEncryptionEnabled=t):this.e2eeManager=new Us(n,t),this.e2eeManager.on(Is.ParticipantEncryptionStatusChanged,(e,t)=>{ws(t)&&(this.isE2EEEnabled=e),this.emit(A.ParticipantEncryptionStatusChanged,e,t)}),this.e2eeManager.on(Is.EncryptionError,(e,t)=>{let n=t?this.getParticipantByIdentity(t):void 0;this.emit(A.EncryptionError,e,n)}),(e=this.e2eeManager)==null||e.setup(this))}get logContext(){return{room:this.name,roomID:this.roomInfo?.sid,participant:this.localParticipant.identity,pID:this.localParticipant.sid}}get isRecording(){return this.roomInfo?.activeRecording??!1}getSid(){return k(this,void 0,void 0,function*(){return this.state===lu.Disconnected?``:this.roomInfo&&this.roomInfo.sid!==``?this.roomInfo.sid:new Promise((e,t)=>{let n=t=>{t.sid!==``&&(this.engine.off(M.RoomUpdate,n),e(t.sid))};this.engine.on(M.RoomUpdate,n),this.once(A.Disconnected,()=>{this.engine.off(M.RoomUpdate,n),t(`Room disconnected before room server id was available`)})})})}get name(){return this.roomInfo?.name??``}get metadata(){return this.roomInfo?.metadata}get numParticipants(){return this.roomInfo?.numParticipants??0}get numPublishers(){return this.roomInfo?.numPublishers??0}maybeCreateEngine(){this.engine&&!this.engine.isClosed||(this.engine=new Nl(this.options),this.engine.e2eeManager=this.e2eeManager,this.engine.on(M.ParticipantUpdate,this.handleParticipantUpdates).on(M.RoomUpdate,this.handleRoomUpdate).on(M.SpeakersChanged,this.handleSpeakersChanged).on(M.StreamStateChanged,this.handleStreamStateUpdate).on(M.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(M.SubscriptionError,this.handleSubscriptionError).on(M.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(M.MediaTrackAdded,(e,t,n)=>{this.onTrackAdded(e,t,n)}).on(M.Disconnected,e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)}).on(M.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(M.DataPacketReceived,this.handleDataPacket).on(M.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.info(`Resuming signal connection`,this.logContext),this.setAndEmitConnectionState(lu.SignalReconnecting)&&this.emit(A.SignalReconnecting)}).on(M.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.info(`Resumed signal connection`,this.logContext),this.updateSubscriptions(),this.emitBufferedEvents(),this.setAndEmitConnectionState(lu.Connected)&&this.emit(A.Reconnected)}).on(M.SignalResumed,()=>{this.bufferedEvents=[],(this.state===lu.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(M.Restarting,this.handleRestarting).on(M.SignalRestarted,this.handleSignalRestarted).on(M.Offline,()=>{this.setAndEmitConnectionState(lu.Reconnecting)&&this.emit(A.Reconnecting)}).on(M.DCBufferStatusChanged,(e,t)=>{this.emit(A.DCBufferStatusChanged,e,t)}).on(M.LocalTrackSubscribed,e=>{let t=this.localParticipant.getTrackPublications().find(t=>{let{trackSid:n}=t;return n===e});if(!t){this.log.warn(`could not find local track subscription for subscribed event`,this.logContext);return}this.localParticipant.emit(j.LocalTrackSubscribed,t),this.emitWhenConnected(A.LocalTrackSubscribed,t,this.localParticipant)}).on(M.RoomMoved,e=>{this.log.debug(`room moved`,e),e.room&&this.handleRoomUpdate(e.room),this.remoteParticipants.forEach((e,t)=>{this.handleParticipantDisconnected(t,e)}),this.emit(A.Moved,e.room.name),e.participant?this.handleParticipantUpdates([e.participant,...e.otherParticipants]):this.handleParticipantUpdates(e.otherParticipants)}),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine),this.outgoingDataStreamManager&&this.outgoingDataStreamManager.setupEngine(this.engine))}static getLocalDevices(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Js.getInstance().getDevices(e,t)}prepareConnection(e,t){return k(this,void 0,void 0,function*(){if(this.state===lu.Disconnected){this.log.debug(`prepareConnection to ${e}`,this.logContext);try{if(Wo(new URL(e))&&t){this.regionUrlProvider=new Vc(e,t);let n=yield this.regionUrlProvider.getNextBestRegionUrl();n&&this.state===lu.Disconnected&&(this.regionUrl=n,yield fetch(us(n),{method:`HEAD`}),this.log.debug(`prepared connection to ${n}`,this.logContext))}else yield fetch(us(e),{method:`HEAD`})}catch(e){this.log.warn(`could not prepare connection`,Object.assign(Object.assign({},this.logContext),{error:e}))}}})}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return k(this,void 0,void 0,function*(){let n=()=>k(this,void 0,void 0,function*(){}),r;switch(e){case`signal-reconnect`:yield this.engine.client.handleOnClose(`simulate disconnect`);break;case`speaker`:r=new jr({scenario:{case:`speakerUpdate`,value:3}});break;case`node-failure`:r=new jr({scenario:{case:`nodeFailure`,value:!0}});break;case`server-leave`:r=new jr({scenario:{case:`serverLeave`,value:!0}});break;case`migration`:r=new jr({scenario:{case:`migration`,value:!0}});break;case`resume-reconnect`:this.engine.failNext(),yield this.engine.client.handleOnClose(`simulate resume-disconnect`);break;case`disconnect-signal-on-resume`:n=()=>k(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose(`simulate resume-disconnect`)}),r=new jr({scenario:{case:`disconnectSignalOnResume`,value:!0}});break;case`disconnect-signal-on-resume-no-messages`:n=()=>k(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose(`simulate resume-disconnect`)}),r=new jr({scenario:{case:`disconnectSignalOnResumeNoMessages`,value:!0}});break;case`full-reconnect`:this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose(`simulate full-reconnect`);break;case`force-tcp`:case`force-tls`:r=new jr({scenario:{case:`switchCandidateProtocol`,value:e===`force-tls`?2:1}}),n=()=>k(this,void 0,void 0,function*(){let e=this.engine.client.onLeave;e&&e(new lr({reason:Xt.CLIENT_INITIATED,action:ur.RECONNECT}))});break;case`subscriber-bandwidth`:if(t===void 0||typeof t!=`number`)throw Error(`subscriber-bandwidth requires a number as argument`);r=new jr({scenario:{case:`subscriberBandwidth`,value:hs(t)}});break;case`leave-full-reconnect`:r=new jr({scenario:{case:`leaveRequestFullReconnect`,value:!0}})}r&&(yield this.engine.client.sendSimulateScenario(r),yield n())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return function*(){var i,a;let o=!0,s=!1,c=r?{exact:t}:t;if(e===`audioinput`){s=n.localParticipant.audioTrackPublications.size===0;let t=n.getActiveDevice(e)??n.options.audioCaptureDefaults.deviceId;n.options.audioCaptureDefaults.deviceId=c;let r=Array.from(n.localParticipant.audioTrackPublications.values()).filter(e=>e.source===P.Source.Microphone);try{o=(yield Promise.all(r.map(e=>e.audioTrack?.setDeviceId(c)))).every(e=>e===!0)}catch(e){throw n.options.audioCaptureDefaults.deviceId=t,e}let i=r.some(e=>e.track?.isMuted??!1);o&&i&&(s=!0)}else if(e===`videoinput`){s=n.localParticipant.videoTrackPublications.size===0;let t=n.getActiveDevice(e)??n.options.videoCaptureDefaults.deviceId;n.options.videoCaptureDefaults.deviceId=c;let r=Array.from(n.localParticipant.videoTrackPublications.values()).filter(e=>e.source===P.Source.Camera);try{o=(yield Promise.all(r.map(e=>e.videoTrack?.setDeviceId(c)))).every(e=>e===!0)}catch(e){throw n.options.videoCaptureDefaults.deviceId=t,e}let i=r.some(e=>e.track?.isMuted??!1);o&&i&&(s=!0)}else if(e===`audiooutput`){if(s=!0,!Mo()&&!n.options.webAudioMix||n.options.webAudioMix&&n.audioContext&&!(`setSinkId`in n.audioContext))throw Error(`cannot switch audio output, the current browser does not support it`);n.options.webAudioMix&&(t=(yield Js.getInstance().normalizeDeviceId(`audiooutput`,t))??``),(a=n.options).audioOutput??(a.audioOutput={});let r=n.getActiveDevice(e)??n.options.audioOutput.deviceId;n.options.audioOutput.deviceId=t;try{n.options.webAudioMix&&((i=n.audioContext)==null||i.setSinkId(t)),yield Promise.all(Array.from(n.remoteParticipants.values()).map(e=>e.setAudioOutput({deviceId:t})))}catch(e){throw n.options.audioOutput.deviceId=r,e}}return s&&(n.localParticipant.activeDeviceMap.set(e,t),n.emit(A.ActiveDeviceChanged,e,t)),o}()})}setupLocalParticipantEvents(){this.localParticipant.on(j.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(j.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(j.AttributesChanged,this.onLocalAttributesChanged).on(j.TrackMuted,this.onLocalTrackMuted).on(j.TrackUnmuted,this.onLocalTrackUnmuted).on(j.LocalTrackPublished,this.onLocalTrackPublished).on(j.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(j.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(j.MediaDevicesError,this.onMediaDevicesError).on(j.AudioStreamAcquired,this.startAudio).on(j.ChatMessage,this.onLocalChatMessageSent).on(j.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;(e=this.engine)==null||e.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,n){if(this.state===lu.Connecting||this.state===lu.Reconnecting){let r=()=>{this.log.debug(`deferring on track for later`,{mediaTrackId:e.id,mediaStreamId:t.id,tracksInStream:t.getTracks().map(e=>e.id)}),this.onTrackAdded(e,t,n),i()},i=()=>{this.off(A.Reconnected,r),this.off(A.Connected,r),this.off(A.Disconnected,i)};this.once(A.Reconnected,r),this.once(A.Connected,r),this.once(A.Disconnected,i);return}if(this.state===lu.Disconnected){this.log.warn(`skipping incoming track after Room disconnected`,this.logContext);return}if(e.readyState===`ended`){this.log.info(`skipping incoming track as it already ended`,this.logContext);return}let r=To(t.id),i=r[0],a=r[1],o=e.id;if(a&&a.startsWith(`TR`)&&(o=a),i===this.localParticipant.sid){this.log.warn(`tried to create RemoteParticipant for local participant`,this.logContext);return}let s=Array.from(this.remoteParticipants.values()).find(e=>e.sid===i);if(!s){this.log.error(`Tried to add a track for a participant, that's not present. Sid: ${i}`,this.logContext);return}if(!o.startsWith(`TR`)){let e=this.engine.getTrackIdForReceiver(n);if(!e){this.log.error(`Tried to add a track whose 'sid' could not be found for a participant, that's not present. Sid: ${i}`,this.logContext);return}o=e}o.startsWith(`TR`)||this.log.warn(`Tried to add a track whose 'sid' could not be determined for a participant, that's not present. Sid: ${i}, streamId: ${a}, trackId: ${o}`,Object.assign(Object.assign({},this.logContext),{rpID:i,streamId:a,trackId:o}));let c;this.options.adaptiveStream&&(c=typeof this.options.adaptiveStream==`object`?this.options.adaptiveStream:{});let l=s.addSubscribedMediaTrack(e,o,t,n,c);l?.isEncrypted&&!this.e2eeManager&&this.emit(A.EncryptionError,Error(`Encrypted ${l.source} track received from participant ${s.sid}, but room does not have encryption enabled!`))}handleDisconnect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1?arguments[1]:void 0;var n;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.incomingDataStreamManager.clearControllers(),this.state!==lu.Disconnected){this.regionUrl=void 0,this.regionUrlProvider&&this.regionUrlProvider.notifyDisconnected();try{this.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{e.unpublishTrack(t.trackSid)})}),this.localParticipant.trackPublications.forEach(t=>{var n,r,i;t.track&&this.localParticipant.unpublishTrack(t.track,e),e?((n=t.track)==null||n.detach(),(r=t.track)==null||r.stop()):(i=t.track)==null||i.stopMonitor()}),this.localParticipant.off(j.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(j.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(j.AttributesChanged,this.onLocalAttributesChanged).off(j.TrackMuted,this.onLocalTrackMuted).off(j.TrackUnmuted,this.onLocalTrackUnmuted).off(j.LocalTrackPublished,this.onLocalTrackPublished).off(j.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(j.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(j.MediaDevicesError,this.onMediaDevicesError).off(j.AudioStreamAcquired,this.startAudio).off(j.ChatMessage,this.onLocalChatMessageSent).off(j.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&typeof this.options.webAudioMix==`boolean`&&(this.audioContext.close(),this.audioContext=void 0),Ho()&&(window.removeEventListener(`beforeunload`,this.onPageLeave),window.removeEventListener(`pagehide`,this.onPageLeave),window.removeEventListener(`freeze`,this.onPageLeave),(n=navigator.mediaDevices)==null||n.removeEventListener(`devicechange`,this.handleDeviceChange))}finally{this.setAndEmitConnectionState(lu.Disconnected),this.emit(A.Disconnected,t)}}}handleParticipantDisconnected(e,t){var n;this.remoteParticipants.delete(e),t&&(this.incomingDataStreamManager.validateParticipantHasNoActiveDataStreams(e),t.trackPublications.forEach(e=>{t.unpublishTrack(e.trackSid,!0)}),this.emit(A.ParticipantDisconnected,t),t.setDisconnected(),(n=this.localParticipant)==null||n.handleParticipantDisconnected(t.identity))}handleIncomingRpcRequest(e,t,n,r,i,a){return k(this,void 0,void 0,function*(){if(yield this.engine.publishRpcAck(e,t),a!==1){yield this.engine.publishRpcResponse(e,t,null,Uc.builtIn(`UNSUPPORTED_VERSION`));return}let o=this.rpcHandlers.get(n);if(!o){yield this.engine.publishRpcResponse(e,t,null,Uc.builtIn(`UNSUPPORTED_METHOD`));return}let s=null,c=null;try{let a=yield o({requestId:t,callerIdentity:e,payload:r,responseTimeout:i});Gc(a)>Wc?(s=Uc.builtIn(`RESPONSE_PAYLOAD_TOO_LARGE`),this.log.warn(`RPC Response payload too large for ${n}`)):c=a}catch(e){e instanceof Uc?s=e:(this.log.warn(`Uncaught error returned by RPC handler for ${n}. Returning APPLICATION_ERROR instead.`,e),s=Uc.builtIn(`APPLICATION_ERROR`))}yield this.engine.publishRpcResponse(e,t,c,s)})}selectDefaultDevices(){return k(this,void 0,void 0,function*(){let e=Js.getInstance().previousDevices,t=yield Js.getInstance().getDevices(void 0,!1),n=Ca();if(n?.name===`Chrome`&&n.os!==`iOS`)for(let n of t){let t=e.find(e=>e.deviceId===n.deviceId);t&&t.label!==``&&t.kind===n.kind&&t.label!==n.label&&this.getActiveDevice(n.kind)===`default`&&this.emit(A.ActiveDeviceChanged,n.kind,n.deviceId)}for(let n of[`audiooutput`,`audioinput`,`videoinput`]){let r=ao(n),i=this.localParticipant.getTrackPublication(r);if(i&&i.track?.isUserProvided)continue;let a=t.filter(e=>e.kind===n),o=this.getActiveDevice(n);if(o===e.filter(e=>e.kind===n)[0]?.deviceId&&a.length>0&&a[0]?.deviceId!==o){yield this.switchActiveDevice(n,a[0].deviceId);continue}n===`audioinput`&&!Lo()||n===`videoinput`||a.length>0&&!a.find(e=>e.deviceId===this.getActiveDevice(n))&&(n!==`audiooutput`||!Lo())&&(yield this.switchActiveDevice(n,a[0].deviceId))}})}acquireAudioContext(){return k(this,void 0,void 0,function*(){if(typeof this.options.webAudioMix!=`boolean`&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:(!this.audioContext||this.audioContext.state===`closed`)&&(this.audioContext=io()??void 0),this.options.webAudioMix&&this.remoteParticipants.forEach(e=>e.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext),this.audioContext&&this.audioContext.state===`suspended`)try{yield Promise.race([this.audioContext.resume(),Eo(200)])}catch(e){this.log.warn(`Could not resume audio context`,Object.assign(Object.assign({},this.logContext),{error:e}))}let e=this.audioContext?.state===`running`;e!==this.canPlaybackAudio&&(this.audioEnabled=e,this.emit(A.AudioPlaybackStatusChanged,e))})}createParticipant(e,t){let n;return n=t?cu.fromParticipantInfo(this.engine.client,t,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}):new cu(this.engine.client,``,e,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&n.setAudioContext(this.audioContext),this.options.audioOutput?.deviceId&&n.setAudioOutput(this.options.audioOutput).catch(e=>this.log.warn(`Could not set audio output: ${e.message}`,this.logContext)),n}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){let n=this.remoteParticipants.get(e);return t&&n.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),n}let n=this.createParticipant(e,t);return this.remoteParticipants.set(e,n),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(A.ParticipantConnected,n),n.on(j.TrackPublished,e=>{this.emitWhenConnected(A.TrackPublished,e,n)}).on(j.TrackSubscribed,(e,t)=>{e.kind===P.Kind.Audio?(e.on(N.AudioPlaybackStarted,this.handleAudioPlaybackStarted),e.on(N.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):e.kind===P.Kind.Video&&(e.on(N.VideoPlaybackFailed,this.handleVideoPlaybackFailed),e.on(N.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emit(A.TrackSubscribed,e,t,n)}).on(j.TrackUnpublished,e=>{this.emit(A.TrackUnpublished,e,n)}).on(j.TrackUnsubscribed,(e,t)=>{this.emit(A.TrackUnsubscribed,e,t,n)}).on(j.TrackMuted,e=>{this.emitWhenConnected(A.TrackMuted,e,n)}).on(j.TrackUnmuted,e=>{this.emitWhenConnected(A.TrackUnmuted,e,n)}).on(j.ParticipantMetadataChanged,e=>{this.emitWhenConnected(A.ParticipantMetadataChanged,e,n)}).on(j.ParticipantNameChanged,e=>{this.emitWhenConnected(A.ParticipantNameChanged,e,n)}).on(j.AttributesChanged,e=>{this.emitWhenConnected(A.ParticipantAttributesChanged,e,n)}).on(j.ConnectionQualityChanged,e=>{this.emitWhenConnected(A.ConnectionQualityChanged,e,n)}).on(j.ParticipantPermissionsChanged,e=>{this.emitWhenConnected(A.ParticipantPermissionsChanged,e,n)}).on(j.TrackSubscriptionStatusChanged,(e,t)=>{this.emitWhenConnected(A.TrackSubscriptionStatusChanged,e,t,n)}).on(j.TrackSubscriptionFailed,(e,t)=>{this.emit(A.TrackSubscriptionFailed,e,n,t)}).on(j.TrackSubscriptionPermissionChanged,(e,t)=>{this.emitWhenConnected(A.TrackSubscriptionPermissionChanged,e,t,n)}).on(j.Active,()=>{this.emitWhenConnected(A.ParticipantActive,n),n.kind===on.AGENT&&this.localParticipant.setActiveAgent(n)}),t&&n.updateInfo(t),n}sendSyncState(){let e=Array.from(this.remoteParticipants.values()).reduce((e,t)=>(e.push(...t.getTrackPublications()),e),[]),t=this.localParticipant.getTrackPublications();this.engine.sendSyncState(e,t)}updateSubscriptions(){for(let e of this.remoteParticipants.values())for(let t of e.videoTrackPublications.values())t.isSubscribed&&Ss(t)&&t.emitTrackUpdate()}getRemoteParticipantBySid(e){let t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=Ha.setInterval(()=>{!this.engine||this.engine.isClosed||!this.engine.verifyTransport()?(e++,this.log.warn(`detected connection state mismatch`,Object.assign(Object.assign({},this.logContext),{numFailures:e,engine:this.engine?{closed:this.engine.isClosed,transportsConnected:this.engine.verifyTransport()}:void 0})),e>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,Xt.STATE_MISMATCH))):e=0},uu)}clearConnectionReconcile(){this.connectionReconcileInterval&&Ha.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(e){return e===this.state?!1:(this.state=e,this.emit(A.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(e=>{let[t,n]=e;this.emit(t,...n)}),this.bufferedEvents=[]}emitWhenConnected(e){var t=[...arguments].slice(1);if(this.state===lu.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([e,t]);else if(this.state===lu.Connected)return this.emit(e,...t);return!1}simulateParticipants(e){return k(this,void 0,void 0,function*(){let t=Object.assign({audio:!0,video:!0,useRealTracks:!1},e.publish),n=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},e.participants);if(this.handleDisconnect(),this.roomInfo=new en({sid:`RM_SIMULATED`,name:`simulated-room`,emptyTimeout:0,maxParticipants:0,creationTime:xe.parse(new Date().getTime()),metadata:``,numParticipants:1,numPublishers:1,turnPassword:``,enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new rn({identity:`simulated-local`,name:`local-name`})),this.setupLocalParticipantEvents(),this.emit(A.SignalConnected),this.emit(A.Connected),this.setAndEmitConnectionState(lu.Connected),t.video){let e=new $l(P.Kind.Video,new un({source:Kt.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO,name:`video-dummy`}),new xl(t.useRealTracks?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:rs(160*(n.aspectRatios[0]??1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(j.LocalTrackPublished,e)}if(t.audio){let e=new $l(P.Kind.Audio,new un({source:Kt.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO}),new nl(t.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:as(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(j.LocalTrackPublished,e)}for(let e=0;e<n.count-1;e+=1){let t=new rn({sid:Math.floor(Math.random()*1e4).toString(),identity:`simulated-${e}`,state:an.ACTIVE,tracks:[],joinedAt:xe.parse(Date.now())}),r=this.getOrCreateParticipant(t.identity,t);if(n.video){let i=rs(160*(n.aspectRatios[e%n.aspectRatios.length]??1),160,!1,!0),a=new un({source:Kt.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO});r.addSubscribedMediaTrack(i,a.sid,new MediaStream([i]),new RTCRtpReceiver),t.tracks=[...t.tracks,a]}if(n.audio){let e=as(),n=new un({source:Kt.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO});r.addSubscribedMediaTrack(e,n.sid,new MediaStream([e]),new RTCRtpReceiver),t.tracks=[...t.tracks,n]}r.updateInfo(t)}})}emit(e){var t=[...arguments].slice(1);if(e!==A.ActiveSpeakersChanged&&e!==A.TranscriptionReceived){let n=fu(t).filter(e=>e!==void 0);(e===A.TrackSubscribed||e===A.TrackUnsubscribed)&&this.log.trace(`subscribe trace: ${e}`,Object.assign(Object.assign({},this.logContext),{event:e,args:n})),this.log.debug(`room event ${e}`,Object.assign(Object.assign({},this.logContext),{event:e,args:n}))}return super.emit(e,...t)}};du.cleanupRegistry=typeof FinalizationRegistry<`u`&&new FinalizationRegistry(e=>{e()});function fu(e){return e.map(e=>{if(e)return Array.isArray(e)?fu(e):typeof e==`object`?`logContext`in e?e.logContext:void 0:e})}var pu;(function(e){e[e.IDLE=0]=`IDLE`,e[e.RUNNING=1]=`RUNNING`,e[e.SKIPPED=2]=`SKIPPED`,e[e.SUCCESS=3]=`SUCCESS`,e[e.FAILED=4]=`FAILED`})(pu||={}),di.EventEmitter,di.EventEmitter;function mu(e,t,n){return(t=gu(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hu(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function gu(e){var t=hu(e,`string`);return typeof t==`symbol`?t:t+``}new TextEncoder,new TextDecoder;var _u=class extends Error{constructor(e,t){var n;super(e,t),mu(this,`code`,`ERR_JOSE_GENERIC`),this.name=this.constructor.name,(n=Error.captureStackTrace)==null||n.call(Error,this,this.constructor)}};mu(_u,`code`,`ERR_JOSE_GENERIC`),mu(class extends _u{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`unspecified`,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`unspecified`;super(e,{cause:{claim:n,reason:r,payload:t}}),mu(this,`code`,`ERR_JWT_CLAIM_VALIDATION_FAILED`),mu(this,`claim`,void 0),mu(this,`reason`,void 0),mu(this,`payload`,void 0),this.claim=n,this.reason=r,this.payload=t}},`code`,`ERR_JWT_CLAIM_VALIDATION_FAILED`),mu(class extends _u{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`unspecified`,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`unspecified`;super(e,{cause:{claim:n,reason:r,payload:t}}),mu(this,`code`,`ERR_JWT_EXPIRED`),mu(this,`claim`,void 0),mu(this,`reason`,void 0),mu(this,`payload`,void 0),this.claim=n,this.reason=r,this.payload=t}},`code`,`ERR_JWT_EXPIRED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JOSE_ALG_NOT_ALLOWED`)}},`code`,`ERR_JOSE_ALG_NOT_ALLOWED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JOSE_NOT_SUPPORTED`)}},`code`,`ERR_JOSE_NOT_SUPPORTED`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`decryption operation failed`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWE_DECRYPTION_FAILED`)}},`code`,`ERR_JWE_DECRYPTION_FAILED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWE_INVALID`)}},`code`,`ERR_JWE_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWS_INVALID`)}},`code`,`ERR_JWS_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWT_INVALID`)}},`code`,`ERR_JWT_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWK_INVALID`)}},`code`,`ERR_JWK_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWKS_INVALID`)}},`code`,`ERR_JWKS_INVALID`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`no applicable key found in the JSON Web Key Set`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWKS_NO_MATCHING_KEY`)}},`code`,`ERR_JWKS_NO_MATCHING_KEY`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`multiple matching keys found in the JSON Web Key Set`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,Symbol.asyncIterator,void 0),mu(this,`code`,`ERR_JWKS_MULTIPLE_MATCHING_KEYS`)}},`code`,`ERR_JWKS_MULTIPLE_MATCHING_KEYS`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`request timed out`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWKS_TIMEOUT`)}},`code`,`ERR_JWKS_TIMEOUT`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`signature verification failed`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`)}},`code`,`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`);var vu=`conversation_initiation_client_data`;function yu(e){let t={type:vu};return e.overrides&&(t.conversation_config_override={agent:{prompt:e.overrides.agent?.prompt,first_message:e.overrides.agent?.firstMessage,language:e.overrides.agent?.language},tts:{voice_id:e.overrides.tts?.voiceId,speed:e.overrides.tts?.speed,stability:e.overrides.tts?.stability,similarity_boost:e.overrides.tts?.similarityBoost},conversation:{text_only:e.overrides.conversation?.textOnly}}),e.customLlmExtraBody&&(t.custom_llm_extra_body=e.customLlmExtraBody),e.dynamicVariables&&(t.dynamic_variables=e.dynamicVariables),e.userId&&(t.user_id=e.userId),t.source_info={source:c.name,version:c.version},e.toolMockConfig&&(t.tool_mock_config={mocking_strategy:e.toolMockConfig.mockingStrategy,mocked_tool_names:e.toolMockConfig.mockedToolNames,fallback_strategy:e.toolMockConfig.fallbackStrategy}),t}function bu(e){let t=new Uint8Array(e);return btoa(String.fromCharCode(...t))}function xu(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var Su={getVolume:()=>0,getByteFrequencyData:()=>{}},Cu=8e3;function wu(e,t,n){let r=e.length,i=n/2/r,a=Math.floor(100/i),o=Math.min(Math.ceil(Cu/i),r),s=o-a,c=t.length;for(let n=0;n<c;n++){let r=n/c*s,i=a+Math.floor(r),l=Math.min(i+1,o-1),u=r-Math.floor(r);t[n]=Math.round(e[i]*(1-u)+e[l]*u)}}var Tu;function Eu(e){Tu=e}function Du(){return Tu?.()??null}var Ou=`wss://livekit.rtc.elevenlabs.io`,ku=`https://api.elevenlabs.io`,Au=.01;function ju(e){return e.replace(/^wss:\/\//,`https://`)}var Mu=class t extends u{conversationId;inputFormat;outputFormat;room;isConnected=!1;audioEventId=1;outputDeviceId=null;audioAdapter;inputAnalyser=void 0;inputVolumeProvider=Su;outputAnalyser=void 0;outputVolumeProvider=Su;_isMuted=!1;input={close:async()=>{if(this.isConnected)try{this.room.localParticipant.audioTrackPublications.forEach(e=>{e.track&&e.track.stop()})}catch(e){console.warn(`Error stopping local tracks:`,e)}},setDevice:async e=>{if(e?.sampleRate!==void 0||e?.format!==void 0||e?.preferHeadphonesForIosDevices!==void 0)throw Error(`WebRTC input device does not support sampleRate, format, or preferHeadphonesForIosDevices options`);let t=e?.inputDeviceId;t&&await this.setAudioInputDevice(t)},setMuted:async e=>{if(!this.isConnected||!this.room.localParticipant){console.warn(`Cannot set microphone muted: room not connected or no local participant`);return}this._isMuted=e;let t=this.room.localParticipant.getTrackPublication(P.Source.Microphone);if(t?.track)try{e?await t.track.mute():await t.track.unmute()}catch{await this.room.localParticipant.setMicrophoneEnabled(!e)}else await this.room.localParticipant.setMicrophoneEnabled(!e);if(!e){let e=this.room.localParticipant.getTrackPublication(P.Source.Microphone)?.track;e&&this.setupInputAnalyser(e.mediaStreamTrack)}},isMuted:()=>this._isMuted,getAnalyser:()=>this.inputAnalyser,getVolume:()=>this._isMuted?0:this.inputVolumeProvider.getVolume(),getByteFrequencyData:e=>{if(this._isMuted){e.fill(0);return}this.inputVolumeProvider.getByteFrequencyData(e)}};output={close:async()=>{},setDevice:async e=>{if(e?.sampleRate!==void 0||e?.format!==void 0)throw Error(`WebRTC output device does not support sampleRate or format options`);let t=e?.outputDeviceId;t&&await this.setAudioOutputDevice(t)},setVolume:e=>{this.setAudioVolume(e)},interrupt:e=>{},getAnalyser:()=>this.outputAnalyser,getVolume:()=>this.outputVolumeProvider.getVolume(),getByteFrequencyData:e=>{this.outputVolumeProvider.getByteFrequencyData(e)}};constructor(e,t,n,r,i={}){super(i),this.room=e,this.conversationId=t,this.inputFormat=n,this.outputFormat=r,this.audioAdapter=Du(),this.setupRoomEventListeners()}static async create(r){let i;if(`conversationToken`in r&&r.conversationToken)i=r.conversationToken;else if(`agentId`in r&&r.agentId)try{let{name:t,version:a}=c,o=`${ju(r.origin??ku)}/v1/convai/conversation/token?agent_id=${r.agentId}&source=${t}&version=${a}`;r.environment&&(o+=`&environment=${encodeURIComponent(r.environment)}`);let s=await fetch(o);if(!s.ok){let e=await n(s);throw Error(`ElevenLabs API returned ${s.status} ${e}`)}let l=await s.json();if(!e(l)||typeof l.token!=`string`||(i=l.token,!i))throw Error(`No conversation token received from API`)}catch(e){let t=e instanceof Error?e.message:String(e);throw e instanceof Error&&e.message.includes(`401`)&&(t=`Your agent has authentication enabled, but no signed URL or conversation token was provided.`),Error(`Failed to fetch conversation token for agent ${r.agentId}: ${t}`)}else throw Error(`Either conversationToken or agentId is required for WebRTC connection`);let a=new du({singlePeerConnection:!1});try{let e=new t(a,`room_${Date.now()}`,d(`pcm_48000`),d(`pcm_48000`),r),n=r.livekitUrl||Ou,o=r.textOnly?Promise.resolve():new Promise((e,t)=>{a.once(A.SignalConnected,()=>{a.localParticipant.setMicrophoneEnabled(!0).then(()=>e()).catch(t)})});await a.connect(n,i),await new Promise(t=>{if(e.isConnected)t();else{let e=()=>{a.off(A.Connected,e),t()};a.on(A.Connected,e)}}),await o;let s=a.localParticipant.getTrackPublication(P.Source.Microphone)?.track;s&&e.setupInputAnalyser(s.mediaStreamTrack),a.name&&(e.conversationId=a.name.match(/(conv_[a-zA-Z0-9]+)/)?.[0]||a.name);let c=yu(r);return e.debug({type:vu,message:c}),await e.sendMessage(c),e}catch(e){throw await a.disconnect(),e}}setupRoomEventListeners(){this.room.on(A.Connected,()=>{this.isConnected=!0}),this.room.on(A.Disconnected,e=>{this.isConnected=!1,this.disconnect({reason:`agent`,context:{type:`close`,reason:e?.toString()}})}),this.room.on(A.ConnectionStateChanged,e=>{e===lu.Disconnected&&(this.isConnected=!1,this.disconnect({reason:`error`,message:`LiveKit connection state changed to ${e}`,context:{type:`connection_state_changed`}}))}),this.room.on(A.DataReceived,(e,t)=>{try{let t=JSON.parse(new TextDecoder().decode(e));if(t.type===`audio`)return;f(t)?this.handleMessage(t):console.warn(`Invalid socket event received:`,t)}catch(t){console.warn(`Failed to parse incoming data message:`,t),console.warn(`Raw payload:`,new TextDecoder().decode(e))}}),this.room.on(A.TrackSubscribed,async(e,t,n)=>{if(e.kind===P.Kind.Audio&&n.identity.includes(`agent`)){let t=e;this.audioAdapter&&(await this.audioAdapter.attachRemoteTrack(t,this.outputDeviceId),await this.setupAudioCapture(t),this.onDebug?.({type:`audio_element_ready`}))}}),this.room.on(A.ActiveSpeakersChanged,async e=>{e.length>0?this.updateMode(e[0].identity.startsWith(`agent`)?`speaking`:`listening`):this.updateMode(`listening`)}),this.room.on(A.ParticipantDisconnected,e=>{e.identity?.startsWith(`agent`)&&this.disconnect({reason:`agent`,context:{type:`close`,reason:`agent disconnected`}})})}close(){if(this.isConnected){try{this.room.localParticipant.audioTrackPublications.forEach(e=>{e.track&&e.track.stop()})}catch(e){console.warn(`Error stopping local tracks:`,e)}this.audioAdapter?.cleanup(),this.inputAnalyser=void 0,this.outputAnalyser=void 0,this.inputVolumeProvider=Su,this.outputVolumeProvider=Su,this.room.disconnect()}}async sendMessage(e){if(!this.isConnected||!this.room.localParticipant){console.warn(`Cannot send message: room not connected or no local participant`);return}if(!(`user_audio_chunk`in e))try{let t=new TextEncoder().encode(JSON.stringify(e));await this.room.localParticipant.publishData(t,{reliable:!0})}catch(t){this.debug({type:`send_message_error`,message:{message:e,error:t}}),console.error(`Failed to send message via WebRTC:`,t)}}getRoom(){return this.room}setupInputAnalyser(e){if(this.audioAdapter)try{let t=this.audioAdapter.setupInputAnalysis(e);this.inputVolumeProvider=t.volumeProvider,this.inputAnalyser=t.analyser}catch(e){console.warn(`[ConversationalAI] Failed to set up input volume analyser:`,e)}}setInputVolumeProvider(e){this.inputVolumeProvider=e}setOutputVolumeProvider(e){this.outputVolumeProvider=e}async setupAudioCapture(e){if(this.audioAdapter)try{let t=await this.audioAdapter.setupOutputAnalysis(e,this.outputFormat,(e,t)=>{if(t>Au){let t=bu(e),n=this.audioEventId++;this.handleMessage({type:`audio`,audio_event:{audio_base_64:t,event_id:n}})}});this.outputVolumeProvider=t.volumeProvider,this.outputAnalyser=t.analyser}catch(e){console.warn(`Failed to set up audio capture:`,e)}}setAudioVolume(e){this.audioAdapter?.setVolume(e)}async setAudioOutputDevice(e){if(!this.audioAdapter)throw Error(`Cannot set output device: no audio adapter available on this platform`);await this.audioAdapter.setOutputDevice(e),this.outputDeviceId=e}async setAudioInputDevice(e){if(!this.isConnected||!this.room.localParticipant)throw Error(`Cannot change input device: room not connected or no local participant`);try{let t=this.room.localParticipant.getTrackPublication(P.Source.Microphone);t?.track&&(await t.track.stop(),await this.room.localParticipant.unpublishTrack(t.track));let n=await tu({deviceId:{exact:e},echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:{ideal:1}});await this.room.localParticipant.publishTrack(n,{name:`microphone`,source:P.Source.Microphone}),this.setupInputAnalyser(n.mediaStreamTrack)}catch(e){console.error(`Failed to change input device:`,e);try{await this.room.localParticipant.setMicrophoneEnabled(!0)}catch(e){console.error(`Failed to recover microphone after device switch error:`,e)}throw e}}},Nu;function Pu(e){Nu=e}function Fu(e){if(!(e instanceof Mu))throw Error(`setupWebRTCSession requires a WebRTCConnection. Received: ${e?.constructor?.name??typeof e}`);return{connection:e,input:e.input,output:e.output,playbackEventTarget:null,detach:async()=>{}}}var Iu=`convai`,Lu=`wss://api.elevenlabs.io`,Ru=`/v1/convai/conversation?agent_id=`,zu=class e extends u{socket;conversationId;inputFormat;outputFormat;outputListeners=new Set;pendingAudioEvents=[];constructor(e,t,n,r){super(),this.socket=e,this.conversationId=t,this.inputFormat=n,this.outputFormat=r,this.socket.addEventListener(`error`,e=>{setTimeout(()=>this.disconnect({reason:`error`,message:`The connection was closed due to a socket error.`,context:{type:e.type}}),0)}),this.socket.addEventListener(`close`,e=>{let t=e.code,n=e.reason||void 0,r={type:e.type,code:t,reason:n};this.disconnect(t===1e3?{reason:`agent`,context:r,closeCode:t,closeReason:n}:{reason:`error`,message:n||`The connection was closed by the server.`,context:r,closeCode:t,closeReason:n})}),this.socket.addEventListener(`message`,e=>{try{let t=JSON.parse(e.data);if(!f(t)){this.debug({type:`invalid_event`,message:`Received invalid socket event`,data:e.data});return}this.handleMessage(t)}catch(t){this.debug({type:`parsing_error`,message:`Failed to parse socket message`,error:t instanceof Error?t.message:String(t),data:e.data})}})}static async create(t){let n=null;try{let i=t.origin??Lu,a,{name:o,version:s}=c;if(t.signedUrl){let e=t.signedUrl.includes(`?`)?`&`:`?`;a=`${t.signedUrl}${e}source=${o}&version=${s}`}else a=`${i}${Ru}${t.agentId}&source=${o}&version=${s}`;t.environment&&(a+=`&environment=${encodeURIComponent(t.environment)}`);let l=[Iu];t.authorization&&l.push(`bearer.${t.authorization}`),n=new WebSocket(a,l);let{conversation_id:u,agent_output_audio_format:p,user_input_audio_format:m}=await new Promise((e,i)=>{n.addEventListener(`open`,()=>{let e=yu(t);n?.send(JSON.stringify(e))},{once:!0}),n.addEventListener(`error`,e=>{setTimeout(()=>i(new r(`The connection was closed due to a socket error.`)),0)}),n.addEventListener(`close`,e=>{i(new r(e.reason||(e.code===1e3?`Connection closed normally before session could be established.`:`Connection closed unexpectedly before session could be established.`),{closeCode:e.code,closeReason:e.reason||void 0}))}),n.addEventListener(`message`,t=>{let n=JSON.parse(t.data);f(n)&&(n.type===`conversation_initiation_metadata`?e(n.conversation_initiation_metadata_event):console.warn(`First received message is not conversation metadata.`))},{once:!0})}),h=d(m??`pcm_16000`),g=d(p);return new e(n,u,h,g)}catch(e){throw n?.close(),e}}close(){this.pendingAudioEvents=[],this.socket.close(1e3,`User ended conversation`)}sendMessage(e){this.socket.send(JSON.stringify(e))}addListener(e){let t=this.outputListeners.size>0;if(this.outputListeners.add(e),t||this.pendingAudioEvents.length===0)return;let n=this.pendingAudioEvents;this.pendingAudioEvents=[];for(let t of n)e(t)}removeListener(e){this.outputListeners.delete(e)}handleMessage(e){if(super.handleMessage(e),e.type===`audio`&&e.audio_event.audio_base_64){let t={audio_base_64:e.audio_event.audio_base_64};if(this.outputListeners.size===0){this.pendingAudioEvents.push(t);return}this.outputListeners.forEach(e=>e(t))}}};function Bu(e){let t=`signedUrl`in e&&e.signedUrl;if(t&&e.connectionType===`webrtc`)throw Error(`signedUrl only supports websocket connections. Remove connectionType or set it to 'websocket'.`);return e.connectionType?e.connectionType:`conversationToken`in e&&e.conversationToken?`webrtc`:t||e.textOnly?`websocket`:`webrtc`}async function Vu(e){let t=Bu(e);switch(t){case`websocket`:return zu.create(e);case`webrtc`:return Mu.create(e);default:throw Error(`Unknown connection type: ${t}`)}}var Hu,Uu,Wu,Gu,Ku,qu,Ju,Yu,Xu,Zu,Qu,$u,ed,td={},nd=[],rd=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,id=Array.isArray;function ad(e,t){for(var n in t)e[n]=t[n];return e}function od(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function sd(e,t,n){var r,i,a,o={};for(a in t)a==`key`?r=t[a]:a==`ref`?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?Hu.call(arguments,2):n),typeof e==`function`&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return cd(e,o,r,i,null)}function cd(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++Wu,__i:-1,__u:0};return i==null&&Uu.vnode!=null&&Uu.vnode(a),a}function ld(){return{current:null}}function ud(e){return e.children}function dd(e,t){this.props=e,this.context=t}function fd(e,t){if(t==null)return e.__?fd(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?fd(e):null}function pd(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return pd(e)}}function md(e){(!e.__d&&(e.__d=!0)&&Ku.push(e)&&!hd.__r++||qu!=Uu.debounceRendering)&&((qu=Uu.debounceRendering)||Ju)(hd)}function hd(){for(var e,t,n,r,i,a,o,s=1;Ku.length;)Ku.length>s&&Ku.sort(Yu),e=Ku.shift(),s=Ku.length,e.__d&&(n=void 0,r=void 0,i=(r=(t=e).__v).__e,a=[],o=[],t.__P&&((n=ad({},r)).__v=r.__v+1,Uu.vnode&&Uu.vnode(n),wd(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[i]:null,a,i??fd(r),!!(32&r.__u),o),n.__v=r.__v,n.__.__k[n.__i]=n,Ed(a,n,o),r.__e=r.__=null,n.__e!=i&&pd(n)));hd.__r=0}function gd(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,_,v=r&&r.__k||nd,y=t.length;for(c=_d(n,t,v,c,y),d=0;d<y;d++)(p=n.__k[d])!=null&&(f=p.__i==-1?td:v[p.__i]||td,p.__i=d,g=wd(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&kd(f.ref,null,p),u.push(p.ref,p.__c||m,p)),h==null&&m!=null&&(h=m),(_=!!(4&p.__u))||f.__k===p.__k?c=vd(p,c,e,_):typeof p.type==`function`&&g!==void 0?c=g:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=h,c}function _d(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=cd(null,o,null,null,null):id(o)?o=e.__k[a]=cd(ud,{children:o},null,null,null):o.constructor==null&&o.__b>0?o=e.__k[a]=cd(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,(l=o.__i=bd(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=fd(s)),Ad(s,s));return r}function vd(e,t,n,r){var i,a;if(typeof e.type==`function`){for(i=e.__k,a=0;i&&a<i.length;a++)i[a]&&(i[a].__=e,t=vd(i[a],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=fd(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function yd(e,t){return t||=[],e==null||typeof e==`boolean`||(id(e)?e.some(function(e){yd(e,t)}):t.push(e)),t}function bd(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function xd(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||rd.test(t)?n:n+`px`}function Sd(e,t,n,r,i){var a,o;n:if(t==`style`)if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||xd(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||xd(e.style,t,n[t])}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(Xu,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n.u=r.u:(n.u=Zu,e.addEventListener(t,a?$u:Qu,a)):e.removeEventListener(t,a?$u:Qu,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function Cd(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Zu++;else if(t.t<n.u)return;return n(Uu.event?Uu.event(t):t)}}}function wd(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,ee,te=t.type;if(t.constructor!=null)return null;128&n.__u&&(c=!!(32&n.__u),a=[s=t.__e=n.__e]),(u=Uu.__b)&&u(t);n:if(typeof te==`function`)try{if(_=t.props,v=`prototype`in te&&te.prototype.render,y=(u=te.contextType)&&r[u.__c],b=u?y?y.props.value:u.__:r,n.__c?g=(d=t.__c=n.__c).__=d.__E:(v?t.__c=d=new te(_,b):(t.__c=d=new dd(_,b),d.constructor=te,d.render=jd),y&&y.sub(d),d.state||={},d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),v&&d.__s==null&&(d.__s=d.state),v&&te.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=ad({},d.__s)),ad(d.__s,te.getDerivedStateFromProps(_,d.__s))),p=d.props,m=d.state,d.__v=t,f)v&&te.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),v&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(v&&te.getDerivedStateFromProps==null&&_!==p&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(_,b),t.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&!1===d.shouldComponentUpdate(_,d.__s,b)){for(t.__v!=n.__v&&(d.props=_,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),x=0;x<d._sb.length;x++)d.__h.push(d._sb[x]);d._sb=[],d.__h.length&&o.push(d);break n}d.componentWillUpdate!=null&&d.componentWillUpdate(_,d.__s,b),v&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(p,m,h)})}if(d.context=b,d.props=_,d.__P=e,d.__e=!1,S=Uu.__r,C=0,v){for(d.state=d.__s,d.__d=!1,S&&S(t),u=d.render(d.props,d.state,d.context),w=0;w<d._sb.length;w++)d.__h.push(d._sb[w]);d._sb=[]}else do d.__d=!1,S&&S(t),u=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++C<25);d.state=d.__s,d.getChildContext!=null&&(r=ad(ad({},r),d.getChildContext())),v&&!f&&d.getSnapshotBeforeUpdate!=null&&(h=d.getSnapshotBeforeUpdate(p,m)),T=u,u!=null&&u.type===ud&&u.key==null&&(T=Dd(u.props.children)),s=gd(e,id(T)?T:[T],t,n,r,i,a,o,s,c,l),d.base=t.__e,t.__u&=-161,d.__h.length&&o.push(d),g&&(d.__E=d.__=null)}catch(e){if(t.__v=null,c||a!=null)if(e.then){for(t.__u|=c?160:128;s&&s.nodeType==8&&s.nextSibling;)s=s.nextSibling;a[a.indexOf(s)]=null,t.__e=s}else{for(ee=a.length;ee--;)od(a[ee]);Td(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Td(t);Uu.__e(e,t,n)}else a==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):s=t.__e=Od(n.__e,t,n,r,i,a,o,c,l);return(u=Uu.diffed)&&u(t),128&t.__u?void 0:s}function Td(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Td)}function Ed(e,t,n){for(var r=0;r<n.length;r++)kd(n[r],n[++r],n[++r]);Uu.__c&&Uu.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Uu.__e(e,t.__v)}})}function Dd(e){return typeof e!=`object`||!e||e.__b&&e.__b>0?e:id(e)?e.map(Dd):ad({},e)}function Od(e,t,n,r,i,a,o,s,c){var l,u,d,f,p,m,h,g=n.props||td,_=t.props,v=t.type;if(v==`svg`?i=`http://www.w3.org/2000/svg`:v==`math`?i=`http://www.w3.org/1998/Math/MathML`:i||=`http://www.w3.org/1999/xhtml`,a!=null){for(l=0;l<a.length;l++)if((p=a[l])&&`setAttribute`in p==!!v&&(v?p.localName==v:p.nodeType==3)){e=p,a[l]=null;break}}if(e==null){if(v==null)return document.createTextNode(_);e=document.createElementNS(i,v,_.is&&_),s&&=(Uu.__m&&Uu.__m(t,a),!1),a=null}if(v==null)g===_||s&&e.data==_||(e.data=_);else{if(a&&=Hu.call(e.childNodes),!s&&a!=null)for(g={},l=0;l<e.attributes.length;l++)g[(p=e.attributes[l]).name]=p.value;for(l in g)if(p=g[l],l!=`children`){if(l==`dangerouslySetInnerHTML`)d=p;else if(!(l in _)){if(l==`value`&&`defaultValue`in _||l==`checked`&&`defaultChecked`in _)continue;Sd(e,l,null,p,i)}}for(l in _)p=_[l],l==`children`?f=p:l==`dangerouslySetInnerHTML`?u=p:l==`value`?m=p:l==`checked`?h=p:s&&typeof p!=`function`||g[l]===p||Sd(e,l,p,g[l],i);if(u)s||d&&(u.__html==d.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(d&&(e.innerHTML=``),gd(t.type==`template`?e.content:e,id(f)?f:[f],t,n,r,v==`foreignObject`?`http://www.w3.org/1999/xhtml`:i,a,o,a?a[0]:n.__k&&fd(n,0),s,c),a!=null)for(l=a.length;l--;)od(a[l]);s||(l=`value`,v==`progress`&&m==null?e.removeAttribute(`value`):m!=null&&(m!==e[l]||v==`progress`&&!m||v==`option`&&m!=g[l])&&Sd(e,l,m,g[l],i),l=`checked`,h!=null&&h!=e[l]&&Sd(e,l,h,g[l],i))}return e}function kd(e,t,n){try{if(typeof e==`function`){var r=typeof e.__u==`function`;r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(e){Uu.__e(e,n)}}function Ad(e,t,n){var r,i;if(Uu.unmount&&Uu.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||kd(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Uu.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&Ad(r[i],t,n||typeof e.type!=`function`);n||od(e.__e),e.__c=e.__=e.__e=void 0}function jd(e,t,n){return this.constructor(e,n)}function Md(e,t,n){var r,i,a,o;t==document&&(t=document.documentElement),Uu.__&&Uu.__(e,t),i=(r=typeof n==`function`)?null:n&&n.__k||t.__k,a=[],o=[],wd(t,e=(!r&&n||t).__k=sd(ud,null,[e]),i||td,td,t.namespaceURI,!r&&n?[n]:i?null:t.firstChild?Hu.call(t.childNodes):null,a,!r&&n?n:i?i.__e:t.firstChild,r,o),Ed(a,e,o)}function Nd(e,t){Md(e,t,Nd)}function Pd(e,t,n){var r,i,a,o,s=ad({},e.props);for(a in e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)a==`key`?r=t[a]:a==`ref`?i=t[a]:s[a]=t[a]===void 0&&o!=null?o[a]:t[a];return arguments.length>2&&(s.children=arguments.length>3?Hu.call(arguments,2):n),cd(e.type,s,r||e.key,i||e.ref,null)}function Fd(e){function t(e){var n,r;return this.getChildContext||(n=new Set,(r={})[t.__c]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&n.forEach(function(e){e.__e=!0,md(e)})},this.sub=function(e){n.add(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n&&n.delete(e),t&&t.call(e)}}),e.children}return t.__c=`__cC`+ ed++,t.__=e,t.Provider=t.__l=(t.Consumer=function(e,t){return e.children(t)}).contextType=t,t}Hu=nd.slice,Uu={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},Wu=0,Gu=function(e){return e!=null&&e.constructor==null},dd.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=ad({},this.state);typeof e==`function`&&(e=e(ad({},n),this.props)),e&&ad(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),md(this))},dd.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),md(this))},dd.prototype.render=ud,Ku=[],Ju=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Yu=function(e,t){return e.__v.__b-t.__v.__b},hd.__r=0,Xu=/(PointerCapture)$|Capture$/i,Zu=0,Qu=Cd(!1),$u=Cd(!0),ed=0;function Id(){return Id=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Id.apply(this,arguments)}function Ld(e,t){if(e==null)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(i[n]=e[n]);return i}var Rd=[`context`,`children`],zd=[`useFragment`];function Bd(e,t,n,r){function i(){var t,n=Reflect.construct(HTMLElement,[],i);return n._vdomComponent=e,r&&r.shadow?(n._root=n.attachShadow({mode:r.mode||`open`,serializable:(t=r.serializable)!=null&&t}),r.adoptedStyleSheets&&(n._root.adoptedStyleSheets=r.adoptedStyleSheets)):n._root=n,n}return(i.prototype=Object.create(HTMLElement.prototype)).constructor=i,i.prototype.connectedCallback=function(){Hd.call(this,r)},i.prototype.attributeChangedCallback=Wd,i.prototype.disconnectedCallback=Gd,n=n||e.observedAttributes||Object.keys(e.propTypes||{}),i.observedAttributes=n,e.formAssociated&&(i.formAssociated=!0),n.forEach(function(e){Object.defineProperty(i.prototype,e,{get:function(){return this._vdom?this._vdom.props[e]:this._props[e]},set:function(t){this._vdom?this.attributeChangedCallback(e,null,t):(this._props||={},this._props[e]=t);var n=typeof t;t!=null&&n!==`string`&&n!==`boolean`&&n!==`number`||this.setAttribute(e,t)}})}),customElements.define(t||e.tagName||e.displayName||e.name,i),i}function Vd(e){this.getChildContext=function(){return e.context};var t=e.children;return Pd(t,Ld(e,Rd))}function Hd(e){var t=new CustomEvent(`_preact`,{detail:{},bubbles:!0,cancelable:!0});this.dispatchEvent(t),this._vdom=sd(Vd,Id({},this._props,{context:t.detail.context}),qd(this,this._vdomComponent,e)),(this.hasAttribute(`hydrate`)?Nd:Md)(this._vdom,this._root)}function Ud(e){return e.replace(/-(\w)/g,function(e,t){return t?t.toUpperCase():``})}function Wd(e,t,n){if(this._vdom){var r={};r[e]=n??=void 0,r[Ud(e)]=n,this._vdom=Pd(this._vdom,r),Md(this._vdom,this._root)}}function Gd(){Md(this._vdom=null,this._root)}function Kd(e,t){var n=this,r=e.useFragment,i=Ld(e,zd);return sd(r?ud:`slot`,Id({},i,{ref:function(e){e?(n.ref=e,n._listener||(n._listener=function(e){e.stopPropagation(),e.detail.context=t},e.addEventListener(`_preact`,n._listener))):n.ref.removeEventListener(`_preact`,n._listener)}}))}function qd(e,t,n){if(e.nodeType===3)return e.data;if(e.nodeType!==1)return null;var r=[],i={},a=0,o=e.attributes,s=e.childNodes;for(a=o.length;a--;)o[a].name!==`slot`&&(i[o[a].name]=o[a].value,i[Ud(o[a].name)]=o[a].value);for(a=s.length;a--;){var c=qd(s[a],null,n),l=s[a].slot;l?i[l]=sd(Kd,{name:l},c):r[a]=c}var u=!(!n||!n.shadow),d=t?sd(Kd,{useFragment:!u},r):r;return!u&&t&&(e.innerHTML=``),sd(t||e.nodeName.toLowerCase(),i,d)}var Jd,Yd,Xd,Zd,Qd=0,$d=[],ef=Uu,tf=ef.__b,nf=ef.__r,rf=ef.diffed,af=ef.__c,of=ef.unmount,sf=ef.__;function cf(e,t){ef.__h&&ef.__h(Yd,e,Qd||t),Qd=0;var n=Yd.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function lf(e){return Qd=1,uf(wf,e)}function uf(e,t,n){var r=cf(Jd++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):wf(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=Yd,!Yd.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return!!e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};Yd.__f=!0;var a=Yd.shouldComponentUpdate,o=Yd.componentWillUpdate;Yd.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},Yd.shouldComponentUpdate=i}return r.__N||r.__}function df(e,t){var n=cf(Jd++,3);!ef.__s&&Cf(n.__H,t)&&(n.__=e,n.u=t,Yd.__H.__h.push(n))}function ff(e,t){var n=cf(Jd++,4);!ef.__s&&Cf(n.__H,t)&&(n.__=e,n.u=t,Yd.__h.push(n))}function F(e){return Qd=5,mf(function(){return{current:e}},[])}function pf(e,t,n){Qd=6,ff(function(){if(typeof e==`function`){var n=e(t());return function(){e(null),n&&typeof n==`function`&&n()}}if(e)return e.current=t(),function(){return e.current=null}},n==null?n:n.concat(e))}function mf(e,t){var n=cf(Jd++,7);return Cf(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function I(e,t){return Qd=8,mf(function(){return e},t)}function hf(e){var t=Yd.context[e.__c],n=cf(Jd++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(Yd)),t.props.value):e.__}function gf(e,t){ef.useDebugValue&&ef.useDebugValue(t?t(e):e)}function _f(){var e=cf(Jd++,11);if(!e.__){for(var t=Yd.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||=[0,0];e.__=`P`+n[0]+`-`+ n[1]++}return e.__}function vf(){for(var e;e=$d.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(xf),e.__H.__h.forEach(Sf),e.__H.__h=[]}catch(t){e.__H.__h=[],ef.__e(t,e.__v)}}ef.__b=function(e){Yd=null,tf&&tf(e)},ef.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),sf&&sf(e,t)},ef.__r=function(e){nf&&nf(e),Jd=0;var t=(Yd=e.__c).__H;t&&(Xd===Yd?(t.__h=[],Yd.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(xf),t.__h.forEach(Sf),t.__h=[],Jd=0)),Xd=Yd},ef.diffed=function(e){rf&&rf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&($d.push(t)!==1&&Zd===ef.requestAnimationFrame||((Zd=ef.requestAnimationFrame)||bf)(vf)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Xd=Yd=null},ef.__c=function(e,t){t.some(function(e){try{e.__h.forEach(xf),e.__h=e.__h.filter(function(e){return!e.__||Sf(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],ef.__e(n,e.__v)}}),af&&af(e,t)},ef.unmount=function(e){of&&of(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{xf(e)}catch(e){t=e}}),n.__H=void 0,t&&ef.__e(t,n.__v))};var yf=typeof requestAnimationFrame==`function`;function bf(e){var t,n=function(){clearTimeout(r),yf&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);yf&&(t=requestAnimationFrame(n))}function xf(e){var t=Yd,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),Yd=t}function Sf(e){var t=Yd;e.__c=e.__(),Yd=t}function Cf(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function wf(e,t){return typeof t==`function`?t(e):t}function Tf(e,t){for(var n in t)e[n]=t[n];return e}function Ef(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Df(e,t){var n=t(),r=lf({t:{__:n,u:t}}),i=r[0].t,a=r[1];return ff(function(){i.__=n,i.u=t,Of(i)&&a({t:i})},[e,n,t]),df(function(){return Of(i)&&a({t:i}),e(function(){Of(i)&&a({t:i})})},[e]),n}function Of(e){var t,n,r=e.u,i=e.__;try{var a=r();return!((t=i)===(n=a)&&(t!==0||1/t==1/n)||t!=t&&n!=n)}catch{return!0}}function kf(e){e()}function Af(e){return e}function jf(){return[!1,kf]}var Mf=ff;function Nf(e,t){this.props=e,this.context=t}function Pf(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:Ef(this.props,e)}function r(t){return this.shouldComponentUpdate=n,sd(e,t)}return r.displayName=`Memo(`+(e.displayName||e.name)+`)`,r.prototype.isReactComponent=!0,r.__f=!0,r.type=e,r}(Nf.prototype=new dd).isPureReactComponent=!0,Nf.prototype.shouldComponentUpdate=function(e,t){return Ef(this.props,e)||Ef(this.state,t)};var Ff=Uu.__b;Uu.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ff&&Ff(e)};var If=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.forward_ref`)||3911;function Lf(e){function t(t){var n=Tf({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=If,t.render=e,t.prototype.isReactComponent=t.__f=!0,t.displayName=`ForwardRef(`+(e.displayName||e.name)+`)`,t}var Rf=function(e,t){return e==null?null:yd(yd(e).map(t))},zf={map:Rf,forEach:Rf,count:function(e){return e?yd(e).length:0},only:function(e){var t=yd(e);if(t.length!==1)throw`Children.only`;return t[0]},toArray:yd},Bf=Uu.__e;Uu.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}Bf(e,t,n,r)};var Vf=Uu.unmount;function Hf(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Tf({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Hf(e,t,n)})),e}function Uf(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return Uf(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Wf(){this.__u=0,this.o=null,this.__b=null}function Gf(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Kf(e){var t,n,r,i=null;function a(a){if(t||(t=e()).then(function(e){e&&(i=e.default||e),r=!0},function(e){n=e,r=!0}),n)throw n;if(!r)throw t;return i?sd(i,a):null}return a.displayName=`Lazy`,a.__f=!0,a}function qf(){this.i=null,this.l=null}Uu.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Vf&&Vf(e)},(Wf.prototype=new dd).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=Gf(r.__v),a=!1,o=function(){a||(a=!0,n.__R=null,i?i(s):s())};n.__R=o;var s=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Uf(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Wf.prototype.componentWillUnmount=function(){this.o=[]},Wf.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Hf(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&sd(ud,null,e.fallback);return i&&(i.__u&=-33),[sd(ud,null,t.__a?null:e.children),i]};var Jf=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Yf(e){return this.getChildContext=function(){return e.context},e.children}function Xf(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Md(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},insertBefore:function(e,n){this.childNodes.push(e),t.h.insertBefore(e,n)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.h.removeChild(e)}}}Md(sd(Yf,{context:t.context},e.__v),t.v)}function Zf(e,t){var n=sd(Xf,{__v:e,h:t});return n.containerInfo=t,n}(qf.prototype=new dd).__a=function(e){var t=this,n=Gf(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Jf(t,e,r)):i()};n?n(a):a()}},qf.prototype.render=function(e){this.i=null,this.l=new Map;var t=yd(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},qf.prototype.componentDidUpdate=qf.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Jf(e,n,t)})};var Qf=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,$f=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,ep=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,tp=/[A-Z0-9]/g,np=typeof document<`u`,rp=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};function ip(e,t,n){return t.__k??(t.textContent=``),Md(e,t),typeof n==`function`&&n(),e?e.__c:null}function ap(e,t,n){return Nd(e,t),typeof n==`function`&&n(),e?e.__c:null}dd.prototype.isReactComponent={},[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(dd.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var op=Uu.event;function sp(){}function cp(){return this.cancelBubble}function lp(){return this.defaultPrevented}Uu.event=function(e){return op&&(e=op(e)),e.persist=sp,e.isPropagationStopped=cp,e.isDefaultPrevented=lp,e.nativeEvent=e};var up,dp={enumerable:!1,configurable:!0,get:function(){return this.class}},fp=Uu.vnode;Uu.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)===-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||np&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||rp(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:ep.test(a)&&(a=s):s=a=`oninput`:i&&$f.test(a)?a=a.replace(tp,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&r.multiple&&Array.isArray(r.value)&&(r.value=yd(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),n==`select`&&r.defaultValue!=null&&(r.value=yd(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value})),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,dp)):(t.className&&!t.class||t.class&&t.className)&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=Qf,fp&&fp(e)};var pp=Uu.__r;Uu.__r=function(e){pp&&pp(e),up=e.__c};var mp=Uu.diffed;Uu.diffed=function(e){mp&&mp(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value),up=null};var hp={ReactCurrentDispatcher:{current:{readContext:function(e){return up.__n[e.__c].props.value},useCallback:I,useContext:hf,useDebugValue:gf,useDeferredValue:Af,useEffect:df,useId:_f,useImperativeHandle:pf,useInsertionEffect:Mf,useLayoutEffect:ff,useMemo:mf,useReducer:uf,useRef:F,useState:lf,useSyncExternalStore:Df,useTransition:jf}}};function gp(e){return sd.bind(null,e)}function _p(e){return!!e&&e.$$typeof===Qf}function vp(e){return _p(e)&&e.type===ud}function yp(e){return!!e&&!!e.displayName&&(typeof e.displayName==`string`||e.displayName instanceof String)&&e.displayName.startsWith(`Memo(`)}function bp(e){return _p(e)?Pd.apply(null,arguments):e}function xp(e){return!!e.__k&&(Md(null,e),!0)}function Sp(e){return e&&(e.base||e.nodeType===1&&e)||null}var Cp=function(e,t){return e(t)},wp=function(e,t){return e(t)},Tp={useState:lf,useId:_f,useReducer:uf,useEffect:df,useLayoutEffect:ff,useInsertionEffect:Mf,useTransition:jf,useDeferredValue:Af,useSyncExternalStore:Df,startTransition:kf,useRef:F,useImperativeHandle:pf,useMemo:mf,useCallback:I,useContext:hf,useDebugValue:gf,version:`18.3.1`,Children:zf,render:ip,hydrate:ap,unmountComponentAtNode:xp,createPortal:Zf,createElement:sd,createContext:Fd,createFactory:gp,cloneElement:bp,createRef:ld,Fragment:ud,isValidElement:_p,isElement:_p,isFragment:vp,isMemo:yp,findDOMNode:Sp,Component:dd,PureComponent:Nf,memo:Pf,forwardRef:Lf,flushSync:wp,unstable_batchedUpdates:Cp,StrictMode:ud,Suspense:Wf,SuspenseList:qf,lazy:Kf,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hp},Ep=Symbol.for(`preact-signals`);function Dp(){if(Np>1)Np--;else{var e,t=!1;for((function(){var e=Lp;for(Lp=void 0;e!==void 0;)e.S.v===e.v&&(e.S.i=e.i),e=e.o})();Mp!==void 0;){var n=Mp;for(Mp=void 0,Pp++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Hp(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Pp=0,Np--,t)throw e}}function Op(e){if(Np>0)return e();Ip=++Fp,Np++;try{return e()}finally{Dp()}}var kp=void 0;function Ap(e){var t=kp;kp=void 0;try{return e()}finally{kp=t}}var jp,Mp=void 0,Np=0,Pp=0,Fp=0,Ip=0,Lp=void 0,Rp=0;function zp(e){if(kp!==void 0){var t=e.n;if(t===void 0||t.t!==kp)return t={i:0,S:e,p:kp.s,n:void 0,t:kp,e:void 0,x:void 0,r:t},kp.s!==void 0&&(kp.s.n=t),kp.s=t,e.n=t,32&kp.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=kp.s,t.n=void 0,kp.s.n=t,kp.s=t),t}}function Bp(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}Bp.prototype.brand=Ep,Bp.prototype.h=function(){return!0},Bp.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?Ap(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},Bp.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&Ap(function(){var e;(e=t.Z)==null||e.call(t)}))}},Bp.prototype.subscribe=function(e){var t=this;return Zp(function(){var n=t.value,r=kp;kp=void 0;try{e(n)}finally{kp=r}},{name:`sub`})},Bp.prototype.valueOf=function(){return this.value},Bp.prototype.toString=function(){return this.value+``},Bp.prototype.toJSON=function(){return this.value},Bp.prototype.peek=function(){var e=kp;kp=void 0;try{return this.value}finally{kp=e}},Object.defineProperty(Bp.prototype,`value`,{get:function(){var e=zp(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Pp>100)throw Error(`Cycle detected`);(function(e){Np!==0&&Pp===0&&e.l!==Ip&&(e.l=Ip,Lp={S:e,v:e.v,i:e.i,o:Lp})})(this),this.v=e,this.i++,Rp++,Np++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Dp()}}}});function Vp(e,t){return new Bp(e,t)}function Hp(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function Up(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function Wp(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function Gp(e,t){Bp.call(this,void 0),this.x=e,this.s=void 0,this.g=Rp-1,this.f=4,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}Gp.prototype=new Bp,Gp.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Rp))return!0;if(this.g=Rp,this.f|=1,this.i>0&&!Hp(this))return this.f&=-2,!0;var e=kp;try{Up(this),kp=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return kp=e,Wp(this),this.f&=-2,!0},Gp.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}Bp.prototype.S.call(this,e)},Gp.prototype.U=function(e){if(this.t!==void 0&&(Bp.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},Gp.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(Gp.prototype,`value`,{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=zp(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function Kp(e,t){return new Gp(e,t)}function qp(e){var t=e.m;if(e.m=void 0,typeof t==`function`){Np++;var n=kp;kp=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,Jp(e),t}finally{kp=n,Dp()}}}function Jp(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,qp(e)}function Yp(e){if(kp!==this)throw Error(`Out-of-order effect`);Wp(this),kp=e,this.f&=-2,8&this.f&&Jp(this),Dp()}function Xp(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,jp&&jp.push(this)}Xp.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},Xp.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,qp(this),Up(this),Np++;var e=kp;return kp=this,Yp.bind(this,e)},Xp.prototype.N=function(){2&this.f||(this.f|=2,this.u=Mp,Mp=this)},Xp.prototype.d=function(){this.f|=8,1&this.f||Jp(this)},Xp.prototype.dispose=function(){this.d()};function Zp(e,t){var n=new Xp(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var Qp,$p,em,tm=typeof window<`u`&&!!window.__PREACT_SIGNALS_DEVTOOLS__,nm=[],rm=[];Zp(function(){Qp=this.N})();function im(e,t){Uu[e]=t.bind(null,Uu[e]||function(){})}function am(e){if(em){var t=em;em=void 0,t()}em=e&&e.S()}function om(e){var t=this,n=e.data,r=cm(n);r.value=n;var i=mf(function(){for(var e=t,n=t.__v;n=n.__;)if(n.__c){n.__c.__$f|=4;break}var i=Kp(function(){var e=r.value.value;return e===0?0:!0===e?``:e||``}),a=Kp(function(){return!Array.isArray(i.value)&&!Gu(i.value)}),o=Zp(function(){if(this.N=mm,a.value){var t=i.value;e.__v&&e.__v.__e&&e.__v.__e.nodeType===3&&(e.__v.__e.data=t)}}),s=t.__$u.d;return t.__$u.d=function(){o(),s.call(this)},[a,i]},[]),a=i[0],o=i[1];return a.value?o.peek():o.value}om.displayName=`ReactiveTextNode`,Object.defineProperties(Bp.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:om},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),im(`__b`,function(e,t){if(typeof t.type==`string`){var n,r=t.props;for(var i in r)if(i!==`children`){var a=r[i];a instanceof Bp&&(n||(t.__np=n={}),n[i]=a,r[i]=a.peek())}}e(t)}),im(`__r`,function(e,t){if(e(t),t.type!==ud){am();var n,r=t.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=function(e,t){var n;return Zp(function(){n=this},{name:t}),n.c=e,n}(function(){var e;tm&&((e=n.y)==null||e.call(n)),r.__$f|=1,r.setState({})},typeof t.type==`function`?t.type.displayName||t.type.name:``))),$p=r,am(n)}}),im(`__e`,function(e,t,n,r){am(),$p=void 0,e(t,n,r)}),im(`diffed`,function(e,t){am(),$p=void 0;var n;if(typeof t.type==`string`&&(n=t.__e)){var r=t.__np,i=t.props;if(r){var a=n.U;if(a)for(var o in a){var s=a[o];s!==void 0&&!(o in r)&&(s.d(),a[o]=void 0)}else a={},n.U=a;for(var c in r){var l=a[c],u=r[c];l===void 0?(l=sm(n,c,u),a[c]=l):l.o(u,i)}for(var d in r)i[d]=r[d]}}e(t)});function sm(e,t,n,r){var i=t in e&&e.ownerSVGElement===void 0,a=Vp(n),o=n.peek();return{o:function(e,t){a.value=e,o=e.peek()},d:Zp(function(){this.N=mm;var n=a.value.value;o===n?o=void 0:(o=void 0,i?e[t]=n:n!=null&&(!1!==n||t[4]===`-`)?e.setAttribute(t,n):e.removeAttribute(t))})}}im(`unmount`,function(e,t){if(typeof t.type==`string`){var n=t.__e;if(n){var r=n.U;if(r)for(var i in n.U=void 0,r){var a=r[i];a&&a.d()}}t.__np=void 0}else{var o=t.__c;if(o){var s=o.__$u;s&&(o.__$u=void 0,s.d())}}e(t)}),im(`__h`,function(e,t,n,r){(r<3||r===9)&&(t.__$f|=2),e(t,n,r)}),dd.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in t)return!0;if(this.__f||typeof this.u==`boolean`&&!0===this.u){var a=2&this.__$f;if(!(r||a||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var o in e)if(o!==`__source`&&e[o]!==this.props[o])return!0;for(var s in this.props)if(!(s in e))return!0;return!1};function cm(e,t){return mf(function(){return Vp(e,t)},[])}function L(e,t){var n=F(e);return n.current=e,$p.__$f|=4,mf(function(){return Kp(function(){return n.current()},t)},[])}var lm=typeof requestAnimationFrame>`u`?setTimeout:function(e){var t=function(){clearTimeout(n),cancelAnimationFrame(r),e()},n=setTimeout(t,35),r=requestAnimationFrame(t)},um=function(e){queueMicrotask(function(){queueMicrotask(e)})};function dm(){Op(function(){for(var e;e=nm.shift();)Qp.call(e)})}function fm(){nm.push(this)===1&&(Uu.requestAnimationFrame||lm)(dm)}function pm(){Op(function(){for(var e;e=rm.shift();)Qp.call(e)})}function mm(){rm.push(this)===1&&(Uu.requestAnimationFrame||um)(pm)}function hm(e,t){var n=F(e);n.current=e,df(function(){return Zp(function(){return this.N=fm,n.current()},t)},[])}var gm=0;Array.isArray;function R(e,t,n,r,i,a){t||={};var o,s,c=t;if(`ref`in c)for(s in c={},t)s==`ref`?o=t[s]:c[s]=t[s];var l={type:e,props:c,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--gm,__i:-1,__u:0,__source:i,__self:a};if(typeof e==`function`&&(o=e.defaultProps))for(s in o)c[s]===void 0&&(c[s]=o[s]);return Uu.vnode&&Uu.vnode(l),l}var _m=new Map;function vm(e,t){return async(n,r)=>{let i=_m.get(e);if(i)return n.addModule(i);if(r)try{await n.addModule(r),_m.set(e,r);return}catch(t){throw Error(`Failed to load the ${e} worklet module from path: ${r}. Error: ${t}`)}let a=new Blob([t],{type:`application/javascript`}),o=URL.createObjectURL(a);try{await n.addModule(o),_m.set(e,o);return}catch{URL.revokeObjectURL(o)}try{let r=`data:application/javascript;base64,${btoa(t)}`;await n.addModule(r),_m.set(e,r)}catch{throw Error(`Failed to load the ${e} worklet module. Make sure the browser supports AudioWorklets. If you are using a strict CSP, you may need to self-host the worklet files.`)}}}var ym=vm(`audioConcatProcessor`,`/*
38
+ `},gc}var yc;function bc(){if(yc)return lc;yc=1;var e=hc(),t=vc();return lc.grammar=pc(),lc.write=t,lc.parse=e.parse,lc.parseParams=e.parseParams,lc.parseFmtpConfig=e.parseFmtpConfig,lc.parsePayloads=e.parsePayloads,lc.parseRemoteCandidates=e.parseRemoteCandidates,lc.parseImageAttributes=e.parseImageAttributes,lc.parseSimulcastStreamList=e.parseSimulcastStreamList,lc}var xc=bc();function Sc(e,t,n){var r,i,a;t===void 0&&(t=50),n===void 0&&(n={});var o=(r=n.isImmediate)!=null&&r,s=(i=n.callback)!=null&&i,c=n.maxWait,l=Date.now(),u=[];function d(){if(c!==void 0){var e=Date.now()-l;if(e+t>=c)return c-e}return t}var f=function(){var t=[].slice.call(arguments),n=this;return new Promise(function(r,i){var c=o&&a===void 0;if(a!==void 0&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,l=Date.now(),!o){var r=e.apply(n,t);s&&s(r),u.forEach(function(e){return(0,e.resolve)(r)}),u=[]}},d()),c){var f=e.apply(n,t);return s&&s(f),r(f)}u.push({resolve:r,reject:i})})};return f.cancel=function(e){a!==void 0&&clearTimeout(a),u.forEach(function(t){return(0,t.reject)(e)}),u=[]},f}var Cc=.7,wc=20,Tc={NegotiationStarted:`negotiationStarted`,NegotiationComplete:`negotiationComplete`,RTPVideoPayloadTypes:`rtpVideoPayloadTypes`},Ec=class extends di.EventEmitter{get pc(){return this._pc||=this.createPC(),this._pc}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),this.log=$r,this.ddExtID=0,this.latestOfferId=0,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=Sc(e=>k(this,void 0,void 0,function*(){this.emit(Tc.NegotiationStarted);try{yield this.createAndSendOffer()}catch(t){if(e)e(t);else throw t}}),wc),this.close=()=>{this._pc&&=(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,null)},this.log=ei(t.loggerName??Qr.PCTransport),this.loggerOptions=t,this.config=e,this._pc=this.createPC(),this.offerLock=new _}createPC(){let e=new RTCPeerConnection(this.config);return e.onicecandidate=e=>{var t;e.candidate&&((t=this.onIceCandidate)==null||t.call(this,e.candidate))},e.onicecandidateerror=e=>{var t;(t=this.onIceCandidateError)==null||t.call(this,e)},e.oniceconnectionstatechange=()=>{var t;(t=this.onIceConnectionStateChange)==null||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;(t=this.onSignalingStatechange)==null||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;(t=this.onConnectionStateChange)==null||t.call(this,e.connectionState)},e.ondatachannel=e=>{var t;(t=this.onDataChannel)==null||t.call(this,e)},e.ontrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)},e}get logContext(){var e;return Object.assign({},(e=this.loggerOptions).loggerContextCb?.call(e))}get isICEConnected(){return this._pc!==null&&(this.pc.iceConnectionState===`connected`||this.pc.iceConnectionState===`completed`)}addIceCandidate(e){return k(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)})}setRemoteDescription(e,t){return k(this,void 0,void 0,function*(){if(e.type===`answer`&&this.latestOfferId>0&&t>0&&t!==this.latestOfferId)return this.log.warn(`ignoring answer for old offer`,Object.assign(Object.assign({},this.logContext),{offerId:t,latestOfferId:this.latestOfferId})),!1;let n;if(e.type===`offer`){let{stereoMids:t,nackMids:n}=Oc(e);this.remoteStereoMids=t,this.remoteNackMids=n}else if(e.type===`answer`){let t=xc.parse(e.sdp??``);t.media.forEach(e=>{let t=Ac(e.mid);e.type===`audio`&&this.trackBitrates.some(n=>{if(!n.transceiver||t!=n.transceiver.mid)return!1;let r=0;if(e.rtp.some(e=>e.codec.toUpperCase()===n.codec.toUpperCase()?(r=e.payload,!0):!1),r===0)return!0;let i=!1;for(let t of e.fmtp)if(t.payload===r){t.config=t.config.split(`;`).filter(e=>!e.includes(`maxaveragebitrate`)).join(`;`),n.maxbr>0&&(t.config+=`;maxaveragebitrate=${n.maxbr*1e3}`),i=!0;break}return i||n.maxbr>0&&e.fmtp.push({payload:r,config:`maxaveragebitrate=${n.maxbr*1e3}`}),!0})}),n=xc.write(t)}return yield this.setMungedSDP(e,n,!0),this.pendingCandidates.forEach(e=>{this.pc.addIceCandidate(e)}),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):e.type===`answer`&&(this.emit(Tc.NegotiationComplete),e.sdp&&xc.parse(e.sdp).media.forEach(e=>{e.type===`video`&&this.emit(Tc.RTPVideoPayloadTypes,e.rtp)})),!0})}createAndSendOffer(e){return k(this,void 0,void 0,function*(){let t=yield this.offerLock.lock();try{if(this.onOffer===void 0)return;if(e?.iceRestart&&(this.log.debug(`restarting ICE`,this.logContext),this.restartingIce=!0),this._pc&&this._pc.signalingState===`have-local-offer`){let t=this._pc.remoteDescription;if(e?.iceRestart&&t)yield this._pc.setRemoteDescription(t);else{this.renegotiate=!0;return}}else if(!this._pc||this._pc.signalingState===`closed`){this.log.warn(`could not createOffer with closed peer connection`,this.logContext);return}this.log.debug(`starting to negotiate`,this.logContext);let t=this.latestOfferId+1;this.latestOfferId=t;let n=yield this.pc.createOffer(e);this.log.debug(`original offer`,Object.assign({sdp:n.sdp},this.logContext));let r=xc.parse(n.sdp??``);if(r.media.forEach(e=>{kc(e),e.type===`audio`?Dc(e,[`all`],[]):e.type===`video`&&this.trackBitrates.some(t=>{if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let n=0;if(e.rtp.some(e=>e.codec.toUpperCase()===t.codec.toUpperCase()?(n=e.payload,!0):!1),n===0||(jo(t.codec)&&!Io()&&this.ensureVideoDDExtensionForSVC(e,r),!jo(t.codec)))return!0;let i=Math.round(t.maxbr*Cc);for(let t of e.fmtp)if(t.payload===n){t.config.includes(`x-google-start-bitrate`)||(t.config+=`;x-google-start-bitrate=${i}`);break}return!0})}),this.latestOfferId>t){this.log.warn(`latestOfferId mismatch`,Object.assign(Object.assign({},this.logContext),{latestOfferId:this.latestOfferId,offerId:t}));return}yield this.setMungedSDP(n,xc.write(r)),this.onOffer(n,this.latestOfferId)}finally{t()}})}createAndSetAnswer(){return k(this,void 0,void 0,function*(){let e=yield this.pc.createAnswer(),t=xc.parse(e.sdp??``);return t.media.forEach(e=>{kc(e),e.type===`audio`&&Dc(e,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(e,xc.write(t)),e})}createDataChannel(e,t){return this.pc.createDataChannel(e,t)}addTransceiver(e,t){return this.pc.addTransceiver(e,t)}addTransceiverOfKind(e,t){return this.pc.addTransceiver(e,t)}addTrack(e){if(!this._pc)throw new Pa(`PC closed, cannot add track`);return this._pc.addTrack(e)}setTrackCodecBitrate(e){this.trackBitrates.push(e)}setConfiguration(e){if(!this._pc)throw new Pa(`PC closed, cannot configure`);return this._pc?.setConfiguration(e)}canRemoveTrack(){return!!this._pc?.removeTrack}removeTrack(e){return this._pc?.removeTrack(e)}getConnectionState(){return this._pc?.connectionState??`closed`}getICEConnectionState(){return this._pc?.iceConnectionState??`closed`}getSignallingState(){return this._pc?.signalingState??`closed`}getTransceivers(){return this._pc?.getTransceivers()??[]}getSenders(){return this._pc?.getSenders()??[]}getLocalDescription(){return this._pc?.localDescription}getRemoteDescription(){return this.pc?.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return k(this,void 0,void 0,function*(){if(!this._pc)return;let e=``,t=new Map,n=new Map;if((yield this._pc.getStats()).forEach(r=>{switch(r.type){case`transport`:e=r.selectedCandidatePairId;break;case`candidate-pair`:e===``&&r.selected&&(e=r.id),t.set(r.id,r);break;case`remote-candidate`:n.set(r.id,`${r.address}:${r.port}`);break}}),e===``)return;let r=t.get(e)?.remoteCandidateId;if(r!==void 0)return n.get(r)})}setMungedSDP(e,t,n){return k(this,void 0,void 0,function*(){if(t){let r=e.sdp;e.sdp=t;try{this.log.debug(`setting munged ${n?`remote`:`local`} description`,this.logContext),n?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e);return}catch(n){this.log.warn(`not able to set ${e.type}, falling back to unmodified sdp`,Object.assign(Object.assign({},this.logContext),{error:n,sdp:t})),e.sdp=r}}try{n?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(t){let r=`unknown error`;t instanceof Error?r=t.message:typeof t==`string`&&(r=t);let i={error:r,sdp:e.sdp};throw!n&&this.pc.remoteDescription&&(i.remoteSdp=this.pc.remoteDescription),this.log.error(`unable to set ${e.type}`,Object.assign(Object.assign({},this.logContext),{fields:i})),new Fa(r)}})}ensureVideoDDExtensionForSVC(e,t){var n;if(!e.ext?.some(e=>e.uri===wo)){if(this.ddExtID===0){let e=0;t.media.forEach(t=>{var n;t.type===`video`&&((n=t.ext)==null||n.forEach(t=>{t.value>e&&(e=t.value)}))}),this.ddExtID=e+1}(n=e.ext)==null||n.push({value:this.ddExtID,uri:wo})}}};function Dc(e,t,n){let r=Ac(e.mid),i=0;e.rtp.some(e=>e.codec===`opus`?(i=e.payload,!0):!1),i>0&&(e.rtcpFb||=[],n.includes(r)&&!e.rtcpFb.some(e=>e.payload===i&&e.type===`nack`)&&e.rtcpFb.push({payload:i,type:`nack`}),(t.includes(r)||t.length===1&&t[0]===`all`)&&e.fmtp.some(e=>e.payload===i?(e.config.includes(`stereo=1`)||(e.config+=`;stereo=1`),!0):!1))}function Oc(e){let t=[],n=[],r=xc.parse(e.sdp??``),i=0;return r.media.forEach(e=>{let r=Ac(e.mid);e.type===`audio`&&(e.rtp.some(e=>e.codec===`opus`?(i=e.payload,!0):!1),e.rtcpFb?.some(e=>e.payload===i&&e.type===`nack`)&&n.push(r),e.fmtp.some(e=>e.payload===i?(e.config.includes(`sprop-stereo=1`)&&t.push(r),!0):!1))}),{stereoMids:t,nackMids:n}}function kc(e){if(e.connection){let t=e.connection.ip.indexOf(`:`)>=0;(e.connection.version===4&&t||e.connection.version===6&&!t)&&(e.connection.ip=`0.0.0.0`,e.connection.version=4)}}function Ac(e){return typeof e==`number`?e.toFixed(0):e}var jc=`vp8`,Mc={audioPreset:Xa.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:$a.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:jc,backupCodec:!0,preConnectBuffer:!1},Nc={deviceId:{ideal:`default`},autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},Pc={deviceId:{ideal:`default`},resolution:Za.h720.resolution},Fc={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new ii,disconnectOnPageLeave:!0,webAudioMix:!1,singlePeerConnection:!1},Ic={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3},Lc;(function(e){e[e.NEW=0]=`NEW`,e[e.CONNECTING=1]=`CONNECTING`,e[e.CONNECTED=2]=`CONNECTED`,e[e.FAILED=3]=`FAILED`,e[e.CLOSING=4]=`CLOSING`,e[e.CLOSED=5]=`CLOSED`})(Lc||={});var Rc=class{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}constructor(e,t,n){this.peerConnectionTimeout=Ic.peerConnectionTimeout,this.log=$r,this.updateState=()=>{var e;let t=this.state,n=this.requiredTransports.map(e=>e.getConnectionState());n.every(e=>e===`connected`)?this.state=Lc.CONNECTED:n.some(e=>e===`failed`)?this.state=Lc.FAILED:n.some(e=>e===`connecting`)?this.state=Lc.CONNECTING:n.every(e=>e===`closed`)?this.state=Lc.CLOSED:n.some(e=>e===`closed`)?this.state=Lc.CLOSING:n.every(e=>e===`new`)&&(this.state=Lc.NEW),t!==this.state&&(this.log.debug(`pc state change: from ${Lc[t]} to ${Lc[this.state]}`,this.logContext),(e=this.onStateChange)==null||e.call(this,this.state,this.publisher.getConnectionState(),this.subscriber?.getConnectionState()))},this.log=ei(n.loggerName??Qr.PCManager),this.loggerOptions=n,this.isPublisherConnectionRequired=t!==`subscriber-primary`,this.isSubscriberConnectionRequired=t===`subscriber-primary`,this.publisher=new Ec(e,n),t!==`publisher-only`&&(this.subscriber=new Ec(e,n),this.subscriber.onConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.subscriber.onIceCandidate=e=>{var t;(t=this.onIceCandidate)==null||t.call(this,e,Wn.SUBSCRIBER)},this.subscriber.onDataChannel=e=>{var t;(t=this.onDataChannel)==null||t.call(this,e)},this.subscriber.onTrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)}),this.publisher.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=e=>{var t;(t=this.onIceCandidate)==null||t.call(this,e,Wn.PUBLISHER)},this.publisher.onTrack=e=>{var t;(t=this.onTrack)==null||t.call(this,e)},this.publisher.onOffer=(e,t)=>{var n;(n=this.onPublisherOffer)==null||n.call(this,e,t)},this.state=Lc.NEW,this.connectionLock=new _,this.remoteOfferLock=new _}get logContext(){var e;return Object.assign({},(e=this.loggerOptions).loggerContextCb?.call(e))}requirePublisher(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.isPublisherConnectionRequired=e,this.updateState()}createAndSendPublisherOffer(e){return this.publisher.createAndSendOffer(e)}setPublisherAnswer(e,t){return this.publisher.setRemoteDescription(e,t)}removeTrack(e){return this.publisher.removeTrack(e)}close(){return k(this,void 0,void 0,function*(){if(this.publisher&&this.publisher.getSignallingState()!==`closed`){let e=this.publisher;for(let t of e.getSenders())try{e.canRemoveTrack()&&e.removeTrack(t)}catch(e){this.log.warn(`could not removeTrack`,Object.assign(Object.assign({},this.logContext),{error:e}))}}yield Promise.all([this.publisher.close(),this.subscriber?.close()]),this.updateState()})}triggerIceRestart(){return k(this,void 0,void 0,function*(){this.subscriber&&(this.subscriber.restartingIce=!0),this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(e,t){return k(this,void 0,void 0,function*(){t===Wn.PUBLISHER?yield this.publisher.addIceCandidate(e):yield this.subscriber?.addIceCandidate(e)})}createSubscriberAnswerFromOffer(e,t){return k(this,void 0,void 0,function*(){this.log.debug(`received server offer`,Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,signalingState:this.subscriber?.getSignallingState().toString()}));let n=yield this.remoteOfferLock.lock();try{return(yield this.subscriber?.setRemoteDescription(e,t))?yield this.subscriber?.createAndSetAnswer():void 0}finally{n()}})}updateConfiguration(e,t){var n;this.publisher.setConfiguration(e),(n=this.subscriber)==null||n.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return k(this,void 0,void 0,function*(){let n=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&this.publisher.getConnectionState()!==`connected`&&this.publisher.getConnectionState()!==`connecting`&&(this.log.debug(`negotiation required, start negotiating`,this.logContext),this.publisher.negotiate()),yield Promise.all(this.requiredTransports?.map(n=>this.ensureTransportConnected(n,e,t)))}finally{n()}})}negotiate(e){return k(this,void 0,void 0,function*(){return new Promise((t,n)=>k(this,void 0,void 0,function*(){let r=setTimeout(()=>{n(`negotiation timed out`)},this.peerConnectionTimeout);e.signal.addEventListener(`abort`,()=>{clearTimeout(r),n(`negotiation aborted`)}),this.publisher.once(Tc.NegotiationStarted,()=>{e.signal.aborted||this.publisher.once(Tc.NegotiationComplete,()=>{clearTimeout(r),t()})}),yield this.publisher.negotiate(e=>{clearTimeout(r),n(e)})}))})}addPublisherTransceiver(e,t){return this.publisher.addTransceiver(e,t)}addPublisherTransceiverOfKind(e,t){return this.publisher.addTransceiverOfKind(e,t)}getMidForReceiver(e){return(this.subscriber?this.subscriber.getTransceivers():this.publisher.getTransceivers()).find(t=>t.receiver===e)?.mid}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===Wn.PUBLISHER||e===Wn.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){let e=[];return this.isPublisherConnectionRequired&&e.push(this.publisher),this.isSubscriberConnectionRequired&&this.subscriber&&e.push(this.subscriber),e}ensureTransportConnected(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.peerConnectionTimeout;return function*(){if(e.getConnectionState()!==`connected`)return new Promise((e,i)=>k(n,void 0,void 0,function*(){let n=()=>{this.log.warn(`abort transport connection`,this.logContext),Ha.clearTimeout(a),i(Aa.cancelled(`room connection has been cancelled`))};t?.signal.aborted&&n(),t?.signal.addEventListener(`abort`,n);let a=Ha.setTimeout(()=>{t?.signal.removeEventListener(`abort`,n),i(Aa.internal(`could not establish pc connection`))},r);for(;this.state!==Lc.CONNECTED;)if(yield Eo(50),t?.signal.aborted){i(Aa.cancelled(`room connection has been cancelled`));return}Ha.clearTimeout(a),t?.signal.removeEventListener(`abort`,n),e()}))}()})}},zc=5e3,Bc=3e4,Vc=class e{static fetchRegionSettings(t,n,r){return k(this,void 0,void 0,function*(){let i=yield e.fetchLock.lock();try{let e=yield fetch(`${Hc(t)}/regions`,{headers:{authorization:`Bearer ${n}`},signal:r});if(e.ok){let t=Es(e.headers),n=t?t*1e3:zc;return{regionSettings:yield e.json(),updatedAtInMs:Date.now(),maxAgeInMs:n}}else if(e.status===401)throw Aa.notAllowed(`Could not fetch region settings: ${e.statusText}`,e.status);else throw Aa.internal(`Could not fetch region settings: ${e.statusText}`)}catch(e){throw e instanceof Aa?e:r?.aborted?Aa.cancelled(`Region fetching was aborted`):Aa.serverUnreachable(`Could not fetch region settings, ${e instanceof Error?`${e.name}: ${e.message}`:e}`)}finally{i()}})}static scheduleRefetch(t,n,r){return k(this,void 0,void 0,function*(){let i=e.settingsTimeouts.get(t.hostname);clearTimeout(i),e.settingsTimeouts.set(t.hostname,setTimeout(()=>k(this,void 0,void 0,function*(){try{let r=yield e.fetchRegionSettings(t,n);e.updateCachedRegionSettings(t,n,r)}catch(i){if(i instanceof Aa&&i.reason===ka.NotAllowed){$r.debug(`token is not valid, cancelling auto region refresh`);return}$r.debug(`auto refetching of region settings failed`,{error:i}),e.scheduleRefetch(t,n,r)}}),r))})}static updateCachedRegionSettings(t,n,r){e.cache.set(t.hostname,r),e.scheduleRefetch(t,n,r.maxAgeInMs)}static stopRefetch(t){let n=e.settingsTimeouts.get(t);n&&(clearTimeout(n),e.settingsTimeouts.delete(t))}static scheduleCleanup(t){let n=e.connectionTrackers.get(t);n&&(n.cleanupTimeout&&clearTimeout(n.cleanupTimeout),n.cleanupTimeout=setTimeout(()=>{let n=e.connectionTrackers.get(t);n&&n.connectionCount===0&&($r.debug(`stopping region refetch after disconnect delay`,{hostname:t}),e.stopRefetch(t)),n&&(n.cleanupTimeout=void 0)},Bc))}static cancelCleanup(t){let n=e.connectionTrackers.get(t);n?.cleanupTimeout&&(clearTimeout(n.cleanupTimeout),n.cleanupTimeout=void 0)}notifyConnected(){let t=this.serverUrl.hostname,n=e.connectionTrackers.get(t);n||(n={connectionCount:0},e.connectionTrackers.set(t,n)),n.connectionCount++,e.cancelCleanup(t)}notifyDisconnected(){let t=this.serverUrl.hostname,n=e.connectionTrackers.get(t);n&&(n.connectionCount=Math.max(0,n.connectionCount-1),n.connectionCount===0&&e.scheduleCleanup(t))}constructor(e,t){this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){this.token=e}isCloud(){return Wo(this.serverUrl)}getServerUrl(){return this.serverUrl}fetchRegionSettings(t){return k(this,void 0,void 0,function*(){return e.fetchRegionSettings(this.serverUrl,this.token,t)})}getNextBestRegionUrl(t){return k(this,void 0,void 0,function*(){if(!this.isCloud())throw Error(`region availability is only supported for LiveKit Cloud domains`);let n=e.cache.get(this.serverUrl.hostname);(!n||Date.now()-n.updatedAtInMs>n.maxAgeInMs)&&(n=yield this.fetchRegionSettings(t),e.updateCachedRegionSettings(this.serverUrl,this.token,n));let r=n.regionSettings.regions.filter(e=>!this.attemptedRegions.find(t=>t.url===e.url));if(r.length>0){let e=r[0];return this.attemptedRegions.push(e),$r.debug(`next region: ${e.region}`),e.url}else return null})}resetAttempts(){this.attemptedRegions=[]}setServerReportedRegions(t){e.updateCachedRegionSettings(this.serverUrl,this.token,t)}};Vc.cache=new Map,Vc.settingsTimeouts=new Map,Vc.connectionTrackers=new Map,Vc.fetchLock=new _;function Hc(e){return`${e.protocol.replace(`ws`,`http`)}//${e.host}/settings`}var Uc=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.message=Kc(n,e.MAX_MESSAGE_BYTES),this.data=r?Kc(r,e.MAX_DATA_BYTES):void 0}static fromProto(t){return new e(t.code,t.message,t.data)}toProto(){return new Dn({code:this.code,message:this.message,data:this.data})}static builtIn(t,n){return new e(e.ErrorCode[t],e.ErrorMessage[t],n)}};Uc.MAX_MESSAGE_BYTES=256,Uc.MAX_DATA_BYTES=15360,Uc.ErrorCode={APPLICATION_ERROR:1500,CONNECTION_TIMEOUT:1501,RESPONSE_TIMEOUT:1502,RECIPIENT_DISCONNECTED:1503,RESPONSE_PAYLOAD_TOO_LARGE:1504,SEND_FAILED:1505,UNSUPPORTED_METHOD:1400,RECIPIENT_NOT_FOUND:1401,REQUEST_PAYLOAD_TOO_LARGE:1402,UNSUPPORTED_SERVER:1403,UNSUPPORTED_VERSION:1404},Uc.ErrorMessage={APPLICATION_ERROR:`Application error in method handler`,CONNECTION_TIMEOUT:`Connection timeout`,RESPONSE_TIMEOUT:`Response timeout`,RECIPIENT_DISCONNECTED:`Recipient disconnected`,RESPONSE_PAYLOAD_TOO_LARGE:`Response payload too large`,SEND_FAILED:`Failed to send`,UNSUPPORTED_METHOD:`Method not supported at destination`,RECIPIENT_NOT_FOUND:`Recipient not found`,REQUEST_PAYLOAD_TOO_LARGE:`Request payload too large`,UNSUPPORTED_SERVER:`RPC not supported by server`,UNSUPPORTED_VERSION:`Unsupported RPC version`};var Wc=15360;function Gc(e){return new TextEncoder().encode(e).length}function Kc(e,t){if(Gc(e)<=t)return e;let n=0,r=e.length,i=new TextEncoder;for(;n<r;){let a=Math.floor((n+r+1)/2);i.encode(e.slice(0,a)).length<=t?n=a:r=a-1}return e.slice(0,n)}var qc=2e3;function Jc(e,t){if(!t)return 0;let n,r;return`bytesReceived`in e?(n=e.bytesReceived,r=t.bytesReceived):`bytesSent`in e&&(n=e.bytesSent,r=t.bytesSent),n===void 0||r===void 0||e.timestamp===void 0||t.timestamp===void 0?0:(n-r)*8*1e3/(e.timestamp-t.timestamp)}var Yc=typeof MediaRecorder<`u`,Xc=Yc?MediaRecorder:class{constructor(){throw Error(`MediaRecorder is not available in this environment`)}},Zc=class extends Xc{constructor(e,t){if(!Yc)throw Error(`MediaRecorder is not available in this environment`);super(new MediaStream([e.mediaStreamTrack]),t);let n,r,i=()=>r===void 0,a=()=>{this.removeEventListener(`dataavailable`,n),this.removeEventListener(`stop`,a),this.removeEventListener(`error`,o),r?.close(),r=void 0},o=e=>{r?.error(e),this.removeEventListener(`dataavailable`,n),this.removeEventListener(`stop`,a),this.removeEventListener(`error`,o),r=void 0};this.byteStream=new ReadableStream({start:e=>{r=e,n=t=>k(this,void 0,void 0,function*(){let n;if(t.data.arrayBuffer){let e=yield t.data.arrayBuffer();n=new Uint8Array(e)}else if(t.data.byteArray)n=t.data.byteArray;else throw Error(`no data available!`);i()||e.enqueue(n)}),this.addEventListener(`dataavailable`,n)},cancel:()=>{a()}}),this.addEventListener(`stop`,a),this.addEventListener(`error`,o)}};function Qc(){return Yc}var $c=1e3,el=1e4,tl=class extends P{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}get hasPreConnectBuffer(){return!!this.localTrackRecorder}constructor(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=arguments.length>4?arguments[4]:void 0;super(e,t,i),this.manuallyStopped=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch(()=>this.log.debug(`track mute bounce got cancelled by an unmute event`,this.logContext)),this.debouncedTrackMuteHandler=Sc(()=>k(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>k(this,void 0,void 0,function*(){this.debouncedTrackMuteHandler.cancel(`unmute`),yield this.resumeUpstream()}),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent),this.emit(N.Ended,this)},this.reacquireTrack=!1,this.providedByUser=r,this.muteLock=new _,this.pauseUpstreamLock=new _,this.trackChangeLock=new _,this.trackChangeLock.lock().then(t=>k(this,void 0,void 0,function*(){try{yield this.setMediaStreamTrack(e,!0)}finally{t()}})),this._constraints=e.getConstraints(),n&&(this._constraints=n)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==P.Kind.Video)return;let{width:e,height:t}=this._mediaStreamTrack.getSettings();if(e&&t)return{width:e,height:t}}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){return this.processor?.processedTrack??this._mediaStreamTrack}get isLocal(){return!0}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(e,t){return k(this,void 0,void 0,function*(){if(e===this._mediaStreamTrack&&!t)return;this._mediaStreamTrack&&(this.attachedElements.forEach(e=>{So(this._mediaStreamTrack,e)}),this.debouncedTrackMuteHandler.cancel(`new-track`),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent)),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener(`ended`,this.handleEnded),e.addEventListener(`mute`,this.handleTrackMuteEvent),e.addEventListener(`unmute`,this.handleTrackUnmuteEvent),this._constraints=e.getConstraints());let n;if(this.processor&&e){if(this.log.debug(`restarting processor`,this.logContext),this.kind===`unknown`)throw TypeError(`cannot set processor on track of unknown kind`);this.processorElement&&(xo(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),n=this.processor.processedTrack}this.sender&&this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(n??e)),!this.providedByUser&&this._mediaStreamTrack!==e&&this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(t=>{xo(n??e,t)}))})}waitForDimensions(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$c;return function*(){if(e.kind===P.Kind.Audio)throw Error(`cannot get dimensions for audio tracks`);Ca()?.os===`iOS`&&(yield Eo(10));let n=Date.now();for(;Date.now()-n<t;){let t=e.dimensions;if(t)return t;yield Eo(50)}throw new Ma(`unable to get track dimensions after timeout`)}()})}setDeviceId(e){return k(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===cs(e)||(this._constraints.deviceId=e,this.isMuted)?!0:(yield this.restartTrack(),cs(e)===this._mediaStreamTrack.getSettings().deviceId)})}getDeviceId(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){if(e.source===P.Source.ScreenShare)return;let{deviceId:n,groupId:r}=e._mediaStreamTrack.getSettings(),i=e.kind===P.Kind.Audio?`audioinput`:`videoinput`;return t?Js.getInstance().normalizeDeviceId(i,n,r):n}()})}mute(){return k(this,void 0,void 0,function*(){return this.setTrackMuted(!0),this})}unmute(){return k(this,void 0,void 0,function*(){return this.setTrackMuted(!1),this})}replaceTrack(e,t){return k(this,void 0,void 0,function*(){let n=yield this.trackChangeLock.lock();try{if(!this.sender)throw new Ma(`unable to replace an unpublished track`);let n,r;return typeof t==`boolean`?n=t:t!==void 0&&(n=t.userProvidedTrack,r=t.stopProcessor),this.providedByUser=n??!0,this.log.debug(`replace MediaStreamTrack`,this.logContext),yield this.setMediaStreamTrack(e),r&&this.processor&&(yield this.internalStopProcessor()),this}finally{n()}})}restart(e){return k(this,void 0,void 0,function*(){this.manuallyStopped=!1;let t=yield this.trackChangeLock.lock();try{e||=this._constraints;let{deviceId:t,facingMode:n}=e,r=ai(e,[`deviceId`,`facingMode`]);this.log.debug(`restarting track with constraints`,Object.assign(Object.assign({},this.logContext),{constraints:e}));let i={audio:!1,video:!1};this.kind===P.Kind.Video?i.video=t||n?{deviceId:t,facingMode:n}:!0:i.audio=t?Object.assign({deviceId:t},r):!0,this.attachedElements.forEach(e=>{So(this.mediaStreamTrack,e)}),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.stop();let a=(yield navigator.mediaDevices.getUserMedia(i)).getTracks()[0];return this.kind===P.Kind.Video&&(yield a.applyConstraints(r)),a.addEventListener(`ended`,this.handleEnded),this.log.debug(`re-acquired MediaStreamTrack`,this.logContext),yield this.setMediaStreamTrack(a),this._constraints=e,this.emit(N.Restarted,this),this.manuallyStopped&&(this.log.warn(`track was stopped during a restart, stopping restarted track`,this.logContext),this.stop()),this}finally{t()}})}setTrackMuted(e){this.log.debug(`setting ${this.kind} track ${e?`muted`:`unmuted`}`,this.logContext),!(this.isMuted===e&&this._mediaStreamTrack.enabled!==e)&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}get needsReAcquisition(){return this._mediaStreamTrack.readyState!==`live`||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Bo()&&(this.log.debug(`visibility changed, is in Background: ${this.isInBackground}`,this.logContext),!this.isInBackground&&this.needsReAcquisition&&!this.isUserProvided&&!this.isMuted&&(this.log.debug(`track needs to be reacquired, restarting ${this.source}`,this.logContext),yield this.restart(),this.reacquireTrack=!1))})}stop(){var e;this.manuallyStopped=!0,super.stop(),this._mediaStreamTrack.removeEventListener(`ended`,this.handleEnded),this._mediaStreamTrack.removeEventListener(`mute`,this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener(`unmute`,this.handleTrackUnmuteEvent),(e=this.processor)==null||e.destroy(),this.processor=void 0}pauseUpstream(){return k(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!0)return;if(!this.sender){this.log.warn(`unable to pause upstream for an unpublished track`,this.logContext);return}this._isUpstreamPaused=!0,this.emit(N.UpstreamPaused,this);let e=Ca();if(e?.name===`Safari`&&Yo(e.version,`12.0`)<0)throw new ja(`pauseUpstream is not supported on Safari < 12.`);this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(null))}finally{e()}})}resumeUpstream(){return k(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(this._isUpstreamPaused===!1)return;if(!this.sender){this.log.warn(`unable to resume upstream for an unpublished track`,this.logContext);return}this._isUpstreamPaused=!1,this.emit(N.UpstreamResumed,this),this.sender.transport?.state!==`closed`&&(yield this.sender.replaceTrack(this.mediaStreamTrack))}finally{e()}})}getRTCStatsReport(){return k(this,void 0,void 0,function*(){if(this.sender?.getStats)return yield this.sender.getStats()})}setProcessor(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){let r=yield t.trackChangeLock.lock();try{t.log.debug(`setting up processor`,t.logContext);let r=document.createElement(t.kind),i={kind:t.kind,track:t._mediaStreamTrack,element:r,audioContext:t.audioContext};if(yield e.init(i),t.log.debug(`processor initialized`,t.logContext),t.processor&&(yield t.internalStopProcessor()),t.kind===`unknown`)throw TypeError(`cannot set processor on track of unknown kind`);if(xo(t._mediaStreamTrack,r),r.muted=!0,r.play().catch(e=>{e instanceof DOMException&&e.name===`AbortError`?(t.log.warn(`failed to play processor element, retrying`,Object.assign(Object.assign({},t.logContext),{error:e})),setTimeout(()=>{r.play().catch(e=>{t.log.error(`failed to play processor element`,Object.assign(Object.assign({},t.logContext),{err:e}))})},100)):t.log.error(`failed to play processor element`,Object.assign(Object.assign({},t.logContext),{error:e}))}),t.processor=e,t.processorElement=r,t.processor.processedTrack){for(let e of t.attachedElements)e!==t.processorElement&&n&&(So(t._mediaStreamTrack,e),xo(t.processor.processedTrack,e));yield t.sender?.replaceTrack(t.processor.processedTrack)}t.emit(N.TrackProcessorUpdate,t.processor)}finally{r()}}()})}getProcessor(){return this.processor}stopProcessor(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){let n=yield e.trackChangeLock.lock();try{yield e.internalStopProcessor(t)}finally{n()}}()})}internalStopProcessor(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var n,r;e.processor&&(e.log.debug(`stopping processor`,e.logContext),(n=e.processor.processedTrack)==null||n.stop(),yield e.processor.destroy(),e.processor=void 0,t||((r=e.processorElement)==null||r.remove(),e.processorElement=void 0),yield e._mediaStreamTrack.applyConstraints(e._constraints),yield e.setMediaStreamTrack(e._mediaStreamTrack,!0),e.emit(N.TrackProcessorUpdate))}()})}startPreConnectBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:100;if(!Qc()){this.log.warn(`MediaRecorder is not available, cannot start preconnect buffer`,this.logContext);return}if(this.localTrackRecorder){this.log.warn(`preconnect buffer already started`);return}else{let e=`audio/webm;codecs=opus`;MediaRecorder.isTypeSupported(e)||(e=`video/mp4`),this.localTrackRecorder=new Zc(this,{mimeType:e})}this.localTrackRecorder.start(e),this.autoStopPreConnectBuffer=setTimeout(()=>{this.log.warn(`preconnect buffer timed out, stopping recording automatically`,this.logContext),this.stopPreConnectBuffer()},el)}stopPreConnectBuffer(){clearTimeout(this.autoStopPreConnectBuffer),this.localTrackRecorder&&=(this.localTrackRecorder.stop(),void 0)}getPreConnectBuffer(){return this.localTrackRecorder?.byteStream}getPreConnectBufferMimeType(){return this.localTrackRecorder?.mimeType}},nl=class extends tl{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;super(e,P.Kind.Audio,t,n,i),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>k(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let e;try{e=yield this.getSenderStats()}catch(e){this.log.error(`could not get audio sender stats`,Object.assign(Object.assign({},this.logContext),{error:e}));return}e&&this.prevStats&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug(`Krisp noise filter enabled`,this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,$t.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug(`Krisp noise filter disabled`,this.logContext),this.emit(N.AudioTrackFeatureUpdate,this,$t.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=r,this.checkForSilence()}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug(`Track already muted`,this.logContext),this):(this.source===P.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug(`stopping mic track`,this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug(`Track already unmuted`,this.logContext),this;let t=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==cs(this._constraints.deviceId);return this.source===P.Source.Microphone&&(this.stopOnMute||this._mediaStreamTrack.readyState===`ended`||t)&&!this.isUserProvided&&(this.log.debug(`reacquiring mic track`,this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}})}restartTrack(e){return k(this,void 0,void 0,function*(){let t;if(e){let n=no({audio:e});typeof n.audio!=`boolean`&&(t=n.audio)}yield this.restart(t)})}restart(e){let t=Object.create(null,{restart:{get:()=>super.restart}});return k(this,void 0,void 0,function*(){let n=yield t.restart.call(this,e);return this.checkForSilence(),n})}startMonitor(){Ho()&&(this.monitorInterval||=setInterval(()=>{this.monitorSender()},qc))}setProcessor(e){return k(this,void 0,void 0,function*(){let t=yield this.trackChangeLock.lock();try{if(!Uo()&&!this.audioContext)throw Error(`Audio context needs to be set on LocalAudioTrack in order to enable processors`);this.processor&&(yield this.internalStopProcessor());let t={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};this.log.debug(`setting up audio processor ${e.name}`,this.logContext),yield e.init(t),this.processor=e,this.processor.processedTrack&&(yield this.sender?.replaceTrack(this.processor.processedTrack),this.processor.processedTrack.addEventListener(`enable-lk-krisp-noise-filter`,this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener(`disable-lk-krisp-noise-filter`,this.handleKrispNoiseFilterDisable)),this.emit(N.TrackProcessorUpdate,this.processor)}finally{t()}})}setAudioContext(e){this.audioContext=e}getSenderStats(){return k(this,void 0,void 0,function*(){if(!this.sender?.getStats)return;let e=yield this.sender.getStats(),t;return e.forEach(e=>{e.type===`outbound-rtp`&&(t={type:`audio`,streamId:e.id,packetsSent:e.packetsSent,packetsLost:e.packetsLost,bytesSent:e.bytesSent,timestamp:e.timestamp,roundTripTime:e.roundTripTime,jitter:e.jitter})}),t})}checkForSilence(){return k(this,void 0,void 0,function*(){let e=yield ro(this);return e&&(this.isMuted||this.log.debug(`silence detected on local audio track`,this.logContext),this.emit(N.AudioSilenceDetected)),e})}};function rl(e,t,n){switch(e.kind){case`audio`:return new nl(e,t,!1,void 0,n);case`video`:return new xl(e,t,!1,n);default:throw new Ma(`unsupported track type: ${e.kind}`)}}var il=Object.values(Za),al=Object.values(Qa),ol=Object.values($a),sl=[Za.h180,Za.h360],cl=[Qa.h180,Qa.h360],ll=e=>[{scaleResolutionDownBy:2,fps:e.encoding.maxFramerate}].map(t=>new Wa(Math.floor(e.width/t.scaleResolutionDownBy),Math.floor(e.height/t.scaleResolutionDownBy),Math.max(15e4,Math.floor(e.encoding.maxBitrate/(t.scaleResolutionDownBy**2*((e.encoding.maxFramerate??30)/(t.fps??30))))),t.fps,e.encoding.priority)),ul=[`q`,`h`,`f`];function dl(e,t,n,r){let i=r?.videoEncoding;e&&(i=r?.screenShareEncoding);let a=r?.simulcast,o=r?.scalabilityMode,s=r?.videoCodec;if(!i&&!a&&!o||!t||!n)return[{}];i||(i=pl(e,t,n,s),$r.debug(`using video encoding`,i));let c=i.maxFramerate,l=new Wa(t,n,i.maxBitrate,i.maxFramerate,i.priority);if(o&&jo(s)){let e=new vl(o),t=[];if(e.spatial>3)throw Error(`unsupported scalabilityMode: ${o}`);let n=Ca();if(Lo()||Uo()||n?.name===`Chrome`&&Yo(n?.version,`113`)<0){let r=e.suffix==`h`?2:3,a=zo(n);for(let n=0;n<e.spatial;n+=1)t.push({rid:ul[2-n],maxBitrate:i.maxBitrate/r**+n,maxFramerate:l.encoding.maxFramerate,scaleResolutionDownBy:a?2**n:void 0});t[0].scalabilityMode=o}else t.push({maxBitrate:i.maxBitrate,maxFramerate:l.encoding.maxFramerate,scalabilityMode:o});return l.encoding.priority&&(t[0].priority=l.encoding.priority,t[0].networkPriority=l.encoding.priority),$r.debug(`using svc encoding`,{encodings:t}),t}if(!a)return[i];let u=[];u=e?_l(r?.screenShareSimulcastLayers)??hl(e,l):_l(r?.videoSimulcastLayers)??hl(e,l);let d;if(u.length>0){let e=u[0];u.length>1&&([,d]=u);let r=Math.max(t,n);if(r>=960&&d)return gl(t,n,[e,d,l],c);if(r>=480)return gl(t,n,[e,l],c)}return gl(t,n,[l])}function fl(e,t,n){if(!n.backupCodec||n.backupCodec===!0||n.backupCodec.codec===n.videoCodec)return;t!==n.backupCodec.codec&&$r.warn(`requested a different codec than specified as backup`,{serverRequested:t,backup:n.backupCodec.codec}),n.videoCodec=t,n.videoEncoding=n.backupCodec.encoding;let r=e.mediaStreamTrack.getSettings(),i=r.width??e.dimensions?.width,a=r.height??e.dimensions?.height;return e.source===P.Source.ScreenShare&&n.simulcast&&(n.simulcast=!1),dl(e.source===P.Source.ScreenShare,i,a,n)}function pl(e,t,n,r){let i=ml(e,t,n),{encoding:a}=i[0],o=Math.max(t,n);for(let e=0;e<i.length;e+=1){let t=i[e];if(a=t.encoding,t.width>=o)break}if(r)switch(r){case`av1`:case`h265`:a=Object.assign({},a),a.maxBitrate*=.7;break;case`vp9`:a=Object.assign({},a),a.maxBitrate*=.85;break}return a}function ml(e,t,n){if(e)return ol;let r=t>n?t/n:n/t;return Math.abs(r-16/9)<Math.abs(r-4/3)?il:al}function hl(e,t){if(e)return ll(t);let{width:n,height:r}=t,i=n>r?n/r:r/n;return Math.abs(i-16/9)<Math.abs(i-4/3)?sl:cl}function gl(e,t,n,r){let i=[];if(n.forEach((n,a)=>{if(a>=ul.length)return;let o=Math.min(e,t),s={rid:ul[a],scaleResolutionDownBy:Math.max(1,o/Math.min(n.width,n.height)),maxBitrate:n.encoding.maxBitrate},c=r&&n.encoding.maxFramerate?Math.min(r,n.encoding.maxFramerate):n.encoding.maxFramerate;c&&(s.maxFramerate=c);let l=Po()||a===0;n.encoding.priority&&l&&(s.priority=n.encoding.priority,s.networkPriority=n.encoding.priority),i.push(s)}),Uo()&&qo()===`ios`){let e;i.forEach(t=>{e?t.maxFramerate&&t.maxFramerate>e&&(e=t.maxFramerate):e=t.maxFramerate});let t=!0;i.forEach(n=>{n.maxFramerate!=e&&(t&&(t=!1,$r.info(`Simulcast on iOS React-Native requires all encodings to share the same framerate.`)),$r.info(`Setting framerate of encoding "${n.rid??``}" to ${e}`),n.maxFramerate=e)})}return i}function _l(e){if(e)return e.sort((e,t)=>{let{encoding:n}=e,{encoding:r}=t;return n.maxBitrate>r.maxBitrate?1:n.maxBitrate<r.maxBitrate?-1:n.maxBitrate===r.maxBitrate&&n.maxFramerate&&r.maxFramerate?n.maxFramerate>r.maxFramerate?1:-1:0})}var vl=class{constructor(e){let t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw Error(`invalid scalability mode`);if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case`h`:case`_KEY`:case`_KEY_SHIFT`:this.suffix=t[3]}}toString(){return`L${this.spatial}T${this.temporal}${this.suffix??``}`}};function yl(e){return e.source===P.Source.ScreenShare||e.constraints.height&&cs(e.constraints.height)>=1080?`maintain-resolution`:`balanced`}var bl=5e3,xl=class extends tl{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3?arguments[3]:void 0;super(e,P.Kind.Video,t,n,r),this.simulcastCodecs=new Map,this.degradationPreference=`balanced`,this.isCpuConstrained=!1,this.optimizeForPerformance=!1,this.monitorSender=()=>k(this,void 0,void 0,function*(){if(!this.sender){this._currentBitrate=0;return}let e;try{e=yield this.getSenderStats()}catch(e){this.log.error(`could not get video sender stats`,Object.assign(Object.assign({},this.logContext),{error:e}));return}let t=new Map(e.map(e=>[e.rid,e])),n=e.some(e=>e.qualityLimitationReason===`cpu`);if(n!==this.isCpuConstrained&&(this.isCpuConstrained=n,this.isCpuConstrained&&this.emit(N.CpuConstrained)),this.prevStats){let e=0;t.forEach((t,n)=>{let r=this.prevStats?.get(n);e+=Jc(t,r)}),this._currentBitrate=e}this.prevStats=t}),this.senderLock=new _}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){if(this.signalClient=e,!Ho())return;let t=this.sender?.getParameters();t&&(this.encodings=t.encodings),!this.monitorInterval&&(this.monitorInterval=setInterval(()=>{this.monitorSender()},qc))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(e=>{e.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){let e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return k(this,void 0,void 0,function*(){var t,n,r,i;yield e.pauseUpstream.call(this);try{for(var a=!0,o=si(this.simulcastCodecs.values()),s;s=yield o.next(),t=s.done,!t;a=!0)i=s.value,a=!1,yield i.sender?.replaceTrack(null)}catch(e){n={error:e}}finally{try{!a&&!t&&(r=o.return)&&(yield r.call(o))}finally{if(n)throw n.error}}})}resumeUpstream(){let e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return k(this,void 0,void 0,function*(){var t,n,r,i;yield e.resumeUpstream.call(this);try{for(var a=!0,o=si(this.simulcastCodecs.values()),s;s=yield o.next(),t=s.done,!t;a=!0){i=s.value,a=!1;let e=i;yield e.sender?.replaceTrack(e.mediaStreamTrack)}}catch(e){n={error:e}}finally{try{!a&&!t&&(r=o.return)&&(yield r.call(o))}finally{if(n)throw n.error}}})}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.log.debug(`Track already muted`,this.logContext),this):(this.source===P.Source.Camera&&!this.isUserProvided&&(this.log.debug(`stopping camera track`,this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this)}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return k(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{return this.isMuted?(this.source===P.Source.Camera&&!this.isUserProvided&&(this.log.debug(`reacquiring camera track`,this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this):(this.log.debug(`Track already unmuted`,this.logContext),this)}finally{t()}})}setTrackMuted(e){super.setTrackMuted(e);for(let t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){return k(this,void 0,void 0,function*(){if(!this.sender?.getStats)return[];let e=[],t=yield this.sender.getStats();return t.forEach(n=>{if(n.type===`outbound-rtp`){let r={type:`video`,streamId:n.id,frameHeight:n.frameHeight,frameWidth:n.frameWidth,framesPerSecond:n.framesPerSecond,framesSent:n.framesSent,firCount:n.firCount,pliCount:n.pliCount,nackCount:n.nackCount,packetsSent:n.packetsSent,bytesSent:n.bytesSent,qualityLimitationReason:n.qualityLimitationReason,qualityLimitationDurations:n.qualityLimitationDurations,qualityLimitationResolutionChanges:n.qualityLimitationResolutionChanges,rid:n.rid??n.id,retransmittedPacketsSent:n.retransmittedPacketsSent,targetBitrate:n.targetBitrate,timestamp:n.timestamp},i=t.get(n.remoteId);i&&(r.jitter=i.jitter,r.packetsLost=i.packetsLost,r.roundTripTime=i.roundTripTime),e.push(r)}}),e.sort((e,t)=>(t.frameWidth??0)-(e.frameWidth??0)),e})}setPublishingQuality(e){let t=[];for(let n=bo.LOW;n<=bo.HIGH;n+=1)t.push(new br({quality:n,enabled:n<=e}));this.log.debug(`setting publishing quality. max quality ${e}`,this.logContext),this.setPublishingLayers(jo(this.codec),t)}restartTrack(e){return k(this,void 0,void 0,function*(){var t,n,r,i;let a;if(e){let t=no({video:e});typeof t.video!=`boolean`&&(a=t.video)}yield this.restart(a),this.isCpuConstrained=!1;try{for(var o=!0,s=si(this.simulcastCodecs.values()),c;c=yield s.next(),t=c.done,!t;o=!0){i=c.value,o=!1;let e=i;e.sender&&e.sender.transport?.state!==`closed`&&(e.mediaStreamTrack=this.mediaStreamTrack.clone(),yield e.sender.replaceTrack(e.mediaStreamTrack))}}catch(e){n={error:e}}finally{try{!o&&!t&&(r=s.return)&&(yield r.call(s))}finally{if(n)throw n.error}}})}setProcessor(e){let t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return k(this,arguments,void 0,function(e){var n=this;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){var i,a,o,s;if(yield t.setProcessor.call(n,e,r),n.processor?.processedTrack)try{for(var c=!0,l=si(n.simulcastCodecs.values()),u;u=yield l.next(),i=u.done,!i;c=!0)s=u.value,c=!1,yield s.sender?.replaceTrack(n.processor.processedTrack)}catch(e){a={error:e}}finally{try{!c&&!i&&(o=l.return)&&(yield o.call(l))}finally{if(a)throw a.error}}}()})}setDegradationPreference(e){return k(this,void 0,void 0,function*(){if(this.degradationPreference=e,this.sender)try{this.log.debug(`setting degradationPreference to ${e}`,this.logContext);let t=this.sender.getParameters();t.degradationPreference=e,this.sender.setParameters(t)}catch(e){this.log.warn(`failed to set degradationPreference`,Object.assign({error:e},this.logContext))}})}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e)){this.log.error(`${e} already added, skipping adding simulcast codec`,this.logContext);return}let n={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,n),n}setSimulcastTrackSender(e,t){let n=this.simulcastCodecs.get(e);n&&(n.sender=t,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},bl))}setPublishingCodecs(e){return k(this,void 0,void 0,function*(){var t,n,r,i,a,o,s;if(this.log.debug(`setting publishing codecs`,Object.assign(Object.assign({},this.logContext),{codecs:e,currentCodec:this.codec})),!this.codec&&e.length>0)return yield this.setPublishingLayers(jo(e[0].codec),e[0].qualities),[];this.subscribedCodecs=e;let c=[];try{for(t=!0,n=si(e);r=yield n.next(),i=r.done,!i;t=!0){s=r.value,t=!1;let e=s;if(!this.codec||this.codec===e.codec)yield this.setPublishingLayers(jo(e.codec),e.qualities);else{let t=this.simulcastCodecs.get(e.codec);if(this.log.debug(`try setPublishingCodec for ${e.codec}`,Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:t})),!t||!t.sender){for(let t of e.qualities)if(t.enabled){c.push(e.codec);break}}else t.encodings&&(this.log.debug(`try setPublishingLayersForSender ${e.codec}`,this.logContext),yield Sl(t.sender,t.encodings,e.qualities,this.senderLock,jo(e.codec),this.log,this.logContext))}}}catch(e){a={error:e}}finally{try{!t&&!i&&(o=n.return)&&(yield o.call(n))}finally{if(a)throw a.error}}return c})}setPublishingLayers(e,t){return k(this,void 0,void 0,function*(){if(this.optimizeForPerformance){this.log.info(`skipping setPublishingLayers due to optimized publishing performance`,Object.assign(Object.assign({},this.logContext),{qualities:t}));return}this.log.debug(`setting publishing layers`,Object.assign(Object.assign({},this.logContext),{qualities:t})),!(!this.sender||!this.encodings)&&(yield Sl(this.sender,this.encodings,t,this.senderLock,e,this.log,this.logContext))})}prioritizePerformance(){return k(this,void 0,void 0,function*(){if(!this.sender)throw Error(`sender not found`);let e=yield this.senderLock.lock();try{this.optimizeForPerformance=!0;let e=this.sender.getParameters();e.encodings=e.encodings.map((e,t)=>Object.assign(Object.assign({},e),{active:t===0,scaleResolutionDownBy:Math.max(1,Math.ceil((this.mediaStreamTrack.getSettings().height??360)/360)),scalabilityMode:t===0&&jo(this.codec)?`L1T3`:void 0,maxFramerate:t===0?15:0,maxBitrate:t===0?e.maxBitrate:0})),this.log.debug(`setting performance optimised encodings`,Object.assign(Object.assign({},this.logContext),{encodings:e.encodings})),this.encodings=e.encodings,yield this.sender.setParameters(e)}catch(e){this.log.error(`failed to set performance optimised encodings`,Object.assign(Object.assign({},this.logContext),{error:e})),this.optimizeForPerformance=!1}finally{e()}})}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),Bo()&&this.isInBackground&&this.source===P.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}};function Sl(e,t,n,r,i,a,o){return k(this,void 0,void 0,function*(){let s=yield r.lock();a.debug(`setPublishingLayersForSender`,Object.assign(Object.assign({},o),{sender:e,qualities:n,senderEncodings:t}));try{let r=e.getParameters(),{encodings:s}=r;if(!s)return;if(s.length!==t.length){a.warn(`cannot set publishing layers, encodings mismatch`,Object.assign(Object.assign({},o),{encodings:s,senderEncodings:t}));return}let c=!1;i&&n.some(e=>e.enabled)&&n.forEach(e=>e.enabled=!0),s.forEach((e,r)=>{let i=e.rid??``;i===``&&(i=`q`);let s=Cl(i),l=n.find(e=>e.quality===s);l&&e.active!==l.enabled&&(c=!0,e.active=l.enabled,a.debug(`setting layer ${l.quality} to ${e.active?`enabled`:`disabled`}`,o),Po()&&(l.enabled?(e.scaleResolutionDownBy=t[r].scaleResolutionDownBy,e.maxBitrate=t[r].maxBitrate,e.maxFrameRate=t[r].maxFrameRate):(e.scaleResolutionDownBy=4,e.maxBitrate=10,e.maxFrameRate=2)))}),c&&(r.encodings=s,a.debug(`setting encodings`,Object.assign(Object.assign({},o),{encodings:r.encodings})),yield e.setParameters(r))}finally{s()}})}function Cl(e){switch(e){case`f`:return bo.HIGH;case`h`:return bo.MEDIUM;case`q`:return bo.LOW;default:return bo.HIGH}}function wl(e,t,n,r){if(!n)return[new dn({quality:bo.HIGH,width:e,height:t,bitrate:0,ssrc:0})];if(r){let r=n[0].scalabilityMode,i=new vl(r),a=[],o=i.suffix==`h`?1.5:2,s=i.suffix==`h`?2:3;for(let r=0;r<i.spatial;r+=1)a.push(new dn({quality:Math.min(bo.HIGH,i.spatial-1)-r,width:Math.ceil(e/o**+r),height:Math.ceil(t/o**+r),bitrate:n[0].maxBitrate?Math.ceil(n[0].maxBitrate/s**+r):0,ssrc:0}));return a}return n.map(n=>{let r=n.scaleResolutionDownBy??1;return new dn({quality:Cl(n.rid??``),width:Math.ceil(e/r),height:Math.ceil(t/r),bitrate:n.maxBitrate??0,ssrc:0})})}var Tl=`_lossy`,El=`_reliable`,Dl=2*1e3,Ol=`leave-reconnect`,kl=3e4,Al=8*1024,jl=256*1024,Ml;(function(e){e[e.New=0]=`New`,e[e.Connected=1]=`Connected`,e[e.Disconnected=2]=`Disconnected`,e[e.Reconnecting=3]=`Reconnecting`,e[e.Closed=4]=`Closed`})(Ml||={});var Nl=class extends di.EventEmitter{get isClosed(){return this._isClosed}get pendingReconnect(){return!!this.reconnectTimeout}constructor(e){super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=Ic.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.latestRemoteOfferId=0,this.subscriberPrimary=!1,this.pcState=Ml.New,this._isClosed=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.log=$r,this.reliableDataSequence=1,this.reliableMessageBuffer=new sc,this.reliableReceivedState=new cc(kl),this.lossyDataStatCurrentBytes=0,this.lossyDataStatByterate=0,this.lossyDataDropCount=0,this.midToTrackId={},this.isWaitingForNetworkReconnect=!1,this.handleDataChannel=e=>k(this,[e],void 0,function(e){var t=this;let{channel:n}=e;return function*(){if(n){if(n.label===El)t.reliableDCSub=n;else if(n.label===Tl)t.lossyDCSub=n;else return;t.log.debug(`on data channel ${n.id}, ${n.label}`,t.logContext),n.onmessage=t.handleDataMessage}}()}),this.handleDataMessage=e=>k(this,void 0,void 0,function*(){let t=yield this.dataProcessLock.lock();try{let t;if(e.data instanceof ArrayBuffer)t=e.data;else if(e.data instanceof Blob)t=yield e.data.arrayBuffer();else{this.log.error(`unsupported data type`,Object.assign(Object.assign({},this.logContext),{data:e.data}));return}let n=pn.fromBinary(new Uint8Array(t));if(n.sequence>0&&n.participantSid!==``){let e=this.reliableReceivedState.get(n.participantSid);if(e&&n.sequence<=e)return;this.reliableReceivedState.set(n.participantSid,n.sequence)}if(n.value?.case===`speaker`)this.emit(M.ActiveSpeakersUpdate,n.value.value.speakers);else if(n.value?.case===`encryptedPacket`){if(!this.e2eeManager){this.log.error(`Received encrypted packet but E2EE not set up`,this.logContext);return}let e=yield this.e2eeManager?.handleEncryptedData(n.value.value.encryptedValue,n.value.value.iv,n.participantIdentity,n.value.value.keyIndex),t=new pn({value:gn.fromBinary(e.payload).value,participantIdentity:n.participantIdentity,participantSid:n.participantSid});t.value?.case===`user`&&Fl(t,t.value.value),this.emit(M.DataPacketReceived,t,n.value.value.encryptionType)}else n.value?.case===`user`&&Fl(n,n.value.value),this.emit(M.DataPacketReceived,n,cn.NONE)}finally{t()}}),this.handleDataError=e=>{let t=e.currentTarget.maxRetransmits===0?`lossy`:`reliable`;if(e instanceof ErrorEvent&&e.error){let{error:n}=e.error;this.log.error(`DataChannel error on ${t}: ${e.message}`,Object.assign(Object.assign({},this.logContext),{error:n}))}else this.log.error(`Unknown DataChannel error on ${t}`,Object.assign(Object.assign({},this.logContext),{event:e}))},this.handleBufferedAmountLow=e=>{let t=e.currentTarget.maxRetransmits===0?mn.LOSSY:mn.RELIABLE;this.updateAndEmitDCBufferStatus(t)},this.handleDisconnect=(e,t)=>{if(this._isClosed)return;this.log.warn(`${e} disconnected`,this.logContext),this.reconnectAttempts===0&&(this.reconnectStart=Date.now());let n=e=>{this.log.warn(`could not recover connection after ${this.reconnectAttempts} attempts, ${e}ms. giving up`,this.logContext),this.emit(M.Disconnected),this.close()},r=Date.now()-this.reconnectStart,i=this.getNextRetryDelay({elapsedMs:r,retryCount:this.reconnectAttempts});if(i===null){n(r);return}e===Ol&&(i=0),this.log.debug(`reconnecting in ${i}ms`,this.logContext),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=Ha.setTimeout(()=>this.attemptReconnect(t).finally(()=>this.reconnectTimeout=void 0),i)},this.waitForRestarted=()=>new Promise((e,t)=>{this.pcState===Ml.Connected&&e();let n=()=>{this.off(M.Disconnected,r),e()},r=()=>{this.off(M.Restarted,n),t()};this.once(M.Restarted,n),this.once(M.Disconnected,r)}),this.updateAndEmitDCBufferStatus=e=>{if(e===mn.RELIABLE){let t=this.dataChannelForKind(e);t&&this.reliableMessageBuffer.alignBufferedAmount(t.bufferedAmount)}let t=this.isBufferStatusLow(e);t!==void 0&&t!==this.dcBufferStatus.get(e)&&(this.dcBufferStatus.set(e,t),this.emit(M.DCBufferStatusChanged,t,e))},this.isBufferStatusLow=e=>{let t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>k(this,void 0,void 0,function*(){this.url&&(yield fetch(us(this.url),{method:`HEAD`}).then(e=>e.ok).catch(()=>!1))&&(this.log.info(`detected network reconnected`),(this.client.currentState===ec.RECONNECTING||this.isWaitingForNetworkReconnect&&this.client.currentState===ec.CONNECTED)&&(this.clearReconnectTimeout(),this.attemptReconnect(Zt.RR_SIGNAL_DISCONNECTED),this.isWaitingForNetworkReconnect=!1))}),this.handleBrowserOffline=()=>k(this,void 0,void 0,function*(){if(this.url)try{yield Promise.race([fetch(us(this.url),{method:`HEAD`}),Eo(4e3).then(()=>Promise.reject())])}catch{window.navigator.onLine===!1&&(this.log.info(`detected network interruption`),this.isWaitingForNetworkReconnect=!0)}}),this.log=ei(e.loggerName??Qr.Engine),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new nc(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.closingLock=new _,this.dataProcessLock=new _,this.dcBufferStatus=new Map([[mn.LOSSY,!0],[mn.RELIABLE,!0]]),this.client.onParticipantUpdate=e=>this.emit(M.ParticipantUpdate,e),this.client.onConnectionQuality=e=>this.emit(M.ConnectionQualityUpdate,e),this.client.onRoomUpdate=e=>this.emit(M.RoomUpdate,e),this.client.onSubscriptionError=e=>this.emit(M.SubscriptionError,e),this.client.onSubscriptionPermissionUpdate=e=>this.emit(M.SubscriptionPermissionUpdate,e),this.client.onSpeakersChanged=e=>this.emit(M.SpeakersChanged,e),this.client.onStreamStateUpdate=e=>this.emit(M.StreamStateChanged,e),this.client.onRequestResponse=e=>this.emit(M.SignalRequestResponse,e)}get logContext(){return{room:this.latestJoinResponse?.room?.name,roomID:this.latestJoinResponse?.room?.sid,participant:this.latestJoinResponse?.participant?.identity,pID:this.participantSid}}join(e,t,n,r){return k(this,void 0,void 0,function*(){this.url=e,this.token=t,this.signalOpts=n,this.maxJoinAttempts=n.maxRetries;try{this.joinAttempts+=1,this.setupSignalClientCallbacks();let i=yield this.client.join(e,t,n,r);return this._isClosed=!1,this.latestJoinResponse=i,this.subscriberPrimary=i.subscriberPrimary,this.pcManager||(yield this.configure(i)),(!this.subscriberPrimary||i.fastPublish)&&this.negotiate().catch(e=>{$r.error(e,this.logContext)}),this.registerOnLineListener(),this.clientConfiguration=i.clientConfiguration,this.emit(M.SignalConnected,i),i}catch(i){if(i instanceof Aa&&i.reason===ka.ServerUnreachable&&(this.log.warn(`Couldn't connect to server, attempt ${this.joinAttempts} of ${this.maxJoinAttempts}`,this.logContext),this.joinAttempts<this.maxJoinAttempts))return this.join(e,t,n,r);throw i}})}close(){return k(this,void 0,void 0,function*(){let e=yield this.closingLock.lock();if(this.isClosed){e();return}try{this._isClosed=!0,this.joinAttempts=0,this.emit(M.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),this.cleanupLossyDataStats(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{e()}})}cleanupPeerConnections(){return k(this,void 0,void 0,function*(){yield this.pcManager?.close(),this.pcManager=void 0;let e=e=>{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};e(this.lossyDC),e(this.lossyDCSub),e(this.reliableDC),e(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0,this.reliableMessageBuffer=new sc,this.reliableDataSequence=1,this.reliableReceivedState.clear()})}cleanupLossyDataStats(){this.lossyDataStatByterate=0,this.lossyDataStatCurrentBytes=0,this.lossyDataStatInterval&&=(clearInterval(this.lossyDataStatInterval),void 0),this.lossyDataDropCount=0}cleanupClient(){return k(this,void 0,void 0,function*(){yield this.client.close(),this.client.resetCallbacks()})}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new Ma(`a track with the same ID has already been published`);return new Promise((t,n)=>{let r=setTimeout(()=>{delete this.pendingTrackResolvers[e.cid],n(Aa.timeout(`publication of local track timed out, no response from server`))},1e4);this.pendingTrackResolvers[e.cid]={resolve:e=>{clearTimeout(r),t(e)},reject:()=>{clearTimeout(r),n(Error(`Cancelled publication by calling unpublish`))}},this.client.sendAddTrack(e)})}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){let{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(e){this.log.warn(`failed to remove track`,Object.assign(Object.assign({},this.logContext),{error:e}))}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){return this.reliableDCSub?.readyState}getConnectedServerAddress(){return k(this,void 0,void 0,function*(){return this.pcManager?.getConnectedAddress()})}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(e){return k(this,void 0,void 0,function*(){if(this.pcManager&&this.pcManager.currentState!==Lc.NEW)return;this.participantSid=e.participant?.sid;let t=this.makeRTCConfiguration(e);this.pcManager=new Rc(t,this.options.singlePeerConnection?`publisher-only`:e.subscriberPrimary?`subscriber-primary`:`publisher-primary`,this.loggerOptions),this.emit(M.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(e,t)=>{this.client.sendIceCandidate(e,t)},this.pcManager.onPublisherOffer=(e,t)=>{this.client.sendOffer(e,t)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(t,n,r)=>k(this,void 0,void 0,function*(){if(this.log.debug(`primary PC state changed ${t}`,this.logContext),[`closed`,`disconnected`,`failed`].includes(n)&&(this.publisherConnectionPromise=void 0),t===Lc.CONNECTED){let t=this.pcState===Ml.New;this.pcState=Ml.Connected,t&&this.emit(M.Connected,e)}else t===Lc.FAILED&&(this.pcState===Ml.Connected||this.pcState===Ml.Reconnecting)&&(this.pcState=Ml.Disconnected,this.handleDisconnect(`peerconnection failed`,r===`failed`?Zt.RR_SUBSCRIBER_FAILED:Zt.RR_PUBLISHER_FAILED));let i=this.client.isDisconnected||this.client.currentState===ec.RECONNECTING,a=[Lc.FAILED,Lc.CLOSING,Lc.CLOSED].includes(t);i&&a&&!this._isClosed&&this.emit(M.Offline)}),this.pcManager.onTrack=e=>{e.streams.length!==0&&this.emit(M.MediaTrackAdded,e.track,e.streams[0],e.receiver)},Pl(e.serverInfo?.protocol)||this.createDataChannels()})}setupSignalClientCallbacks(){this.client.onAnswer=(e,t,n)=>k(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug(`received server answer`,Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,midToTrackId:n})),this.midToTrackId=n,yield this.pcManager.setPublisherAnswer(e,t))}),this.client.onTrickle=(e,t)=>{this.pcManager&&(this.log.debug(`got ICE candidate from peer`,Object.assign(Object.assign({},this.logContext),{candidate:e,target:t})),this.pcManager.addIceCandidate(e,t))},this.client.onOffer=(e,t,n)=>k(this,void 0,void 0,function*(){if(this.latestRemoteOfferId=t,!this.pcManager)return;this.midToTrackId=n;let r=yield this.pcManager.createSubscriberAnswerFromOffer(e,t);r&&this.client.sendAnswer(r,t)}),this.client.onLocalTrackPublished=e=>{if(this.log.debug(`received trackPublishedResponse`,Object.assign(Object.assign({},this.logContext),{cid:e.cid,track:e.track?.sid})),!this.pendingTrackResolvers[e.cid]){this.log.error(`missing track resolver for ${e.cid}`,Object.assign(Object.assign({},this.logContext),{cid:e.cid}));return}let{resolve:t}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],t(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(M.LocalTrackUnpublished,e)},this.client.onLocalTrackSubscribed=e=>{this.emit(M.LocalTrackSubscribed,e)},this.client.onTokenRefresh=e=>{var t;this.token=e,(t=this.regionUrlProvider)==null||t.updateToken(e)},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(M.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(M.SubscribedQualityUpdate,e)},this.client.onRoomMoved=e=>{this.participantSid=e.participant?.sid,this.latestJoinResponse&&(this.latestJoinResponse.room=e.room),this.emit(M.RoomMoved,e)},this.client.onMediaSectionsRequirement=e=>{var t,n;let r={direction:`recvonly`};for(let n=0;n<e.numAudios;n++)(t=this.pcManager)==null||t.addPublisherTransceiverOfKind(`audio`,r);for(let t=0;t<e.numVideos;t++)(n=this.pcManager)==null||n.addPublisherTransceiverOfKind(`video`,r);this.negotiate()},this.client.onClose=()=>{this.handleDisconnect(`signal`,Zt.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{switch(this.log.debug(`client leave request`,Object.assign(Object.assign({},this.logContext),{reason:e?.reason})),e.regions&&this.regionUrlProvider&&(this.log.debug(`updating regions`,this.logContext),this.regionUrlProvider.setServerReportedRegions({updatedAtInMs:Date.now(),maxAgeInMs:zc,regionSettings:e.regions})),e.action){case ur.DISCONNECT:this.emit(M.Disconnected,e?.reason),this.close();break;case ur.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(Ol);break;case ur.RESUME:this.handleDisconnect(Ol)}}}makeRTCConfiguration(e){let t=Object.assign({},this.rtcConfig);if(this.signalOpts?.e2eeEnabled&&(this.log.debug(`E2EE - setting up transports with insertable streams`,this.logContext),t.encodedInsertableStreams=!0),e.iceServers&&!t.iceServers){let n=[];e.iceServers.forEach(e=>{let t={urls:e.urls};e.username&&(t.username=e.username),e.credential&&(t.credential=e.credential),n.push(t)}),t.iceServers=n}return e.clientConfiguration&&e.clientConfiguration.forceRelay===Yt.ENABLED&&(t.iceTransportPolicy=`relay`),t.sdpSemantics=`unified-plan`,t.continualGatheringPolicy=`gather_continually`,t}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(Tl,{ordered:!1,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(El,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow,this.cleanupLossyDataStats(),this.lossyDataStatInterval=setInterval(()=>{this.lossyDataStatByterate=this.lossyDataStatCurrentBytes,this.lossyDataStatCurrentBytes=0;let e=this.dataChannelForKind(mn.LOSSY);if(e){let t=this.lossyDataStatByterate/10;e.bufferedAmountLowThreshold=Math.min(Math.max(t,Al),jl)}},1e3))}createSender(e,t,n){return k(this,void 0,void 0,function*(){if(Do())return yield this.createTransceiverRTCRtpSender(e,t,n);if(Oo())return this.log.warn(`using add-track fallback`,this.logContext),yield this.createRTCRtpSender(e.mediaStreamTrack);throw new Pa(`Required webRTC APIs not supported on this device`)})}createSimulcastSender(e,t,n,r){return k(this,void 0,void 0,function*(){if(Do())return this.createSimulcastTransceiverSender(e,t,n,r);if(Oo())return this.log.debug(`using add-track fallback`,this.logContext),this.createRTCRtpSender(e.mediaStreamTrack);throw new Pa(`Cannot stream on this device`)})}createTransceiverRTCRtpSender(e,t,n){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);let r=[];e.mediaStream&&r.push(e.mediaStream),vs(e)&&(e.codec=t.videoCodec);let i={direction:`sendonly`,streams:r};return n&&(i.sendEncodings=n),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,i)).sender})}createSimulcastTransceiverSender(e,t,n,r){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);let i={direction:`sendonly`};r&&(i.sendEncodings=r);let a=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,i);if(n.videoCodec)return e.setSimulcastTrackSender(n.videoCodec,a.sender),a.sender})}createRTCRtpSender(e){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`publisher is closed`);return this.pcManager.addPublisherTrack(e)})}attemptReconnect(e){return k(this,void 0,void 0,function*(){if(!this._isClosed){if(this.attemptingReconnect){$r.warn(`already attempting reconnect, returning early`,this.logContext);return}(this.clientConfiguration?.resumeConnection===Yt.DISABLED||(this.pcManager?.currentState??Lc.NEW)===Lc.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(e){this.reconnectAttempts+=1;let t=!0;e instanceof Pa?(this.log.debug(`received unrecoverable error`,Object.assign(Object.assign({},this.logContext),{error:e})),t=!1):e instanceof Ba||(this.fullReconnectOnNext=!0),t?this.handleDisconnect(`reconnect`,Zt.RR_UNKNOWN):(this.log.info(`could not recover connection after ${this.reconnectAttempts} attempts, ${Date.now()-this.reconnectStart}ms. giving up`,this.logContext),this.emit(M.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){this.log.warn(`encountered error in reconnect policy`,Object.assign(Object.assign({},this.logContext),{error:e}))}return null}restartConnection(e){return k(this,void 0,void 0,function*(){var t,n;try{if(!this.url||!this.token)throw new Pa(`could not reconnect, url or token not saved`);this.log.info(`reconnecting, attempt: ${this.reconnectAttempts}`,this.logContext),this.emit(M.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();let n;try{if(!this.signalOpts)throw this.log.warn(`attempted connection restart, without signal options present`,this.logContext),new Ba;n=yield this.join(e??this.url,this.token,this.signalOpts)}catch(e){throw e instanceof Aa&&e.reason===ka.NotAllowed?new Pa(`could not reconnect, token might be expired`):new Ba}if(this.shouldFailNext)throw this.shouldFailNext=!1,Error(`simulated failure`);if(this.client.setReconnected(),this.emit(M.SignalRestarted,n),yield this.waitForPCReconnected(),this.client.currentState!==ec.CONNECTED)throw new Ba(`Signal connection got severed during reconnect`);(t=this.regionUrlProvider)==null||t.resetAttempts(),this.emit(M.Restarted)}catch(e){let t=yield this.regionUrlProvider?.getNextBestRegionUrl();if(t){yield this.restartConnection(t);return}else throw(n=this.regionUrlProvider)==null||n.resetAttempts(),e}})}resumeConnection(e){return k(this,void 0,void 0,function*(){if(!this.url||!this.token)throw new Pa(`could not reconnect, url or token not saved`);if(!this.pcManager)throw new Pa(`publisher and subscriber connections unset`);this.log.info(`resuming signal connection, attempt ${this.reconnectAttempts}`,this.logContext),this.emit(M.Resuming);let t;try{this.setupSignalClientCallbacks(),t=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(e){let t=``;throw e instanceof Error&&(t=e.message,this.log.error(e.message,Object.assign(Object.assign({},this.logContext),{error:e}))),e instanceof Aa&&e.reason===ka.NotAllowed?new Pa(`could not reconnect, token might be expired`):e instanceof Aa&&e.reason===ka.LeaveRequest?e:new Ba(t)}if(this.emit(M.SignalResumed),t){let e=this.makeRTCConfiguration(t);this.pcManager.updateConfiguration(e),this.latestJoinResponse&&(this.latestJoinResponse.serverInfo=t.serverInfo)}else this.log.warn(`Did not receive reconnect response`,this.logContext);if(this.shouldFailNext)throw this.shouldFailNext=!1,Error(`simulated failure`);if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==ec.CONNECTED)throw new Ba(`Signal connection got severed during reconnect`);this.client.setReconnected(),this.reliableDC?.readyState===`open`&&this.reliableDC.id===null&&this.createDataChannels(),t?.lastMessageSeq&&this.resendReliableMessagesForResume(t.lastMessageSeq),this.emit(M.Resumed)})}waitForPCInitialConnection(e,t){return k(this,void 0,void 0,function*(){if(!this.pcManager)throw new Pa(`PC manager is closed`);yield this.pcManager.ensurePCTransportConnection(t,e)})}waitForPCReconnected(){return k(this,void 0,void 0,function*(){this.pcState=Ml.Reconnecting,this.log.debug(`waiting for peer connection to reconnect`,this.logContext);try{if(yield Eo(Dl),!this.pcManager)throw new Pa(`PC manager is closed`);yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=Ml.Connected}catch(e){throw this.pcState=Ml.Disconnected,Aa.internal(`could not establish PC connection, ${e.message}`)}})}publishRpcResponse(e,t,n,r){return k(this,void 0,void 0,function*(){let i=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcResponse`,value:new En({requestId:t,value:r?{case:`error`,value:r.toProto()}:{case:`payload`,value:n??``}})}});yield this.sendDataPacket(i,mn.RELIABLE)})}publishRpcAck(e,t){return k(this,void 0,void 0,function*(){let n=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcAck`,value:new Tn({requestId:t})}});yield this.sendDataPacket(n,mn.RELIABLE)})}sendDataPacket(e,t){return k(this,void 0,void 0,function*(){if(yield this.ensurePublisherConnected(t),this.e2eeManager&&this.e2eeManager.isDataChannelEncryptionEnabled){let t=Vs(e);if(t){let n=yield this.e2eeManager.encryptData(t.toBinary());e.value={case:`encryptedPacket`,value:new hn({encryptedValue:n.payload,iv:n.iv,keyIndex:n.keyIndex})}}}t===mn.RELIABLE&&(e.sequence=this.reliableDataSequence,this.reliableDataSequence+=1);let n=e.toBinary(),r=this.dataChannelForKind(t);if(r){if(t===mn.RELIABLE)yield this.waitForBufferStatusLow(t),this.reliableMessageBuffer.push({data:n,sequence:e.sequence});else{if(!this.isBufferStatusLow(t)){this.lossyDataDropCount+=1,this.lossyDataDropCount%100==0&&this.log.warn(`dropping lossy data channel messages, total dropped: ${this.lossyDataDropCount}`,this.logContext);return}this.lossyDataStatCurrentBytes+=n.byteLength}if(this.attemptingReconnect)return;r.send(n)}this.updateAndEmitDCBufferStatus(t)})}resendReliableMessagesForResume(e){return k(this,void 0,void 0,function*(){yield this.ensurePublisherConnected(mn.RELIABLE);let t=this.dataChannelForKind(mn.RELIABLE);t&&(this.reliableMessageBuffer.popToSequence(e),this.reliableMessageBuffer.getAll().forEach(e=>{t.send(e.data)})),this.updateAndEmitDCBufferStatus(mn.RELIABLE)})}waitForBufferStatusLow(e){return new Promise((t,n)=>k(this,void 0,void 0,function*(){if(this.isBufferStatusLow(e))t();else{let r=()=>n(`Engine closed`);for(this.once(M.Closing,r);!this.dcBufferStatus.get(e);)yield Eo(10);this.off(M.Closing,r),t()}}))}ensureDataTransportConnected(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscriberPrimary;return function*(){if(!t.pcManager)throw new Pa(`PC manager is closed`);let r=n?t.pcManager.subscriber:t.pcManager.publisher,i=n?`Subscriber`:`Publisher`;if(!r)throw Aa.internal(`${i} connection not set`);let a=!1;if(!n&&!t.dataChannelForKind(e,n)&&(t.createDataChannels(),a=!0),!a&&!n&&!t.pcManager.publisher.isICEConnected&&t.pcManager.publisher.getICEConnectionState()!==`checking`&&(a=!0),a&&t.negotiate().catch(e=>{$r.error(e,t.logContext)}),t.dataChannelForKind(e,n)?.readyState===`open`)return;let o=new Date().getTime()+t.peerConnectionTimeout;for(;new Date().getTime()<o;){if(r.isICEConnected&&t.dataChannelForKind(e,n)?.readyState===`open`)return;yield Eo(50)}throw Aa.internal(`could not establish ${i} connection, state: ${r.getICEConnectionState()}`)}()})}ensurePublisherConnected(e){return k(this,void 0,void 0,function*(){this.publisherConnectionPromise||=this.ensureDataTransportConnected(e,!1),yield this.publisherConnectionPromise})}verifyTransport(){return!(!this.pcManager||this.pcManager.currentState!==Lc.CONNECTED||!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)}negotiate(){return k(this,void 0,void 0,function*(){return new Promise((e,t)=>k(this,void 0,void 0,function*(){if(!this.pcManager){t(new Fa(`PC manager is closed`));return}this.pcManager.requirePublisher(),this.pcManager.publisher.getTransceivers().length==0&&!this.lossyDC&&!this.reliableDC&&this.createDataChannels();let n=new AbortController,r=()=>{n.abort(),this.log.debug(`engine disconnected while negotiation was ongoing`,this.logContext),e()};this.isClosed&&t(`cannot negotiate on closed engine`),this.on(M.Closing,r),this.pcManager.publisher.once(Tc.RTPVideoPayloadTypes,e=>{let t=new Map;e.forEach(e=>{let n=e.codec.toLowerCase();ss(n)&&t.set(e.payload,n)}),this.emit(M.RTPVideoMapUpdate,t)});try{yield this.pcManager.negotiate(n),e()}catch(e){e instanceof Fa&&(this.fullReconnectOnNext=!0),this.handleDisconnect(`negotiation`,Zt.RR_UNKNOWN),t(e)}finally{this.off(M.Closing,r)}}))})}dataChannelForKind(e,t){if(t){if(e===mn.LOSSY)return this.lossyDCSub;if(e===mn.RELIABLE)return this.reliableDCSub}else{if(e===mn.LOSSY)return this.lossyDC;if(e===mn.RELIABLE)return this.reliableDC}}sendSyncState(e,t){if(!this.pcManager){this.log.warn(`sync state cannot be sent without peer connection setup`,this.logContext);return}let n=this.pcManager.publisher.getLocalDescription(),r=this.pcManager.publisher.getRemoteDescription(),i=this.pcManager.subscriber?.getRemoteDescription(),a=this.pcManager.subscriber?.getLocalDescription(),o=this.signalOpts?.autoSubscribe??!0,s=[],c=[];e.forEach(e=>{e.isDesired!==o&&s.push(e.trackSid),e.isEnabled||c.push(e.trackSid)}),this.client.sendSyncState(new Or({answer:this.options.singlePeerConnection?r?ic({sdp:r.sdp,type:r.type}):void 0:a?ic({sdp:a.sdp,type:a.type}):void 0,offer:this.options.singlePeerConnection?n?ic({sdp:n.sdp,type:n.type}):void 0:i?ic({sdp:i.sdp,type:i.type}):void 0,subscription:new ar({trackSids:s,subscribe:!o,participantTracks:[]}),publishTracks:lo(t),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:c,datachannelReceiveStates:this.reliableReceivedState.map((e,t)=>new kr({publisherSid:t,lastSeq:e}))}))}failNext(){this.shouldFailNext=!0}dataChannelsInfo(){let e=[],t=(t,n)=>{t?.id!==void 0&&t.id!==null&&e.push(new Ar({label:t.label,id:t.id,target:n}))};return t(this.dataChannelForKind(mn.LOSSY),Wn.PUBLISHER),t(this.dataChannelForKind(mn.RELIABLE),Wn.PUBLISHER),t(this.dataChannelForKind(mn.LOSSY,!0),Wn.SUBSCRIBER),t(this.dataChannelForKind(mn.RELIABLE,!0),Wn.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&Ha.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Ho()&&(window.addEventListener(`online`,this.handleBrowserOnLine),window.addEventListener(`offline`,this.handleBrowserOffline))}deregisterOnLineListener(){Ho()&&(window.removeEventListener(`online`,this.handleBrowserOnLine),window.removeEventListener(`offline`,this.handleBrowserOffline))}getTrackIdForReceiver(e){let t=this.pcManager?.getMidForReceiver(e);if(t){let e=Object.entries(this.midToTrackId).find(e=>{let[n]=e;return n===t});if(e)return e[1]}}};function Pl(e){return e!==void 0&&e>13}function Fl(e,t){let n=e.participantIdentity?e.participantIdentity:t.participantIdentity;e.participantIdentity=n,t.participantIdentity=n;let r=e.destinationIdentities.length===0?t.destinationIdentities:e.destinationIdentities;e.destinationIdentities=r,t.destinationIdentities=r}var Il=class{get info(){return this._info}validateBytesReceived(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(!(typeof this.totalByteSize!=`number`||this.totalByteSize===0)){if(e&&this.bytesReceived<this.totalByteSize)throw new za(`Not enough chunk(s) received - expected ${this.totalByteSize} bytes of data total, only received ${this.bytesReceived} bytes`,Ra.Incomplete);if(this.bytesReceived>this.totalByteSize)throw new za(`Extra chunk(s) received - expected ${this.totalByteSize} bytes of data total, received ${this.bytesReceived} bytes`,Ra.LengthExceeded)}}constructor(e,t,n,r){this.reader=t,this.totalByteSize=n,this._info=e,this.bytesReceived=0,this.outOfBandFailureRejectingFuture=r}},Ll=class extends Il{handleChunkReceived(e){var t;this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let n=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;(t=this.onProgress)==null||t.call(this,n)}[Symbol.asyncIterator](){let e=this.reader.getReader(),t=new os,n=null,r=null;if(this.signal){let e=this.signal;r=()=>{var n;(n=t.reject)==null||n.call(t,e.reason)},e.addEventListener(`abort`,r),n=e}let i=()=>{e.releaseLock(),n&&r&&n.removeEventListener(`abort`,r),this.signal=void 0};return{next:()=>k(this,void 0,void 0,function*(){try{let{done:n,value:r}=yield Promise.race([e.read(),t.promise,this.outOfBandFailureRejectingFuture?.promise??new Promise(()=>{})]);return n?(this.validateBytesReceived(!0),{done:!0,value:void 0}):(this.handleChunkReceived(r),{done:!1,value:r.content})}catch(e){throw i(),e}}),return(){return k(this,void 0,void 0,function*(){return i(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return function*(){var n,r,i,a;let o=new Set,s=t.signal?e.withAbortSignal(t.signal):e;try{for(var c=!0,l=si(s),u;u=yield l.next(),n=u.done,!n;c=!0){a=u.value,c=!1;let e=a;o.add(e)}}catch(e){r={error:e}}finally{try{!c&&!n&&(i=l.return)&&(yield i.call(l))}finally{if(r)throw r.error}}return Array.from(o)}()})}},Rl=class extends Il{constructor(e,t,n,r){super(e,t,n,r),this.receivedChunks=new Map}handleChunkReceived(e){var t;let n=ms(e.chunkIndex),r=this.receivedChunks.get(n);if(r&&r.version>e.version)return;this.receivedChunks.set(n,e),this.bytesReceived+=e.content.byteLength,this.validateBytesReceived();let i=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;(t=this.onProgress)==null||t.call(this,i)}[Symbol.asyncIterator](){let e=this.reader.getReader(),t=new TextDecoder(`utf-8`,{fatal:!0}),n=new os,r=null,i=null;if(this.signal){let e=this.signal;i=()=>{var t;(t=n.reject)==null||t.call(n,e.reason)},e.addEventListener(`abort`,i),r=e}let a=()=>{e.releaseLock(),r&&i&&r.removeEventListener(`abort`,i),this.signal=void 0};return{next:()=>k(this,void 0,void 0,function*(){try{let{done:r,value:i}=yield Promise.race([e.read(),n.promise,this.outOfBandFailureRejectingFuture?.promise??new Promise(()=>{})]);if(r)return this.validateBytesReceived(!0),{done:!0,value:void 0};{this.handleChunkReceived(i);let e;try{e=t.decode(i.content)}catch(e){throw new za(`Cannot decode datastream chunk ${i.chunkIndex} as text: ${e}`,Ra.DecodeFailed)}return{done:!1,value:e}}}catch(e){throw a(),e}}),return(){return k(this,void 0,void 0,function*(){return a(),{done:!0,value:void 0}})}}}withAbortSignal(e){return this.signal=e,this}readAll(){return k(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return function*(){var n,r,i,a;let o=``,s=t.signal?e.withAbortSignal(t.signal):e;try{for(var c=!0,l=si(s),u;u=yield l.next(),n=u.done,!n;c=!0)a=u.value,c=!1,o+=a}catch(e){r={error:e}}finally{try{!c&&!n&&(i=l.return)&&(yield i.call(l))}finally{if(r)throw r.error}}return o}()})}},zl=class{constructor(){this.log=$r,this.byteStreamControllers=new Map,this.textStreamControllers=new Map,this.byteStreamHandlers=new Map,this.textStreamHandlers=new Map}registerTextStreamHandler(e,t){if(this.textStreamHandlers.has(e))throw new za(`A text stream handler for topic "${e}" has already been set.`,Ra.HandlerAlreadyRegistered);this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}registerByteStreamHandler(e,t){if(this.byteStreamHandlers.has(e))throw new za(`A byte stream handler for topic "${e}" has already been set.`,Ra.HandlerAlreadyRegistered);this.byteStreamHandlers.set(e,t)}unregisterByteStreamHandler(e){this.byteStreamHandlers.delete(e)}clearControllers(){this.byteStreamControllers.clear(),this.textStreamControllers.clear()}validateParticipantHasNoActiveDataStreams(e){var t,n,r,i;let a=Array.from(this.textStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e),o=Array.from(this.byteStreamControllers.entries()).filter(t=>t[1].sendingParticipantIdentity===e);if(a.length>0||o.length>0){let s=new za(`Participant ${e} unexpectedly disconnected in the middle of sending data`,Ra.AbnormalEnd);for(let[e,r]of o)(n=(t=r.outOfBandFailureRejectingFuture).reject)==null||n.call(t,s),this.byteStreamControllers.delete(e);for(let[e,t]of a)(i=(r=t.outOfBandFailureRejectingFuture).reject)==null||i.call(r,s),this.textStreamControllers.delete(e)}}handleDataStreamPacket(e,t){return k(this,void 0,void 0,function*(){switch(e.value.case){case`streamHeader`:return this.handleStreamHeader(e.value.value,e.participantIdentity,t);case`streamChunk`:return this.handleStreamChunk(e.value.value,t);case`streamTrailer`:return this.handleStreamTrailer(e.value.value,t);default:throw Error(`DataPacket of value "${e.value.case}" is not data stream related!`)}})}handleStreamHeader(e,t,n){return k(this,void 0,void 0,function*(){if(e.contentHeader.case===`byteHeader`){let r=this.byteStreamHandlers.get(e.topic);if(!r){this.log.debug(`ignoring incoming byte stream due to no handler for topic`,e.topic);return}let i,a=new os;a.promise.catch(e=>{this.log.error(e)});let o={id:e.streamId,name:e.contentHeader.value.name??`unknown`,mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:ms(e.timestamp),attributes:e.attributes,encryptionType:n};r(new Ll(o,new ReadableStream({start:n=>{if(i=n,this.textStreamControllers.has(e.streamId))throw new za(`A data stream read is already in progress for a stream with id ${e.streamId}.`,Ra.AlreadyOpened);this.byteStreamControllers.set(e.streamId,{info:o,controller:i,startTime:Date.now(),sendingParticipantIdentity:t,outOfBandFailureRejectingFuture:a})}}),ms(e.totalLength),a),{identity:t})}else if(e.contentHeader.case===`textHeader`){let r=this.textStreamHandlers.get(e.topic);if(!r){this.log.debug(`ignoring incoming text stream due to no handler for topic`,e.topic);return}let i,a=new os;a.promise.catch(e=>{this.log.error(e)});let o={id:e.streamId,mimeType:e.mimeType,size:e.totalLength?Number(e.totalLength):void 0,topic:e.topic,timestamp:Number(e.timestamp),attributes:e.attributes,encryptionType:n};r(new Rl(o,new ReadableStream({start:n=>{if(i=n,this.textStreamControllers.has(e.streamId))throw new za(`A data stream read is already in progress for a stream with id ${e.streamId}.`,Ra.AlreadyOpened);this.textStreamControllers.set(e.streamId,{info:o,controller:i,startTime:Date.now(),sendingParticipantIdentity:t,outOfBandFailureRejectingFuture:a})}}),ms(e.totalLength),a),{identity:t})}})}handleStreamChunk(e,t){let n=this.byteStreamControllers.get(e.streamId);n&&(n.info.encryptionType===t?e.content.length>0&&n.controller.enqueue(e):(n.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${n.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId)));let r=this.textStreamControllers.get(e.streamId);r&&(r.info.encryptionType===t?e.content.length>0&&r.controller.enqueue(e):(r.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${r.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.textStreamControllers.delete(e.streamId)))}handleStreamTrailer(e,t){let n=this.textStreamControllers.get(e.streamId);n&&(n.info.encryptionType===t?(n.info.attributes=Object.assign(Object.assign({},n.info.attributes),e.attributes),n.controller.close(),this.textStreamControllers.delete(e.streamId)):n.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${n.info.encryptionType}`,Ra.EncryptionTypeMismatch)));let r=this.byteStreamControllers.get(e.streamId);r&&(r.info.encryptionType===t?(r.info.attributes=Object.assign(Object.assign({},r.info.attributes),e.attributes),r.controller.close()):r.controller.error(new za(`Encryption type mismatch for stream ${e.streamId}. Expected ${t}, got ${r.info.encryptionType}`,Ra.EncryptionTypeMismatch)),this.byteStreamControllers.delete(e.streamId))}},Bl=class{constructor(e,t,n){this.writableStream=e,this.defaultWriter=e.getWriter(),this.onClose=n,this.info=t}write(e){return this.defaultWriter.write(e)}close(){return k(this,void 0,void 0,function*(){var e;yield this.defaultWriter.close(),this.defaultWriter.releaseLock(),(e=this.onClose)==null||e.call(this)})}},Vl=class extends Bl{},Hl=class extends Bl{},Ul=15e3,Wl=class{constructor(e,t){this.engine=e,this.log=t}setupEngine(e){this.engine=e}sendText(e,t){return k(this,void 0,void 0,function*(){let n=crypto.randomUUID(),r=new TextEncoder().encode(e).byteLength,i=(t?.attachments)?.map(()=>crypto.randomUUID()),a=Array(i?i.length+1:1).fill(0),o=(e,n)=>{var r;a[n]=e;let i=a.reduce((e,t)=>e+t,0);(r=t?.onProgress)==null||r.call(t,i)},s=yield this.streamText({streamId:n,totalSize:r,destinationIdentities:t?.destinationIdentities,topic:t?.topic,attachedStreamIds:i,attributes:t?.attributes});return yield s.write(e),o(1,0),yield s.close(),t?.attachments&&i&&(yield Promise.all(t.attachments.map((e,n)=>k(this,void 0,void 0,function*(){return this._sendFile(i[n],e,{topic:t.topic,mimeType:e.type,onProgress:e=>{o(e,n+1)}})})))),s.info})}streamText(e){return k(this,void 0,void 0,function*(){let t=e?.streamId??crypto.randomUUID(),n={id:t,mimeType:`text/plain`,timestamp:Date.now(),topic:e?.topic??``,size:e?.totalSize,attributes:e?.attributes,encryptionType:this.engine.e2eeManager?.isDataChannelEncryptionEnabled?cn.GCM:cn.NONE},r=new Bn({streamId:t,mimeType:n.mimeType,topic:n.topic,timestamp:hs(n.timestamp),totalLength:hs(e?.totalSize),attributes:n.attributes,contentHeader:{case:`textHeader`,value:new Rn({version:e?.version,attachedStreamIds:e?.attachedStreamIds,replyToStreamId:e?.replyToStreamId,operationType:e?.type===`update`?Ln.UPDATE:Ln.CREATE})}}),i=e?.destinationIdentities,a=new pn({destinationIdentities:i,value:{case:`streamHeader`,value:r}});yield this.engine.sendDataPacket(a,mn.RELIABLE);let o=0,s=this.engine,c=new WritableStream({write(e){return k(this,void 0,void 0,function*(){for(let n of Ts(e,Ul)){let e=new pn({destinationIdentities:i,value:{case:`streamChunk`,value:new Vn({content:n,streamId:t,chunkIndex:hs(o)})}});yield s.sendDataPacket(e,mn.RELIABLE),o+=1}})},close(){return k(this,void 0,void 0,function*(){let e=new pn({destinationIdentities:i,value:{case:`streamTrailer`,value:new Hn({streamId:t})}});yield s.sendDataPacket(e,mn.RELIABLE)})},abort(e){console.log(`Sink error:`,e)}}),l=()=>k(this,void 0,void 0,function*(){yield u.close()});s.once(M.Closing,l);let u=new Vl(c,n,()=>this.engine.off(M.Closing,l));return u})}sendFile(e,t){return k(this,void 0,void 0,function*(){let n=crypto.randomUUID();return yield this._sendFile(n,e,t),{id:n}})}_sendFile(e,t,n){return k(this,void 0,void 0,function*(){let r=yield this.streamBytes({streamId:e,totalSize:t.size,name:t.name,mimeType:n?.mimeType??t.type,topic:n?.topic,destinationIdentities:n?.destinationIdentities}),i=t.stream().getReader();for(;;){let{done:e,value:t}=yield i.read();if(e)break;yield r.write(t)}return yield r.close(),r.info})}streamBytes(e){return k(this,void 0,void 0,function*(){let t=e?.streamId??crypto.randomUUID(),n=e?.destinationIdentities,r={id:t,mimeType:e?.mimeType??`application/octet-stream`,topic:e?.topic??``,timestamp:Date.now(),attributes:e?.attributes,size:e?.totalSize,name:e?.name??`unknown`,encryptionType:this.engine.e2eeManager?.isDataChannelEncryptionEnabled?cn.GCM:cn.NONE},i=new pn({destinationIdentities:n,value:{case:`streamHeader`,value:new Bn({totalLength:hs(r.size??0),mimeType:r.mimeType,streamId:t,topic:r.topic,timestamp:hs(Date.now()),attributes:r.attributes,contentHeader:{case:`byteHeader`,value:new zn({name:r.name})}})}});yield this.engine.sendDataPacket(i,mn.RELIABLE);let a=0,o=new _,s=this.engine,c=this.log;return new Hl(new WritableStream({write(e){return k(this,void 0,void 0,function*(){let r=yield o.lock(),i=0;try{for(;i<e.byteLength;){let r=e.slice(i,i+Ul),o=new pn({destinationIdentities:n,value:{case:`streamChunk`,value:new Vn({content:r,streamId:t,chunkIndex:hs(a)})}});yield s.sendDataPacket(o,mn.RELIABLE),a+=1,i+=r.byteLength}}finally{r()}})},close(){return k(this,void 0,void 0,function*(){let e=new pn({destinationIdentities:n,value:{case:`streamTrailer`,value:new Hn({streamId:t})}});yield s.sendDataPacket(e,mn.RELIABLE)})},abort(e){c.error(`Sink error:`,e)}}),r)})}},Gl=class extends P{constructor(e,t,n,r,i){super(e,n,i),this.sid=t,this.receiver=r}get isLocal(){return!1}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?N.Muted:N.Unmuted,this))}setMediaStream(e){this.mediaStream=e;let t=n=>{n.track===this._mediaStreamTrack&&(e.removeEventListener(`removetrack`,t),this.receiver&&`playoutDelayHint`in this.receiver&&(this.receiver.playoutDelayHint=void 0),this.receiver=void 0,this._currentBitrate=0,this.emit(N.Ended,this))};e.addEventListener(`removetrack`,t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return k(this,void 0,void 0,function*(){if(this.receiver?.getStats)return yield this.receiver.getStats()})}setPlayoutDelay(e){this.receiver?`playoutDelayHint`in this.receiver?this.receiver.playoutDelayHint=e:this.log.warn(`Playout delay not supported in this browser`):this.log.warn(`Cannot set playout delay, track already ended`)}getPlayoutDelay(){if(this.receiver){if(`playoutDelayHint`in this.receiver)return this.receiver.playoutDelayHint;this.log.warn(`Playout delay not supported in this browser`)}else this.log.warn(`Cannot get playout delay, track already ended`);return 0}startMonitor(){this.monitorInterval||=setInterval(()=>this.monitorReceiver(),qc),fo()&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){let e=()=>{this.timeSyncHandle=requestAnimationFrame(()=>e());let t=this.receiver?.getSynchronizationSources()[0];if(t){let{timestamp:e,rtpTimestamp:n}=t;n&&this.rtpTimestamp!==n&&(this.emit(N.TimeSyncUpdate,{timestamp:e,rtpTimestamp:n}),this.rtpTimestamp=n)}};e()}},Kl=class extends Gl{constructor(e,t,n,r,i,a){super(e,t,P.Kind.Audio,n,a),this.monitorReceiver=()=>k(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.audioContext=r,this.webAudioPluginNodes=[],i&&(this.sinkId=i.deviceId)}setVolume(e){var t;for(let n of this.attachedElements)this.audioContext?(t=this.gainNode)==null||t.gain.setTargetAtTime(e,0,.1):n.volume=e;Uo()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(Uo())return 1;let e=0;return this.attachedElements.forEach(t=>{t.volume>e&&(e=t.volume)}),e}setSinkId(e){return k(this,void 0,void 0,function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map(t=>{if(Mo(t))return t.setSinkId(e)}))})}attach(e){let t=this.attachedElements.length===0;return e?super.attach(e):e=super.attach(),this.sinkId&&Mo(e)&&e.setSinkId(this.sinkId).catch(e=>{this.log.error(`Failed to set sink id on remote audio track`,e,this.logContext)}),this.audioContext&&t&&(this.log.debug(`using audio context mapping`,this.logContext),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(e,t){this.disconnectWebAudio(),this.sourceNode=e.createMediaStreamSource(t.srcObject);let n=this.sourceNode;this.webAudioPluginNodes.forEach(e=>{n.connect(e),n=e}),this.gainNode=e.createGain(),n.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),e.state!==`running`&&e.resume().then(()=>{e.state!==`running`&&this.emit(N.AudioPlaybackFailed,Error(`Audio Context couldn't be started automatically`))}).catch(e=>{this.emit(N.AudioPlaybackFailed,e)})}disconnectWebAudio(){var e,t;(e=this.gainNode)==null||e.disconnect(),(t=this.sourceNode)==null||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return k(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;let e=yield this.receiver.getStats(),t;return e.forEach(e=>{e.type===`inbound-rtp`&&(t={type:`audio`,streamId:e.id,timestamp:e.timestamp,jitter:e.jitter,bytesReceived:e.bytesReceived,concealedSamples:e.concealedSamples,concealmentEvents:e.concealmentEvents,silentConcealedSamples:e.silentConcealedSamples,silentConcealmentEvents:e.silentConcealmentEvents,totalAudioEnergy:e.totalAudioEnergy,totalSamplesDuration:e.totalSamplesDuration})}),t})}},ql=100,Jl=class extends Gl{constructor(e,t,n,r,i){super(e,t,P.Kind.Video,n,i),this.elementInfos=[],this.monitorReceiver=()=>k(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Jc(e,this.prevStats)),this.prevStats=e}),this.debouncedHandleResize=Sc(()=>{this.updateDimensions()},ql),this.adaptiveStreamSettings=r}get isAdaptiveStream(){return this.adaptiveStreamSettings!==void 0}setStreamState(e){super.setStreamState(e),this.log.debug(`setStreamState`,e),this.isAdaptiveStream&&e===P.StreamState.Active&&this.updateVisibility()}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach(t=>{e?So(this._mediaStreamTrack,t):xo(this._mediaStreamTrack,t)})}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&this.elementInfos.find(t=>t.element===e)===void 0){let t=new Yl(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&this.elementInfos.find(t=>t===e)===void 0?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):this.log.warn(`visibility resize observer not triggered`,this.logContext)}stopObservingElementInfo(e){if(!this.isAdaptiveStream){this.log.warn(`stopObservingElementInfo ignored`,this.logContext);return}let t=this.elementInfos.filter(t=>t===e);for(let e of t)e.stopObserving();this.elementInfos=this.elementInfos.filter(t=>t!==e),this.updateVisibility(),this.debouncedHandleResize()}detach(e){let t=[];if(e)return this.stopObservingElement(e),super.detach(e);t=super.detach();for(let e of t)this.stopObservingElement(e);return t}getDecoderImplementation(){return this.prevStats?.decoderImplementation}getReceiverStats(){return k(this,void 0,void 0,function*(){if(!this.receiver||!this.receiver.getStats)return;let e=yield this.receiver.getStats(),t,n=``,r=new Map;return e.forEach(e=>{e.type===`inbound-rtp`?(n=e.codecId,t={type:`video`,streamId:e.id,framesDecoded:e.framesDecoded,framesDropped:e.framesDropped,framesReceived:e.framesReceived,packetsReceived:e.packetsReceived,packetsLost:e.packetsLost,frameWidth:e.frameWidth,frameHeight:e.frameHeight,pliCount:e.pliCount,firCount:e.firCount,nackCount:e.nackCount,jitter:e.jitter,timestamp:e.timestamp,bytesReceived:e.bytesReceived,decoderImplementation:e.decoderImplementation}):e.type===`codec`&&r.set(e.id,e)}),t&&n!==``&&r.get(n)&&(t.mimeType=r.get(n).mimeType),t})}stopObservingElement(e){let t=this.elementInfos.filter(t=>t.element===e);for(let e of t)this.stopObservingElementInfo(e)}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return k(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(e){let t=this.elementInfos.reduce((e,t)=>Math.max(e,t.visibilityChangedAt||0),0),n=this.adaptiveStreamSettings?.pauseVideoInBackground??!0?this.isInBackground:!1,r=this.elementInfos.some(e=>e.pictureInPicture),i=this.elementInfos.some(e=>e.visible)&&!n||r;if(!(this.lastVisible===i&&!e)){if(!i&&Date.now()-t<ql){Ha.setTimeout(()=>{this.updateVisibility()},ql);return}this.lastVisible=i,this.emit(N.VisibilityChanged,i,this)}}updateDimensions(){let e=0,t=0,n=this.getPixelDensity();for(let r of this.elementInfos){let i=r.width()*n,a=r.height()*n;i+a>e+t&&(e=i,t=a)}this.lastDimensions?.width===e&&this.lastDimensions?.height===t||(this.lastDimensions={width:e,height:t},this.emit(N.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){let e=this.adaptiveStreamSettings?.pixelDensity;return e===`screen`?Jo():e||(Jo()>2?2:1)}},Yl=class{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;let{target:n,isIntersecting:r}=e;n===this.element&&(this.isIntersecting=r,this.isPiP=Xl(this.element),this.visibilityChangedAt=Date.now(),(t=this.handleVisibilityChanged)==null||t.call(this))},this.onEnterPiP=()=>{var e,t;(e=window.documentPictureInPicture?.window)==null||e.addEventListener(`pagehide`,this.onLeavePiP),this.isPiP=Xl(this.element),(t=this.handleVisibilityChanged)==null||t.call(this)},this.onLeavePiP=()=>{var e;this.isPiP=Xl(this.element),(e=this.handleVisibilityChanged)==null||e.call(this)},this.element=e,this.isIntersecting=t??Zl(e),this.isPiP=Ho()&&Xl(e),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var e,t;this.isIntersecting=Zl(this.element),this.isPiP=Xl(this.element),this.element.handleResize=()=>{var e;(e=this.handleResize)==null||e.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,ts().observe(this.element),$o().observe(this.element),this.element.addEventListener(`enterpictureinpicture`,this.onEnterPiP),this.element.addEventListener(`leavepictureinpicture`,this.onLeavePiP),(e=window.documentPictureInPicture)==null||e.addEventListener(`enter`,this.onEnterPiP),(t=window.documentPictureInPicture?.window)==null||t.addEventListener(`pagehide`,this.onLeavePiP)}stopObserving(){var e,t,n,r;(e=ts())==null||e.unobserve(this.element),(t=$o())==null||t.unobserve(this.element),this.element.removeEventListener(`enterpictureinpicture`,this.onEnterPiP),this.element.removeEventListener(`leavepictureinpicture`,this.onLeavePiP),(n=window.documentPictureInPicture)==null||n.removeEventListener(`enter`,this.onEnterPiP),(r=window.documentPictureInPicture?.window)==null||r.removeEventListener(`pagehide`,this.onLeavePiP)}};function Xl(e){return document.pictureInPictureElement===e?!0:window.documentPictureInPicture?.window?Zl(e,window.documentPictureInPicture?.window):!1}function Zl(e,t){let n=t||window,r=e.offsetTop,i=e.offsetLeft,a=e.offsetWidth,o=e.offsetHeight,{hidden:s}=e,{display:c}=getComputedStyle(e);for(;e.offsetParent;)e=e.offsetParent,r+=e.offsetTop,i+=e.offsetLeft;return r<n.pageYOffset+n.innerHeight&&i<n.pageXOffset+n.innerWidth&&r+o>n.pageYOffset&&i+a>n.pageXOffset&&!s&&c!==`none`}var Ql=class extends di.EventEmitter{constructor(e,t,n,r){super(),this.metadataMuted=!1,this.encryption=cn.NONE,this.log=$r,this.handleMuted=()=>{this.emit(N.Muted)},this.handleUnmuted=()=>{this.emit(N.Unmuted)},this.log=ei(r?.loggerName??Qr.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=n,this.source=P.Source.Unknown}setTrack(e){this.track&&(this.track.off(N.Muted,this.handleMuted),this.track.off(N.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(N.Muted,this.handleMuted),e.on(N.Unmuted,this.handleUnmuted))}get logContext(){return Object.assign(Object.assign({},this.loggerContextCb?.call(this)),uo(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return this.track!==void 0}get isEncrypted(){return this.encryption!==cn.NONE}get audioTrack(){if(_s(this.track))return this.track}get videoTrack(){if(vs(this.track))return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=P.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===P.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,this.log.debug(`update publication info`,Object.assign(Object.assign({},this.logContext),{info:e}))}};(function(e){(function(e){e.Desired=`desired`,e.Subscribed=`subscribed`,e.Unsubscribed=`unsubscribed`})(e.SubscriptionStatus||={}),(function(e){e.Allowed=`allowed`,e.NotAllowed=`not_allowed`})(e.PermissionStatus||={})})(Ql||={});var $l=class extends Ql{get isUpstreamPaused(){return this.track?.isUpstreamPaused}constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.handleTrackEnded=()=>{this.emit(N.Ended)},this.handleCpuConstrained=()=>{this.track&&vs(this.track)&&this.emit(N.CpuConstrained,this.track)},this.updateInfo(t),this.setTrack(n)}setTrack(e){this.track&&(this.track.off(N.Ended,this.handleTrackEnded),this.track.off(N.CpuConstrained,this.handleCpuConstrained)),super.setTrack(e),e&&(e.on(N.Ended,this.handleTrackEnded),e.on(N.CpuConstrained,this.handleCpuConstrained))}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}get isLocal(){return!0}mute(){return k(this,void 0,void 0,function*(){return this.track?.mute()})}unmute(){return k(this,void 0,void 0,function*(){return this.track?.unmute()})}pauseUpstream(){return k(this,void 0,void 0,function*(){yield this.track?.pauseUpstream()})}resumeUpstream(){return k(this,void 0,void 0,function*(){yield this.track?.resumeUpstream()})}getTrackFeatures(){if(_s(this.track)){let e=this.track.getSourceTrackSettings(),t=new Set;return e.autoGainControl&&t.add($t.TF_AUTO_GAIN_CONTROL),e.echoCancellation&&t.add($t.TF_ECHO_CANCELLATION),e.noiseSuppression&&t.add($t.TF_NOISE_SUPPRESSION),e.channelCount&&e.channelCount>1&&t.add($t.TF_STEREO),this.options?.dtx||t.add($t.TF_NO_DTX),this.track.enhancedNoiseCancellation&&t.add($t.TF_ENHANCED_NOISE_CANCELLATION),Array.from(t.values())}else return[]}};function eu(e,t){return k(this,void 0,void 0,function*(){e??={};let n=!1,{audioProcessor:r,videoProcessor:i,optionsWithoutProcessor:a}=mo(e),o=a.audio,s=a.video;if(r&&typeof a.audio==`object`&&(a.audio.processor=r),i&&typeof a.video==`object`&&(a.video.processor=i),e.audio&&typeof a.audio==`object`&&typeof a.audio.deviceId==`string`){let e=a.audio.deviceId;a.audio.deviceId={exact:e},n=!0,o=Object.assign(Object.assign({},a.audio),{deviceId:{ideal:e}})}if(a.video&&typeof a.video==`object`&&typeof a.video.deviceId==`string`){let e=a.video.deviceId;a.video.deviceId={exact:e},n=!0,s=Object.assign(Object.assign({},a.video),{deviceId:{ideal:e}})}a.audio===!0?a.audio={deviceId:`default`}:typeof a.audio==`object`&&a.audio!==null&&(a.audio=Object.assign(Object.assign({},a.audio),{deviceId:a.audio.deviceId||`default`})),a.video===!0?a.video={deviceId:`default`}:typeof a.video==`object`&&!a.video.deviceId&&(a.video.deviceId=`default`);let c=eo(a,Nc,Pc),l=no(c),u=navigator.mediaDevices.getUserMedia(l);a.audio&&(Js.userMediaPromiseMap.set(`audioinput`,u),u.catch(()=>Js.userMediaPromiseMap.delete(`audioinput`))),a.video&&(Js.userMediaPromiseMap.set(`videoinput`,u),u.catch(()=>Js.userMediaPromiseMap.delete(`videoinput`)));try{let e=yield u;return yield Promise.all(e.getTracks().map(n=>k(this,void 0,void 0,function*(){let a=n.kind===`audio`,o=a?c.audio:c.video;(typeof o==`boolean`||!o)&&(o={});let s,u=a?l.audio:l.video;typeof u!=`boolean`&&(s=u);let d=n.getSettings().deviceId;s?.deviceId&&cs(s.deviceId)!==d?s.deviceId=d:s||={deviceId:d};let f=rl(n,s,t);return f.kind===P.Kind.Video?f.source=P.Source.Camera:f.kind===P.Kind.Audio&&(f.source=P.Source.Microphone),f.mediaStream=e,_s(f)&&r?yield f.setProcessor(r):vs(f)&&i&&(yield f.setProcessor(i)),f})))}catch(r){if(!n)throw r;return eu(Object.assign(Object.assign({},e),{audio:o,video:s}),t)}})}function tu(e){return k(this,void 0,void 0,function*(){return(yield eu({audio:e??!0,video:!1}))[0]})}var nu;(function(e){e.Excellent=`excellent`,e.Good=`good`,e.Poor=`poor`,e.Lost=`lost`,e.Unknown=`unknown`})(nu||={});function ru(e){switch(e){case Jt.EXCELLENT:return nu.Excellent;case Jt.GOOD:return nu.Good;case Jt.POOR:return nu.Poor;case Jt.LOST:return nu.Lost;default:return nu.Unknown}}var iu=class extends di.EventEmitter{get logContext(){var e;return Object.assign({},((e=this.loggerOptions)?.loggerContextCb)?.call(e))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every(e=>e.isEncrypted)}get isAgent(){return this.permissions?.agent||this.kind===on.AGENT}get isActive(){return this.participantInfo?.state===an.ACTIVE}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(e,t,n,r,i,a){let o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:on.STANDARD;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=nu.Unknown,this.log=$r,this.log=ei(a?.loggerName??Qr.Participant),this.loggerOptions=a,this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=n,this.metadata=r,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=o,this._attributes=i??{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(let[,t]of this.trackPublications)if(t.source===e)return t}getTrackPublicationByName(e){for(let[,t]of this.trackPublications)if(t.trackName===e)return t}waitUntilActive(){return this.isActive?Promise.resolve():this.activeFuture?this.activeFuture.promise:(this.activeFuture=new os,this.once(j.Active,()=>{var e,t;(t=(e=this.activeFuture)?.resolve)==null||t.call(e),this.activeFuture=void 0}),this.activeFuture.promise)}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){return!(this.getTrackPublication(P.Source.Camera)?.isMuted??!0)}get isMicrophoneEnabled(){return!(this.getTrackPublication(P.Source.Microphone)?.isMuted??!0)}get isScreenShareEnabled(){return!!this.getTrackPublication(P.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(Number.parseInt(this.participantInfo.joinedAt.toString())*1e3):new Date}updateInfo(e){return this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version?!1:(this.identity=e.identity,this.sid=e.sid,this._setName(e.name),this._setMetadata(e.metadata),this._setAttributes(e.attributes),e.state===an.ACTIVE&&this.participantInfo?.state!==an.ACTIVE&&this.emit(j.Active),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,!0)}_setMetadata(e){let t=this.metadata!==e,n=this.metadata;this.metadata=e,t&&this.emit(j.ParticipantMetadataChanged,n)}_setName(e){let t=this.name!==e;this.name=e,t&&this.emit(j.ParticipantNameChanged,e)}_setAttributes(e){let t=po(this.attributes,e);this._attributes=e,Object.keys(t).length>0&&this.emit(j.AttributesChanged,t)}setPermissions(e){let t=this.permissions,n=e.canPublish!==this.permissions?.canPublish||e.canSubscribe!==this.permissions?.canSubscribe||e.canPublishData!==this.permissions?.canPublishData||e.hidden!==this.permissions?.hidden||e.recorder!==this.permissions?.recorder||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some((e,t)=>e!==this.permissions?.canPublishSources[t])||e.canSubscribeMetrics!==this.permissions?.canSubscribeMetrics;return this.permissions=e,n&&this.emit(j.ParticipantPermissionsChanged,t),n}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(j.IsSpeakingChanged,e))}setConnectionQuality(e){let t=this._connectionQuality;this._connectionQuality=ru(e),t!==this._connectionQuality&&this.emit(j.ConnectionQualityChanged,this._connectionQuality)}setDisconnected(){var e,t;this.activeFuture&&=((t=(e=this.activeFuture).reject)==null||t.call(e,Error(`Participant disconnected`)),void 0)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach(t=>_s(t.track)&&t.track.setAudioContext(e))}addTrackPublication(e){e.on(N.Muted,()=>{this.emit(j.TrackMuted,e)}),e.on(N.Unmuted,()=>{this.emit(j.TrackUnmuted,e)});let t=e;switch(t.track&&(t.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case P.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case P.Kind.Video:this.videoTrackPublications.set(e.trackSid,e);break}}};function au(e){if(!e.participantSid&&!e.participantIdentity)throw Error(`Invalid track permission, must provide at least one of participantIdentity and participantSid`);return new wr({participantIdentity:e.participantIdentity??``,participantSid:e.participantSid??``,allTracks:e.allowAll??!1,trackSids:e.allowedTrackSids||[]})}var ou=class extends iu{constructor(e,t,n,r,i,a){super(e,t,void 0,void 0,void 0,{loggerName:r.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=cn.NONE,this.enabledPublishVideoCodecs=[],this.pendingAcks=new Map,this.pendingResponses=new Map,this.handleReconnecting=()=>{this.reconnectFuture||=new os},this.handleReconnected=()=>{var e,t;(t=(e=this.reconnectFuture)?.resolve)==null||t.call(e),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleClosing=()=>{var e,t,n,r,i,a;this.reconnectFuture&&=(this.reconnectFuture.promise.catch(e=>this.log.warn(e.message,this.logContext)),(t=(e=this.reconnectFuture)?.reject)==null||t.call(e,Error(`Got disconnected during reconnection attempt`)),void 0),this.signalConnectedFuture&&=((r=(n=this.signalConnectedFuture).reject)==null||r.call(n,Error(`Got disconnected without signal connected`)),void 0),(a=(i=this.activeAgentFuture)?.reject)==null||a.call(i,Error(`Got disconnected without active agent present`)),this.activeAgentFuture=void 0,this.firstActiveAgent=void 0},this.handleSignalConnected=e=>{var t,n;e.participant&&this.updateInfo(e.participant),this.signalConnectedFuture||=new os,(n=(t=this.signalConnectedFuture).resolve)==null||n.call(t)},this.handleSignalRequestResponse=e=>{let{requestId:t,reason:n,message:r}=e,i=this.pendingSignalRequests.get(t);i&&(n!==Rr.OK&&i.reject(new La(r,n)),this.pendingSignalRequests.delete(t))},this.handleDataPacket=e=>{switch(e.value.case){case`rpcResponse`:let t=e.value.value,n=null,r=null;t.value.case===`payload`?n=t.value.value:t.value.case===`error`&&(r=Uc.fromProto(t.value.value)),this.handleIncomingRpcResponse(t.requestId,n,r);break;case`rpcAck`:let i=e.value.value;this.handleIncomingRpcAck(i.requestId);break}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug(`updating track subscription permissions`,Object.assign(Object.assign({},this.logContext),{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions})),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map(e=>au(e)))},this.onTrackUnmuted=e=>{this.onTrackMuted(e,e.isUpstreamPaused)},this.onTrackMuted=(e,t)=>{if(t===void 0&&(t=!0),!e.sid){this.log.error(`could not update mute status for unpublished track`,Object.assign(Object.assign({},this.logContext),uo(e)));return}this.engine.updateMuteStatus(e.sid,t)},this.onTrackUpstreamPaused=e=>{this.log.debug(`upstream paused`,Object.assign(Object.assign({},this.logContext),uo(e))),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{this.log.debug(`upstream resumed`,Object.assign(Object.assign({},this.logContext),uo(e))),this.onTrackMuted(e,e.isMuted)},this.onTrackFeatureUpdate=e=>{let t=this.audioTrackPublications.get(e.sid);if(!t){this.log.warn(`Could not update local audio track settings, missing publication for track ${e.sid}`,this.logContext);return}this.engine.client.sendUpdateLocalAudioTrack(t.trackSid,t.getTrackFeatures())},this.onTrackCpuConstrained=(e,t)=>{this.log.debug(`track cpu constrained`,Object.assign(Object.assign({},this.logContext),uo(t))),this.emit(j.LocalTrackCpuConstrained,e,t)},this.handleSubscribedQualityUpdate=e=>k(this,void 0,void 0,function*(){var t,n,r,i;if(!this.roomOptions?.dynacast)return;let a=this.videoTrackPublications.get(e.trackSid);if(!a){this.log.warn(`received subscribed quality update for unknown track`,Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}if(!a.videoTrack)return;let o=yield a.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var s=!0,c=si(o),l;l=yield c.next(),t=l.done,!t;s=!0){i=l.value,s=!1;let e=i;Ja(e)&&(this.log.debug(`publish ${e} for ${a.videoTrack.sid}`,Object.assign(Object.assign({},this.logContext),uo(a))),yield this.publishAdditionalCodecForTrack(a.videoTrack,e,a.options))}}catch(e){n={error:e}}finally{try{!s&&!t&&(r=c.return)&&(yield r.call(c))}finally{if(n)throw n.error}}}),this.handleLocalTrackUnpublished=e=>{let t=this.trackPublications.get(e.trackSid);if(!t){this.log.warn(`received unpublished event for unknown track`,Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}this.unpublishTrack(t.track)},this.handleTrackEnded=e=>k(this,void 0,void 0,function*(){if(e.source===P.Source.ScreenShare||e.source===P.Source.ScreenShareAudio)this.log.debug(`unpublishing local track due to TrackEnded`,Object.assign(Object.assign({},this.logContext),uo(e))),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(bs(e)||ys(e))try{if(Ho())try{let t=yield navigator==null?void 0:navigator.permissions.query({name:e.source===P.Source.Camera?`camera`:`microphone`});if(t&&t.state===`denied`)throw this.log.warn(`user has revoked access to ${e.source}`,Object.assign(Object.assign({},this.logContext),uo(e))),t.onchange=()=>{t.state!==`denied`&&(e.isMuted||e.restartTrack(),t.onchange=null)},Error(`GetUserMedia Permission denied`)}catch{}e.isMuted||(this.log.debug(`track ended, attempting to use a different device`,Object.assign(Object.assign({},this.logContext),uo(e))),bs(e)?yield e.restartTrack({deviceId:`default`}):yield e.restartTrack())}catch{this.log.warn(`could not restart track, muting instead`,Object.assign(Object.assign({},this.logContext),uo(e))),yield e.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=n,this.roomOptions=r,this.setupEngine(n),this.activeDeviceMap=new Map([[`audioinput`,`default`],[`videoinput`,`default`],[`audiooutput`,`default`]]),this.pendingSignalRequests=new Map,this.rpcHandlers=i,this.roomOutgoingDataStreamManager=a}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==cn.NONE}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setupEngine(e){this.engine=e,this.engine.on(M.RemoteMute,(e,t)=>{let n=this.trackPublications.get(e);!n||!n.track||(t?n.mute():n.unmute())}),this.signalConnectedFuture?.isResolved&&(this.signalConnectedFuture=void 0),this.engine.on(M.Connected,this.handleReconnected).on(M.SignalConnected,this.handleSignalConnected).on(M.SignalRestarted,this.handleReconnected).on(M.SignalResumed,this.handleReconnected).on(M.Restarting,this.handleReconnecting).on(M.Resuming,this.handleReconnecting).on(M.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(M.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(M.Closing,this.handleClosing).on(M.SignalRequestResponse,this.handleSignalRequestResponse).on(M.DataPacketReceived,this.handleDataPacket)}setMetadata(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({metadata:e})})}setName(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({name:e})})}setAttributes(e){return k(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({attributes:e})})}requestMetadataUpdate(e){return k(this,arguments,void 0,function(e){var t=this;let{metadata:n,name:r,attributes:i}=e;return function*(){return new Promise((e,a)=>k(t,void 0,void 0,function*(){try{let t=!1,o=yield this.engine.client.sendUpdateLocalMetadata(n??this.metadata??``,r??this.name??``,i),s=performance.now();for(this.pendingSignalRequests.set(o,{resolve:e,reject:e=>{a(e),t=!0},values:{name:r,metadata:n,attributes:i}});performance.now()-s<5e3&&!t;){if((!r||this.name===r)&&(!n||this.metadata===n)&&(!i||Object.entries(i).every(e=>{let[t,n]=e;return this.attributes[t]===n||n===``&&!this.attributes[t]}))){this.pendingSignalRequests.delete(o),e();return}yield Eo(50)}a(new La(`Request to update local metadata timed out`,`TimeoutError`))}catch(e){e instanceof Error&&a(e)}}))}()})}setCameraEnabled(e,t,n){return this.setTrackEnabled(P.Source.Camera,e,t,n)}setMicrophoneEnabled(e,t,n){return this.setTrackEnabled(P.Source.Microphone,e,t,n)}setScreenShareEnabled(e,t,n){return this.setTrackEnabled(P.Source.ScreenShare,e,t,n)}setE2EEEnabled(e){return k(this,void 0,void 0,function*(){this.encryptionType=e?cn.GCM:cn.NONE,yield this.republishAllTracks(void 0,!1)})}setTrackEnabled(e,t,n,r){return k(this,void 0,void 0,function*(){this.log.debug(`setTrackEnabled`,Object.assign(Object.assign({},this.logContext),{source:e,enabled:t})),this.republishPromise&&(yield this.republishPromise);let i=this.getTrackPublication(e);if(t)if(i)yield i.unmute();else{let t;if(this.pendingPublishing.has(e)){let t=yield this.waitForPendingPublicationOfSource(e);return t||this.log.info(`waiting for pending publication promise timed out`,Object.assign(Object.assign({},this.logContext),{source:e})),yield t?.unmute(),t}this.pendingPublishing.add(e);try{switch(e){case P.Source.Camera:t=yield this.createTracks({video:n??!0});break;case P.Source.Microphone:t=yield this.createTracks({audio:n??!0});break;case P.Source.ScreenShare:t=yield this.createScreenTracks(Object.assign({},n));break;default:throw new Ma(e)}}catch(n){throw t?.forEach(e=>{e.stop()}),n instanceof Error&&this.emit(j.MediaDevicesError,n,oo(e)),this.pendingPublishing.delete(e),n}for(let r of t){let t=Object.assign(Object.assign({},this.roomOptions.publishDefaults),n);e===P.Source.Microphone&&_s(r)&&t.preConnectBuffer&&(this.log.info(`starting preconnect buffer for microphone`,Object.assign({},this.logContext)),r.startPreConnectBuffer())}try{let e=[];for(let n of t)this.log.info(`publishing track`,Object.assign(Object.assign({},this.logContext),uo(n))),e.push(this.publishTrack(n,r));let n=yield Promise.all(e);[i]=n}catch(e){throw t?.forEach(e=>{e.stop()}),e}finally{this.pendingPublishing.delete(e)}}else if(!i?.track&&this.pendingPublishing.has(e)&&(i=yield this.waitForPendingPublicationOfSource(e),i||this.log.info(`waiting for pending publication promise timed out`,Object.assign(Object.assign({},this.logContext),{source:e}))),i&&i.track)if(e===P.Source.ScreenShare){i=yield this.unpublishTrack(i.track);let e=this.getTrackPublication(P.Source.ScreenShareAudio);e&&e.track&&this.unpublishTrack(e.track)}else yield i.mute();return i})}enableCameraAndMicrophone(){return k(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(P.Source.Camera)||this.pendingPublishing.has(P.Source.Microphone))){this.pendingPublishing.add(P.Source.Camera),this.pendingPublishing.add(P.Source.Microphone);try{let e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map(e=>this.publishTrack(e)))}finally{this.pendingPublishing.delete(P.Source.Camera),this.pendingPublishing.delete(P.Source.Microphone)}}})}createTracks(e){return k(this,void 0,void 0,function*(){e??={};let t=eo(e,this.roomOptions?.audioCaptureDefaults,this.roomOptions?.videoCaptureDefaults);try{return(yield eu(t,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext})).map(e=>(_s(e)&&(this.microphoneError=void 0,e.setAudioContext(this.audioContext),e.source=P.Source.Microphone,this.emit(j.AudioStreamAcquired)),vs(e)&&(this.cameraError=void 0,e.source=P.Source.Camera),e))}catch(t){throw t instanceof Error&&(e.audio&&(this.microphoneError=t),e.video&&(this.cameraError=t)),t}})}createScreenTracks(e){return k(this,void 0,void 0,function*(){if(e===void 0&&(e={}),navigator.mediaDevices.getDisplayMedia===void 0)throw new ja(`getDisplayMedia not supported`);e.resolution===void 0&&!Ro()&&(e.resolution=$a.h1080fps30.resolution);let t=so(e),n=yield navigator.mediaDevices.getDisplayMedia(t),r=n.getVideoTracks();if(r.length===0)throw new Ma(`no video track found`);let i=new xl(r[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});i.source=P.Source.ScreenShare,e.contentHint&&(i.mediaStreamTrack.contentHint=e.contentHint);let a=[i];if(n.getAudioTracks().length>0){this.emit(j.AudioStreamAcquired);let e=new nl(n.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});e.source=P.Source.ScreenShareAudio,a.push(e)}return a})}publishTrack(e,t){return k(this,void 0,void 0,function*(){return this.publishOrRepublishTrack(e,t)})}publishOrRepublishTrack(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return function*(){bs(e)&&e.setAudioContext(n.audioContext),yield n.reconnectFuture?.promise,n.republishPromise&&!r&&(yield n.republishPromise),gs(e)&&n.pendingPublishPromises.has(e)&&(yield n.pendingPublishPromises.get(e));let i;if(e instanceof MediaStreamTrack)i=e.getConstraints();else{i=e.constraints;let t;switch(e.source){case P.Source.Microphone:t=`audioinput`;break;case P.Source.Camera:t=`videoinput`}t&&n.activeDeviceMap.has(t)&&(i=Object.assign(Object.assign({},i),{deviceId:n.activeDeviceMap.get(t)}))}if(e instanceof MediaStreamTrack)switch(e.kind){case`audio`:e=new nl(e,i,!0,n.audioContext,{loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});break;case`video`:e=new xl(e,i,!0,{loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});break;default:throw new Ma(`unsupported MediaStreamTrack kind ${e.kind}`)}else e.updateLoggerOptions({loggerName:n.roomOptions.loggerName,loggerContextCb:()=>n.logContext});let a;if(n.trackPublications.forEach(t=>{t.track&&t.track===e&&(a=t)}),a)return n.log.warn(`track has already been published, skipping`,Object.assign(Object.assign({},n.logContext),uo(a))),a;let o=Object.assign(Object.assign({},n.roomOptions.publishDefaults),t),s=`channelCount`in e.mediaStreamTrack.getSettings()&&e.mediaStreamTrack.getSettings().channelCount===2||e.mediaStreamTrack.getConstraints().channelCount===2,c=o.forceStereo??s;c&&(o.dtx===void 0&&n.log.info(`Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.`,Object.assign(Object.assign({},n.logContext),uo(e))),o.red===void 0&&n.log.info(`Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work.`),o.dtx??=!1,o.red??=!1),!Vo()&&n.roomOptions.e2ee&&(n.log.info(`End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2`,Object.assign({},n.logContext)),o.simulcast=!1),o.source&&(e.source=o.source);let l=new Promise((t,r)=>k(n,void 0,void 0,function*(){try{if(this.engine.client.currentState!==ec.CONNECTED){this.log.debug(`deferring track publication until signal is connected`,Object.assign(Object.assign({},this.logContext),{track:uo(e)}));let n=!1,i=setTimeout(()=>{n=!0,e.stop(),r(new Ia(`publishing rejected as engine not connected within timeout`,408))},15e3);if(yield this.waitUntilEngineConnected(),clearTimeout(i),n)return;t(yield this.publish(e,o,c))}else try{t(yield this.publish(e,o,c))}catch(e){r(e)}}catch(e){r(e)}}));n.pendingPublishPromises.set(e,l);try{return yield l}catch(e){throw e}finally{n.pendingPublishPromises.delete(e)}}()})}waitUntilEngineConnected(){return this.signalConnectedFuture||=new os,this.signalConnectedFuture.promise}hasPermissionsToPublish(e){if(!this.permissions)return this.log.warn(`no permissions present for publishing track`,Object.assign(Object.assign({},this.logContext),uo(e))),!1;let{canPublish:t,canPublishSources:n}=this.permissions;return t&&(n.length===0||n.map(e=>ho(e)).includes(e.source))?!0:(this.log.warn(`insufficient permissions to publish`,Object.assign(Object.assign({},this.logContext),uo(e))),!1)}publish(e,t,n){return k(this,void 0,void 0,function*(){if(!this.hasPermissionsToPublish(e))throw new Ia(`failed to publish track, insufficient permissions`,403);Array.from(this.trackPublications.values()).find(t=>gs(e)&&t.source===e.source)&&e.source!==P.Source.Unknown&&this.log.info(`publishing a second track with the same source: ${e.source}`,Object.assign(Object.assign({},this.logContext),uo(e))),t.stopMicTrackOnMute&&_s(e)&&(e.stopOnMute=!0),e.source===P.Source.ScreenShare&&Po()&&(t.simulcast=!1),t.videoCodec===`av1`&&!ko()&&(t.videoCodec=void 0),t.videoCodec===`vp9`&&!Ao()&&(t.videoCodec=void 0),t.videoCodec===void 0&&(t.videoCodec=jc),this.enabledPublishVideoCodecs.length>0&&(this.enabledPublishVideoCodecs.some(e=>t.videoCodec===co(e.mime))||(t.videoCodec=co(this.enabledPublishVideoCodecs[0].mime)));let r=t.videoCodec;e.on(N.Muted,this.onTrackMuted),e.on(N.Unmuted,this.onTrackUnmuted),e.on(N.Ended,this.handleTrackEnded),e.on(N.UpstreamPaused,this.onTrackUpstreamPaused),e.on(N.UpstreamResumed,this.onTrackUpstreamResumed),e.on(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let i=[],a=!(t.dtx??!0),o=e.getSourceTrackSettings();o.autoGainControl&&i.push($t.TF_AUTO_GAIN_CONTROL),o.echoCancellation&&i.push($t.TF_ECHO_CANCELLATION),o.noiseSuppression&&i.push($t.TF_NOISE_SUPPRESSION),o.channelCount&&o.channelCount>1&&i.push($t.TF_STEREO),a&&i.push($t.TF_NO_DTX),bs(e)&&e.hasPreConnectBuffer&&i.push($t.TF_PRECONNECT_BUFFER);let s=new Xn({cid:e.mediaStreamTrack.id,name:t.name,type:P.kindToProto(e.kind),muted:e.isMuted,source:P.sourceToProto(e.source),disableDtx:a,encryption:this.encryptionType,stereo:n,disableRed:this.isE2EEEnabled||!(t.red??!0),stream:t?.stream,backupCodecPolicy:t?.backupCodecPolicy,audioFeatures:i}),c;if(e.kind===P.Kind.Video){let n={width:0,height:0};try{n=yield e.waitForDimensions()}catch{let t=this.roomOptions.videoCaptureDefaults?.resolution??Za.h720.resolution;n={width:t.width,height:t.height},this.log.error(`could not determine track dimensions, using defaults`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{dims:n}))}s.width=n.width,s.height=n.height,ys(e)&&(jo(r)&&(e.source===P.Source.ScreenShare&&(t.scalabilityMode=`L1T3`,`contentHint`in e.mediaStreamTrack&&(e.mediaStreamTrack.contentHint=`motion`,this.log.info(`forcing contentHint to motion for screenshare with SVC codecs`,Object.assign(Object.assign({},this.logContext),uo(e))))),t.scalabilityMode=t.scalabilityMode??`L3T3_KEY`),s.simulcastCodecs=[new Yn({codec:r,cid:e.mediaStreamTrack.id})],t.backupCodec===!0&&(t.backupCodec={codec:jc}),t.backupCodec&&r!==t.backupCodec.codec&&s.encryption===cn.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),s.simulcastCodecs.push(new Yn({codec:t.backupCodec.codec,cid:``})))),c=dl(e.source===P.Source.ScreenShare,s.width,s.height,t),s.layers=wl(s.width,s.height,c,jo(t.videoCodec))}else e.kind===P.Kind.Audio&&(c=[{maxBitrate:t.audioPreset?.maxBitrate,priority:t.audioPreset?.priority??`high`,networkPriority:t.audioPreset?.priority??`high`}]);if(!this.engine||this.engine.isClosed)throw new Pa(`cannot publish track when not connected`);let l=()=>k(this,void 0,void 0,function*(){if(!this.engine.pcManager)throw new Pa(`pcManager is not ready`);if(e.sender=yield this.engine.createSender(e,t,c),this.emit(j.LocalSenderCreated,e.sender,e),ys(e)&&(t.degradationPreference??=yl(e),e.setDegradationPreference(t.degradationPreference)),c)if(Po()&&e.kind===P.Kind.Audio){let t;for(let n of this.engine.pcManager.publisher.getTransceivers())if(n.sender===e.sender){t=n;break}t&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:t,codec:`opus`,maxbr:c[0]?.maxBitrate?c[0].maxBitrate/1e3:0})}else e.codec&&jo(e.codec)&&c[0]?.maxBitrate&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:s.cid,codec:e.codec,maxbr:c[0].maxBitrate/1e3});yield this.engine.negotiate()}),u,d=new Promise((t,n)=>k(this,void 0,void 0,function*(){try{u=yield this.engine.addTrack(s),t(u)}catch(t){e.sender&&this.engine.pcManager?.publisher&&(this.engine.pcManager.publisher.removeTrack(e.sender),yield this.engine.negotiate().catch(t=>{this.log.error(`failed to negotiate after removing track due to failed add track request`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{error:t}))})),n(t)}}));if(this.enabledPublishVideoCodecs.length>0)u=(yield Promise.all([d,l()]))[0];else{u=yield d;let n;if(u.codecs.forEach(e=>{n===void 0&&(n=e.mimeType)}),n&&e.kind===P.Kind.Video){let i=co(n);i!==r&&(this.log.debug(`falling back to server selected codec`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{codec:i})),t.videoCodec=i,c=dl(e.source===P.Source.ScreenShare,s.width,s.height,t))}yield l()}let f=new $l(e.kind,u,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(f.on(N.CpuConstrained,e=>this.onTrackCpuConstrained(e,f)),f.options=t,e.sid=u.sid,this.log.debug(`publishing ${e.kind} with encodings`,Object.assign(Object.assign({},this.logContext),{encodings:c,trackInfo:u})),ys(e)?e.startMonitor(this.engine.client):bs(e)&&e.startMonitor(),this.addTrackPublication(f),this.emit(j.LocalTrackPublished,f),bs(e)&&u.audioFeatures.includes($t.TF_PRECONNECT_BUFFER)){let t=e.getPreConnectBuffer(),n=e.getPreConnectBufferMimeType();this.on(j.LocalTrackSubscribed,t=>{if(t.trackSid===u.sid){if(!e.hasPreConnectBuffer){this.log.warn(`subscribe event came to late, buffer already closed`,this.logContext);return}this.log.debug(`finished recording preconnect buffer`,Object.assign(Object.assign({},this.logContext),uo(e))),e.stopPreConnectBuffer()}}),t&&new Promise((r,i)=>k(this,void 0,void 0,function*(){var a,s,c,l;try{this.log.debug(`waiting for agent`,Object.assign(Object.assign({},this.logContext),uo(e)));let m=setTimeout(()=>{i(Error(`agent not active within 10 seconds`))},1e4),h=yield this.waitUntilActiveAgentPresent();clearTimeout(m),this.log.debug(`sending preconnect buffer`,Object.assign(Object.assign({},this.logContext),uo(e)));let g=yield this.streamBytes({name:`preconnect-buffer`,mimeType:n,topic:`lk.agent.pre-connect-audio-buffer`,destinationIdentities:[h.identity],attributes:{trackId:f.trackSid,sampleRate:String(o.sampleRate??`48000`),channels:String(o.channelCount??`1`)}});try{for(var u=!0,d=si(t),p;p=yield d.next(),a=p.done,!a;u=!0){l=p.value,u=!1;let e=l;yield g.write(e)}}catch(e){s={error:e}}finally{try{!u&&!a&&(c=d.return)&&(yield c.call(d))}finally{if(s)throw s.error}}yield g.close(),r()}catch(e){i(e)}})).then(()=>{this.log.debug(`preconnect buffer sent successfully`,Object.assign(Object.assign({},this.logContext),uo(e)))}).catch(t=>{this.log.error(`error sending preconnect buffer`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{error:t}))})}return f})}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,n){return k(this,void 0,void 0,function*(){if(this.encryptionType!==cn.NONE)return;let r;if(this.trackPublications.forEach(t=>{t.track&&t.track===e&&(r=t)}),!r)throw new Ma(`track is not published`);if(!ys(e))throw new Ma(`track is not a video track`);let i=Object.assign(Object.assign({},this.roomOptions?.publishDefaults),n),a=fl(e,t,i);if(!a){this.log.info(`backup codec has been disabled, ignoring request to add additional codec for track`,Object.assign(Object.assign({},this.logContext),uo(e)));return}let o=e.addSimulcastTrack(t,a);if(!o)return;let s=new Xn({cid:o.mediaStreamTrack.id,type:P.kindToProto(e.kind),muted:e.isMuted,source:P.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:i.videoCodec,cid:o.mediaStreamTrack.id}]});if(s.layers=wl(s.width,s.height,a),!this.engine||this.engine.isClosed)throw new Pa(`cannot publish track when not connected`);let c=(yield Promise.all([this.engine.addTrack(s),k(this,void 0,void 0,function*(){yield this.engine.createSimulcastSender(e,o,i,a),yield this.engine.negotiate()})]))[0];this.log.debug(`published ${t} for track ${e.sid}`,Object.assign(Object.assign({},this.logContext),{encodings:a,trackInfo:c}))})}unpublishTrack(e,t){return k(this,void 0,void 0,function*(){if(gs(e)){let t=this.pendingPublishPromises.get(e);t&&(this.log.info(`awaiting publish promise before attempting to unpublish`,Object.assign(Object.assign({},this.logContext),uo(e))),yield t)}let n=this.getPublicationForTrack(e),r=n?uo(n):void 0;if(this.log.debug(`unpublishing track`,Object.assign(Object.assign({},this.logContext),r)),!n||!n.track){this.log.warn(`track was not unpublished because no publication was found`,Object.assign(Object.assign({},this.logContext),r));return}e=n.track,e.off(N.Muted,this.onTrackMuted),e.off(N.Unmuted,this.onTrackUnmuted),e.off(N.Ended,this.handleTrackEnded),e.off(N.UpstreamPaused,this.onTrackUpstreamPaused),e.off(N.UpstreamResumed,this.onTrackUpstreamResumed),e.off(N.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),t===void 0&&(t=this.roomOptions?.stopLocalTrackOnUnpublish??!0),t?e.stop():e.stopMonitor();let i=!1,a=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<Lc.FAILED&&a)try{for(let e of this.engine.pcManager.publisher.getTransceivers())e.sender===a&&(e.direction=`inactive`,i=!0);if(this.engine.removeTrack(a)&&(i=!0),ys(e)){for(let[,t]of e.simulcastCodecs)t.sender&&=(this.engine.removeTrack(t.sender)&&(i=!0),void 0);e.simulcastCodecs.clear()}}catch(e){this.log.warn(`failed to unpublish track`,Object.assign(Object.assign(Object.assign({},this.logContext),r),{error:e}))}switch(this.trackPublications.delete(n.trackSid),n.kind){case P.Kind.Audio:this.audioTrackPublications.delete(n.trackSid);break;case P.Kind.Video:this.videoTrackPublications.delete(n.trackSid);break}return this.emit(j.LocalTrackUnpublished,n),n.setTrack(void 0),i&&(yield this.engine.negotiate()),n})}unpublishTracks(e){return k(this,void 0,void 0,function*(){return(yield Promise.all(e.map(e=>this.unpublishTrack(e)))).filter(e=>!!e)})}republishAllTracks(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return function*(){t.republishPromise&&(yield t.republishPromise),t.republishPromise=new Promise((r,i)=>k(t,void 0,void 0,function*(){try{let t=[];this.trackPublications.forEach(n=>{n.track&&(e&&(n.options=Object.assign(Object.assign({},n.options),e)),t.push(n))}),yield Promise.all(t.map(e=>k(this,void 0,void 0,function*(){let t=e.track;yield this.unpublishTrack(t,!1),n&&!t.isMuted&&t.source!==P.Source.ScreenShare&&t.source!==P.Source.ScreenShareAudio&&(bs(t)||ys(t))&&!t.isUserProvided&&(this.log.debug(`restarting existing track`,Object.assign(Object.assign({},this.logContext),{track:e.trackSid})),yield t.restartTrack()),yield this.publishOrRepublishTrack(t,e.options,!0)}))),r()}catch(e){i(e)}finally{this.republishPromise=void 0}})),yield t.republishPromise}()})}publishData(e){return k(this,arguments,void 0,function(e){var t=this;let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return function*(){let r=n.reliable?mn.RELIABLE:mn.LOSSY,i=n.destinationIdentities,a=n.topic,o=new pn({kind:r,value:{case:`user`,value:new yn({participantIdentity:t.identity,payload:e,destinationIdentities:i,topic:a})}});yield t.engine.sendDataPacket(o,r)}()})}publishDtmf(e,t){return k(this,void 0,void 0,function*(){let n=new pn({kind:mn.RELIABLE,value:{case:`sipDtmf`,value:new bn({code:e,digit:t})}});yield this.engine.sendDataPacket(n,mn.RELIABLE)})}sendChatMessage(e,t){return k(this,void 0,void 0,function*(){let n={id:crypto.randomUUID(),message:e,timestamp:Date.now(),attachedFiles:t?.attachments},r=new pn({value:{case:`chatMessage`,value:new Cn(Object.assign(Object.assign({},n),{timestamp:xe.parse(n.timestamp)}))}});return yield this.engine.sendDataPacket(r,mn.RELIABLE),this.emit(j.ChatMessage,n),n})}editChatMessage(e,t){return k(this,void 0,void 0,function*(){let n=Object.assign(Object.assign({},t),{message:e,editTimestamp:Date.now()}),r=new pn({value:{case:`chatMessage`,value:new Cn(Object.assign(Object.assign({},n),{timestamp:xe.parse(n.timestamp),editTimestamp:xe.parse(n.editTimestamp)}))}});return yield this.engine.sendDataPacket(r,mn.RELIABLE),this.emit(j.ChatMessage,n),n})}sendText(e,t){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendText(e,t)})}streamText(e){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamText(e)})}sendFile(e,t){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendFile(e,t)})}streamBytes(e){return k(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamBytes(e)})}performRpc(e){return k(this,arguments,void 0,function(e){var t=this;let{destinationIdentity:n,method:r,payload:i,responseTimeout:a=15e3}=e;return function*(){let e=7e3;return e+1e3,new Promise((o,s)=>k(t,void 0,void 0,function*(){if(Gc(i)>Wc){s(Uc.builtIn(`REQUEST_PAYLOAD_TOO_LARGE`));return}if(this.engine.latestJoinResponse?.serverInfo?.version&&Yo(this.engine.latestJoinResponse?.serverInfo?.version,`1.8.0`)<0){s(Uc.builtIn(`UNSUPPORTED_SERVER`));return}let t=Math.max(a,8e3),c=crypto.randomUUID();yield this.publishRpcRequest(n,c,r,i,t);let l=setTimeout(()=>{this.pendingAcks.delete(c),s(Uc.builtIn(`CONNECTION_TIMEOUT`)),this.pendingResponses.delete(c),clearTimeout(u)},e);this.pendingAcks.set(c,{resolve:()=>{clearTimeout(l)},participantIdentity:n});let u=setTimeout(()=>{this.pendingResponses.delete(c),s(Uc.builtIn(`RESPONSE_TIMEOUT`))},a);this.pendingResponses.set(c,{resolve:(e,t)=>{clearTimeout(u),this.pendingAcks.has(c)&&(this.log.warn(`RPC response received before ack`,c),this.pendingAcks.delete(c),clearTimeout(l)),t?s(t):o(e??``)},participantIdentity:n})}))}()})}registerRpcMethod(e,t){this.rpcHandlers.has(e)&&this.log.warn(`you're overriding the RPC handler for method ${e}, in the future this will throw an error`),this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}handleIncomingRpcAck(e){let t=this.pendingAcks.get(e);t?(t.resolve(),this.pendingAcks.delete(e)):console.error(`Ack received for unexpected RPC request`,e)}handleIncomingRpcResponse(e,t,n){let r=this.pendingResponses.get(e);r?(r.resolve(t,n),this.pendingResponses.delete(e)):console.error(`Response received for unexpected RPC request`,e)}publishRpcRequest(e,t,n,r,i){return k(this,void 0,void 0,function*(){let a=new pn({destinationIdentities:[e],kind:mn.RELIABLE,value:{case:`rpcRequest`,value:new wn({id:t,method:n,payload:r,responseTimeoutMs:i,version:1})}});yield this.engine.sendDataPacket(a,mn.RELIABLE)})}handleParticipantDisconnected(e){for(let[t,{participantIdentity:n}]of this.pendingAcks)n===e&&this.pendingAcks.delete(t);for(let[t,{participantIdentity:n,resolve:r}]of this.pendingResponses)n===e&&(r(null,Uc.builtIn(`RECIPIENT_DISCONNECTED`)),this.pendingResponses.delete(t))}setEnabledPublishCodecs(e){this.enabledPublishVideoCodecs=e.filter(e=>e.mime.split(`/`)[0].toLowerCase()===`video`)}updateInfo(e){return super.updateInfo(e)?(e.tracks.forEach(e=>{let t=this.trackPublications.get(e.sid);if(t){let n=t.isMuted||(t.track?.isUpstreamPaused??!1);n!==e.muted&&(this.log.debug(`updating server mute state after reconcile`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(t)),{mutedOnServer:n})),this.engine.client.sendMuteTrack(e.sid,n))}}),!0):!1}setActiveAgent(e){var t,n,r,i;this.firstActiveAgent=e,e&&!this.firstActiveAgent&&(this.firstActiveAgent=e),e?(n=(t=this.activeAgentFuture)?.resolve)==null||n.call(t,e):(i=(r=this.activeAgentFuture)?.reject)==null||i.call(r,Error(`Agent disconnected`)),this.activeAgentFuture=void 0}waitUntilActiveAgentPresent(){return this.firstActiveAgent?Promise.resolve(this.firstActiveAgent):(this.activeAgentFuture||=new os,this.activeAgentFuture.promise)}getPublicationForTrack(e){let t;return this.trackPublications.forEach(n=>{let r=n.track;r&&(e instanceof MediaStreamTrack?(bs(r)||ys(r))&&r.mediaStreamTrack===e&&(t=n):e===r&&(t=n))}),t}waitForPendingPublicationOfSource(e){return k(this,void 0,void 0,function*(){let t=Date.now();for(;Date.now()<t+1e4;){let t=Array.from(this.pendingPublishPromises.entries()).find(t=>{let[n]=t;return n.source===e});if(t)return t[1];yield Eo(20)}})}},su=class extends Ql{constructor(e,t,n,r){super(e,t.sid,t.name,r),this.track=void 0,this.allowed=!0,this.requestedDisabled=void 0,this.visible=!0,this.handleEnded=e=>{this.setTrack(void 0),this.emit(N.Ended,e)},this.handleVisibilityChange=e=>{this.log.debug(`adaptivestream video visibility ${this.trackSid}, visible=${e}`,this.logContext),this.visible=e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{this.log.debug(`adaptivestream video dimensions ${e.width}x${e.height}`,this.logContext),this.videoDimensionsAdaptiveStream=e,this.emitTrackUpdate()},this.subscribed=n,this.updateInfo(t)}setSubscribed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);let r=new ar({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new On({participantSid:``,trackSids:[this.trackSid]})]});this.emit(N.UpdateSubscription,r),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(n)}get subscriptionStatus(){return this.subscribed===!1?Ql.SubscriptionStatus.Unsubscribed:super.isSubscribed?Ql.SubscriptionStatus.Subscribed:Ql.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?Ql.PermissionStatus.Allowed:Ql.PermissionStatus.NotAllowed}get isSubscribed(){return this.subscribed===!1?!1:super.isSubscribed}get isDesired(){return this.subscribed!==!1}get isEnabled(){return this.requestedDisabled===void 0?this.isAdaptiveStream?this.visible:!0:!this.requestedDisabled}get isLocal(){return!1}setEnabled(e){!this.isManualOperationAllowed()||this.requestedDisabled===!e||(this.requestedDisabled=!e,this.emitTrackUpdate())}setVideoQuality(e){!this.isManualOperationAllowed()||this.requestedMaxQuality===e||(this.requestedMaxQuality=e,this.requestedVideoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){this.isManualOperationAllowed()&&(this.requestedVideoDimensions?.width===e.width&&this.requestedVideoDimensions?.height===e.height||(Cs(this.track)&&(this.requestedVideoDimensions=e),this.requestedMaxQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&Cs(this.track)&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.requestedMaxQuality??bo.HIGH}setTrack(e){let t=this.subscriptionStatus,n=this.permissionStatus,r=this.track;r!==e&&(r&&(r.off(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),r.off(N.VisibilityChanged,this.handleVisibilityChange),r.off(N.Ended,this.handleEnded),r.detach(),r.stopMonitor(),this.emit(N.Unsubscribed,r)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(N.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(N.VisibilityChanged,this.handleVisibilityChange),e.on(N.Ended,this.handleEnded),this.emit(N.Subscribed,e)),this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){let t=this.subscriptionStatus,n=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(N.SubscriptionFailed,e)}updateInfo(e){super.updateInfo(e);let t=this.metadataMuted;this.metadataMuted=e.muted,this.track?this.track.setMuted(e.muted):t!==e.muted&&this.emit(e.muted?N.Muted:N.Unmuted)}emitSubscriptionUpdateIfChanged(e){let t=this.subscriptionStatus;e!==t&&this.emit(N.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(N.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return this.isDesired?!0:(this.log.warn(`cannot update track settings when not subscribed`,this.logContext),!1)}get isAdaptiveStream(){return Cs(this.track)&&this.track.isAdaptiveStream}emitTrackUpdate(){let e=new or({trackSids:[this.trackSid],disabled:!this.isEnabled,fps:this.fps});if(this.kind===P.Kind.Video){let t=this.requestedVideoDimensions;if(this.videoDimensionsAdaptiveStream!==void 0)if(t)go(this.videoDimensionsAdaptiveStream,t)&&(this.log.debug(`using adaptive stream dimensions instead of requested`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream);else if(this.requestedMaxQuality!==void 0&&this.trackInfo){let e=_o(this.trackInfo,this.requestedMaxQuality);e&&go(this.videoDimensionsAdaptiveStream,e)&&(this.log.debug(`using adaptive stream dimensions instead of max quality layer`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream)}else this.log.debug(`using adaptive stream dimensions`,Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),t=this.videoDimensionsAdaptiveStream;t?(e.width=Math.ceil(t.width),e.height=Math.ceil(t.height)):this.requestedMaxQuality===void 0?(this.log.debug(`using default quality`,Object.assign(Object.assign({},this.logContext),{quality:bo.HIGH})),e.quality=bo.HIGH):(this.log.debug(`using requested max quality`,Object.assign(Object.assign({},this.logContext),{quality:this.requestedMaxQuality})),e.quality=this.requestedMaxQuality)}this.emit(N.UpdateSettings,e)}},cu=class e extends iu{static fromParticipantInfo(t,n,r){return new e(t,n.sid,n.identity,n.name,n.metadata,n.attributes,r,n.kind)}get logContext(){return Object.assign(Object.assign({},super.logContext),{rpID:this.sid,remoteParticipant:this.identity})}constructor(e,t,n,r,i,a,o){let s=arguments.length>7&&arguments[7]!==void 0?arguments[7]:on.STANDARD;super(t,n||``,r,i,a,o,s),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.volumeMap=new Map}addTrackPublication(e){super.addTrackPublication(e),e.on(N.UpdateSettings,t=>{this.log.debug(`send update settings`,Object.assign(Object.assign(Object.assign({},this.logContext),uo(e)),{settings:t})),this.signalClient.sendUpdateTrackSettings(t)}),e.on(N.UpdateSubscription,e=>{e.participantTracks.forEach(e=>{e.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(e)}),e.on(N.SubscriptionPermissionChanged,t=>{this.emit(j.TrackSubscriptionPermissionChanged,e,t)}),e.on(N.SubscriptionStatusChanged,t=>{this.emit(j.TrackSubscriptionStatusChanged,e,t)}),e.on(N.Subscribed,t=>{this.emit(j.TrackSubscribed,t,e)}),e.on(N.Unsubscribed,t=>{this.emit(j.TrackUnsubscribed,t,e)}),e.on(N.SubscriptionFailed,t=>{this.emit(j.TrackSubscriptionFailed,e.trackSid,t)})}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:P.Source.Microphone;this.volumeMap.set(t,e);let n=this.getTrackPublication(t);n&&n.track&&n.track.setVolume(e)}getVolume(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:P.Source.Microphone,t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,n,r,i,a){let o=this.getTrackPublicationBySid(t);if(o||t.startsWith(`TR`)||this.trackPublications.forEach(t=>{!o&&e.kind===t.kind.toString()&&(o=t)}),!o){if(a===0){this.log.error(`could not find published track`,Object.assign(Object.assign({},this.logContext),{trackSid:t})),this.emit(j.TrackSubscriptionFailed,t);return}a===void 0&&(a=20),setTimeout(()=>{this.addSubscribedMediaTrack(e,t,n,r,i,a-1)},150);return}if(e.readyState===`ended`){this.log.error(`unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()`,Object.assign(Object.assign({},this.logContext),uo(o))),this.emit(j.TrackSubscriptionFailed,t);return}let s=e.kind===`video`,c;return c=s?new Jl(e,t,r,i):new Kl(e,t,r,this.audioContext,this.audioOutput),c.source=o.source,c.isMuted=o.isMuted,c.setMediaStream(n),c.start(),o.setTrack(c),this.volumeMap.has(o.source)&&xs(c)&&_s(c)&&c.setVolume(this.volumeMap.get(o.source)),o}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(e){return this.trackPublications.get(e)}updateInfo(e){if(!super.updateInfo(e))return!1;let t=new Map,n=new Map;return e.tracks.forEach(e=>{let r=this.getTrackPublicationBySid(e.sid);if(r)r.updateInfo(e);else{let t=P.kindFromProto(e.type);if(!t)return;r=new su(t,e,this.signalClient.connectOptions?.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:this.loggerOptions?.loggerName}),r.updateInfo(e),n.set(e.sid,r);let i=Array.from(this.trackPublications.values()).find(e=>e.source===r?.source);i&&r.source!==P.Source.Unknown&&this.log.debug(`received a second track publication for ${this.identity} with the same source: ${r.source}`,Object.assign(Object.assign({},this.logContext),{oldTrack:uo(i),newTrack:uo(r)})),this.addTrackPublication(r)}t.set(e.sid,r)}),this.trackPublications.forEach(e=>{t.has(e.trackSid)||(this.log.trace(`detected removed track on remote participant, unpublishing`,Object.assign(Object.assign({},this.logContext),uo(e))),this.unpublishTrack(e.trackSid,!0))}),n.forEach(e=>{this.emit(j.TrackPublished,e)}),!0}unpublishTrack(e,t){let n=this.trackPublications.get(e);if(!n)return;let{track:r}=n;switch(r&&(r.stop(),n.setTrack(void 0)),this.trackPublications.delete(e),n.kind){case P.Kind.Audio:this.audioTrackPublications.delete(e);break;case P.Kind.Video:this.videoTrackPublications.delete(e);break}t&&this.emit(j.TrackUnpublished,n)}setAudioOutput(e){return k(this,void 0,void 0,function*(){this.audioOutput=e;let t=[];this.audioTrackPublications.forEach(n=>{_s(n.track)&&xs(n.track)&&t.push(n.track.setSinkId(e.deviceId??`default`))}),yield Promise.all(t)})}emit(e){var t=[...arguments].slice(1);return this.log.trace(`participant event`,Object.assign(Object.assign({},this.logContext),{event:e,args:t})),super.emit(e,...t)}},lu;(function(e){e.Disconnected=`disconnected`,e.Connecting=`connecting`,e.Connected=`connected`,e.Reconnecting=`reconnecting`,e.SignalReconnecting=`signalReconnecting`})(lu||={});var uu=4*1e3,du=class e extends di.EventEmitter{get hasE2EESetup(){return this.e2eeManager!==void 0}constructor(t){var n,r;if(super(),n=this,this.state=lu.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.isVideoPlaybackBlocked=!1,this.log=$r,this.bufferedEvents=[],this.isResuming=!1,this.rpcHandlers=new Map,this.connect=(e,t,n)=>k(this,void 0,void 0,function*(){if(!No())throw Uo()?Error(`WebRTC isn't detected, have you called registerGlobals?`):Error(`LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.`);let r=yield this.disconnectLock.lock();if(this.state===lu.Connected)return this.log.info(`already connected to room ${this.name}`,this.logContext),r(),Promise.resolve();if(this.connectFuture)return r(),this.connectFuture.promise;this.setAndEmitConnectionState(lu.Connecting),this.regionUrlProvider?.getServerUrl().toString()!==ks(e)&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),Wo(new URL(e))&&(this.regionUrlProvider===void 0?this.regionUrlProvider=new Vc(e,t):this.regionUrlProvider.updateToken(t),this.regionUrlProvider.fetchRegionSettings().then(e=>{var t;(t=this.regionUrlProvider)==null||t.setServerReportedRegions(e)}).catch(e=>{this.log.warn(`could not fetch region settings`,Object.assign(Object.assign({},this.logContext),{error:e}))}));let i=(a,o,s)=>k(this,void 0,void 0,function*(){this.abortController&&this.abortController.abort();let c=new AbortController;this.abortController=c,r?.();try{if(yield Ks.getInstance().getBackOffPromise(e),c.signal.aborted)throw Aa.cancelled(`Connection attempt aborted`);yield this.attemptConnection(s??e,t,n,c),this.abortController=void 0,a()}catch(t){if(this.regionUrlProvider&&t instanceof Aa&&t.reason!==ka.Cancelled&&t.reason!==ka.NotAllowed){let n=null;try{this.log.debug(`Fetching next region`),n=yield this.regionUrlProvider.getNextBestRegionUrl(this.abortController?.signal)}catch(e){if(e instanceof Aa&&(e.status===401||e.reason===ka.Cancelled)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),o(e);return}}[ka.InternalError,ka.ServerUnreachable,ka.Timeout].includes(t.reason)&&(this.log.debug(`Adding failed connection attempt to back off`),Ks.getInstance().addFailedConnectionAttempt(e)),n&&!this.abortController?.signal.aborted?(this.log.info(`Initial connection failed with ConnectionError: ${t.message}. Retrying with another region: ${n}`,this.logContext),this.recreateEngine(),yield i(a,o,n)):(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,ps(t)),o(t))}else{let e=Xt.UNKNOWN_REASON;t instanceof Aa&&(e=ps(t)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e),o(t)}}}),a=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new os((e,t)=>{i(e,t,a)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(e,t,n,r,i,a)=>k(this,void 0,void 0,function*(){let o=yield n.join(e,t,{autoSubscribe:r.autoSubscribe,adaptiveStream:typeof i.adaptiveStream==`object`?!0:i.adaptiveStream,maxRetries:r.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:r.websocketTimeout,singlePeerConnection:i.singlePeerConnection},a.signal),s=o.serverInfo;if(s||={version:o.serverVersion,region:o.serverRegion},this.serverInfo=s,this.log.debug(`connected to Livekit Server ${Object.entries(s).map(e=>{let[t,n]=e;return`${t}: ${n}`}).join(`, `)}`,{room:o.room?.name,roomSid:o.room?.sid,identity:o.participant?.identity}),!s.version)throw new Na(`unknown server version`);return s.version===`0.15.1`&&this.options.dynacast&&(this.log.debug(`disabling dynacast due to server version`,this.logContext),i.dynacast=!1),o}),this.applyJoinResponse=e=>{let t=e.participant;if(this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.localParticipant.setEnabledPublishCodecs(e.enabledPublishCodecs),this.e2eeManager)try{this.e2eeManager.setSifTrailer(e.sifTrailer)}catch(e){this.log.error(e instanceof Error?e.message:`Could not set SifTrailer`,Object.assign(Object.assign({},this.logContext),{error:e}))}this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room)},this.attemptConnection=(e,t,n,r)=>k(this,void 0,void 0,function*(){this.state===lu.Reconnecting||this.isResuming||this.engine?.pendingReconnect?(this.log.info(`Reconnection attempt replaced by new connection attempt`,this.logContext),this.recreateEngine()):this.maybeCreateEngine(),this.regionUrlProvider?.isCloud()&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},Ic),n),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let n=yield this.connectSignal(e,t,this.engine,this.connOptions,this.options,r);this.applyJoinResponse(n),this.setupLocalParticipantEvents(),this.emit(A.SignalConnected)}catch(e){yield this.engine.close(),this.recreateEngine();let t=r.signal.aborted?Aa.cancelled(`Signal connection aborted`):Aa.serverUnreachable(`could not establish signal connection`);throw e instanceof Error&&(t.message=`${t.message}: ${e.message}`),e instanceof Aa&&(t.reason=e.reason,t.status=e.status),this.log.debug(`error trying to establish signal connection`,Object.assign(Object.assign({},this.logContext),{error:e})),t}if(r.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),Aa.cancelled(`Connection attempt aborted`);try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,r)}catch(e){throw yield this.engine.close(),this.recreateEngine(),e}Ho()&&this.options.disconnectOnPageLeave&&(window.addEventListener(`pagehide`,this.onPageLeave),window.addEventListener(`beforeunload`,this.onPageLeave)),Ho()&&window.addEventListener(`freeze`,this.onPageLeave),this.setAndEmitConnectionState(lu.Connected),this.emit(A.Connected),Ks.getInstance().resetFailedConnectionAttempts(e),this.registerConnectionReconcile(),this.regionUrlProvider&&this.regionUrlProvider.notifyConnected()}),this.disconnect=function(){return k(n,[...arguments],void 0,function(){var e=this;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return function*(){var n,r,i;let a=yield e.disconnectLock.lock();try{if(e.state===lu.Disconnected){e.log.debug(`already disconnected`,e.logContext);return}if(e.log.info(`disconnect from room`,Object.assign({},e.logContext)),e.state===lu.Connecting||e.state===lu.Reconnecting||e.isResuming){let t=`Abort connection attempt due to user initiated disconnect`;e.log.warn(t,e.logContext),(n=e.abortController)==null||n.abort(t),(i=(r=e.connectFuture)?.reject)==null||i.call(r,Aa.cancelled(`Client initiated disconnect`)),e.connectFuture=void 0}e.engine&&(e.engine.client.isDisconnected||(yield e.engine.client.sendLeave()),yield e.engine.close()),e.handleDisconnect(t,Xt.CLIENT_INITIATED),e.engine=void 0}finally{a()}}()})},this.onPageLeave=()=>k(this,void 0,void 0,function*(){this.log.info(`Page leave detected, disconnecting`,this.logContext),yield this.disconnect()}),this.startAudio=()=>k(this,void 0,void 0,function*(){let e=[],t=Ca();if(t&&t.os===`iOS`){let t=`livekit-dummy-audio-el`,n=document.getElementById(t);if(!n){n=document.createElement(`audio`),n.id=t,n.autoplay=!0,n.hidden=!0;let e=as();e.enabled=!0;let r=new MediaStream([e]);n.srcObject=r,document.addEventListener(`visibilitychange`,()=>{n&&(n.srcObject=document.hidden?null:r,document.hidden||(this.log.debug(`page visible again, triggering startAudio to resume playback and update playback status`,this.logContext),this.startAudio()))}),document.body.append(n),this.once(A.Disconnected,()=>{n?.remove(),n=null})}e.push(n)}this.remoteParticipants.forEach(t=>{t.audioTrackPublications.forEach(t=>{t.track&&t.track.attachedElements.forEach(t=>{e.push(t)})})});try{yield Promise.all([this.acquireAudioContext(),...e.map(e=>(e.muted=!1,e.play()))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}),this.startVideo=()=>k(this,void 0,void 0,function*(){let e=[];for(let t of this.remoteParticipants.values())t.videoTrackPublications.forEach(t=>{var n;(n=t.track)==null||n.attachedElements.forEach(t=>{e.includes(t)||e.push(t)})});yield Promise.all(e.map(e=>e.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(e=>{e.name===`NotAllowedError`?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler",this.logContext)})}),this.handleRestarting=()=>{this.clearConnectionReconcile(),this.isResuming=!1;for(let e of this.remoteParticipants.values())this.handleParticipantDisconnected(e.identity,e);this.setAndEmitConnectionState(lu.Reconnecting)&&this.emit(A.Reconnecting)},this.handleSignalRestarted=e=>k(this,void 0,void 0,function*(){this.log.debug(`signal reconnected to server, region ${e.serverRegion}`,Object.assign(Object.assign({},this.logContext),{region:e.serverRegion})),this.bufferedEvents=[],this.applyJoinResponse(e);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(e){this.log.error(`error trying to re-publish tracks after reconnection`,Object.assign(Object.assign({},this.logContext),{error:e}))}try{yield this.engine.waitForRestarted(),this.log.debug(`fully reconnected to server`,Object.assign(Object.assign({},this.logContext),{region:e.serverRegion}))}catch{return}this.setAndEmitConnectionState(lu.Connected),this.emit(A.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=e=>{e.forEach(e=>{if(e.identity===this.localParticipant.identity){this.localParticipant.updateInfo(e);return}e.identity===``&&(e.identity=this.sidToIdentity.get(e.sid)??``);let t=this.remoteParticipants.get(e.identity);e.state===an.DISCONNECTED?this.handleParticipantDisconnected(e.identity,t):t=this.getOrCreateParticipant(e.identity,e)})},this.handleActiveSpeakersUpdate=e=>{let t=[],n={};e.forEach(e=>{if(n[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),t.push(this.localParticipant);else{let n=this.getRemoteParticipantBySid(e.sid);n&&(n.audioLevel=e.level,n.setIsSpeaking(!0),t.push(n))}}),n[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach(e=>{n[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))}),this.activeSpeakers=t,this.emitWhenConnected(A.ActiveSpeakersChanged,t)},this.handleSpeakersChanged=e=>{let t=new Map;this.activeSpeakers.forEach(e=>{let n=this.remoteParticipants.get(e.identity);n&&n.sid!==e.sid||t.set(e.sid,e)}),e.forEach(e=>{let n=this.getRemoteParticipantBySid(e.sid);e.sid===this.localParticipant.sid&&(n=this.localParticipant),n&&(n.audioLevel=e.level,n.setIsSpeaking(e.active),e.active?t.set(e.sid,n):t.delete(e.sid))});let n=Array.from(t.values());n.sort((e,t)=>t.audioLevel-e.audioLevel),this.activeSpeakers=n,this.emitWhenConnected(A.ActiveSpeakersChanged,n)},this.handleStreamStateUpdate=e=>{e.streamStates.forEach(e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);if(!n||!n.track)return;let r=P.streamStateFromProto(e.state);n.track.setStreamState(r),r!==n.track.streamState&&(t.emit(j.TrackStreamStateChanged,n,n.track.streamState),this.emitWhenConnected(A.TrackStreamStateChanged,n,n.track.streamState,t))})},this.handleSubscriptionPermissionUpdate=e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);n&&n.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{let t=Array.from(this.remoteParticipants.values()).find(t=>t.trackPublications.has(e.trackSid));if(!t)return;let n=t.getTrackPublicationBySid(e.trackSid);n&&n.setSubscriptionError(e.err)},this.handleDataPacket=(e,t)=>{let n=this.remoteParticipants.get(e.participantIdentity);if(e.value.case===`user`)this.handleUserPacket(n,e.value.value,e.kind,t);else if(e.value.case===`transcription`)this.handleTranscription(n,e.value.value);else if(e.value.case===`sipDtmf`)this.handleSipDtmf(n,e.value.value);else if(e.value.case===`chatMessage`)this.handleChatMessage(n,e.value.value);else if(e.value.case===`metrics`)this.handleMetrics(e.value.value,n);else if(e.value.case===`streamHeader`||e.value.case===`streamChunk`||e.value.case===`streamTrailer`)this.handleDataStream(e,t);else if(e.value.case===`rpcRequest`){let t=e.value.value;this.handleIncomingRpcRequest(e.participantIdentity,t.id,t.method,t.payload,t.responseTimeoutMs,t.version)}},this.handleUserPacket=(e,t,n,r)=>{this.emit(A.DataReceived,t.payload,e,n,t.topic,r),e?.emit(j.DataReceived,t.payload,n,r)},this.handleSipDtmf=(e,t)=>{this.emit(A.SipDTMFReceived,t,e),e?.emit(j.SipDTMFReceived,t)},this.handleTranscription=(e,t)=>{let n=t.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(t.transcribedParticipantIdentity),r=n?.trackPublications.get(t.trackId),i=ds(t,this.transcriptionReceivedTimes);r?.emit(N.TranscriptionReceived,i),n?.emit(j.TranscriptionReceived,i,r),this.emit(A.TranscriptionReceived,i,n,r)},this.handleChatMessage=(e,t)=>{let n=fs(t);this.emit(A.ChatMessage,n,e)},this.handleMetrics=(e,t)=>{this.emit(A.MetricsReceived,e,t)},this.handleDataStream=(e,t)=>{this.incomingDataStreamManager.handleDataStreamPacket(e,t)},this.bufferedSegments=new Map,this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(A.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=e=>{this.log.warn(`could not playback audio`,Object.assign(Object.assign({},this.logContext),{error:e})),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(A.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(A.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(A.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>k(this,void 0,void 0,function*(){Ca()?.os!==`iOS`&&(yield this.selectDefaultDevices()),this.emit(A.MediaDevicesChanged)}),this.handleRoomUpdate=e=>{let t=this.roomInfo;this.roomInfo=e,t&&t.metadata!==e.metadata&&this.emitWhenConnected(A.RoomMetadataChanged,e.metadata),t?.activeRecording!==e.activeRecording&&this.emitWhenConnected(A.RecordingStatusChanged,e.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach(e=>{if(e.participantSid===this.localParticipant.sid){this.localParticipant.setConnectionQuality(e.quality);return}let t=this.getRemoteParticipantBySid(e.participantSid);t&&t.setConnectionQuality(e.quality)})},this.onLocalParticipantMetadataChanged=e=>{this.emit(A.ParticipantMetadataChanged,e,this.localParticipant)},this.onLocalParticipantNameChanged=e=>{this.emit(A.ParticipantNameChanged,e,this.localParticipant)},this.onLocalAttributesChanged=e=>{this.emit(A.ParticipantAttributesChanged,e,this.localParticipant)},this.onLocalTrackMuted=e=>{this.emit(A.TrackMuted,e,this.localParticipant)},this.onLocalTrackUnmuted=e=>{this.emit(A.TrackUnmuted,e,this.localParticipant)},this.onTrackProcessorUpdate=e=>{var t;(t=e?.onPublish)==null||t.call(e,this)},this.onLocalTrackPublished=e=>k(this,void 0,void 0,function*(){var t,n,r,i;(t=e.track)==null||t.on(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(n=e.track)==null||n.on(N.Restarted,this.onLocalTrackRestarted),(i=(r=e.track?.getProcessor())?.onPublish)==null||i.call(r,this),this.emit(A.LocalTrackPublished,e,this.localParticipant),bs(e.track)&&(yield e.track.checkForSilence())&&this.emit(A.LocalAudioSilenceDetected,e);let a=yield e.track?.getDeviceId(!1),o=oo(e.source);o&&a&&a!==this.localParticipant.activeDeviceMap.get(o)&&(this.localParticipant.activeDeviceMap.set(o,a),this.emit(A.ActiveDeviceChanged,o,a))}),this.onLocalTrackUnpublished=e=>{var t,n;(t=e.track)==null||t.off(N.TrackProcessorUpdate,this.onTrackProcessorUpdate),(n=e.track)==null||n.off(N.Restarted,this.onLocalTrackRestarted),this.emit(A.LocalTrackUnpublished,e,this.localParticipant)},this.onLocalTrackRestarted=e=>k(this,void 0,void 0,function*(){let t=yield e.getDeviceId(!1),n=oo(e.source);n&&t&&t!==this.localParticipant.activeDeviceMap.get(n)&&(this.log.debug(`local track restarted, setting ${n} ${t} active`,this.logContext),this.localParticipant.activeDeviceMap.set(n,t),this.emit(A.ActiveDeviceChanged,n,t))}),this.onLocalConnectionQualityChanged=e=>{this.emit(A.ConnectionQualityChanged,e,this.localParticipant)},this.onMediaDevicesError=(e,t)=>{this.emit(A.MediaDevicesError,e,t)},this.onLocalParticipantPermissionsChanged=e=>{this.emit(A.ParticipantPermissionsChanged,e,this.localParticipant)},this.onLocalChatMessageSent=e=>{this.emit(A.ChatMessage,e,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},Fc),t),this.log=ei(this.options.loggerName??Qr.Room),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},Nc),t?.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},Pc),t?.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},Mc),t?.publishDefaults),this.maybeCreateEngine(),this.incomingDataStreamManager=new zl,this.outgoingDataStreamManager=new Wl(this.engine,this.log),this.disconnectLock=new _,this.localParticipant=new ou(``,``,this.engine,this.options,this.rpcHandlers,this.outgoingDataStreamManager),(this.options.e2ee||this.options.encryption)&&this.setupE2EE(),this.engine.e2eeManager=this.e2eeManager,this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set(`videoinput`,cs(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set(`audioinput`,cs(this.options.audioCaptureDefaults.deviceId)),this.options.audioOutput?.deviceId&&this.switchActiveDevice(`audiooutput`,cs(this.options.audioOutput.deviceId)).catch(e=>this.log.warn(`Could not set audio output: ${e.message}`,this.logContext)),Ho()){let t=new AbortController;(r=navigator.mediaDevices)==null||r.addEventListener(`devicechange`,this.handleDeviceChange,{signal:t.signal}),e.cleanupRegistry&&e.cleanupRegistry.register(this,()=>{t.abort()})}}registerTextStreamHandler(e,t){return this.incomingDataStreamManager.registerTextStreamHandler(e,t)}unregisterTextStreamHandler(e){return this.incomingDataStreamManager.unregisterTextStreamHandler(e)}registerByteStreamHandler(e,t){return this.incomingDataStreamManager.registerByteStreamHandler(e,t)}unregisterByteStreamHandler(e){return this.incomingDataStreamManager.unregisterByteStreamHandler(e)}registerRpcMethod(e,t){if(this.rpcHandlers.has(e))throw Error(`RPC handler already registered for method ${e}, unregisterRpcMethod before trying to register again`);this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}setE2EEEnabled(e){return k(this,void 0,void 0,function*(){if(this.e2eeManager)yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),this.localParticipant.identity!==``&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity);else throw Error(`e2ee not configured, please set e2ee settings within the room options`)})}setupE2EE(){var e;let t=!!this.options.encryption,n=this.options.encryption||this.options.e2ee;n&&(`e2eeManager`in n?(this.e2eeManager=n.e2eeManager,this.e2eeManager.isDataChannelEncryptionEnabled=t):this.e2eeManager=new Us(n,t),this.e2eeManager.on(Is.ParticipantEncryptionStatusChanged,(e,t)=>{ws(t)&&(this.isE2EEEnabled=e),this.emit(A.ParticipantEncryptionStatusChanged,e,t)}),this.e2eeManager.on(Is.EncryptionError,(e,t)=>{let n=t?this.getParticipantByIdentity(t):void 0;this.emit(A.EncryptionError,e,n)}),(e=this.e2eeManager)==null||e.setup(this))}get logContext(){return{room:this.name,roomID:this.roomInfo?.sid,participant:this.localParticipant.identity,pID:this.localParticipant.sid}}get isRecording(){return this.roomInfo?.activeRecording??!1}getSid(){return k(this,void 0,void 0,function*(){return this.state===lu.Disconnected?``:this.roomInfo&&this.roomInfo.sid!==``?this.roomInfo.sid:new Promise((e,t)=>{let n=t=>{t.sid!==``&&(this.engine.off(M.RoomUpdate,n),e(t.sid))};this.engine.on(M.RoomUpdate,n),this.once(A.Disconnected,()=>{this.engine.off(M.RoomUpdate,n),t(`Room disconnected before room server id was available`)})})})}get name(){return this.roomInfo?.name??``}get metadata(){return this.roomInfo?.metadata}get numParticipants(){return this.roomInfo?.numParticipants??0}get numPublishers(){return this.roomInfo?.numPublishers??0}maybeCreateEngine(){this.engine&&!this.engine.isClosed||(this.engine=new Nl(this.options),this.engine.e2eeManager=this.e2eeManager,this.engine.on(M.ParticipantUpdate,this.handleParticipantUpdates).on(M.RoomUpdate,this.handleRoomUpdate).on(M.SpeakersChanged,this.handleSpeakersChanged).on(M.StreamStateChanged,this.handleStreamStateUpdate).on(M.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(M.SubscriptionError,this.handleSubscriptionError).on(M.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(M.MediaTrackAdded,(e,t,n)=>{this.onTrackAdded(e,t,n)}).on(M.Disconnected,e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)}).on(M.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(M.DataPacketReceived,this.handleDataPacket).on(M.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.info(`Resuming signal connection`,this.logContext),this.setAndEmitConnectionState(lu.SignalReconnecting)&&this.emit(A.SignalReconnecting)}).on(M.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.info(`Resumed signal connection`,this.logContext),this.updateSubscriptions(),this.emitBufferedEvents(),this.setAndEmitConnectionState(lu.Connected)&&this.emit(A.Reconnected)}).on(M.SignalResumed,()=>{this.bufferedEvents=[],(this.state===lu.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(M.Restarting,this.handleRestarting).on(M.SignalRestarted,this.handleSignalRestarted).on(M.Offline,()=>{this.setAndEmitConnectionState(lu.Reconnecting)&&this.emit(A.Reconnecting)}).on(M.DCBufferStatusChanged,(e,t)=>{this.emit(A.DCBufferStatusChanged,e,t)}).on(M.LocalTrackSubscribed,e=>{let t=this.localParticipant.getTrackPublications().find(t=>{let{trackSid:n}=t;return n===e});if(!t){this.log.warn(`could not find local track subscription for subscribed event`,this.logContext);return}this.localParticipant.emit(j.LocalTrackSubscribed,t),this.emitWhenConnected(A.LocalTrackSubscribed,t,this.localParticipant)}).on(M.RoomMoved,e=>{this.log.debug(`room moved`,e),e.room&&this.handleRoomUpdate(e.room),this.remoteParticipants.forEach((e,t)=>{this.handleParticipantDisconnected(t,e)}),this.emit(A.Moved,e.room.name),e.participant?this.handleParticipantUpdates([e.participant,...e.otherParticipants]):this.handleParticipantUpdates(e.otherParticipants)}),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine),this.outgoingDataStreamManager&&this.outgoingDataStreamManager.setupEngine(this.engine))}static getLocalDevices(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Js.getInstance().getDevices(e,t)}prepareConnection(e,t){return k(this,void 0,void 0,function*(){if(this.state===lu.Disconnected){this.log.debug(`prepareConnection to ${e}`,this.logContext);try{if(Wo(new URL(e))&&t){this.regionUrlProvider=new Vc(e,t);let n=yield this.regionUrlProvider.getNextBestRegionUrl();n&&this.state===lu.Disconnected&&(this.regionUrl=n,yield fetch(us(n),{method:`HEAD`}),this.log.debug(`prepared connection to ${n}`,this.logContext))}else yield fetch(us(e),{method:`HEAD`})}catch(e){this.log.warn(`could not prepare connection`,Object.assign(Object.assign({},this.logContext),{error:e}))}}})}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return k(this,void 0,void 0,function*(){let n=()=>k(this,void 0,void 0,function*(){}),r;switch(e){case`signal-reconnect`:yield this.engine.client.handleOnClose(`simulate disconnect`);break;case`speaker`:r=new jr({scenario:{case:`speakerUpdate`,value:3}});break;case`node-failure`:r=new jr({scenario:{case:`nodeFailure`,value:!0}});break;case`server-leave`:r=new jr({scenario:{case:`serverLeave`,value:!0}});break;case`migration`:r=new jr({scenario:{case:`migration`,value:!0}});break;case`resume-reconnect`:this.engine.failNext(),yield this.engine.client.handleOnClose(`simulate resume-disconnect`);break;case`disconnect-signal-on-resume`:n=()=>k(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose(`simulate resume-disconnect`)}),r=new jr({scenario:{case:`disconnectSignalOnResume`,value:!0}});break;case`disconnect-signal-on-resume-no-messages`:n=()=>k(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose(`simulate resume-disconnect`)}),r=new jr({scenario:{case:`disconnectSignalOnResumeNoMessages`,value:!0}});break;case`full-reconnect`:this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose(`simulate full-reconnect`);break;case`force-tcp`:case`force-tls`:r=new jr({scenario:{case:`switchCandidateProtocol`,value:e===`force-tls`?2:1}}),n=()=>k(this,void 0,void 0,function*(){let e=this.engine.client.onLeave;e&&e(new lr({reason:Xt.CLIENT_INITIATED,action:ur.RECONNECT}))});break;case`subscriber-bandwidth`:if(t===void 0||typeof t!=`number`)throw Error(`subscriber-bandwidth requires a number as argument`);r=new jr({scenario:{case:`subscriberBandwidth`,value:hs(t)}});break;case`leave-full-reconnect`:r=new jr({scenario:{case:`leaveRequestFullReconnect`,value:!0}})}r&&(yield this.engine.client.sendSimulateScenario(r),yield n())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return k(this,arguments,void 0,function(e,t){var n=this;let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return function*(){var i,a;let o=!0,s=!1,c=r?{exact:t}:t;if(e===`audioinput`){s=n.localParticipant.audioTrackPublications.size===0;let t=n.getActiveDevice(e)??n.options.audioCaptureDefaults.deviceId;n.options.audioCaptureDefaults.deviceId=c;let r=Array.from(n.localParticipant.audioTrackPublications.values()).filter(e=>e.source===P.Source.Microphone);try{o=(yield Promise.all(r.map(e=>e.audioTrack?.setDeviceId(c)))).every(e=>e===!0)}catch(e){throw n.options.audioCaptureDefaults.deviceId=t,e}let i=r.some(e=>e.track?.isMuted??!1);o&&i&&(s=!0)}else if(e===`videoinput`){s=n.localParticipant.videoTrackPublications.size===0;let t=n.getActiveDevice(e)??n.options.videoCaptureDefaults.deviceId;n.options.videoCaptureDefaults.deviceId=c;let r=Array.from(n.localParticipant.videoTrackPublications.values()).filter(e=>e.source===P.Source.Camera);try{o=(yield Promise.all(r.map(e=>e.videoTrack?.setDeviceId(c)))).every(e=>e===!0)}catch(e){throw n.options.videoCaptureDefaults.deviceId=t,e}let i=r.some(e=>e.track?.isMuted??!1);o&&i&&(s=!0)}else if(e===`audiooutput`){if(s=!0,!Mo()&&!n.options.webAudioMix||n.options.webAudioMix&&n.audioContext&&!(`setSinkId`in n.audioContext))throw Error(`cannot switch audio output, the current browser does not support it`);n.options.webAudioMix&&(t=(yield Js.getInstance().normalizeDeviceId(`audiooutput`,t))??``),(a=n.options).audioOutput??(a.audioOutput={});let r=n.getActiveDevice(e)??n.options.audioOutput.deviceId;n.options.audioOutput.deviceId=t;try{n.options.webAudioMix&&((i=n.audioContext)==null||i.setSinkId(t)),yield Promise.all(Array.from(n.remoteParticipants.values()).map(e=>e.setAudioOutput({deviceId:t})))}catch(e){throw n.options.audioOutput.deviceId=r,e}}return s&&(n.localParticipant.activeDeviceMap.set(e,t),n.emit(A.ActiveDeviceChanged,e,t)),o}()})}setupLocalParticipantEvents(){this.localParticipant.on(j.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(j.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(j.AttributesChanged,this.onLocalAttributesChanged).on(j.TrackMuted,this.onLocalTrackMuted).on(j.TrackUnmuted,this.onLocalTrackUnmuted).on(j.LocalTrackPublished,this.onLocalTrackPublished).on(j.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(j.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(j.MediaDevicesError,this.onMediaDevicesError).on(j.AudioStreamAcquired,this.startAudio).on(j.ChatMessage,this.onLocalChatMessageSent).on(j.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;(e=this.engine)==null||e.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,n){if(this.state===lu.Connecting||this.state===lu.Reconnecting){let r=()=>{this.log.debug(`deferring on track for later`,{mediaTrackId:e.id,mediaStreamId:t.id,tracksInStream:t.getTracks().map(e=>e.id)}),this.onTrackAdded(e,t,n),i()},i=()=>{this.off(A.Reconnected,r),this.off(A.Connected,r),this.off(A.Disconnected,i)};this.once(A.Reconnected,r),this.once(A.Connected,r),this.once(A.Disconnected,i);return}if(this.state===lu.Disconnected){this.log.warn(`skipping incoming track after Room disconnected`,this.logContext);return}if(e.readyState===`ended`){this.log.info(`skipping incoming track as it already ended`,this.logContext);return}let r=To(t.id),i=r[0],a=r[1],o=e.id;if(a&&a.startsWith(`TR`)&&(o=a),i===this.localParticipant.sid){this.log.warn(`tried to create RemoteParticipant for local participant`,this.logContext);return}let s=Array.from(this.remoteParticipants.values()).find(e=>e.sid===i);if(!s){this.log.error(`Tried to add a track for a participant, that's not present. Sid: ${i}`,this.logContext);return}if(!o.startsWith(`TR`)){let e=this.engine.getTrackIdForReceiver(n);if(!e){this.log.error(`Tried to add a track whose 'sid' could not be found for a participant, that's not present. Sid: ${i}`,this.logContext);return}o=e}o.startsWith(`TR`)||this.log.warn(`Tried to add a track whose 'sid' could not be determined for a participant, that's not present. Sid: ${i}, streamId: ${a}, trackId: ${o}`,Object.assign(Object.assign({},this.logContext),{rpID:i,streamId:a,trackId:o}));let c;this.options.adaptiveStream&&(c=typeof this.options.adaptiveStream==`object`?this.options.adaptiveStream:{});let l=s.addSubscribedMediaTrack(e,o,t,n,c);l?.isEncrypted&&!this.e2eeManager&&this.emit(A.EncryptionError,Error(`Encrypted ${l.source} track received from participant ${s.sid}, but room does not have encryption enabled!`))}handleDisconnect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1?arguments[1]:void 0;var n;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.incomingDataStreamManager.clearControllers(),this.state!==lu.Disconnected){this.regionUrl=void 0,this.regionUrlProvider&&this.regionUrlProvider.notifyDisconnected();try{this.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{e.unpublishTrack(t.trackSid)})}),this.localParticipant.trackPublications.forEach(t=>{var n,r,i;t.track&&this.localParticipant.unpublishTrack(t.track,e),e?((n=t.track)==null||n.detach(),(r=t.track)==null||r.stop()):(i=t.track)==null||i.stopMonitor()}),this.localParticipant.off(j.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(j.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(j.AttributesChanged,this.onLocalAttributesChanged).off(j.TrackMuted,this.onLocalTrackMuted).off(j.TrackUnmuted,this.onLocalTrackUnmuted).off(j.LocalTrackPublished,this.onLocalTrackPublished).off(j.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(j.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(j.MediaDevicesError,this.onMediaDevicesError).off(j.AudioStreamAcquired,this.startAudio).off(j.ChatMessage,this.onLocalChatMessageSent).off(j.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&typeof this.options.webAudioMix==`boolean`&&(this.audioContext.close(),this.audioContext=void 0),Ho()&&(window.removeEventListener(`beforeunload`,this.onPageLeave),window.removeEventListener(`pagehide`,this.onPageLeave),window.removeEventListener(`freeze`,this.onPageLeave),(n=navigator.mediaDevices)==null||n.removeEventListener(`devicechange`,this.handleDeviceChange))}finally{this.setAndEmitConnectionState(lu.Disconnected),this.emit(A.Disconnected,t)}}}handleParticipantDisconnected(e,t){var n;this.remoteParticipants.delete(e),t&&(this.incomingDataStreamManager.validateParticipantHasNoActiveDataStreams(e),t.trackPublications.forEach(e=>{t.unpublishTrack(e.trackSid,!0)}),this.emit(A.ParticipantDisconnected,t),t.setDisconnected(),(n=this.localParticipant)==null||n.handleParticipantDisconnected(t.identity))}handleIncomingRpcRequest(e,t,n,r,i,a){return k(this,void 0,void 0,function*(){if(yield this.engine.publishRpcAck(e,t),a!==1){yield this.engine.publishRpcResponse(e,t,null,Uc.builtIn(`UNSUPPORTED_VERSION`));return}let o=this.rpcHandlers.get(n);if(!o){yield this.engine.publishRpcResponse(e,t,null,Uc.builtIn(`UNSUPPORTED_METHOD`));return}let s=null,c=null;try{let a=yield o({requestId:t,callerIdentity:e,payload:r,responseTimeout:i});Gc(a)>Wc?(s=Uc.builtIn(`RESPONSE_PAYLOAD_TOO_LARGE`),this.log.warn(`RPC Response payload too large for ${n}`)):c=a}catch(e){e instanceof Uc?s=e:(this.log.warn(`Uncaught error returned by RPC handler for ${n}. Returning APPLICATION_ERROR instead.`,e),s=Uc.builtIn(`APPLICATION_ERROR`))}yield this.engine.publishRpcResponse(e,t,c,s)})}selectDefaultDevices(){return k(this,void 0,void 0,function*(){let e=Js.getInstance().previousDevices,t=yield Js.getInstance().getDevices(void 0,!1),n=Ca();if(n?.name===`Chrome`&&n.os!==`iOS`)for(let n of t){let t=e.find(e=>e.deviceId===n.deviceId);t&&t.label!==``&&t.kind===n.kind&&t.label!==n.label&&this.getActiveDevice(n.kind)===`default`&&this.emit(A.ActiveDeviceChanged,n.kind,n.deviceId)}for(let n of[`audiooutput`,`audioinput`,`videoinput`]){let r=ao(n),i=this.localParticipant.getTrackPublication(r);if(i&&i.track?.isUserProvided)continue;let a=t.filter(e=>e.kind===n),o=this.getActiveDevice(n);if(o===e.filter(e=>e.kind===n)[0]?.deviceId&&a.length>0&&a[0]?.deviceId!==o){yield this.switchActiveDevice(n,a[0].deviceId);continue}n===`audioinput`&&!Lo()||n===`videoinput`||a.length>0&&!a.find(e=>e.deviceId===this.getActiveDevice(n))&&(n!==`audiooutput`||!Lo())&&(yield this.switchActiveDevice(n,a[0].deviceId))}})}acquireAudioContext(){return k(this,void 0,void 0,function*(){if(typeof this.options.webAudioMix!=`boolean`&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:(!this.audioContext||this.audioContext.state===`closed`)&&(this.audioContext=io()??void 0),this.options.webAudioMix&&this.remoteParticipants.forEach(e=>e.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext),this.audioContext&&this.audioContext.state===`suspended`)try{yield Promise.race([this.audioContext.resume(),Eo(200)])}catch(e){this.log.warn(`Could not resume audio context`,Object.assign(Object.assign({},this.logContext),{error:e}))}let e=this.audioContext?.state===`running`;e!==this.canPlaybackAudio&&(this.audioEnabled=e,this.emit(A.AudioPlaybackStatusChanged,e))})}createParticipant(e,t){let n;return n=t?cu.fromParticipantInfo(this.engine.client,t,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}):new cu(this.engine.client,``,e,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&n.setAudioContext(this.audioContext),this.options.audioOutput?.deviceId&&n.setAudioOutput(this.options.audioOutput).catch(e=>this.log.warn(`Could not set audio output: ${e.message}`,this.logContext)),n}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){let n=this.remoteParticipants.get(e);return t&&n.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),n}let n=this.createParticipant(e,t);return this.remoteParticipants.set(e,n),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(A.ParticipantConnected,n),n.on(j.TrackPublished,e=>{this.emitWhenConnected(A.TrackPublished,e,n)}).on(j.TrackSubscribed,(e,t)=>{e.kind===P.Kind.Audio?(e.on(N.AudioPlaybackStarted,this.handleAudioPlaybackStarted),e.on(N.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):e.kind===P.Kind.Video&&(e.on(N.VideoPlaybackFailed,this.handleVideoPlaybackFailed),e.on(N.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emit(A.TrackSubscribed,e,t,n)}).on(j.TrackUnpublished,e=>{this.emit(A.TrackUnpublished,e,n)}).on(j.TrackUnsubscribed,(e,t)=>{this.emit(A.TrackUnsubscribed,e,t,n)}).on(j.TrackMuted,e=>{this.emitWhenConnected(A.TrackMuted,e,n)}).on(j.TrackUnmuted,e=>{this.emitWhenConnected(A.TrackUnmuted,e,n)}).on(j.ParticipantMetadataChanged,e=>{this.emitWhenConnected(A.ParticipantMetadataChanged,e,n)}).on(j.ParticipantNameChanged,e=>{this.emitWhenConnected(A.ParticipantNameChanged,e,n)}).on(j.AttributesChanged,e=>{this.emitWhenConnected(A.ParticipantAttributesChanged,e,n)}).on(j.ConnectionQualityChanged,e=>{this.emitWhenConnected(A.ConnectionQualityChanged,e,n)}).on(j.ParticipantPermissionsChanged,e=>{this.emitWhenConnected(A.ParticipantPermissionsChanged,e,n)}).on(j.TrackSubscriptionStatusChanged,(e,t)=>{this.emitWhenConnected(A.TrackSubscriptionStatusChanged,e,t,n)}).on(j.TrackSubscriptionFailed,(e,t)=>{this.emit(A.TrackSubscriptionFailed,e,n,t)}).on(j.TrackSubscriptionPermissionChanged,(e,t)=>{this.emitWhenConnected(A.TrackSubscriptionPermissionChanged,e,t,n)}).on(j.Active,()=>{this.emitWhenConnected(A.ParticipantActive,n),n.kind===on.AGENT&&this.localParticipant.setActiveAgent(n)}),t&&n.updateInfo(t),n}sendSyncState(){let e=Array.from(this.remoteParticipants.values()).reduce((e,t)=>(e.push(...t.getTrackPublications()),e),[]),t=this.localParticipant.getTrackPublications();this.engine.sendSyncState(e,t)}updateSubscriptions(){for(let e of this.remoteParticipants.values())for(let t of e.videoTrackPublications.values())t.isSubscribed&&Ss(t)&&t.emitTrackUpdate()}getRemoteParticipantBySid(e){let t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=Ha.setInterval(()=>{!this.engine||this.engine.isClosed||!this.engine.verifyTransport()?(e++,this.log.warn(`detected connection state mismatch`,Object.assign(Object.assign({},this.logContext),{numFailures:e,engine:this.engine?{closed:this.engine.isClosed,transportsConnected:this.engine.verifyTransport()}:void 0})),e>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,Xt.STATE_MISMATCH))):e=0},uu)}clearConnectionReconcile(){this.connectionReconcileInterval&&Ha.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(e){return e===this.state?!1:(this.state=e,this.emit(A.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(e=>{let[t,n]=e;this.emit(t,...n)}),this.bufferedEvents=[]}emitWhenConnected(e){var t=[...arguments].slice(1);if(this.state===lu.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([e,t]);else if(this.state===lu.Connected)return this.emit(e,...t);return!1}simulateParticipants(e){return k(this,void 0,void 0,function*(){let t=Object.assign({audio:!0,video:!0,useRealTracks:!1},e.publish),n=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},e.participants);if(this.handleDisconnect(),this.roomInfo=new en({sid:`RM_SIMULATED`,name:`simulated-room`,emptyTimeout:0,maxParticipants:0,creationTime:xe.parse(new Date().getTime()),metadata:``,numParticipants:1,numPublishers:1,turnPassword:``,enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new rn({identity:`simulated-local`,name:`local-name`})),this.setupLocalParticipantEvents(),this.emit(A.SignalConnected),this.emit(A.Connected),this.setAndEmitConnectionState(lu.Connected),t.video){let e=new $l(P.Kind.Video,new un({source:Kt.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO,name:`video-dummy`}),new xl(t.useRealTracks?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:rs(160*(n.aspectRatios[0]??1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(j.LocalTrackPublished,e)}if(t.audio){let e=new $l(P.Kind.Audio,new un({source:Kt.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO}),new nl(t.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:as(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(j.LocalTrackPublished,e)}for(let e=0;e<n.count-1;e+=1){let t=new rn({sid:Math.floor(Math.random()*1e4).toString(),identity:`simulated-${e}`,state:an.ACTIVE,tracks:[],joinedAt:xe.parse(Date.now())}),r=this.getOrCreateParticipant(t.identity,t);if(n.video){let i=rs(160*(n.aspectRatios[e%n.aspectRatios.length]??1),160,!1,!0),a=new un({source:Kt.CAMERA,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO});r.addSubscribedMediaTrack(i,a.sid,new MediaStream([i]),new RTCRtpReceiver),t.tracks=[...t.tracks,a]}if(n.audio){let e=as(),n=new un({source:Kt.MICROPHONE,sid:Math.floor(Math.random()*1e4).toString(),type:Gt.AUDIO});r.addSubscribedMediaTrack(e,n.sid,new MediaStream([e]),new RTCRtpReceiver),t.tracks=[...t.tracks,n]}r.updateInfo(t)}})}emit(e){var t=[...arguments].slice(1);if(e!==A.ActiveSpeakersChanged&&e!==A.TranscriptionReceived){let n=fu(t).filter(e=>e!==void 0);(e===A.TrackSubscribed||e===A.TrackUnsubscribed)&&this.log.trace(`subscribe trace: ${e}`,Object.assign(Object.assign({},this.logContext),{event:e,args:n})),this.log.debug(`room event ${e}`,Object.assign(Object.assign({},this.logContext),{event:e,args:n}))}return super.emit(e,...t)}};du.cleanupRegistry=typeof FinalizationRegistry<`u`&&new FinalizationRegistry(e=>{e()});function fu(e){return e.map(e=>{if(e)return Array.isArray(e)?fu(e):typeof e==`object`?`logContext`in e?e.logContext:void 0:e})}var pu;(function(e){e[e.IDLE=0]=`IDLE`,e[e.RUNNING=1]=`RUNNING`,e[e.SKIPPED=2]=`SKIPPED`,e[e.SUCCESS=3]=`SUCCESS`,e[e.FAILED=4]=`FAILED`})(pu||={}),di.EventEmitter,di.EventEmitter;function mu(e,t,n){return(t=gu(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hu(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function gu(e){var t=hu(e,`string`);return typeof t==`symbol`?t:t+``}new TextEncoder,new TextDecoder;var _u=class extends Error{constructor(e,t){var n;super(e,t),mu(this,`code`,`ERR_JOSE_GENERIC`),this.name=this.constructor.name,(n=Error.captureStackTrace)==null||n.call(Error,this,this.constructor)}};mu(_u,`code`,`ERR_JOSE_GENERIC`),mu(class extends _u{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`unspecified`,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`unspecified`;super(e,{cause:{claim:n,reason:r,payload:t}}),mu(this,`code`,`ERR_JWT_CLAIM_VALIDATION_FAILED`),mu(this,`claim`,void 0),mu(this,`reason`,void 0),mu(this,`payload`,void 0),this.claim=n,this.reason=r,this.payload=t}},`code`,`ERR_JWT_CLAIM_VALIDATION_FAILED`),mu(class extends _u{constructor(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:`unspecified`,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`unspecified`;super(e,{cause:{claim:n,reason:r,payload:t}}),mu(this,`code`,`ERR_JWT_EXPIRED`),mu(this,`claim`,void 0),mu(this,`reason`,void 0),mu(this,`payload`,void 0),this.claim=n,this.reason=r,this.payload=t}},`code`,`ERR_JWT_EXPIRED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JOSE_ALG_NOT_ALLOWED`)}},`code`,`ERR_JOSE_ALG_NOT_ALLOWED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JOSE_NOT_SUPPORTED`)}},`code`,`ERR_JOSE_NOT_SUPPORTED`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`decryption operation failed`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWE_DECRYPTION_FAILED`)}},`code`,`ERR_JWE_DECRYPTION_FAILED`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWE_INVALID`)}},`code`,`ERR_JWE_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWS_INVALID`)}},`code`,`ERR_JWS_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWT_INVALID`)}},`code`,`ERR_JWT_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWK_INVALID`)}},`code`,`ERR_JWK_INVALID`),mu(class extends _u{constructor(){super(...arguments),mu(this,`code`,`ERR_JWKS_INVALID`)}},`code`,`ERR_JWKS_INVALID`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`no applicable key found in the JSON Web Key Set`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWKS_NO_MATCHING_KEY`)}},`code`,`ERR_JWKS_NO_MATCHING_KEY`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`multiple matching keys found in the JSON Web Key Set`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,Symbol.asyncIterator,void 0),mu(this,`code`,`ERR_JWKS_MULTIPLE_MATCHING_KEYS`)}},`code`,`ERR_JWKS_MULTIPLE_MATCHING_KEYS`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`request timed out`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWKS_TIMEOUT`)}},`code`,`ERR_JWKS_TIMEOUT`),mu(class extends _u{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`signature verification failed`,t=arguments.length>1?arguments[1]:void 0;super(e,t),mu(this,`code`,`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`)}},`code`,`ERR_JWS_SIGNATURE_VERIFICATION_FAILED`);var vu=`conversation_initiation_client_data`;function yu(e){let t={type:vu};return e.overrides&&(t.conversation_config_override={agent:{prompt:e.overrides.agent?.prompt,first_message:e.overrides.agent?.firstMessage,language:e.overrides.agent?.language},tts:{voice_id:e.overrides.tts?.voiceId,speed:e.overrides.tts?.speed,stability:e.overrides.tts?.stability,similarity_boost:e.overrides.tts?.similarityBoost},...e.overrides.asr?.keywords===void 0?{}:{asr:{keywords:e.overrides.asr.keywords}},conversation:{text_only:e.overrides.conversation?.textOnly}}),e.customLlmExtraBody&&(t.custom_llm_extra_body=e.customLlmExtraBody),e.dynamicVariables&&(t.dynamic_variables=e.dynamicVariables),e.userId&&(t.user_id=e.userId),t.source_info={source:c.name,version:c.version},e.toolMockConfig&&(t.tool_mock_config={mocking_strategy:e.toolMockConfig.mockingStrategy,mocked_tool_names:e.toolMockConfig.mockedToolNames,fallback_strategy:e.toolMockConfig.fallbackStrategy}),t}function bu(e){let t=new Uint8Array(e);return btoa(String.fromCharCode(...t))}function xu(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var Su={getVolume:()=>0,getByteFrequencyData:()=>{}},Cu=8e3;function wu(e,t,n){let r=e.length,i=n/2/r,a=Math.floor(100/i),o=Math.min(Math.ceil(Cu/i),r),s=o-a,c=t.length;for(let n=0;n<c;n++){let r=n/c*s,i=a+Math.floor(r),l=Math.min(i+1,o-1),u=r-Math.floor(r);t[n]=Math.round(e[i]*(1-u)+e[l]*u)}}var Tu;function Eu(e){Tu=e}function Du(){return Tu?.()??null}var Ou=`wss://livekit.rtc.elevenlabs.io`,ku=`https://api.elevenlabs.io`,Au=.01;function ju(e){return e.replace(/^wss:\/\//,`https://`)}var Mu=class t extends u{conversationId;inputFormat;outputFormat;room;isConnected=!1;audioEventId=1;outputDeviceId=null;audioAdapter;inputAnalyser=void 0;inputVolumeProvider=Su;outputAnalyser=void 0;outputVolumeProvider=Su;_isMuted=!1;input={close:async()=>{if(this.isConnected)try{this.room.localParticipant.audioTrackPublications.forEach(e=>{e.track&&e.track.stop()})}catch(e){console.warn(`Error stopping local tracks:`,e)}},setDevice:async e=>{if(e?.sampleRate!==void 0||e?.format!==void 0||e?.preferHeadphonesForIosDevices!==void 0)throw Error(`WebRTC input device does not support sampleRate, format, or preferHeadphonesForIosDevices options`);let t=e?.inputDeviceId;t&&await this.setAudioInputDevice(t)},setMuted:async e=>{if(!this.isConnected||!this.room.localParticipant){console.warn(`Cannot set microphone muted: room not connected or no local participant`);return}this._isMuted=e;let t=this.room.localParticipant.getTrackPublication(P.Source.Microphone);if(t?.track)try{e?await t.track.mute():await t.track.unmute()}catch{await this.room.localParticipant.setMicrophoneEnabled(!e)}else await this.room.localParticipant.setMicrophoneEnabled(!e);if(!e){let e=this.room.localParticipant.getTrackPublication(P.Source.Microphone)?.track;e&&this.setupInputAnalyser(e.mediaStreamTrack)}},isMuted:()=>this._isMuted,getAnalyser:()=>this.inputAnalyser,getVolume:()=>this._isMuted?0:this.inputVolumeProvider.getVolume(),getByteFrequencyData:e=>{if(this._isMuted){e.fill(0);return}this.inputVolumeProvider.getByteFrequencyData(e)}};output={close:async()=>{},setDevice:async e=>{if(e?.sampleRate!==void 0||e?.format!==void 0)throw Error(`WebRTC output device does not support sampleRate or format options`);let t=e?.outputDeviceId;t&&await this.setAudioOutputDevice(t)},setVolume:e=>{this.setAudioVolume(e)},interrupt:e=>{},getAnalyser:()=>this.outputAnalyser,getVolume:()=>this.outputVolumeProvider.getVolume(),getByteFrequencyData:e=>{this.outputVolumeProvider.getByteFrequencyData(e)}};constructor(e,t,n,r,i={}){super(i),this.room=e,this.conversationId=t,this.inputFormat=n,this.outputFormat=r,this.audioAdapter=Du(),this.setupRoomEventListeners()}static async create(r){let i;if(`conversationToken`in r&&r.conversationToken)i=r.conversationToken;else if(`agentId`in r&&r.agentId)try{let{name:t,version:a}=c,o=`${ju(r.origin??ku)}/v1/convai/conversation/token?agent_id=${r.agentId}&source=${t}&version=${a}`;r.environment&&(o+=`&environment=${encodeURIComponent(r.environment)}`);let s=await fetch(o);if(!s.ok){let e=await n(s);throw Error(`ElevenLabs API returned ${s.status} ${e}`)}let l=await s.json();if(!e(l)||typeof l.token!=`string`||(i=l.token,!i))throw Error(`No conversation token received from API`)}catch(e){let t=e instanceof Error?e.message:String(e);throw e instanceof Error&&e.message.includes(`401`)&&(t=`Your agent has authentication enabled, but no signed URL or conversation token was provided.`),Error(`Failed to fetch conversation token for agent ${r.agentId}: ${t}`)}else throw Error(`Either conversationToken or agentId is required for WebRTC connection`);let a=new du({singlePeerConnection:!1});try{let e=new t(a,`room_${Date.now()}`,d(`pcm_48000`),d(`pcm_48000`),r),n=r.livekitUrl||Ou,o=r.textOnly?Promise.resolve():new Promise((e,t)=>{a.once(A.SignalConnected,()=>{a.localParticipant.setMicrophoneEnabled(!0).then(()=>e()).catch(t)})});await a.connect(n,i),await new Promise(t=>{if(e.isConnected)t();else{let e=()=>{a.off(A.Connected,e),t()};a.on(A.Connected,e)}}),await o;let s=a.localParticipant.getTrackPublication(P.Source.Microphone)?.track;s&&e.setupInputAnalyser(s.mediaStreamTrack),a.name&&(e.conversationId=a.name.match(/(conv_[a-zA-Z0-9]+)/)?.[0]||a.name);let c=yu(r);return e.debug({type:vu,message:c}),await e.sendMessage(c),e}catch(e){throw await a.disconnect(),e}}setupRoomEventListeners(){this.room.on(A.Connected,()=>{this.isConnected=!0}),this.room.on(A.Disconnected,e=>{this.isConnected=!1,this.disconnect({reason:`agent`,context:{type:`close`,reason:e?.toString()}})}),this.room.on(A.ConnectionStateChanged,e=>{e===lu.Disconnected&&(this.isConnected=!1,this.disconnect({reason:`error`,message:`LiveKit connection state changed to ${e}`,context:{type:`connection_state_changed`}}))}),this.room.on(A.DataReceived,(e,t)=>{try{let t=JSON.parse(new TextDecoder().decode(e));if(t.type===`audio`)return;f(t)?this.handleMessage(t):console.warn(`Invalid socket event received:`,t)}catch(t){console.warn(`Failed to parse incoming data message:`,t),console.warn(`Raw payload:`,new TextDecoder().decode(e))}}),this.room.on(A.TrackSubscribed,async(e,t,n)=>{if(e.kind===P.Kind.Audio&&n.identity.includes(`agent`)){let t=e;this.audioAdapter&&(await this.audioAdapter.attachRemoteTrack(t,this.outputDeviceId),await this.setupAudioCapture(t),this.onDebug?.({type:`audio_element_ready`}))}}),this.room.on(A.ActiveSpeakersChanged,async e=>{e.length>0?this.updateMode(e[0].identity.startsWith(`agent`)?`speaking`:`listening`):this.updateMode(`listening`)}),this.room.on(A.ParticipantDisconnected,e=>{e.identity?.startsWith(`agent`)&&this.disconnect({reason:`agent`,context:{type:`close`,reason:`agent disconnected`}})})}close(){if(this.isConnected){try{this.room.localParticipant.audioTrackPublications.forEach(e=>{e.track&&e.track.stop()})}catch(e){console.warn(`Error stopping local tracks:`,e)}this.audioAdapter?.cleanup(),this.inputAnalyser=void 0,this.outputAnalyser=void 0,this.inputVolumeProvider=Su,this.outputVolumeProvider=Su,this.room.disconnect()}}async sendMessage(e){if(!this.isConnected||!this.room.localParticipant){console.warn(`Cannot send message: room not connected or no local participant`);return}if(!(`user_audio_chunk`in e))try{let t=new TextEncoder().encode(JSON.stringify(e));await this.room.localParticipant.publishData(t,{reliable:!0})}catch(t){this.debug({type:`send_message_error`,message:{message:e,error:t}}),console.error(`Failed to send message via WebRTC:`,t)}}getRoom(){return this.room}setupInputAnalyser(e){if(this.audioAdapter)try{let t=this.audioAdapter.setupInputAnalysis(e);this.inputVolumeProvider=t.volumeProvider,this.inputAnalyser=t.analyser}catch(e){console.warn(`[ConversationalAI] Failed to set up input volume analyser:`,e)}}setInputVolumeProvider(e){this.inputVolumeProvider=e}setOutputVolumeProvider(e){this.outputVolumeProvider=e}async setupAudioCapture(e){if(this.audioAdapter)try{let t=await this.audioAdapter.setupOutputAnalysis(e,this.outputFormat,(e,t)=>{if(t>Au){let t=bu(e),n=this.audioEventId++;this.handleMessage({type:`audio`,audio_event:{audio_base_64:t,event_id:n}})}});this.outputVolumeProvider=t.volumeProvider,this.outputAnalyser=t.analyser}catch(e){console.warn(`Failed to set up audio capture:`,e)}}setAudioVolume(e){this.audioAdapter?.setVolume(e)}async setAudioOutputDevice(e){if(!this.audioAdapter)throw Error(`Cannot set output device: no audio adapter available on this platform`);await this.audioAdapter.setOutputDevice(e),this.outputDeviceId=e}async setAudioInputDevice(e){if(!this.isConnected||!this.room.localParticipant)throw Error(`Cannot change input device: room not connected or no local participant`);try{let t=this.room.localParticipant.getTrackPublication(P.Source.Microphone);t?.track&&(await t.track.stop(),await this.room.localParticipant.unpublishTrack(t.track));let n=await tu({deviceId:{exact:e},echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:{ideal:1}});await this.room.localParticipant.publishTrack(n,{name:`microphone`,source:P.Source.Microphone}),this.setupInputAnalyser(n.mediaStreamTrack)}catch(e){console.error(`Failed to change input device:`,e);try{await this.room.localParticipant.setMicrophoneEnabled(!0)}catch(e){console.error(`Failed to recover microphone after device switch error:`,e)}throw e}}},Nu;function Pu(e){Nu=e}function Fu(e){if(!(e instanceof Mu))throw Error(`setupWebRTCSession requires a WebRTCConnection. Received: ${e?.constructor?.name??typeof e}`);return{connection:e,input:e.input,output:e.output,playbackEventTarget:null,detach:async()=>{}}}var Iu=`convai`,Lu=`wss://api.elevenlabs.io`,Ru=`/v1/convai/conversation?agent_id=`,zu=class e extends u{socket;conversationId;inputFormat;outputFormat;outputListeners=new Set;pendingAudioEvents=[];constructor(e,t,n,r){super(),this.socket=e,this.conversationId=t,this.inputFormat=n,this.outputFormat=r,this.socket.addEventListener(`error`,e=>{setTimeout(()=>this.disconnect({reason:`error`,message:`The connection was closed due to a socket error.`,context:{type:e.type}}),0)}),this.socket.addEventListener(`close`,e=>{let t=e.code,n=e.reason||void 0,r={type:e.type,code:t,reason:n};this.disconnect(t===1e3?{reason:`agent`,context:r,closeCode:t,closeReason:n}:{reason:`error`,message:n||`The connection was closed by the server.`,context:r,closeCode:t,closeReason:n})}),this.socket.addEventListener(`message`,e=>{try{let t=JSON.parse(e.data);if(!f(t)){this.debug({type:`invalid_event`,message:`Received invalid socket event`,data:e.data});return}this.handleMessage(t)}catch(t){this.debug({type:`parsing_error`,message:`Failed to parse socket message`,error:t instanceof Error?t.message:String(t),data:e.data})}})}static async create(t){let n=null;try{let i=t.origin??Lu,a,{name:o,version:s}=c;if(t.signedUrl){let e=t.signedUrl.includes(`?`)?`&`:`?`;a=`${t.signedUrl}${e}source=${o}&version=${s}`}else a=`${i}${Ru}${t.agentId}&source=${o}&version=${s}`;t.environment&&(a+=`&environment=${encodeURIComponent(t.environment)}`);let l=[Iu];t.authorization&&l.push(`bearer.${t.authorization}`),n=new WebSocket(a,l);let{conversation_id:u,agent_output_audio_format:p,user_input_audio_format:m}=await new Promise((e,i)=>{n.addEventListener(`open`,()=>{let e=yu(t);n?.send(JSON.stringify(e))},{once:!0}),n.addEventListener(`error`,e=>{setTimeout(()=>i(new r(`The connection was closed due to a socket error.`)),0)}),n.addEventListener(`close`,e=>{i(new r(e.reason||(e.code===1e3?`Connection closed normally before session could be established.`:`Connection closed unexpectedly before session could be established.`),{closeCode:e.code,closeReason:e.reason||void 0}))}),n.addEventListener(`message`,t=>{let n=JSON.parse(t.data);f(n)&&(n.type===`conversation_initiation_metadata`?e(n.conversation_initiation_metadata_event):console.warn(`First received message is not conversation metadata.`))},{once:!0})}),h=d(m??`pcm_16000`),g=d(p);return new e(n,u,h,g)}catch(e){throw n?.close(),e}}close(){this.pendingAudioEvents=[],this.socket.close(1e3,`User ended conversation`)}sendMessage(e){this.socket.send(JSON.stringify(e))}addListener(e){let t=this.outputListeners.size>0;if(this.outputListeners.add(e),t||this.pendingAudioEvents.length===0)return;let n=this.pendingAudioEvents;this.pendingAudioEvents=[];for(let t of n)e(t)}removeListener(e){this.outputListeners.delete(e)}handleMessage(e){if(super.handleMessage(e),e.type===`audio`&&e.audio_event.audio_base_64){let t={audio_base_64:e.audio_event.audio_base_64};if(this.outputListeners.size===0){this.pendingAudioEvents.push(t);return}this.outputListeners.forEach(e=>e(t))}}};function Bu(e){let t=`signedUrl`in e&&e.signedUrl;if(t&&e.connectionType===`webrtc`)throw Error(`signedUrl only supports websocket connections. Remove connectionType or set it to 'websocket'.`);return e.connectionType?e.connectionType:`conversationToken`in e&&e.conversationToken?`webrtc`:t||e.textOnly?`websocket`:`webrtc`}async function Vu(e){let t=Bu(e);switch(t){case`websocket`:return zu.create(e);case`webrtc`:return Mu.create(e);default:throw Error(`Unknown connection type: ${t}`)}}var Hu,Uu,Wu,Gu,Ku,qu,Ju,Yu,Xu,Zu,Qu,$u,ed,td={},nd=[],rd=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,id=Array.isArray;function ad(e,t){for(var n in t)e[n]=t[n];return e}function od(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function sd(e,t,n){var r,i,a,o={};for(a in t)a==`key`?r=t[a]:a==`ref`?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?Hu.call(arguments,2):n),typeof e==`function`&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return cd(e,o,r,i,null)}function cd(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++Wu,__i:-1,__u:0};return i==null&&Uu.vnode!=null&&Uu.vnode(a),a}function ld(){return{current:null}}function ud(e){return e.children}function dd(e,t){this.props=e,this.context=t}function fd(e,t){if(t==null)return e.__?fd(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?fd(e):null}function pd(e){var t,n;if((e=e.__)!=null&&e.__c!=null){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null){e.__e=e.__c.base=n.__e;break}return pd(e)}}function md(e){(!e.__d&&(e.__d=!0)&&Ku.push(e)&&!hd.__r++||qu!=Uu.debounceRendering)&&((qu=Uu.debounceRendering)||Ju)(hd)}function hd(){for(var e,t,n,r,i,a,o,s=1;Ku.length;)Ku.length>s&&Ku.sort(Yu),e=Ku.shift(),s=Ku.length,e.__d&&(n=void 0,r=void 0,i=(r=(t=e).__v).__e,a=[],o=[],t.__P&&((n=ad({},r)).__v=r.__v+1,Uu.vnode&&Uu.vnode(n),wd(t.__P,n,r,t.__n,t.__P.namespaceURI,32&r.__u?[i]:null,a,i??fd(r),!!(32&r.__u),o),n.__v=r.__v,n.__.__k[n.__i]=n,Ed(a,n,o),r.__e=r.__=null,n.__e!=i&&pd(n)));hd.__r=0}function gd(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,m,h,g,_,v=r&&r.__k||nd,y=t.length;for(c=_d(n,t,v,c,y),d=0;d<y;d++)(p=n.__k[d])!=null&&(f=p.__i==-1?td:v[p.__i]||td,p.__i=d,g=wd(e,p,f,i,a,o,s,c,l,u),m=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&kd(f.ref,null,p),u.push(p.ref,p.__c||m,p)),h==null&&m!=null&&(h=m),(_=!!(4&p.__u))||f.__k===p.__k?c=vd(p,c,e,_):typeof p.type==`function`&&g!==void 0?c=g:m&&(c=m.nextSibling),p.__u&=-7);return n.__e=h,c}function _d(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=cd(null,o,null,null,null):id(o)?o=e.__k[a]=cd(ud,{children:o},null,null,null):o.constructor==null&&o.__b>0?o=e.__k[a]=cd(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,(l=o.__i=bd(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=fd(s)),Ad(s,s));return r}function vd(e,t,n,r){var i,a;if(typeof e.type==`function`){for(i=e.__k,a=0;i&&a<i.length;a++)i[a]&&(i[a].__=e,t=vd(i[a],t,n,r));return t}e.__e!=t&&(r&&(t&&e.type&&!t.parentNode&&(t=fd(e)),n.insertBefore(e.__e,t||null)),t=e.__e);do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function yd(e,t){return t||=[],e==null||typeof e==`boolean`||(id(e)?e.some(function(e){yd(e,t)}):t.push(e)),t}function bd(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&(2&l.__u)==0;if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function xd(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||rd.test(t)?n:n+`px`}function Sd(e,t,n,r,i){var a,o;n:if(t==`style`)if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||xd(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||xd(e.style,t,n[t])}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(Xu,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n.u=r.u:(n.u=Zu,e.addEventListener(t,a?$u:Qu,a)):e.removeEventListener(t,a?$u:Qu,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function Cd(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t.t==null)t.t=Zu++;else if(t.t<n.u)return;return n(Uu.event?Uu.event(t):t)}}}function wd(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,ee,te=t.type;if(t.constructor!=null)return null;128&n.__u&&(c=!!(32&n.__u),a=[s=t.__e=n.__e]),(u=Uu.__b)&&u(t);n:if(typeof te==`function`)try{if(_=t.props,v=`prototype`in te&&te.prototype.render,y=(u=te.contextType)&&r[u.__c],b=u?y?y.props.value:u.__:r,n.__c?g=(d=t.__c=n.__c).__=d.__E:(v?t.__c=d=new te(_,b):(t.__c=d=new dd(_,b),d.constructor=te,d.render=jd),y&&y.sub(d),d.state||={},d.__n=r,f=d.__d=!0,d.__h=[],d._sb=[]),v&&d.__s==null&&(d.__s=d.state),v&&te.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=ad({},d.__s)),ad(d.__s,te.getDerivedStateFromProps(_,d.__s))),p=d.props,m=d.state,d.__v=t,f)v&&te.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),v&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(v&&te.getDerivedStateFromProps==null&&_!==p&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(_,b),t.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&!1===d.shouldComponentUpdate(_,d.__s,b)){for(t.__v!=n.__v&&(d.props=_,d.state=d.__s,d.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(e){e&&(e.__=t)}),x=0;x<d._sb.length;x++)d.__h.push(d._sb[x]);d._sb=[],d.__h.length&&o.push(d);break n}d.componentWillUpdate!=null&&d.componentWillUpdate(_,d.__s,b),v&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(p,m,h)})}if(d.context=b,d.props=_,d.__P=e,d.__e=!1,S=Uu.__r,C=0,v){for(d.state=d.__s,d.__d=!1,S&&S(t),u=d.render(d.props,d.state,d.context),w=0;w<d._sb.length;w++)d.__h.push(d._sb[w]);d._sb=[]}else do d.__d=!1,S&&S(t),u=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++C<25);d.state=d.__s,d.getChildContext!=null&&(r=ad(ad({},r),d.getChildContext())),v&&!f&&d.getSnapshotBeforeUpdate!=null&&(h=d.getSnapshotBeforeUpdate(p,m)),T=u,u!=null&&u.type===ud&&u.key==null&&(T=Dd(u.props.children)),s=gd(e,id(T)?T:[T],t,n,r,i,a,o,s,c,l),d.base=t.__e,t.__u&=-161,d.__h.length&&o.push(d),g&&(d.__E=d.__=null)}catch(e){if(t.__v=null,c||a!=null)if(e.then){for(t.__u|=c?160:128;s&&s.nodeType==8&&s.nextSibling;)s=s.nextSibling;a[a.indexOf(s)]=null,t.__e=s}else{for(ee=a.length;ee--;)od(a[ee]);Td(t)}else t.__e=n.__e,t.__k=n.__k,e.then||Td(t);Uu.__e(e,t,n)}else a==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):s=t.__e=Od(n.__e,t,n,r,i,a,o,c,l);return(u=Uu.diffed)&&u(t),128&t.__u?void 0:s}function Td(e){e&&e.__c&&(e.__c.__e=!0),e&&e.__k&&e.__k.forEach(Td)}function Ed(e,t,n){for(var r=0;r<n.length;r++)kd(n[r],n[++r],n[++r]);Uu.__c&&Uu.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){Uu.__e(e,t.__v)}})}function Dd(e){return typeof e!=`object`||!e||e.__b&&e.__b>0?e:id(e)?e.map(Dd):ad({},e)}function Od(e,t,n,r,i,a,o,s,c){var l,u,d,f,p,m,h,g=n.props||td,_=t.props,v=t.type;if(v==`svg`?i=`http://www.w3.org/2000/svg`:v==`math`?i=`http://www.w3.org/1998/Math/MathML`:i||=`http://www.w3.org/1999/xhtml`,a!=null){for(l=0;l<a.length;l++)if((p=a[l])&&`setAttribute`in p==!!v&&(v?p.localName==v:p.nodeType==3)){e=p,a[l]=null;break}}if(e==null){if(v==null)return document.createTextNode(_);e=document.createElementNS(i,v,_.is&&_),s&&=(Uu.__m&&Uu.__m(t,a),!1),a=null}if(v==null)g===_||s&&e.data==_||(e.data=_);else{if(a&&=Hu.call(e.childNodes),!s&&a!=null)for(g={},l=0;l<e.attributes.length;l++)g[(p=e.attributes[l]).name]=p.value;for(l in g)if(p=g[l],l!=`children`){if(l==`dangerouslySetInnerHTML`)d=p;else if(!(l in _)){if(l==`value`&&`defaultValue`in _||l==`checked`&&`defaultChecked`in _)continue;Sd(e,l,null,p,i)}}for(l in _)p=_[l],l==`children`?f=p:l==`dangerouslySetInnerHTML`?u=p:l==`value`?m=p:l==`checked`?h=p:s&&typeof p!=`function`||g[l]===p||Sd(e,l,p,g[l],i);if(u)s||d&&(u.__html==d.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(d&&(e.innerHTML=``),gd(t.type==`template`?e.content:e,id(f)?f:[f],t,n,r,v==`foreignObject`?`http://www.w3.org/1999/xhtml`:i,a,o,a?a[0]:n.__k&&fd(n,0),s,c),a!=null)for(l=a.length;l--;)od(a[l]);s||(l=`value`,v==`progress`&&m==null?e.removeAttribute(`value`):m!=null&&(m!==e[l]||v==`progress`&&!m||v==`option`&&m!=g[l])&&Sd(e,l,m,g[l],i),l=`checked`,h!=null&&h!=e[l]&&Sd(e,l,h,g[l],i))}return e}function kd(e,t,n){try{if(typeof e==`function`){var r=typeof e.__u==`function`;r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(e){Uu.__e(e,n)}}function Ad(e,t,n){var r,i;if(Uu.unmount&&Uu.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||kd(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){Uu.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&Ad(r[i],t,n||typeof e.type!=`function`);n||od(e.__e),e.__c=e.__=e.__e=void 0}function jd(e,t,n){return this.constructor(e,n)}function Md(e,t,n){var r,i,a,o;t==document&&(t=document.documentElement),Uu.__&&Uu.__(e,t),i=(r=typeof n==`function`)?null:n&&n.__k||t.__k,a=[],o=[],wd(t,e=(!r&&n||t).__k=sd(ud,null,[e]),i||td,td,t.namespaceURI,!r&&n?[n]:i?null:t.firstChild?Hu.call(t.childNodes):null,a,!r&&n?n:i?i.__e:t.firstChild,r,o),Ed(a,e,o)}function Nd(e,t){Md(e,t,Nd)}function Pd(e,t,n){var r,i,a,o,s=ad({},e.props);for(a in e.type&&e.type.defaultProps&&(o=e.type.defaultProps),t)a==`key`?r=t[a]:a==`ref`?i=t[a]:s[a]=t[a]===void 0&&o!=null?o[a]:t[a];return arguments.length>2&&(s.children=arguments.length>3?Hu.call(arguments,2):n),cd(e.type,s,r||e.key,i||e.ref,null)}function Fd(e){function t(e){var n,r;return this.getChildContext||(n=new Set,(r={})[t.__c]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(e){this.props.value!=e.value&&n.forEach(function(e){e.__e=!0,md(e)})},this.sub=function(e){n.add(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n&&n.delete(e),t&&t.call(e)}}),e.children}return t.__c=`__cC`+ ed++,t.__=e,t.Provider=t.__l=(t.Consumer=function(e,t){return e.children(t)}).contextType=t,t}Hu=nd.slice,Uu={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},Wu=0,Gu=function(e){return e!=null&&e.constructor==null},dd.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=ad({},this.state);typeof e==`function`&&(e=e(ad({},n),this.props)),e&&ad(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),md(this))},dd.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),md(this))},dd.prototype.render=ud,Ku=[],Ju=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Yu=function(e,t){return e.__v.__b-t.__v.__b},hd.__r=0,Xu=/(PointerCapture)$|Capture$/i,Zu=0,Qu=Cd(!1),$u=Cd(!0),ed=0;function Id(){return Id=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Id.apply(this,arguments)}function Ld(e,t){if(e==null)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(i[n]=e[n]);return i}var Rd=[`context`,`children`],zd=[`useFragment`];function Bd(e,t,n,r){function i(){var t,n=Reflect.construct(HTMLElement,[],i);return n._vdomComponent=e,r&&r.shadow?(n._root=n.attachShadow({mode:r.mode||`open`,serializable:(t=r.serializable)!=null&&t}),r.adoptedStyleSheets&&(n._root.adoptedStyleSheets=r.adoptedStyleSheets)):n._root=n,n}return(i.prototype=Object.create(HTMLElement.prototype)).constructor=i,i.prototype.connectedCallback=function(){Hd.call(this,r)},i.prototype.attributeChangedCallback=Wd,i.prototype.disconnectedCallback=Gd,n=n||e.observedAttributes||Object.keys(e.propTypes||{}),i.observedAttributes=n,e.formAssociated&&(i.formAssociated=!0),n.forEach(function(e){Object.defineProperty(i.prototype,e,{get:function(){return this._vdom?this._vdom.props[e]:this._props[e]},set:function(t){this._vdom?this.attributeChangedCallback(e,null,t):(this._props||={},this._props[e]=t);var n=typeof t;t!=null&&n!==`string`&&n!==`boolean`&&n!==`number`||this.setAttribute(e,t)}})}),customElements.define(t||e.tagName||e.displayName||e.name,i),i}function Vd(e){this.getChildContext=function(){return e.context};var t=e.children;return Pd(t,Ld(e,Rd))}function Hd(e){var t=new CustomEvent(`_preact`,{detail:{},bubbles:!0,cancelable:!0});this.dispatchEvent(t),this._vdom=sd(Vd,Id({},this._props,{context:t.detail.context}),qd(this,this._vdomComponent,e)),(this.hasAttribute(`hydrate`)?Nd:Md)(this._vdom,this._root)}function Ud(e){return e.replace(/-(\w)/g,function(e,t){return t?t.toUpperCase():``})}function Wd(e,t,n){if(this._vdom){var r={};r[e]=n??=void 0,r[Ud(e)]=n,this._vdom=Pd(this._vdom,r),Md(this._vdom,this._root)}}function Gd(){Md(this._vdom=null,this._root)}function Kd(e,t){var n=this,r=e.useFragment,i=Ld(e,zd);return sd(r?ud:`slot`,Id({},i,{ref:function(e){e?(n.ref=e,n._listener||(n._listener=function(e){e.stopPropagation(),e.detail.context=t},e.addEventListener(`_preact`,n._listener))):n.ref.removeEventListener(`_preact`,n._listener)}}))}function qd(e,t,n){if(e.nodeType===3)return e.data;if(e.nodeType!==1)return null;var r=[],i={},a=0,o=e.attributes,s=e.childNodes;for(a=o.length;a--;)o[a].name!==`slot`&&(i[o[a].name]=o[a].value,i[Ud(o[a].name)]=o[a].value);for(a=s.length;a--;){var c=qd(s[a],null,n),l=s[a].slot;l?i[l]=sd(Kd,{name:l},c):r[a]=c}var u=!(!n||!n.shadow),d=t?sd(Kd,{useFragment:!u},r):r;return!u&&t&&(e.innerHTML=``),sd(t||e.nodeName.toLowerCase(),i,d)}var Jd,Yd,Xd,Zd,Qd=0,$d=[],ef=Uu,tf=ef.__b,nf=ef.__r,rf=ef.diffed,af=ef.__c,of=ef.unmount,sf=ef.__;function cf(e,t){ef.__h&&ef.__h(Yd,e,Qd||t),Qd=0;var n=Yd.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function lf(e){return Qd=1,uf(wf,e)}function uf(e,t,n){var r=cf(Jd++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):wf(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=Yd,!Yd.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return!!e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};Yd.__f=!0;var a=Yd.shouldComponentUpdate,o=Yd.componentWillUpdate;Yd.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},Yd.shouldComponentUpdate=i}return r.__N||r.__}function df(e,t){var n=cf(Jd++,3);!ef.__s&&Cf(n.__H,t)&&(n.__=e,n.u=t,Yd.__H.__h.push(n))}function ff(e,t){var n=cf(Jd++,4);!ef.__s&&Cf(n.__H,t)&&(n.__=e,n.u=t,Yd.__h.push(n))}function F(e){return Qd=5,mf(function(){return{current:e}},[])}function pf(e,t,n){Qd=6,ff(function(){if(typeof e==`function`){var n=e(t());return function(){e(null),n&&typeof n==`function`&&n()}}if(e)return e.current=t(),function(){return e.current=null}},n==null?n:n.concat(e))}function mf(e,t){var n=cf(Jd++,7);return Cf(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function I(e,t){return Qd=8,mf(function(){return e},t)}function hf(e){var t=Yd.context[e.__c],n=cf(Jd++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(Yd)),t.props.value):e.__}function gf(e,t){ef.useDebugValue&&ef.useDebugValue(t?t(e):e)}function _f(){var e=cf(Jd++,11);if(!e.__){for(var t=Yd.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||=[0,0];e.__=`P`+n[0]+`-`+ n[1]++}return e.__}function vf(){for(var e;e=$d.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(xf),e.__H.__h.forEach(Sf),e.__H.__h=[]}catch(t){e.__H.__h=[],ef.__e(t,e.__v)}}ef.__b=function(e){Yd=null,tf&&tf(e)},ef.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),sf&&sf(e,t)},ef.__r=function(e){nf&&nf(e),Jd=0;var t=(Yd=e.__c).__H;t&&(Xd===Yd?(t.__h=[],Yd.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.forEach(xf),t.__h.forEach(Sf),t.__h=[],Jd=0)),Xd=Yd},ef.diffed=function(e){rf&&rf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&($d.push(t)!==1&&Zd===ef.requestAnimationFrame||((Zd=ef.requestAnimationFrame)||bf)(vf)),t.__H.__.forEach(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Xd=Yd=null},ef.__c=function(e,t){t.some(function(e){try{e.__h.forEach(xf),e.__h=e.__h.filter(function(e){return!e.__||Sf(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],ef.__e(n,e.__v)}}),af&&af(e,t)},ef.unmount=function(e){of&&of(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{xf(e)}catch(e){t=e}}),n.__H=void 0,t&&ef.__e(t,n.__v))};var yf=typeof requestAnimationFrame==`function`;function bf(e){var t,n=function(){clearTimeout(r),yf&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);yf&&(t=requestAnimationFrame(n))}function xf(e){var t=Yd,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),Yd=t}function Sf(e){var t=Yd;e.__c=e.__(),Yd=t}function Cf(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function wf(e,t){return typeof t==`function`?t(e):t}function Tf(e,t){for(var n in t)e[n]=t[n];return e}function Ef(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Df(e,t){var n=t(),r=lf({t:{__:n,u:t}}),i=r[0].t,a=r[1];return ff(function(){i.__=n,i.u=t,Of(i)&&a({t:i})},[e,n,t]),df(function(){return Of(i)&&a({t:i}),e(function(){Of(i)&&a({t:i})})},[e]),n}function Of(e){var t,n,r=e.u,i=e.__;try{var a=r();return!((t=i)===(n=a)&&(t!==0||1/t==1/n)||t!=t&&n!=n)}catch{return!0}}function kf(e){e()}function Af(e){return e}function jf(){return[!1,kf]}var Mf=ff;function Nf(e,t){this.props=e,this.context=t}function Pf(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:Ef(this.props,e)}function r(t){return this.shouldComponentUpdate=n,sd(e,t)}return r.displayName=`Memo(`+(e.displayName||e.name)+`)`,r.prototype.isReactComponent=!0,r.__f=!0,r.type=e,r}(Nf.prototype=new dd).isPureReactComponent=!0,Nf.prototype.shouldComponentUpdate=function(e,t){return Ef(this.props,e)||Ef(this.state,t)};var Ff=Uu.__b;Uu.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ff&&Ff(e)};var If=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.forward_ref`)||3911;function Lf(e){function t(t){var n=Tf({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=If,t.render=e,t.prototype.isReactComponent=t.__f=!0,t.displayName=`ForwardRef(`+(e.displayName||e.name)+`)`,t}var Rf=function(e,t){return e==null?null:yd(yd(e).map(t))},zf={map:Rf,forEach:Rf,count:function(e){return e?yd(e).length:0},only:function(e){var t=yd(e);if(t.length!==1)throw`Children.only`;return t[0]},toArray:yd},Bf=Uu.__e;Uu.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}Bf(e,t,n,r)};var Vf=Uu.unmount;function Hf(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Tf({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Hf(e,t,n)})),e}function Uf(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return Uf(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Wf(){this.__u=0,this.o=null,this.__b=null}function Gf(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Kf(e){var t,n,r,i=null;function a(a){if(t||(t=e()).then(function(e){e&&(i=e.default||e),r=!0},function(e){n=e,r=!0}),n)throw n;if(!r)throw t;return i?sd(i,a):null}return a.displayName=`Lazy`,a.__f=!0,a}function qf(){this.i=null,this.l=null}Uu.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Vf&&Vf(e)},(Wf.prototype=new dd).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=Gf(r.__v),a=!1,o=function(){a||(a=!0,n.__R=null,i?i(s):s())};n.__R=o;var s=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Uf(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Wf.prototype.componentWillUnmount=function(){this.o=[]},Wf.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Hf(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&sd(ud,null,e.fallback);return i&&(i.__u&=-33),[sd(ud,null,t.__a?null:e.children),i]};var Jf=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Yf(e){return this.getChildContext=function(){return e.context},e.children}function Xf(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Md(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},insertBefore:function(e,n){this.childNodes.push(e),t.h.insertBefore(e,n)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.h.removeChild(e)}}}Md(sd(Yf,{context:t.context},e.__v),t.v)}function Zf(e,t){var n=sd(Xf,{__v:e,h:t});return n.containerInfo=t,n}(qf.prototype=new dd).__a=function(e){var t=this,n=Gf(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Jf(t,e,r)):i()};n?n(a):a()}},qf.prototype.render=function(e){this.i=null,this.l=new Map;var t=yd(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},qf.prototype.componentDidUpdate=qf.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Jf(e,n,t)})};var Qf=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,$f=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,ep=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,tp=/[A-Z0-9]/g,np=typeof document<`u`,rp=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};function ip(e,t,n){return t.__k??(t.textContent=``),Md(e,t),typeof n==`function`&&n(),e?e.__c:null}function ap(e,t,n){return Nd(e,t),typeof n==`function`&&n(),e?e.__c:null}dd.prototype.isReactComponent={},[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(dd.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var op=Uu.event;function sp(){}function cp(){return this.cancelBubble}function lp(){return this.defaultPrevented}Uu.event=function(e){return op&&(e=op(e)),e.persist=sp,e.isPropagationStopped=cp,e.isDefaultPrevented=lp,e.nativeEvent=e};var up,dp={enumerable:!1,configurable:!0,get:function(){return this.class}},fp=Uu.vnode;Uu.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)===-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||np&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||rp(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:ep.test(a)&&(a=s):s=a=`oninput`:i&&$f.test(a)?a=a.replace(tp,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&r.multiple&&Array.isArray(r.value)&&(r.value=yd(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),n==`select`&&r.defaultValue!=null&&(r.value=yd(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value})),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,dp)):(t.className&&!t.class||t.class&&t.className)&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=Qf,fp&&fp(e)};var pp=Uu.__r;Uu.__r=function(e){pp&&pp(e),up=e.__c};var mp=Uu.diffed;Uu.diffed=function(e){mp&&mp(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value),up=null};var hp={ReactCurrentDispatcher:{current:{readContext:function(e){return up.__n[e.__c].props.value},useCallback:I,useContext:hf,useDebugValue:gf,useDeferredValue:Af,useEffect:df,useId:_f,useImperativeHandle:pf,useInsertionEffect:Mf,useLayoutEffect:ff,useMemo:mf,useReducer:uf,useRef:F,useState:lf,useSyncExternalStore:Df,useTransition:jf}}};function gp(e){return sd.bind(null,e)}function _p(e){return!!e&&e.$$typeof===Qf}function vp(e){return _p(e)&&e.type===ud}function yp(e){return!!e&&!!e.displayName&&(typeof e.displayName==`string`||e.displayName instanceof String)&&e.displayName.startsWith(`Memo(`)}function bp(e){return _p(e)?Pd.apply(null,arguments):e}function xp(e){return!!e.__k&&(Md(null,e),!0)}function Sp(e){return e&&(e.base||e.nodeType===1&&e)||null}var Cp=function(e,t){return e(t)},wp=function(e,t){return e(t)},Tp={useState:lf,useId:_f,useReducer:uf,useEffect:df,useLayoutEffect:ff,useInsertionEffect:Mf,useTransition:jf,useDeferredValue:Af,useSyncExternalStore:Df,startTransition:kf,useRef:F,useImperativeHandle:pf,useMemo:mf,useCallback:I,useContext:hf,useDebugValue:gf,version:`18.3.1`,Children:zf,render:ip,hydrate:ap,unmountComponentAtNode:xp,createPortal:Zf,createElement:sd,createContext:Fd,createFactory:gp,cloneElement:bp,createRef:ld,Fragment:ud,isValidElement:_p,isElement:_p,isFragment:vp,isMemo:yp,findDOMNode:Sp,Component:dd,PureComponent:Nf,memo:Pf,forwardRef:Lf,flushSync:wp,unstable_batchedUpdates:Cp,StrictMode:ud,Suspense:Wf,SuspenseList:qf,lazy:Kf,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hp},Ep=Symbol.for(`preact-signals`);function Dp(){if(Np>1)Np--;else{var e,t=!1;for((function(){var e=Lp;for(Lp=void 0;e!==void 0;)e.S.v===e.v&&(e.S.i=e.i),e=e.o})();Mp!==void 0;){var n=Mp;for(Mp=void 0,Pp++;n!==void 0;){var r=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&Hp(n))try{n.c()}catch(n){t||=(e=n,!0)}n=r}}if(Pp=0,Np--,t)throw e}}function Op(e){if(Np>0)return e();Ip=++Fp,Np++;try{return e()}finally{Dp()}}var kp=void 0;function Ap(e){var t=kp;kp=void 0;try{return e()}finally{kp=t}}var jp,Mp=void 0,Np=0,Pp=0,Fp=0,Ip=0,Lp=void 0,Rp=0;function zp(e){if(kp!==void 0){var t=e.n;if(t===void 0||t.t!==kp)return t={i:0,S:e,p:kp.s,n:void 0,t:kp,e:void 0,x:void 0,r:t},kp.s!==void 0&&(kp.s.n=t),kp.s=t,e.n=t,32&kp.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=kp.s,t.n=void 0,kp.s.n=t,kp.s=t),t}}function Bp(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}Bp.prototype.brand=Ep,Bp.prototype.h=function(){return!0},Bp.prototype.S=function(e){var t=this,n=this.t;n!==e&&e.e===void 0&&(e.x=n,this.t=e,n===void 0?Ap(function(){var e;(e=t.W)==null||e.call(t)}):n.e=e)},Bp.prototype.U=function(e){var t=this;if(this.t!==void 0){var n=e.e,r=e.x;n!==void 0&&(n.x=r,e.e=void 0),r!==void 0&&(r.e=n,e.x=void 0),e===this.t&&(this.t=r,r===void 0&&Ap(function(){var e;(e=t.Z)==null||e.call(t)}))}},Bp.prototype.subscribe=function(e){var t=this;return Zp(function(){var n=t.value,r=kp;kp=void 0;try{e(n)}finally{kp=r}},{name:`sub`})},Bp.prototype.valueOf=function(){return this.value},Bp.prototype.toString=function(){return this.value+``},Bp.prototype.toJSON=function(){return this.value},Bp.prototype.peek=function(){var e=kp;kp=void 0;try{return this.value}finally{kp=e}},Object.defineProperty(Bp.prototype,`value`,{get:function(){var e=zp(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(Pp>100)throw Error(`Cycle detected`);(function(e){Np!==0&&Pp===0&&e.l!==Ip&&(e.l=Ip,Lp={S:e,v:e.v,i:e.i,o:Lp})})(this),this.v=e,this.i++,Rp++,Np++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Dp()}}}});function Vp(e,t){return new Bp(e,t)}function Hp(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function Up(e){for(var t=e.s;t!==void 0;t=t.n){var n=t.S.n;if(n!==void 0&&(t.r=n),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function Wp(e){for(var t=e.s,n=void 0;t!==void 0;){var r=t.p;t.i===-1?(t.S.U(t),r!==void 0&&(r.n=t.n),t.n!==void 0&&(t.n.p=r)):n=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=r}e.s=n}function Gp(e,t){Bp.call(this,void 0),this.x=e,this.s=void 0,this.g=Rp-1,this.f=4,this.W=t?.watched,this.Z=t?.unwatched,this.name=t?.name}Gp.prototype=new Bp,Gp.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===Rp))return!0;if(this.g=Rp,this.f|=1,this.i>0&&!Hp(this))return this.f&=-2,!0;var e=kp;try{Up(this),kp=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(e){this.v=e,this.f|=16,this.i++}return kp=e,Wp(this),this.f&=-2,!0},Gp.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}Bp.prototype.S.call(this,e)},Gp.prototype.U=function(e){if(this.t!==void 0&&(Bp.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},Gp.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(Gp.prototype,`value`,{get:function(){if(1&this.f)throw Error(`Cycle detected`);var e=zp(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function Kp(e,t){return new Gp(e,t)}function qp(e){var t=e.m;if(e.m=void 0,typeof t==`function`){Np++;var n=kp;kp=void 0;try{t()}catch(t){throw e.f&=-2,e.f|=8,Jp(e),t}finally{kp=n,Dp()}}}function Jp(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,qp(e)}function Yp(e){if(kp!==this)throw Error(`Out-of-order effect`);Wp(this),kp=e,this.f&=-2,8&this.f&&Jp(this),Dp()}function Xp(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t?.name,jp&&jp.push(this)}Xp.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t==`function`&&(this.m=t)}finally{e()}},Xp.prototype.S=function(){if(1&this.f)throw Error(`Cycle detected`);this.f|=1,this.f&=-9,qp(this),Up(this),Np++;var e=kp;return kp=this,Yp.bind(this,e)},Xp.prototype.N=function(){2&this.f||(this.f|=2,this.u=Mp,Mp=this)},Xp.prototype.d=function(){this.f|=8,1&this.f||Jp(this)},Xp.prototype.dispose=function(){this.d()};function Zp(e,t){var n=new Xp(e,t);try{n.c()}catch(e){throw n.d(),e}var r=n.d.bind(n);return r[Symbol.dispose]=r,r}var Qp,$p,em,tm=typeof window<`u`&&!!window.__PREACT_SIGNALS_DEVTOOLS__,nm=[],rm=[];Zp(function(){Qp=this.N})();function im(e,t){Uu[e]=t.bind(null,Uu[e]||function(){})}function am(e){if(em){var t=em;em=void 0,t()}em=e&&e.S()}function om(e){var t=this,n=e.data,r=cm(n);r.value=n;var i=mf(function(){for(var e=t,n=t.__v;n=n.__;)if(n.__c){n.__c.__$f|=4;break}var i=Kp(function(){var e=r.value.value;return e===0?0:!0===e?``:e||``}),a=Kp(function(){return!Array.isArray(i.value)&&!Gu(i.value)}),o=Zp(function(){if(this.N=mm,a.value){var t=i.value;e.__v&&e.__v.__e&&e.__v.__e.nodeType===3&&(e.__v.__e.data=t)}}),s=t.__$u.d;return t.__$u.d=function(){o(),s.call(this)},[a,i]},[]),a=i[0],o=i[1];return a.value?o.peek():o.value}om.displayName=`ReactiveTextNode`,Object.defineProperties(Bp.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:om},props:{configurable:!0,get:function(){var e=this;return{data:{get value(){return e.value}}}}},__b:{configurable:!0,value:1}}),im(`__b`,function(e,t){if(typeof t.type==`string`){var n,r=t.props;for(var i in r)if(i!==`children`){var a=r[i];a instanceof Bp&&(n||(t.__np=n={}),n[i]=a,r[i]=a.peek())}}e(t)}),im(`__r`,function(e,t){if(e(t),t.type!==ud){am();var n,r=t.__c;r&&(r.__$f&=-2,(n=r.__$u)===void 0&&(r.__$u=n=function(e,t){var n;return Zp(function(){n=this},{name:t}),n.c=e,n}(function(){var e;tm&&((e=n.y)==null||e.call(n)),r.__$f|=1,r.setState({})},typeof t.type==`function`?t.type.displayName||t.type.name:``))),$p=r,am(n)}}),im(`__e`,function(e,t,n,r){am(),$p=void 0,e(t,n,r)}),im(`diffed`,function(e,t){am(),$p=void 0;var n;if(typeof t.type==`string`&&(n=t.__e)){var r=t.__np,i=t.props;if(r){var a=n.U;if(a)for(var o in a){var s=a[o];s!==void 0&&!(o in r)&&(s.d(),a[o]=void 0)}else a={},n.U=a;for(var c in r){var l=a[c],u=r[c];l===void 0?(l=sm(n,c,u),a[c]=l):l.o(u,i)}for(var d in r)i[d]=r[d]}}e(t)});function sm(e,t,n,r){var i=t in e&&e.ownerSVGElement===void 0,a=Vp(n),o=n.peek();return{o:function(e,t){a.value=e,o=e.peek()},d:Zp(function(){this.N=mm;var n=a.value.value;o===n?o=void 0:(o=void 0,i?e[t]=n:n!=null&&(!1!==n||t[4]===`-`)?e.setAttribute(t,n):e.removeAttribute(t))})}}im(`unmount`,function(e,t){if(typeof t.type==`string`){var n=t.__e;if(n){var r=n.U;if(r)for(var i in n.U=void 0,r){var a=r[i];a&&a.d()}}t.__np=void 0}else{var o=t.__c;if(o){var s=o.__$u;s&&(o.__$u=void 0,s.d())}}e(t)}),im(`__h`,function(e,t,n,r){(r<3||r===9)&&(t.__$f|=2),e(t,n,r)}),dd.prototype.shouldComponentUpdate=function(e,t){if(this.__R)return!0;var n=this.__$u,r=n&&n.s!==void 0;for(var i in t)return!0;if(this.__f||typeof this.u==`boolean`&&!0===this.u){var a=2&this.__$f;if(!(r||a||4&this.__$f)||1&this.__$f)return!0}else if(!(r||4&this.__$f)||3&this.__$f)return!0;for(var o in e)if(o!==`__source`&&e[o]!==this.props[o])return!0;for(var s in this.props)if(!(s in e))return!0;return!1};function cm(e,t){return mf(function(){return Vp(e,t)},[])}function L(e,t){var n=F(e);return n.current=e,$p.__$f|=4,mf(function(){return Kp(function(){return n.current()},t)},[])}var lm=typeof requestAnimationFrame>`u`?setTimeout:function(e){var t=function(){clearTimeout(n),cancelAnimationFrame(r),e()},n=setTimeout(t,35),r=requestAnimationFrame(t)},um=function(e){queueMicrotask(function(){queueMicrotask(e)})};function dm(){Op(function(){for(var e;e=nm.shift();)Qp.call(e)})}function fm(){nm.push(this)===1&&(Uu.requestAnimationFrame||lm)(dm)}function pm(){Op(function(){for(var e;e=rm.shift();)Qp.call(e)})}function mm(){rm.push(this)===1&&(Uu.requestAnimationFrame||um)(pm)}function hm(e,t){var n=F(e);n.current=e,df(function(){return Zp(function(){return this.N=fm,n.current()},t)},[])}var gm=0;Array.isArray;function R(e,t,n,r,i,a){t||={};var o,s,c=t;if(`ref`in c)for(s in c={},t)s==`ref`?o=t[s]:c[s]=t[s];var l={type:e,props:c,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--gm,__i:-1,__u:0,__source:i,__self:a};if(typeof e==`function`&&(o=e.defaultProps))for(s in o)c[s]===void 0&&(c[s]=o[s]);return Uu.vnode&&Uu.vnode(l),l}var _m=new Map;function vm(e,t){return async(n,r)=>{let i=_m.get(e);if(i)return n.addModule(i);if(r)try{await n.addModule(r),_m.set(e,r);return}catch(t){throw Error(`Failed to load the ${e} worklet module from path: ${r}. Error: ${t}`)}let a=new Blob([t],{type:`application/javascript`}),o=URL.createObjectURL(a);try{await n.addModule(o),_m.set(e,o);return}catch{URL.revokeObjectURL(o)}try{let r=`data:application/javascript;base64,${btoa(t)}`;await n.addModule(r),_m.set(e,r)}catch{throw Error(`Failed to load the ${e} worklet module. Make sure the browser supports AudioWorklets. If you are using a strict CSP, you may need to self-host the worklet files.`)}}}var ym=vm(`audioConcatProcessor`,`/*
39
39
  * ulaw decoding logic taken from the wavefile library
40
40
  * https://github.com/rochars/wavefile/blob/master/lib/codecs/mulaw.js
41
41
  * USED BY @elevenlabs/client
@@ -267,7 +267,7 @@ class RawAudioProcessor extends AudioWorkletProcessor {
267
267
  }
268
268
  }
269
269
  registerProcessor("rawAudioProcessor", RawAudioProcessor);
270
- `),km={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:{ideal:1}},Am=class e{context;analyser;worklet;inputStream;mediaStreamSource;permissions;onError;static async create({sampleRate:t,format:n,preferHeadphonesForIosDevices:r,inputDeviceId:i,workletPaths:a,libsampleratePath:o,onError:s,inputChunkDurationMs:c=25}){let l=null,u=null;try{let d={sampleRate:{ideal:t},...km};if(wm()&&r){let e=(await window.navigator.mediaDevices.enumerateDevices()).find(e=>e.kind===`audioinput`&&[`airpod`,`headphone`,`earphone`].find(t=>e.label.toLowerCase().includes(t)));e&&(d.deviceId={ideal:e.deviceId})}i&&(d.deviceId=e.getDeviceIdConstraint(i));let f=navigator.mediaDevices.getSupportedConstraints().sampleRate;l=new window.AudioContext(f?{sampleRate:t}:{});let p=l.createAnalyser();f||await xm(l,o),await Om(l.audioWorklet,a?.rawAudioProcessor);let m={voiceIsolation:!0,...d};u=await navigator.mediaDevices.getUserMedia({audio:m});let h=l.createMediaStreamSource(u),g=new AudioWorkletNode(l,`rawAudioProcessor`);g.port.postMessage({type:`setFormat`,format:n,sampleRate:t,chunkDurationMs:c}),h.connect(p),p.connect(g),await l.resume();let _=await navigator.permissions.query({name:`microphone`});return new e(l,p,g,u,h,_,s)}catch(e){throw u?.getTracks().forEach(e=>{e.stop()}),l?.close(),e}}static getDeviceIdConstraint(e){if(e)return wm()?{ideal:e}:{exact:e}}muted=!1;volumeProvider;constructor(e,t,n,r,i,a,o=console.error){this.context=e,this.analyser=t,this.worklet=n,this.inputStream=r,this.mediaStreamSource=i,this.permissions=a,this.onError=o,this.permissions.addEventListener(`change`,this.handlePermissionsChange),this.worklet.port.start(),this.volumeProvider=Cm(t,e.sampleRate)}getAnalyser(){return this.analyser}getVolume(){return this.muted?0:this.volumeProvider.getVolume()}getByteFrequencyData(e){if(this.muted){e.fill(0);return}this.volumeProvider.getByteFrequencyData(e)}isMuted(){return this.muted}addListener(e){this.worklet.port.addEventListener(`message`,e)}removeListener(e){this.worklet.port.removeEventListener(`message`,e)}forgetInputStreamAndSource(){for(let e of this.inputStream.getTracks())e.stop();this.mediaStreamSource.disconnect()}async close(){this.forgetInputStreamAndSource(),this.permissions.removeEventListener(`change`,this.handlePermissionsChange),await this.context.close()}async setMuted(e){this.muted=e,this.worklet.port.postMessage({type:`setMuted`,isMuted:e})}settingInput=!1;async setDevice(t){try{if(this.settingInput)throw Error(`Input device is already being set`);this.settingInput=!0;let n=t?.inputDeviceId,r={...km};n&&(r.deviceId=e.getDeviceIdConstraint(n));let i={voiceIsolation:!0,...r},a=await navigator.mediaDevices.getUserMedia({audio:i});this.forgetInputStreamAndSource(),this.inputStream=a,this.mediaStreamSource=this.context.createMediaStreamSource(a),this.mediaStreamSource.connect(this.analyser)}catch(e){throw this.onError(`Failed to switch input device:`,e),e}finally{this.settingInput=!1}}handlePermissionsChange=()=>{if(this.permissions.state===`denied`)this.onError(`Microphone permission denied`);else if(!this.settingInput){let[e]=this.inputStream.getAudioTracks(),{deviceId:t}=e?.getSettings()??{};this.setDevice({inputDeviceId:t}).catch(e=>{this.onError(`Failed to reset input device after permission change:`,e)})}}};function jm(e,t){let n=e=>{let n=e.data[0];t.sendMessage({user_audio_chunk:bu(n.buffer)})};return e.addListener(n),()=>{e.removeListener(n)}}function Mm(e,t){let n=e=>{t.playAudio(xu(e.audio_base_64))};return e.addListener(n),()=>{e.removeListener(n)}}var Nm={default:0,android:3e3};function Pm(e,t=`default`){let n=e??Nm;return t===`android`?n.android??n.default:t===`ios`?n.ios??n.default:n.default}async function Fm(e){e>0&&await new Promise(t=>setTimeout(t,e))}var Im=3e4,Lm=[`touchstart`,`touchend`,`click`],Rm=null,zm=null,Bm=!1;function Vm(e){let t=e.createBuffer(1,1,22050),n=e.createBufferSource();n.buffer=t,n.connect(e.destination),n.start(0),e.resume().catch(()=>{})}function Hm(){zm&&clearTimeout(zm),zm=setTimeout(()=>{zm=null,qm()},Im)}function Um(){zm&&=(clearTimeout(zm),null)}function Wm(){if(!wm()||Rm)return;let e=new AudioContext;Vm(e),Rm=e,Hm()}function Gm(){if(!wm()||Bm||typeof document>`u`)return;Bm=!0;let e=()=>{Wm()};for(let t of Lm)document.addEventListener(t,e,!0)}function Km(){let e=Rm;return Rm=null,Um(),e}function qm(){Rm&&(Rm.close().catch(()=>{}),Rm=null,Um())}function Jm(){return Tm()?`android`:wm()?`ios`:`default`}async function Ym(){if(`wakeLock`in navigator)try{return await navigator.wakeLock.request(`screen`)}catch{}return null}async function Xm(e,t,n){let[r,i]=await Promise.all([Am.create({...t.inputFormat,preferHeadphonesForIosDevices:e.preferHeadphonesForIosDevices,inputDeviceId:e.inputDeviceId,inputChunkDurationMs:e.inputChunkDurationMs,workletPaths:e.workletPaths,libsampleratePath:e.libsampleratePath}),Dm.create({...t.outputFormat,outputDeviceId:e.outputDeviceId,workletPaths:e.workletPaths,audioContext:n??void 0})]),a=jm(r,t),o=Mm(t,i);return{input:r,output:i,playbackEventTarget:i,detach:async()=>{a(),o()}}}async function Zm(e){let t=e.useWakeLock??!0,n=null,r=null,i=null;try{t&&(n=await Ym()),r=await navigator.mediaDevices.getUserMedia({audio:!0});let a=Jm();await Fm(Pm(e.connectionDelay,a));let o=await Vu(e),s;try{o instanceof zu?(i=Km(),s={connection:o,...await Xm(e,o,i)},i=null):(qm(),s=Fu(o))}catch(e){throw await i?.close().catch(()=>{}),i=null,o.close(),e}if(r){for(let e of r.getTracks())e.stop();r=null}let c=null;n&&(c=()=>{document.visibilityState===`visible`&&n?.released&&Ym().then(e=>{n=e})},document.addEventListener(`visibilitychange`,c));let l=s.detach;return{...s,detach:async()=>{await l(),c&&document.removeEventListener(`visibilitychange`,c);try{await n?.release(),n=null}catch{}}}}catch(e){if(r)for(let e of r.getTracks())e.stop();try{await n?.release(),n=null}catch{}throw qm(),e}}Pu(Zm);var Qm=class{audioElements=[];inputAudioContext=null;audioCaptureContext=null;async attachRemoteTrack(e,t){let n=e.attach();if(n.autoplay=!0,n.controls=!1,t&&n.setSinkId)try{await n.setSinkId(t)}catch(e){console.warn(`Failed to set output device for new audio element:`,e)}n.style.display=`none`,document.body.appendChild(n),this.audioElements.push(n)}setupInputAnalysis(e){this.inputAudioContext&&=(this.inputAudioContext.close().catch(()=>{}),null);let t=new AudioContext,n=t.createAnalyser();return t.createMediaStreamSource(new MediaStream([e])).connect(n),this.inputAudioContext=t,{volumeProvider:Cm(n,t.sampleRate),analyser:n}}async setupOutputAnalysis(e,t,n){this.audioCaptureContext&&=(this.audioCaptureContext.close().catch(()=>{}),null);let r=new AudioContext;this.audioCaptureContext=r;let i=r.createAnalyser();i.fftSize=2048,i.smoothingTimeConstant=.8;let a=new MediaStream([e.mediaStreamTrack]),o=r.createMediaStreamSource(a),s=Cm(i,r.sampleRate);await Om(r.audioWorklet);let c=new AudioWorkletNode(r,`rawAudioProcessor`);return c.port.postMessage({type:`setFormat`,format:t.format,sampleRate:t.sampleRate}),c.port.onmessage=e=>{let[t,r]=e.data;n(t.buffer,r)},o.connect(i),i.connect(c),{volumeProvider:s,analyser:i}}setVolume(e){for(let t of this.audioElements)t.volume=e}async setOutputDevice(e){if(!(`setSinkId`in HTMLAudioElement.prototype))throw Error(`setSinkId is not supported in this browser`);await Promise.all(this.audioElements.map(async t=>{try{await t.setSinkId(e)}catch(e){throw console.error(`Failed to set sink ID for audio element:`,e),e}}))}cleanup(){this.inputAudioContext&&=(this.inputAudioContext.close().catch(e=>{console.warn(`Error closing input audio context:`,e)}),null),this.audioCaptureContext&&=(this.audioCaptureContext.close().catch(e=>{console.warn(`Error closing audio capture context:`,e)}),null);for(let e of this.audioElements)e.remove();this.audioElements=[]}};function $m(){for(let e of[`fetch`,`WebSocket`,`TextEncoder`,`TextDecoder`,`URL`,`btoa`,`atob`])if(globalThis[e]===void 0)throw Error(`${e} is not available in this environment.`)}var eh=new Uint8Array,th=class e extends s{type=`text`;setVolume(){throw Error(`setVolume is not supported in text conversations`)}setMicMuted(){throw Error(`setMicMuted is not supported in text conversations`)}getInputByteFrequencyData(){return eh}getOutputByteFrequencyData(){return eh}getInputVolume(){return 0}getOutputVolume(){return 0}static async startSession(t){let n=s.getFullOptions(t);n.onStatusChange&&n.onStatusChange({status:`connecting`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1}),n.onModeChange&&n.onModeChange({mode:`listening`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1});let r=null,i=null;try{return await Fm(Pm(n.connectionDelay)),r=await Vu(n),i=new e(n,r),n.onConversationCreated?.(i),i.markConnected(),n.onConnect?.({conversationId:r.conversationId}),i}catch(e){throw i?await i.endSession().catch(()=>{}):(n.onStatusChange?.({status:`disconnected`}),r?.close()),e}}},nh=class e extends s{input;output;playbackEventTarget;cleanUp;type=`voice`;static async startSession(t){let n=s.getFullOptions(t);n.onStatusChange&&n.onStatusChange({status:`connecting`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1});let r=null,i=null;try{if(!Nu)throw Error(`No voice session setup strategy registered. Import the platform-specific entry point (e.g. @elevenlabs/client via the "browser" export).`);return i=await Nu(n),r=new e(n,i.connection,i.input,i.output,i.playbackEventTarget,i.detach),n.onConversationCreated?.(r),r.markConnected(),n.onConnect?.({conversationId:i.connection.conversationId}),r}catch(e){throw r?await r.endSession().catch(()=>{}):(i&&await i.detach().catch(()=>{}),n.onStatusChange?.({status:`disconnected`})),e}}inputFrequencyData;outputFrequencyData;handlePlaybackEvent=e=>{e.data.type===`process`&&this.updateMode(e.data.finished?`listening`:`speaking`)};constructor(e,t,n,r,i,a){super(e,t),this.input=n,this.output=r,this.playbackEventTarget=i,this.cleanUp=a,i?.addListener(this.handlePlaybackEvent)}async handleEndSession(){this.playbackEventTarget?.removeListener(this.handlePlaybackEvent),this.playbackEventTarget=null,await this.cleanUp(),await super.handleEndSession(),await this.input.close(),await this.output.close()}handleInterruption(e){super.handleInterruption(e),this.updateMode(`listening`),this.output.interrupt()}handleAudio(e){super.handleAudio(e),e.audio_event.alignment&&this.options.onAudioAlignment&&this.options.onAudioAlignment(e.audio_event.alignment),this.lastInterruptTimestamp<=e.audio_event.event_id&&(e.audio_event.audio_base_64&&this.options.onAudio?.(e.audio_event.audio_base_64),this.currentEventId=e.audio_event.event_id,this.updateCanSendFeedback(),this.updateMode(`speaking`))}static FREQUENCY_BIN_COUNT=1024;setMicMuted(e){this.input.setMuted(e).catch(e=>{this.options.onError?.(`Failed to set input muted state`,e)})}getInputByteFrequencyData(){return this.inputFrequencyData??=new Uint8Array(e.FREQUENCY_BIN_COUNT),this.input.getByteFrequencyData(this.inputFrequencyData),this.inputFrequencyData}getOutputByteFrequencyData(){return this.outputFrequencyData??=new Uint8Array(e.FREQUENCY_BIN_COUNT),this.output.getByteFrequencyData(this.outputFrequencyData),this.outputFrequencyData}getInputVolume(){return this.input.getVolume()}getOutputVolume(){return this.output.getVolume()}async changeInputDevice({sampleRate:e,format:t,preferHeadphonesForIosDevices:n,inputDeviceId:r}){try{await this.input.setDevice({inputDeviceId:r,sampleRate:e,format:t,preferHeadphonesForIosDevices:n})}catch(e){throw console.error(`Error changing input device`,e),e}}async changeOutputDevice({sampleRate:e,format:t,outputDeviceId:n}){try{await this.output.setDevice({outputDeviceId:n,sampleRate:e,format:t})}catch(e){throw console.error(`Error changing output device`,e),e}}setVolume=({volume:e})=>{let t=Number.isFinite(e)?Math.min(1,Math.max(0,e)):1;this.volume=t,this.output.setVolume(t)}},rh=`https://api.elevenlabs.io`;function ih(e,t,n=rh){let r={};return typeof t==`boolean`?r.feedback=t?`like`:`dislike`:(r.rating=t.rating,r.comment=t.comment),fetch(`${n}/v1/convai/conversations/${e}/feedback`,{method:`POST`,body:JSON.stringify(r),headers:{"Content-Type":`application/json`}})}var ah;(function(e){e.SESSION_STARTED=`session_started`,e.PARTIAL_TRANSCRIPT=`partial_transcript`,e.COMMITTED_TRANSCRIPT=`committed_transcript`,e.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS=`committed_transcript_with_timestamps`,e.AUTH_ERROR=`auth_error`,e.ERROR=`error`,e.OPEN=`open`,e.CLOSE=`close`,e.QUOTA_EXCEEDED=`quota_exceeded`,e.COMMIT_THROTTLED=`commit_throttled`,e.TRANSCRIBER_ERROR=`transcriber_error`,e.UNACCEPTED_TERMS=`unaccepted_terms`,e.RATE_LIMITED=`rate_limited`,e.INPUT_ERROR=`input_error`,e.QUEUE_OVERFLOW=`queue_overflow`,e.RESOURCE_EXHAUSTED=`resource_exhausted`,e.SESSION_TIME_LIMIT_EXCEEDED=`session_time_limit_exceeded`,e.CHUNK_SIZE_EXCEEDED=`chunk_size_exceeded`,e.INSUFFICIENT_AUDIO_ACTIVITY=`insufficient_audio_activity`})(ah||={});var oh;(function(e){e.PCM_8000=`pcm_8000`,e.PCM_16000=`pcm_16000`,e.PCM_22050=`pcm_22050`,e.PCM_24000=`pcm_24000`,e.PCM_44100=`pcm_44100`,e.PCM_48000=`pcm_48000`,e.ULAW_8000=`ulaw_8000`})(oh||={});var sh;(function(e){e.MANUAL=`manual`,e.VAD=`vad`})(sh||={});var ch={async startSession(e){return $m(),o(e)?th.startSession(e):nh.startSession(e)}};Gm(),Eu(()=>new Qm);var lh=Object.create,uh=Object.defineProperty,dh=Object.getOwnPropertyDescriptor,fh=Object.getOwnPropertyNames,ph=Object.getPrototypeOf,mh=Object.prototype.hasOwnProperty,hh=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),gh=(e,t)=>{let n={};for(var r in e)uh(n,r,{get:e[r],enumerable:!0});return t||uh(n,Symbol.toStringTag,{value:`Module`}),n},_h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=fh(t),a=0,o=i.length,s;a<o;a++)s=i[a],!mh.call(e,s)&&s!==n&&uh(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=dh(t,s))||r.enumerable});return e},vh=(e,t,n)=>(n=e==null?{}:lh(ph(e)),_h(t||!e||!e.__esModule?uh(n,`default`,{value:e,enumerable:!0}):n,e)),yh=`0.14.2`;function bh(e){return e?e===`true`?!0:e===`false`?!1:null:null}var xh=`variant.placement.override-config.avatar-image-url.avatar-orb-color-1.avatar-orb-color-2.agent-id.signed-url.terms-key.server-location.language.dynamic-variables.show-avatar-when-collapsed.override-prompt.override-llm.override-speed.override-stability.override-similarity-boost.override-first-message.override-language.override-voice-id.override-text-only.mic-muting.transcript.text-input.text-contents.default-expanded.always-expanded.dismissible.strip-audio-tags.user-id.use-rtc.collect-feedback.worklet-path-raw-audio-processor.worklet-path-audio-concat-processor.worklet-path-libsamplerate.syntax-highlight-theme.markdown-link-allowed-hosts.markdown-link-include-www.markdown-link-allow-http.allow-events.show-agent-status.show-conversation-id.environment`.split(`.`),Sh=`@import "https://fonts.googleapis.com/css2?family=Inter:wght@400,500&display=swap";@layer components;@layer properties{@media all {*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:host,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.\\!visible{visibility:visible!important}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.start-3{inset-inline-start:12px}.end-3{inset-inline-end:12px}.top-0{top:0}.top-1{top:4px}.top-1\\/2{top:50%}.top-4{top:16px}.top-16{top:64px}.top-20{top:80px}.top-\\[40\\%\\]{top:40%}.top-\\[88px\\]{top:88px}.right-0{right:0}.right-1{right:4px}.right-1\\.5{right:6px}.-bottom-3{bottom:-12px}.bottom-0{bottom:0}.bottom-20{bottom:80px}.left-0{left:0}.left-1\\/2{left:50%}.left-4{left:16px}.z-1{z-index:1}.z-2{z-index:2}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.m-1{margin:4px}.-mx-0\\.5{margin-inline:-2px}.mx-1{margin-inline:4px}.-my-4{margin-block:-16px}.my-4{margin-block:16px}.my-6{margin-block:24px}.ms-auto{margin-inline-start:auto}.\\!mt-0{margin-top:0!important}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.-mr-1\\.5{margin-right:-6px}.mb-0\\.5{margin-bottom:2px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.ml-4{margin-left:16px}.ml-auto{margin-left:auto}.\\!flex{display:flex!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.\\[field-sizing\\:content\\],.field-sizing-content{field-sizing:content}.h-4{height:16px}.h-5{height:20px}.h-6{height:24px}.h-7{height:28px}.h-8{height:32px}.h-9{height:36px}.h-11{height:44px}.h-12{height:48px}.h-16{height:64px}.h-48{height:192px}.h-full{height:100%}.h-screen{height:100vh}.max-h-\\[50\\%\\]{max-height:50%}.max-h-\\[min\\(384px\\,var\\(--radix-select-content-available-height\\)\\)\\]{max-height:min(384px, var(--radix-select-content-available-height))}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-11{min-height:44px}.min-h-\\[6lh\\]{min-height:6lh}.min-h-full{min-height:100%}.min-h-min{min-height:min-content}.w-1\\/2{width:50%}.w-4{width:16px}.w-5{width:20px}.w-6{width:24px}.w-8{width:32px}.w-9{width:36px}.w-11{width:44px}.w-12{width:48px}.w-20{width:80px}.w-48{width:192px}.w-full{width:100%}.w-screen{width:100vw}.max-w-64{max-width:256px}.max-w-\\[180px\\]{max-width:180px}.max-w-\\[220px\\]{max-width:220px}.max-w-\\[400px\\]{max-width:400px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-9{min-width:36px}.min-w-60{min-width:240px}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.min-w-max{min-width:max-content}.min-w-min{min-width:min-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-bottom-left{transform-origin:0 100%}.origin-bottom-right{transform-origin:100% 100%}.origin-top{transform-origin:top}.origin-top-left{transform-origin:0 0}.origin-top-right{transform-origin:100% 0}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-\\[calc\\(var\\(--el-overlay-padding\\)\\)\\]{--tw-translate-y:calc(calc(var(--el-overlay-padding)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\\/2{--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\\[calc\\(var\\(--el-overlay-padding\\)\\)\\]{--tw-translate-y:calc(var(--el-overlay-padding));translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-150{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\\[0\\.1667\\]{scale:.1667}.-rotate-90{rotate:-90deg}.-rotate-180{rotate:-180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-outside{list-style-position:outside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.place-content-center{place-content:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:4px}.gap-1\\.5{gap:6px}.gap-2{gap:8px}.gap-2\\.5{gap:10px}.gap-3{gap:12px}.gap-6{gap:24px}.gap-8{gap:32px}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(12px * var(--tw-space-y-reverse));margin-block-end:calc(12px * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-base-border>:not(:last-child)){border-color:var(--el-base-border)}.self-auto{align-self:auto}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[calc\\(var\\(--el-button-radius\\)\\+4px\\)\\]{border-radius:calc(var(--el-button-radius) + 4px)}.rounded-\\[calc\\(var\\(--el-sheet-radius\\)-8px\\)\\]{border-radius:calc(var(--el-sheet-radius) - 8px)}.rounded-bubble{border-radius:var(--el-bubble-radius)}.rounded-button{border-radius:var(--el-button-radius)}.rounded-compact-sheet{border-radius:var(--el-compact-sheet-radius)}.rounded-dropdown-sheet{border-radius:var(--el-dropdown-sheet-radius)}.rounded-full{border-radius:9999px}.rounded-input{border-radius:var(--el-input-radius)}.rounded-sheet{border-radius:var(--el-sheet-radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-accent{border-color:var(--el-accent)}.border-audio-tag\\/20{border-color:hsl(var(--el-audio-tag) / 1)}@supports (color:color-mix(in lab, red, red)){.border-audio-tag\\/20{border-color:color-mix(in oklab, hsl(var(--el-audio-tag) / 1) 20%, transparent)}}.border-base{border-color:var(--el-base)}.border-base-border,.border-base-border\\/60{border-color:var(--el-base-border)}@supports (color:color-mix(in lab, red, red)){.border-base-border\\/60{border-color:color-mix(in oklab, var(--el-base-border) 60%, transparent)}}.border-base-error\\/30{border-color:var(--el-base-error)}@supports (color:color-mix(in lab, red, red)){.border-base-error\\/30{border-color:color-mix(in oklab, var(--el-base-error) 30%, transparent)}}.border-base-subtle\\/30{border-color:var(--el-base-subtle)}@supports (color:color-mix(in lab, red, red)){.border-base-subtle\\/30{border-color:color-mix(in oklab, var(--el-base-subtle) 30%, transparent)}}.bg-accent{background-color:var(--el-accent)}.bg-base{background-color:var(--el-base)}.bg-base-active,.bg-base-active\\/40{background-color:var(--el-base-active)}@supports (color:color-mix(in lab, red, red)){.bg-base-active\\/40{background-color:color-mix(in oklab, var(--el-base-active) 40%, transparent)}}.bg-base-active\\/80{background-color:var(--el-base-active)}@supports (color:color-mix(in lab, red, red)){.bg-base-active\\/80{background-color:color-mix(in oklab, var(--el-base-active) 80%, transparent)}}.bg-base-border{background-color:var(--el-base-border)}.bg-base-error\\/5{background-color:var(--el-base-error)}@supports (color:color-mix(in lab, red, red)){.bg-base-error\\/5{background-color:color-mix(in oklab, var(--el-base-error) 5%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-base{--tw-gradient-from:var(--el-base);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\\[mask-image\\:linear-gradient\\(to_bottom\\,black\\,transparent\\)\\]{-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}.\\[mask-image\\:linear-gradient\\(to_top\\,black\\,transparent\\)\\]{-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.bg-cover{background-size:cover}.object-cover{object-fit:cover}.p-1{padding:4px}.p-1\\.5{padding:6px}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.px-1{padding-inline:4px}.px-1\\.5{padding-inline:6px}.px-2{padding-inline:8px}.px-2\\.5{padding-inline:10px}.px-3{padding-inline:12px}.px-4{padding-inline:16px}.px-8{padding-inline:32px}.py-0\\.5{padding-block:2px}.py-1{padding-block:4px}.py-1\\.5{padding-block:6px}.py-2{padding-block:8px}.py-2\\.5{padding-block:10px}.py-4{padding-block:16px}.py-\\[calc\\(theme\\(spacing\\.2\\)-1px\\)\\]{padding-block:7px}.py-px{padding-block:1px}.pt-1{padding-top:4px}.pt-1\\.5{padding-top:6px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.pt-4{padding-top:16px}.pt-20{padding-top:80px}.pr-3{padding-right:12px}.pr-7{padding-right:28px}.pr-8{padding-right:32px}.pr-16{padding-right:64px}.pb-1{padding-bottom:4px}.pb-1\\.5{padding-bottom:6px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pb-4{padding-bottom:16px}.pb-\\[60px\\]{padding-bottom:60px}.pl-1\\.5{padding-left:6px}.pl-4{padding-left:16px}.pl-16{padding-left:64px}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:18px;line-height:var(--tw-leading,26px)}.text-md{font-size:16px;line-height:var(--tw-leading,24px)}.text-sm{font-size:14px;line-height:var(--tw-leading,20px)}.text-xl{font-size:20px;line-height:var(--tw-leading,28px)}.text-xs{font-size:12px;line-height:var(--tw-leading,16px)}.text-\\[10px\\]{font-size:10px}.text-\\[13px\\]{font-size:13px}.leading-4{--tw-leading:16px;line-height:16px}.leading-5{--tw-leading:20px;line-height:20px}.\\[line-height\\:var\\(--el-overlay-padding\\)\\]{line-height:var(--el-overlay-padding)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-primary{color:var(--el-accent-primary)}.text-audio-tag{color:hsl(var(--el-audio-tag) / 1)}.text-base-border{color:var(--el-base-border)}.text-base-error{color:var(--el-base-error)}.text-base-primary{color:var(--el-base-primary)}.text-base-subtle{color:var(--el-base-subtle)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-header{--tw-shadow:0 0 1px 0 var(--tw-shadow-color,#0006), 0 2px 2px 0 var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 2px 40px 1px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 24px 1px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-scroll-fade-bottom{--tw-shadow:0 8px 16px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-scroll-fade-top{--tw-shadow:0 -8px 16px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent{--tw-ring-color:var(--el-accent)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[1px\\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[border-radius\\]{transition-property:border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[colors\\,opacity\\]{transition-property:colors,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[margin\\]{transition-property:margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,width\\,height\\,transform\\,flex-grow\\]{transition-property:opacity,width,height,transform,flex-grow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\]{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,left\\,top\\,opacity\\,scale\\]{transition-property:transform,left,top,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\,height\\,max-width\\,max-height\\,transform\\,border-radius\\,opacity\\,inset\\,bottom\\,top\\,left\\,right\\,margin\\,padding\\]{transition-property:width,height,max-width,max-height,transform,border-radius,opacity,inset,bottom,top,left,right,margin,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\\:pointer-events-auto:is(:where(.group):focus-within *){pointer-events:auto}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-base-subtle::placeholder{color:var(--el-base-subtle)}.first\\:mt-0:first-child,:is(.\\*\\:first\\:mt-0>*):first-child{margin-top:0}.last\\:mb-0:last-child,:is(.\\*\\:last\\:mb-0>*):last-child{margin-bottom:0}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:border-accent-hover:hover{border-color:var(--el-accent-hover)}.hover\\:border-base-hover:hover{border-color:var(--el-base-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--el-accent-hover)}.hover\\:bg-base-hover:hover{background-color:var(--el-base-hover)}.hover\\:text-base-primary:hover{color:var(--el-base-primary)}.hover\\:opacity-50:hover{opacity:.5}.hover\\:opacity-100:hover{opacity:1}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:underline-offset-2:focus-visible{text-underline-offset:2px}.focus-visible\\:opacity-100:focus-visible{opacity:1}.focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:border-accent-active:active{border-color:var(--el-accent-active)}.active\\:border-base-active:active{border-color:var(--el-base-active)}.active\\:bg-accent-active:active{background-color:var(--el-accent-active)}.active\\:bg-base-active:active{background-color:var(--el-base-active)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.data-hidden\\:translate-x-full[data-shown=false]{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:-translate-y-4[data-shown=false]{--tw-translate-y:calc(16px * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:translate-y-2[data-shown=false]{--tw-translate-y:8px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:scale-75[data-shown=false]{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:scale-90[data-shown=false]{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:scale-100[data-shown=false]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:opacity-0[data-shown=false]{opacity:0}.data-highlighted\\:bg-base-active[data-highlighted]{background-color:var(--el-base-active)}.overlay{inset:var(--el-overlay-padding);right:calc(var(--el-overlay-padding) + var(--removed-body-scroll-bar-size,0px));position:absolute}.focus-ring{--tw-ring-color:var(--el-accent);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-offset-color:var(--el-base)}.focus-ring:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-outline-style:none;outline-style:none}[data-variant=compact].sheet{border-radius:var(--el-sheet-radius);width:100%;max-width:400px;height:calc(100% - 80px);max-height:550px}[data-variant=expanded].sheet{border-radius:var(--el-sheet-radius);width:100%;max-width:600px;height:100%;max-height:calc(100% - 80px)}[data-variant=fullscreen].sheet{width:100%;max-width:100dvw;height:100%;max-height:100dvh;margin:calc(-1 * var(--el-overlay-padding));width:calc(100% + 2 * var(--el-overlay-padding));height:calc(100% + 2 * var(--el-overlay-padding));border-radius:0;padding-bottom:24px;bottom:0}.animate-text{background-image:linear-gradient(75deg, var(--el-base-primary), var(--el-base-subtle), var(--el-base-primary), var(--el-base-subtle));color:#0000;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite TextAnimation}@keyframes TextAnimation{0%{background-position:0 0}to{background-position:100% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.terms h6{font-size:12px;line-height:var(--tw-leading,16px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h5{font-size:14px;line-height:var(--tw-leading,20px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h4{font-size:16px;line-height:var(--tw-leading,24px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h3{font-size:18px;line-height:var(--tw-leading,26px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h2{font-size:20px;line-height:var(--tw-leading,28px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h1{font-size:24px;line-height:var(--tw-leading,30px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}}.dev-host,:host{--el-audio-tag:293 53% 52%;pointer-events:none;z-index:1000;font-size:16px;line-height:var(--tw-leading,24px);color:var(--el-base-primary);scrollbar-color:#e5e7eb transparent;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;position:fixed;inset:0}:is(.dev-host,:host) button{margin:0}.markdown{text-autospace:normal;text-spacing-trim:trim-start}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{word-break:auto-phrase}.tok-comment,.tok-meta{color:#6a737d}.tok-keyword{color:#d73a49}.tok-atom,.tok-bool,.tok-literal,.tok-number{color:#005cc5}.tok-string,.tok-string2{color:#032f62}.tok-variableName{color:#24292e}.tok-variableName.tok-definition{color:#6f42c1}.tok-variableName.tok-local{color:#24292e}.tok-variableName2,.tok-macroName,.tok-typeName,.tok-namespace,.tok-className{color:#6f42c1}.tok-propertyName{color:#24292e}.tok-propertyName.tok-definition{color:#005cc5}.tok-labelName{color:#22863a}.tok-url,.tok-link{color:#032f62;text-decoration:underline}.tok-operator{color:#d73a49}.tok-punctuation{color:#24292e}.tok-invalid{color:#b31d28}.tok-deleted{color:#b31d28;background-color:#ffeef0}.tok-inserted{color:#22863a;background-color:#f0fff4}.tok-heading{color:#005cc5;font-weight:700}.tok-emphasis{color:#24292e;font-style:italic}.tok-strong{color:#24292e;font-weight:700}.tok-strikethrough{text-decoration:line-through}.tok-monospace{color:#005cc5}.tok-processingInstruction,[data-syntax-theme=dark] .tok-comment,[data-syntax-theme=dark] .tok-meta{color:#6a737d}[data-syntax-theme=dark] .tok-keyword{color:#f97583}[data-syntax-theme=dark] .tok-atom,[data-syntax-theme=dark] .tok-bool,[data-syntax-theme=dark] .tok-literal,[data-syntax-theme=dark] .tok-number,[data-syntax-theme=dark] .tok-propertyName.tok-definition{color:#79b8ff}[data-syntax-theme=dark] .tok-string,[data-syntax-theme=dark] .tok-string2{color:#9ecbff}[data-syntax-theme=dark] .tok-url,[data-syntax-theme=dark] .tok-link{color:#dbedff}[data-syntax-theme=dark] .tok-variableName,[data-syntax-theme=dark] .tok-variableName.tok-local,[data-syntax-theme=dark] .tok-propertyName,[data-syntax-theme=dark] .tok-emphasis,[data-syntax-theme=dark] .tok-strong{color:#e1e4e8}[data-syntax-theme=dark] .tok-variableName.tok-definition,[data-syntax-theme=dark] .tok-variableName2,[data-syntax-theme=dark] .tok-macroName,[data-syntax-theme=dark] .tok-typeName,[data-syntax-theme=dark] .tok-namespace,[data-syntax-theme=dark] .tok-className{color:#b392f0}[data-syntax-theme=dark] .tok-labelName{color:#85e89d}[data-syntax-theme=dark] .tok-invalid{color:#fdaeb7}[data-syntax-theme=dark] .tok-deleted{color:#fdaeb7;background-color:#86181d}[data-syntax-theme=dark] .tok-inserted{color:#85e89d;background-color:#144620}[data-syntax-theme=dark] .tok-heading{color:#79b8ff}[data-syntax-theme=dark] .tok-operator{color:#f97583}[data-syntax-theme=dark] .tok-punctuation{color:#e1e4e8}[data-syntax-theme=dark] .tok-monospace{color:#79b8ff}[data-syntax-theme=dark] .tok-processingInstruction{color:#6a737d}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}`;function Ch(e,t){Th(e)&&(e=`100%`);let n=Eh(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(e=t===360?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t)),e)}function wh(e){return Math.min(1,Math.max(0,e))}function Th(e){return typeof e==`string`&&e.indexOf(`.`)!==-1&&parseFloat(e)===1}function Eh(e){return typeof e==`string`&&e.indexOf(`%`)!==-1}function Dh(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Oh(e){return Number(e)<=1?`${Number(e)*100}%`:e}function kh(e){return e.length===1?`0`+e:String(e)}function Ah(e,t,n){return{r:Ch(e,255)*255,g:Ch(t,255)*255,b:Ch(n,255)*255}}function jh(e,t,n){e=Ch(e,255),t=Ch(t,255),n=Ch(n,255);let r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=0,s=(r+i)/2;if(r===i)o=0,a=0;else{let c=r-i;switch(o=s>.5?c/(2-r-i):c/(r+i),r){case e:a=(t-n)/c+(t<n?6:0);break;case t:a=(n-e)/c+2;break;case n:a=(e-t)/c+4;break;default:break}a/=6}return{h:a,s:o,l:s}}function Mh(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Nh(e,t,n){let r,i,a;if(e=Ch(e,360),t=Ch(t,100),n=Ch(n,100),t===0)i=n,a=n,r=n;else{let o=n<.5?n*(1+t):n+t-n*t,s=2*n-o;r=Mh(s,o,e+1/3),i=Mh(s,o,e),a=Mh(s,o,e-1/3)}return{r:r*255,g:i*255,b:a*255}}function Ph(e,t,n){e=Ch(e,255),t=Ch(t,255),n=Ch(n,255);let r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=r,s=r-i,c=r===0?0:s/r;if(r===i)a=0;else{switch(r){case e:a=(t-n)/s+(t<n?6:0);break;case t:a=(n-e)/s+2;break;case n:a=(e-t)/s+4;break;default:break}a/=6}return{h:a,s:c,v:o}}function Fh(e,t,n){e=Ch(e,360)*6,t=Ch(t,100),n=Ch(n,100);let r=Math.floor(e),i=e-r,a=n*(1-t),o=n*(1-i*t),s=n*(1-(1-i)*t),c=r%6,l=[n,o,a,a,s,n][c],u=[s,n,n,o,a,a][c],d=[a,a,s,n,n,o][c];return{r:l*255,g:u*255,b:d*255}}function Ih(e,t,n,r){let i=[kh(Math.round(e).toString(16)),kh(Math.round(t).toString(16)),kh(Math.round(n).toString(16))];return r&&i[0].startsWith(i[0].charAt(1))&&i[1].startsWith(i[1].charAt(1))&&i[2].startsWith(i[2].charAt(1))?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(``)}function Lh(e,t,n,r,i){let a=[kh(Math.round(e).toString(16)),kh(Math.round(t).toString(16)),kh(Math.round(n).toString(16)),kh(Bh(r))];return i&&a[0].startsWith(a[0].charAt(1))&&a[1].startsWith(a[1].charAt(1))&&a[2].startsWith(a[2].charAt(1))&&a[3].startsWith(a[3].charAt(1))?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join(``)}function Rh(e,t,n,r){let i=e/100,a=t/100,o=n/100,s=r/100;return{r:255*(1-i)*(1-s),g:255*(1-a)*(1-s),b:255*(1-o)*(1-s)}}function zh(e,t,n){let r=1-e/255,i=1-t/255,a=1-n/255,o=Math.min(r,i,a);return o===1?(r=0,i=0,a=0):(r=(r-o)/(1-o)*100,i=(i-o)/(1-o)*100,a=(a-o)/(1-o)*100),o*=100,{c:Math.round(r),m:Math.round(i),y:Math.round(a),k:Math.round(o)}}function Bh(e){return Math.round(parseFloat(e)*255).toString(16)}function Vh(e){return Hh(e)/255}function Hh(e){return parseInt(e,16)}function Uh(e){return{r:e>>16,g:(e&65280)>>8,b:e&255}}var Wh={aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyan:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,goldenrod:`#daa520`,gold:`#ffd700`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,lavenderblush:`#fff0f5`,lavender:`#e6e6fa`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,steelblue:`#4682b4`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,tomato:`#ff6347`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`};function Gh(e){let t={r:0,g:0,b:0},n=1,r=null,i=null,a=null,o=!1,s=!1;return typeof e==`string`&&(e=Xh(e)),typeof e==`object`&&(Zh(e.r)&&Zh(e.g)&&Zh(e.b)?(t=Ah(e.r,e.g,e.b),o=!0,s=String(e.r).substr(-1)===`%`?`prgb`:`rgb`):Zh(e.h)&&Zh(e.s)&&Zh(e.v)?(r=Oh(e.s),i=Oh(e.v),t=Fh(e.h,r,i),o=!0,s=`hsv`):Zh(e.h)&&Zh(e.s)&&Zh(e.l)?(r=Oh(e.s),a=Oh(e.l),t=Nh(e.h,r,a),o=!0,s=`hsl`):Zh(e.c)&&Zh(e.m)&&Zh(e.y)&&Zh(e.k)&&(t=Rh(e.c,e.m,e.y,e.k),o=!0,s=`cmyk`),Object.prototype.hasOwnProperty.call(e,`a`)&&(n=e.a)),n=Dh(n),{ok:o,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Kh=`(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)`,qh=`[\\s|\\(]+(`+Kh+`)[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?`,Jh=`[\\s|\\(]+(`+Kh+`)[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?`,Yh={CSS_UNIT:new RegExp(Kh),rgb:RegExp(`rgb`+qh),rgba:RegExp(`rgba`+Jh),hsl:RegExp(`hsl`+qh),hsla:RegExp(`hsla`+Jh),hsv:RegExp(`hsv`+qh),hsva:RegExp(`hsva`+Jh),cmyk:RegExp(`cmyk`+Jh),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Xh(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;let t=!1;if(Wh[e])e=Wh[e],t=!0;else if(e===`transparent`)return{r:0,g:0,b:0,a:0,format:`name`};let n=Yh.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=Yh.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=Yh.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=Yh.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=Yh.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=Yh.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=Yh.cmyk.exec(e),n?{c:n[1],m:n[2],y:n[3],k:n[4]}:(n=Yh.hex8.exec(e),n?{r:Hh(n[1]),g:Hh(n[2]),b:Hh(n[3]),a:Vh(n[4]),format:t?`name`:`hex8`}:(n=Yh.hex6.exec(e),n?{r:Hh(n[1]),g:Hh(n[2]),b:Hh(n[3]),format:t?`name`:`hex`}:(n=Yh.hex4.exec(e),n?{r:Hh(n[1]+n[1]),g:Hh(n[2]+n[2]),b:Hh(n[3]+n[3]),a:Vh(n[4]+n[4]),format:t?`name`:`hex8`}:(n=Yh.hex3.exec(e),n?{r:Hh(n[1]+n[1]),g:Hh(n[2]+n[2]),b:Hh(n[3]+n[3]),format:t?`name`:`hex`}:!1))))))))))}function Zh(e){return typeof e==`number`?!Number.isNaN(e):Yh.CSS_UNIT.test(e)}var Qh=class e{constructor(t=``,n={}){if(t instanceof e)return t;typeof t==`number`&&(t=Uh(t)),this.originalInput=t;let r=Gh(t);this.originalInput=t,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=n.format??r.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}isDark(){return this.getBrightness()<128}isLight(){return!this.isDark()}getBrightness(){let e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3}getLuminance(){let e=this.toRgb(),t,n,r,i=e.r/255,a=e.g/255,o=e.b/255;return t=i<=.03928?i/12.92:((i+.055)/1.055)**2.4,n=a<=.03928?a/12.92:((a+.055)/1.055)**2.4,r=o<=.03928?o/12.92:((o+.055)/1.055)**2.4,.2126*t+.7152*n+.0722*r}getAlpha(){return this.a}setAlpha(e){return this.a=Dh(e),this.roundA=Math.round(100*this.a)/100,this}isMonochrome(){let{s:e}=this.toHsl();return e===0}toHsv(){let e=Ph(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}}toHsvString(){let e=Ph(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.v*100);return this.a===1?`hsv(${t}, ${n}%, ${r}%)`:`hsva(${t}, ${n}%, ${r}%, ${this.roundA})`}toHsl(){let e=jh(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}}toHslString(){let e=jh(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.l*100);return this.a===1?`hsl(${t}, ${n}%, ${r}%)`:`hsla(${t}, ${n}%, ${r}%, ${this.roundA})`}toHex(e=!1){return Ih(this.r,this.g,this.b,e)}toHexString(e=!1){return`#`+this.toHex(e)}toHex8(e=!1){return Lh(this.r,this.g,this.b,this.a,e)}toHex8String(e=!1){return`#`+this.toHex8(e)}toHexShortString(e=!1){return this.a===1?this.toHexString(e):this.toHex8String(e)}toRgb(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}}toRgbString(){let e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return this.a===1?`rgb(${e}, ${t}, ${n})`:`rgba(${e}, ${t}, ${n}, ${this.roundA})`}toPercentageRgb(){let e=e=>`${Math.round(Ch(e,255)*100)}%`;return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}}toPercentageRgbString(){let e=e=>Math.round(Ch(e,255)*100);return this.a===1?`rgb(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%)`:`rgba(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%, ${this.roundA})`}toCmyk(){return{...zh(this.r,this.g,this.b)}}toCmykString(){let{c:e,m:t,y:n,k:r}=zh(this.r,this.g,this.b);return`cmyk(${e}, ${t}, ${n}, ${r})`}toName(){if(this.a===0)return`transparent`;if(this.a<1)return!1;let e=`#`+Ih(this.r,this.g,this.b,!1);for(let[t,n]of Object.entries(Wh))if(e===n)return t;return!1}toString(e){let t=!!e;e??=this.format;let n=!1,r=this.a<1&&this.a>=0;return!t&&r&&(e.startsWith(`hex`)||e===`name`)?e===`name`&&this.a===0?this.toName():this.toRgbString():(e===`rgb`&&(n=this.toRgbString()),e===`prgb`&&(n=this.toPercentageRgbString()),(e===`hex`||e===`hex6`)&&(n=this.toHexString()),e===`hex3`&&(n=this.toHexString(!0)),e===`hex4`&&(n=this.toHex8String(!0)),e===`hex8`&&(n=this.toHex8String()),e===`name`&&(n=this.toName()),e===`hsl`&&(n=this.toHslString()),e===`hsv`&&(n=this.toHsvString()),e===`cmyk`&&(n=this.toCmykString()),n||this.toHexString())}toNumber(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)}clone(){return new e(this.toString())}lighten(t=10){let n=this.toHsl();return n.l+=t/100,n.l=wh(n.l),new e(n)}brighten(t=10){let n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)}darken(t=10){let n=this.toHsl();return n.l-=t/100,n.l=wh(n.l),new e(n)}tint(e=10){return this.mix(`white`,e)}shade(e=10){return this.mix(`black`,e)}desaturate(t=10){let n=this.toHsl();return n.s-=t/100,n.s=wh(n.s),new e(n)}saturate(t=10){let n=this.toHsl();return n.s+=t/100,n.s=wh(n.s),new e(n)}greyscale(){return this.desaturate(100)}spin(t){let n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)}mix(t,n=50){let r=this.toRgb(),i=new e(t).toRgb(),a=n/100;return new e({r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a})}analogous(t=6,n=30){let r=this.toHsl(),i=360/n,a=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,a.push(new e(r));return a}complement(){let t=this.toHsl();return t.h=(t.h+180)%360,new e(t)}monochromatic(t=6){let n=this.toHsv(),{h:r}=n,{s:i}=n,{v:a}=n,o=[],s=1/t;for(;t--;)o.push(new e({h:r,s:i,v:a})),a=(a+s)%1;return o}splitcomplement(){let t=this.toHsl(),{h:n}=t;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]}onBackground(t){let n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})}triad(){return this.polyad(3)}tetrad(){return this.polyad(4)}polyad(t){let n=this.toHsl(),{h:r}=n,i=[this],a=360/t;for(let o=1;o<t;o++)i.push(new e({h:(r+o*a)%360,s:n.s,l:n.l}));return i}equals(t){let n=new e(t);return this.format===`cmyk`||n.format===`cmyk`?this.toCmykString()===n.toCmykString():this.toRgbString()===n.toRgbString()}},$h=[`tiny`,`compact`,`full`];function eg(e){return $h.includes(e)?e:$h[0]}var tg=[`top-left`,`top`,`top-right`,`bottom-left`,`bottom`,`bottom-right`];function ng(e){return tg.includes(e)?e:`bottom-right`}var rg={main_label:`Need help?`,start_call:`Start a call`,start_chat:`Message`,send_message:`Send`,new_call:`New call`,end_call:`End`,mute_microphone:`Mute microphone`,text_mode:`Switch to text mode`,voice_mode:`Switch to voice mode`,switched_to_text_mode:`Switched to text mode`,switched_to_voice_mode:`Switched to voice mode`,change_language:`Change language`,collapse:`Collapse`,expand:`Expand`,copied:`Copied!`,accept_terms:`Accept`,dismiss_terms:`Cancel`,listening_status:`Listening`,speaking_status:`Talk to interrupt`,connecting_status:`Connecting`,chatting_status:`Chatting with AI Agent`,input_label:`Text message input`,input_placeholder:`Send a message...`,input_placeholder_text_only:`Send a message...`,input_placeholder_new_conversation:`Start a new conversation`,user_ended_conversation:`You ended the conversation`,agent_ended_conversation:`The agent ended the conversation`,conversation_id:`ID`,error_occurred:`An error occurred`,copy_id:`Copy ID`,initiate_feedback:`How was this conversation?`,request_follow_up_feedback:`Tell us more`,thanks_for_feedback:`Thank you for your feedback!`,thanks_for_feedback_details:`Your feedback helps us improve our service and better support you in the future.`,follow_up_feedback_placeholder:`Tell us more about your experience...`,submit:`Submit`,go_back:`Go back`,copy:`Copy`,download:`Download`,wrap:`Wrap`,agent_working:`Working...`,agent_done:`Completed`,agent_error:`Error occurred`,attach_file:`Attach file`,remove_file:`Remove file`,file_upload_error:`Failed to upload file.`,file_type_unsupported:`Unsupported file type. Accepted types:`,file_too_large:`File size exceeds the maximum limit.`,file_limit_reached:`Maximum number of files for this conversation reached.`,typing_indicator:`Agent is typing ...`},ig=Object.keys(rg),ag={base:`#ffffff`,base_hover:`#f9fafb`,base_active:`#f3f4f6`,base_border:`#e5e7eb`,base_subtle:`#6b7280`,base_primary:`#000000`,base_error:`#ef4444`,accent:`#000000`,accent_hover:`#1f2937`,accent_active:`#374151`,accent_border:`#4b5563`,accent_subtle:`#6b7280`,accent_primary:`#ffffff`,overlay_padding:32,button_radius:18,input_radius:10,bubble_radius:15,sheet_radius:`calc(var(--el-button-radius) + 6px)`,compact_sheet_radius:`calc(var(--el-button-radius) + 12px)`,dropdown_sheet_radius:`calc(var(--el-input-radius) + 6px)`},og=Object.keys(ag);function sg(e=`us`){switch(e){case`eu-residency`:case`in-residency`:case`us`:case`global`:return e;default:return console.warn(`[ConversationalAI] Invalid server-location: ${e}. Defaulting to "us"`),`us`}}function cg(e){let t=hf(e);if(t==null)throw Error(`${e.displayName} cannot be used outside of provider`);return t}var lg=Fd(null);function ug({value:e,children:t}){let n=mf(()=>Object.fromEntries(xh.map(t=>[t,Vp(e[t])])),[]);return xh.forEach(t=>{n[t].value=e[t]}),R(lg.Provider,{value:n,children:t})}function dg(){return cg(lg)}function fg(e){return dg()[e]}var pg=Fd(null);function mg({children:e}){let t=fg(`server-location`),n=mf(()=>{let e=Kp(()=>sg(t.value)),n={us:`https://api.us.elevenlabs.io`,"eu-residency":`https://api.eu.residency.elevenlabs.io`,"in-residency":`https://api.in.residency.elevenlabs.io`,global:`https://api.elevenlabs.io`},r={us:`wss://api.us.elevenlabs.io`,"eu-residency":`wss://api.eu.residency.elevenlabs.io`,"in-residency":`wss://api.in.residency.elevenlabs.io`,global:`wss://api.elevenlabs.io`};return{location:e,serverUrl:Kp(()=>n[e.value]),webSocketUrl:Kp(()=>r[e.value])}},[]);return R(pg.Provider,{value:n,children:e})}function hg(){return cg(pg)}var gg={en:{name:`English`,flagCode:`us`,languageCode:`en`},zh:{name:`中文`,flagCode:`cn`,languageCode:`zh`},es:{name:`Español`,flagCode:`es`,languageCode:`es`},hi:{name:`हिन्दी`,flagCode:`in`,languageCode:`hi`},pt:{name:`Português (Portugal)`,flagCode:`pt`,languageCode:`pt`},"pt-br":{name:`Português (Brasil)`,flagCode:`br`,languageCode:`pt-br`},fr:{name:`Français`,flagCode:`fr`,languageCode:`fr`},de:{name:`Deutsch`,flagCode:`de`,languageCode:`de`},ja:{name:`日本語`,flagCode:`jp`,languageCode:`ja`},ar:{name:`العربية`,flagCode:`ae`,languageCode:`ar`},ru:{name:`Русский`,flagCode:`ru`,languageCode:`ru`},ko:{name:`한국어`,flagCode:`kr`,languageCode:`ko`},id:{name:`Bahasa Indonesia`,flagCode:`id`,languageCode:`id`},it:{name:`Italiano`,flagCode:`it`,languageCode:`it`},nl:{name:`Nederlands`,flagCode:`nl`,languageCode:`nl`},tr:{name:`Türkçe`,flagCode:`tr`,languageCode:`tr`},pl:{name:`Polski`,flagCode:`pl`,languageCode:`pl`},sv:{name:`Svenska`,flagCode:`se`,languageCode:`sv`},ms:{name:`Bahasa Melayu`,flagCode:`my`,languageCode:`ms`},ro:{name:`Română`,flagCode:`ro`,languageCode:`ro`},uk:{name:`Українська`,flagCode:`ua`,languageCode:`uk`},el:{name:`Ελληνικά`,flagCode:`gr`,languageCode:`el`},cs:{name:`Čeština`,flagCode:`cz`,languageCode:`cs`},da:{name:`Dansk`,flagCode:`dk`,languageCode:`da`},fi:{name:`Suomi`,flagCode:`fi`,languageCode:`fi`},bg:{name:`Български`,flagCode:`bg`,languageCode:`bg`},hr:{name:`Hrvatski`,flagCode:`hr`,languageCode:`hr`},sk:{name:`Slovenčina`,flagCode:`sk`,languageCode:`sk`},ta:{name:`தமிழ்`,flagCode:`in`,languageCode:`ta`},hu:{name:`Magyar`,flagCode:`hu`,languageCode:`hu`},no:{name:`Norsk`,flagCode:`no`,languageCode:`no`},vi:{name:`Tiếng Việt`,flagCode:`vn`,languageCode:`vi`},tl:{name:`Filipino`,flagCode:`ph`,languageCode:`tl`},af:{name:`Afrikaans`,flagCode:`za`,languageCode:`af`},hy:{name:`Հայերեն`,flagCode:`am`,languageCode:`hy`},as:{name:`অসমীয়া`,flagCode:`in`,languageCode:`as`},az:{name:`Azərbaycan`,flagCode:`az`,languageCode:`az`},be:{name:`Беларуская`,flagCode:`by`,languageCode:`be`},bn:{name:`বাংলা`,flagCode:`in`,languageCode:`bn`},bs:{name:`Bosanski`,flagCode:`ba`,languageCode:`bs`},ca:{name:`Català`,flagCode:`es-ct`,languageCode:`ca`},et:{name:`Eesti`,flagCode:`ee`,languageCode:`et`},gl:{name:`Galego`,flagCode:`es-ga`,languageCode:`gl`},ka:{name:`ქართული`,flagCode:`ge`,languageCode:`ka`},gu:{name:`ગુજરાતી`,flagCode:`in`,languageCode:`gu`},ha:{name:`Hausa`,flagCode:`ng`,languageCode:`ha`},he:{name:`עברית`,flagCode:`il`,languageCode:`he`},is:{name:`Íslenska`,flagCode:`is`,languageCode:`is`},ga:{name:`Gaeilge`,flagCode:`ie`,languageCode:`ga`},jv:{name:`Basa Jawa`,flagCode:`id`,languageCode:`jv`},kn:{name:`ಕನ್ನಡ`,flagCode:`in`,languageCode:`kn`},kk:{name:`Қазақша`,flagCode:`kz`,languageCode:`kk`},ky:{name:`Кыргызча`,flagCode:`kg`,languageCode:`ky`},lv:{name:`Latviešu`,flagCode:`lv`,languageCode:`lv`},lt:{name:`Lietuvių`,flagCode:`lt`,languageCode:`lt`},lb:{name:`Lëtzebuergesch`,flagCode:`lu`,languageCode:`lb`},mk:{name:`Македонски`,flagCode:`mk`,languageCode:`mk`},ml:{name:`മലയാളം`,flagCode:`in`,languageCode:`ml`},mr:{name:`मराठी`,flagCode:`in`,languageCode:`mr`},ne:{name:`नेपाली`,flagCode:`np`,languageCode:`ne`},ps:{name:`پښتو`,flagCode:`af`,languageCode:`ps`},fa:{name:`فارسی`,flagCode:`ir`,languageCode:`fa`},pa:{name:`ਪੰਜਾਬੀ`,flagCode:`in`,languageCode:`pa`},sr:{name:`Српски`,flagCode:`rs`,languageCode:`sr`},sd:{name:`سنڌي`,flagCode:`in`,languageCode:`sd`},sl:{name:`Slovenščina`,flagCode:`si`,languageCode:`sl`},so:{name:`Soomaali`,flagCode:`so`,languageCode:`so`},sw:{name:`Kiswahili`,flagCode:`ke`,languageCode:`sw`},te:{name:`తెలుగు`,flagCode:`in`,languageCode:`te`},th:{name:`ไทย`,flagCode:`th`,languageCode:`th`},ur:{name:`اردو`,flagCode:`pk`,languageCode:`ur`},cy:{name:`Cymraeg`,flagCode:`gb-wls`,languageCode:`cy`}};function _g(e){return Object.keys(gg).includes(e??``)}var vg=`xi:convai-widget-last-used-language`,yg=Fd(null);function bg(){try{let e=localStorage.getItem(vg);if(e&&_g(e))return e}catch{}}function xg(){try{let e=[];for(let t of navigator.languages){let n=t.toLowerCase();e.push(n);let r=n.split(`-`)[0];r!==n&&e.push(r)}return e}catch(e){return console.warn(`[ConversationalAI] Could not read navigator.languages:`,e),[]}}function Sg({languageAttribute:e,supported:t,defaultLanguage:n}){let r=new Set([...t,n]),i=[e,bg(),...xg()];for(let e of i)if(e&&r.has(e))return e;return n}function Cg(e){try{localStorage.setItem(vg,e)}catch{}}function wg({children:e}){let t=fb(),n=fg(`language`),r=fg(`override-language`),i=L(()=>(t.value.supported_language_overrides??[]).filter(_g)),a=n.peek(),o=t.peek(),s=(o.supported_language_overrides??[]).filter(_g),c=cm(Sg({languageAttribute:a&&_g(a)?a:void 0,supported:s,defaultLanguage:o.language})),l=L(()=>i.value.map(e=>gg[e]).sort((e,t)=>e.name.localeCompare(t.name))),u=mf(()=>({language:Kp(()=>_g(r.value)?gg[r.value]:_g(c.value)&&i.value.includes(c.value)?gg[c.value]:gg[t.value.language]),setLanguage:e=>{c.value=e,Cg(e)},options:l,showPicker:Kp(()=>l.value.length>0)}),[]);return R(yg.Provider,{value:u,children:e})}function Tg(){return cg(yg)}var Eg=Fd(null);function Dg({children:e}){let{language:t}=Tg(),n=fg(`override-prompt`),r=fg(`override-llm`),i=fg(`override-speed`),a=fg(`override-stability`),o=fg(`override-similarity-boost`),s=fg(`override-first-message`),c=fg(`override-voice-id`),l=fg(`override-text-only`),u=fg(`user-id`),d=L(()=>({agent:{prompt:{prompt:n.value,llm:r.value},firstMessage:s.value,language:t.value.languageCode},tts:{voiceId:c.value,speed:i.value?parseFloat(i.value):void 0,stability:a.value?parseFloat(a.value):void 0,similarityBoost:o.value?parseFloat(o.value):void 0},conversation:{textOnly:bh(l.value)??void 0}})),f=fg(`dynamic-variables`),p=L(()=>{if(f.value)try{return JSON.parse(f.value)}catch(e){console.error(`[ConversationalAI] Cannot parse dynamic-variables: ${e?.message}`)}}),m=fg(`worklet-path-raw-audio-processor`),h=fg(`worklet-path-audio-concat-processor`),g=fg(`worklet-path-libsamplerate`),{webSocketUrl:_}=hg(),v=fg(`agent-id`),y=fg(`signed-url`),b=fg(`environment`),x=pb(),S=xb(),C=L(()=>{let e=S.value,t={dynamicVariables:p.value,overrides:d.value,connectionDelay:{default:300},textOnly:x.value,userId:u.value||void 0,environment:b.value||void 0,libsampleratePath:g.value,workletPaths:{rawAudioProcessor:m.value,audioConcatProcessor:h.value}};return v.value?e?{agentId:v.value,origin:_.value,connectionType:`webrtc`,...t}:{agentId:v.value,origin:_.value,connectionType:`websocket`,...t}:y.value?{signedUrl:y.value,connectionType:`websocket`,...t}:(console.error(`[ConversationalAI] Either agent-id or signed-url is required`),null)});return C.value?R(Eg.Provider,{value:C,children:e}):null}function Og(){return cg(Eg)}var kg=`5.2.0`;function Ag(e,t){return new Promise(n=>setTimeout(n,e,t))}function jg(){return new Promise(e=>{let t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(null)})}function Mg(e,t=1/0){let{requestIdleCallback:n}=window;return n?new Promise(e=>n.call(window,()=>e(),{timeout:t})):Ag(Math.min(e,t))}function Ng(e){return!!e&&typeof e.then==`function`}function Pg(e,t){try{let n=e();Ng(n)?n.then(e=>t(!0,e),e=>t(!1,e)):t(!0,n)}catch(e){t(!1,e)}}async function Fg(e,t,n=16){let r=Array(e.length),i=Date.now();for(let a=0;a<e.length;++a){r[a]=t(e[a],a);let o=Date.now();o>=i+n&&(i=o,await jg())}return r}function Ig(e){return e.then(void 0,()=>void 0),e}function Lg(e,t){for(let n=0,r=e.length;n<r;++n)if(e[n]===t)return!0;return!1}function Rg(e,t){return!Lg(e,t)}function zg(e){return parseInt(e)}function Bg(e){return parseFloat(e)}function Vg(e,t){return typeof e==`number`&&isNaN(e)?t:e}function Hg(e){return e.reduce((e,t)=>e+ +!!t,0)}function Ug(e,t=1){if(Math.abs(t)>=1)return Math.round(e/t)*t;{let n=1/t;return Math.round(e*n)/n}}function Wg(e){let t=`Unexpected syntax '${e}'`,n=/^\s*([a-z-]*)(.*)$/i.exec(e),r=n[1]||void 0,i={},a=/([.:#][\w-]+|\[.+?\])/gi,o=(e,t)=>{i[e]=i[e]||[],i[e].push(t)};for(;;){let e=a.exec(n[2]);if(!e)break;let r=e[0];switch(r[0]){case`.`:o(`class`,r.slice(1));break;case`#`:o(`id`,r.slice(1));break;case`[`:{let e=/^\[([\w-]+)([~|^$*]?=("(.*?)"|([\w-]+)))?(\s+[is])?\]$/.exec(r);if(e)o(e[1],e[4]??e[5]??``);else throw Error(t);break}default:throw Error(t)}}return[r,i]}function Gg(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r>127)return new TextEncoder().encode(e);t[n]=r}return t}function Kg(e,t){let n=e[0]>>>16,r=e[0]&65535,i=e[1]>>>16,a=e[1]&65535,o=t[0]>>>16,s=t[0]&65535,c=t[1]>>>16,l=t[1]&65535,u=0,d=0,f=0,p=0;p+=a+l,f+=p>>>16,p&=65535,f+=i+c,d+=f>>>16,f&=65535,d+=r+s,u+=d>>>16,d&=65535,u+=n+o,u&=65535,e[0]=u<<16|d,e[1]=f<<16|p}function qg(e,t){let n=e[0]>>>16,r=e[0]&65535,i=e[1]>>>16,a=e[1]&65535,o=t[0]>>>16,s=t[0]&65535,c=t[1]>>>16,l=t[1]&65535,u=0,d=0,f=0,p=0;p+=a*l,f+=p>>>16,p&=65535,f+=i*l,d+=f>>>16,f&=65535,f+=a*c,d+=f>>>16,f&=65535,d+=r*l,u+=d>>>16,d&=65535,d+=i*c,u+=d>>>16,d&=65535,d+=a*s,u+=d>>>16,d&=65535,u+=n*l+r*c+i*s+a*o,u&=65535,e[0]=u<<16|d,e[1]=f<<16|p}function Jg(e,t){let n=e[0];t%=64,t===32?(e[0]=e[1],e[1]=n):t<32?(e[0]=n<<t|e[1]>>>32-t,e[1]=e[1]<<t|n>>>32-t):(t-=32,e[0]=e[1]<<t|n>>>32-t,e[1]=n<<t|e[1]>>>32-t)}function Yg(e,t){t%=64,t!==0&&(t<32?(e[0]=e[1]>>>32-t,e[1]<<=t):(e[0]=e[1]<<t-32,e[1]=0))}function Xg(e,t){e[0]^=t[0],e[1]^=t[1]}var Zg=[4283543511,3981806797],Qg=[3301882366,444984403];function $g(e){let t=[0,e[0]>>>1];Xg(e,t),qg(e,Zg),t[1]=e[0]>>>1,Xg(e,t),qg(e,Qg),t[1]=e[0]>>>1,Xg(e,t)}var e_=[2277735313,289559509],t_=[1291169091,658871167],n_=[0,5],r_=[0,1390208809],i_=[0,944331445];function a_(e,t){let n=Gg(e);t||=0;let r=[0,n.length],i=r[1]%16,a=r[1]-i,o=[0,t],s=[0,t],c=[0,0],l=[0,0],u;for(u=0;u<a;u+=16)c[0]=n[u+4]|n[u+5]<<8|n[u+6]<<16|n[u+7]<<24,c[1]=n[u]|n[u+1]<<8|n[u+2]<<16|n[u+3]<<24,l[0]=n[u+12]|n[u+13]<<8|n[u+14]<<16|n[u+15]<<24,l[1]=n[u+8]|n[u+9]<<8|n[u+10]<<16|n[u+11]<<24,qg(c,e_),Jg(c,31),qg(c,t_),Xg(o,c),Jg(o,27),Kg(o,s),qg(o,n_),Kg(o,r_),qg(l,t_),Jg(l,33),qg(l,e_),Xg(s,l),Jg(s,31),Kg(s,o),qg(s,n_),Kg(s,i_);c[0]=0,c[1]=0,l[0]=0,l[1]=0;let d=[0,0];switch(i){case 15:d[1]=n[u+14],Yg(d,48),Xg(l,d);case 14:d[1]=n[u+13],Yg(d,40),Xg(l,d);case 13:d[1]=n[u+12],Yg(d,32),Xg(l,d);case 12:d[1]=n[u+11],Yg(d,24),Xg(l,d);case 11:d[1]=n[u+10],Yg(d,16),Xg(l,d);case 10:d[1]=n[u+9],Yg(d,8),Xg(l,d);case 9:d[1]=n[u+8],Xg(l,d),qg(l,t_),Jg(l,33),qg(l,e_),Xg(s,l);case 8:d[1]=n[u+7],Yg(d,56),Xg(c,d);case 7:d[1]=n[u+6],Yg(d,48),Xg(c,d);case 6:d[1]=n[u+5],Yg(d,40),Xg(c,d);case 5:d[1]=n[u+4],Yg(d,32),Xg(c,d);case 4:d[1]=n[u+3],Yg(d,24),Xg(c,d);case 3:d[1]=n[u+2],Yg(d,16),Xg(c,d);case 2:d[1]=n[u+1],Yg(d,8),Xg(c,d);case 1:d[1]=n[u],Xg(c,d),qg(c,e_),Jg(c,31),qg(c,t_),Xg(o,c)}return Xg(o,r),Xg(s,r),Kg(o,s),Kg(s,o),$g(o),$g(s),Kg(o,s),Kg(s,o),(`00000000`+(o[0]>>>0).toString(16)).slice(-8)+(`00000000`+(o[1]>>>0).toString(16)).slice(-8)+(`00000000`+(s[0]>>>0).toString(16)).slice(-8)+(`00000000`+(s[1]>>>0).toString(16)).slice(-8)}function o_(e){return{name:e.name,message:e.message,stack:e.stack?.split(`
270
+ `),km={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:{ideal:1}},Am=class e{context;analyser;worklet;inputStream;mediaStreamSource;permissions;onError;static async create({sampleRate:t,format:n,preferHeadphonesForIosDevices:r,inputDeviceId:i,workletPaths:a,libsampleratePath:o,onError:s,inputChunkDurationMs:c=25}){let l=null,u=null;try{let d={sampleRate:{ideal:t},...km};if(wm()&&r){let e=(await window.navigator.mediaDevices.enumerateDevices()).find(e=>e.kind===`audioinput`&&[`airpod`,`headphone`,`earphone`].find(t=>e.label.toLowerCase().includes(t)));e&&(d.deviceId={ideal:e.deviceId})}i&&(d.deviceId=e.getDeviceIdConstraint(i));let f=navigator.mediaDevices.getSupportedConstraints().sampleRate;l=new window.AudioContext(f?{sampleRate:t}:{});let p=l.createAnalyser();f||await xm(l,o),await Om(l.audioWorklet,a?.rawAudioProcessor);let m={voiceIsolation:!0,...d};u=await navigator.mediaDevices.getUserMedia({audio:m});let h=l.createMediaStreamSource(u),g=new AudioWorkletNode(l,`rawAudioProcessor`);g.port.postMessage({type:`setFormat`,format:n,sampleRate:t,chunkDurationMs:c}),h.connect(p),p.connect(g),await l.resume();let _=await navigator.permissions.query({name:`microphone`});return new e(l,p,g,u,h,_,s)}catch(e){throw u?.getTracks().forEach(e=>{e.stop()}),l?.close(),e}}static getDeviceIdConstraint(e){if(e)return wm()?{ideal:e}:{exact:e}}muted=!1;volumeProvider;constructor(e,t,n,r,i,a,o=console.error){this.context=e,this.analyser=t,this.worklet=n,this.inputStream=r,this.mediaStreamSource=i,this.permissions=a,this.onError=o,this.permissions.addEventListener(`change`,this.handlePermissionsChange),this.worklet.port.start(),this.volumeProvider=Cm(t,e.sampleRate)}getAnalyser(){return this.analyser}getVolume(){return this.muted?0:this.volumeProvider.getVolume()}getByteFrequencyData(e){if(this.muted){e.fill(0);return}this.volumeProvider.getByteFrequencyData(e)}isMuted(){return this.muted}addListener(e){this.worklet.port.addEventListener(`message`,e)}removeListener(e){this.worklet.port.removeEventListener(`message`,e)}forgetInputStreamAndSource(){for(let e of this.inputStream.getTracks())e.stop();this.mediaStreamSource.disconnect()}async close(){this.forgetInputStreamAndSource(),this.permissions.removeEventListener(`change`,this.handlePermissionsChange),await this.context.close()}async setMuted(e){this.muted=e,this.worklet.port.postMessage({type:`setMuted`,isMuted:e})}settingInput=!1;async setDevice(t){try{if(this.settingInput)throw Error(`Input device is already being set`);this.settingInput=!0;let n=t?.inputDeviceId,r={...km};n&&(r.deviceId=e.getDeviceIdConstraint(n));let i={voiceIsolation:!0,...r},a=await navigator.mediaDevices.getUserMedia({audio:i});this.forgetInputStreamAndSource(),this.inputStream=a,this.mediaStreamSource=this.context.createMediaStreamSource(a),this.mediaStreamSource.connect(this.analyser)}catch(e){throw this.onError(`Failed to switch input device:`,e),e}finally{this.settingInput=!1}}handlePermissionsChange=()=>{if(this.permissions.state===`denied`)this.onError(`Microphone permission denied`);else if(!this.settingInput){let[e]=this.inputStream.getAudioTracks(),{deviceId:t}=e?.getSettings()??{};this.setDevice({inputDeviceId:t}).catch(e=>{this.onError(`Failed to reset input device after permission change:`,e)})}}};function jm(e,t){let n=e=>{let n=e.data[0];t.sendMessage({user_audio_chunk:bu(n.buffer)})};return e.addListener(n),()=>{e.removeListener(n)}}function Mm(e,t){let n=e=>{t.playAudio(xu(e.audio_base_64))};return e.addListener(n),()=>{e.removeListener(n)}}var Nm={default:0,android:3e3};function Pm(e,t=`default`){let n=e??Nm;return t===`android`?n.android??n.default:t===`ios`?n.ios??n.default:n.default}async function Fm(e){e>0&&await new Promise(t=>setTimeout(t,e))}var Im=3e4,Lm=[`touchstart`,`touchend`,`click`],Rm=null,zm=null,Bm=!1;function Vm(e){let t=e.createBuffer(1,1,22050),n=e.createBufferSource();n.buffer=t,n.connect(e.destination),n.start(0),e.resume().catch(()=>{})}function Hm(){zm&&clearTimeout(zm),zm=setTimeout(()=>{zm=null,qm()},Im)}function Um(){zm&&=(clearTimeout(zm),null)}function Wm(){if(!wm()||Rm)return;let e=new AudioContext;Vm(e),Rm=e,Hm()}function Gm(){if(!wm()||Bm||typeof document>`u`)return;Bm=!0;let e=()=>{Wm()};for(let t of Lm)document.addEventListener(t,e,!0)}function Km(){let e=Rm;return Rm=null,Um(),e}function qm(){Rm&&(Rm.close().catch(()=>{}),Rm=null,Um())}function Jm(){return Tm()?`android`:wm()?`ios`:`default`}async function Ym(){if(`wakeLock`in navigator)try{return await navigator.wakeLock.request(`screen`)}catch{}return null}async function Xm(e,t,n){let[r,i]=await Promise.all([Am.create({...t.inputFormat,preferHeadphonesForIosDevices:e.preferHeadphonesForIosDevices,inputDeviceId:e.inputDeviceId,inputChunkDurationMs:e.inputChunkDurationMs,workletPaths:e.workletPaths,libsampleratePath:e.libsampleratePath}),Dm.create({...t.outputFormat,outputDeviceId:e.outputDeviceId,workletPaths:e.workletPaths,audioContext:n??void 0})]),a=jm(r,t),o=Mm(t,i);return{input:r,output:i,playbackEventTarget:i,detach:async()=>{a(),o()}}}async function Zm(e){let t=e.useWakeLock??!0,n=null,r=null,i=null;try{t&&(n=await Ym()),r=await navigator.mediaDevices.getUserMedia({audio:!0});let a=Jm();await Fm(Pm(e.connectionDelay,a));let o=await Vu(e),s;try{o instanceof zu?(i=Km(),s={connection:o,...await Xm(e,o,i)},i=null):(qm(),s=Fu(o))}catch(e){throw await i?.close().catch(()=>{}),i=null,o.close(),e}if(r){for(let e of r.getTracks())e.stop();r=null}let c=null;n&&(c=()=>{document.visibilityState===`visible`&&n?.released&&Ym().then(e=>{n=e})},document.addEventListener(`visibilitychange`,c));let l=s.detach;return{...s,detach:async()=>{await l(),c&&document.removeEventListener(`visibilitychange`,c);try{await n?.release(),n=null}catch{}}}}catch(e){if(r)for(let e of r.getTracks())e.stop();try{await n?.release(),n=null}catch{}throw qm(),e}}Pu(Zm);var Qm=class{audioElements=[];inputAudioContext=null;audioCaptureContext=null;async attachRemoteTrack(e,t){let n=e.attach();if(n.autoplay=!0,n.controls=!1,t&&n.setSinkId)try{await n.setSinkId(t)}catch(e){console.warn(`Failed to set output device for new audio element:`,e)}n.style.display=`none`,document.body.appendChild(n),this.audioElements.push(n)}setupInputAnalysis(e){this.inputAudioContext&&=(this.inputAudioContext.close().catch(()=>{}),null);let t=new AudioContext,n=t.createAnalyser();return t.createMediaStreamSource(new MediaStream([e])).connect(n),this.inputAudioContext=t,{volumeProvider:Cm(n,t.sampleRate),analyser:n}}async setupOutputAnalysis(e,t,n){this.audioCaptureContext&&=(this.audioCaptureContext.close().catch(()=>{}),null);let r=new AudioContext;this.audioCaptureContext=r;let i=r.createAnalyser();i.fftSize=2048,i.smoothingTimeConstant=.8;let a=new MediaStream([e.mediaStreamTrack]),o=r.createMediaStreamSource(a),s=Cm(i,r.sampleRate);await Om(r.audioWorklet);let c=new AudioWorkletNode(r,`rawAudioProcessor`);return c.port.postMessage({type:`setFormat`,format:t.format,sampleRate:t.sampleRate}),c.port.onmessage=e=>{let[t,r]=e.data;n(t.buffer,r)},o.connect(i),i.connect(c),{volumeProvider:s,analyser:i}}setVolume(e){for(let t of this.audioElements)t.volume=e}async setOutputDevice(e){if(!(`setSinkId`in HTMLAudioElement.prototype))throw Error(`setSinkId is not supported in this browser`);await Promise.all(this.audioElements.map(async t=>{try{await t.setSinkId(e)}catch(e){throw console.error(`Failed to set sink ID for audio element:`,e),e}}))}cleanup(){this.inputAudioContext&&=(this.inputAudioContext.close().catch(e=>{console.warn(`Error closing input audio context:`,e)}),null),this.audioCaptureContext&&=(this.audioCaptureContext.close().catch(e=>{console.warn(`Error closing audio capture context:`,e)}),null);for(let e of this.audioElements)e.remove();this.audioElements=[]}};function $m(){for(let e of[`fetch`,`WebSocket`,`TextEncoder`,`TextDecoder`,`URL`,`btoa`,`atob`])if(globalThis[e]===void 0)throw Error(`${e} is not available in this environment.`)}var eh=new Uint8Array,th=class e extends s{type=`text`;setVolume(){throw Error(`setVolume is not supported in text conversations`)}setMicMuted(){throw Error(`setMicMuted is not supported in text conversations`)}getInputByteFrequencyData(){return eh}getOutputByteFrequencyData(){return eh}getInputVolume(){return 0}getOutputVolume(){return 0}static async startSession(t){let n=s.getFullOptions(t);n.onStatusChange&&n.onStatusChange({status:`connecting`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1}),n.onModeChange&&n.onModeChange({mode:`listening`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1});let r=null,i=null;try{return await Fm(Pm(n.connectionDelay)),r=await Vu(n),i=new e(n,r),n.onConversationCreated?.(i),i.markConnected(),n.onConnect?.({conversationId:r.conversationId}),i}catch(e){throw i?await i.endSession().catch(()=>{}):(n.onStatusChange?.({status:`disconnected`}),r?.close()),e}}},nh=class e extends s{input;output;playbackEventTarget;cleanUp;type=`voice`;static async startSession(t){let n=s.getFullOptions(t);n.onStatusChange&&n.onStatusChange({status:`connecting`}),n.onCanSendFeedbackChange&&n.onCanSendFeedbackChange({canSendFeedback:!1});let r=null,i=null;try{if(!Nu)throw Error(`No voice session setup strategy registered. Import the platform-specific entry point (e.g. @elevenlabs/client via the "browser" export).`);return i=await Nu(n),r=new e(n,i.connection,i.input,i.output,i.playbackEventTarget,i.detach),n.onConversationCreated?.(r),r.markConnected(),n.onConnect?.({conversationId:i.connection.conversationId}),r}catch(e){throw r?await r.endSession().catch(()=>{}):(i&&await i.detach().catch(()=>{}),n.onStatusChange?.({status:`disconnected`})),e}}inputFrequencyData;outputFrequencyData;handlePlaybackEvent=e=>{e.data.type===`process`&&this.updateMode(e.data.finished?`listening`:`speaking`)};constructor(e,t,n,r,i,a){super(e,t),this.input=n,this.output=r,this.playbackEventTarget=i,this.cleanUp=a,i?.addListener(this.handlePlaybackEvent)}async handleEndSession(){this.playbackEventTarget?.removeListener(this.handlePlaybackEvent),this.playbackEventTarget=null,await this.cleanUp(),await super.handleEndSession(),await this.input.close(),await this.output.close()}handleInterruption(e){super.handleInterruption(e),this.updateMode(`listening`),this.output.interrupt()}handleAudio(e){super.handleAudio(e),e.audio_event.alignment&&this.options.onAudioAlignment&&this.options.onAudioAlignment(e.audio_event.alignment),this.lastInterruptTimestamp<=e.audio_event.event_id&&(e.audio_event.audio_base_64&&this.options.onAudio?.(e.audio_event.audio_base_64),this.currentEventId=e.audio_event.event_id,this.updateCanSendFeedback(),this.updateMode(`speaking`))}static FREQUENCY_BIN_COUNT=1024;setMicMuted(e){this.input.setMuted(e).catch(e=>{this.options.onError?.(`Failed to set input muted state`,e)})}getInputByteFrequencyData(){return this.inputFrequencyData??=new Uint8Array(e.FREQUENCY_BIN_COUNT),this.input.getByteFrequencyData(this.inputFrequencyData),this.inputFrequencyData}getOutputByteFrequencyData(){return this.outputFrequencyData??=new Uint8Array(e.FREQUENCY_BIN_COUNT),this.output.getByteFrequencyData(this.outputFrequencyData),this.outputFrequencyData}getInputVolume(){return this.input.getVolume()}getOutputVolume(){return this.output.getVolume()}async changeInputDevice({sampleRate:e,format:t,preferHeadphonesForIosDevices:n,inputDeviceId:r}){try{await this.input.setDevice({inputDeviceId:r,sampleRate:e,format:t,preferHeadphonesForIosDevices:n})}catch(e){throw console.error(`Error changing input device`,e),e}}async changeOutputDevice({sampleRate:e,format:t,outputDeviceId:n}){try{await this.output.setDevice({outputDeviceId:n,sampleRate:e,format:t})}catch(e){throw console.error(`Error changing output device`,e),e}}setVolume=({volume:e})=>{let t=Number.isFinite(e)?Math.min(1,Math.max(0,e)):1;this.volume=t,this.output.setVolume(t)}},rh=`https://api.elevenlabs.io`;function ih(e,t,n=rh){let r={};return typeof t==`boolean`?r.feedback=t?`like`:`dislike`:(r.rating=t.rating,r.comment=t.comment),fetch(`${n}/v1/convai/conversations/${e}/feedback`,{method:`POST`,body:JSON.stringify(r),headers:{"Content-Type":`application/json`}})}var ah;(function(e){e.SESSION_STARTED=`session_started`,e.PARTIAL_TRANSCRIPT=`partial_transcript`,e.COMMITTED_TRANSCRIPT=`committed_transcript`,e.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS=`committed_transcript_with_timestamps`,e.AUTH_ERROR=`auth_error`,e.ERROR=`error`,e.OPEN=`open`,e.CLOSE=`close`,e.QUOTA_EXCEEDED=`quota_exceeded`,e.COMMIT_THROTTLED=`commit_throttled`,e.TRANSCRIBER_ERROR=`transcriber_error`,e.UNACCEPTED_TERMS=`unaccepted_terms`,e.RATE_LIMITED=`rate_limited`,e.INPUT_ERROR=`input_error`,e.QUEUE_OVERFLOW=`queue_overflow`,e.RESOURCE_EXHAUSTED=`resource_exhausted`,e.SESSION_TIME_LIMIT_EXCEEDED=`session_time_limit_exceeded`,e.CHUNK_SIZE_EXCEEDED=`chunk_size_exceeded`,e.INSUFFICIENT_AUDIO_ACTIVITY=`insufficient_audio_activity`})(ah||={});var oh;(function(e){e.PCM_8000=`pcm_8000`,e.PCM_16000=`pcm_16000`,e.PCM_22050=`pcm_22050`,e.PCM_24000=`pcm_24000`,e.PCM_44100=`pcm_44100`,e.PCM_48000=`pcm_48000`,e.ULAW_8000=`ulaw_8000`})(oh||={});var sh;(function(e){e.MANUAL=`manual`,e.VAD=`vad`})(sh||={});var ch={async startSession(e){return $m(),o(e)?th.startSession(e):nh.startSession(e)}};Gm(),Eu(()=>new Qm);var lh=Object.create,uh=Object.defineProperty,dh=Object.getOwnPropertyDescriptor,fh=Object.getOwnPropertyNames,ph=Object.getPrototypeOf,mh=Object.prototype.hasOwnProperty,hh=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),gh=(e,t)=>{let n={};for(var r in e)uh(n,r,{get:e[r],enumerable:!0});return t||uh(n,Symbol.toStringTag,{value:`Module`}),n},_h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=fh(t),a=0,o=i.length,s;a<o;a++)s=i[a],!mh.call(e,s)&&s!==n&&uh(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=dh(t,s))||r.enumerable});return e},vh=(e,t,n)=>(n=e==null?{}:lh(ph(e)),_h(t||!e||!e.__esModule?uh(n,`default`,{value:e,enumerable:!0}):n,e)),yh=`0.14.4`;function bh(e){return e?e===`true`?!0:e===`false`?!1:null:null}var xh=`variant.placement.override-config.avatar-image-url.avatar-orb-color-1.avatar-orb-color-2.agent-id.signed-url.terms-key.server-location.language.dynamic-variables.show-avatar-when-collapsed.override-prompt.override-llm.override-speed.override-stability.override-similarity-boost.override-first-message.override-language.override-voice-id.override-text-only.mic-muting.transcript.text-input.text-contents.default-expanded.always-expanded.dismissible.strip-audio-tags.user-id.use-rtc.collect-feedback.worklet-path-raw-audio-processor.worklet-path-audio-concat-processor.worklet-path-libsamplerate.syntax-highlight-theme.markdown-link-allowed-hosts.markdown-link-include-www.markdown-link-allow-http.allow-events.show-agent-status.show-conversation-id.environment`.split(`.`),Sh=`@import "https://fonts.googleapis.com/css2?family=Inter:wght@400,500&display=swap";@layer components;@layer properties{@media all {*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:host,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-weight-medium:500;--font-weight-semibold:600;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.\\!visible{visibility:visible!important}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.start-3{inset-inline-start:12px}.end-3{inset-inline-end:12px}.top-0{top:0}.top-1{top:4px}.top-1\\/2{top:50%}.top-4{top:16px}.top-16{top:64px}.top-20{top:80px}.top-\\[40\\%\\]{top:40%}.top-\\[88px\\]{top:88px}.right-0{right:0}.right-1{right:4px}.right-1\\.5{right:6px}.-bottom-3{bottom:-12px}.bottom-0{bottom:0}.bottom-20{bottom:80px}.left-0{left:0}.left-1\\/2{left:50%}.left-4{left:16px}.z-1{z-index:1}.z-2{z-index:2}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.m-1{margin:4px}.-mx-0\\.5{margin-inline:-2px}.mx-1{margin-inline:4px}.-my-4{margin-block:-16px}.my-4{margin-block:16px}.my-6{margin-block:24px}.ms-auto{margin-inline-start:auto}.\\!mt-0{margin-top:0!important}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.-mr-1\\.5{margin-right:-6px}.mb-0\\.5{margin-bottom:2px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.ml-4{margin-left:16px}.ml-auto{margin-left:auto}.\\!flex{display:flex!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.\\[field-sizing\\:content\\],.field-sizing-content{field-sizing:content}.h-4{height:16px}.h-5{height:20px}.h-6{height:24px}.h-7{height:28px}.h-8{height:32px}.h-9{height:36px}.h-11{height:44px}.h-12{height:48px}.h-16{height:64px}.h-48{height:192px}.h-full{height:100%}.h-screen{height:100vh}.max-h-\\[50\\%\\]{max-height:50%}.max-h-\\[min\\(384px\\,var\\(--radix-select-content-available-height\\)\\)\\]{max-height:min(384px, var(--radix-select-content-available-height))}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-11{min-height:44px}.min-h-\\[6lh\\]{min-height:6lh}.min-h-full{min-height:100%}.min-h-min{min-height:min-content}.w-1\\/2{width:50%}.w-4{width:16px}.w-5{width:20px}.w-6{width:24px}.w-8{width:32px}.w-9{width:36px}.w-11{width:44px}.w-12{width:48px}.w-20{width:80px}.w-48{width:192px}.w-full{width:100%}.w-screen{width:100vw}.max-w-64{max-width:256px}.max-w-\\[180px\\]{max-width:180px}.max-w-\\[220px\\]{max-width:220px}.max-w-\\[400px\\]{max-width:400px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-9{min-width:36px}.min-w-60{min-width:240px}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.min-w-max{min-width:max-content}.min-w-min{min-width:min-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-bottom-left{transform-origin:0 100%}.origin-bottom-right{transform-origin:100% 100%}.origin-top{transform-origin:top}.origin-top-left{transform-origin:0 0}.origin-top-right{transform-origin:100% 0}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-\\[calc\\(var\\(--el-overlay-padding\\)\\)\\]{--tw-translate-y:calc(calc(var(--el-overlay-padding)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1\\/2{--tw-translate-y:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\\[calc\\(var\\(--el-overlay-padding\\)\\)\\]{--tw-translate-y:calc(var(--el-overlay-padding));translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-150{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\\[0\\.1667\\]{scale:.1667}.-rotate-90{rotate:-90deg}.-rotate-180{rotate:-180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-outside{list-style-position:outside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.place-content-center{place-content:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:4px}.gap-1\\.5{gap:6px}.gap-2{gap:8px}.gap-2\\.5{gap:10px}.gap-3{gap:12px}.gap-6{gap:24px}.gap-8{gap:32px}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(12px * var(--tw-space-y-reverse));margin-block-end:calc(12px * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-base-border>:not(:last-child)){border-color:var(--el-base-border)}.self-auto{align-self:auto}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[calc\\(var\\(--el-button-radius\\)\\+4px\\)\\]{border-radius:calc(var(--el-button-radius) + 4px)}.rounded-\\[calc\\(var\\(--el-sheet-radius\\)-8px\\)\\]{border-radius:calc(var(--el-sheet-radius) - 8px)}.rounded-bubble{border-radius:var(--el-bubble-radius)}.rounded-button{border-radius:var(--el-button-radius)}.rounded-compact-sheet{border-radius:var(--el-compact-sheet-radius)}.rounded-dropdown-sheet{border-radius:var(--el-dropdown-sheet-radius)}.rounded-full{border-radius:9999px}.rounded-input{border-radius:var(--el-input-radius)}.rounded-sheet{border-radius:var(--el-sheet-radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-accent{border-color:var(--el-accent)}.border-audio-tag\\/20{border-color:hsl(var(--el-audio-tag) / 1)}@supports (color:color-mix(in lab, red, red)){.border-audio-tag\\/20{border-color:color-mix(in oklab, hsl(var(--el-audio-tag) / 1) 20%, transparent)}}.border-base{border-color:var(--el-base)}.border-base-border,.border-base-border\\/60{border-color:var(--el-base-border)}@supports (color:color-mix(in lab, red, red)){.border-base-border\\/60{border-color:color-mix(in oklab, var(--el-base-border) 60%, transparent)}}.border-base-error\\/30{border-color:var(--el-base-error)}@supports (color:color-mix(in lab, red, red)){.border-base-error\\/30{border-color:color-mix(in oklab, var(--el-base-error) 30%, transparent)}}.border-base-subtle\\/30{border-color:var(--el-base-subtle)}@supports (color:color-mix(in lab, red, red)){.border-base-subtle\\/30{border-color:color-mix(in oklab, var(--el-base-subtle) 30%, transparent)}}.bg-accent{background-color:var(--el-accent)}.bg-base{background-color:var(--el-base)}.bg-base-active,.bg-base-active\\/40{background-color:var(--el-base-active)}@supports (color:color-mix(in lab, red, red)){.bg-base-active\\/40{background-color:color-mix(in oklab, var(--el-base-active) 40%, transparent)}}.bg-base-active\\/80{background-color:var(--el-base-active)}@supports (color:color-mix(in lab, red, red)){.bg-base-active\\/80{background-color:color-mix(in oklab, var(--el-base-active) 80%, transparent)}}.bg-base-border{background-color:var(--el-base-border)}.bg-base-error\\/5{background-color:var(--el-base-error)}@supports (color:color-mix(in lab, red, red)){.bg-base-error\\/5{background-color:color-mix(in oklab, var(--el-base-error) 5%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-base{--tw-gradient-from:var(--el-base);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\\[mask-image\\:linear-gradient\\(to_bottom\\,black\\,transparent\\)\\]{-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}.\\[mask-image\\:linear-gradient\\(to_top\\,black\\,transparent\\)\\]{-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.bg-cover{background-size:cover}.object-cover{object-fit:cover}.p-1{padding:4px}.p-1\\.5{padding:6px}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.px-1{padding-inline:4px}.px-1\\.5{padding-inline:6px}.px-2{padding-inline:8px}.px-2\\.5{padding-inline:10px}.px-3{padding-inline:12px}.px-4{padding-inline:16px}.px-8{padding-inline:32px}.py-0\\.5{padding-block:2px}.py-1{padding-block:4px}.py-1\\.5{padding-block:6px}.py-2{padding-block:8px}.py-2\\.5{padding-block:10px}.py-4{padding-block:16px}.py-\\[calc\\(theme\\(spacing\\.2\\)-1px\\)\\]{padding-block:7px}.py-px{padding-block:1px}.pt-1{padding-top:4px}.pt-1\\.5{padding-top:6px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.pt-4{padding-top:16px}.pt-20{padding-top:80px}.pr-3{padding-right:12px}.pr-7{padding-right:28px}.pr-8{padding-right:32px}.pr-16{padding-right:64px}.pb-1{padding-bottom:4px}.pb-1\\.5{padding-bottom:6px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pb-4{padding-bottom:16px}.pb-\\[60px\\]{padding-bottom:60px}.pl-1\\.5{padding-left:6px}.pl-4{padding-left:16px}.pl-16{padding-left:64px}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:18px;line-height:var(--tw-leading,26px)}.text-md{font-size:16px;line-height:var(--tw-leading,24px)}.text-sm{font-size:14px;line-height:var(--tw-leading,20px)}.text-xl{font-size:20px;line-height:var(--tw-leading,28px)}.text-xs{font-size:12px;line-height:var(--tw-leading,16px)}.text-\\[10px\\]{font-size:10px}.text-\\[13px\\]{font-size:13px}.leading-4{--tw-leading:16px;line-height:16px}.leading-5{--tw-leading:20px;line-height:20px}.\\[line-height\\:var\\(--el-overlay-padding\\)\\]{line-height:var(--el-overlay-padding)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-primary{color:var(--el-accent-primary)}.text-audio-tag{color:hsl(var(--el-audio-tag) / 1)}.text-base-border{color:var(--el-base-border)}.text-base-error{color:var(--el-base-error)}.text-base-primary{color:var(--el-base-primary)}.text-base-subtle{color:var(--el-base-subtle)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-header{--tw-shadow:0 0 1px 0 var(--tw-shadow-color,#0006), 0 2px 2px 0 var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 2px 40px 1px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 2px 24px 1px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-scroll-fade-bottom{--tw-shadow:0 8px 16px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-scroll-fade-top{--tw-shadow:0 -8px 16px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent{--tw-ring-color:var(--el-accent)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[1px\\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[border-radius\\]{transition-property:border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[colors\\,opacity\\]{transition-property:colors,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[margin\\]{transition-property:margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,width\\,height\\,transform\\,flex-grow\\]{transition-property:opacity,width,height,transform,flex-grow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\]{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,left\\,top\\,opacity\\,scale\\]{transition-property:transform,left,top,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\,height\\,max-width\\,max-height\\,transform\\,border-radius\\,opacity\\,inset\\,bottom\\,top\\,left\\,right\\,margin\\,padding\\]{transition-property:width,height,max-width,max-height,transform,border-radius,opacity,inset,bottom,top,left,right,margin,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.group-focus-within\\:pointer-events-auto:is(:where(.group):focus-within *){pointer-events:auto}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-base-subtle::placeholder{color:var(--el-base-subtle)}.first\\:mt-0:first-child,:is(.\\*\\:first\\:mt-0>*):first-child{margin-top:0}.last\\:mb-0:last-child,:is(.\\*\\:last\\:mb-0>*):last-child{margin-bottom:0}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:border-accent-hover:hover{border-color:var(--el-accent-hover)}.hover\\:border-base-hover:hover{border-color:var(--el-base-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--el-accent-hover)}.hover\\:bg-base-hover:hover{background-color:var(--el-base-hover)}.hover\\:text-base-primary:hover{color:var(--el-base-primary)}.hover\\:opacity-50:hover{opacity:.5}.hover\\:opacity-100:hover{opacity:1}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:underline-offset-2:focus-visible{text-underline-offset:2px}.focus-visible\\:opacity-100:focus-visible{opacity:1}.focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:border-accent-active:active{border-color:var(--el-accent-active)}.active\\:border-base-active:active{border-color:var(--el-base-active)}.active\\:bg-accent-active:active{background-color:var(--el-accent-active)}.active\\:bg-base-active:active{background-color:var(--el-base-active)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.data-hidden\\:translate-x-full[data-shown=false]{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:-translate-y-4[data-shown=false]{--tw-translate-y:calc(16px * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:translate-y-2[data-shown=false]{--tw-translate-y:8px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-hidden\\:scale-75[data-shown=false]{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:scale-90[data-shown=false]{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:scale-100[data-shown=false]{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-hidden\\:opacity-0[data-shown=false]{opacity:0}.data-highlighted\\:bg-base-active[data-highlighted]{background-color:var(--el-base-active)}.overlay{inset:var(--el-overlay-padding);right:calc(var(--el-overlay-padding) + var(--removed-body-scroll-bar-size,0px));position:absolute}.focus-ring{--tw-ring-color:var(--el-accent);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-offset-color:var(--el-base)}.focus-ring:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-outline-style:none;outline-style:none}[data-variant=compact].sheet{border-radius:var(--el-sheet-radius);width:100%;max-width:400px;height:calc(100% - 80px);max-height:550px}[data-variant=expanded].sheet{border-radius:var(--el-sheet-radius);width:100%;max-width:600px;height:100%;max-height:calc(100% - 80px)}[data-variant=fullscreen].sheet{width:100%;max-width:100dvw;height:100%;max-height:100dvh;margin:calc(-1 * var(--el-overlay-padding));width:calc(100% + 2 * var(--el-overlay-padding));height:calc(100% + 2 * var(--el-overlay-padding));border-radius:0;padding-bottom:24px;bottom:0}.animate-text{background-image:linear-gradient(75deg, var(--el-base-primary), var(--el-base-subtle), var(--el-base-primary), var(--el-base-subtle));color:#0000;background-size:300% 100%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite TextAnimation}@keyframes TextAnimation{0%{background-position:0 0}to{background-position:100% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.terms h6{font-size:12px;line-height:var(--tw-leading,16px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h5{font-size:14px;line-height:var(--tw-leading,20px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h4{font-size:16px;line-height:var(--tw-leading,24px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h3{font-size:18px;line-height:var(--tw-leading,26px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h2{font-size:20px;line-height:var(--tw-leading,28px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}.terms h1{font-size:24px;line-height:var(--tw-leading,30px);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--el-base-primary)}}.dev-host,:host{--el-audio-tag:293 53% 52%;pointer-events:none;z-index:1000;font-size:16px;line-height:var(--tw-leading,24px);color:var(--el-base-primary);scrollbar-color:#e5e7eb transparent;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;position:fixed;inset:0}:is(.dev-host,:host) button{margin:0}.markdown{text-autospace:normal;text-spacing-trim:trim-start}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{word-break:auto-phrase}.tok-comment,.tok-meta{color:#6a737d}.tok-keyword{color:#d73a49}.tok-atom,.tok-bool,.tok-literal,.tok-number{color:#005cc5}.tok-string,.tok-string2{color:#032f62}.tok-variableName{color:#24292e}.tok-variableName.tok-definition{color:#6f42c1}.tok-variableName.tok-local{color:#24292e}.tok-variableName2,.tok-macroName,.tok-typeName,.tok-namespace,.tok-className{color:#6f42c1}.tok-propertyName{color:#24292e}.tok-propertyName.tok-definition{color:#005cc5}.tok-labelName{color:#22863a}.tok-url,.tok-link{color:#032f62;text-decoration:underline}.tok-operator{color:#d73a49}.tok-punctuation{color:#24292e}.tok-invalid{color:#b31d28}.tok-deleted{color:#b31d28;background-color:#ffeef0}.tok-inserted{color:#22863a;background-color:#f0fff4}.tok-heading{color:#005cc5;font-weight:700}.tok-emphasis{color:#24292e;font-style:italic}.tok-strong{color:#24292e;font-weight:700}.tok-strikethrough{text-decoration:line-through}.tok-monospace{color:#005cc5}.tok-processingInstruction,[data-syntax-theme=dark] .tok-comment,[data-syntax-theme=dark] .tok-meta{color:#6a737d}[data-syntax-theme=dark] .tok-keyword{color:#f97583}[data-syntax-theme=dark] .tok-atom,[data-syntax-theme=dark] .tok-bool,[data-syntax-theme=dark] .tok-literal,[data-syntax-theme=dark] .tok-number,[data-syntax-theme=dark] .tok-propertyName.tok-definition{color:#79b8ff}[data-syntax-theme=dark] .tok-string,[data-syntax-theme=dark] .tok-string2{color:#9ecbff}[data-syntax-theme=dark] .tok-url,[data-syntax-theme=dark] .tok-link{color:#dbedff}[data-syntax-theme=dark] .tok-variableName,[data-syntax-theme=dark] .tok-variableName.tok-local,[data-syntax-theme=dark] .tok-propertyName,[data-syntax-theme=dark] .tok-emphasis,[data-syntax-theme=dark] .tok-strong{color:#e1e4e8}[data-syntax-theme=dark] .tok-variableName.tok-definition,[data-syntax-theme=dark] .tok-variableName2,[data-syntax-theme=dark] .tok-macroName,[data-syntax-theme=dark] .tok-typeName,[data-syntax-theme=dark] .tok-namespace,[data-syntax-theme=dark] .tok-className{color:#b392f0}[data-syntax-theme=dark] .tok-labelName{color:#85e89d}[data-syntax-theme=dark] .tok-invalid{color:#fdaeb7}[data-syntax-theme=dark] .tok-deleted{color:#fdaeb7;background-color:#86181d}[data-syntax-theme=dark] .tok-inserted{color:#85e89d;background-color:#144620}[data-syntax-theme=dark] .tok-heading{color:#79b8ff}[data-syntax-theme=dark] .tok-operator{color:#f97583}[data-syntax-theme=dark] .tok-punctuation{color:#e1e4e8}[data-syntax-theme=dark] .tok-monospace{color:#79b8ff}[data-syntax-theme=dark] .tok-processingInstruction{color:#6a737d}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}`;function Ch(e,t){Th(e)&&(e=`100%`);let n=Eh(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(e=t===360?(e<0?e%t+t:e%t)/parseFloat(String(t)):e%t/parseFloat(String(t)),e)}function wh(e){return Math.min(1,Math.max(0,e))}function Th(e){return typeof e==`string`&&e.indexOf(`.`)!==-1&&parseFloat(e)===1}function Eh(e){return typeof e==`string`&&e.indexOf(`%`)!==-1}function Dh(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Oh(e){return Number(e)<=1?`${Number(e)*100}%`:e}function kh(e){return e.length===1?`0`+e:String(e)}function Ah(e,t,n){return{r:Ch(e,255)*255,g:Ch(t,255)*255,b:Ch(n,255)*255}}function jh(e,t,n){e=Ch(e,255),t=Ch(t,255),n=Ch(n,255);let r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=0,s=(r+i)/2;if(r===i)o=0,a=0;else{let c=r-i;switch(o=s>.5?c/(2-r-i):c/(r+i),r){case e:a=(t-n)/c+(t<n?6:0);break;case t:a=(n-e)/c+2;break;case n:a=(e-t)/c+4;break;default:break}a/=6}return{h:a,s:o,l:s}}function Mh(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Nh(e,t,n){let r,i,a;if(e=Ch(e,360),t=Ch(t,100),n=Ch(n,100),t===0)i=n,a=n,r=n;else{let o=n<.5?n*(1+t):n+t-n*t,s=2*n-o;r=Mh(s,o,e+1/3),i=Mh(s,o,e),a=Mh(s,o,e-1/3)}return{r:r*255,g:i*255,b:a*255}}function Ph(e,t,n){e=Ch(e,255),t=Ch(t,255),n=Ch(n,255);let r=Math.max(e,t,n),i=Math.min(e,t,n),a=0,o=r,s=r-i,c=r===0?0:s/r;if(r===i)a=0;else{switch(r){case e:a=(t-n)/s+(t<n?6:0);break;case t:a=(n-e)/s+2;break;case n:a=(e-t)/s+4;break;default:break}a/=6}return{h:a,s:c,v:o}}function Fh(e,t,n){e=Ch(e,360)*6,t=Ch(t,100),n=Ch(n,100);let r=Math.floor(e),i=e-r,a=n*(1-t),o=n*(1-i*t),s=n*(1-(1-i)*t),c=r%6,l=[n,o,a,a,s,n][c],u=[s,n,n,o,a,a][c],d=[a,a,s,n,n,o][c];return{r:l*255,g:u*255,b:d*255}}function Ih(e,t,n,r){let i=[kh(Math.round(e).toString(16)),kh(Math.round(t).toString(16)),kh(Math.round(n).toString(16))];return r&&i[0].startsWith(i[0].charAt(1))&&i[1].startsWith(i[1].charAt(1))&&i[2].startsWith(i[2].charAt(1))?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(``)}function Lh(e,t,n,r,i){let a=[kh(Math.round(e).toString(16)),kh(Math.round(t).toString(16)),kh(Math.round(n).toString(16)),kh(Bh(r))];return i&&a[0].startsWith(a[0].charAt(1))&&a[1].startsWith(a[1].charAt(1))&&a[2].startsWith(a[2].charAt(1))&&a[3].startsWith(a[3].charAt(1))?a[0].charAt(0)+a[1].charAt(0)+a[2].charAt(0)+a[3].charAt(0):a.join(``)}function Rh(e,t,n,r){let i=e/100,a=t/100,o=n/100,s=r/100;return{r:255*(1-i)*(1-s),g:255*(1-a)*(1-s),b:255*(1-o)*(1-s)}}function zh(e,t,n){let r=1-e/255,i=1-t/255,a=1-n/255,o=Math.min(r,i,a);return o===1?(r=0,i=0,a=0):(r=(r-o)/(1-o)*100,i=(i-o)/(1-o)*100,a=(a-o)/(1-o)*100),o*=100,{c:Math.round(r),m:Math.round(i),y:Math.round(a),k:Math.round(o)}}function Bh(e){return Math.round(parseFloat(e)*255).toString(16)}function Vh(e){return Hh(e)/255}function Hh(e){return parseInt(e,16)}function Uh(e){return{r:e>>16,g:(e&65280)>>8,b:e&255}}var Wh={aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyan:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,goldenrod:`#daa520`,gold:`#ffd700`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,lavenderblush:`#fff0f5`,lavender:`#e6e6fa`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,steelblue:`#4682b4`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,tomato:`#ff6347`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`};function Gh(e){let t={r:0,g:0,b:0},n=1,r=null,i=null,a=null,o=!1,s=!1;return typeof e==`string`&&(e=Xh(e)),typeof e==`object`&&(Zh(e.r)&&Zh(e.g)&&Zh(e.b)?(t=Ah(e.r,e.g,e.b),o=!0,s=String(e.r).substr(-1)===`%`?`prgb`:`rgb`):Zh(e.h)&&Zh(e.s)&&Zh(e.v)?(r=Oh(e.s),i=Oh(e.v),t=Fh(e.h,r,i),o=!0,s=`hsv`):Zh(e.h)&&Zh(e.s)&&Zh(e.l)?(r=Oh(e.s),a=Oh(e.l),t=Nh(e.h,r,a),o=!0,s=`hsl`):Zh(e.c)&&Zh(e.m)&&Zh(e.y)&&Zh(e.k)&&(t=Rh(e.c,e.m,e.y,e.k),o=!0,s=`cmyk`),Object.prototype.hasOwnProperty.call(e,`a`)&&(n=e.a)),n=Dh(n),{ok:o,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Kh=`(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)`,qh=`[\\s|\\(]+(`+Kh+`)[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?`,Jh=`[\\s|\\(]+(`+Kh+`)[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))[,|\\s]+((?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?))\\s*\\)?`,Yh={CSS_UNIT:new RegExp(Kh),rgb:RegExp(`rgb`+qh),rgba:RegExp(`rgba`+Jh),hsl:RegExp(`hsl`+qh),hsla:RegExp(`hsla`+Jh),hsv:RegExp(`hsv`+qh),hsva:RegExp(`hsva`+Jh),cmyk:RegExp(`cmyk`+Jh),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Xh(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;let t=!1;if(Wh[e])e=Wh[e],t=!0;else if(e===`transparent`)return{r:0,g:0,b:0,a:0,format:`name`};let n=Yh.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=Yh.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=Yh.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=Yh.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=Yh.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=Yh.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=Yh.cmyk.exec(e),n?{c:n[1],m:n[2],y:n[3],k:n[4]}:(n=Yh.hex8.exec(e),n?{r:Hh(n[1]),g:Hh(n[2]),b:Hh(n[3]),a:Vh(n[4]),format:t?`name`:`hex8`}:(n=Yh.hex6.exec(e),n?{r:Hh(n[1]),g:Hh(n[2]),b:Hh(n[3]),format:t?`name`:`hex`}:(n=Yh.hex4.exec(e),n?{r:Hh(n[1]+n[1]),g:Hh(n[2]+n[2]),b:Hh(n[3]+n[3]),a:Vh(n[4]+n[4]),format:t?`name`:`hex8`}:(n=Yh.hex3.exec(e),n?{r:Hh(n[1]+n[1]),g:Hh(n[2]+n[2]),b:Hh(n[3]+n[3]),format:t?`name`:`hex`}:!1))))))))))}function Zh(e){return typeof e==`number`?!Number.isNaN(e):Yh.CSS_UNIT.test(e)}var Qh=class e{constructor(t=``,n={}){if(t instanceof e)return t;typeof t==`number`&&(t=Uh(t)),this.originalInput=t;let r=Gh(t);this.originalInput=t,this.r=r.r,this.g=r.g,this.b=r.b,this.a=r.a,this.roundA=Math.round(100*this.a)/100,this.format=n.format??r.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=r.ok}isDark(){return this.getBrightness()<128}isLight(){return!this.isDark()}getBrightness(){let e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3}getLuminance(){let e=this.toRgb(),t,n,r,i=e.r/255,a=e.g/255,o=e.b/255;return t=i<=.03928?i/12.92:((i+.055)/1.055)**2.4,n=a<=.03928?a/12.92:((a+.055)/1.055)**2.4,r=o<=.03928?o/12.92:((o+.055)/1.055)**2.4,.2126*t+.7152*n+.0722*r}getAlpha(){return this.a}setAlpha(e){return this.a=Dh(e),this.roundA=Math.round(100*this.a)/100,this}isMonochrome(){let{s:e}=this.toHsl();return e===0}toHsv(){let e=Ph(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}}toHsvString(){let e=Ph(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.v*100);return this.a===1?`hsv(${t}, ${n}%, ${r}%)`:`hsva(${t}, ${n}%, ${r}%, ${this.roundA})`}toHsl(){let e=jh(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}}toHslString(){let e=jh(this.r,this.g,this.b),t=Math.round(e.h*360),n=Math.round(e.s*100),r=Math.round(e.l*100);return this.a===1?`hsl(${t}, ${n}%, ${r}%)`:`hsla(${t}, ${n}%, ${r}%, ${this.roundA})`}toHex(e=!1){return Ih(this.r,this.g,this.b,e)}toHexString(e=!1){return`#`+this.toHex(e)}toHex8(e=!1){return Lh(this.r,this.g,this.b,this.a,e)}toHex8String(e=!1){return`#`+this.toHex8(e)}toHexShortString(e=!1){return this.a===1?this.toHexString(e):this.toHex8String(e)}toRgb(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}}toRgbString(){let e=Math.round(this.r),t=Math.round(this.g),n=Math.round(this.b);return this.a===1?`rgb(${e}, ${t}, ${n})`:`rgba(${e}, ${t}, ${n}, ${this.roundA})`}toPercentageRgb(){let e=e=>`${Math.round(Ch(e,255)*100)}%`;return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}}toPercentageRgbString(){let e=e=>Math.round(Ch(e,255)*100);return this.a===1?`rgb(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%)`:`rgba(${e(this.r)}%, ${e(this.g)}%, ${e(this.b)}%, ${this.roundA})`}toCmyk(){return{...zh(this.r,this.g,this.b)}}toCmykString(){let{c:e,m:t,y:n,k:r}=zh(this.r,this.g,this.b);return`cmyk(${e}, ${t}, ${n}, ${r})`}toName(){if(this.a===0)return`transparent`;if(this.a<1)return!1;let e=`#`+Ih(this.r,this.g,this.b,!1);for(let[t,n]of Object.entries(Wh))if(e===n)return t;return!1}toString(e){let t=!!e;e??=this.format;let n=!1,r=this.a<1&&this.a>=0;return!t&&r&&(e.startsWith(`hex`)||e===`name`)?e===`name`&&this.a===0?this.toName():this.toRgbString():(e===`rgb`&&(n=this.toRgbString()),e===`prgb`&&(n=this.toPercentageRgbString()),(e===`hex`||e===`hex6`)&&(n=this.toHexString()),e===`hex3`&&(n=this.toHexString(!0)),e===`hex4`&&(n=this.toHex8String(!0)),e===`hex8`&&(n=this.toHex8String()),e===`name`&&(n=this.toName()),e===`hsl`&&(n=this.toHslString()),e===`hsv`&&(n=this.toHsvString()),e===`cmyk`&&(n=this.toCmykString()),n||this.toHexString())}toNumber(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)}clone(){return new e(this.toString())}lighten(t=10){let n=this.toHsl();return n.l+=t/100,n.l=wh(n.l),new e(n)}brighten(t=10){let n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)}darken(t=10){let n=this.toHsl();return n.l-=t/100,n.l=wh(n.l),new e(n)}tint(e=10){return this.mix(`white`,e)}shade(e=10){return this.mix(`black`,e)}desaturate(t=10){let n=this.toHsl();return n.s-=t/100,n.s=wh(n.s),new e(n)}saturate(t=10){let n=this.toHsl();return n.s+=t/100,n.s=wh(n.s),new e(n)}greyscale(){return this.desaturate(100)}spin(t){let n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)}mix(t,n=50){let r=this.toRgb(),i=new e(t).toRgb(),a=n/100;return new e({r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a})}analogous(t=6,n=30){let r=this.toHsl(),i=360/n,a=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,a.push(new e(r));return a}complement(){let t=this.toHsl();return t.h=(t.h+180)%360,new e(t)}monochromatic(t=6){let n=this.toHsv(),{h:r}=n,{s:i}=n,{v:a}=n,o=[],s=1/t;for(;t--;)o.push(new e({h:r,s:i,v:a})),a=(a+s)%1;return o}splitcomplement(){let t=this.toHsl(),{h:n}=t;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]}onBackground(t){let n=this.toRgb(),r=new e(t).toRgb(),i=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})}triad(){return this.polyad(3)}tetrad(){return this.polyad(4)}polyad(t){let n=this.toHsl(),{h:r}=n,i=[this],a=360/t;for(let o=1;o<t;o++)i.push(new e({h:(r+o*a)%360,s:n.s,l:n.l}));return i}equals(t){let n=new e(t);return this.format===`cmyk`||n.format===`cmyk`?this.toCmykString()===n.toCmykString():this.toRgbString()===n.toRgbString()}},$h=[`tiny`,`compact`,`full`];function eg(e){return $h.includes(e)?e:$h[0]}var tg=[`top-left`,`top`,`top-right`,`bottom-left`,`bottom`,`bottom-right`];function ng(e){return tg.includes(e)?e:`bottom-right`}var rg={main_label:`Need help?`,start_call:`Start a call`,start_chat:`Message`,send_message:`Send`,new_call:`New call`,end_call:`End`,mute_microphone:`Mute microphone`,text_mode:`Switch to text mode`,voice_mode:`Switch to voice mode`,switched_to_text_mode:`Switched to text mode`,switched_to_voice_mode:`Switched to voice mode`,change_language:`Change language`,collapse:`Collapse`,expand:`Expand`,copied:`Copied!`,accept_terms:`Accept`,dismiss_terms:`Cancel`,listening_status:`Listening`,speaking_status:`Talk to interrupt`,connecting_status:`Connecting`,chatting_status:`Chatting with AI Agent`,input_label:`Text message input`,input_placeholder:`Send a message...`,input_placeholder_text_only:`Send a message...`,input_placeholder_new_conversation:`Start a new conversation`,user_ended_conversation:`You ended the conversation`,agent_ended_conversation:`The agent ended the conversation`,conversation_id:`ID`,error_occurred:`An error occurred`,copy_id:`Copy ID`,initiate_feedback:`How was this conversation?`,request_follow_up_feedback:`Tell us more`,thanks_for_feedback:`Thank you for your feedback!`,thanks_for_feedback_details:`Your feedback helps us improve our service and better support you in the future.`,follow_up_feedback_placeholder:`Tell us more about your experience...`,submit:`Submit`,go_back:`Go back`,copy:`Copy`,download:`Download`,wrap:`Wrap`,agent_working:`Working...`,agent_done:`Completed`,agent_error:`Error occurred`,attach_file:`Attach file`,remove_file:`Remove file`,file_upload_error:`Failed to upload file.`,file_type_unsupported:`Unsupported file type. Accepted types:`,file_too_large:`File size exceeds the maximum limit.`,file_limit_reached:`Maximum number of files for this conversation reached.`,typing_indicator:`Agent is typing ...`},ig=Object.keys(rg),ag={base:`#ffffff`,base_hover:`#f9fafb`,base_active:`#f3f4f6`,base_border:`#e5e7eb`,base_subtle:`#6b7280`,base_primary:`#000000`,base_error:`#ef4444`,accent:`#000000`,accent_hover:`#1f2937`,accent_active:`#374151`,accent_border:`#4b5563`,accent_subtle:`#6b7280`,accent_primary:`#ffffff`,overlay_padding:32,button_radius:18,input_radius:10,bubble_radius:15,sheet_radius:`calc(var(--el-button-radius) + 6px)`,compact_sheet_radius:`calc(var(--el-button-radius) + 12px)`,dropdown_sheet_radius:`calc(var(--el-input-radius) + 6px)`},og=Object.keys(ag);function sg(e=`us`){switch(e){case`eu-residency`:case`in-residency`:case`us`:case`global`:return e;default:return console.warn(`[ConversationalAI] Invalid server-location: ${e}. Defaulting to "us"`),`us`}}function cg(e){let t=hf(e);if(t==null)throw Error(`${e.displayName} cannot be used outside of provider`);return t}var lg=Fd(null);function ug({value:e,children:t}){let n=mf(()=>Object.fromEntries(xh.map(t=>[t,Vp(e[t])])),[]);return xh.forEach(t=>{n[t].value=e[t]}),R(lg.Provider,{value:n,children:t})}function dg(){return cg(lg)}function fg(e){return dg()[e]}var pg=Fd(null);function mg({children:e}){let t=fg(`server-location`),n=mf(()=>{let e=Kp(()=>sg(t.value)),n={us:`https://api.us.elevenlabs.io`,"eu-residency":`https://api.eu.residency.elevenlabs.io`,"in-residency":`https://api.in.residency.elevenlabs.io`,global:`https://api.elevenlabs.io`},r={us:`wss://api.us.elevenlabs.io`,"eu-residency":`wss://api.eu.residency.elevenlabs.io`,"in-residency":`wss://api.in.residency.elevenlabs.io`,global:`wss://api.elevenlabs.io`};return{location:e,serverUrl:Kp(()=>n[e.value]),webSocketUrl:Kp(()=>r[e.value])}},[]);return R(pg.Provider,{value:n,children:e})}function hg(){return cg(pg)}var gg={en:{name:`English`,flagCode:`us`,languageCode:`en`},zh:{name:`中文`,flagCode:`cn`,languageCode:`zh`},es:{name:`Español`,flagCode:`es`,languageCode:`es`},hi:{name:`हिन्दी`,flagCode:`in`,languageCode:`hi`},pt:{name:`Português (Portugal)`,flagCode:`pt`,languageCode:`pt`},"pt-br":{name:`Português (Brasil)`,flagCode:`br`,languageCode:`pt-br`},fr:{name:`Français`,flagCode:`fr`,languageCode:`fr`},de:{name:`Deutsch`,flagCode:`de`,languageCode:`de`},ja:{name:`日本語`,flagCode:`jp`,languageCode:`ja`},ar:{name:`العربية`,flagCode:`ae`,languageCode:`ar`},ru:{name:`Русский`,flagCode:`ru`,languageCode:`ru`},ko:{name:`한국어`,flagCode:`kr`,languageCode:`ko`},id:{name:`Bahasa Indonesia`,flagCode:`id`,languageCode:`id`},it:{name:`Italiano`,flagCode:`it`,languageCode:`it`},nl:{name:`Nederlands`,flagCode:`nl`,languageCode:`nl`},tr:{name:`Türkçe`,flagCode:`tr`,languageCode:`tr`},pl:{name:`Polski`,flagCode:`pl`,languageCode:`pl`},sv:{name:`Svenska`,flagCode:`se`,languageCode:`sv`},ms:{name:`Bahasa Melayu`,flagCode:`my`,languageCode:`ms`},ro:{name:`Română`,flagCode:`ro`,languageCode:`ro`},uk:{name:`Українська`,flagCode:`ua`,languageCode:`uk`},el:{name:`Ελληνικά`,flagCode:`gr`,languageCode:`el`},cs:{name:`Čeština`,flagCode:`cz`,languageCode:`cs`},da:{name:`Dansk`,flagCode:`dk`,languageCode:`da`},fi:{name:`Suomi`,flagCode:`fi`,languageCode:`fi`},bg:{name:`Български`,flagCode:`bg`,languageCode:`bg`},hr:{name:`Hrvatski`,flagCode:`hr`,languageCode:`hr`},sk:{name:`Slovenčina`,flagCode:`sk`,languageCode:`sk`},ta:{name:`தமிழ்`,flagCode:`in`,languageCode:`ta`},hu:{name:`Magyar`,flagCode:`hu`,languageCode:`hu`},no:{name:`Norsk`,flagCode:`no`,languageCode:`no`},vi:{name:`Tiếng Việt`,flagCode:`vn`,languageCode:`vi`},tl:{name:`Filipino`,flagCode:`ph`,languageCode:`tl`},af:{name:`Afrikaans`,flagCode:`za`,languageCode:`af`},hy:{name:`Հայերեն`,flagCode:`am`,languageCode:`hy`},as:{name:`অসমীয়া`,flagCode:`in`,languageCode:`as`},az:{name:`Azərbaycan`,flagCode:`az`,languageCode:`az`},be:{name:`Беларуская`,flagCode:`by`,languageCode:`be`},bn:{name:`বাংলা`,flagCode:`in`,languageCode:`bn`},bs:{name:`Bosanski`,flagCode:`ba`,languageCode:`bs`},ca:{name:`Català`,flagCode:`es-ct`,languageCode:`ca`},et:{name:`Eesti`,flagCode:`ee`,languageCode:`et`},gl:{name:`Galego`,flagCode:`es-ga`,languageCode:`gl`},ka:{name:`ქართული`,flagCode:`ge`,languageCode:`ka`},gu:{name:`ગુજરાતી`,flagCode:`in`,languageCode:`gu`},ha:{name:`Hausa`,flagCode:`ng`,languageCode:`ha`},he:{name:`עברית`,flagCode:`il`,languageCode:`he`},is:{name:`Íslenska`,flagCode:`is`,languageCode:`is`},ga:{name:`Gaeilge`,flagCode:`ie`,languageCode:`ga`},jv:{name:`Basa Jawa`,flagCode:`id`,languageCode:`jv`},kn:{name:`ಕನ್ನಡ`,flagCode:`in`,languageCode:`kn`},kk:{name:`Қазақша`,flagCode:`kz`,languageCode:`kk`},ky:{name:`Кыргызча`,flagCode:`kg`,languageCode:`ky`},lv:{name:`Latviešu`,flagCode:`lv`,languageCode:`lv`},lt:{name:`Lietuvių`,flagCode:`lt`,languageCode:`lt`},lb:{name:`Lëtzebuergesch`,flagCode:`lu`,languageCode:`lb`},mk:{name:`Македонски`,flagCode:`mk`,languageCode:`mk`},ml:{name:`മലയാളം`,flagCode:`in`,languageCode:`ml`},mr:{name:`मराठी`,flagCode:`in`,languageCode:`mr`},ne:{name:`नेपाली`,flagCode:`np`,languageCode:`ne`},ps:{name:`پښتو`,flagCode:`af`,languageCode:`ps`},fa:{name:`فارسی`,flagCode:`ir`,languageCode:`fa`},pa:{name:`ਪੰਜਾਬੀ`,flagCode:`in`,languageCode:`pa`},sr:{name:`Српски`,flagCode:`rs`,languageCode:`sr`},sd:{name:`سنڌي`,flagCode:`in`,languageCode:`sd`},sl:{name:`Slovenščina`,flagCode:`si`,languageCode:`sl`},so:{name:`Soomaali`,flagCode:`so`,languageCode:`so`},sw:{name:`Kiswahili`,flagCode:`ke`,languageCode:`sw`},te:{name:`తెలుగు`,flagCode:`in`,languageCode:`te`},th:{name:`ไทย`,flagCode:`th`,languageCode:`th`},ur:{name:`اردو`,flagCode:`pk`,languageCode:`ur`},cy:{name:`Cymraeg`,flagCode:`gb-wls`,languageCode:`cy`}};function _g(e){return Object.keys(gg).includes(e??``)}var vg=`xi:convai-widget-last-used-language`,yg=Fd(null);function bg(){try{let e=localStorage.getItem(vg);if(e&&_g(e))return e}catch{}}function xg(){try{let e=[];for(let t of navigator.languages){let n=t.toLowerCase();e.push(n);let r=n.split(`-`)[0];r!==n&&e.push(r)}return e}catch(e){return console.warn(`[ConversationalAI] Could not read navigator.languages:`,e),[]}}function Sg({languageAttribute:e,supported:t,defaultLanguage:n}){let r=new Set([...t,n]),i=[e,bg(),...xg()];for(let e of i)if(e&&r.has(e))return e;return n}function Cg(e){try{localStorage.setItem(vg,e)}catch{}}function wg({children:e}){let t=fb(),n=fg(`language`),r=fg(`override-language`),i=L(()=>(t.value.supported_language_overrides??[]).filter(_g)),a=n.peek(),o=t.peek(),s=(o.supported_language_overrides??[]).filter(_g),c=cm(Sg({languageAttribute:a&&_g(a)?a:void 0,supported:s,defaultLanguage:o.language})),l=L(()=>i.value.map(e=>gg[e]).sort((e,t)=>e.name.localeCompare(t.name))),u=mf(()=>({language:Kp(()=>_g(r.value)?gg[r.value]:_g(c.value)&&i.value.includes(c.value)?gg[c.value]:gg[t.value.language]),setLanguage:e=>{c.value=e,Cg(e)},options:l,showPicker:Kp(()=>l.value.length>0)}),[]);return R(yg.Provider,{value:u,children:e})}function Tg(){return cg(yg)}var Eg=Fd(null);function Dg({children:e}){let{language:t}=Tg(),n=fg(`override-prompt`),r=fg(`override-llm`),i=fg(`override-speed`),a=fg(`override-stability`),o=fg(`override-similarity-boost`),s=fg(`override-first-message`),c=fg(`override-voice-id`),l=fg(`override-text-only`),u=fg(`user-id`),d=L(()=>({agent:{prompt:{prompt:n.value,llm:r.value},firstMessage:s.value,language:t.value.languageCode},tts:{voiceId:c.value,speed:i.value?parseFloat(i.value):void 0,stability:a.value?parseFloat(a.value):void 0,similarityBoost:o.value?parseFloat(o.value):void 0},conversation:{textOnly:bh(l.value)??void 0}})),f=fg(`dynamic-variables`),p=L(()=>{if(f.value)try{return JSON.parse(f.value)}catch(e){console.error(`[ConversationalAI] Cannot parse dynamic-variables: ${e?.message}`)}}),m=fg(`worklet-path-raw-audio-processor`),h=fg(`worklet-path-audio-concat-processor`),g=fg(`worklet-path-libsamplerate`),{webSocketUrl:_}=hg(),v=fg(`agent-id`),y=fg(`signed-url`),b=fg(`environment`),x=pb(),S=xb(),C=L(()=>{let e=S.value,t={dynamicVariables:p.value,overrides:d.value,connectionDelay:{default:300},textOnly:x.value,userId:u.value||void 0,environment:b.value||void 0,libsampleratePath:g.value,workletPaths:{rawAudioProcessor:m.value,audioConcatProcessor:h.value}};return v.value?e?{agentId:v.value,origin:_.value,connectionType:`webrtc`,...t}:{agentId:v.value,origin:_.value,connectionType:`websocket`,...t}:y.value?{signedUrl:y.value,connectionType:`websocket`,...t}:(console.error(`[ConversationalAI] Either agent-id or signed-url is required`),null)});return C.value?R(Eg.Provider,{value:C,children:e}):null}function Og(){return cg(Eg)}var kg=`5.2.0`;function Ag(e,t){return new Promise(n=>setTimeout(n,e,t))}function jg(){return new Promise(e=>{let t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(null)})}function Mg(e,t=1/0){let{requestIdleCallback:n}=window;return n?new Promise(e=>n.call(window,()=>e(),{timeout:t})):Ag(Math.min(e,t))}function Ng(e){return!!e&&typeof e.then==`function`}function Pg(e,t){try{let n=e();Ng(n)?n.then(e=>t(!0,e),e=>t(!1,e)):t(!0,n)}catch(e){t(!1,e)}}async function Fg(e,t,n=16){let r=Array(e.length),i=Date.now();for(let a=0;a<e.length;++a){r[a]=t(e[a],a);let o=Date.now();o>=i+n&&(i=o,await jg())}return r}function Ig(e){return e.then(void 0,()=>void 0),e}function Lg(e,t){for(let n=0,r=e.length;n<r;++n)if(e[n]===t)return!0;return!1}function Rg(e,t){return!Lg(e,t)}function zg(e){return parseInt(e)}function Bg(e){return parseFloat(e)}function Vg(e,t){return typeof e==`number`&&isNaN(e)?t:e}function Hg(e){return e.reduce((e,t)=>e+ +!!t,0)}function Ug(e,t=1){if(Math.abs(t)>=1)return Math.round(e/t)*t;{let n=1/t;return Math.round(e*n)/n}}function Wg(e){let t=`Unexpected syntax '${e}'`,n=/^\s*([a-z-]*)(.*)$/i.exec(e),r=n[1]||void 0,i={},a=/([.:#][\w-]+|\[.+?\])/gi,o=(e,t)=>{i[e]=i[e]||[],i[e].push(t)};for(;;){let e=a.exec(n[2]);if(!e)break;let r=e[0];switch(r[0]){case`.`:o(`class`,r.slice(1));break;case`#`:o(`id`,r.slice(1));break;case`[`:{let e=/^\[([\w-]+)([~|^$*]?=("(.*?)"|([\w-]+)))?(\s+[is])?\]$/.exec(r);if(e)o(e[1],e[4]??e[5]??``);else throw Error(t);break}default:throw Error(t)}}return[r,i]}function Gg(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r>127)return new TextEncoder().encode(e);t[n]=r}return t}function Kg(e,t){let n=e[0]>>>16,r=e[0]&65535,i=e[1]>>>16,a=e[1]&65535,o=t[0]>>>16,s=t[0]&65535,c=t[1]>>>16,l=t[1]&65535,u=0,d=0,f=0,p=0;p+=a+l,f+=p>>>16,p&=65535,f+=i+c,d+=f>>>16,f&=65535,d+=r+s,u+=d>>>16,d&=65535,u+=n+o,u&=65535,e[0]=u<<16|d,e[1]=f<<16|p}function qg(e,t){let n=e[0]>>>16,r=e[0]&65535,i=e[1]>>>16,a=e[1]&65535,o=t[0]>>>16,s=t[0]&65535,c=t[1]>>>16,l=t[1]&65535,u=0,d=0,f=0,p=0;p+=a*l,f+=p>>>16,p&=65535,f+=i*l,d+=f>>>16,f&=65535,f+=a*c,d+=f>>>16,f&=65535,d+=r*l,u+=d>>>16,d&=65535,d+=i*c,u+=d>>>16,d&=65535,d+=a*s,u+=d>>>16,d&=65535,u+=n*l+r*c+i*s+a*o,u&=65535,e[0]=u<<16|d,e[1]=f<<16|p}function Jg(e,t){let n=e[0];t%=64,t===32?(e[0]=e[1],e[1]=n):t<32?(e[0]=n<<t|e[1]>>>32-t,e[1]=e[1]<<t|n>>>32-t):(t-=32,e[0]=e[1]<<t|n>>>32-t,e[1]=n<<t|e[1]>>>32-t)}function Yg(e,t){t%=64,t!==0&&(t<32?(e[0]=e[1]>>>32-t,e[1]<<=t):(e[0]=e[1]<<t-32,e[1]=0))}function Xg(e,t){e[0]^=t[0],e[1]^=t[1]}var Zg=[4283543511,3981806797],Qg=[3301882366,444984403];function $g(e){let t=[0,e[0]>>>1];Xg(e,t),qg(e,Zg),t[1]=e[0]>>>1,Xg(e,t),qg(e,Qg),t[1]=e[0]>>>1,Xg(e,t)}var e_=[2277735313,289559509],t_=[1291169091,658871167],n_=[0,5],r_=[0,1390208809],i_=[0,944331445];function a_(e,t){let n=Gg(e);t||=0;let r=[0,n.length],i=r[1]%16,a=r[1]-i,o=[0,t],s=[0,t],c=[0,0],l=[0,0],u;for(u=0;u<a;u+=16)c[0]=n[u+4]|n[u+5]<<8|n[u+6]<<16|n[u+7]<<24,c[1]=n[u]|n[u+1]<<8|n[u+2]<<16|n[u+3]<<24,l[0]=n[u+12]|n[u+13]<<8|n[u+14]<<16|n[u+15]<<24,l[1]=n[u+8]|n[u+9]<<8|n[u+10]<<16|n[u+11]<<24,qg(c,e_),Jg(c,31),qg(c,t_),Xg(o,c),Jg(o,27),Kg(o,s),qg(o,n_),Kg(o,r_),qg(l,t_),Jg(l,33),qg(l,e_),Xg(s,l),Jg(s,31),Kg(s,o),qg(s,n_),Kg(s,i_);c[0]=0,c[1]=0,l[0]=0,l[1]=0;let d=[0,0];switch(i){case 15:d[1]=n[u+14],Yg(d,48),Xg(l,d);case 14:d[1]=n[u+13],Yg(d,40),Xg(l,d);case 13:d[1]=n[u+12],Yg(d,32),Xg(l,d);case 12:d[1]=n[u+11],Yg(d,24),Xg(l,d);case 11:d[1]=n[u+10],Yg(d,16),Xg(l,d);case 10:d[1]=n[u+9],Yg(d,8),Xg(l,d);case 9:d[1]=n[u+8],Xg(l,d),qg(l,t_),Jg(l,33),qg(l,e_),Xg(s,l);case 8:d[1]=n[u+7],Yg(d,56),Xg(c,d);case 7:d[1]=n[u+6],Yg(d,48),Xg(c,d);case 6:d[1]=n[u+5],Yg(d,40),Xg(c,d);case 5:d[1]=n[u+4],Yg(d,32),Xg(c,d);case 4:d[1]=n[u+3],Yg(d,24),Xg(c,d);case 3:d[1]=n[u+2],Yg(d,16),Xg(c,d);case 2:d[1]=n[u+1],Yg(d,8),Xg(c,d);case 1:d[1]=n[u],Xg(c,d),qg(c,e_),Jg(c,31),qg(c,t_),Xg(o,c)}return Xg(o,r),Xg(s,r),Kg(o,s),Kg(s,o),$g(o),$g(s),Kg(o,s),Kg(s,o),(`00000000`+(o[0]>>>0).toString(16)).slice(-8)+(`00000000`+(o[1]>>>0).toString(16)).slice(-8)+(`00000000`+(s[0]>>>0).toString(16)).slice(-8)+(`00000000`+(s[1]>>>0).toString(16)).slice(-8)}function o_(e){return{name:e.name,message:e.message,stack:e.stack?.split(`
271
271
  `),...e}}function s_(e){return/^function\s.*?\{\s*\[native code]\s*}$/.test(String(e))}function c_(e){return typeof e!=`function`}function l_(e,t){let n=Ig(new Promise(n=>{let r=Date.now();Pg(e.bind(null,t),(...e)=>{let t=Date.now()-r;if(!e[0])return n(()=>({error:e[1],duration:t}));let i=e[1];if(c_(i))return n(()=>({value:i,duration:t}));n(()=>new Promise(e=>{let n=Date.now();Pg(i,(...r)=>{let i=t+Date.now()-n;if(!r[0])return e({error:r[1],duration:i});e({value:r[1],duration:i})})}))})}));return function(){return n.then(e=>e())}}function u_(e,t,n,r){let i=Object.keys(e).filter(e=>Rg(n,e)),a=Ig(Fg(i,n=>l_(e[n],t),r));return async function(){let e=await Fg(await a,e=>Ig(e()),r),t=await Promise.all(e),n={};for(let e=0;e<i.length;++e)n[i[e]]=t[e];return n}}function d_(){let e=window,t=navigator;return Hg([`MSCSSMatrix`in e,`msSetImmediate`in e,`msIndexedDB`in e,`msMaxTouchPoints`in t,`msPointerEnabled`in t])>=4}function f_(){let e=window,t=navigator;return Hg([`msWriteProfilerMark`in e,`MSStream`in e,`msLaunchUri`in t,`msSaveBlob`in t])>=3&&!d_()}function p_(){let e=window,t=navigator;return Hg([`webkitPersistentStorage`in t,`webkitTemporaryStorage`in t,(t.vendor||``).indexOf(`Google`)===0,`webkitResolveLocalFileSystemURL`in e,`BatteryManager`in e,`webkitMediaStream`in e,`webkitSpeechGrammar`in e])>=5}function m_(){let e=window,t=navigator;return Hg([`ApplePayError`in e,`CSSPrimitiveValue`in e,`Counter`in e,t.vendor.indexOf(`Apple`)===0,`RGBColor`in e,`WebKitMediaKeys`in e])>=4}function h_(){let e=window,{HTMLElement:t,Document:n}=e;return Hg([`safari`in e,!(`ongestureend`in e),!(`TouchEvent`in e),!(`orientation`in e),t&&!(`autocapitalize`in t.prototype),n&&`pointerLockElement`in n.prototype])>=4}function g_(){let e=window;return s_(e.print)&&String(e.browser)===`[object WebPageNamespace]`}function __(){let e=window;return Hg([`buildID`in navigator,`MozAppearance`in(document.documentElement?.style??{}),`onmozfullscreenchange`in e,`mozInnerScreenX`in e,`CSSMozDocumentRule`in e,`CanvasCaptureMediaStream`in e])>=4}function v_(){let e=window,t=navigator,{CSS:n}=e;return Hg([`userActivation`in t,n.supports(`color`,`light-dark(#000, #fff)`),n.supports(`height`,`1lh`),`globalPrivacyControl`in t])>=3}function y_(){let{CSS:e}=window;return Hg([e.supports(`selector(::details-content)`),e.supports(`selector(::before::marker)`),e.supports(`selector(::after::marker)`),!(`locale`in CompositionEvent.prototype)])>=3}function b_(){let e=window;return Hg([!(`MediaSettingsRange`in e),`RTCEncodedAudioFrame`in e,``+e.Intl==`[object Intl]`,``+e.Reflect==`[object Reflect]`])>=3}function x_(){let e=window,{URLPattern:t}=e;return Hg([`union`in Set.prototype,`Iterator`in e,t&&`hasRegExpGroups`in t.prototype,`RGB8`in WebGLRenderingContext.prototype])>=3}function S_(){let e=window,t=document,{CSS:n,Promise:r,AudioContext:i}=e;return Hg([r&&`try`in r,`caretPositionFromPoint`in t,i&&`onerror`in i.prototype,n.supports(`ruby-align`,`space-around`)])>=3}function C_(){let e=window;return Hg([`DOMRectList`in e,`RTCPeerConnectionIceEvent`in e,`SVGGeometryElement`in e,`ontransitioncancel`in e])>=3}function w_(){let e=window,t=navigator,{CSS:n,HTMLButtonElement:r}=e;return Hg([!(`getStorageUpdates`in t),r&&`popover`in r.prototype,`CSSCounterStyleRule`in e,n.supports(`font-size-adjust: ex-height 0.5`),n.supports(`text-transform: full-width`)])>=4}function T_(){if(navigator.platform===`iPad`)return!0;let e=screen,t=e.width/e.height;return Hg([`MediaSource`in window,!!Element.prototype.webkitRequestFullscreen,t>.65&&t<1.53])>=2}function E_(){let e=document;return e.fullscreenElement||e.msFullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||null}function D_(){let e=document;return(e.exitFullscreen||e.msExitFullscreen||e.mozCancelFullScreen||e.webkitExitFullscreen).call(e)}function O_(){let e=p_(),t=__(),n=window,r=navigator,i=`connection`;return e?Hg([!(`SharedWorker`in n),r[i]&&`ontypechange`in r[i],!(`sinkId`in new Audio)])>=2:t?Hg([`onorientationchange`in n,`orientation`in n,/android/i.test(r.appVersion)])>=2:!1}function k_(){let e=navigator,t=window,n=Audio.prototype,{visualViewport:r}=t;return Hg([`srLatency`in n,`srChannelCount`in n,`devicePosture`in e,r&&`segments`in r,`getTextInformation`in Image.prototype])>=3}function A_(){return N_()?-4:j_()}function j_(){let e=window,t=e.OfflineAudioContext||e.webkitOfflineAudioContext;if(!t)return-2;if(M_())return-1;let n=new t(1,5e3,44100),r=n.createOscillator();r.type=`triangle`,r.frequency.value=1e4;let i=n.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.25,r.connect(i),i.connect(n.destination),r.start(0);let[a,o]=P_(n),s=Ig(a.then(e=>F_(e.getChannelData(0).subarray(4500)),e=>{if(e.name===`timeout`||e.name===`suspended`)return-3;throw e}));return()=>(o(),s)}function M_(){return m_()&&!h_()&&!C_()}function N_(){return m_()&&w_()&&g_()||p_()&&k_()&&x_()}function P_(e){let t=()=>void 0;return[new Promise((n,r)=>{let i=!1,a=0,o=0;e.oncomplete=e=>n(e.renderedBuffer);let s=()=>{setTimeout(()=>r(I_(`timeout`)),Math.min(500,o+5e3-Date.now()))},c=()=>{try{let t=e.startRendering();switch(Ng(t)&&Ig(t),e.state){case`running`:o=Date.now(),i&&s();break;case`suspended`:document.hidden||a++,i&&a>=3?r(I_(`suspended`)):setTimeout(c,500);break}}catch(e){r(e)}};c(),t=()=>{i||(i=!0,o>0&&s())}}),t]}function F_(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function I_(e){let t=Error(e);return t.name=e,t}async function L_(e,t,n=50){var r;let i=document;for(;!i.body;)await Ag(n);let a=i.createElement(`iframe`);try{for(await new Promise((e,n)=>{let r=!1,o=()=>{r=!0,e()};a.onload=o,a.onerror=e=>{r=!0,n(e)};let{style:s}=a;s.setProperty(`display`,`block`,`important`),s.position=`absolute`,s.top=`0`,s.left=`0`,s.visibility=`hidden`,t&&`srcdoc`in a?a.srcdoc=t:a.src=`about:blank`,i.body.appendChild(a);let c=()=>{r||(a.contentWindow?.document?.readyState===`complete`?o():setTimeout(c,10))};c()});!a.contentWindow?.document?.body;)await Ag(n);return await e(a,a.contentWindow)}finally{(r=a.parentNode)==null||r.removeChild(a)}}function R_(e){let[t,n]=Wg(e),r=document.createElement(t??`div`);for(let e of Object.keys(n)){let t=n[e].join(` `);e===`style`?z_(r.style,t):r.setAttribute(e,t)}return r}function z_(e,t){for(let n of t.split(`;`)){let t=/^\s*([\w-]+)\s*:\s*(.+?)(\s*!([\w-]+))?\s*$/.exec(n);if(t){let[,n,r,,i]=t;e.setProperty(n,r,i||``)}}}function B_(){let e=window;for(;;){let t=e.parent;if(!t||t===e)return!1;try{if(t.location.origin!==e.location.origin)return!0}catch(e){if(e instanceof Error&&e.name===`SecurityError`)return!0;throw e}e=t}}var V_=`mmMwWLliI0O&1`,H_=`48px`,U_=[`monospace`,`sans-serif`,`serif`],W_=`sans-serif-thin.ARNO PRO.Agency FB.Arabic Typesetting.Arial Unicode MS.AvantGarde Bk BT.BankGothic Md BT.Batang.Bitstream Vera Sans Mono.Calibri.Century.Century Gothic.Clarendon.EUROSTILE.Franklin Gothic.Futura Bk BT.Futura Md BT.GOTHAM.Gill Sans.HELV.Haettenschweiler.Helvetica Neue.Humanst521 BT.Leelawadee.Letter Gothic.Levenim MT.Lucida Bright.Lucida Sans.Menlo.MS Mincho.MS Outlook.MS Reference Specialty.MS UI Gothic.MT Extra.MYRIAD PRO.Marlett.Meiryo UI.Microsoft Uighur.Minion Pro.Monotype Corsiva.PMingLiU.Pristina.SCRIPTINA.Segoe UI Light.Serifa.SimHei.Small Fonts.Staccato222 BT.TRAJAN PRO.Univers CE 55 Medium.Vrinda.ZWAdobeF`.split(`.`);function G_(){return L_(async(e,{document:t})=>{let n=t.body;n.style.fontSize=H_;let r=t.createElement(`div`);r.style.setProperty(`visibility`,`hidden`,`important`);let i={},a={},o=e=>{let n=t.createElement(`span`),{style:i}=n;return i.position=`absolute`,i.top=`0`,i.left=`0`,i.fontFamily=e,n.textContent=V_,r.appendChild(n),n},s=(e,t)=>o(`'${e}',${t}`),c=()=>U_.map(o),l=()=>{let e={};for(let t of W_)e[t]=U_.map(e=>s(t,e));return e},u=e=>U_.some((t,n)=>e[n].offsetWidth!==i[t]||e[n].offsetHeight!==a[t]),d=c(),f=l();n.appendChild(r);for(let e=0;e<U_.length;e++)i[U_[e]]=d[e].offsetWidth,a[U_[e]]=d[e].offsetHeight;return W_.filter(e=>u(f[e]))})}function K_(){let e=navigator.plugins;if(!e)return;let t=[];for(let n=0;n<e.length;++n){let r=e[n];if(!r)continue;let i=[];for(let e=0;e<r.length;++e){let t=r[e];i.push({type:t.type,suffixes:t.suffixes})}t.push({name:r.name,description:r.description,mimeTypes:i})}return t}function q_(){return J_(nv())}function J_(e){let t=!1,n,r,[i,a]=Y_();return X_(i,a)?(t=Z_(a),e?n=r=`skipped`:[n,r]=Q_(i,a)):n=r=`unsupported`,{winding:t,geometry:n,text:r}}function Y_(){let e=document.createElement(`canvas`);return e.width=1,e.height=1,[e,e.getContext(`2d`)]}function X_(e,t){return!!(t&&e.toDataURL)}function Z_(e){return e.rect(0,0,10,10),e.rect(2,2,6,6),!e.isPointInPath(5,5,`evenodd`)}function Q_(e,t){$_(e,t);let n=tv(e);return n===tv(e)?(ev(e,t),[tv(e),n]):[`unstable`,`unstable`]}function $_(e,t){e.width=240,e.height=60,t.textBaseline=`alphabetic`,t.fillStyle=`#f60`,t.fillRect(100,1,62,20),t.fillStyle=`#069`,t.font=`11pt "Times New Roman"`;let n=`Cwm fjordbank gly ${String.fromCharCode(55357,56835)}`;t.fillText(n,2,15),t.fillStyle=`rgba(102, 204, 0, 0.2)`,t.font=`18pt Arial`,t.fillText(n,4,45)}function ev(e,t){e.width=122,e.height=110,t.globalCompositeOperation=`multiply`;for(let[e,n,r]of[[`#f2f`,40,40],[`#2ff`,80,40],[`#ff2`,60,80]])t.fillStyle=e,t.beginPath(),t.arc(n,r,40,0,Math.PI*2,!0),t.closePath(),t.fill();t.fillStyle=`#f9c`,t.arc(60,60,60,0,Math.PI*2,!0),t.arc(60,60,20,0,Math.PI*2,!0),t.fill(`evenodd`)}function tv(e){return e.toDataURL()}function nv(){let e=m_()&&w_()&&g_(),t=__()&&v_();return e||t}function rv(){let e=navigator,t=0,n;e.maxTouchPoints===void 0?e.msMaxTouchPoints!==void 0&&(t=e.msMaxTouchPoints):t=zg(e.maxTouchPoints);try{document.createEvent(`TouchEvent`),n=!0}catch{n=!1}let r=`ontouchstart`in window;return{maxTouchPoints:t,touchEvent:n,touchStart:r}}function iv(){return navigator.oscpu}function av(){let e=navigator,t=[],n=e.language||e.userLanguage||e.browserLanguage||e.systemLanguage;if(n!==void 0&&t.push([n]),Array.isArray(e.languages))p_()&&b_()||t.push(e.languages);else if(typeof e.languages==`string`){let n=e.languages;n&&t.push(n.split(`,`))}return t}function ov(){return window.screen.colorDepth}function sv(){return Vg(Bg(navigator.deviceMemory),void 0)}function cv(){if(!(m_()&&w_()&&g_()))return lv()}function lv(){let e=screen,t=e=>Vg(zg(e),null),n=[t(e.width),t(e.height)];return n.sort().reverse(),n}var uv=2500,dv=10,fv,pv;function mv(){if(pv!==void 0)return;let e=()=>{let t=_v();vv(t)?pv=setTimeout(e,uv):(fv=t,pv=void 0)};e()}function hv(){return mv(),async()=>{let e=_v();if(vv(e)){if(fv)return[...fv];E_()&&(await D_(),e=_v())}return vv(e)||(fv=e),e}}function gv(){let e=m_()&&w_()&&g_(),t=__()&&y_();if(e||t)return()=>Promise.resolve(void 0);let n=hv();return async()=>{let e=await n(),t=e=>e===null?null:Ug(e,dv);return[t(e[0]),t(e[1]),t(e[2]),t(e[3])]}}function _v(){let e=screen;return[Vg(Bg(e.availTop),null),Vg(Bg(e.width)-Bg(e.availWidth)-Vg(Bg(e.availLeft),0),null),Vg(Bg(e.height)-Bg(e.availHeight)-Vg(Bg(e.availTop),0),null),Vg(Bg(e.availLeft),null)]}function vv(e){for(let t=0;t<4;++t)if(e[t])return!1;return!0}function yv(){let e=bv();return e!==void 0&&__()&&y_()?e>=8?8:4:e}function bv(){return Vg(zg(navigator.hardwareConcurrency),void 0)}function xv(){let e=window.Intl?.DateTimeFormat;if(e){let t=new e().resolvedOptions().timeZone;if(t)return t}let t=-Sv();return`UTC${t>=0?`+`:``}${t}`}function Sv(){let e=new Date().getFullYear();return Math.max(Bg(new Date(e,0,1).getTimezoneOffset()),Bg(new Date(e,6,1).getTimezoneOffset()))}function Cv(){try{return!!window.sessionStorage}catch{return!0}}function wv(){try{return!!window.localStorage}catch{return!0}}function Tv(){if(!(d_()||f_()))try{return!!window.indexedDB}catch{return!0}}function Ev(){return!!window.openDatabase}function Dv(){return navigator.cpuClass}function Ov(){let{platform:e}=navigator;return e===`MacIntel`&&m_()&&!h_()?T_()?`iPad`:`iPhone`:e}function kv(){return navigator.vendor||``}function Av(){let e=[];for(let t of[`chrome`,`safari`,`__crWeb`,`__gCrWeb`,`yandex`,`__yb`,`__ybro`,`__firefox__`,`__edgeTrackingPreventionStatistics`,`webkit`,`oprt`,`samsungAr`,`ucweb`,`UCShellJava`,`puffinDevice`]){let n=window[t];n&&typeof n==`object`&&e.push(t)}return e.sort()}function jv(){let e=document;try{e.cookie=`cookietest=1; SameSite=Strict;`;let t=e.cookie.indexOf(`cookietest=`)!==-1;return e.cookie=`cookietest=1; SameSite=Strict; expires=Thu, 01-Jan-1970 00:00:01 GMT`,t}catch{return!1}}function Mv(){let e=atob;return{abpIndo:[`#Iklan-Melayang`,`#Kolom-Iklan-728`,`#SidebarIklan-wrapper`,`[title="ALIENBOLA" i]`,e(`I0JveC1CYW5uZXItYWRz`)],abpvn:[`.quangcao`,`#mobileCatfish`,e(`LmNsb3NlLWFkcw==`),`[id^="bn_bottom_fixed_"]`,`#pmadv`],adBlockFinland:[`.mainostila`,e(`LnNwb25zb3JpdA==`),`.ylamainos`,e(`YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd`),e(`YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd`)],adBlockPersian:[`#navbar_notice_50`,`.kadr`,`TABLE[width="140px"]`,`#divAgahi`,e(`YVtocmVmXj0iaHR0cDovL2cxLnYuZndtcm0ubmV0L2FkLyJd`)],adBlockWarningRemoval:[`#adblock-honeypot`,`.adblocker-root`,`.wp_adblock_detect`,e(`LmhlYWRlci1ibG9ja2VkLWFk`),e(`I2FkX2Jsb2NrZXI=`)],adGuardAnnoyances:[`.hs-sosyal`,`#cookieconsentdiv`,`div[class^="app_gdpr"]`,`.as-oil`,`[data-cypress="soft-push-notification-modal"]`],adGuardBase:[`.BetterJsPopOverlay`,e(`I2FkXzMwMFgyNTA=`),e(`I2Jhbm5lcmZsb2F0MjI=`),e(`I2NhbXBhaWduLWJhbm5lcg==`),e(`I0FkLUNvbnRlbnQ=`)],adGuardChinese:[e(`LlppX2FkX2FfSA==`),e(`YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd`),`#widget-quan`,e(`YVtocmVmKj0iLzg0OTkyMDIwLnh5eiJd`),e(`YVtocmVmKj0iLjE5NTZobC5jb20vIl0=`)],adGuardFrench:[`#pavePub`,e(`LmFkLWRlc2t0b3AtcmVjdGFuZ2xl`),`.mobile_adhesion`,`.widgetadv`,e(`LmFkc19iYW4=`)],adGuardGerman:[`aside[data-portal-id="leaderboard"]`],adGuardJapanese:[`#kauli_yad_1`,e(`YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0=`),e(`Ll9wb3BJbl9pbmZpbml0ZV9hZA==`),e(`LmFkZ29vZ2xl`),e(`Ll9faXNib29zdFJldHVybkFk`)],adGuardMobile:[e(`YW1wLWF1dG8tYWRz`),e(`LmFtcF9hZA==`),`amp-embed[type="24smi"]`,`#mgid_iframe1`,e(`I2FkX2ludmlld19hcmVh`)],adGuardRussian:[e(`YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0=`),e(`LnJlY2xhbWE=`),`div[id^="smi2adblock"]`,e(`ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd`),`#psyduckpockeball`],adGuardSocial:[e(`YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0=`),e(`YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0=`),`.etsy-tweet`,`#inlineShare`,`.popup-social`],adGuardSpanishPortuguese:[`#barraPublicidade`,`#Publicidade`,`#publiEspecial`,`#queTooltip`,`.cnt-publi`],adGuardTrackingProtection:[`#qoo-counter`,e(`YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ==`),e(`YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0=`),e(`YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ==`),`#top100counter`],adGuardTurkish:[`#backkapat`,e(`I3Jla2xhbWk=`),e(`YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0=`),e(`YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd`),e(`YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ==`)],bulgarian:[e(`dGQjZnJlZW5ldF90YWJsZV9hZHM=`),`#ea_intext_div`,`.lapni-pop-over`,`#xenium_hot_offers`],easyList:[`.yb-floorad`,e(`LndpZGdldF9wb19hZHNfd2lkZ2V0`),e(`LnRyYWZmaWNqdW5reS1hZA==`),`.textad_headline`,e(`LnNwb25zb3JlZC10ZXh0LWxpbmtz`)],easyListChina:[e(`LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ==`),e(`LmZyb250cGFnZUFkdk0=`),`#taotaole`,`#aafoot.top_box`,`.cfa_popup`],easyListCookie:[`.ezmob-footer`,`.cc-CookieWarning`,`[data-cookie-number]`,e(`LmF3LWNvb2tpZS1iYW5uZXI=`),`.sygnal24-gdpr-modal-wrap`],easyListCzechSlovak:[`#onlajny-stickers`,e(`I3Jla2xhbW5pLWJveA==`),e(`LnJla2xhbWEtbWVnYWJvYXJk`),`.sklik`,e(`W2lkXj0ic2tsaWtSZWtsYW1hIl0=`)],easyListDutch:[e(`I2FkdmVydGVudGll`),e(`I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw==`),`.adstekst`,e(`YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0=`),`#semilo-lrectangle`],easyListGermany:[`#SSpotIMPopSlider`,e(`LnNwb25zb3JsaW5rZ3J1ZW4=`),e(`I3dlcmJ1bmdza3k=`),e(`I3Jla2xhbWUtcmVjaHRzLW1pdHRl`),e(`YVtocmVmXj0iaHR0cHM6Ly9iZDc0Mi5jb20vIl0=`)],easyListItaly:[e(`LmJveF9hZHZfYW5udW5jaQ==`),`.sb-box-pubbliredazionale`,e(`YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd`),e(`YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd`),e(`YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ==`)],easyListLithuania:[e(`LnJla2xhbW9zX3RhcnBhcw==`),e(`LnJla2xhbW9zX251b3JvZG9z`),e(`aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd`),e(`aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd`),e(`aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd`)],estonian:[e(`QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==`)],fanboyAnnoyances:[`#ac-lre-player`,`.navigate-to-top`,`#subscribe_popup`,`.newsletter_holder`,`#back-top`],fanboyAntiFacebook:[`.util-bar-module-firefly-visible`],fanboyEnhancedTrackers:[`.open.pushModal`,`#issuem-leaky-paywall-articles-zero-remaining-nag`,`#sovrn_container`,`div[class$="-hide"][zoompage-fontsize][style="display: block;"]`,`.BlockNag__Card`],fanboySocial:[`#FollowUs`,`#meteored_share`,`#social_follow`,`.article-sharer`,`.community__social-desc`],frellwitSwedish:[e(`YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ==`),e(`YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ==`),`article.category-samarbete`,e(`ZGl2LmhvbGlkQWRz`),`ul.adsmodern`],greekAdBlock:[e(`QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd`),e(`QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ==`),e(`QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd`),`DIV.agores300`,`TABLE.advright`],hungarian:[`#cemp_doboz`,`.optimonk-iframe-container`,e(`LmFkX19tYWlu`),e(`W2NsYXNzKj0iR29vZ2xlQWRzIl0=`),`#hirdetesek_box`],iDontCareAboutCookies:[`.alert-info[data-block-track*="CookieNotice"]`,`.ModuleTemplateCookieIndicator`,`.o--cookies--container`,`#cookies-policy-sticky`,`#stickyCookieBar`],icelandicAbp:[e(`QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==`)],latvian:[e(`YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0OiA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0=`),e(`YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ==`)],listKr:[e(`YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0=`),e(`I2xpdmVyZUFkV3JhcHBlcg==`),e(`YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ==`),e(`aW5zLmZhc3R2aWV3LWFk`),`.revenue_unit_item.dable`],listeAr:[e(`LmdlbWluaUxCMUFk`),`.right-and-left-sponsers`,e(`YVtocmVmKj0iLmFmbGFtLmluZm8iXQ==`),e(`YVtocmVmKj0iYm9vcmFxLm9yZyJd`),e(`YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd`)],listeFr:[e(`YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ==`),e(`I2FkY29udGFpbmVyX3JlY2hlcmNoZQ==`),e(`YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0=`),`.site-pub-interstitiel`,`div[id^="crt-"][data-criteo-id]`],officialPolish:[`#ceneo-placeholder-ceneo-12`,e(`W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd`),e(`YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ==`),e(`YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ==`),e(`ZGl2I3NrYXBpZWNfYWQ=`)],ro:[e(`YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd`),e(`YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd`),e(`YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0=`),e(`YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd`),`a[href^="/url/"]`],ruAd:[e(`YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd`),e(`YVtocmVmKj0iLy91dGltZy5ydS8iXQ==`),e(`YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0=`),`#pgeldiz`,`.yandex-rtb-block`],thaiAds:[`a[href*=macau-uta-popup]`,e(`I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA==`),e(`LmFkczMwMHM=`),`.bumq`,`.img-kosana`],webAnnoyancesUltralist:[`#mod-social-share-2`,`#social-tools`,e(`LmN0cGwtZnVsbGJhbm5lcg==`),`.zergnet-recommend`,`.yt.btn-link.btn-md.btn`]}}async function Nv({debug:e}={}){if(!Pv())return;let t=Mv(),n=Object.keys(t),r=await Fv([].concat(...n.map(e=>t[e])));e&&Lv(t,r);let i=n.filter(e=>{let n=t[e];return Hg(n.map(e=>r[e]))>n.length*.6});return i.sort(),i}function Pv(){return m_()||O_()}async function Fv(e){var t;let n=document,r=n.createElement(`div`),i=Array(e.length),a={};Iv(r);for(let t=0;t<e.length;++t){let a=R_(e[t]);a.tagName===`DIALOG`&&a.show();let o=n.createElement(`div`);Iv(o),o.appendChild(a),r.appendChild(o),i[t]=a}for(;!n.body;)await Ag(50);n.body.appendChild(r);try{for(let t=0;t<e.length;++t)i[t].offsetParent||(a[e[t]]=!0)}finally{(t=r.parentNode)==null||t.removeChild(r)}return a}function Iv(e){e.style.setProperty(`visibility`,`hidden`,`important`),e.style.setProperty(`display`,`block`,`important`)}function Lv(e,t){let n="DOM blockers debug:\n```";for(let r of Object.keys(e)){n+=`\n${r}:`;for(let i of e[r])n+=`\n ${t[i]?`🚫`:`➡️`} ${i}`}console.log(`${n}\n\`\`\``)}function Rv(){for(let e of[`rec2020`,`p3`,`srgb`])if(matchMedia(`(color-gamut: ${e})`).matches)return e}function zv(){if(Bv(`inverted`))return!0;if(Bv(`none`))return!1}function Bv(e){return matchMedia(`(inverted-colors: ${e})`).matches}function Vv(){if(Hv(`active`))return!0;if(Hv(`none`))return!1}function Hv(e){return matchMedia(`(forced-colors: ${e})`).matches}var Uv=100;function Wv(){if(matchMedia(`(min-monochrome: 0)`).matches){for(let e=0;e<=Uv;++e)if(matchMedia(`(max-monochrome: ${e})`).matches)return e;throw Error(`Too high value`)}}function Gv(){if(Kv(`no-preference`))return 0;if(Kv(`high`)||Kv(`more`))return 1;if(Kv(`low`)||Kv(`less`))return-1;if(Kv(`forced`))return 10}function Kv(e){return matchMedia(`(prefers-contrast: ${e})`).matches}function qv(){if(Jv(`reduce`))return!0;if(Jv(`no-preference`))return!1}function Jv(e){return matchMedia(`(prefers-reduced-motion: ${e})`).matches}function Yv(){if(Xv(`reduce`))return!0;if(Xv(`no-preference`))return!1}function Xv(e){return matchMedia(`(prefers-reduced-transparency: ${e})`).matches}function Zv(){if(Qv(`high`))return!0;if(Qv(`standard`))return!1}function Qv(e){return matchMedia(`(dynamic-range: ${e})`).matches}var $v=Math,ey=()=>0;function ty(){let e=$v.acos||ey,t=$v.acosh||ey,n=$v.asin||ey,r=$v.asinh||ey,i=$v.atanh||ey,a=$v.atan||ey,o=$v.sin||ey,s=$v.sinh||ey,c=$v.cos||ey,l=$v.cosh||ey,u=$v.tan||ey,d=$v.tanh||ey,f=$v.exp||ey,p=$v.expm1||ey,m=$v.log1p||ey;return{acos:e(.12312423423423424),acosh:t(1e308),acoshPf:(e=>$v.log(e+$v.sqrt(e*e-1)))(1e154),asin:n(.12312423423423424),asinh:r(1),asinhPf:(e=>$v.log(e+$v.sqrt(e*e+1)))(1),atanh:i(.5),atanhPf:(e=>$v.log((1+e)/(1-e))/2)(.5),atan:a(.5),sin:o(-1e300),sinh:s(1),sinhPf:(e=>$v.exp(e)-1/$v.exp(e)/2)(1),cos:c(10.000000000123),cosh:l(1),coshPf:(e=>($v.exp(e)+1/$v.exp(e))/2)(1),tan:u(-1e300),tanh:d(1),tanhPf:(e=>($v.exp(2*e)-1)/($v.exp(2*e)+1))(1),exp:f(1),expm1:p(1),expm1Pf:(e=>$v.exp(e)-1)(1),log1p:m(10),log1pPf:(e=>$v.log(1+e))(10),powPI:(e=>$v.pow($v.PI,e))(-100)}}var ny=`mmMwWLliI0fiflO&1`,ry={default:[],apple:[{font:`-apple-system-body`}],serif:[{fontFamily:`serif`}],sans:[{fontFamily:`sans-serif`}],mono:[{fontFamily:`monospace`}],min:[{fontSize:`1px`}],system:[{fontFamily:`system-ui`}]};function iy(){return oy((e,t,n)=>{let r={},i={};for(let n of Object.keys(ry)){let[i={},a=ny]=ry[n],o=e.createElement(`span`);o.textContent=a,o.style.whiteSpace=`nowrap`;for(let e of Object.keys(i)){let t=i[e];t!==void 0&&(o.style[e]=t)}r[n]=o,t.append(e.createElement(`br`),o)}let a=p_()&&S_();for(let e of Object.keys(ry)){let t=r[e].getBoundingClientRect().width;i[e]=a?ay(t*n.devicePixelRatio):t}return i})}function ay(e){let t=10**(O_()?0:3);return Math.floor(e*t)/t}function oy(e,t=4e3){return L_((n,r)=>{let i=r.document,a=i.body,o=a.style;o.width=`${t}px`,o.webkitTextSizeAdjust=o.textSizeAdjust=`none`,p_()?a.style.zoom=`${1/r.devicePixelRatio}`:m_()&&(a.style.zoom=`reset`);let s=i.createElement(`div`);return s.textContent=[...Array(t/20<<0)].map(()=>`word`).join(` `),a.appendChild(s),e(i,a,r)},`<!doctype html><html><head><meta name="viewport" content="width=device-width, initial-scale=1">`)}function sy(){return navigator.pdfViewerEnabled}function cy(){let e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]-=e[0],t[3]}function ly(){let{ApplePaySession:e}=window;if(typeof e?.canMakePayments!=`function`)return-1;if(uy())return-3;try{return+!!e.canMakePayments()}catch(e){return dy(e)}}var uy=B_;function dy(e){if(e instanceof Error&&e.name===`InvalidAccessError`&&/\bfrom\b.*\binsecure\b/i.test(e.message))return-2;throw e}function fy(){let e=document.createElement(`a`),t=e.attributionSourceId??e.attributionsourceid;return t===void 0?void 0:String(t)}var py=-1,my=-2,hy=new Set([10752,2849,2884,2885,2886,2928,2929,2930,2931,2932,2960,2961,2962,2963,2964,2965,2966,2967,2968,2978,3024,3042,3088,3089,3106,3107,32773,32777,32777,32823,32824,32936,32937,32938,32939,32968,32969,32970,32971,3317,33170,3333,3379,3386,33901,33902,34016,34024,34076,3408,3410,3411,3412,3413,3414,3415,34467,34816,34817,34818,34819,34877,34921,34930,35660,35661,35724,35738,35739,36003,36004,36005,36347,36348,36349,37440,37441,37443,7936,7937,7938]),gy=new Set([34047,35723,36063,34852,34853,34854,34229,36392,36795,38449]),_y=[`FRAGMENT_SHADER`,`VERTEX_SHADER`],vy=[`LOW_FLOAT`,`MEDIUM_FLOAT`,`HIGH_FLOAT`,`LOW_INT`,`MEDIUM_INT`,`HIGH_INT`],yy=`WEBGL_debug_renderer_info`,by=`WEBGL_polygon_mode`;function xy({cache:e}){let t=Cy(e);if(!t)return py;if(!ky(t))return my;let n=Dy()?null:t.getExtension(yy);return{version:t.getParameter(t.VERSION)?.toString()||``,vendor:t.getParameter(t.VENDOR)?.toString()||``,vendorUnmasked:n?t.getParameter(n.UNMASKED_VENDOR_WEBGL)?.toString():``,renderer:t.getParameter(t.RENDERER)?.toString()||``,rendererUnmasked:n?t.getParameter(n.UNMASKED_RENDERER_WEBGL)?.toString():``,shadingLanguageVersion:t.getParameter(t.SHADING_LANGUAGE_VERSION)?.toString()||``}}function Sy({cache:e}){let t=Cy(e);if(!t)return py;if(!ky(t))return my;let n=t.getSupportedExtensions(),r=t.getContextAttributes(),i=[],a=[],o=[],s=[],c=[];if(r)for(let e of Object.keys(r))a.push(`${e}=${r[e]}`);let l=Ty(t);for(let e of l){let n=t[e];o.push(`${e}=${n}${hy.has(n)?`=${t.getParameter(n)}`:``}`)}if(n)for(let e of n){if(e===yy&&Dy()||e===by&&Oy())continue;let n=t.getExtension(e);if(!n){i.push(e);continue}for(let e of Ty(n)){let r=n[e];s.push(`${e}=${r}${gy.has(r)?`=${t.getParameter(r)}`:``}`)}}for(let e of _y)for(let n of vy){let r=wy(t,e,n);c.push(`${e}.${n}=${r.join(`,`)}`)}return s.sort(),o.sort(),{contextAttributes:a,parameters:o,shaderPrecisions:c,extensions:n,extensionParameters:s,unsupportedExtensions:i}}function Cy(e){if(e.webgl)return e.webgl.context;let t=document.createElement(`canvas`),n;t.addEventListener(`webglCreateContextError`,()=>n=void 0);for(let e of[`webgl`,`experimental-webgl`]){try{n=t.getContext(e)}catch{}if(n)break}return e.webgl={context:n},n}function wy(e,t,n){let r=e.getShaderPrecisionFormat(e[t],e[n]);return r?[r.rangeMin,r.rangeMax,r.precision]:[]}function Ty(e){return Object.keys(e.__proto__).filter(Ey)}function Ey(e){return typeof e==`string`&&!e.match(/[^A-Z0-9_x]/)}function Dy(){return __()}function Oy(){return p_()||m_()}function ky(e){return typeof e.getParameter==`function`}function Ay(){if(!(O_()||m_()))return-2;if(!window.AudioContext)return-1;let e=new AudioContext().baseLatency;return e==null?-1:isFinite(e)?e:-3}function jy(){if(!window.Intl)return-1;let e=window.Intl.DateTimeFormat;if(!e)return-2;let t=e().resolvedOptions().locale;return!t&&t!==``?-3:t}function My(e){return/not/i.test(e)}async function Ny(){let e=navigator.userAgentData;if(!e)return;let t=e.brands.filter(({brand:e})=>!My(e)).map(({brand:e})=>e),n={brands:t.length>1?t.filter(e=>e!==`Chromium`):t,mobile:e.mobile,platform:e.platform};if(e.getHighEntropyValues)try{let t=await e.getHighEntropyValues([`architecture`,`bitness`,`model`,`platformVersion`]);n.architecture=t.architecture,n.bitness=t.bitness,n.model=t.model,n.platformVersion=t.platformVersion}catch(e){if(e instanceof DOMException&&e.name===`NotAllowedError`)n.highEntropyStatus=`not_allowed`;else throw e}return n}var Py={userAgentData:Ny,fonts:G_,domBlockers:Nv,fontPreferences:iy,audio:A_,screenFrame:gv,canvas:q_,osCpu:iv,languages:av,colorDepth:ov,deviceMemory:sv,screenResolution:cv,hardwareConcurrency:yv,timezone:xv,sessionStorage:Cv,localStorage:wv,indexedDB:Tv,openDatabase:Ev,cpuClass:Dv,platform:Ov,plugins:K_,touchSupport:rv,vendor:kv,vendorFlavors:Av,cookiesEnabled:jv,colorGamut:Rv,invertedColors:zv,forcedColors:Vv,monochrome:Wv,contrast:Gv,reducedMotion:qv,reducedTransparency:Yv,hdr:Zv,math:ty,pdfViewerEnabled:sy,architecture:cy,applePay:ly,privateClickMeasurement:fy,audioBaseLatency:Ay,dateTimeLocale:jy,webGlBasics:xy,webGlExtensions:Sy};function Fy(e){return u_(Py,e,[])}var Iy=`$ if upgrade to Pro: https://fingerprint.com/github/?utm_source=oss&utm_medium=referral&utm_campaign=confidence_score`;function Ly(e){let t=Ry(e),n=zy(t);return{score:t,comment:Iy.replace(/\$/g,`${n}`)}}function Ry(e){if(O_())return .4;if(m_())return h_()&&!(w_()&&g_())?.5:.3;let t=`value`in e.platform?e.platform.value:``;return/^Win/.test(t)?.6:/^Mac/.test(t)?.5:.7}function zy(e){return Ug(.99+.01*e,1e-4)}function By(e){let t=``;for(let n of Object.keys(e).sort()){let r=e[n],i=`error`in r?`error`:JSON.stringify(r.value);t+=`${t?`|`:``}${n.replace(/([:|\\])/g,`\\$1`)}:${i}`}return t}function Vy(e){return JSON.stringify(e,(e,t)=>t instanceof Error?o_(t):t,2)}function Hy(e){return a_(By(e))}function Uy(e){let t;return{get visitorId(){return t===void 0&&(t=Hy(this.components)),t},set visitorId(e){t=e},confidence:Ly(e),components:e,version:kg}}function Wy(e=50){return Mg(e,e*2)}function Gy(e,t){let n=Date.now();return{async get(r){let i=Date.now(),a=await e(),o=Uy(a);return(t||r?.debug)&&console.log(`Copy the text below to get the debug data:
272
272
 
273
273
  \`\`\`