@ikonai/sdk-ui 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ function e(e){return e}function t(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function n(e){return t(e)&4294901760}function r(e){let t=te(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}function i(t,n,r,i,a){let o=a?.trackId??0,s=a?.sequenceId??0,c=a?.flags??0,l=a?.targetIds??[],u=a?.payloadType??8,d=27+l.length*4,f=d+n.length,p=new Uint8Array(f),m=new DataView(p.buffer);m.setUint32(0,f,!0),m.setUint32(4,t>>>0,!0),m.setUint32(8,i>>>0,!0),m.setUint32(12,o>>>0,!0),m.setUint32(16,s>>>0,!0),m.setUint32(20,l.length>>>0,!0),m.setUint8(24,r&255),m.setUint8(25,u&255),m.setUint8(26,c&255);let h=27;for(let e=0;e<l.length;e++)m.setUint32(h,l[e]>>>0,!0),h+=4;return p.set(n,d),e(p)}let a=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});const o=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0});var s=class e{buffer=new f;cached;constructor(e=1){this.buffer.writeByte(161),this.buffer.writeVarUInt(e>>>0)}writeInt32Field(e,t){this.writeFixedField(e,3,()=>this.buffer.writeInt32(t|0))}writeUInt32Field(e,t){this.writeFixedField(e,5,()=>this.buffer.writeUInt32(t>>>0))}writeInt64Field(e,t){this.writeFixedField(e,4,()=>this.buffer.writeBigInt64(t))}writeUInt64Field(e,t){this.writeFixedField(e,6,()=>this.buffer.writeBigUInt64(t))}writeFloat32Field(e,t){this.writeFixedField(e,7,()=>this.buffer.writeFloat32(t))}writeFloat64Field(e,t){this.writeFixedField(e,8,()=>this.buffer.writeFloat64(t))}writeBoolField(e,t){this.writeFixedField(e,2,()=>this.buffer.writeByte(+!!t))}writeGuidField(e,t){let n=t instanceof d?t.asBytes():t;if(n.length!==16)throw Error(`Guid payload must be 16 bytes`);this.writeFixedField(e,14,()=>this.buffer.writeBytes(n))}writeStringField(e,t){let n=o.encode(t??``);this.writeVariableField(e,12,n)}writeBinaryField(e,t){this.writeVariableField(e,13,t)}writeObjectField(t,n,r){let i=new e(n);r(i);let a=i.finish();this.writeVariableField(t,11,a)}writeArrayField(e,t,n){let r=new c(t);n(r);let i=r.finish();this.writeVariableField(e,9,i)}writeDictionaryField(e,t,n,r){let i=new l(t,n);r(i);let a=i.finish();this.writeVariableField(e,10,a)}finish(){return this.cached||=(this.buffer.writeByte(162),this.buffer.toUint8Array()),this.cached}writeFixedField(e,t,n){this.writeFieldHeader(e,t,0),n()}writeVariableField(e,t,n){this.writeFieldHeader(e,t,n.length),this.buffer.writeBytes(n)}writeFieldHeader(e,t,n){this.buffer.writeUInt32(e>>>0),this.buffer.writeByte(p(t)),m(t)&&this.buffer.writeVarUInt(n>>>0)}},c=class e{elementType;payload=new f;count=0;constructor(e){this.elementType=e}writeInt32(e){this.ensureElementType(3),this.count++,this.payload.writeInt32(e|0)}writeUInt32(e){this.ensureElementType(5),this.count++,this.payload.writeUInt32(e>>>0)}writeInt64(e){this.ensureElementType(4),this.count++,this.payload.writeBigInt64(e)}writeUInt64(e){this.ensureElementType(6),this.count++,this.payload.writeBigUInt64(e)}writeFloat32(e){this.ensureElementType(7),this.count++,this.payload.writeFloat32(e)}writeFloat64(e){this.ensureElementType(8),this.count++,this.payload.writeFloat64(e)}writeBool(e){this.ensureElementType(2),this.count++,this.payload.writeByte(+!!e)}writeGuid(e){this.ensureElementType(14),this.count++;let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t)}writeString(e){this.ensureElementType(12),this.count++;let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t)}writeBinary(e){this.ensureElementType(13),this.count++,this.payload.writeVarUInt(e.length),this.payload.writeBytes(e)}writeObject(e,t){this.ensureElementType(11),this.count++;let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r)}writeArray(t,n){this.ensureElementType(9),this.count++;let r=new e(t);n(r);let i=r.finish();this.payload.writeBytes(i)}writeDictionary(e,t,n){this.ensureElementType(10),this.count++;let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i)}finish(){let e=new f;return e.writeByte(p(this.elementType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}ensureElementType(e){if(this.elementType!==e)throw Error(`Array element type is ${a[this.elementType]}, expected ${a[e]}`)}},l=class{keyType;valueType;payload=new f;count=0;entryOpen=!1;constructor(e,t){this.keyType=e,this.valueType=t,h(e)}beginEntry(){if(this.entryOpen)throw Error(`Previous dictionary entry not completed`);return this.count++,this.entryOpen=!0,new u(this.keyType,this.valueType,this.payload,()=>{this.entryOpen=!1})}finish(){if(this.entryOpen)throw Error(`Dictionary entry not completed`);let e=new f;return e.writeByte(p(this.keyType)),e.writeByte(p(this.valueType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}},u=class{keyType;valueType;payload;onComplete;keyWritten=!1;valueWritten=!1;completed=!1;constructor(e,t,n,r){this.keyType=e,this.valueType=t,this.payload=n,this.onComplete=r}writeKeyInt32(e){this.ensureKeyType(3),this.payload.writeInt32(e|0),this.keyWritten=!0}writeKeyUInt32(e){this.ensureKeyType(5),this.payload.writeUInt32(e>>>0),this.keyWritten=!0}writeKeyInt64(e){this.ensureKeyType(4),this.payload.writeBigInt64(e),this.keyWritten=!0}writeKeyUInt64(e){this.ensureKeyType(6),this.payload.writeBigUInt64(e),this.keyWritten=!0}writeKeyFloat32(e){this.ensureKeyType(7),this.payload.writeFloat32(e),this.keyWritten=!0}writeKeyFloat64(e){this.ensureKeyType(8),this.payload.writeFloat64(e),this.keyWritten=!0}writeKeyBool(e){this.ensureKeyType(2),this.payload.writeByte(+!!e),this.keyWritten=!0}writeKeyGuid(e){this.ensureKeyType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.keyWritten=!0}writeKeyString(e){this.ensureKeyType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.keyWritten=!0}writeKeyBinary(e){this.ensureKeyType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.keyWritten=!0}writeValueInt32(e){this.ensureValueType(3),this.payload.writeInt32(e|0),this.valueWritten=!0}writeValueUInt32(e){this.ensureValueType(5),this.payload.writeUInt32(e>>>0),this.valueWritten=!0}writeValueInt64(e){this.ensureValueType(4),this.payload.writeBigInt64(e),this.valueWritten=!0}writeValueUInt64(e){this.ensureValueType(6),this.payload.writeBigUInt64(e),this.valueWritten=!0}writeValueFloat32(e){this.ensureValueType(7),this.payload.writeFloat32(e),this.valueWritten=!0}writeValueFloat64(e){this.ensureValueType(8),this.payload.writeFloat64(e),this.valueWritten=!0}writeValueBool(e){this.ensureValueType(2),this.payload.writeByte(+!!e),this.valueWritten=!0}writeValueGuid(e){this.ensureValueType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.valueWritten=!0}writeNullValue(){this.ensureValueType(1),this.valueWritten=!0}writeValueBinary(e){this.ensureValueType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.valueWritten=!0}writeValueString(e){this.ensureValueType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.valueWritten=!0}writeValueObject(e,t){this.ensureValueType(11);let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r),this.valueWritten=!0}writeValueArray(e,t){this.ensureValueType(9);let n=new c(e);t(n);let r=n.finish();this.payload.writeBytes(r),this.valueWritten=!0}writeValueDictionary(e,t,n){this.ensureValueType(10);let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i),this.valueWritten=!0}complete(){if(!this.completed){if(!this.keyWritten||!this.valueWritten)throw Error(`Dictionary entry must write both key and value`);this.completed=!0,this.onComplete()}}ensureKeyType(e){if(this.keyType!==e)throw Error(`Dictionary key type is ${a[this.keyType]}, expected ${a[e]}`)}ensureValueType(e){if(this.valueType!==e)throw Error(`Dictionary value type is ${a[this.valueType]}, expected ${a[e]}`)}},d=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),ee(t.subarray(8,10)),ee(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}},f=class e{static INITIAL_CAPACITY=256;buffer;dataView;length=0;constructor(){this.buffer=new Uint8Array(e.INITIAL_CAPACITY),this.dataView=new DataView(this.buffer.buffer)}ensureCapacity(e){let t=this.length+e;if(t<=this.buffer.length)return;let n=this.buffer.length;for(;n<t;)n*=2;let r=new Uint8Array(n);r.set(this.buffer.subarray(0,this.length)),this.buffer=r,this.dataView=new DataView(this.buffer.buffer)}writeByte(e){this.ensureCapacity(1),this.buffer[this.length++]=e&255}writeBytes(e){this.ensureCapacity(e.length),this.buffer.set(e,this.length),this.length+=e.length}writeUInt32(e){this.ensureCapacity(4),this.dataView.setUint32(this.length,e>>>0,!0),this.length+=4}writeInt32(e){this.ensureCapacity(4),this.dataView.setInt32(this.length,e|0,!0),this.length+=4}writeFloat32(e){this.ensureCapacity(4),this.dataView.setFloat32(this.length,e,!0),this.length+=4}writeFloat64(e){this.ensureCapacity(8),this.dataView.setFloat64(this.length,e,!0),this.length+=8}writeBigInt64(e){this.ensureCapacity(8),this.dataView.setBigInt64(this.length,e,!0),this.length+=8}writeBigUInt64(e){this.ensureCapacity(8),this.dataView.setBigUint64(this.length,e,!0),this.length+=8}writeVarUInt(e){let t=e>>>0;for(;t>=128;)this.ensureCapacity(1),this.buffer[this.length++]=t&127|128,t>>>=7;this.ensureCapacity(1),this.buffer[this.length++]=t&127}toUint8Array(){return this.buffer.slice(0,this.length)}};function p(e,t=0){if(t&240)throw Error(`Teleport flags must fit into 4 bits`);return(e&15)<<4|t&15}function m(e){return e===12||e===13||e===9||e===11||e===10}function h(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function ee(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function te(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let g=function(e){return e[e.None=0]=`None`,e[e.WebSocket=1]=`WebSocket`,e[e.WebSocketProxy=2]=`WebSocketProxy`,e[e.WebTransport=4]=`WebTransport`,e[e.WebTransportProxy=8]=`WebTransportProxy`,e[e.Tcp=16]=`Tcp`,e[e.TcpProxy=32]=`TcpProxy`,e[e.Https=64]=`Https`,e[e.WebRTC=128]=`WebRTC`,e[e.TcpTls=256]=`TcpTls`,e[e.Udp=512]=`Udp`,e[e.UdpDtls=1024]=`UdpDtls`,e[e.HttpStream=2048]=`HttpStream`,e[e.HttpStreamProxy=4096]=`HttpStreamProxy`,e}({}),_=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.ANALYTICS_TRAFFIC_USAGE=524300]=`ANALYTICS_TRAFFIC_USAGE`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.ACTION_FILE_UPLOAD_RESUME2=1048657]=`ACTION_FILE_UPLOAD_RESUME2`,e[e.ACTION_FILE_UPLOAD_RESUME_RESPONSE2=1048658]=`ACTION_FILE_UPLOAD_RESUME_RESPONSE2`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME=4194309]=`AUDIO_FRAME`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function v(e){let t={};return e&&Object.assign(t,e),t}function ne(e){return new s(1).finish()}function y(e,t,n){return i(131074,ne(e),1,t,n)}var b=class extends Error{cause;constructor(e,t){super(e),this.cause=t,this.name=`ConnectionError`}},x=class extends b{constructor(e,t){super(e,t),this.name=`TransportError`}},S=class extends x{constructor(e){super(`No keepalive received within ${e}ms`),this.name=`KeepaliveTimeoutError`}},C=class extends x{constructor(e,t){super(e,t),this.name=`AuthRejectedError`}},w=class extends b{constructor(e){super(`Maximum reconnection attempts (${e}) exceeded`),this.name=`MaxRetriesExceededError`}},re=class extends b{pinnedTransport;pinnedTier;offeredTypes;constructor(e,t,n){let r=[e&&`?ikon-transport=${e}`,t&&`?ikon-proxy=${t}`].filter(Boolean).join(` and `);super(`No entrypoint matches ${r||`the pinned transport`}; the server offered [${n.join(`, `)}]. Change or remove the pin.`),this.pinnedTransport=e,this.pinnedTier=t,this.offeredTypes=n,this.name=`NoMatchingEndpointTypeError`}};function ie(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`))},a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e);if(t?.aborted){clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`));return}t?.addEventListener(`abort`,i,{once:!0})})}let ae=1;const oe=new Map;function se(e){ae=e}const ce={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function le(e,t){return`[${e}] ${t}`}function T(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:ce[e],component:t,message:n,args:r};for(let[t,n]of oe)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(ae<=e){let i=le(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function E(e){return{debug(t,...n){T(0,e,t,n)},info(t,...n){T(1,e,t,n)},warn(t,...n){T(2,e,t,n)},error(t,...n){T(3,e,t,n)}}}function ue(e){if(typeof window>`u`)return null;let t=new URLSearchParams(window.location.search),n=t.get(e);return n===null?t.get(e.replace(/-/g,`_`)):n}function de(e){let t=ue(e);return t===`true`||t!==`false`&&null}function fe(){return de(`ikon-retry`)!==!1}const pe=E(`KeepaliveWatchdog`);var D=class{timeoutMs;what;onTimeout;timeout=null;constructor(e,t,n){this.timeoutMs=e,this.what=t,this.onTimeout=n}reset(){this.clear(),!(this.timeoutMs<=0)&&(this.timeout=setTimeout(()=>{pe.error(`No keepalive received in ${this.timeoutMs}ms, closing ${this.what}`),this.onTimeout(new S(this.timeoutMs))},this.timeoutMs))}clear(){this.timeout&&=(clearTimeout(this.timeout),null)}},O=class{buffer=new Uint8Array(65536);bufferOffset=0;bufferLength=0;dataView=null;dataViewBuffer=null;push(e,t){this.append(e);let n=this.getDataView();for(;this.bufferLength>=4;){let e=n.getUint32(this.bufferOffset,!0);if(e<4)throw this.reset(),Error(`Invalid protocol message length: ${e}`);if(this.bufferLength<e)return;let r=this.buffer.subarray(this.bufferOffset,this.bufferOffset+e);this.bufferOffset+=e,this.bufferLength-=e,t(r)}this.bufferLength===0&&(this.bufferOffset=0)}reset(){this.bufferOffset=0,this.bufferLength=0}append(e){let t=this.bufferLength+e.length,n=this.bufferOffset+this.bufferLength;if(n+e.length>this.buffer.length){if(t>this.buffer.length){let e=Math.max(t,this.buffer.length*2),r=new Uint8Array(e);r.set(this.buffer.subarray(this.bufferOffset,n)),this.buffer=r,this.bufferOffset=0,this.dataViewBuffer=null}else this.buffer.copyWithin(0,this.bufferOffset,n),this.bufferOffset=0}this.buffer.set(e,this.bufferOffset+this.bufferLength),this.bufferLength+=e.length}getDataView(){let e=this.buffer.buffer;return this.dataViewBuffer!==e&&(this.dataViewBuffer=e,this.dataView=new DataView(e)),this.dataView}};const k=E(`HttpStreamTransport`),A=[`binary`,`sse`,`poll`];var j=class{framer=new O;callbacks;sessionId;keepaliveTimeoutMs;connectionTimeoutMs;pinnedMode;preferredMode;baseUri=``;sid=``;mode=`binary`;downstreamAbort=null;keepalive=null;keepaliveResponseMessage=null;isClosed=!1;connected=!1;connecting=!1;sendQueue=[];sendPumpRunning=!1;firstMessageResolver=null;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4,this.pinnedMode=e.httpStreamMode,this.preferredMode=e.httpStreamPreferredMode}get isConnected(){return this.connected&&!this.isClosed}get activeMode(){return this.mode}async connect(e,t){this.isClosed=!1,this.connecting=!0,this.baseUri=e;let n=Date.now(),r=null,i=this.pinnedMode?[this.pinnedMode]:me(this.preferredMode);for(let e of i){if(this.isClosed)throw new x(`HTTP stream closed while connecting`);try{this.sid=ge(),await this.openMode(t,e),this.mode=e,this.connected=!0,this.connecting=!1,this.resetKeepaliveTimeout(),k.debug(`HTTP stream connected in ${e} mode in ${Date.now()-n}ms`);return}catch(t){if(r=t instanceof Error?t:Error(String(t)),this.abortDownstream(),t instanceof C)throw this.connecting=!1,t;k.debug(`HTTP stream ${e} mode failed after ${Date.now()-n}ms: ${r.message}`)}}throw this.connecting=!1,new x(`HTTP stream failed in every mode: ${r?.message??`unknown error`}`,r??void 0)}send(e){if(this.isClosed){k.warn(`Cannot send: HTTP stream closed`);return}this.sendQueue.push(e),this.runSendPump()}close(){this.isClosed=!0,this.connected=!1,this.clearKeepaliveTimeout(),this.abortDownstream(),this.sendQueue.length=0}async openMode(e,t){let n=new AbortController;this.downstreamAbort=n;let r=Math.min(3500,this.connectionTimeoutMs),i=setTimeout(()=>n.abort(),r);try{await this.openChannel(e,t,n.signal),await this.openDownstream(t,n,r)}finally{clearTimeout(i)}}async openChannel(e,t,n){let r;try{r=await fetch(this.openUrl(t),{method:`POST`,headers:{"Content-Type":`text/plain`},body:_e(e),cache:`no-store`,credentials:`omit`,signal:n})}catch(e){throw n.aborted?new x(`HTTP stream channel did not open before the mode deadline`):e}if(r.status===401||r.status===403)throw new C(`HTTP stream rejected the auth ticket (${r.status})`);if(!r.ok)throw new x(`HTTP stream could not be opened, status ${r.status}`)}async openDownstream(e,t,n){this.framer.reset();let r=new Promise((e,r)=>{let i=()=>{this.firstMessageResolver=null,r(new x(`No server message in ${n}ms`))};t.signal.addEventListener(`abort`,i,{once:!0}),this.firstMessageResolver=()=>{t.signal.removeEventListener(`abort`,i),this.firstMessageResolver=null,e()}}),i=await fetch(this.streamUrl(e),{method:`GET`,headers:{Accept:e===`sse`?`text/event-stream`:`application/octet-stream`},cache:`no-store`,credentials:`omit`,signal:t.signal});if(i.status===401||i.status===403)throw new C(`HTTP stream rejected the auth ticket (${i.status})`);if(!i.ok||!i.body)throw new x(`HTTP stream request failed with status ${i.status}`);this.runDownstreamLoop(e,i,t),await r}async runDownstreamLoop(e,t,n){let r=t;try{for(;r&&!this.isClosed&&!n.signal.aborted;){if(await this.readResponse(e,r),e!==`poll`){this.isClosed||this.handleClose(`HTTP stream ended`,!1);return}if(r=await fetch(this.streamUrl(e),{method:`GET`,headers:{Accept:`application/octet-stream`},cache:`no-store`,credentials:`omit`,signal:n.signal}),r.status===410){this.handleClose(`HTTP stream channel is gone`,!1);return}if(!r.ok||!r.body){this.handleClose(`HTTP stream poll failed with status ${r.status}`,!1);return}}}catch(e){if(n.signal.aborted||this.isClosed)return;k.debug(`HTTP stream read loop ended: ${e instanceof Error?e.message:e}`),this.handleClose(`HTTP stream read failed`,!1)}}async readResponse(e,t){let n=t.body.getReader(),r=e===`sse`?new he:null;for(;;){let{value:e,done:t}=await n.read();if(t)return;if(e){if(r){r.push(e,e=>this.framer.push(e,e=>this.handleProtocolMessage(e)));continue}this.framer.push(e,e=>this.handleProtocolMessage(e))}}}async runSendPump(){if(!this.sendPumpRunning){this.sendPumpRunning=!0;try{for(;this.sendQueue.length>0&&!this.isClosed;){let e=this.takeBatch(),t=await fetch(this.sendUrl(),{method:`POST`,headers:{"Content-Type":`text/plain`},body:e,cache:`no-store`,credentials:`omit`});if(t.status===410){this.handleClose(`HTTP stream channel is gone`,!1);return}if(!t.ok)throw new x(`HTTP stream send failed with status ${t.status}`)}}catch(e){if(this.isClosed)return;k.warn(`HTTP stream send failed: ${e instanceof Error?e.message:e}`),this.handleClose(`HTTP stream send failed`,!1)}finally{this.sendPumpRunning=!1}}}takeBatch(){let e=0,t=0;for(;t<this.sendQueue.length;){let n=this.sendQueue[t].length;if(t>0&&e+n>1048576)break;e+=n,t++}let n=new Uint8Array(e),r=0;for(let e=0;e<t;e++)n.set(this.sendQueue[e],r),r+=this.sendQueue[e].length;return this.sendQueue.splice(0,t),n}streamUrl(e){return`${this.baseUri}${this.baseUri.includes(`?`)?`&`:`?`}sid=${this.sid}&mode=${e}`}openUrl(e){return`${this.streamUrl(e)}&open=1`}sendUrl(){return`${this.baseUri}${this.baseUri.includes(`?`)?`&`:`?`}sid=${this.sid}`}getKeepaliveResponse(){return this.keepaliveResponseMessage||=y(v(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===_.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e.slice())}catch(e){k.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){this.isClosed||this.connecting||(this.isClosed=!0,this.connected=!1,this.clearKeepaliveTimeout(),this.abortDownstream(),this.callbacks.onClose(e,t))}abortDownstream(){this.downstreamAbort&&=(this.downstreamAbort.abort(),null)}resetKeepaliveTimeout(){this.keepalive??=new D(this.keepaliveTimeoutMs,`HTTP stream`,e=>{this.callbacks.onError(e),this.close()}),this.keepalive.reset()}clearKeepaliveTimeout(){this.keepalive?.clear()}};function me(e){return e?[e,...A.filter(t=>t!==e)]:A}var he=class{decoder=new TextDecoder;pending=``;push(e,t){this.pending+=this.decoder.decode(e,{stream:!0});let n=this.pending.indexOf(`
2
+ `);for(;n!==-1;){let e=this.pending.slice(0,n);this.pending=this.pending.slice(n+1),e.startsWith(`data: `)&&t(ve(e.slice(6))),n=this.pending.indexOf(`
3
+ `)}}};function ge(){let e=new Uint8Array(16);crypto.getRandomValues(e);let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return t}function _e(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function ve(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}const M=E(`WebSocketTransport`);var ye=class{ws=null;keepalive=null;isClosed=!1;keepaliveResponseMessage=null;firstMessageResolver=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}async connect(e,t){this.isClosed=!1;let n=Date.now();return new Promise((r,i)=>{try{this.ws=new WebSocket(e),this.ws.binaryType=`arraybuffer`}catch(e){i(new x(`Failed to create WebSocket: ${e}`,e instanceof Error?e:void 0));return}let a=!1,o=!1,s=()=>{clearTimeout(u),this.ws&&(this.ws.onopen=null,this.ws.onerror=null,this.ws.onclose=null,this.ws.onmessage=null)},c=()=>{o||(o=!0,clearTimeout(u),this.firstMessageResolver=null,M.debug(`WebSocket connected in ${Date.now()-n}ms`),r())},l=e=>{o||(o=!0,this.firstMessageResolver=null,s(),i(e))};this.firstMessageResolver=c;let u=setTimeout(()=>{this.ws?.close(),M.warn(`WebSocket connection timeout after ${this.connectionTimeoutMs}ms`),l(new x(`WebSocket connection timeout`))},this.connectionTimeoutMs);this.ws.onopen=()=>{a=!0,this.ws.send(t),this.resetKeepaliveTimeout()},this.ws.onerror=()=>{M.debug(`WebSocket connection failed after ${Date.now()-n}ms`),l(new x(`WebSocket connection failed`))},this.ws.onclose=e=>{if(this.clearKeepaliveTimeout(),!o){l(a?new C(`WebSocket closed before first server message`):new x(`WebSocket connection closed before opening`));return}if(this.isClosed)return;let t=e.wasClean&&(e.code===1e3||e.code===1001),n=e.reason||`code=${e.code}`;this.callbacks.onClose(n,t)},this.ws.onmessage=e=>{this.handleProtocolMessage(new Uint8Array(e.data))}})}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(e):M.warn(`Cannot send: WebSocket not connected`)}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.ws&&=(this.ws.close(1e3,`Client closing`),null)}getKeepaliveResponse(){return this.keepaliveResponseMessage||=y(v(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===_.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){M.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}resetKeepaliveTimeout(){this.keepalive??=new D(this.keepaliveTimeoutMs,`connection`,e=>{this.callbacks.onError(e),this.close()}),this.keepalive.reset()}clearKeepaliveTimeout(){this.keepalive?.clear()}};const N=E(`WebTransportTransport`);function P(){return typeof WebTransport<`u`}var be=class{transport=null;stream=null;reader=null;writer=null;keepalive=null;readLoopActive=!1;isClosed=!1;framer=new O;keepaliveResponseMessage=null;firstMessageResolver=null;firstMessageRejecter=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.transport!==null&&this.writer!==null}async connect(e,t){if(!P())throw new x(`WebTransport is not supported in this browser`);this.isClosed=!1;let n=Date.now(),r=new Promise((e,t)=>{this.firstMessageResolver=e,this.firstMessageRejecter=t});try{this.transport=new WebTransport(e);let i,a=new Promise((e,t)=>{i=setTimeout(()=>t(new x(`WebTransport connection timeout`)),this.connectionTimeoutMs)});try{await Promise.race([this.transport.ready,a])}catch(e){throw e instanceof x&&N.warn(`WebTransport connection timeout after ${this.connectionTimeoutMs}ms`),e}finally{clearTimeout(i)}this.transport.closed.then(()=>{this.handleClose(`Connection closed`,!0)}).catch(e=>{N.error(`WebTransport connection closed with error:`,e),this.handleClose(e instanceof Error?e.message:`Connection error`,!1)}),this.stream=await this.transport.createBidirectionalStream(),this.reader=this.stream.readable.getReader(),this.writer=this.stream.writable.getWriter(),await this.writer.write(t),this.resetKeepaliveTimeout(),this.startReadLoop();let o=Math.max(this.connectionTimeoutMs-(Date.now()-n),1),s,c=new Promise((e,t)=>{s=setTimeout(()=>t(new x(`WebTransport closed before first server message`)),o)});try{await Promise.race([r,c])}finally{clearTimeout(s)}this.firstMessageResolver=null,this.firstMessageRejecter=null,N.info(`WebTransport connected in ${Date.now()-n}ms`)}catch(e){this.firstMessageResolver=null,this.firstMessageRejecter=null,this.isClosed=!0,this.cleanup();let t=Date.now()-n;throw N.warn(`WebTransport connection failed after ${t}ms: ${e}`),new x(`Failed to connect WebTransport: ${e}`,e instanceof Error?e:void 0)}}send(e){if(!this.writer){N.warn(`Cannot send: WebTransport not connected`);return}this.writer.write(e).catch(e=>{N.error(`Failed to send protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))})}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup()}async startReadLoop(){if(this.reader){this.readLoopActive=!0;try{for(;this.readLoopActive&&this.reader;){let{value:e,done:t}=await this.reader.read();if(t)break;e&&this.framer.push(e,e=>this.handleProtocolMessage(e))}this.readLoopActive&&this.handleClose(`Stream ended`,!1)}catch(e){this.readLoopActive&&(N.error(`Read loop error:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e))))}}}getKeepaliveResponse(){return this.keepaliveResponseMessage||=y(v(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===_.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){N.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){if(!this.isClosed){if(this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup(),this.firstMessageRejecter){this.firstMessageRejecter(new C(`WebTransport closed before first server message: ${e}`)),this.firstMessageResolver=null,this.firstMessageRejecter=null;return}this.callbacks.onClose(e,t)}}resetKeepaliveTimeout(){this.keepalive??=new D(this.keepaliveTimeoutMs,`connection`,e=>{this.callbacks.onError(e),this.close()}),this.keepalive.reset()}clearKeepaliveTimeout(){this.keepalive?.clear()}cleanup(){if(this.reader&&=(this.reader.releaseLock(),null),this.writer&&=(this.writer.releaseLock(),null),this.stream=null,this.framer.reset(),this.transport){try{this.transport.close()}catch{}this.transport=null}}};const F=E(`Channel`);var xe=class{state=`disconnected`;transport=null;config;entrypoint;constructor(e){this.config=e,this.entrypoint=e.entrypoint}get channelState(){return this.state}get opcodeGroups(){return this.entrypoint.OpcodeGroupsFromServer}get type(){return this.entrypoint.Type}get isConnected(){return this.transport?.isConnected??!1}get httpStreamMode(){return this.transport instanceof j?this.transport.activeMode:null}async connect(){if(this.state!==`disconnected`)throw Error(`Cannot connect: already in state ${this.state}`);this.setState(`connecting`);try{await this.connectTransport(),this.setState(`connected`)}catch(e){throw this.setState(`disconnected`),e}}disconnect(){this.transport&&=(this.transport.close(),null),this.setState(`disconnected`)}triggerReconnect(e){this.transport&&=(this.transport.close(),null),this.config.onClose?.(e,!1)}checkHealth(){this.state===`connected`&&this.transport&&!this.transport.isConnected&&this.handleClose(`Transport dead after tab resume`,!1)}send(e){if(!this.transport?.isConnected){F.warn(`Cannot send: channel not connected`);return}this.transport.send(e)}async connectTransport(){let e=this.entrypoint,t={sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.config.connectionTimeoutMs,httpStreamMode:this.config.httpStreamMode,httpStreamPreferredMode:this.config.httpStreamPreferredMode,callbacks:{onProtocolMessage:e=>this.handleProtocolMessage(e),onClose:(e,t)=>this.handleClose(e,t),onError:e=>this.handleError(e)}};switch(e.Type){case g.WebSocket:case g.WebSocketProxy:this.transport=new ye(t);break;case g.WebTransport:case g.WebTransportProxy:if(!P())throw Error(`WebTransport is not supported in this browser`);this.transport=new be(t);break;case g.HttpStream:case g.HttpStreamProxy:this.transport=new j(t);break;default:throw Error(`Unsupported entrypoint type: ${g[e.Type]}`)}await this.transport.connect(e.Uri,e.AuthTicket)}handleProtocolMessage(n){try{let r=e(n);if(t(r)===_.CORE_ON_SERVER_STOPPING){F.debug(`Received server stopping message`),this.setState(`stopped`),this.transport?.close();return}this.config.onProtocolMessage?.(r)}catch(e){F.error(`Failed to handle protocol message:`,e),this.config.onError?.(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){this.transport=null,this.config.onClose?.(e,t)}handleError(e){this.config.onError?.(e),e instanceof S&&this.handleClose(`Keepalive timeout`,!1)}setState(e){this.state!==e&&(this.state=e,this.config.onStateChange?.(e))}};const I=E(`ChannelManager`);var Se=class e{channels=new Map;activeType=null;state=`idle`;reconnectAttempts=0;shouldReconnect=!0;entrypoints=[];abortController=null;connectionTimeoutMs;stabilityTimer=null;config;constructor(e){this.config=e}get managerState(){return this.state}get activeHttpStreamMode(){for(let e of this.channels.values()){let t=e.httpStreamMode;if(t)return t}return null}get activeEndpointType(){return this.activeType}async connect(e,t){if(this.state!==`idle`&&this.state!==`offline`)throw Error(`Cannot connect: already in state ${this.state}`);if(this.entrypoints=e,this.shouldReconnect=!0,this.reconnectAttempts=0,this.abortController=new AbortController,t?.retry){this.attemptReconnect();return}await this.connectInternal()}disconnect(){this.shouldReconnect=!1,this.abortController?.abort(),this.abortController=null,this.disconnectAll(),this.setState(`idle`)}sendProtocolMessage(e){let t=n(e);for(let[n,r]of this.channels)if(n&t){r.send(e);return}this.state===`connected`&&I.warn(`No channel found for message`)}sendToAll(e){for(let t of this.channels.values())t.send(e)}checkHealth(){if(this.state===`connected`)for(let e of this.channels.values())e.checkHealth()}triggerReconnect(e){if(this.state===`connected`){I.debug(`Forcing reconnect: ${e}`);for(let t of this.channels.values())t.triggerReconnect(e)}}async connectInternal(t=!1){this.setState(`connecting`);let n=this.entrypoints.filter(t=>t.Type!==g.WebRTC&&!e.isNativeOnlyType(t.Type)),r=this.groupByType(n);if(r.size===0)throw this.setState(`offline`),Error(`No entrypoints available`);let i;if(this.config.orderedEndpointTypes!==void 0){let e=new Set(r.keys());i=this.config.orderedEndpointTypes.filter(t=>e.has(t))}else i=this.config.endpointSelector?this.config.endpointSelector.getOrderedTypes(r):Array.from(r.keys());if(i.length===0)throw this.setState(`offline`),new re(null,null,[...r.keys()].map(e=>g[e]));this.connectionTimeoutMs=i.length>1?5e3:1e4,I.debug(`Endpoint types to try: [${i.map(e=>g[e]).join(`, `)}], transport timeout: ${this.connectionTimeoutMs}ms`);for(let e of i){if(!this.shouldReconnect)return;let t=r.get(e),n=Date.now();I.debug(`Trying ${g[e]} (${t.length} channel(s))`);try{await this.connectAllChannels(t),this.config.endpointSelector?.rememberWorkingType(e),this.config.onRememberWorkingType?.(e),this.activeType=e,I.debug(`Connected via ${g[e]} in ${Date.now()-n}ms`),this.setState(`connected`),this.startStabilityTimer();return}catch(t){I.warn(`Failed to connect using ${g[e]} after ${Date.now()-n}ms: ${t instanceof Error?t.message:t}`);let i=this.channels.size>0;if(this.disconnectAll(),t instanceof C)throw t;if(i&&this.config.onRefreshEntrypoints)try{I.info(`Partial connection detected, refreshing entrypoints`);let e=await this.config.onRefreshEntrypoints();this.entrypoints=e.entrypoints,this.config.sessionId=e.sessionId;let t=e.entrypoints.filter(e=>e.Type!==g.WebRTC),n=this.groupByType(t);for(let[e,t]of n)r.set(e,t)}catch(e){I.warn(`Failed to refresh entrypoints: ${e}`)}}}throw t||this.setState(`offline`),Error(`Failed to connect using any endpoint type`)}async connectAllChannels(e){if(e.length===0)throw Error(`No entrypoints to connect`);let t=(await Promise.allSettled(e.map(e=>this.connectChannel(e)))).filter(e=>e.status===`rejected`);if(t.length>0){let e=t.map(e=>e.reason instanceof Error?e.reason.message:String(e.reason));throw t.some(e=>e.reason instanceof C)?new C(e.join(`, `)):Error(e.join(`, `))}}async connectChannel(e){let t=new xe({entrypoint:e,sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.connectionTimeoutMs,httpStreamMode:this.config.httpStreamMode,httpStreamPreferredMode:this.config.httpStreamPreferredMode,onProtocolMessage:e=>{this.config.onProtocolMessage?.(e)},onStateChange:t=>{this.handleChannelStateChange(e.OpcodeGroupsFromServer,t)},onClose:(t,n)=>{this.handleChannelClose(e.OpcodeGroupsFromServer,t,n)},onError:e=>{this.config.onError?.(e)}});await t.connect(),this.channels.set(e.OpcodeGroupsFromServer,t)}static isNativeOnlyType(e){switch(e){case g.Tcp:case g.TcpTls:case g.TcpProxy:case g.Udp:case g.UdpDtls:case g.Https:return!0;default:return!1}}groupByType(e){let t=new Map;for(let n of e){let e=t.get(n.Type)??[];e.push(n),t.set(n.Type,e)}return t}handleChannelStateChange(e,t){t===`stopped`&&(this.shouldReconnect=!1,this.disconnectAll(),this.setState(`stopped`))}handleChannelClose(e,t,n){this.state!==`idle`&&this.state!==`stopped`&&this.state!==`offline`&&this.channels.has(e)&&this.state===`connected`&&(I.warn(`Channel closed unexpectedly, attempting reconnect`),this.disconnectAll(),this.attemptReconnect())}async attemptReconnect(){if(this.shouldReconnect){if(!fe()){I.warn(`Retry disabled via ikon-retry=false, skipping reconnect`),this.setState(`offline`),this.config.onError?.(new w(0));return}if(this.reconnectAttempts>=this.config.maxReconnectAttempts){I.warn(`Max reconnect attempts (${this.config.maxReconnectAttempts}) reached`),this.setState(`offline`),this.config.onError?.(new w(this.config.maxReconnectAttempts));return}if(this.setState(`reconnecting`),this.reconnectAttempts++,this.reconnectAttempts>1){I.info(`Reconnecting in ${this.config.reconnectBackoffMs}ms (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);try{await ie(this.config.reconnectBackoffMs,this.abortController?.signal)}catch{return}}else I.info(`Reconnecting immediately (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);if(this.shouldReconnect)try{await this.connectInternal(!0)}catch(e){if(e instanceof C){I.warn(`Auth rejected during reconnect, stopping retries and signaling full re-auth`),this.config.onError?.(e),this.setState(`offline`);return}if(e instanceof re){I.warn(`${e.message} Not retrying`),this.config.onError?.(e),this.setState(`offline`);return}await this.attemptReconnect()}}}disconnectAll(){for(let e of this.channels.values())e.disconnect();this.channels.clear(),this.activeType=null}setState(e){this.state!==e&&(this.state===`connected`&&e!==`connected`&&this.clearStabilityTimer(),this.state=e,this.config.onStateChange?.(e))}startStabilityTimer(){this.clearStabilityTimer(),this.stabilityTimer=setTimeout(()=>{this.stabilityTimer=null,this.state===`connected`&&(this.reconnectAttempts=0)},5e3)}clearStabilityTimer(){this.stabilityTimer&&=(clearTimeout(this.stabilityTimer),null)}};const L=E(`ProtocolWorker`),R=(e,t)=>{self.postMessage(e,t??[])};let z=null,B=null,V=null,H,U=null;const W=[],G=[],K=new Map,q=[],J=[],Y=new Map,X=[];function Z(){try{z?.disconnect()}catch(e){L.warn(`Failed to disconnect channel manager: ${e}`)}z=null;for(let e=0;e<G.length;e++)try{G[e].port.close()}catch{}W.length=0,G.length=0,K.clear();for(let e=0;e<J.length;e++)try{J[e].port.close()}catch{}q.length=0,J.length=0,Y.clear()}function Q(e){let t=e instanceof Error?e:Error(String(e));R({type:`error`,error:{name:t.name,message:t.message,stack:t.stack}})}function Ce(){let e=0;for(let t=0;t<G.length;t++)e|=G[t].opcodeGroupsMask;return e}function we(e){if(H===void 0)return!0;let t=n(e);return(t&H)!==0||(t&Ce())!==0}function $(e){X.length=0;for(let t=0;t<G.length;t++){let n=G[t];(n.opcodeGroupsMask&e)!==0&&X.push(n.port)}return X}function Te(e,t){return(n(e)&t)!==0}function Ee(t,n){if(!z||!n||typeof n!=`object`)return;let r=n;if(!(r.type!==`send`||!(r.message instanceof ArrayBuffer)))try{let n=e(new Uint8Array(r.message));if(!Te(n,t))return;z.sendProtocolMessage(n),U&&U.postMessage({direction:`sent`,message:Array.from(n)})}catch(e){Q(e)}}async function De(e){Z(),z=new Se({sessionId:e.sessionId,keepaliveTimeoutMs:e.keepaliveTimeoutMs,reconnectBackoffMs:e.reconnectBackoffMs,maxReconnectAttempts:e.maxReconnectAttempts,orderedEndpointTypes:e.orderedEndpointTypes,httpStreamMode:e.httpStreamMode,httpStreamPreferredMode:e.httpStreamPreferredMode,webRtcEnabled:e.webRtcEnabled,onStateChange:e=>{R({type:`state`,state:e,activeType:z?.activeEndpointType??void 0,httpStreamMode:z?.activeHttpStreamMode??void 0})},onRememberWorkingType:()=>{R({type:`state`,state:z?.managerState??`idle`,activeType:z?.activeEndpointType??void 0,httpStreamMode:z?.activeHttpStreamMode??void 0})},onError:e=>{Q(e)},onRefreshEntrypoints:()=>new Promise((e,t)=>{B=e,V=t,R({type:`refreshEntrypoints`})}),onProtocolMessage:e=>{U&&U.postMessage({direction:`received`,message:Array.from(e)});let t=n(e),i=we(e),a=$(t);if(!(!i&&a.length===0))try{let t=r(e),n=e.buffer instanceof ArrayBuffer&&e.byteOffset===0&&e.byteLength===e.buffer.byteLength,o=a.length>0;if(o&&!i&&a.length===1&&n){let n=e.buffer;a[0].postMessage({type:`protocol`,message:n,headers:t},[n]);return}if(!o&&i&&n){let n=e.buffer;R({type:`protocol`,message:n,headers:t},[n]);return}if(o&&n){let n=[];for(let t=1;t<a.length;t++)n.push(e.slice().buffer);let r=i?e.slice().buffer:null,o=e.buffer;a[0].postMessage({type:`protocol`,message:o,headers:t},[o]);for(let e=1;e<a.length;e++)a[e].postMessage({type:`protocol`,message:n[e-1],headers:t},[n[e-1]]);r&&R({type:`protocol`,message:r,headers:t},[r]);return}if(o)for(let n of a){let r=e.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:t},[r])}if(i){let n=e.slice().buffer;R({type:`protocol`,message:n,headers:t},[n])}}catch(e){Q(e)}}}),await z.connect(e.entrypoints,{retry:e.retry})}self.addEventListener(`message`,t=>{let i=t.data;if(i.type===`connect`){De(i).catch(e=>{L.error(`Failed to connect: ${e}`),Q(e),Z()});return}if(i.type===`disconnect`){Z(),R({type:`state`,state:`idle`});return}if(i.type===`send`){if(!z)return;try{let t=e(new Uint8Array(i.message));z.sendProtocolMessage(t),U&&U.postMessage({direction:`sent`,message:Array.from(t)})}catch(e){Q(e)}return}if(i.type===`setInterest`){H=i.opcodeGroupsMask;return}if(i.type===`enableDevtools`){i.enabled&&!U?U=new BroadcastChannel(`ikon:devtools`):!i.enabled&&U&&(U.close(),U=null);return}if(i.type===`setLogLevel`){se(i.level);return}if(i.type===`checkHealth`){z?.checkHealth();return}if(i.type===`triggerReconnect`){z?.triggerReconnect(i.reason);return}if(i.type===`refreshedEntrypoints`){B&&(B({entrypoints:i.entrypoints,sessionId:i.sessionId}),B=null,V=null);return}if(i.type===`refreshEntrypointsFailed`){V&&=(V(Error(`Failed to refresh entrypoints`)),B=null,null);return}if(i.type===`forwardToPorts`){try{let t=e(new Uint8Array(i.message)),a=$(n(t));if(a.length>0){let e=r(t);for(let n of a){let r=t.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:e},[r])}}}catch(e){Q(e)}return}if(i.type===`attachPort`){try{i.port.start?.()}catch{}let e=W.length;W.push(i.portId),G.push({port:i.port,opcodeGroupsMask:i.opcodeGroupsMask}),K.set(i.portId,e);return}if(i.type===`detachPort`){let e=K.get(i.portId);if(e!==void 0){let t=G[e];try{t.port.close()}catch{}let n=W.length-1;if(e!==n){let t=W[n];W[e]=t,G[e]=G[n],K.set(t,e)}W.length--,G.length--,K.delete(i.portId)}return}if(i.type===`attachSendPort`){let e=Y.get(i.portId);if(e!==void 0){let t=J[e];try{t.port.close()}catch{}let n=q.length-1;if(e!==n){let t=q[n];q[e]=t,J[e]=J[n],Y.set(t,e)}q.length--,J.length--,Y.delete(i.portId)}let t={port:i.port,opcodeGroupsMask:i.opcodeGroupsMask},n=q.length;q.push(i.portId),J.push(t),Y.set(i.portId,n);try{t.port.start?.()}catch{}t.port.addEventListener(`message`,e=>{Ee(t.opcodeGroupsMask,e.data)});return}if(i.type===`detachSendPort`){let e=Y.get(i.portId);if(e!==void 0){let t=J[e];try{t.port.close()}catch{}let n=q.length-1;if(e!==n){let t=q[n];q[e]=t,J[e]=J[n],Y.set(t,e)}q.length--,J.length--,Y.delete(i.portId)}return}});
@@ -1 +1 @@
1
- const e={None:0,SendBackToSender:1,Delayable:2,SendToUser:4,Compressed:8,Unreliable:16};function t(e){return e}function n(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function r(e){let t=S(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}async function i(t,n,i){let o=S(t),s=r(o);if(n!==void 0&&s.opcode!==n)throw Error(`Unexpected opcode ${s.opcode}`);if(s.payloadType!==8)throw Error(`Unexpected payload type ${s.payloadType}`);let c=27+s.targetIds.length*4,l=o.subarray(c,s.length);return(s.flags&e.Compressed)!==0&&(l=await a(l)),l}async function a(e){if(typeof DecompressionStream>`u`)throw Error(`DecompressionStream not supported`);let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=new Uint8Array(e);n.write(r).then(()=>n.close()).catch(()=>void 0);let i=t.readable.getReader(),a=[],o=0;for(;;){let{done:e,value:t}=await i.read();if(e)break;a.push(t),o+=t.length}let s=new Uint8Array(o),c=0;for(let e=0;e<a.length;e++)s.set(a[e],c),c+=a[e].length;return s}let o=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});new TextEncoder;const s=new TextDecoder(`utf-8`,{fatal:!0});var c=class e{buffer;version;offset;end;constructor(e,t,n){this.buffer=e,this.version=t,this.offset=n,this.end=e.length-1}static create(t){let n=S(t);if(n.length<2)throw Error(`Teleport payload too short`);if(n[0]!==161||n[n.length-1]!==162)throw Error(`Teleport object missing markers`);let r={offset:1},i=g(n,r,`InvalidLength`);return new e(n,i,r.offset)}next(){if(this.offset>=this.end)return null;if(this.offset+5>this.buffer.length)throw Error(`Teleport object truncated`);let e=ne(this.buffer,this.offset);this.offset+=4;let t=this.buffer[this.offset++],n=t>>4&15;if(t&15)throw Error(`Teleport field flags must be zero`);let r=_(n),i;if(r>=0)v(this.buffer,this.offset,r),i=this.buffer.subarray(this.offset,this.offset+r),this.offset+=r;else{let e={offset:this.offset},t=g(this.buffer,e,`InvalidLength`);v(this.buffer,e.offset,t),i=this.buffer.subarray(e.offset,e.offset+t),this.offset=e.offset+t}return new u(e,n,i)}},l=class{type;payload;constructor(e,t){this.type=e,this.payload=t}asInt32(){return this.ensureType(3),new DataView(this.payload.buffer,this.payload.byteOffset,4).getInt32(0,!0)}asUInt32(){return this.ensureType(5),new DataView(this.payload.buffer,this.payload.byteOffset,4).getUint32(0,!0)}asInt64(){return this.ensureType(4),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigInt64(0,!0)}asUInt64(){return this.ensureType(6),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigUint64(0,!0)}asFloat32(){return this.ensureType(7),new DataView(this.payload.buffer,this.payload.byteOffset,4).getFloat32(0,!0)}asFloat64(){return this.ensureType(8),new DataView(this.payload.buffer,this.payload.byteOffset,8).getFloat64(0,!0)}asBool(){return this.ensureType(2),this.payload.length>0&&this.payload[0]!==0}asBinary(){return this.ensureType(13),this.payload}asUtf8(){return this.ensureType(12),this.payload}asString(){return this.ensureType(12),s.decode(this.payload)}asGuid(){return this.ensureType(14),h.fromBytes(this.payload)}asObject(){return this.ensureType(11),c.create(this.payload)}asArray(){return this.ensureType(9),d.create(this.payload)}asDictionary(){return this.ensureType(10),p.create(this.payload)}ensureType(e){if(this.type!==e)throw Error(`Teleport value has type ${o[this.type]}, expected ${o[e]}`)}},u=class extends l{fieldId;constructor(e,t,n){super(t,n),this.fieldId=e}get isNull(){return this.type===1}},d=class e{payload;elementType;count;offset;index=0;constructor(e){if(this.payload=e,e.length===0)throw Error(`Array payload too short`);let t=e[0];if(this.elementType=t>>4&15,t&15)throw Error(`Array flags must be zero`);let n={offset:1};this.count=g(e,n,`ArrayMalformed`),this.offset=n.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Array payload contains trailing data`);return null}let e=this.readValue();return this.index++,e}readValue(){switch(this.elementType){case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:{let e=_(this.elementType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(this.elementType,t)}case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(this.elementType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(10,t)}default:throw Error(`Unsupported array element type ${o[this.elementType]}`)}}},f=class extends l{constructor(e,t){super(e,t)}},p=class e{payload;keyType;valueType;count;offset;index=0;constructor(e){if(this.payload=e,e.length<2)throw Error(`Dictionary payload too short`);if(this.keyType=e[0]>>4&15,this.valueType=e[1]>>4&15,e[0]&15||e[1]&15)throw Error(`Dictionary key/value flags must be zero`);te(this.keyType);let t={offset:2};this.count=g(e,t,`DictMalformed`),this.offset=t.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Dictionary payload contains trailing data`);return null}let e=this.readKey(),t=this.readValue();return this.index++,new m(e,t)}readKey(){let e=_(this.keyType);if(e>=0){v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.keyType,t)}if(this.keyType===12||this.keyType===13){let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.keyType,n)}throw Error(`Unsupported dictionary key type`)}readValue(){switch(this.valueType){case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.valueType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(10,t)}case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:case 1:{let e=_(this.valueType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.valueType,t)}default:throw Error(`Unsupported dictionary value type ${o[this.valueType]}`)}}},m=class{key;value;constructor(e,t){this.key=e,this.value=t}},h=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),re(t.subarray(8,10)),re(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}};function g(e,t,n){if(t.offset>=e.length)throw Error(n);let r=0,i=0,a=0;for(;t.offset<e.length;){let n=e[t.offset++];if(a++,r|=(n&127)<<i,!(n&128)){if(a!==ee(r))throw Error(`Teleport VarUInt is not canonical`);return r>>>0}if(i+=7,i>=35)throw Error(`Teleport VarUInt exceeds 32-bit range`)}throw Error(n)}function ee(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}function _(e){switch(e){case 3:case 5:case 7:return 4;case 4:case 6:case 8:return 8;case 14:return 16;case 2:return 1;case 1:return 0;default:return-1}}function te(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function v(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`Teleport payload exceeds bounds`)}function ne(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function y(e,t){if(t>=e.length)throw Error(`Array payload exceeds bounds`);let n=e[t],r=n>>4&15;if(n&15)throw Error(`Array flags must be zero`);let i={offset:t+1},a=g(e,i,`ArrayMalformed`),o=_(r);if(o>=0){let n=o*a;return v(e,i.offset,n),i.offset+n-t}let s=i.offset;for(let t=0;t<a;t++)s=x(r,e,s,`ArrayMalformed`);return s-t}function b(e,t){if(t+2>e.length)throw Error(`Dictionary payload too short`);let n=e[t]>>4&15,r=e[t+1]>>4&15;if(e[t]&15||e[t+1]&15)throw Error(`Dictionary key/value flags must be zero`);te(n);let i={offset:t+2},a=g(e,i,`DictMalformed`),o=i.offset;for(let t=0;t<a;t++)o=x(n,e,o,`DictMalformed`),o=x(r,e,o,`DictMalformed`);return o-t}function x(e,t,n,r){let i=_(e);if(i>=0)return v(t,n,i),n+i;switch(e){case 12:case 13:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 11:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 9:return n+y(t,n);case 10:return n+b(t,n);default:throw Error(`Unsupported Teleport type ${o[e]}`)}}function re(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function S(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let ie=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Opus=1]=`Opus`,e[e.Mp3=2]=`Mp3`,e[e.RawPcm16=3]=`RawPcm16`,e}({}),ae=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MobileWeb=1]=`MobileWeb`,e[e.MobileApp=2]=`MobileApp`,e[e.DesktopWeb=3]=`DesktopWeb`,e[e.DesktopApp=4]=`DesktopApp`,e}({}),oe=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Backend=2]=`Backend`,e[e.Server=4]=`Server`,e[e.Plugin=8]=`Plugin`,e[e.Browser=16]=`Browser`,e[e.Native=32]=`Native`,e}({}),se=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MessagePack=1]=`MessagePack`,e[e.MemoryPack=2]=`MemoryPack`,e[e.Json=4]=`Json`,e[e.Teleport=8]=`Teleport`,e[e.All=15]=`All`,e}({}),ce=function(e){return e[e.Css=0]=`Css`,e[e.Flutter=1]=`Flutter`,e}({}),le=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Machine=1]=`Machine`,e[e.Human=2]=`Human`,e}({}),ue=function(e){return e[e.Unknown=0]=`Unknown`,e[e.H264=1]=`H264`,e[e.Vp8=2]=`Vp8`,e[e.Vp9=3]=`Vp9`,e[e.Av1=4]=`Av1`,e}({}),de=function(e){return e[e.Unknown=0]=`Unknown`,e[e.DotNet=1]=`DotNet`,e[e.TypeScript=2]=`TypeScript`,e[e.Cpp=3]=`Cpp`,e[e.Dart=4]=`Dart`,e[e.Rust=5]=`Rust`,e}({}),fe=function(e){return e[e.Local=0]=`Local`,e[e.Cloud=1]=`Cloud`,e}({}),C=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.ANALYTICS_TRAFFIC_USAGE=524300]=`ANALYTICS_TRAFFIC_USAGE`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.ACTION_FILE_UPLOAD_RESUME2=1048657]=`ACTION_FILE_UPLOAD_RESUME2`,e[e.ACTION_FILE_UPLOAD_RESUME_RESPONSE2=1048658]=`ACTION_FILE_UPLOAD_RESUME_RESPONSE2`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME=4194309]=`AUDIO_FRAME`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function pe(e){let t={};return me(t),e&&Object.assign(t,e),t}function me(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ie.Unknown,e.CodecDetails=``,e.SampleRate=0,e.Channels=0,e.ShapeSets=void 0,e.CorrelationId=void 0,e}function he(e,t){let n=t??pe();return me(n),ge(e,n),n}function ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 265814330:if(n.isNull){t.ShapeSets=void 0;break}t.ShapeSets=_e(n.asArray());break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2431514951:if(n.isNull)throw Error();t.Channels=n.asInt32();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4101844078:if(n.isNull)throw Error();t.SampleRate=n.asInt32()}}function _e(e){let t=[],n;for(;(n=e.next())!==null;)t.push(be(n.asObject()));return t}function ve(e){let t={};return ye(t),e&&Object.assign(t,e),t}function ye(e){return e.SetId=0,e.Name=``,e.ShapeNames=[],e}function be(e,t){let n=t??ve();return ye(n),xe(e,n),n}function xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1107713536:if(n.isNull)throw Error();t.Name=n.asString();break;case 1154362099:if(n.isNull)throw Error();t.SetId=n.asUInt32();break;case 1185721362:if(n.isNull)throw Error();t.ShapeNames=Se(n.asArray())}}function Se(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ce(e){let t={};return we(t),e&&Object.assign(t,e),t}function we(e){return e.ContextType=oe.Unknown,e.UserType=le.Unknown,e.PayloadType=se.Unknown,e.Description=``,e.UserId=``,e.DeviceId=``,e.ProductId=``,e.VersionId=``,e.InstallId=``,e.Locale=``,e.SessionId=-1,e.IsInternal=!1,e.IsSnapshot=!1,e.SnapshotVariant=``,e.IsReady=!1,e.HasInput=!1,e.AuthSessionId=``,e.IsAnonymous=!1,e.IsGlobal=!1,e.ReceiveAllMessages=!1,e.PreciseJoinedAt=BigInt(0),e.UserAgent=``,e.ClientType=ae.Unknown,e.UniqueSessionId=``,e.Parameters=Object.create(null),e.SdkType=de.Unknown,e.SdkCapability=0,e.ViewportWidth=0,e.ViewportHeight=0,e.Theme=``,e.Timezone=``,e.IsTouchDevice=!1,e.InitialPath=``,e.InitialUrl=``,e.StyleFormat=ce.Css,e.SupportsCompression=!0,e.IsSoftDisconnected=!1,e.SoftDisconnectAt=BigInt(0),e}function Te(e,t){let n=t??Ce();return we(n),Ee(e,n),n}function Ee(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 76337612:if(n.isNull)throw Error();t.DeviceId=n.asString();break;case 185396121:if(n.isNull)throw Error();t.InstallId=n.asString();break;case 227309410:if(n.isNull)throw Error();t.InitialUrl=n.asString();break;case 250031587:if(n.isNull)throw Error();t.Theme=n.asString();break;case 388632637:if(n.isNull)throw Error();t.UserAgent=n.asString();break;case 417197284:if(n.isNull)throw Error();t.ContextType=n.asInt32();break;case 425972532:if(n.isNull)throw Error();t.SoftDisconnectAt=n.asUInt64();break;case 469070965:if(n.isNull)throw Error();t.HasInput=n.asBool();break;case 470595159:if(n.isNull)throw Error();t.UserType=n.asInt32();break;case 594855258:if(n.isNull)throw Error();t.InitialPath=n.asString();break;case 617065367:if(n.isNull)throw Error();t.IsSoftDisconnected=n.asBool();break;case 661691032:if(n.isNull)throw Error();t.SupportsCompression=n.asBool();break;case 781727218:if(n.isNull)throw Error();t.UserId=n.asString();break;case 834078886:if(n.isNull)throw Error();t.ProductId=n.asString();break;case 1043273762:if(n.isNull)throw Error();t.AuthSessionId=n.asString();break;case 1236999138:if(n.isNull)throw Error();t.ReceiveAllMessages=n.asBool();break;case 1286979607:if(n.isNull)throw Error();t.ViewportHeight=n.asInt32();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1437068682:if(n.isNull)throw Error();t.SdkCapability=n.asInt32();break;case 1668375353:if(n.isNull)throw Error();t.IsSnapshot=n.asBool();break;case 1715899485:if(n.isNull)throw Error();t.Locale=n.asString();break;case 1719830747:if(n.isNull)throw Error();t.IsAnonymous=n.asBool();break;case 1942830531:if(n.isNull)throw Error();t.SdkType=n.asInt32();break;case 1999510636:if(n.isNull)throw Error();t.SessionId=n.asInt32();break;case 2033288346:if(n.isNull)throw Error();t.ViewportWidth=n.asInt32();break;case 2079864626:if(n.isNull)throw Error();t.PreciseJoinedAt=n.asUInt64();break;case 2142346422:if(n.isNull)throw Error();t.PayloadType=n.asInt32();break;case 2228539873:if(n.isNull)throw Error();t.StyleFormat=n.asInt32();break;case 2232517119:if(n.isNull)throw Error();t.IsTouchDevice=n.asBool();break;case 2388060749:if(n.isNull)throw Error();t.IsGlobal=n.asBool();break;case 2504065971:if(n.isNull)throw Error();t.SnapshotVariant=n.asString();break;case 2598291686:if(n.isNull)throw Error();t.VersionId=n.asString();break;case 2719718823:if(n.isNull)throw Error();t.UniqueSessionId=n.asString();break;case 2810953526:if(n.isNull)throw Error();t.ClientType=n.asInt32();break;case 2840065720:if(n.isNull)throw Error();t.IsReady=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=De(n.asDictionary());break;case 3542818975:if(n.isNull)throw Error();t.Timezone=n.asString();break;case 3586157513:if(n.isNull)throw Error();t.IsInternal=n.asBool()}}function De(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function Oe(e){let t={};return ke(t),e&&Object.assign(t,e),t}function ke(e){return e.FunctionId=h.fromBytes(new Uint8Array(16)),e.FunctionName=``,e.Parameters=[],e.ResultTypeName=``,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.IsCancellable=!1,e.Description=``,e.LlmInlineResult=!1,e.LlmCallOnlyOnce=!1,e.RequiresInstance=!1,e.Versions=[],e}function Ae(e,t){let n=t??Oe();return ke(n),je(e,n),n}function je(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 703025676:if(n.isNull)throw Error();t.ResultTypeName=n.asString();break;case 814454131:if(n.isNull)throw Error();t.FunctionName=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 976255570:if(n.isNull)throw Error();t.FunctionId=n.asGuid();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1479280922:if(n.isNull)throw Error();t.IsCancellable=n.asBool();break;case 1533537016:if(n.isNull)throw Error();t.RequiresInstance=n.asBool();break;case 1909301063:if(n.isNull)throw Error();t.Versions=Me(n.asArray());break;case 2274386296:if(n.isNull)throw Error();t.LlmInlineResult=n.asBool();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=Ne(n.asArray());break;case 3568439632:if(n.isNull)throw Error();t.LlmCallOnlyOnce=n.asBool()}}function Me(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ne(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ie(n.asObject()));return t}function Pe(e){let t={};return Fe(t),e&&Object.assign(t,e),t}function Fe(e){return e.ParameterIndex=0,e.ParameterName=``,e.TypeName=``,e.HasDefaultValue=!1,e.DefaultValueJson=``,e.DefaultValueData=new Uint8Array,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.Description=``,e}function Ie(e,t){let n=t??Pe();return Fe(n),Le(e,n),n}function Le(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 607861992:if(n.isNull)throw Error();t.HasDefaultValue=n.asBool();break;case 894485888:if(n.isNull)throw Error();t.DefaultValueJson=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1883521406:if(n.isNull)throw Error();t.DefaultValueData=n.asBinary();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 3609695522:if(n.isNull)throw Error();t.TypeName=n.asString();break;case 4075263697:if(n.isNull)throw Error();t.ParameterName=n.asString();break;case 4257460908:if(n.isNull)throw Error();t.ParameterIndex=n.asInt32()}}function Re(e){let t={};return ze(t),e&&Object.assign(t,e),t}function ze(e){return e.MimeType=``,e.Value=new Uint8Array,e}function Be(e,t){let n=t??Re();return ze(n),Ve(e,n),n}function Ve(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1405462580:if(n.isNull)throw Error();t.Value=n.asBinary();break;case 2968276160:if(n.isNull)throw Error();t.MimeType=n.asString()}}function He(e){let t={};return Ue(t),e&&Object.assign(t,e),t}function Ue(e){return e.Category=``,e}function We(e,t){let n=t??He();return Ue(n),Ge(e,n),n}function Ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 3612929027:if(n.isNull)throw Error();t.Category=n.asString()}}function Ke(e){let t={};return qe(t),e&&Object.assign(t,e),t}function qe(e){return e.StyleId=``,e.Style=Object.create(null),e}function Je(e,t){return Ye(c.create(e),t)}function Ye(e,t){let n=t??Ke();return qe(n),Xe(e,n),n}function Xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=Qe(n.asDictionary())}}async function Ze(e,t){return Je(await i(e,2097188,1),t)}function Qe(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function $e(e){let t={};return et(t),e&&Object.assign(t,e),t}function et(e){return e.Styles=[],e}function tt(e,t){return nt(c.create(e),t)}function nt(e,t){let n=t??$e();return et(n),rt(e,n),n}function rt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 2136687806:if(n.isNull)throw Error();t.Styles=at(n.asArray())}}async function it(e,t){return tt(await i(e,2097192,1),t)}function at(e){let t=[],n;for(;(n=e.next())!==null;)t.push(ct(n.asObject()));return t}function ot(e){let t={};return st(t),e&&Object.assign(t,e),t}function st(e){return e.StyleId=``,e.Style=Object.create(null),e}function ct(e,t){let n=t??ot();return st(n),lt(e,n),n}function lt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=ut(n.asDictionary())}}function ut(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function dt(e){let t={};return ft(t),e&&Object.assign(t,e),t}function ft(e){return e.StyleIds=[],e}function pt(e,t){return mt(c.create(e),t)}function mt(e,t){let n=t??dt();return ft(n),ht(e,n),n}function ht(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1415642792:if(n.isNull)throw Error();t.StyleIds=_t(n.asArray())}}async function gt(e,t){return pt(await i(e,2097193,1),t)}function _t(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function vt(e){let t={};return w(t),e&&Object.assign(t,e),t}function w(e){return e.Json=``,e.Payloads=Object.create(null),e}function yt(e,t){return bt(c.create(e),t)}function bt(e,t){let n=t??vt();return w(n),xt(e,n),n}function xt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 425183262:if(n.isNull)throw Error();t.Json=n.asString();break;case 653781469:if(n.isNull)throw Error();t.Payloads=Ct(n.asDictionary())}}async function St(e,t){return yt(await i(e,2097190,1),t)}function Ct(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Be(n.value.asObject())}return t}function T(e){let t={};return E(t),e&&Object.assign(t,e),t}function E(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ue.H264,e.CodecDetails=``,e.Width=0,e.Height=0,e.Framerate=30,e.CorrelationId=void 0,e}function wt(e,t){let n=t??T();return E(n),Tt(e,n),n}function Tt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 164808083:if(n.isNull)throw Error();t.Framerate=n.asFloat64();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 2950031986:if(n.isNull)throw Error();t.Height=n.asInt32();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4065070594:if(n.isNull)throw Error();t.Width=n.asInt32()}}function Et(e){let t={};return Dt(t),e&&Object.assign(t,e),t}function Dt(e){return e.Clients=Object.create(null),e.Functions=Object.create(null),e.UIStreams=Object.create(null),e.AudioStreams=Object.create(null),e.VideoStreams=Object.create(null),e.SpaceId=``,e.IkonServerId=``,e.AppSessionId=``,e.SessionIdentityHash=``,e.SpaceUrl=``,e.SessionUrl=``,e.FirstUserId=``,e.PrimaryUserId=``,e.OrganisationName=``,e.SpaceName=``,e.ServerRunType=fe.Local,e.PublicAccess=!1,e.DebugMode=!1,e.retiredFields=void 0,e}function Ot(e,t){return kt(c.create(e),t)}function kt(e,t){let n=t??Et();return Dt(n),At(e,n),n}function At(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 620476198:if(n.isNull)throw Error();t.IkonServerId=n.asString();break;case 693643444:if(n.isNull)throw Error();t.FirstUserId=n.asString();break;case 1144553441:if(n.isNull)throw Error();t.Clients=Mt(n.asDictionary());break;case 1731742060:if(n.isNull)throw Error();t.AppSessionId=n.asString();break;case 1931178803:if(n.isNull)throw Error();t.SessionIdentityHash=n.asString();break;case 2191393509:if(n.isNull)throw Error();t.SessionUrl=n.asString();break;case 2563358196:if(n.isNull)throw Error();t.SpaceUrl=n.asString();break;case 3042922213:if(n.isNull)throw Error();t.PublicAccess=n.asBool();break;case 3064612128:if(n.isNull)throw Error();t.ServerRunType=n.asInt32();break;case 3219210453:if(n.isNull)throw Error();t.OrganisationName=n.asString();break;case 3504054055:if(n.isNull)throw Error();t.DebugMode=n.asBool();break;case 3678477544:if(n.isNull)throw Error();t.Functions=Nt(n.asDictionary());break;case 3696445035:if(n.isNull)throw Error();t.UIStreams=Pt(n.asDictionary());break;case 3707543140:if(n.isNull)throw Error();t.SpaceId=n.asString();break;case 3712281496:if(n.isNull)throw Error();t.PrimaryUserId=n.asString();break;case 3895362455:if(n.isNull)throw Error();t.AudioStreams=Ft(n.asDictionary());break;case 3897397815:if(n.isNull)throw Error();t.VideoStreams=It(n.asDictionary());break;case 4225107827:if(n.isNull)throw Error();t.SpaceName=n.asString();break;case 976837618:if(n.isNull)break;(t.retiredFields??={}).SessionHash=n.asString();break;case 2271236852:if(n.isNull)break;(t.retiredFields??={}).SessionChannelUrl=n.asString();break;case 2277643855:if(n.isNull)break;(t.retiredFields??={}).ChannelUrl=n.asString();break;case 3914217035:if(n.isNull)break;(t.retiredFields??={}).ServerSessionId=n.asString()}}async function jt(e,t){return Ot(await i(e,65539,11),t)}function Mt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Te(n.value.asObject())}return t}function Nt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Lt(n.value.asArray())}return t}function Pt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Bt(n.value.asObject())}return t}function Ft(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Wt(n.value.asObject())}return t}function It(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Jt(n.value.asObject())}return t}function Lt(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ae(n.asObject()));return t}function Rt(e){let t={};return zt(t),e&&Object.assign(t,e),t}function zt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=He(),e}function Bt(e,t){let n=t??Rt();return zt(n),Vt(e,n),n}function Vt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=We(n.asObject())}}function Ht(e){let t={};return Ut(t),e&&Object.assign(t,e),t}function Ut(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=pe(),e}function Wt(e,t){let n=t??Ht();return Ut(n),Gt(e,n),n}function Gt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=he(n.asObject())}}function Kt(e){let t={};return qt(t),e&&Object.assign(t,e),t}function qt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=T(),e}function Jt(e,t){let n=t??Kt();return qt(n),Yt(e,n),n}function Yt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=wt(n.asObject())}}function D(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xt(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function Zt(e,t,n,r){if(!(e===void 0&&r)){if(Array.isArray(e)){let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(typeof a!=`string`)throw Error(`Invalid styleIds entry at ${t}.styleIds[${i}] for element ${n}`);let o=a.trim();o.length!==0&&r.push(o)}return r}if(e!=null)throw Error(`Invalid styleIds for element ${n}`);return[]}}function O(e,t){if(!e||typeof e!=`object`)throw Error(`Invalid UI node at ${t}`);let n=e.Id,r=e.Type,i=e.Props,a=e.Children,o=e.StyleIds;if(typeof n!=`string`)throw Error(`Invalid or missing node id at ${t}`);if(typeof r!=`string`)throw Error(`Invalid or missing node type for ${n}`);let s={};if(i!=null){if(!D(i))throw Error(`Invalid props for node ${n}`);s=Xt(i)}let c=[];Array.isArray(a)&&(c=a.map((e,n)=>O(e??{},`${t}.children[${n}]`)));let l=Zt(o,t,n,!1),u=typeof e.SourceMarker==`string`?e.SourceMarker:void 0;return{id:n,type:r,props:s,children:c,styleIds:l??[],...u?{sourceMarker:u}:{}}}function Qt(e,t){if(!D(e))throw Error(`Invalid text delta at ${t}`);let n=e.NodeId,r=e.PropertyName,i=e.Start,a=e.End,o=e.InsertedText;if(typeof n!=`string`||n.length===0)throw Error(`Invalid text delta node id at ${t}`);if(typeof r!=`string`||r.length===0)throw Error(`Invalid text delta property name at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid text delta start at ${t}`);if(typeof o!=`string`)throw Error(`Invalid text delta inserted text at ${t}`);let s;if(typeof a==`number`){if(!Number.isFinite(a))throw Error(`Invalid text delta end at ${t}`);s=a}else if(a!=null)throw Error(`Invalid text delta end at ${t}`);return{nodeId:n,propertyName:r,start:i,end:s,insertedText:o}}function $t(e,t){if(!D(e))throw Error(`Invalid child insert at ${t}`);let n=e.Index,r=e.Node;if(typeof n!=`number`||!Number.isFinite(n))throw Error(`Invalid child insert index at ${t}`);if(!D(r))throw Error(`Invalid child insert node at ${t}`);return{index:n,node:O(r,`${t}.node`)}}function en(e,t){if(!D(e))throw Error(`Invalid child move at ${t}`);let n=e.NodeId,r=e.FromIndex,i=e.ToIndex;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child move nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child move fromIndex at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid child move toIndex at ${t}`);return{nodeId:n,fromIndex:r,toIndex:i}}function tn(e,t){if(!D(e))throw Error(`Invalid child remove at ${t}`);let n=e.NodeId,r=e.Index;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child remove nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child remove index at ${t}`);return{nodeId:n,index:r}}function nn(e,t){if(!D(e))throw Error(`Invalid node change at ${t}`);let n=e.nodeId;if(typeof n!=`string`||n.length===0)throw Error(`Invalid node change nodeId at ${t}`);let r=Array.isArray(e.inserts)?e.inserts.map((e,n)=>$t(e??{},`${t}.inserts[${n}]`)):void 0,i=Array.isArray(e.moves)?e.moves.map((e,n)=>en(e??{},`${t}.moves[${n}]`)):void 0,a=Array.isArray(e.removals)?e.removals.map((e,n)=>tn(e??{},`${t}.removals[${n}]`)):void 0,o;if(D(e.changedProps)){o=new Map;for(let[t,n]of Object.entries(e.changedProps)){if(!D(n))continue;let e=n.New;e==null?o.set(t,void 0):D(e)?o.set(t,Xt(e)):o.set(t,e)}}let s=Array.isArray(e.textUpdates)?e.textUpdates.map((e,n)=>Qt(e??{},`${t}.textUpdates[${n}]`)):void 0,c=e.styleIds,l=c===void 0?void 0:Zt(c,t,n,!0);return{nodeId:n,...r&&r.length>0?{inserts:r}:{},...i&&i.length>0?{moves:i}:{},...a&&a.length>0?{removals:a}:{},...o&&o.size>0?{changedProps:o}:{},...s&&s.length>0?{textUpdates:s}:{},...l===void 0?{}:{styleIds:l}}}function rn(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,r);return t}function an(e,t,n){if(!e||typeof e!=`object`)throw new k(`UI update graph is missing`);let r=O(e,`graph`);if(r.type!==`root`)throw new k(`UI update root element must have type "root"`);return{type:`full`,version:n,root:r,metadata:sn(r.props,t)}}function on(e,t,n){if(!Array.isArray(e))throw new k(`UI diff changes must be an array`);if(!D(t))throw new k(`UI diff metadata must be an object`);let r=t.viewId;if(typeof r!=`string`||r.length===0)throw new k(`UI diff metadata is missing viewId`);let i=e.map((e,t)=>nn(e??{},`changes[${t}]`)),a=typeof t.isUpdate==`boolean`?t.isUpdate:void 0;return{type:`diff`,version:n,changes:i,metadata:{viewId:r,...a===void 0?{}:{isUpdate:a}}}}function sn(e,t){let n=e.viewId;if(typeof n!=`string`||n.length===0)throw new k(`UI update root is missing viewId`);let r=n,i=typeof e.isUpdate==`boolean`?e.isUpdate:void 0;return D(t)&&(typeof t.viewId==`string`&&t.viewId.length>0&&(r=t.viewId),typeof t.isUpdate==`boolean`&&(i=t.isUpdate)),{viewId:r,...i===void 0?{}:{isUpdate:i}}}var k=class extends Error{causeError;constructor(e,t){super(e),this.causeError=t,this.name=`UiUpdateParseError`,t instanceof Error&&(this.stack=t.stack)}};function A(e){let t;try{t=JSON.parse(e.Json)}catch(e){throw new k(`Failed to parse UIUpdate.Json payload`,e)}if(!t||typeof t!=`object`)throw new k(`UI update snapshot must be an object`);let{type:n,version:r}=t;if(n!==`full`&&n!==`diff`)throw new k(`Unknown UI update type: ${String(n)}`);if(typeof r!=`number`)throw new k(`UI update version must be a number`);return{snapshot:n===`full`?an(t.graph,t.metadata,r):on(t.changes,t.metadata,r),payloads:e.Payloads?rn(e.Payloads):new Map}}const cn=new Map,ln={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function un(e,t){return`[${e}] ${t}`}function j(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:ln[e],component:t,message:n,args:r};for(let[t,n]of cn)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(1<=e){let i=un(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function dn(e){return{debug(t,...n){j(0,e,t,n)},info(t,...n){j(1,e,t,n)},warn(t,...n){j(2,e,t,n)},error(t,...n){j(3,e,t,n)}}}var fn=class{cache=new Map;getHandler(e,t,n){let r=`${e}:${t}`,i=this.cache.get(r);return i||(i=()=>n(t),this.cache.set(r,i)),i}getHandlerWithPayload(e,t,n){let r=`${e}:${t}:payload`,i=this.cache.get(r);return i||(i=e=>n(t,e),this.cache.set(r,i)),i}getBooleanHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getStringHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberArrayHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNullableBooleanHandler(e,t,n){let r=`${e}:${t}:nullable-bool`,i=this.cache.get(r);return i||(i=e=>n(t,e??null),this.cache.set(r,i)),i}invalidateNode(e){let t=`${e}:`;for(let e of this.cache.keys())e.startsWith(t)&&this.cache.delete(e)}invalidateHandler(e,t){this.cache.delete(`${e}:${t}`),this.cache.delete(`${e}:${t}:payload`),this.cache.delete(`${e}:${t}:nullable-bool`)}clear(){this.cache.clear()}get size(){return this.cache.size}};const pn=dn(`UiStreamStore`);var mn=class{views=new Map;listeners=new Set;payloads=new Map;snapshotMode=!1;snapshot={views:new Map,payloads:new Map,version:-1};rootViewId;nodeListeners=new Map;changedNodeIds=new Set;nodeVersions=new Map;structureChanged=!1;resyncNeeded=!1;viewsDirty=!0;payloadsDirty=!0;handlerCache=new fn;nodeIndex=new Map;indexedViews;apply(e){if(this.snapshotMode){if(e.snapshot.type!==`full`)return!1;this.snapshotMode=!1,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1}}let{snapshot:t,payloads:n}=e,{metadata:r}=t,{viewId:i}=r,a=this.views.get(i);a||(a={version:0},this.views.set(i,a));let o=t.type===`diff`&&r.isUpdate===!0;if(t.version<a.version||t.type===`diff`&&t.version>a.version+1)return this.resyncNeeded=!0,!1;if(t.version===a.version&&!o)return!1;let s=!1;this.rootViewId||(this.rootViewId=i,s=!0,this.structureChanged=!0);let c=a.root;if(t.type===`full`)a.root=t.root,a.version=t.version,s=!0,this.viewsDirty=!0,this.structureChanged=!0,t.root&&N(t.root,this.changedNodeIds);else{if(!c)return this.resyncNeeded=!0,!1;let e=gn(c,t.changes);e===c?a.root=e:(a.root=e,s=!0,this.viewsDirty=!0,I(c,e,this.changedNodeIds)),a.version=t.version}for(let[e,t]of n)this.payloads.get(e)!==t&&(this.payloads.set(e,t),s=!0,this.payloadsDirty=!0);return s?(this.commitSnapshot(),this.notify(),!0):(a.version=t.version,!1)}enterSnapshotMode(){this.snapshotMode=!0}consumeResyncNeeded(){let e=this.resyncNeeded;return this.resyncNeeded=!1,e}replaceFromWire(e){let t={rootViewId:e.rootViewId,views:new Map(e.views),payloads:new Map(e.payloads),version:e.version};return this.replaceSnapshot(t)}patchFromOp(e){this.snapshotMode=!0;let t=e.expectedBaseVersion;if(t!==void 0&&this.snapshot.version!==t)return!1;let n=!1,r=null,i=null,a=()=>(r||=new Map(this.snapshot.views),r),o=()=>(i||=new Map(this.snapshot.payloads),i);if(e.deleteViews&&e.deleteViews.length>0)for(let t of e.deleteViews)a().delete(t)&&(n=!0,this.structureChanged=!0);if(e.upsertViews&&e.upsertViews.length>0)for(let[t,r]of e.upsertViews){let e=a(),i=e.get(t);i!==r&&(e.set(t,r),n=!0,i?I(i,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0))}if(e.deletePayloads&&e.deletePayloads.length>0)for(let t of e.deletePayloads)o().delete(t)&&(n=!0);if(e.upsertPayloads&&e.upsertPayloads.length>0)for(let[t,r]of e.upsertPayloads){let e=o();e.get(t)!==r&&(e.set(t,r),n=!0)}let s=e.rootViewId??this.snapshot.rootViewId;s!==this.snapshot.rootViewId&&(n=!0,this.structureChanged=!0);let c=e.nextVersion;if(c!==this.snapshot.version&&(n=!0),!n)return this.snapshot={...this.snapshot,version:c},!1;for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot={rootViewId:s,views:r??new Map(this.snapshot.views),payloads:i??new Map(this.snapshot.payloads),version:c},this.notify(),!0}replaceSnapshot(e){this.snapshotMode=!0;let t=this.snapshot,n=t.version!==e.version||t.rootViewId!==e.rootViewId||t.views.size!==e.views.size||t.payloads.size!==e.payloads.size;(t.rootViewId!==e.rootViewId||t.views.size!==e.views.size)&&(this.structureChanged=!0);for(let[n,r]of e.views){let e=t.views.get(n);e?I(e,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0)}for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot=e,n&&this.notify(),n}clear(){(this.snapshot.rootViewId!==void 0&&this.snapshot.rootViewId.length!==0||this.snapshot.views.size!==0||this.snapshot.payloads.size!==0)&&(this.snapshotMode=!0,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1},this.structureChanged=!0,this.notify())}getSnapshot(){return this.snapshot}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}subscribeNode(e,t){let n=this.nodeListeners.get(e);return n||(n=new Set,this.nodeListeners.set(e,n)),n.add(t),()=>{n&&(n.delete(t),n.size===0&&this.nodeListeners.delete(e))}}getNode(e){let t=this.snapshot.views;return this.indexedViews!==t&&this.rebuildNodeIndex(t),this.nodeIndex.get(e)}rebuildNodeIndex(e){this.nodeIndex.clear();for(let t of e.values())P(t,this.nodeIndex);for(let[t,n]of e)this.nodeIndex.set(t,n);this.indexedViews=e}getNodeVersion(e){return this.nodeVersions.get(e)??0}notifyNodes(){if(this.changedNodeIds.size===0||this.nodeListeners.size===0){this.changedNodeIds.clear();return}for(let e of this.changedNodeIds){let t=this.nodeListeners.get(e);if(t)for(let e of t)e()}this.changedNodeIds.clear()}commitSnapshot(){let e,t;if(this.viewsDirty){let t=new Map;for(let[e,n]of this.views)n.root&&t.set(e,n.root);e=t,this.viewsDirty=!1}else e=this.snapshot.views;this.payloadsDirty?(t=new Map(this.payloads),this.payloadsDirty=!1):t=this.snapshot.payloads;let n=this.rootViewId&&this.views.has(this.rootViewId)?this.views.get(this.rootViewId)?.version:void 0;if(n===void 0)for(let e of this.views.values())n=n===void 0?e.version:Math.max(n,e.version);this.snapshot={rootViewId:this.rootViewId,views:e,payloads:t,version:n};for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1)}notify(){if(this.notifyNodes(),this.structureChanged){this.structureChanged=!1;for(let e of this.listeners)e()}}},hn=class{streams=new Map;listeners=new Set;apply(e,t){let n=this.getOrCreateStreamEntry(e).store.apply(t);return n&&this.notify(e),n}needsResync(e){let t=this.streams.get(e);return t?t.store.consumeResyncNeeded():!1}applyStoreOp(e){if(e.type===`ReplaceStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.snapshot.streamId),n=t.category!==e.snapshot.category;return t.category=e.snapshot.category,t.store.replaceFromWire(e.snapshot)||n?(this.notify(e.snapshot.streamId),!0):!1}if(e.type===`PatchStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.streamId),n=e.category!==void 0&&t.category!==e.category;return e.category!==void 0&&(t.category=e.category),t.store.patchFromOp(e)||n?(this.notify(e.streamId),!0):!1}if(e.type===`ClearStream`){let t=this.streams.get(e.streamId);return t?(t.store.clear(),this.notify(e.streamId),!0):!1}return e.type===`RemoveStream`?this.streams.delete(e.streamId)?(this.notify(e.streamId),!0):!1:e.type===`SetStreamCategory`&&(this.setCategory(e.streamId,e.category),!0)}applyStoreOps(e){for(let t of e)this.applyStoreOp(t)}clear(e){let t=this.streams.get(e);t&&(t.store.clear(),this.notify(e))}remove(e){this.streams.delete(e)&&this.notify(e)}enterSnapshotModeAll(){for(let e of this.streams.values())e.store.enterSnapshotMode()}setCategory(e,t){let n=this.getOrCreateStreamEntry(e);n.category!==t&&(n.category=t,this.notify(e))}getSnapshot(e){let t=this.streams.get(e);if(t)return{...t.store.getSnapshot(),streamId:e,category:t.category}}getSnapshots(){let e=[];for(let[t,n]of this.streams){let r=n.store.getSnapshot();e.push({...r,streamId:t,category:n.category})}return e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getOrCreateStreamEntry(e){let t=this.streams.get(e);return t||(t={store:new mn},this.streams.set(e,t)),t}notify(e){for(let t of this.listeners)t(e)}};function gn(e,t,n){if(t.length===0)return e;let r=new Map;for(let e of t)r.set(e.nodeId,e);return M(e,r,n)}function M(e,t,n){let r=t.get(e.id),i=e,a=!1;if(r?.textUpdates&&r.textUpdates.length>0){let t=xn(e,r.textUpdates,n);i=t.node,a=t.changed}let o=!1,s=i.props;if(r?.changedProps&&r.changedProps.size>0)for(let[e,t]of r.changedProps.entries()){let n=s[e];if(t===void 0)(n!==void 0||e in s)&&(o||=(s=R(s),!0),delete s[e]);else if(z(t)){let r=R(t);B(r,n)||(o||=(s=R(s),!0),s[e]=r)}else B(t,n)||(o||=(s=R(s),!0),s[e]=t)}let c=!1,l=i.styleIds;r?.styleIds!==void 0&&(L(i.styleIds,r.styleIds)||(l=r.styleIds,c=!0));let u=i.children??[],d=u,f=!1;if(r?.removals&&r.removals.length>0||r?.moves&&r.moves.length>0||r?.inserts&&r.inserts.length>0){let e=d.slice();if(r?.removals&&r.removals.length>0){let t=[...r.removals].sort((e,t)=>t.index-e.index);for(let n of t)if(n.index>=0&&n.index<e.length&&e[n.index].id===n.nodeId)e.splice(n.index,1);else{let t=e.findIndex(e=>e.id===n.nodeId);t>=0&&e.splice(t,1)}f=!0}let t=new Map;if(r?.moves&&r.moves.length>0){for(let n of r.moves){let r=e.findIndex(e=>e.id===n.nodeId);r>=0&&(t.set(n.nodeId,e[r]),e.splice(r,1))}f=!0}let i=[];if(r?.moves)for(let e of r.moves){let n=t.get(e.nodeId);n&&i.push({index:e.toIndex,node:n,isInsert:!1})}if(r?.inserts){for(let n of r.inserts)(e.some(e=>e.id===n.node.id)||t.has(n.node.id))&&pn.warn(`Duplicate node id '${n.node.id}' (type '${n.node.type}') inserted next to an existing sibling — UI tree diverged from the server`),i.push({index:n.index,node:n.node,isInsert:!0});f=!0}i.sort((e,t)=>e.index-t.index);for(let t of i){let r=Math.min(t.index,e.length);e.splice(r,0,t.node),t.isInsert&&n&&N(t.node,n)}d=e}let p;for(let e=0;e<d.length;e++){let r=d[e],i=M(r,t,n);i!==r&&(p||=d.slice(),p[e]=i)}p&&(d=p,f=!0);let m=a||o||c,h=m||f;return m&&n&&n.add(e.id),h?!o&&!f&&!c?i:{id:e.id,type:e.type,props:o?s:i.props,children:f?d:u,styleIds:c?l:i.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}}:e}function N(e,t){if(t.add(e.id),e.children)for(let n of e.children)N(n,t)}function P(e,t){if(t.set(e.id,e),e.children)for(let n of e.children)P(n,t)}const F=[];function _n(e){for(;F.length<=e;)F.push(new Map);return F[e].clear(),F[e]}function I(e,t,n){vn(e,t,n,0)}function vn(e,t,n,r){if(e===t)return;(e.type!==t.type||!yn(e.props,t.props)||!L(e.styleIds,t.styleIds))&&n.add(t.id);let i=e.children??[],a=t.children??[];if(i!==a){let e=_n(r);for(let t of i)e.set(t.id,t);let o=!1;for(let t=0;t<a.length;t++){let s=a[t],c=e.get(s.id);c?(vn(c,s,n,r+1),!o&&t<i.length&&i[t].id!==s.id&&(o=!0)):(N(s,n),o=!0)}(i.length!==a.length||o)&&n.add(t.id)}}function yn(e,t){return B(e,t)}function L(e,t){return B(e,t)}function bn(e,t){if(t.length===0)return e;let n=[...t].sort((e,t)=>e.start-t.start),r=e,i=0;for(let e of n){let t=Cn(e.start+i,0,r.length);if(e.end==null){let n=r.slice(t),a=wn(n,e.insertedText);r=r.slice(0,t)+e.insertedText+n.slice(a),i+=e.insertedText.length-a;continue}let n=Cn(e.end+i,t,r.length),a=n-t;r=r.slice(0,t)+e.insertedText+r.slice(n),i+=e.insertedText.length-a}return r}function xn(e,t,n){if(t.length===0)return{node:e,changed:!1};let r=new Map;for(let e of t){let t=r.get(e.nodeId);t?t.push(e):r.set(e.nodeId,[e])}return Sn(e,r,n)}function Sn(e,t,n){let r=t.get(e.id)??[],i=!1,a=e.props;if(r.length>0){let e=new Map;for(let t of r){let n=e.get(t.propertyName);n?n.push(t):e.set(t.propertyName,[t])}for(let[t,n]of e.entries()){let e=a[t],r=bn(typeof e==`string`?e:``,n);i||=(a=R(a),!0),a[t]=r}}let o=!1,s=e.children??[],c=s;if(s.length>0){let e;for(let r=0;r<s.length;r++){let i=s[r],a=Sn(i,t,n);a.changed&&(e||=[...s],e[r]=a.node)}e&&(c=e,o=!0)}return!i&&!o?{node:e,changed:!1}:(i&&n&&n.add(e.id),{node:{id:e.id,type:e.type,props:i?a:e.props,children:o?c:s,styleIds:e.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}},changed:!0})}function Cn(e,t,n){return Math.max(t,Math.min(n,e))}function wn(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r++;return r}function R(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function B(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!B(e[n],t[n]))return!1;return!0}if(z(e)&&z(t)){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!B(e[r],t[r]))return!1;return!0}return!1}const V=new hn,H=new Map,U=new Map,W=new Set;let Tn=16,En=50,G=[],K=null,q=null,J=0,Y=0;const X=new Map,Z=new Map;function Dn(){return typeof performance<`u`?performance.now():Date.now()}function On(){try{return crypto.randomUUID()}catch{return`${Date.now()}_${Math.random().toString(16).slice(2)}`}}function kn(e){let t=[];for(let n of e.views)t.push(n);let n=[];for(let t of e.payloads)n.push(t);return{streamId:e.streamId,category:e.category,version:e.version??-1,rootViewId:e.rootViewId,views:t,payloads:n}}function An(e,t,n){if(!n||n.version===-1)return{type:`ReplaceStreamSnapshot`,snapshot:kn(t)};let r,i;for(let[e,i]of t.views)n.views.get(e)!==i&&(r??=[]).push([e,i]);for(let e of n.views.keys())t.views.has(e)||(i??=[]).push(e);let a,o;for(let[e,r]of t.payloads)n.payloads.get(e)!==r&&(a??=[]).push([e,r]);for(let e of n.payloads.keys())t.payloads.has(e)||(o??=[]).push(e);return{type:`PatchStreamSnapshot`,streamId:e,category:t.category,nextVersion:t.version??-1,expectedBaseVersion:n.version??-1,rootViewId:t.rootViewId,upsertViews:r,deleteViews:i,upsertPayloads:a,deletePayloads:o}}function Q(){K||=setTimeout(jn,Tn),q||=setTimeout(jn,En)}function $(e){G.push(e),Q()}function jn(){if(K&&=(clearTimeout(K),null),q&&=(clearTimeout(q),null),G.length===0&&X.size===0&&Z.size===0){J=0,Y=0;return}let e=[];for(let[t,n]of X)e.push({trackId:t,version:n.version,senderId:n.senderId});let t=[];for(let[e,n]of Z)t.push({trackId:e,senderId:n});let n={batchId:On(),createdAtMs:Dn(),ops:G,...e.length>0?{acks:e}:{},...t.length>0?{resyncs:t}:{},stats:{uiMessagesConsumed:J,bytesConsumed:Y}};G=[],J=0,Y=0,X.clear(),Z.clear(),self.postMessage(n)}function Mn(e){return`${e.senderId}_${e.trackId}`}async function Nn(e){let t=await jt(e),n=new Set;for(let e of Object.values(t.UIStreams??{})){let t=e.StreamId;n.add(t);let r=e.Info?.Category;V.getSnapshot(t)?.category!==r&&(V.setCategory(t,r),$({type:`SetStreamCategory`,streamId:t,category:r}))}for(let e of V.getSnapshots())W.has(e.streamId)||n.has(e.streamId)||(V.remove(e.streamId),U.delete(e.streamId),$({type:`RemoveStream`,streamId:e.streamId}))}function Pn(e){if(W.size!==0){for(let t of W)t!==e&&(V.remove(t),U.delete(t),$({type:`RemoveStream`,streamId:t}));W.clear()}}async function Fn(e){let t=r(e),n=Mn(t),i=A(await St(e)),a=X.get(t.trackId);(a===void 0||i.snapshot.version>a.version)&&(X.set(t.trackId,{version:i.snapshot.version,senderId:t.senderId}),Q());let o=V.apply(n,i);if(V.needsResync(n)&&(Z.set(t.trackId,t.senderId),Q()),!o)return;let s=V.getSnapshot(n);if(!s)return;let c=U.get(n);U.set(n,s),$(An(n,s,c)),Pn(n)}async function In(e){let t=await Ze(e);if(!t.StyleId)return;let n={styleId:t.StyleId,css:t.Style?.css,common:t.Style?.common},r=H.get(n.styleId);r&&r.css===n.css&&r.common===n.common||(H.set(n.styleId,n),$({type:`UpsertUiStyle`,style:n}))}async function Ln(e){let t=await it(e);if(t.Styles)for(let e of t.Styles){if(!e.StyleId)continue;let t={styleId:e.StyleId,css:e.Style?.css,common:e.Style?.common},n=H.get(t.styleId);n&&n.css===t.css&&n.common===t.common||(H.set(t.styleId,t),$({type:`UpsertUiStyle`,style:t}))}}async function Rn(e){let t=await gt(e);if(!(!t.StyleIds||t.StyleIds.length===0))for(let e of t.StyleIds)H.delete(e)&&$({type:`RemoveUiStyle`,styleId:e})}function zn(e){if(!V.getSnapshots().some(e=>e.rootViewId)){for(let t of e.styles){let e=H.get(t.styleId);e&&e.css===t.css&&e.common===t.common||(H.set(t.styleId,t),$({type:`UpsertUiStyle`,style:t}))}if(e.bootJson&&e.bootStreamId){let t=A({Json:e.bootJson});if(V.apply(e.bootStreamId,t)){let t=V.getSnapshot(e.bootStreamId);t&&(U.set(e.bootStreamId,t),W.add(e.bootStreamId),$({type:`ReplaceStreamSnapshot`,snapshot:kn(t),fromSeed:!0}))}}for(let t of e.liveStreams??[])if(V.applyStoreOp({type:`ReplaceStreamSnapshot`,snapshot:t})){let e=V.getSnapshot(t.streamId);e&&U.set(t.streamId,e),$({type:`ReplaceStreamSnapshot`,snapshot:t,fromSeed:!0})}V.enterSnapshotModeAll()}}async function Bn(e){let r=new Uint8Array(e);Y+=r.byteLength;let i=t(r);switch(n(i)){case C.CORE_GLOBAL_STATE:await Nn(i),J++;return;case C.UI_UPDATE:try{await Fn(i)}catch(e){e instanceof k;return}finally{J++}return;case C.UI_STYLES:await In(i),J++;return;case C.UI_STYLES_BATCH:await Ln(i),J++;return;case C.UI_STYLES_DELETE:await Rn(i),J++;return;default:return}}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`configure`){typeof t.flushIntervalMs==`number`&&Number.isFinite(t.flushIntervalMs)&&t.flushIntervalMs>=0&&(Tn=t.flushIntervalMs),typeof t.maxLatencyMs==`number`&&Number.isFinite(t.maxLatencyMs)&&t.maxLatencyMs>=0&&(En=t.maxLatencyMs);return}if(t.type===`clear`){G=[],U.clear(),X.clear(),Z.clear(),H.clear();for(let e of V.getSnapshots())V.remove(e.streamId);return}if(t.type===`snapshotMode`){V.enterSnapshotModeAll();return}if(t.type===`seed`){zn(t);return}t.type===`protocol`&&Bn(t.message).catch(()=>{})});
1
+ const e={None:0,SendBackToSender:1,Delayable:2,SendToUser:4,Compressed:8,Unreliable:16};function t(e){return e}function n(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function r(e){let t=S(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}async function i(t,n,i){let o=S(t),s=r(o);if(n!==void 0&&s.opcode!==n)throw Error(`Unexpected opcode ${s.opcode}`);if(s.payloadType!==8)throw Error(`Unexpected payload type ${s.payloadType}`);let c=27+s.targetIds.length*4,l=o.subarray(c,s.length);return(s.flags&e.Compressed)!==0&&(l=await a(l)),l}async function a(e){if(typeof DecompressionStream>`u`)throw Error(`DecompressionStream not supported`);let t=new DecompressionStream(`gzip`),n=t.writable.getWriter(),r=new Uint8Array(e);n.write(r).then(()=>n.close()).catch(()=>void 0);let i=t.readable.getReader(),a=[],o=0;for(;;){let{done:e,value:t}=await i.read();if(e)break;a.push(t),o+=t.length}let s=new Uint8Array(o),c=0;for(let e=0;e<a.length;e++)s.set(a[e],c),c+=a[e].length;return s}let o=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});new TextEncoder;const s=new TextDecoder(`utf-8`,{fatal:!0});var c=class e{buffer;version;offset;end;constructor(e,t,n){this.buffer=e,this.version=t,this.offset=n,this.end=e.length-1}static create(t){let n=S(t);if(n.length<2)throw Error(`Teleport payload too short`);if(n[0]!==161||n[n.length-1]!==162)throw Error(`Teleport object missing markers`);let r={offset:1},i=g(n,r,`InvalidLength`);return new e(n,i,r.offset)}next(){if(this.offset>=this.end)return null;if(this.offset+5>this.buffer.length)throw Error(`Teleport object truncated`);let e=ne(this.buffer,this.offset);this.offset+=4;let t=this.buffer[this.offset++],n=t>>4&15;if(t&15)throw Error(`Teleport field flags must be zero`);let r=_(n),i;if(r>=0)v(this.buffer,this.offset,r),i=this.buffer.subarray(this.offset,this.offset+r),this.offset+=r;else{let e={offset:this.offset},t=g(this.buffer,e,`InvalidLength`);v(this.buffer,e.offset,t),i=this.buffer.subarray(e.offset,e.offset+t),this.offset=e.offset+t}return new u(e,n,i)}},l=class{type;payload;constructor(e,t){this.type=e,this.payload=t}asInt32(){return this.ensureType(3),new DataView(this.payload.buffer,this.payload.byteOffset,4).getInt32(0,!0)}asUInt32(){return this.ensureType(5),new DataView(this.payload.buffer,this.payload.byteOffset,4).getUint32(0,!0)}asInt64(){return this.ensureType(4),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigInt64(0,!0)}asUInt64(){return this.ensureType(6),new DataView(this.payload.buffer,this.payload.byteOffset,8).getBigUint64(0,!0)}asFloat32(){return this.ensureType(7),new DataView(this.payload.buffer,this.payload.byteOffset,4).getFloat32(0,!0)}asFloat64(){return this.ensureType(8),new DataView(this.payload.buffer,this.payload.byteOffset,8).getFloat64(0,!0)}asBool(){return this.ensureType(2),this.payload.length>0&&this.payload[0]!==0}asBinary(){return this.ensureType(13),this.payload}asUtf8(){return this.ensureType(12),this.payload}asString(){return this.ensureType(12),s.decode(this.payload)}asGuid(){return this.ensureType(14),h.fromBytes(this.payload)}asObject(){return this.ensureType(11),c.create(this.payload)}asArray(){return this.ensureType(9),d.create(this.payload)}asDictionary(){return this.ensureType(10),p.create(this.payload)}ensureType(e){if(this.type!==e)throw Error(`Teleport value has type ${o[this.type]}, expected ${o[e]}`)}},u=class extends l{fieldId;constructor(e,t,n){super(t,n),this.fieldId=e}get isNull(){return this.type===1}},d=class e{payload;elementType;count;offset;index=0;constructor(e){if(this.payload=e,e.length===0)throw Error(`Array payload too short`);let t=e[0];if(this.elementType=t>>4&15,t&15)throw Error(`Array flags must be zero`);let n={offset:1};this.count=g(e,n,`ArrayMalformed`),this.offset=n.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Array payload contains trailing data`);return null}let e=this.readValue();return this.index++,e}readValue(){switch(this.elementType){case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:{let e=_(this.elementType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(this.elementType,t)}case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(this.elementType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`ArrayMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new f(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new f(10,t)}default:throw Error(`Unsupported array element type ${o[this.elementType]}`)}}},f=class extends l{constructor(e,t){super(e,t)}},p=class e{payload;keyType;valueType;count;offset;index=0;constructor(e){if(this.payload=e,e.length<2)throw Error(`Dictionary payload too short`);if(this.keyType=e[0]>>4&15,this.valueType=e[1]>>4&15,e[0]&15||e[1]&15)throw Error(`Dictionary key/value flags must be zero`);te(this.keyType);let t={offset:2};this.count=g(e,t,`DictMalformed`),this.offset=t.offset}static create(t){return new e(S(t))}next(){if(this.index>=this.count){if(this.offset!==this.payload.length)throw Error(`Dictionary payload contains trailing data`);return null}let e=this.readKey(),t=this.readValue();return this.index++,new m(e,t)}readKey(){let e=_(this.keyType);if(e>=0){v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.keyType,t)}if(this.keyType===12||this.keyType===13){let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.keyType,n)}throw Error(`Unsupported dictionary key type`)}readValue(){switch(this.valueType){case 12:case 13:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(this.valueType,n)}case 11:{let e={offset:this.offset},t=g(this.payload,e,`DictMalformed`);v(this.payload,e.offset,t);let n=this.payload.subarray(e.offset,e.offset+t);return this.offset=e.offset+t,new l(11,n)}case 9:{let e=y(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(9,t)}case 10:{let e=b(this.payload,this.offset),t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(10,t)}case 3:case 5:case 7:case 8:case 2:case 4:case 6:case 14:case 1:{let e=_(this.valueType);v(this.payload,this.offset,e);let t=this.payload.subarray(this.offset,this.offset+e);return this.offset+=e,new l(this.valueType,t)}default:throw Error(`Unsupported dictionary value type ${o[this.valueType]}`)}}},m=class{key;value;constructor(e,t){this.key=e,this.value=t}},h=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),re(t.subarray(8,10)),re(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}};function g(e,t,n){if(t.offset>=e.length)throw Error(n);let r=0,i=0,a=0;for(;t.offset<e.length;){let n=e[t.offset++];if(a++,r|=(n&127)<<i,!(n&128)){if(a!==ee(r))throw Error(`Teleport VarUInt is not canonical`);return r>>>0}if(i+=7,i>=35)throw Error(`Teleport VarUInt exceeds 32-bit range`)}throw Error(n)}function ee(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}function _(e){switch(e){case 3:case 5:case 7:return 4;case 4:case 6:case 8:return 8;case 14:return 16;case 2:return 1;case 1:return 0;default:return-1}}function te(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function v(e,t,n){if(t<0||n<0||t+n>e.length)throw Error(`Teleport payload exceeds bounds`)}function ne(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function y(e,t){if(t>=e.length)throw Error(`Array payload exceeds bounds`);let n=e[t],r=n>>4&15;if(n&15)throw Error(`Array flags must be zero`);let i={offset:t+1},a=g(e,i,`ArrayMalformed`),o=_(r);if(o>=0){let n=o*a;return v(e,i.offset,n),i.offset+n-t}let s=i.offset;for(let t=0;t<a;t++)s=x(r,e,s,`ArrayMalformed`);return s-t}function b(e,t){if(t+2>e.length)throw Error(`Dictionary payload too short`);let n=e[t]>>4&15,r=e[t+1]>>4&15;if(e[t]&15||e[t+1]&15)throw Error(`Dictionary key/value flags must be zero`);te(n);let i={offset:t+2},a=g(e,i,`DictMalformed`),o=i.offset;for(let t=0;t<a;t++)o=x(n,e,o,`DictMalformed`),o=x(r,e,o,`DictMalformed`);return o-t}function x(e,t,n,r){let i=_(e);if(i>=0)return v(t,n,i),n+i;switch(e){case 12:case 13:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 11:{let e={offset:n},i=g(t,e,r);return v(t,e.offset,i),e.offset+i}case 9:return n+y(t,n);case 10:return n+b(t,n);default:throw Error(`Unsupported Teleport type ${o[e]}`)}}function re(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function S(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let ie=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Opus=1]=`Opus`,e[e.Mp3=2]=`Mp3`,e[e.RawPcm16=3]=`RawPcm16`,e}({}),ae=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MobileWeb=1]=`MobileWeb`,e[e.MobileApp=2]=`MobileApp`,e[e.DesktopWeb=3]=`DesktopWeb`,e[e.DesktopApp=4]=`DesktopApp`,e}({}),oe=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Backend=2]=`Backend`,e[e.Server=4]=`Server`,e[e.Plugin=8]=`Plugin`,e[e.Browser=16]=`Browser`,e[e.Native=32]=`Native`,e}({}),se=function(e){return e[e.Unknown=0]=`Unknown`,e[e.MessagePack=1]=`MessagePack`,e[e.MemoryPack=2]=`MemoryPack`,e[e.Json=4]=`Json`,e[e.Teleport=8]=`Teleport`,e[e.All=15]=`All`,e}({}),ce=function(e){return e[e.Css=0]=`Css`,e[e.Flutter=1]=`Flutter`,e}({}),le=function(e){return e[e.Unknown=0]=`Unknown`,e[e.Machine=1]=`Machine`,e[e.Human=2]=`Human`,e}({}),ue=function(e){return e[e.Unknown=0]=`Unknown`,e[e.H264=1]=`H264`,e[e.Vp8=2]=`Vp8`,e[e.Vp9=3]=`Vp9`,e[e.Av1=4]=`Av1`,e}({}),de=function(e){return e[e.Unknown=0]=`Unknown`,e[e.DotNet=1]=`DotNet`,e[e.TypeScript=2]=`TypeScript`,e[e.Cpp=3]=`Cpp`,e[e.Dart=4]=`Dart`,e[e.Rust=5]=`Rust`,e}({}),fe=function(e){return e[e.Local=0]=`Local`,e[e.Cloud=1]=`Cloud`,e}({}),C=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.ANALYTICS_TRAFFIC_USAGE=524300]=`ANALYTICS_TRAFFIC_USAGE`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.ACTION_FILE_UPLOAD_RESUME2=1048657]=`ACTION_FILE_UPLOAD_RESUME2`,e[e.ACTION_FILE_UPLOAD_RESUME_RESPONSE2=1048658]=`ACTION_FILE_UPLOAD_RESUME_RESPONSE2`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME=4194309]=`AUDIO_FRAME`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function pe(e){let t={};return me(t),e&&Object.assign(t,e),t}function me(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ie.Unknown,e.CodecDetails=``,e.SampleRate=0,e.Channels=0,e.ShapeSets=void 0,e.CorrelationId=void 0,e}function he(e,t){let n=t??pe();return me(n),ge(e,n),n}function ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 265814330:if(n.isNull){t.ShapeSets=void 0;break}t.ShapeSets=_e(n.asArray());break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2431514951:if(n.isNull)throw Error();t.Channels=n.asInt32();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4101844078:if(n.isNull)throw Error();t.SampleRate=n.asInt32()}}function _e(e){let t=[],n;for(;(n=e.next())!==null;)t.push(be(n.asObject()));return t}function ve(e){let t={};return ye(t),e&&Object.assign(t,e),t}function ye(e){return e.SetId=0,e.Name=``,e.ShapeNames=[],e}function be(e,t){let n=t??ve();return ye(n),xe(e,n),n}function xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1107713536:if(n.isNull)throw Error();t.Name=n.asString();break;case 1154362099:if(n.isNull)throw Error();t.SetId=n.asUInt32();break;case 1185721362:if(n.isNull)throw Error();t.ShapeNames=Se(n.asArray())}}function Se(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ce(e){let t={};return we(t),e&&Object.assign(t,e),t}function we(e){return e.ContextType=oe.Unknown,e.UserType=le.Unknown,e.PayloadType=se.Unknown,e.Description=``,e.UserId=``,e.DeviceId=``,e.ProductId=``,e.VersionId=``,e.InstallId=``,e.Locale=``,e.SessionId=-1,e.IsInternal=!1,e.IsSnapshot=!1,e.SnapshotVariant=``,e.IsReady=!1,e.HasInput=!1,e.AuthSessionId=``,e.IsAnonymous=!1,e.IsGlobal=!1,e.ReceiveAllMessages=!1,e.PreciseJoinedAt=BigInt(0),e.UserAgent=``,e.ClientType=ae.Unknown,e.UniqueSessionId=``,e.Parameters=Object.create(null),e.SdkType=de.Unknown,e.SdkCapability=0,e.ViewportWidth=0,e.ViewportHeight=0,e.Theme=``,e.Timezone=``,e.IsTouchDevice=!1,e.InitialPath=``,e.InitialUrl=``,e.StyleFormat=ce.Css,e.SupportsCompression=!0,e.IsSoftDisconnected=!1,e.SoftDisconnectAt=BigInt(0),e}function Te(e,t){let n=t??Ce();return we(n),Ee(e,n),n}function Ee(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 76337612:if(n.isNull)throw Error();t.DeviceId=n.asString();break;case 185396121:if(n.isNull)throw Error();t.InstallId=n.asString();break;case 227309410:if(n.isNull)throw Error();t.InitialUrl=n.asString();break;case 250031587:if(n.isNull)throw Error();t.Theme=n.asString();break;case 388632637:if(n.isNull)throw Error();t.UserAgent=n.asString();break;case 417197284:if(n.isNull)throw Error();t.ContextType=n.asInt32();break;case 425972532:if(n.isNull)throw Error();t.SoftDisconnectAt=n.asUInt64();break;case 469070965:if(n.isNull)throw Error();t.HasInput=n.asBool();break;case 470595159:if(n.isNull)throw Error();t.UserType=n.asInt32();break;case 594855258:if(n.isNull)throw Error();t.InitialPath=n.asString();break;case 617065367:if(n.isNull)throw Error();t.IsSoftDisconnected=n.asBool();break;case 661691032:if(n.isNull)throw Error();t.SupportsCompression=n.asBool();break;case 781727218:if(n.isNull)throw Error();t.UserId=n.asString();break;case 834078886:if(n.isNull)throw Error();t.ProductId=n.asString();break;case 1043273762:if(n.isNull)throw Error();t.AuthSessionId=n.asString();break;case 1236999138:if(n.isNull)throw Error();t.ReceiveAllMessages=n.asBool();break;case 1286979607:if(n.isNull)throw Error();t.ViewportHeight=n.asInt32();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1437068682:if(n.isNull)throw Error();t.SdkCapability=n.asInt32();break;case 1668375353:if(n.isNull)throw Error();t.IsSnapshot=n.asBool();break;case 1715899485:if(n.isNull)throw Error();t.Locale=n.asString();break;case 1719830747:if(n.isNull)throw Error();t.IsAnonymous=n.asBool();break;case 1942830531:if(n.isNull)throw Error();t.SdkType=n.asInt32();break;case 1999510636:if(n.isNull)throw Error();t.SessionId=n.asInt32();break;case 2033288346:if(n.isNull)throw Error();t.ViewportWidth=n.asInt32();break;case 2079864626:if(n.isNull)throw Error();t.PreciseJoinedAt=n.asUInt64();break;case 2142346422:if(n.isNull)throw Error();t.PayloadType=n.asInt32();break;case 2228539873:if(n.isNull)throw Error();t.StyleFormat=n.asInt32();break;case 2232517119:if(n.isNull)throw Error();t.IsTouchDevice=n.asBool();break;case 2388060749:if(n.isNull)throw Error();t.IsGlobal=n.asBool();break;case 2504065971:if(n.isNull)throw Error();t.SnapshotVariant=n.asString();break;case 2598291686:if(n.isNull)throw Error();t.VersionId=n.asString();break;case 2719718823:if(n.isNull)throw Error();t.UniqueSessionId=n.asString();break;case 2810953526:if(n.isNull)throw Error();t.ClientType=n.asInt32();break;case 2840065720:if(n.isNull)throw Error();t.IsReady=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=De(n.asDictionary());break;case 3542818975:if(n.isNull)throw Error();t.Timezone=n.asString();break;case 3586157513:if(n.isNull)throw Error();t.IsInternal=n.asBool()}}function De(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function Oe(e){let t={};return ke(t),e&&Object.assign(t,e),t}function ke(e){return e.FunctionId=h.fromBytes(new Uint8Array(16)),e.FunctionName=``,e.Parameters=[],e.ResultTypeName=``,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.IsCancellable=!1,e.Description=``,e.LlmInlineResult=!1,e.LlmCallOnlyOnce=!1,e.RequiresInstance=!1,e.Versions=[],e}function Ae(e,t){let n=t??Oe();return ke(n),je(e,n),n}function je(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 703025676:if(n.isNull)throw Error();t.ResultTypeName=n.asString();break;case 814454131:if(n.isNull)throw Error();t.FunctionName=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 976255570:if(n.isNull)throw Error();t.FunctionId=n.asGuid();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1479280922:if(n.isNull)throw Error();t.IsCancellable=n.asBool();break;case 1533537016:if(n.isNull)throw Error();t.RequiresInstance=n.asBool();break;case 1909301063:if(n.isNull)throw Error();t.Versions=Me(n.asArray());break;case 2274386296:if(n.isNull)throw Error();t.LlmInlineResult=n.asBool();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 2885165957:if(n.isNull)throw Error();t.Parameters=Ne(n.asArray());break;case 3568439632:if(n.isNull)throw Error();t.LlmCallOnlyOnce=n.asBool()}}function Me(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function Ne(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ie(n.asObject()));return t}function Pe(e){let t={};return Fe(t),e&&Object.assign(t,e),t}function Fe(e){return e.ParameterIndex=0,e.ParameterName=``,e.TypeName=``,e.HasDefaultValue=!1,e.DefaultValueJson=``,e.DefaultValueData=new Uint8Array,e.IsEnumerable=!1,e.EnumerableItemTypeName=``,e.Description=``,e}function Ie(e,t){let n=t??Pe();return Fe(n),Le(e,n),n}function Le(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 607861992:if(n.isNull)throw Error();t.HasDefaultValue=n.asBool();break;case 894485888:if(n.isNull)throw Error();t.DefaultValueJson=n.asString();break;case 972460562:if(n.isNull)throw Error();t.EnumerableItemTypeName=n.asString();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 1883521406:if(n.isNull)throw Error();t.DefaultValueData=n.asBinary();break;case 2603556958:if(n.isNull)throw Error();t.IsEnumerable=n.asBool();break;case 3609695522:if(n.isNull)throw Error();t.TypeName=n.asString();break;case 4075263697:if(n.isNull)throw Error();t.ParameterName=n.asString();break;case 4257460908:if(n.isNull)throw Error();t.ParameterIndex=n.asInt32()}}function Re(e){let t={};return ze(t),e&&Object.assign(t,e),t}function ze(e){return e.MimeType=``,e.Value=new Uint8Array,e}function Be(e,t){let n=t??Re();return ze(n),Ve(e,n),n}function Ve(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1405462580:if(n.isNull)throw Error();t.Value=n.asBinary();break;case 2968276160:if(n.isNull)throw Error();t.MimeType=n.asString()}}function He(e){let t={};return Ue(t),e&&Object.assign(t,e),t}function Ue(e){return e.Category=``,e}function We(e,t){let n=t??He();return Ue(n),Ge(e,n),n}function Ge(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 3612929027:if(n.isNull)throw Error();t.Category=n.asString()}}function Ke(e){let t={};return qe(t),e&&Object.assign(t,e),t}function qe(e){return e.StyleId=``,e.Style=Object.create(null),e}function Je(e,t){return Ye(c.create(e),t)}function Ye(e,t){let n=t??Ke();return qe(n),Xe(e,n),n}function Xe(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=Qe(n.asDictionary())}}async function Ze(e,t){return Je(await i(e,2097188,1),t)}function Qe(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function $e(e){let t={};return et(t),e&&Object.assign(t,e),t}function et(e){return e.Styles=[],e}function tt(e,t){return nt(c.create(e),t)}function nt(e,t){let n=t??$e();return et(n),rt(e,n),n}function rt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 2136687806:if(n.isNull)throw Error();t.Styles=at(n.asArray())}}async function it(e,t){return tt(await i(e,2097192,1),t)}function at(e){let t=[],n;for(;(n=e.next())!==null;)t.push(ct(n.asObject()));return t}function ot(e){let t={};return st(t),e&&Object.assign(t,e),t}function st(e){return e.StyleId=``,e.Style=Object.create(null),e}function ct(e,t){let n=t??ot();return st(n),lt(e,n),n}function lt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 979822885:if(n.isNull)throw Error();t.StyleId=n.asString();break;case 2374537704:if(n.isNull)throw Error();t.Style=ut(n.asDictionary())}}function ut(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=n.value.asString()}return t}function dt(e){let t={};return ft(t),e&&Object.assign(t,e),t}function ft(e){return e.StyleIds=[],e}function pt(e,t){return mt(c.create(e),t)}function mt(e,t){let n=t??dt();return ft(n),ht(e,n),n}function ht(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 1415642792:if(n.isNull)throw Error();t.StyleIds=_t(n.asArray())}}async function gt(e,t){return pt(await i(e,2097193,1),t)}function _t(e){let t=[],n;for(;(n=e.next())!==null;)t.push(n.asString());return t}function vt(e){let t={};return yt(t),e&&Object.assign(t,e),t}function yt(e){return e.Json=``,e.Payloads=Object.create(null),e}function bt(e,t){return xt(c.create(e),t)}function xt(e,t){let n=t??vt();return yt(n),St(e,n),n}function St(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 425183262:if(n.isNull)throw Error();t.Json=n.asString();break;case 653781469:if(n.isNull)throw Error();t.Payloads=wt(n.asDictionary())}}async function Ct(e,t){return bt(await i(e,2097190,1),t)}function wt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Be(n.value.asObject())}return t}function w(e){let t={};return T(t),e&&Object.assign(t,e),t}function T(e){return e.StreamId=``,e.Description=``,e.SourceType=``,e.Codec=ue.H264,e.CodecDetails=``,e.Width=0,e.Height=0,e.Framerate=30,e.CorrelationId=void 0,e}function Tt(e,t){let n=t??w();return T(n),Et(e,n),n}function Et(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 164808083:if(n.isNull)throw Error();t.Framerate=n.asFloat64();break;case 1368629611:if(n.isNull)throw Error();t.Description=n.asString();break;case 2514959030:if(n.isNull){t.CorrelationId=void 0;break}t.CorrelationId=n.asString();break;case 2745379226:if(n.isNull)throw Error();t.CodecDetails=n.asString();break;case 2950031986:if(n.isNull)throw Error();t.Height=n.asInt32();break;case 3282782683:if(n.isNull)throw Error();t.SourceType=n.asString();break;case 3284746250:if(n.isNull)throw Error();t.Codec=n.asInt32();break;case 4065070594:if(n.isNull)throw Error();t.Width=n.asInt32()}}function Dt(e){let t={};return Ot(t),e&&Object.assign(t,e),t}function Ot(e){return e.Clients=Object.create(null),e.Functions=Object.create(null),e.UIStreams=Object.create(null),e.AudioStreams=Object.create(null),e.VideoStreams=Object.create(null),e.SpaceId=``,e.IkonServerId=``,e.AppSessionId=``,e.SessionIdentityHash=``,e.SpaceUrl=``,e.SessionUrl=``,e.FirstUserId=``,e.PrimaryUserId=``,e.OrganisationName=``,e.SpaceName=``,e.ServerRunType=fe.Local,e.PublicAccess=!1,e.DebugMode=!1,e.retiredFields=void 0,e}function kt(e,t){return At(c.create(e),t)}function At(e,t){let n=t??Dt();return Ot(n),jt(e,n),n}function jt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 620476198:if(n.isNull)throw Error();t.IkonServerId=n.asString();break;case 693643444:if(n.isNull)throw Error();t.FirstUserId=n.asString();break;case 1144553441:if(n.isNull)throw Error();t.Clients=Nt(n.asDictionary());break;case 1731742060:if(n.isNull)throw Error();t.AppSessionId=n.asString();break;case 1931178803:if(n.isNull)throw Error();t.SessionIdentityHash=n.asString();break;case 2191393509:if(n.isNull)throw Error();t.SessionUrl=n.asString();break;case 2563358196:if(n.isNull)throw Error();t.SpaceUrl=n.asString();break;case 3042922213:if(n.isNull)throw Error();t.PublicAccess=n.asBool();break;case 3064612128:if(n.isNull)throw Error();t.ServerRunType=n.asInt32();break;case 3219210453:if(n.isNull)throw Error();t.OrganisationName=n.asString();break;case 3504054055:if(n.isNull)throw Error();t.DebugMode=n.asBool();break;case 3678477544:if(n.isNull)throw Error();t.Functions=Pt(n.asDictionary());break;case 3696445035:if(n.isNull)throw Error();t.UIStreams=Ft(n.asDictionary());break;case 3707543140:if(n.isNull)throw Error();t.SpaceId=n.asString();break;case 3712281496:if(n.isNull)throw Error();t.PrimaryUserId=n.asString();break;case 3895362455:if(n.isNull)throw Error();t.AudioStreams=It(n.asDictionary());break;case 3897397815:if(n.isNull)throw Error();t.VideoStreams=Lt(n.asDictionary());break;case 4225107827:if(n.isNull)throw Error();t.SpaceName=n.asString();break;case 976837618:if(n.isNull)break;(t.retiredFields??={}).SessionHash=n.asString();break;case 2271236852:if(n.isNull)break;(t.retiredFields??={}).SessionChannelUrl=n.asString();break;case 2277643855:if(n.isNull)break;(t.retiredFields??={}).ChannelUrl=n.asString();break;case 3914217035:if(n.isNull)break;(t.retiredFields??={}).ServerSessionId=n.asString()}}async function Mt(e,t){return kt(await i(e,65539,11),t)}function Nt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Te(n.value.asObject())}return t}function Pt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asInt32();t[e]=Rt(n.value.asArray())}return t}function Ft(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Vt(n.value.asObject())}return t}function It(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Gt(n.value.asObject())}return t}function Lt(e){let t=Object.create(null),n;for(;(n=e.next())!==null;){let e=n.key.asString();t[e]=Yt(n.value.asObject())}return t}function Rt(e){let t=[],n;for(;(n=e.next())!==null;)t.push(Ae(n.asObject()));return t}function zt(e){let t={};return Bt(t),e&&Object.assign(t,e),t}function Bt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=He(),e}function Vt(e,t){let n=t??zt();return Bt(n),Ht(e,n),n}function Ht(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=We(n.asObject())}}function Ut(e){let t={};return Wt(t),e&&Object.assign(t,e),t}function Wt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=pe(),e}function Gt(e,t){let n=t??Ut();return Wt(n),Kt(e,n),n}function Kt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=he(n.asObject())}}function qt(e){let t={};return Jt(t),e&&Object.assign(t,e),t}function Jt(e){return e.StreamId=``,e.ClientSessionId=0,e.TrackId=0,e.Info=w(),e}function Yt(e,t){let n=t??qt();return Jt(n),Xt(e,n),n}function Xt(e,t){let n;for(;(n=e.next())!==null;)switch(n.fieldId){case 161083277:if(n.isNull)throw Error();t.StreamId=n.asString();break;case 325678206:if(n.isNull)throw Error();t.ClientSessionId=n.asInt32();break;case 3469892363:if(n.isNull)throw Error();t.TrackId=n.asInt32();break;case 3645544153:if(n.isNull)throw Error();t.Info=Tt(n.asObject())}}function E(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Zt(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function D(e,t,n,r){if(!(e===void 0&&r)){if(Array.isArray(e)){let r=[];for(let i=0;i<e.length;i++){let a=e[i];if(typeof a!=`string`)throw Error(`Invalid styleIds entry at ${t}.styleIds[${i}] for element ${n}`);let o=a.trim();o.length!==0&&r.push(o)}return r}if(e!=null)throw Error(`Invalid styleIds for element ${n}`);return[]}}function O(e,t){if(!e||typeof e!=`object`)throw Error(`Invalid UI node at ${t}`);let n=e.Id,r=e.Type,i=e.Props,a=e.Children,o=e.StyleIds;if(typeof n!=`string`)throw Error(`Invalid or missing node id at ${t}`);if(typeof r!=`string`)throw Error(`Invalid or missing node type for ${n}`);let s={};if(i!=null){if(!E(i))throw Error(`Invalid props for node ${n}`);s=Zt(i)}let c=[];Array.isArray(a)&&(c=a.map((e,n)=>O(e??{},`${t}.children[${n}]`)));let l=D(o,t,n,!1),u=typeof e.SourceMarker==`string`?e.SourceMarker:void 0;return{id:n,type:r,props:s,children:c,styleIds:l??[],...u?{sourceMarker:u}:{}}}function Qt(e,t){if(!E(e))throw Error(`Invalid text delta at ${t}`);let n=e.NodeId,r=e.PropertyName,i=e.Start,a=e.End,o=e.InsertedText;if(typeof n!=`string`||n.length===0)throw Error(`Invalid text delta node id at ${t}`);if(typeof r!=`string`||r.length===0)throw Error(`Invalid text delta property name at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid text delta start at ${t}`);if(typeof o!=`string`)throw Error(`Invalid text delta inserted text at ${t}`);let s;if(typeof a==`number`){if(!Number.isFinite(a))throw Error(`Invalid text delta end at ${t}`);s=a}else if(a!=null)throw Error(`Invalid text delta end at ${t}`);return{nodeId:n,propertyName:r,start:i,end:s,insertedText:o}}function $t(e,t){if(!E(e))throw Error(`Invalid child insert at ${t}`);let n=e.Index,r=e.Node;if(typeof n!=`number`||!Number.isFinite(n))throw Error(`Invalid child insert index at ${t}`);if(!E(r))throw Error(`Invalid child insert node at ${t}`);return{index:n,node:O(r,`${t}.node`)}}function en(e,t){if(!E(e))throw Error(`Invalid child move at ${t}`);let n=e.NodeId,r=e.FromIndex,i=e.ToIndex;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child move nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child move fromIndex at ${t}`);if(typeof i!=`number`||!Number.isFinite(i))throw Error(`Invalid child move toIndex at ${t}`);return{nodeId:n,fromIndex:r,toIndex:i}}function tn(e,t){if(!E(e))throw Error(`Invalid child remove at ${t}`);let n=e.NodeId,r=e.Index;if(typeof n!=`string`||n.length===0)throw Error(`Invalid child remove nodeId at ${t}`);if(typeof r!=`number`||!Number.isFinite(r))throw Error(`Invalid child remove index at ${t}`);return{nodeId:n,index:r}}function nn(e,t){if(!E(e))throw Error(`Invalid node change at ${t}`);let n=e.nodeId;if(typeof n!=`string`||n.length===0)throw Error(`Invalid node change nodeId at ${t}`);let r=Array.isArray(e.inserts)?e.inserts.map((e,n)=>$t(e??{},`${t}.inserts[${n}]`)):void 0,i=Array.isArray(e.moves)?e.moves.map((e,n)=>en(e??{},`${t}.moves[${n}]`)):void 0,a=Array.isArray(e.removals)?e.removals.map((e,n)=>tn(e??{},`${t}.removals[${n}]`)):void 0,o;if(E(e.changedProps)){o=new Map;for(let[t,n]of Object.entries(e.changedProps)){if(!E(n))continue;let e=n.New;e==null?o.set(t,void 0):E(e)?o.set(t,Zt(e)):o.set(t,e)}}let s=Array.isArray(e.textUpdates)?e.textUpdates.map((e,n)=>Qt(e??{},`${t}.textUpdates[${n}]`)):void 0,c=e.styleIds,l=c===void 0?void 0:D(c,t,n,!0);return{nodeId:n,...r&&r.length>0?{inserts:r}:{},...i&&i.length>0?{moves:i}:{},...a&&a.length>0?{removals:a}:{},...o&&o.size>0?{changedProps:o}:{},...s&&s.length>0?{textUpdates:s}:{},...l===void 0?{}:{styleIds:l}}}function rn(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n,r);return t}function an(e,t,n){if(!e||typeof e!=`object`)throw new k(`UI update graph is missing`);let r=O(e,`graph`);if(r.type!==`root`)throw new k(`UI update root element must have type "root"`);return{type:`full`,version:n,root:r,metadata:sn(r.props,t)}}function on(e,t,n){if(!Array.isArray(e))throw new k(`UI diff changes must be an array`);if(!E(t))throw new k(`UI diff metadata must be an object`);let r=t.viewId;if(typeof r!=`string`||r.length===0)throw new k(`UI diff metadata is missing viewId`);let i=e.map((e,t)=>nn(e??{},`changes[${t}]`)),a=typeof t.isUpdate==`boolean`?t.isUpdate:void 0;return{type:`diff`,version:n,changes:i,metadata:{viewId:r,...a===void 0?{}:{isUpdate:a}}}}function sn(e,t){let n=e.viewId;if(typeof n!=`string`||n.length===0)throw new k(`UI update root is missing viewId`);let r=n,i=typeof e.isUpdate==`boolean`?e.isUpdate:void 0;return E(t)&&(typeof t.viewId==`string`&&t.viewId.length>0&&(r=t.viewId),typeof t.isUpdate==`boolean`&&(i=t.isUpdate)),{viewId:r,...i===void 0?{}:{isUpdate:i}}}var k=class extends Error{causeError;constructor(e,t){super(e),this.causeError=t,this.name=`UiUpdateParseError`,t instanceof Error&&(this.stack=t.stack)}};function A(e){let t;try{t=JSON.parse(e.Json)}catch(e){throw new k(`Failed to parse UIUpdate.Json payload`,e)}if(!t||typeof t!=`object`)throw new k(`UI update snapshot must be an object`);let{type:n,version:r}=t;if(n!==`full`&&n!==`diff`)throw new k(`Unknown UI update type: ${String(n)}`);if(typeof r!=`number`)throw new k(`UI update version must be a number`);return{snapshot:n===`full`?an(t.graph,t.metadata,r):on(t.changes,t.metadata,r),payloads:e.Payloads?rn(e.Payloads):new Map}}function j(e,t,n){typeof e[t]!=`function`&&Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}function cn(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:window}function ln(e,t){let n=Math.trunc(e)||0;return n<0?n+t:n}function un(){let e=cn();typeof globalThis>`u`&&(e.globalThis=e),typeof e.structuredClone!=`function`&&(e.structuredClone=e=>JSON.parse(JSON.stringify(e))),j(Promise,`allSettled`,e=>Promise.all(Array.from(e,e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))),j(Array.prototype,`flat`,function(e=1){return e<1?this.slice():this.reduce((t,n)=>t.concat(Array.isArray(n)?n.flat(e-1):n),[])}),j(Array.prototype,`flatMap`,function(e){return this.map(e).flat()}),j(Array.prototype,`toSorted`,function(e){return this.slice().sort(e)}),j(Array.prototype,`toReversed`,function(){return this.slice().reverse()}),j(Array.prototype,`toSpliced`,function(...e){let t=this.slice();return t.splice(...e),t}),j(Array.prototype,`with`,function(e,t){let n=this.slice();return n[ln(e,n.length)]=t,n});function t(e){let t=ln(e,this.length);return t<0||t>=this.length?void 0:this[t]}j(Array.prototype,`at`,t),j(String.prototype,`at`,t),j(Object,`hasOwn`,(e,t)=>Object.prototype.hasOwnProperty.call(e,t)),j(Object,`groupBy`,(e,t)=>{let n=Object.create(null),r=0;for(let i of e){let e=t(i,r++);(n[e]??=[]).push(i)}return n})}function dn(){if(!(typeof window>`u`))try{Object.defineProperty(window,"__ikonBundleRunning",{value:!0,writable:!0,configurable:!0})}catch{}}const fn=new Map,pn={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function mn(e,t){return`[${e}] ${t}`}function M(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:pn[e],component:t,message:n,args:r};for(let[t,n]of fn)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(1<=e){let i=mn(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function hn(e){return{debug(t,...n){M(0,e,t,n)},info(t,...n){M(1,e,t,n)},warn(t,...n){M(2,e,t,n)},error(t,...n){M(3,e,t,n)}}}un(),dn();var gn=class{cache=new Map;getHandler(e,t,n){let r=`${e}:${t}`,i=this.cache.get(r);return i||(i=()=>n(t),this.cache.set(r,i)),i}getHandlerWithPayload(e,t,n){let r=`${e}:${t}:payload`,i=this.cache.get(r);return i||(i=e=>n(t,e),this.cache.set(r,i)),i}getBooleanHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getStringHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNumberArrayHandler(e,t,n){return this.getHandlerWithPayload(e,t,n)}getNullableBooleanHandler(e,t,n){let r=`${e}:${t}:nullable-bool`,i=this.cache.get(r);return i||(i=e=>n(t,e??null),this.cache.set(r,i)),i}invalidateNode(e){let t=`${e}:`;for(let e of this.cache.keys())e.startsWith(t)&&this.cache.delete(e)}invalidateHandler(e,t){this.cache.delete(`${e}:${t}`),this.cache.delete(`${e}:${t}:payload`),this.cache.delete(`${e}:${t}:nullable-bool`)}clear(){this.cache.clear()}get size(){return this.cache.size}};const _n=hn(`UiStreamStore`);var vn=class{views=new Map;listeners=new Set;payloads=new Map;snapshotMode=!1;snapshot={views:new Map,payloads:new Map,version:-1};rootViewId;nodeListeners=new Map;changedNodeIds=new Set;nodeVersions=new Map;structureChanged=!1;resyncNeeded=!1;viewsDirty=!0;payloadsDirty=!0;handlerCache=new gn;nodeIndex=new Map;indexedViews;apply(e){if(this.snapshotMode){if(e.snapshot.type!==`full`)return!1;this.snapshotMode=!1,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1}}let{snapshot:t,payloads:n}=e,{metadata:r}=t,{viewId:i}=r,a=this.views.get(i);a||(a={version:0},this.views.set(i,a));let o=t.type===`diff`&&r.isUpdate===!0;if(t.version<a.version||t.type===`diff`&&t.version>a.version+1)return this.resyncNeeded=!0,!1;if(t.version===a.version&&!o)return!1;let s=!1;this.rootViewId||(this.rootViewId=i,s=!0,this.structureChanged=!0);let c=a.root;if(t.type===`full`)a.root=t.root,a.version=t.version,s=!0,this.viewsDirty=!0,this.structureChanged=!0,t.root&&N(t.root,this.changedNodeIds);else{if(!c)return this.resyncNeeded=!0,!1;let e=bn(c,t.changes);e===c?a.root=e:(a.root=e,s=!0,this.viewsDirty=!0,F(c,e,this.changedNodeIds)),a.version=t.version}for(let[e,t]of n)this.payloads.get(e)!==t&&(this.payloads.set(e,t),s=!0,this.payloadsDirty=!0);return s?(this.commitSnapshot(),this.notify(),!0):(a.version=t.version,!1)}enterSnapshotMode(){this.snapshotMode=!0}consumeResyncNeeded(){let e=this.resyncNeeded;return this.resyncNeeded=!1,e}replaceFromWire(e){let t={rootViewId:e.rootViewId,views:new Map(e.views),payloads:new Map(e.payloads),version:e.version};return this.replaceSnapshot(t)}patchFromOp(e){this.snapshotMode=!0;let t=e.expectedBaseVersion;if(t!==void 0&&this.snapshot.version!==t)return!1;let n=!1,r=null,i=null,a=()=>(r||=new Map(this.snapshot.views),r),o=()=>(i||=new Map(this.snapshot.payloads),i);if(e.deleteViews&&e.deleteViews.length>0)for(let t of e.deleteViews)a().delete(t)&&(n=!0,this.structureChanged=!0);if(e.upsertViews&&e.upsertViews.length>0)for(let[t,r]of e.upsertViews){let e=a(),i=e.get(t);i!==r&&(e.set(t,r),n=!0,i?F(i,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0))}if(e.deletePayloads&&e.deletePayloads.length>0)for(let t of e.deletePayloads)o().delete(t)&&(n=!0);if(e.upsertPayloads&&e.upsertPayloads.length>0)for(let[t,r]of e.upsertPayloads){let e=o();e.get(t)!==r&&(e.set(t,r),n=!0)}let s=e.rootViewId??this.snapshot.rootViewId;s!==this.snapshot.rootViewId&&(n=!0,this.structureChanged=!0);let c=e.nextVersion;if(c!==this.snapshot.version&&(n=!0),!n)return this.snapshot={...this.snapshot,version:c},!1;for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot={rootViewId:s,views:r??new Map(this.snapshot.views),payloads:i??new Map(this.snapshot.payloads),version:c},this.notify(),!0}replaceSnapshot(e){this.snapshotMode=!0;let t=this.snapshot,n=t.version!==e.version||t.rootViewId!==e.rootViewId||t.views.size!==e.views.size||t.payloads.size!==e.payloads.size;(t.rootViewId!==e.rootViewId||t.views.size!==e.views.size)&&(this.structureChanged=!0);for(let[n,r]of e.views){let e=t.views.get(n);e?F(e,r,this.changedNodeIds):(N(r,this.changedNodeIds),this.structureChanged=!0)}for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1);return this.snapshot=e,n&&this.notify(),n}clear(){(this.snapshot.rootViewId!==void 0&&this.snapshot.rootViewId.length!==0||this.snapshot.views.size!==0||this.snapshot.payloads.size!==0)&&(this.snapshotMode=!0,this.views.clear(),this.payloads.clear(),this.rootViewId=void 0,this.viewsDirty=!0,this.payloadsDirty=!0,this.snapshot={views:new Map,payloads:new Map,version:-1},this.structureChanged=!0,this.notify())}getSnapshot(){return this.snapshot}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}subscribeNode(e,t){let n=this.nodeListeners.get(e);return n||(n=new Set,this.nodeListeners.set(e,n)),n.add(t),()=>{n&&(n.delete(t),n.size===0&&this.nodeListeners.delete(e))}}getNode(e){let t=this.snapshot.views;return this.indexedViews!==t&&this.rebuildNodeIndex(t),this.nodeIndex.get(e)}rebuildNodeIndex(e){this.nodeIndex.clear();for(let t of e.values())Sn(t,this.nodeIndex);for(let[t,n]of e)this.nodeIndex.set(t,n);this.indexedViews=e}getNodeVersion(e){return this.nodeVersions.get(e)??0}notifyNodes(){if(this.changedNodeIds.size===0||this.nodeListeners.size===0){this.changedNodeIds.clear();return}for(let e of this.changedNodeIds){let t=this.nodeListeners.get(e);if(t)for(let e of t)e()}this.changedNodeIds.clear()}commitSnapshot(){let e,t;if(this.viewsDirty){let t=new Map;for(let[e,n]of this.views)n.root&&t.set(e,n.root);e=t,this.viewsDirty=!1}else e=this.snapshot.views;this.payloadsDirty?(t=new Map(this.payloads),this.payloadsDirty=!1):t=this.snapshot.payloads;let n=this.rootViewId&&this.views.has(this.rootViewId)?this.views.get(this.rootViewId)?.version:void 0;if(n===void 0)for(let e of this.views.values())n=n===void 0?e.version:Math.max(n,e.version);this.snapshot={rootViewId:this.rootViewId,views:e,payloads:t,version:n};for(let e of this.changedNodeIds)this.nodeVersions.set(e,(this.nodeVersions.get(e)??0)+1)}notify(){if(this.notifyNodes(),this.structureChanged){this.structureChanged=!1;for(let e of this.listeners)e()}}},yn=class{streams=new Map;listeners=new Set;apply(e,t){let n=this.getOrCreateStreamEntry(e).store.apply(t);return n&&this.notify(e),n}needsResync(e){let t=this.streams.get(e);return t?t.store.consumeResyncNeeded():!1}applyStoreOp(e){if(e.type===`ReplaceStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.snapshot.streamId),n=t.category!==e.snapshot.category;return t.category=e.snapshot.category,t.store.replaceFromWire(e.snapshot)||n?(this.notify(e.snapshot.streamId),!0):!1}if(e.type===`PatchStreamSnapshot`){let t=this.getOrCreateStreamEntry(e.streamId),n=e.category!==void 0&&t.category!==e.category;return e.category!==void 0&&(t.category=e.category),t.store.patchFromOp(e)||n?(this.notify(e.streamId),!0):!1}if(e.type===`ClearStream`){let t=this.streams.get(e.streamId);return t?(t.store.clear(),this.notify(e.streamId),!0):!1}return e.type===`RemoveStream`?this.streams.delete(e.streamId)?(this.notify(e.streamId),!0):!1:e.type===`SetStreamCategory`&&(this.setCategory(e.streamId,e.category),!0)}applyStoreOps(e){for(let t of e)this.applyStoreOp(t)}clear(e){let t=this.streams.get(e);t&&(t.store.clear(),this.notify(e))}remove(e){this.streams.delete(e)&&this.notify(e)}enterSnapshotModeAll(){for(let e of this.streams.values())e.store.enterSnapshotMode()}setCategory(e,t){let n=this.getOrCreateStreamEntry(e);n.category!==t&&(n.category=t,this.notify(e))}getSnapshot(e){let t=this.streams.get(e);if(t)return{...t.store.getSnapshot(),streamId:e,category:t.category}}getSnapshots(){let e=[];for(let[t,n]of this.streams){let r=n.store.getSnapshot();e.push({...r,streamId:t,category:n.category})}return e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getOrCreateStreamEntry(e){let t=this.streams.get(e);return t||(t={store:new vn},this.streams.set(e,t)),t}notify(e){for(let t of this.listeners)t(e)}};function bn(e,t,n){if(t.length===0)return e;let r=new Map;for(let e of t)r.set(e.nodeId,e);return xn(e,r,n)}function xn(e,t,n){let r=t.get(e.id),i=e,a=!1;if(r?.textUpdates&&r.textUpdates.length>0){let t=On(e,r.textUpdates,n);i=t.node,a=t.changed}let o=!1,s=i.props;if(r?.changedProps&&r.changedProps.size>0)for(let[e,t]of r.changedProps.entries()){let n=s[e];if(t===void 0)(n!==void 0||e in s)&&(o||=(s=I(s),!0),delete s[e]);else if(L(t)){let r=I(t);R(r,n)||(o||=(s=I(s),!0),s[e]=r)}else R(t,n)||(o||=(s=I(s),!0),s[e]=t)}let c=!1,l=i.styleIds;r?.styleIds!==void 0&&(En(i.styleIds,r.styleIds)||(l=r.styleIds,c=!0));let u=i.children??[],d=u,f=!1;if(r?.removals&&r.removals.length>0||r?.moves&&r.moves.length>0||r?.inserts&&r.inserts.length>0){let e=d.slice();if(r?.removals&&r.removals.length>0){let t=[...r.removals].sort((e,t)=>t.index-e.index);for(let n of t)if(n.index>=0&&n.index<e.length&&e[n.index].id===n.nodeId)e.splice(n.index,1);else{let t=e.findIndex(e=>e.id===n.nodeId);t>=0&&e.splice(t,1)}f=!0}let t=new Map;if(r?.moves&&r.moves.length>0){for(let n of r.moves){let r=e.findIndex(e=>e.id===n.nodeId);r>=0&&(t.set(n.nodeId,e[r]),e.splice(r,1))}f=!0}let i=[];if(r?.moves)for(let e of r.moves){let n=t.get(e.nodeId);n&&i.push({index:e.toIndex,node:n,isInsert:!1})}if(r?.inserts){for(let n of r.inserts)(e.some(e=>e.id===n.node.id)||t.has(n.node.id))&&_n.warn(`Duplicate node id '${n.node.id}' (type '${n.node.type}') inserted next to an existing sibling — UI tree diverged from the server`),i.push({index:n.index,node:n.node,isInsert:!0});f=!0}i.sort((e,t)=>e.index-t.index);for(let t of i){let r=Math.min(t.index,e.length);e.splice(r,0,t.node),t.isInsert&&n&&N(t.node,n)}d=e}let p;for(let e=0;e<d.length;e++){let r=d[e],i=xn(r,t,n);i!==r&&(p||=d.slice(),p[e]=i)}p&&(d=p,f=!0);let m=a||o||c,h=m||f;return m&&n&&n.add(e.id),h?!o&&!f&&!c?i:{id:e.id,type:e.type,props:o?s:i.props,children:f?d:u,styleIds:c?l:i.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}}:e}function N(e,t){if(t.add(e.id),e.children)for(let n of e.children)N(n,t)}function Sn(e,t){if(t.set(e.id,e),e.children)for(let n of e.children)Sn(n,t)}const P=[];function Cn(e){for(;P.length<=e;)P.push(new Map);return P[e].clear(),P[e]}function F(e,t,n){wn(e,t,n,0)}function wn(e,t,n,r){if(e===t)return;(e.type!==t.type||!Tn(e.props,t.props)||!En(e.styleIds,t.styleIds))&&n.add(t.id);let i=e.children??[],a=t.children??[];if(i!==a){let e=Cn(r);for(let t of i)e.set(t.id,t);let o=!1;for(let t=0;t<a.length;t++){let s=a[t],c=e.get(s.id);c?(wn(c,s,n,r+1),!o&&t<i.length&&i[t].id!==s.id&&(o=!0)):(N(s,n),o=!0)}(i.length!==a.length||o)&&n.add(t.id)}}function Tn(e,t){return R(e,t)}function En(e,t){return R(e,t)}function Dn(e,t){if(t.length===0)return e;let n=[...t].sort((e,t)=>e.start-t.start),r=e,i=0;for(let e of n){let t=An(e.start+i,0,r.length);if(e.end==null){let n=r.slice(t),a=jn(n,e.insertedText);r=r.slice(0,t)+e.insertedText+n.slice(a),i+=e.insertedText.length-a;continue}let n=An(e.end+i,t,r.length),a=n-t;r=r.slice(0,t)+e.insertedText+r.slice(n),i+=e.insertedText.length-a}return r}function On(e,t,n){if(t.length===0)return{node:e,changed:!1};let r=new Map;for(let e of t){let t=r.get(e.nodeId);t?t.push(e):r.set(e.nodeId,[e])}return kn(e,r,n)}function kn(e,t,n){let r=t.get(e.id)??[],i=!1,a=e.props;if(r.length>0){let e=new Map;for(let t of r){let n=e.get(t.propertyName);n?n.push(t):e.set(t.propertyName,[t])}for(let[t,n]of e.entries()){let e=a[t],r=Dn(typeof e==`string`?e:``,n);i||=(a=I(a),!0),a[t]=r}}let o=!1,s=e.children??[],c=s;if(s.length>0){let e;for(let r=0;r<s.length;r++){let i=s[r],a=kn(i,t,n);a.changed&&(e||=[...s],e[r]=a.node)}e&&(c=e,o=!0)}return!i&&!o?{node:e,changed:!1}:(i&&n&&n.add(e.id),{node:{id:e.id,type:e.type,props:i?a:e.props,children:o?c:s,styleIds:e.styleIds,...e.sourceMarker?{sourceMarker:e.sourceMarker}:{}},changed:!0})}function An(e,t,n){return Math.max(t,Math.min(n,e))}function jn(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e.charCodeAt(r)===t.charCodeAt(r);)r++;return r}function I(e){let t={},n=Object.keys(e);for(let r=0;r<n.length;r++){let i=n[r];t[i]=e[i]}return t}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!R(e[n],t[n]))return!1;return!0}if(L(e)&&L(t)){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!R(e[r],t[r]))return!1;return!0}return!1}const z=new yn,B=new Map,V=new Map,H=new Set;let Mn=16,U=50,W=[],G=null,K=null,q=0,J=0;const Y=new Map,X=new Map;function Nn(){return typeof performance<`u`?performance.now():Date.now()}function Pn(){try{return crypto.randomUUID()}catch{return`${Date.now()}_${Math.random().toString(16).slice(2)}`}}function Fn(e){let t=[];for(let n of e.views)t.push(n);let n=[];for(let t of e.payloads)n.push(t);return{streamId:e.streamId,category:e.category,version:e.version??-1,rootViewId:e.rootViewId,views:t,payloads:n}}function In(e,t,n){if(!n||n.version===-1)return{type:`ReplaceStreamSnapshot`,snapshot:Fn(t)};let r,i;for(let[e,i]of t.views)n.views.get(e)!==i&&(r??=[]).push([e,i]);for(let e of n.views.keys())t.views.has(e)||(i??=[]).push(e);let a,o;for(let[e,r]of t.payloads)n.payloads.get(e)!==r&&(a??=[]).push([e,r]);for(let e of n.payloads.keys())t.payloads.has(e)||(o??=[]).push(e);return{type:`PatchStreamSnapshot`,streamId:e,category:t.category,nextVersion:t.version??-1,expectedBaseVersion:n.version??-1,rootViewId:t.rootViewId,upsertViews:r,deleteViews:i,upsertPayloads:a,deletePayloads:o}}function Z(){G||=setTimeout($,Mn),K||=setTimeout($,U)}function Q(e){W.push(e),Z()}function $(){if(G&&=(clearTimeout(G),null),K&&=(clearTimeout(K),null),W.length===0&&Y.size===0&&X.size===0){q=0,J=0;return}let e=[];for(let[t,n]of Y)e.push({trackId:t,version:n.version,senderId:n.senderId});let t=[];for(let[e,n]of X)t.push({trackId:e,senderId:n});let n={batchId:Pn(),createdAtMs:Nn(),ops:W,...e.length>0?{acks:e}:{},...t.length>0?{resyncs:t}:{},stats:{uiMessagesConsumed:q,bytesConsumed:J}};W=[],q=0,J=0,Y.clear(),X.clear(),self.postMessage(n)}function Ln(e){return`${e.senderId}_${e.trackId}`}async function Rn(e){let t=await Mt(e),n=new Set;for(let e of Object.values(t.UIStreams??{})){let t=e.StreamId;n.add(t);let r=e.Info?.Category;z.getSnapshot(t)?.category!==r&&(z.setCategory(t,r),Q({type:`SetStreamCategory`,streamId:t,category:r}))}for(let e of z.getSnapshots())H.has(e.streamId)||n.has(e.streamId)||(z.remove(e.streamId),V.delete(e.streamId),Q({type:`RemoveStream`,streamId:e.streamId}))}function zn(e){if(H.size!==0){for(let t of H)t!==e&&(z.remove(t),V.delete(t),Q({type:`RemoveStream`,streamId:t}));H.clear()}}async function Bn(e){let t=r(e),n=Ln(t),i=A(await Ct(e)),a=Y.get(t.trackId);(a===void 0||i.snapshot.version>a.version)&&(Y.set(t.trackId,{version:i.snapshot.version,senderId:t.senderId}),Z());let o=z.apply(n,i);if(z.needsResync(n)&&(X.set(t.trackId,t.senderId),Z()),!o)return;let s=z.getSnapshot(n);if(!s)return;let c=V.get(n);V.set(n,s),Q(In(n,s,c)),zn(n)}async function Vn(e){let t=await Ze(e);if(!t.StyleId)return;let n={styleId:t.StyleId,css:t.Style?.css,common:t.Style?.common},r=B.get(n.styleId);r&&r.css===n.css&&r.common===n.common||(B.set(n.styleId,n),Q({type:`UpsertUiStyle`,style:n}))}async function Hn(e){let t=await it(e);if(t.Styles)for(let e of t.Styles){if(!e.StyleId)continue;let t={styleId:e.StyleId,css:e.Style?.css,common:e.Style?.common},n=B.get(t.styleId);n&&n.css===t.css&&n.common===t.common||(B.set(t.styleId,t),Q({type:`UpsertUiStyle`,style:t}))}}async function Un(e){let t=await gt(e);if(!(!t.StyleIds||t.StyleIds.length===0))for(let e of t.StyleIds)B.delete(e)&&Q({type:`RemoveUiStyle`,styleId:e})}function Wn(e){if(!z.getSnapshots().some(e=>e.rootViewId)){for(let t of e.styles){let e=B.get(t.styleId);e&&e.css===t.css&&e.common===t.common||(B.set(t.styleId,t),Q({type:`UpsertUiStyle`,style:t}))}if(e.bootJson&&e.bootStreamId){let t=A({Json:e.bootJson});if(z.apply(e.bootStreamId,t)){let t=z.getSnapshot(e.bootStreamId);t&&(V.set(e.bootStreamId,t),H.add(e.bootStreamId),Q({type:`ReplaceStreamSnapshot`,snapshot:Fn(t),fromSeed:!0}))}}for(let t of e.liveStreams??[])if(z.applyStoreOp({type:`ReplaceStreamSnapshot`,snapshot:t})){let e=z.getSnapshot(t.streamId);e&&V.set(t.streamId,e),Q({type:`ReplaceStreamSnapshot`,snapshot:t,fromSeed:!0})}z.enterSnapshotModeAll()}}async function Gn(e){let r=new Uint8Array(e);J+=r.byteLength;let i=t(r);switch(n(i)){case C.CORE_GLOBAL_STATE:await Rn(i),q++;return;case C.UI_UPDATE:try{await Bn(i)}catch(e){e instanceof k;return}finally{q++}return;case C.UI_STYLES:await Vn(i),q++;return;case C.UI_STYLES_BATCH:await Hn(i),q++;return;case C.UI_STYLES_DELETE:await Un(i),q++;return;default:return}}self.addEventListener(`message`,e=>{let t=e.data;if(t.type===`configure`){typeof t.flushIntervalMs==`number`&&Number.isFinite(t.flushIntervalMs)&&t.flushIntervalMs>=0&&(Mn=t.flushIntervalMs),typeof t.maxLatencyMs==`number`&&Number.isFinite(t.maxLatencyMs)&&t.maxLatencyMs>=0&&(U=t.maxLatencyMs);return}if(t.type===`clear`){W=[],V.clear(),Y.clear(),X.clear(),B.clear();for(let e of z.getSnapshots())z.remove(e.streamId);return}if(t.type===`snapshotMode`){z.enterSnapshotModeAll();return}if(t.type===`seed`){Wn(t);return}t.type===`protocol`&&Gn(t.message).catch(()=>{})});
package/index.js CHANGED
@@ -2654,7 +2654,7 @@ function ma(e) {
2654
2654
  //#endregion
2655
2655
  //#region src/ui-worker.ts?worker
2656
2656
  function ha(e) {
2657
- return new Worker("" + new URL("assets/ui-worker-BVCGGSNu.js", import.meta.url).href, {
2657
+ return new Worker("" + new URL("assets/ui-worker-Nkb-wDEf.js", import.meta.url).href, {
2658
2658
  type: "module",
2659
2659
  name: e?.name
2660
2660
  });
@@ -2759,7 +2759,7 @@ var ba = class {
2759
2759
  }
2760
2760
  if (t === "connected") {
2761
2761
  let e = this.client?.sessionId;
2762
- this.liveSnapshot?.setServerSessionId(this.client?.ikonServerId ?? ""), this.lastConnectedSessionId !== void 0 && (e === this.lastConnectedSessionId ? (Q.debug("Soft reconnect (same SessionId), gating UI store on the server resync snapshot"), this.enterSnapshotMode()) : (Q.debug(`SessionId changed (${this.lastConnectedSessionId} → ${e}), clearing UI cache so the server can resend a fresh snapshot under the new SessionId`), this.clearAllState())), this.lastConnectedSessionId = e;
2762
+ this.liveSnapshot?.setServerSessionId(this.client?.ikonServerId ?? ""), this.client?.resumedSession && this.sendResyncRequest(0), this.lastConnectedSessionId !== void 0 && (e === this.lastConnectedSessionId ? (Q.debug("Soft reconnect (same SessionId), gating UI store on the server resync snapshot"), this.enterSnapshotMode()) : (Q.debug(`SessionId changed (${this.lastConnectedSessionId} → ${e}), clearing UI cache so the server can resend a fresh snapshot under the new SessionId`), this.clearAllState())), this.lastConnectedSessionId = e;
2763
2763
  }
2764
2764
  });
2765
2765
  }
@@ -3057,11 +3057,11 @@ var ba = class {
3057
3057
  }
3058
3058
  sendResyncRequest(e, t) {
3059
3059
  if (this.client) try {
3060
- let n = fn({ TrackId: e }, this.client.sessionId ?? 0, {
3060
+ let n = t === void 0 ? { trackId: e } : {
3061
3061
  trackId: e,
3062
3062
  targetIds: [t]
3063
- });
3064
- this.client.sendProtocolMessage(n);
3063
+ }, r = fn({ TrackId: e }, this.client.sessionId ?? 0, n);
3064
+ this.client.sendProtocolMessage(r);
3065
3065
  } catch (e) {
3066
3066
  Q.warn("Failed to send UI resync request", e);
3067
3067
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikonai/sdk-ui",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -1,3 +0,0 @@
1
- function e(e){return e}function t(e){if(e.length<8)throw Error(`Protocol message too short`);return(e[4]|e[5]<<8|e[6]<<16|e[7]<<24)>>>0}function n(e){return t(e)&4294901760}function r(e){let t=ee(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(t.length<27)throw Error(`Protocol payload too short`);let r=n.getUint32(0,!0),i=n.getUint32(4,!0),a=n.getUint32(8,!0),o=n.getUint32(12,!0),s=n.getUint32(16,!0),c=n.getUint32(20,!0),l=n.getUint8(24),u=n.getUint8(25),d=n.getUint8(26);if(27+c*4>t.length)throw Error(`Protocol header exceeds payload length`);let f=[],p=27;for(let e=0;e<c;e++)f.push(n.getUint32(p,!0)),p+=4;return{length:r,opcode:i,senderId:a,trackId:o,sequenceId:s,targetIds:f,payloadVersion:l,payloadType:u,flags:d}}function i(t,n,r,i,a){let o=a?.trackId??0,s=a?.sequenceId??0,c=a?.flags??0,l=a?.targetIds??[],u=a?.payloadType??8,d=27+l.length*4,f=d+n.length,p=new Uint8Array(f),m=new DataView(p.buffer);m.setUint32(0,f,!0),m.setUint32(4,t>>>0,!0),m.setUint32(8,i>>>0,!0),m.setUint32(12,o>>>0,!0),m.setUint32(16,s>>>0,!0),m.setUint32(20,l.length>>>0,!0),m.setUint8(24,r&255),m.setUint8(25,u&255),m.setUint8(26,c&255);let h=27;for(let e=0;e<l.length;e++)m.setUint32(h,l[e]>>>0,!0),h+=4;return p.set(n,d),e(p)}let a=function(e){return e[e.Null=1]=`Null`,e[e.Bool=2]=`Bool`,e[e.Int32=3]=`Int32`,e[e.Int64=4]=`Int64`,e[e.UInt32=5]=`UInt32`,e[e.UInt64=6]=`UInt64`,e[e.Float32=7]=`Float32`,e[e.Float64=8]=`Float64`,e[e.Array=9]=`Array`,e[e.Dict=10]=`Dict`,e[e.Object=11]=`Object`,e[e.String=12]=`String`,e[e.Binary=13]=`Binary`,e[e.Guid=14]=`Guid`,e}({});const o=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0});var s=class e{buffer=new f;cached;constructor(e=1){this.buffer.writeByte(161),this.buffer.writeVarUInt(e>>>0)}writeInt32Field(e,t){this.writeFixedField(e,3,()=>this.buffer.writeInt32(t|0))}writeUInt32Field(e,t){this.writeFixedField(e,5,()=>this.buffer.writeUInt32(t>>>0))}writeInt64Field(e,t){this.writeFixedField(e,4,()=>this.buffer.writeBigInt64(t))}writeUInt64Field(e,t){this.writeFixedField(e,6,()=>this.buffer.writeBigUInt64(t))}writeFloat32Field(e,t){this.writeFixedField(e,7,()=>this.buffer.writeFloat32(t))}writeFloat64Field(e,t){this.writeFixedField(e,8,()=>this.buffer.writeFloat64(t))}writeBoolField(e,t){this.writeFixedField(e,2,()=>this.buffer.writeByte(+!!t))}writeGuidField(e,t){let n=t instanceof d?t.asBytes():t;if(n.length!==16)throw Error(`Guid payload must be 16 bytes`);this.writeFixedField(e,14,()=>this.buffer.writeBytes(n))}writeStringField(e,t){let n=o.encode(t??``);this.writeVariableField(e,12,n)}writeBinaryField(e,t){this.writeVariableField(e,13,t)}writeObjectField(t,n,r){let i=new e(n);r(i);let a=i.finish();this.writeVariableField(t,11,a)}writeArrayField(e,t,n){let r=new c(t);n(r);let i=r.finish();this.writeVariableField(e,9,i)}writeDictionaryField(e,t,n,r){let i=new l(t,n);r(i);let a=i.finish();this.writeVariableField(e,10,a)}finish(){return this.cached||=(this.buffer.writeByte(162),this.buffer.toUint8Array()),this.cached}writeFixedField(e,t,n){this.writeFieldHeader(e,t,0),n()}writeVariableField(e,t,n){this.writeFieldHeader(e,t,n.length),this.buffer.writeBytes(n)}writeFieldHeader(e,t,n){this.buffer.writeUInt32(e>>>0),this.buffer.writeByte(p(t)),m(t)&&this.buffer.writeVarUInt(n>>>0)}},c=class e{elementType;payload=new f;count=0;constructor(e){this.elementType=e}writeInt32(e){this.ensureElementType(3),this.count++,this.payload.writeInt32(e|0)}writeUInt32(e){this.ensureElementType(5),this.count++,this.payload.writeUInt32(e>>>0)}writeInt64(e){this.ensureElementType(4),this.count++,this.payload.writeBigInt64(e)}writeUInt64(e){this.ensureElementType(6),this.count++,this.payload.writeBigUInt64(e)}writeFloat32(e){this.ensureElementType(7),this.count++,this.payload.writeFloat32(e)}writeFloat64(e){this.ensureElementType(8),this.count++,this.payload.writeFloat64(e)}writeBool(e){this.ensureElementType(2),this.count++,this.payload.writeByte(+!!e)}writeGuid(e){this.ensureElementType(14),this.count++;let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t)}writeString(e){this.ensureElementType(12),this.count++;let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t)}writeBinary(e){this.ensureElementType(13),this.count++,this.payload.writeVarUInt(e.length),this.payload.writeBytes(e)}writeObject(e,t){this.ensureElementType(11),this.count++;let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r)}writeArray(t,n){this.ensureElementType(9),this.count++;let r=new e(t);n(r);let i=r.finish();this.payload.writeBytes(i)}writeDictionary(e,t,n){this.ensureElementType(10),this.count++;let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i)}finish(){let e=new f;return e.writeByte(p(this.elementType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}ensureElementType(e){if(this.elementType!==e)throw Error(`Array element type is ${a[this.elementType]}, expected ${a[e]}`)}},l=class{keyType;valueType;payload=new f;count=0;entryOpen=!1;constructor(e,t){this.keyType=e,this.valueType=t,h(e)}beginEntry(){if(this.entryOpen)throw Error(`Previous dictionary entry not completed`);return this.count++,this.entryOpen=!0,new u(this.keyType,this.valueType,this.payload,()=>{this.entryOpen=!1})}finish(){if(this.entryOpen)throw Error(`Dictionary entry not completed`);let e=new f;return e.writeByte(p(this.keyType)),e.writeByte(p(this.valueType)),e.writeVarUInt(this.count),e.writeBytes(this.payload.toUint8Array()),e.toUint8Array()}},u=class{keyType;valueType;payload;onComplete;keyWritten=!1;valueWritten=!1;completed=!1;constructor(e,t,n,r){this.keyType=e,this.valueType=t,this.payload=n,this.onComplete=r}writeKeyInt32(e){this.ensureKeyType(3),this.payload.writeInt32(e|0),this.keyWritten=!0}writeKeyUInt32(e){this.ensureKeyType(5),this.payload.writeUInt32(e>>>0),this.keyWritten=!0}writeKeyInt64(e){this.ensureKeyType(4),this.payload.writeBigInt64(e),this.keyWritten=!0}writeKeyUInt64(e){this.ensureKeyType(6),this.payload.writeBigUInt64(e),this.keyWritten=!0}writeKeyFloat32(e){this.ensureKeyType(7),this.payload.writeFloat32(e),this.keyWritten=!0}writeKeyFloat64(e){this.ensureKeyType(8),this.payload.writeFloat64(e),this.keyWritten=!0}writeKeyBool(e){this.ensureKeyType(2),this.payload.writeByte(+!!e),this.keyWritten=!0}writeKeyGuid(e){this.ensureKeyType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.keyWritten=!0}writeKeyString(e){this.ensureKeyType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.keyWritten=!0}writeKeyBinary(e){this.ensureKeyType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.keyWritten=!0}writeValueInt32(e){this.ensureValueType(3),this.payload.writeInt32(e|0),this.valueWritten=!0}writeValueUInt32(e){this.ensureValueType(5),this.payload.writeUInt32(e>>>0),this.valueWritten=!0}writeValueInt64(e){this.ensureValueType(4),this.payload.writeBigInt64(e),this.valueWritten=!0}writeValueUInt64(e){this.ensureValueType(6),this.payload.writeBigUInt64(e),this.valueWritten=!0}writeValueFloat32(e){this.ensureValueType(7),this.payload.writeFloat32(e),this.valueWritten=!0}writeValueFloat64(e){this.ensureValueType(8),this.payload.writeFloat64(e),this.valueWritten=!0}writeValueBool(e){this.ensureValueType(2),this.payload.writeByte(+!!e),this.valueWritten=!0}writeValueGuid(e){this.ensureValueType(14);let t=e instanceof d?e.asBytes():e;if(t.length!==16)throw Error(`Guid payload must be 16 bytes`);this.payload.writeBytes(t),this.valueWritten=!0}writeNullValue(){this.ensureValueType(1),this.valueWritten=!0}writeValueBinary(e){this.ensureValueType(13),this.payload.writeVarUInt(e.length),this.payload.writeBytes(e),this.valueWritten=!0}writeValueString(e){this.ensureValueType(12);let t=o.encode(e??``);this.payload.writeVarUInt(t.length),this.payload.writeBytes(t),this.valueWritten=!0}writeValueObject(e,t){this.ensureValueType(11);let n=new s(e);t(n);let r=n.finish();this.payload.writeVarUInt(r.length),this.payload.writeBytes(r),this.valueWritten=!0}writeValueArray(e,t){this.ensureValueType(9);let n=new c(e);t(n);let r=n.finish();this.payload.writeBytes(r),this.valueWritten=!0}writeValueDictionary(e,t,n){this.ensureValueType(10);let r=new l(e,t);n(r);let i=r.finish();this.payload.writeBytes(i),this.valueWritten=!0}complete(){if(!this.completed){if(!this.keyWritten||!this.valueWritten)throw Error(`Dictionary entry must write both key and value`);this.completed=!0,this.onComplete()}}ensureKeyType(e){if(this.keyType!==e)throw Error(`Dictionary key type is ${a[this.keyType]}, expected ${a[e]}`)}ensureValueType(e){if(this.valueType!==e)throw Error(`Dictionary value type is ${a[this.valueType]}, expected ${a[e]}`)}},d=class e{bytes;constructor(e){this.bytes=e}static fromString(t){if(!t)throw Error(`Guid string is empty`);let n=t.replace(/-/g,``);if(n.length!==32)throw Error(`Guid string must be 32 hex characters`);let r=new Uint8Array(16),i=e.parseHexSlice(n,0,8),a=e.parseHexSlice(n,8,4),o=e.parseHexSlice(n,12,4);e.writeUInt32LE(r,0,i),e.writeUInt16LE(r,4,a),e.writeUInt16LE(r,6,o);for(let t=0;t<8;t++)r[8+t]=e.parseHexSlice(n,16+t*2,2);return new e(r)}static fromBytes(t){if(t.length!==16)throw Error(`Guid byte array must be 16 bytes`);return new e(Uint8Array.from(t))}static createZero(){return new e(new Uint8Array(16))}static createRandom(){let t=new Uint8Array(16),n=globalThis.crypto;if(n?.getRandomValues)n.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,new e(t)}toString(){let t=this.bytes;return[e.toHex(e.readUInt32LE(t,0),8),e.toHex(e.readUInt16LE(t,4),4),e.toHex(e.readUInt16LE(t,6),4),g(t.subarray(8,10)),g(t.subarray(10,16))].join(`-`)}asBytes(){return this.bytes.slice()}static parseHexSlice(e,t,n){let r=e.substr(t,n),i=Number.parseInt(r,16);if(Number.isNaN(i))throw Error(`Guid string contains invalid characters`);return i>>>0}static writeUInt32LE(e,t,n){let r=n>>>0;e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24&255}static writeUInt16LE(e,t,n){let r=n&65535;e[t]=r&255,e[t+1]=r>>>8&255}static readUInt32LE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}static readUInt16LE(e,t){return(e[t]|e[t+1]<<8)&65535}static toHex(e,t){return(e>>>0).toString(16).padStart(t,`0`)}},f=class e{static INITIAL_CAPACITY=256;buffer;dataView;length=0;constructor(){this.buffer=new Uint8Array(e.INITIAL_CAPACITY),this.dataView=new DataView(this.buffer.buffer)}ensureCapacity(e){let t=this.length+e;if(t<=this.buffer.length)return;let n=this.buffer.length;for(;n<t;)n*=2;let r=new Uint8Array(n);r.set(this.buffer.subarray(0,this.length)),this.buffer=r,this.dataView=new DataView(this.buffer.buffer)}writeByte(e){this.ensureCapacity(1),this.buffer[this.length++]=e&255}writeBytes(e){this.ensureCapacity(e.length),this.buffer.set(e,this.length),this.length+=e.length}writeUInt32(e){this.ensureCapacity(4),this.dataView.setUint32(this.length,e>>>0,!0),this.length+=4}writeInt32(e){this.ensureCapacity(4),this.dataView.setInt32(this.length,e|0,!0),this.length+=4}writeFloat32(e){this.ensureCapacity(4),this.dataView.setFloat32(this.length,e,!0),this.length+=4}writeFloat64(e){this.ensureCapacity(8),this.dataView.setFloat64(this.length,e,!0),this.length+=8}writeBigInt64(e){this.ensureCapacity(8),this.dataView.setBigInt64(this.length,e,!0),this.length+=8}writeBigUInt64(e){this.ensureCapacity(8),this.dataView.setBigUint64(this.length,e,!0),this.length+=8}writeVarUInt(e){let t=e>>>0;for(;t>=128;)this.ensureCapacity(1),this.buffer[this.length++]=t&127|128,t>>>=7;this.ensureCapacity(1),this.buffer[this.length++]=t&127}toUint8Array(){return this.buffer.slice(0,this.length)}};function p(e,t=0){if(t&240)throw Error(`Teleport flags must fit into 4 bits`);return(e&15)<<4|t&15}function m(e){return e===12||e===13||e===9||e===11||e===10}function h(e){if(e===9||e===11||e===10||e===1)throw Error(`Dictionary keys must be primitive Teleport types`)}function g(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function ee(e){return e instanceof Uint8Array?e:new Uint8Array(e)}let _=function(e){return e[e.None=0]=`None`,e[e.WebSocket=1]=`WebSocket`,e[e.WebSocketProxy=2]=`WebSocketProxy`,e[e.WebTransport=4]=`WebTransport`,e[e.WebTransportProxy=8]=`WebTransportProxy`,e[e.Tcp=16]=`Tcp`,e[e.TcpProxy=32]=`TcpProxy`,e[e.Https=64]=`Https`,e[e.WebRTC=128]=`WebRTC`,e[e.TcpTls=256]=`TcpTls`,e[e.Udp=512]=`Udp`,e[e.UdpDtls=1024]=`UdpDtls`,e[e.HttpStream=2048]=`HttpStream`,e[e.HttpStreamProxy=4096]=`HttpStreamProxy`,e}({}),v=function(e){return e[e.NONE=0]=`NONE`,e[e.CONSTANT_GROUP_BITS=15]=`CONSTANT_GROUP_BITS`,e[e.CONSTANT_GROUP_OFFSET=16]=`CONSTANT_GROUP_OFFSET`,e[e.GROUP_CORE=65536]=`GROUP_CORE`,e[e.CORE_AUTH_RESPONSE=65537]=`CORE_AUTH_RESPONSE`,e[e.CORE_AUTH_TICKET=65538]=`CORE_AUTH_TICKET`,e[e.CORE_GLOBAL_STATE=65539]=`CORE_GLOBAL_STATE`,e[e.CORE_ON_SERVER_STATUS_PING=65540]=`CORE_ON_SERVER_STATUS_PING`,e[e.CORE_ON_USER_JOINED=65541]=`CORE_ON_USER_JOINED`,e[e.CORE_ON_USER_LEFT=65542]=`CORE_ON_USER_LEFT`,e[e.CORE_ON_CLIENT_JOINED=65543]=`CORE_ON_CLIENT_JOINED`,e[e.CORE_ON_CLIENT_LEFT=65544]=`CORE_ON_CLIENT_LEFT`,e[e.CORE_ON_SERVER_STARTED=65545]=`CORE_ON_SERVER_STARTED`,e[e.CORE_ON_SERVER_STOPPED=65546]=`CORE_ON_SERVER_STOPPED`,e[e.CORE_ON_SERVER_STOPPING=65547]=`CORE_ON_SERVER_STOPPING`,e[e.CORE_ON_CLIENT_READY=65548]=`CORE_ON_CLIENT_READY`,e[e.CORE_CLIENT_READY=65549]=`CORE_CLIENT_READY`,e[e.CORE_SERVER_INIT=65550]=`CORE_SERVER_INIT`,e[e.CORE_ON_PLUGIN_RELOADED=65551]=`CORE_ON_PLUGIN_RELOADED`,e[e.CORE_DYNAMIC_CONFIG=65555]=`CORE_DYNAMIC_CONFIG`,e[e.CORE_PROXY_RPC_AUTH_TICKET=65556]=`CORE_PROXY_RPC_AUTH_TICKET`,e[e.CORE_UPDATE_CLIENT_CONTEXT=65558]=`CORE_UPDATE_CLIENT_CONTEXT`,e[e.CORE_BACKGROUND_WORK_ACTIVE=65559]=`CORE_BACKGROUND_WORK_ACTIVE`,e[e.CORE_RESET_IDLE=65560]=`CORE_RESET_IDLE`,e[e.CORE_CLIENT_DISCONNECTING=65561]=`CORE_CLIENT_DISCONNECTING`,e[e.CORE_ON_APP_READY=65562]=`CORE_ON_APP_READY`,e[e.CORE_ON_FRONTEND_RELOADED=65563]=`CORE_ON_FRONTEND_RELOADED`,e[e.CORE_ON_USER_DATA_ERASED=65564]=`CORE_ON_USER_DATA_ERASED`,e[e.CORE_WEBRTC_OFFER=65566]=`CORE_WEBRTC_OFFER`,e[e.CORE_WEBRTC_ANSWER=65567]=`CORE_WEBRTC_ANSWER`,e[e.CORE_WEBRTC_ICE_CANDIDATE=65568]=`CORE_WEBRTC_ICE_CANDIDATE`,e[e.CORE_WEBRTC_READY=65569]=`CORE_WEBRTC_READY`,e[e.CORE_WEBRTC_AUDIO_SEGMENT=65570]=`CORE_WEBRTC_AUDIO_SEGMENT`,e[e.CORE_WEBRTC_TRACK_MAP=65571]=`CORE_WEBRTC_TRACK_MAP`,e[e.CORE_WEBRTC_VIDEO_CAPTURE=65572]=`CORE_WEBRTC_VIDEO_CAPTURE`,e[e.CORE_WEBRTC_ICE_SERVERS_REQUEST=65573]=`CORE_WEBRTC_ICE_SERVERS_REQUEST`,e[e.CORE_WEBRTC_ICE_SERVERS_RESPONSE=65574]=`CORE_WEBRTC_ICE_SERVERS_RESPONSE`,e[e.CORE_WEBRTC_CLOSE=65575]=`CORE_WEBRTC_CLOSE`,e[e.CORE_RELAY_AGENT_AUTH=65576]=`CORE_RELAY_AGENT_AUTH`,e[e.CORE_RELAY_AGENT_AUTH_RESULT=65577]=`CORE_RELAY_AGENT_AUTH_RESULT`,e[e.CORE_RELAY_HEARTBEAT=65578]=`CORE_RELAY_HEARTBEAT`,e[e.CORE_RELAY_TCP_CONNECTION_OPENED=65579]=`CORE_RELAY_TCP_CONNECTION_OPENED`,e[e.CORE_RELAY_TCP_CONNECTION_CLOSED=65580]=`CORE_RELAY_TCP_CONNECTION_CLOSED`,e[e.CORE_RELAY_TCP_DATA=65581]=`CORE_RELAY_TCP_DATA`,e[e.CORE_RELAY_UDP_DATA=65582]=`CORE_RELAY_UDP_DATA`,e[e.CORE_RELAY_ADD_TUNNEL=65583]=`CORE_RELAY_ADD_TUNNEL`,e[e.CORE_RELAY_TUNNEL_ADDED=65584]=`CORE_RELAY_TUNNEL_ADDED`,e[e.CORE_RELAY_REMOVE_TUNNEL=65585]=`CORE_RELAY_REMOVE_TUNNEL`,e[e.CORE_IKON_SERVER_ENDPOINT_HOST_INFO=65586]=`CORE_IKON_SERVER_ENDPOINT_HOST_INFO`,e[e.CORE_CLIENT_INITIALIZATION=65587]=`CORE_CLIENT_INITIALIZATION`,e[e.CORE_CLIENT_LIFECYCLE_BATCH=65588]=`CORE_CLIENT_LIFECYCLE_BATCH`,e[e.CORE_APP_CONFIG=65589]=`CORE_APP_CONFIG`,e[e.GROUP_KEEPALIVE=131072]=`GROUP_KEEPALIVE`,e[e.KEEPALIVE_REQUEST=131073]=`KEEPALIVE_REQUEST`,e[e.KEEPALIVE_RESPONSE=131074]=`KEEPALIVE_RESPONSE`,e[e.GROUP_EVENTS=262144]=`GROUP_EVENTS`,e[e.EVENTS_PROFILE_UPDATE=262145]=`EVENTS_PROFILE_UPDATE`,e[e.EVENTS_SPEECH_PLAYBACK_COMPLETE=262147]=`EVENTS_SPEECH_PLAYBACK_COMPLETE`,e[e.GROUP_ANALYTICS=524288]=`GROUP_ANALYTICS`,e[e.ANALYTICS_LOGS=524289]=`ANALYTICS_LOGS`,e[e.ANALYTICS_EVENTS=524290]=`ANALYTICS_EVENTS`,e[e.ANALYTICS_USAGES=524291]=`ANALYTICS_USAGES`,e[e.ANALYTICS_USAGE=524292]=`ANALYTICS_USAGE`,e[e.ANALYTICS_SPECIAL_LOG=524293]=`ANALYTICS_SPECIAL_LOG`,e[e.ANALYTICS_PROCESSING_UPDATE=524294]=`ANALYTICS_PROCESSING_UPDATE`,e[e.ANALYTICS_REACTIVE_PROCESSING_UPDATE=524295]=`ANALYTICS_REACTIVE_PROCESSING_UPDATE`,e[e.ANALYTICS_IKON_PROXY_SERVER_STATS=524296]=`ANALYTICS_IKON_PROXY_SERVER_STATS`,e[e.ANALYTICS_IKON_RELAY_SERVER_STATS=524297]=`ANALYTICS_IKON_RELAY_SERVER_STATS`,e[e.ANALYTICS_IKON_TURN_SERVER_STATS=524298]=`ANALYTICS_IKON_TURN_SERVER_STATS`,e[e.ANALYTICS_IKON_HOST_SERVER_STATS=524299]=`ANALYTICS_IKON_HOST_SERVER_STATS`,e[e.ANALYTICS_TRAFFIC_USAGE=524300]=`ANALYTICS_TRAFFIC_USAGE`,e[e.GROUP_ACTIONS=1048576]=`GROUP_ACTIONS`,e[e.ACTION_CALL=1048577]=`ACTION_CALL`,e[e.ACTION_ACTIVE=1048578]=`ACTION_ACTIVE`,e[e.ACTION_TEXT_OUTPUT=1048579]=`ACTION_TEXT_OUTPUT`,e[e.ACTION_TEXT_OUTPUT_DELTA=1048580]=`ACTION_TEXT_OUTPUT_DELTA`,e[e.ACTION_TEXT_OUTPUT_DELTA_FULL=1048581]=`ACTION_TEXT_OUTPUT_DELTA_FULL`,e[e.ACTION_SET_STATE=1048582]=`ACTION_SET_STATE`,e[e.ACTION_TAP=1048583]=`ACTION_TAP`,e[e.ACTION_PAN=1048584]=`ACTION_PAN`,e[e.ACTION_ZOOM=1048585]=`ACTION_ZOOM`,e[e.ACTION_OPEN_EXTERNAL_URL=1048592]=`ACTION_OPEN_EXTERNAL_URL`,e[e.ACTION_FUNCTION_REGISTER=1048600]=`ACTION_FUNCTION_REGISTER`,e[e.ACTION_FUNCTION_CALL=1048601]=`ACTION_FUNCTION_CALL`,e[e.ACTION_FUNCTION_RESULT=1048602]=`ACTION_FUNCTION_RESULT`,e[e.ACTION_GENERATE_ANSWER=1048603]=`ACTION_GENERATE_ANSWER`,e[e.ACTION_REGENERATE_ANSWER=1048604]=`ACTION_REGENERATE_ANSWER`,e[e.ACTION_CLEAR_STATE=1048606]=`ACTION_CLEAR_STATE`,e[e.ACTION_CLASSIFICATION_RESULT=1048609]=`ACTION_CLASSIFICATION_RESULT`,e[e.ACTION_AUDIO_STOP=1048610]=`ACTION_AUDIO_STOP`,e[e.ACTION_CALL_TEXT=1048611]=`ACTION_CALL_TEXT`,e[e.ACTION_CANCEL_GENERATION=1048613]=`ACTION_CANCEL_GENERATION`,e[e.ACTION_SPEECH_RECOGNIZED=1048615]=`ACTION_SPEECH_RECOGNIZED`,e[e.ACTION_CALL_RESULT=1048616]=`ACTION_CALL_RESULT`,e[e.ACTION_DOWNLOAD=1048618]=`ACTION_DOWNLOAD`,e[e.ACTION_PLAY_SOUND=1048621]=`ACTION_PLAY_SOUND`,e[e.ACTION_STOP_SOUND=1048623]=`ACTION_STOP_SOUND`,e[e.ACTION_START_RECORDING=1048624]=`ACTION_START_RECORDING`,e[e.ACTION_STOP_RECORDING=1048625]=`ACTION_STOP_RECORDING`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM=1048627]=`ACTION_FUNCTION_ENUMERATION_ITEM`,e[e.ACTION_FUNCTION_ENUMERATION_END=1048628]=`ACTION_FUNCTION_ENUMERATION_END`,e[e.ACTION_FUNCTION_CANCEL=1048629]=`ACTION_FUNCTION_CANCEL`,e[e.ACTION_FUNCTION_DISPOSE=1048630]=`ACTION_FUNCTION_DISPOSE`,e[e.ACTION_FUNCTION_ERROR=1048631]=`ACTION_FUNCTION_ERROR`,e[e.ACTION_FUNCTION_ACK=1048632]=`ACTION_FUNCTION_ACK`,e[e.ACTION_FUNCTION_AWAITING_APPROVAL=1048633]=`ACTION_FUNCTION_AWAITING_APPROVAL`,e[e.ACTION_FUNCTION_APPROVAL_REQUIRED=1048634]=`ACTION_FUNCTION_APPROVAL_REQUIRED`,e[e.ACTION_FUNCTION_APPROVAL_RESPONSE=1048635]=`ACTION_FUNCTION_APPROVAL_RESPONSE`,e[e.UI_UPDATE_ACK=1048636]=`UI_UPDATE_ACK`,e[e.ACTION_CALL2=1048637]=`ACTION_CALL2`,e[e.ACTION_FUNCTION_REGISTER_BATCH=1048638]=`ACTION_FUNCTION_REGISTER_BATCH`,e[e.ACTION_CUSTOM_USER_MESSAGE=1048641]=`ACTION_CUSTOM_USER_MESSAGE`,e[e.ACTION_URL_CHANGED=1048642]=`ACTION_URL_CHANGED`,e[e.ACTION_FILE_UPLOAD_PRE_START2=1048643]=`ACTION_FILE_UPLOAD_PRE_START2`,e[e.ACTION_FILE_UPLOAD_PRE_START_RESPONSE2=1048644]=`ACTION_FILE_UPLOAD_PRE_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_START2=1048645]=`ACTION_FILE_UPLOAD_START2`,e[e.ACTION_FILE_UPLOAD_START_RESPONSE2=1048646]=`ACTION_FILE_UPLOAD_START_RESPONSE2`,e[e.ACTION_FILE_UPLOAD_DATA2=1048647]=`ACTION_FILE_UPLOAD_DATA2`,e[e.ACTION_FILE_UPLOAD_ACK2=1048648]=`ACTION_FILE_UPLOAD_ACK2`,e[e.ACTION_FILE_UPLOAD_END2=1048649]=`ACTION_FILE_UPLOAD_END2`,e[e.ACTION_FILE_UPLOAD_COMPLETE2=1048650]=`ACTION_FILE_UPLOAD_COMPLETE2`,e[e.ACTION_FUNCTION_ENUMERATION_ITEM_BATCH=1048651]=`ACTION_FUNCTION_ENUMERATION_ITEM_BATCH`,e[e.ACTION_CALL_ACK=1048652]=`ACTION_CALL_ACK`,e[e.ACTION_TRIGGER_CRON=1048653]=`ACTION_TRIGGER_CRON`,e[e.ACTION_RESULT=1048654]=`ACTION_RESULT`,e[e.UI_RESYNC_REQUEST=1048655]=`UI_RESYNC_REQUEST`,e[e.ACTION_USER_DATA_ERASURE=1048656]=`ACTION_USER_DATA_ERASURE`,e[e.ACTION_FILE_UPLOAD_RESUME2=1048657]=`ACTION_FILE_UPLOAD_RESUME2`,e[e.ACTION_FILE_UPLOAD_RESUME_RESPONSE2=1048658]=`ACTION_FILE_UPLOAD_RESUME_RESPONSE2`,e[e.GROUP_UI=2097152]=`GROUP_UI`,e[e.UI_STREAM_BEGIN=2097153]=`UI_STREAM_BEGIN`,e[e.UI_STREAM_END=2097154]=`UI_STREAM_END`,e[e.UI_STYLES=2097188]=`UI_STYLES`,e[e.UI_UPDATE=2097190]=`UI_UPDATE`,e[e.UI_STYLES_BATCH=2097192]=`UI_STYLES_BATCH`,e[e.UI_STYLES_DELETE=2097193]=`UI_STYLES_DELETE`,e[e.GROUP_COMMON=4128768]=`GROUP_COMMON`,e[e.GROUP_AUDIO=4194304]=`GROUP_AUDIO`,e[e.AUDIO_STREAM_BEGIN=4194305]=`AUDIO_STREAM_BEGIN`,e[e.AUDIO_STREAM_END=4194306]=`AUDIO_STREAM_END`,e[e.AUDIO_FRAME_VOLUME=4194308]=`AUDIO_FRAME_VOLUME`,e[e.AUDIO_FRAME=4194309]=`AUDIO_FRAME`,e[e.AUDIO_SHAPE_FRAME=4194310]=`AUDIO_SHAPE_FRAME`,e[e.AUDIO_PLAYBACK_REPORT=4194311]=`AUDIO_PLAYBACK_REPORT`,e[e.GROUP_VIDEO=8388608]=`GROUP_VIDEO`,e[e.VIDEO_STREAM_BEGIN=8388609]=`VIDEO_STREAM_BEGIN`,e[e.VIDEO_STREAM_END=8388610]=`VIDEO_STREAM_END`,e[e.VIDEO_FRAME=8388611]=`VIDEO_FRAME`,e[e.VIDEO_REQUEST_IDR_FRAME=8388612]=`VIDEO_REQUEST_IDR_FRAME`,e[e.VIDEO_INVALIDATE_FRAME=8388613]=`VIDEO_INVALIDATE_FRAME`,e[e.GROUP_ALL=16711680]=`GROUP_ALL`,e[e.GROUP_APP_LOCAL=1073741824]=`GROUP_APP_LOCAL`,e[e.CONSTANT_GROUP_MASK=2147418112]=`CONSTANT_GROUP_MASK`,e}({});function y(e){let t={};return e&&Object.assign(t,e),t}function te(e){return new s(1).finish()}function b(e,t,n){return i(131074,te(e),1,t,n)}var x=class extends Error{cause;constructor(e,t){super(e),this.cause=t,this.name=`ConnectionError`}},S=class extends x{constructor(e,t){super(e,t),this.name=`TransportError`}},C=class extends S{constructor(e){super(`No keepalive received within ${e}ms`),this.name=`KeepaliveTimeoutError`}},w=class extends S{constructor(e,t){super(e,t),this.name=`AuthRejectedError`}},T=class extends x{constructor(e){super(`Maximum reconnection attempts (${e}) exceeded`),this.name=`MaxRetriesExceededError`}},E=class extends x{pinnedTransport;pinnedTier;offeredTypes;constructor(e,t,n){let r=[e&&`?ikon-transport=${e}`,t&&`?ikon-proxy=${t}`].filter(Boolean).join(` and `);super(`No entrypoint matches ${r||`the pinned transport`}; the server offered [${n.join(`, `)}]. Change or remove the pin.`),this.pinnedTransport=e,this.pinnedTier=t,this.offeredTypes=n,this.name=`NoMatchingEndpointTypeError`}};function ne(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`))},a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e);if(t?.aborted){clearTimeout(a),r(new DOMException(`Aborted`,`AbortError`));return}t?.addEventListener(`abort`,i,{once:!0})})}let D=1;const re=new Map;function ie(e){D=e}const ae={0:`DEBUG`,1:`INFO`,2:`WARN`,3:`ERROR`,4:`NONE`};function oe(e,t){return`[${e}] ${t}`}function O(e,t,n,r){let i={timestamp:new Date().toISOString(),level:e,levelName:ae[e],component:t,message:n,args:r};for(let[t,n]of re)if(e>=(n?.minLevel??2))try{t(i)}catch{}if(D<=e){let i=oe(t,n);switch(e){case 0:console.debug(i,...r);break;case 1:console.info(i,...r);break;case 2:console.warn(i,...r);break;case 3:console.error(i,...r)}}}function k(e){return{debug(t,...n){O(0,e,t,n)},info(t,...n){O(1,e,t,n)},warn(t,...n){O(2,e,t,n)},error(t,...n){O(3,e,t,n)}}}function se(e){if(typeof window>`u`)return null;let t=new URLSearchParams(window.location.search),n=t.get(e);return n===null?t.get(e.replace(/-/g,`_`)):n}function ce(e){let t=se(e);return t===`true`||t!==`false`&&null}function le(){return ce(`ikon-retry`)!==!1}var A=class{buffer=new Uint8Array(65536);bufferOffset=0;bufferLength=0;dataView=null;dataViewBuffer=null;push(e,t){this.append(e);let n=this.getDataView();for(;this.bufferLength>=4;){let e=n.getUint32(this.bufferOffset,!0);if(e<4)throw this.reset(),Error(`Invalid protocol message length: ${e}`);if(this.bufferLength<e)return;let r=this.buffer.subarray(this.bufferOffset,this.bufferOffset+e);this.bufferOffset+=e,this.bufferLength-=e,t(r)}this.bufferLength===0&&(this.bufferOffset=0)}reset(){this.bufferOffset=0,this.bufferLength=0}append(e){let t=this.bufferLength+e.length,n=this.bufferOffset+this.bufferLength;if(n+e.length>this.buffer.length)if(t>this.buffer.length){let e=Math.max(t,this.buffer.length*2),r=new Uint8Array(e);r.set(this.buffer.subarray(this.bufferOffset,n)),this.buffer=r,this.bufferOffset=0,this.dataViewBuffer=null}else this.buffer.copyWithin(0,this.bufferOffset,n),this.bufferOffset=0;this.buffer.set(e,this.bufferOffset+this.bufferLength),this.bufferLength+=e.length}getDataView(){let e=this.buffer.buffer;return this.dataViewBuffer!==e&&(this.dataViewBuffer=e,this.dataView=new DataView(e)),this.dataView}};const j=k(`HttpStreamTransport`),ue=[`binary`,`sse`,`poll`];var M=class{framer=new A;callbacks;sessionId;keepaliveTimeoutMs;connectionTimeoutMs;pinnedMode;preferredMode;baseUri=``;sid=``;mode=`binary`;downstreamAbort=null;keepaliveTimeout=null;keepaliveResponseMessage=null;isClosed=!1;connected=!1;connecting=!1;sendQueue=[];sendPumpRunning=!1;firstMessageResolver=null;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4,this.pinnedMode=e.httpStreamMode,this.preferredMode=e.httpStreamPreferredMode}get isConnected(){return this.connected&&!this.isClosed}get activeMode(){return this.mode}async connect(e,t){this.isClosed=!1,this.connecting=!0,this.baseUri=e;let n=Date.now(),r=null,i=this.pinnedMode?[this.pinnedMode]:de(this.preferredMode);for(let e of i){if(this.isClosed)throw new S(`HTTP stream closed while connecting`);try{this.sid=pe(),await this.openMode(t,e),this.mode=e,this.connected=!0,this.connecting=!1,this.resetKeepaliveTimeout(),j.debug(`HTTP stream connected in ${e} mode in ${Date.now()-n}ms`);return}catch(t){if(r=t instanceof Error?t:Error(String(t)),this.abortDownstream(),t instanceof w)throw this.connecting=!1,t;j.debug(`HTTP stream ${e} mode failed after ${Date.now()-n}ms: ${r.message}`)}}throw this.connecting=!1,new S(`HTTP stream failed in every mode: ${r?.message??`unknown error`}`,r??void 0)}send(e){if(this.isClosed){j.warn(`Cannot send: HTTP stream closed`);return}this.sendQueue.push(e),this.runSendPump()}close(){this.isClosed=!0,this.connected=!1,this.clearKeepaliveTimeout(),this.abortDownstream(),this.sendQueue.length=0}async openMode(e,t){let n=new AbortController;this.downstreamAbort=n;let r=Math.min(3500,this.connectionTimeoutMs),i=setTimeout(()=>n.abort(),r);try{await this.openChannel(e,t,n.signal),await this.openDownstream(t,n,r)}finally{clearTimeout(i)}}async openChannel(e,t,n){let r;try{r=await fetch(this.openUrl(t),{method:`POST`,headers:{"Content-Type":`text/plain`},body:me(e),cache:`no-store`,credentials:`omit`,signal:n})}catch(e){throw n.aborted?new S(`HTTP stream channel did not open before the mode deadline`):e}if(r.status===401||r.status===403)throw new w(`HTTP stream rejected the auth ticket (${r.status})`);if(!r.ok)throw new S(`HTTP stream could not be opened, status ${r.status}`)}async openDownstream(e,t,n){this.framer.reset();let r=new Promise((e,r)=>{let i=()=>{this.firstMessageResolver=null,r(new S(`No server message in ${n}ms`))};t.signal.addEventListener(`abort`,i,{once:!0}),this.firstMessageResolver=()=>{t.signal.removeEventListener(`abort`,i),this.firstMessageResolver=null,e()}}),i=await fetch(this.streamUrl(e),{method:`GET`,headers:{Accept:e===`sse`?`text/event-stream`:`application/octet-stream`},cache:`no-store`,credentials:`omit`,signal:t.signal});if(i.status===401||i.status===403)throw new w(`HTTP stream rejected the auth ticket (${i.status})`);if(!i.ok||!i.body)throw new S(`HTTP stream request failed with status ${i.status}`);this.runDownstreamLoop(e,i,t),await r}async runDownstreamLoop(e,t,n){let r=t;try{for(;r&&!this.isClosed&&!n.signal.aborted;){if(await this.readResponse(e,r),e!==`poll`){this.isClosed||this.handleClose(`HTTP stream ended`,!1);return}if(r=await fetch(this.streamUrl(e),{method:`GET`,headers:{Accept:`application/octet-stream`},cache:`no-store`,credentials:`omit`,signal:n.signal}),r.status===410){this.handleClose(`HTTP stream channel is gone`,!1);return}if(!r.ok||!r.body){this.handleClose(`HTTP stream poll failed with status ${r.status}`,!1);return}}}catch(e){if(n.signal.aborted||this.isClosed)return;j.debug(`HTTP stream read loop ended: ${e instanceof Error?e.message:e}`),this.handleClose(`HTTP stream read failed`,!1)}}async readResponse(e,t){let n=t.body.getReader(),r=e===`sse`?new fe:null;for(;;){let{value:e,done:t}=await n.read();if(t)return;if(e){if(r){r.push(e,e=>this.framer.push(e,e=>this.handleProtocolMessage(e)));continue}this.framer.push(e,e=>this.handleProtocolMessage(e))}}}async runSendPump(){if(!this.sendPumpRunning){this.sendPumpRunning=!0;try{for(;this.sendQueue.length>0&&!this.isClosed;){let e=this.takeBatch(),t=await fetch(this.sendUrl(),{method:`POST`,headers:{"Content-Type":`text/plain`},body:e,cache:`no-store`,credentials:`omit`});if(t.status===410){this.handleClose(`HTTP stream channel is gone`,!1);return}if(!t.ok)throw new S(`HTTP stream send failed with status ${t.status}`)}}catch(e){if(this.isClosed)return;j.warn(`HTTP stream send failed: ${e instanceof Error?e.message:e}`),this.handleClose(`HTTP stream send failed`,!1)}finally{this.sendPumpRunning=!1}}}takeBatch(){let e=0,t=0;for(;t<this.sendQueue.length;){let n=this.sendQueue[t].length;if(t>0&&e+n>1048576)break;e+=n,t++}let n=new Uint8Array(e),r=0;for(let e=0;e<t;e++)n.set(this.sendQueue[e],r),r+=this.sendQueue[e].length;return this.sendQueue.splice(0,t),n}streamUrl(e){return`${this.baseUri}${this.baseUri.includes(`?`)?`&`:`?`}sid=${this.sid}&mode=${e}`}openUrl(e){return`${this.streamUrl(e)}&open=1`}sendUrl(){return`${this.baseUri}${this.baseUri.includes(`?`)?`&`:`?`}sid=${this.sid}`}getKeepaliveResponse(){return this.keepaliveResponseMessage||=b(y(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===v.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e.slice())}catch(e){j.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){this.isClosed||this.connecting||(this.isClosed=!0,this.connected=!1,this.clearKeepaliveTimeout(),this.abortDownstream(),this.callbacks.onClose(e,t))}abortDownstream(){this.downstreamAbort&&=(this.downstreamAbort.abort(),null)}resetKeepaliveTimeout(){this.clearKeepaliveTimeout(),!(this.keepaliveTimeoutMs<=0)&&(this.keepaliveTimeout=setTimeout(()=>{j.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing HTTP stream`),this.callbacks.onError(new C(this.keepaliveTimeoutMs)),this.close()},this.keepaliveTimeoutMs))}clearKeepaliveTimeout(){this.keepaliveTimeout&&=(clearTimeout(this.keepaliveTimeout),null)}};function de(e){return e?[e,...ue.filter(t=>t!==e)]:ue}var fe=class{decoder=new TextDecoder;pending=``;push(e,t){this.pending+=this.decoder.decode(e,{stream:!0});let n=this.pending.indexOf(`
2
- `);for(;n!==-1;){let e=this.pending.slice(0,n);this.pending=this.pending.slice(n+1),e.startsWith(`data: `)&&t(he(e.slice(6))),n=this.pending.indexOf(`
3
- `)}}};function pe(){let e=new Uint8Array(16);crypto.getRandomValues(e);let t=``;for(let n of e)t+=n.toString(16).padStart(2,`0`);return t}function me(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function he(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}const N=k(`WebSocketTransport`);var ge=class{ws=null;keepaliveTimeout=null;isClosed=!1;keepaliveResponseMessage=null;firstMessageResolver=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}async connect(e,t){this.isClosed=!1;let n=Date.now();return new Promise((r,i)=>{try{this.ws=new WebSocket(e),this.ws.binaryType=`arraybuffer`}catch(e){i(new S(`Failed to create WebSocket: ${e}`,e instanceof Error?e:void 0));return}let a=!1,o=!1,s=()=>{clearTimeout(u),this.ws&&(this.ws.onopen=null,this.ws.onerror=null,this.ws.onclose=null,this.ws.onmessage=null)},c=()=>{o||(o=!0,clearTimeout(u),this.firstMessageResolver=null,N.debug(`WebSocket connected in ${Date.now()-n}ms`),r())},l=e=>{o||(o=!0,this.firstMessageResolver=null,s(),i(e))};this.firstMessageResolver=c;let u=setTimeout(()=>{this.ws?.close(),N.warn(`WebSocket connection timeout after ${this.connectionTimeoutMs}ms`),l(new S(`WebSocket connection timeout`))},this.connectionTimeoutMs);this.ws.onopen=()=>{a=!0,this.ws.send(t),this.resetKeepaliveTimeout()},this.ws.onerror=()=>{N.debug(`WebSocket connection failed after ${Date.now()-n}ms`),l(new S(`WebSocket connection failed`))},this.ws.onclose=e=>{if(this.clearKeepaliveTimeout(),!o){l(a?new w(`WebSocket closed before first server message`):new S(`WebSocket connection closed before opening`));return}if(this.isClosed)return;let t=e.wasClean&&(e.code===1e3||e.code===1001),n=e.reason||`code=${e.code}`;this.callbacks.onClose(n,t)},this.ws.onmessage=e=>{this.handleProtocolMessage(new Uint8Array(e.data))}})}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(e):N.warn(`Cannot send: WebSocket not connected`)}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.ws&&=(this.ws.close(1e3,`Client closing`),null)}getKeepaliveResponse(){return this.keepaliveResponseMessage||=b(y(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===v.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){N.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}resetKeepaliveTimeout(){this.clearKeepaliveTimeout(),!(this.keepaliveTimeoutMs<=0)&&(this.keepaliveTimeout=setTimeout(()=>{N.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing connection`),this.callbacks.onError(new C(this.keepaliveTimeoutMs)),this.close()},this.keepaliveTimeoutMs))}clearKeepaliveTimeout(){this.keepaliveTimeout&&=(clearTimeout(this.keepaliveTimeout),null)}};const P=k(`WebTransportTransport`);function F(){return typeof WebTransport<`u`}var _e=class{transport=null;stream=null;reader=null;writer=null;keepaliveTimeout=null;readLoopActive=!1;isClosed=!1;framer=new A;keepaliveResponseMessage=null;firstMessageResolver=null;firstMessageRejecter=null;keepaliveTimeoutMs;connectionTimeoutMs;callbacks;sessionId;constructor(e){this.callbacks=e.callbacks,this.sessionId=e.sessionId,this.keepaliveTimeoutMs=e.keepaliveTimeoutMs,this.connectionTimeoutMs=e.connectionTimeoutMs??1e4}get isConnected(){return this.transport!==null&&this.writer!==null}async connect(e,t){if(!F())throw new S(`WebTransport is not supported in this browser`);this.isClosed=!1;let n=Date.now(),r=new Promise((e,t)=>{this.firstMessageResolver=e,this.firstMessageRejecter=t});try{this.transport=new WebTransport(e);let i,a=new Promise((e,t)=>{i=setTimeout(()=>t(new S(`WebTransport connection timeout`)),this.connectionTimeoutMs)});try{await Promise.race([this.transport.ready,a])}catch(e){throw e instanceof S&&P.warn(`WebTransport connection timeout after ${this.connectionTimeoutMs}ms`),e}finally{clearTimeout(i)}this.transport.closed.then(()=>{this.handleClose(`Connection closed`,!0)}).catch(e=>{P.error(`WebTransport connection closed with error:`,e),this.handleClose(e instanceof Error?e.message:`Connection error`,!1)}),this.stream=await this.transport.createBidirectionalStream(),this.reader=this.stream.readable.getReader(),this.writer=this.stream.writable.getWriter(),await this.writer.write(t),this.resetKeepaliveTimeout(),this.startReadLoop();let o=Math.max(this.connectionTimeoutMs-(Date.now()-n),1),s,c=new Promise((e,t)=>{s=setTimeout(()=>t(new S(`WebTransport closed before first server message`)),o)});try{await Promise.race([r,c])}finally{clearTimeout(s)}this.firstMessageResolver=null,this.firstMessageRejecter=null,P.info(`WebTransport connected in ${Date.now()-n}ms`)}catch(e){this.firstMessageResolver=null,this.firstMessageRejecter=null,this.isClosed=!0,this.cleanup();let t=Date.now()-n;throw P.warn(`WebTransport connection failed after ${t}ms: ${e}`),new S(`Failed to connect WebTransport: ${e}`,e instanceof Error?e:void 0)}}send(e){if(!this.writer){P.warn(`Cannot send: WebTransport not connected`);return}this.writer.write(e).catch(e=>{P.error(`Failed to send protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))})}close(){this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup()}async startReadLoop(){if(this.reader){this.readLoopActive=!0;try{for(;this.readLoopActive&&this.reader;){let{value:e,done:t}=await this.reader.read();if(t)break;e&&this.framer.push(e,e=>this.handleProtocolMessage(e))}this.readLoopActive&&this.handleClose(`Stream ended`,!1)}catch(e){this.readLoopActive&&(P.error(`Read loop error:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e))))}}}getKeepaliveResponse(){return this.keepaliveResponseMessage||=b(y(),this.sessionId),this.keepaliveResponseMessage}handleProtocolMessage(e){try{let t=r(e).opcode;if(this.firstMessageResolver&&this.firstMessageResolver(),t===v.KEEPALIVE_REQUEST){this.send(this.getKeepaliveResponse()),this.resetKeepaliveTimeout();return}this.resetKeepaliveTimeout(),this.callbacks.onProtocolMessage(e)}catch(e){P.error(`Failed to process protocol message:`,e),this.callbacks.onError(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){if(!this.isClosed){if(this.isClosed=!0,this.clearKeepaliveTimeout(),this.readLoopActive=!1,this.cleanup(),this.firstMessageRejecter){this.firstMessageRejecter(new w(`WebTransport closed before first server message: ${e}`)),this.firstMessageResolver=null,this.firstMessageRejecter=null;return}this.callbacks.onClose(e,t)}}resetKeepaliveTimeout(){this.clearKeepaliveTimeout(),!(this.keepaliveTimeoutMs<=0)&&(this.keepaliveTimeout=setTimeout(()=>{P.error(`No keepalive received in ${this.keepaliveTimeoutMs}ms, closing connection`),this.callbacks.onError(new C(this.keepaliveTimeoutMs)),this.close()},this.keepaliveTimeoutMs))}clearKeepaliveTimeout(){this.keepaliveTimeout&&=(clearTimeout(this.keepaliveTimeout),null)}cleanup(){if(this.reader&&=(this.reader.releaseLock(),null),this.writer&&=(this.writer.releaseLock(),null),this.stream=null,this.framer.reset(),this.transport){try{this.transport.close()}catch{}this.transport=null}}};const I=k(`Channel`);var ve=class{state=`disconnected`;transport=null;config;entrypoint;constructor(e){this.config=e,this.entrypoint=e.entrypoint}get channelState(){return this.state}get opcodeGroups(){return this.entrypoint.OpcodeGroupsFromServer}get type(){return this.entrypoint.Type}get isConnected(){return this.transport?.isConnected??!1}get httpStreamMode(){return this.transport instanceof M?this.transport.activeMode:null}async connect(){if(this.state!==`disconnected`)throw Error(`Cannot connect: already in state ${this.state}`);this.setState(`connecting`);try{await this.connectTransport(),this.setState(`connected`)}catch(e){throw this.setState(`disconnected`),e}}disconnect(){this.transport&&=(this.transport.close(),null),this.setState(`disconnected`)}triggerReconnect(e){this.transport&&=(this.transport.close(),null),this.config.onClose?.(e,!1)}checkHealth(){this.state===`connected`&&this.transport&&!this.transport.isConnected&&this.handleClose(`Transport dead after tab resume`,!1)}send(e){if(!this.transport?.isConnected){I.warn(`Cannot send: channel not connected`);return}this.transport.send(e)}async connectTransport(){let e=this.entrypoint,t={sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.config.connectionTimeoutMs,httpStreamMode:this.config.httpStreamMode,httpStreamPreferredMode:this.config.httpStreamPreferredMode,callbacks:{onProtocolMessage:e=>this.handleProtocolMessage(e),onClose:(e,t)=>this.handleClose(e,t),onError:e=>this.handleError(e)}};switch(e.Type){case _.WebSocket:case _.WebSocketProxy:this.transport=new ge(t);break;case _.WebTransport:case _.WebTransportProxy:if(!F())throw Error(`WebTransport is not supported in this browser`);this.transport=new _e(t);break;case _.HttpStream:case _.HttpStreamProxy:this.transport=new M(t);break;default:throw Error(`Unsupported entrypoint type: ${_[e.Type]}`)}await this.transport.connect(e.Uri,e.AuthTicket)}handleProtocolMessage(n){try{let r=e(n);if(t(r)===v.CORE_ON_SERVER_STOPPING){I.debug(`Received server stopping message`),this.setState(`stopped`),this.transport?.close();return}this.config.onProtocolMessage?.(r)}catch(e){I.error(`Failed to handle protocol message:`,e),this.config.onError?.(e instanceof Error?e:Error(String(e)))}}handleClose(e,t){this.transport=null,this.config.onClose?.(e,t)}handleError(e){this.config.onError?.(e),e instanceof C&&this.handleClose(`Keepalive timeout`,!1)}setState(e){this.state!==e&&(this.state=e,this.config.onStateChange?.(e))}};const L=k(`ChannelManager`);var ye=class{channels=new Map;activeType=null;state=`idle`;reconnectAttempts=0;shouldReconnect=!0;entrypoints=[];abortController=null;connectionTimeoutMs;stabilityTimer=null;config;constructor(e){this.config=e}get managerState(){return this.state}get activeHttpStreamMode(){for(let e of this.channels.values()){let t=e.httpStreamMode;if(t)return t}return null}get activeEndpointType(){return this.activeType}async connect(e,t){if(this.state!==`idle`&&this.state!==`offline`)throw Error(`Cannot connect: already in state ${this.state}`);if(this.entrypoints=e,this.shouldReconnect=!0,this.reconnectAttempts=0,this.abortController=new AbortController,t?.retry){this.attemptReconnect();return}await this.connectInternal()}disconnect(){this.shouldReconnect=!1,this.abortController?.abort(),this.abortController=null,this.disconnectAll(),this.setState(`idle`)}sendProtocolMessage(e){let t=n(e);for(let[n,r]of this.channels)if(n&t){r.send(e);return}this.state===`connected`&&L.warn(`No channel found for message`)}sendToAll(e){for(let t of this.channels.values())t.send(e)}checkHealth(){if(this.state===`connected`)for(let e of this.channels.values())e.checkHealth()}triggerReconnect(e){if(this.state===`connected`){L.debug(`Forcing reconnect: ${e}`);for(let t of this.channels.values())t.triggerReconnect(e)}}async connectInternal(e=!1){this.setState(`connecting`);let t=this.entrypoints.filter(e=>e.Type!==_.WebRTC),n=this.groupByType(t);if(n.size===0)throw this.setState(`offline`),Error(`No entrypoints available`);let r;if(this.config.orderedEndpointTypes!==void 0){let e=new Set(n.keys());r=this.config.orderedEndpointTypes.filter(t=>e.has(t))}else r=this.config.endpointSelector?this.config.endpointSelector.getOrderedTypes(n):Array.from(n.keys());if(r.length===0)throw this.setState(`offline`),new E(null,null,[...n.keys()].map(e=>_[e]));this.connectionTimeoutMs=r.length>1?5e3:1e4,L.debug(`Endpoint types to try: [${r.map(e=>_[e]).join(`, `)}], transport timeout: ${this.connectionTimeoutMs}ms`);for(let e of r){if(!this.shouldReconnect)return;let t=n.get(e),r=Date.now();L.debug(`Trying ${_[e]} (${t.length} channel(s))`);try{await this.connectAllChannels(t),this.config.endpointSelector?.rememberWorkingType(e),this.config.onRememberWorkingType?.(e),this.activeType=e,L.debug(`Connected via ${_[e]} in ${Date.now()-r}ms`),this.setState(`connected`),this.startStabilityTimer();return}catch(t){L.warn(`Failed to connect using ${_[e]} after ${Date.now()-r}ms: ${t instanceof Error?t.message:t}`);let i=this.channels.size>0;if(this.disconnectAll(),t instanceof w)throw t;if(i&&this.config.onRefreshEntrypoints)try{L.info(`Partial connection detected, refreshing entrypoints`);let e=await this.config.onRefreshEntrypoints();this.entrypoints=e.entrypoints,this.config.sessionId=e.sessionId;let t=e.entrypoints.filter(e=>e.Type!==_.WebRTC),r=this.groupByType(t);for(let[e,t]of r)n.set(e,t)}catch(e){L.warn(`Failed to refresh entrypoints: ${e}`)}}}throw e||this.setState(`offline`),Error(`Failed to connect using any endpoint type`)}async connectAllChannels(e){if(e.length===0)throw Error(`No entrypoints to connect`);let t=(await Promise.allSettled(e.map(e=>this.connectChannel(e)))).filter(e=>e.status===`rejected`);if(t.length>0){let e=t.map(e=>e.reason instanceof Error?e.reason.message:String(e.reason));throw t.some(e=>e.reason instanceof w)?new w(e.join(`, `)):Error(e.join(`, `))}}async connectChannel(e){let t=new ve({entrypoint:e,sessionId:this.config.sessionId,keepaliveTimeoutMs:this.config.keepaliveTimeoutMs,connectionTimeoutMs:this.connectionTimeoutMs,httpStreamMode:this.config.httpStreamMode,httpStreamPreferredMode:this.config.httpStreamPreferredMode,onProtocolMessage:e=>{this.config.onProtocolMessage?.(e)},onStateChange:t=>{this.handleChannelStateChange(e.OpcodeGroupsFromServer,t)},onClose:(t,n)=>{this.handleChannelClose(e.OpcodeGroupsFromServer,t,n)},onError:e=>{this.config.onError?.(e)}});await t.connect(),this.channels.set(e.OpcodeGroupsFromServer,t)}groupByType(e){let t=new Map;for(let n of e){let e=t.get(n.Type)??[];e.push(n),t.set(n.Type,e)}return t}handleChannelStateChange(e,t){t===`stopped`&&(this.shouldReconnect=!1,this.disconnectAll(),this.setState(`stopped`))}handleChannelClose(e,t,n){this.state!==`idle`&&this.state!==`stopped`&&this.state!==`offline`&&this.channels.has(e)&&this.state===`connected`&&(L.warn(`Channel closed unexpectedly, attempting reconnect`),this.disconnectAll(),this.attemptReconnect())}async attemptReconnect(){if(this.shouldReconnect){if(!le()){L.warn(`Retry disabled via ikon-retry=false, skipping reconnect`),this.setState(`offline`),this.config.onError?.(new T(0));return}if(this.reconnectAttempts>=this.config.maxReconnectAttempts){L.warn(`Max reconnect attempts (${this.config.maxReconnectAttempts}) reached`),this.setState(`offline`),this.config.onError?.(new T(this.config.maxReconnectAttempts));return}if(this.setState(`reconnecting`),this.reconnectAttempts++,this.reconnectAttempts>1){L.info(`Reconnecting in ${this.config.reconnectBackoffMs}ms (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);try{await ne(this.config.reconnectBackoffMs,this.abortController?.signal)}catch{return}}else L.info(`Reconnecting immediately (attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);if(this.shouldReconnect)try{await this.connectInternal(!0)}catch(e){if(e instanceof w){L.warn(`Auth rejected during reconnect, stopping retries and signaling full re-auth`),this.config.onError?.(e),this.setState(`offline`);return}if(e instanceof E){L.warn(`${e.message} Not retrying`),this.config.onError?.(e),this.setState(`offline`);return}await this.attemptReconnect()}}}disconnectAll(){for(let e of this.channels.values())e.disconnect();this.channels.clear(),this.activeType=null}setState(e){this.state!==e&&(this.state===`connected`&&e!==`connected`&&this.clearStabilityTimer(),this.state=e,this.config.onStateChange?.(e))}startStabilityTimer(){this.clearStabilityTimer(),this.stabilityTimer=setTimeout(()=>{this.stabilityTimer=null,this.state===`connected`&&(this.reconnectAttempts=0)},5e3)}clearStabilityTimer(){this.stabilityTimer&&=(clearTimeout(this.stabilityTimer),null)}};const R=k(`ProtocolWorker`),z=(e,t)=>{self.postMessage(e,t??[])};let B=null,V=null,H=null,U,W=null;const G=[],K=[],q=new Map,J=[],Y=[],X=new Map,Z=[];function Q(){try{B?.disconnect()}catch(e){R.warn(`Failed to disconnect channel manager: ${e}`)}B=null;for(let e=0;e<K.length;e++)try{K[e].port.close()}catch{}G.length=0,K.length=0,q.clear();for(let e=0;e<Y.length;e++)try{Y[e].port.close()}catch{}J.length=0,Y.length=0,X.clear()}function $(e){let t=e instanceof Error?e:Error(String(e));z({type:`error`,error:{name:t.name,message:t.message,stack:t.stack}})}function be(){let e=0;for(let t=0;t<K.length;t++)e|=K[t].opcodeGroupsMask;return e}function xe(e){if(U===void 0)return!0;let t=n(e);return(t&U)!==0||(t&be())!==0}function Se(e){Z.length=0;for(let t=0;t<K.length;t++){let n=K[t];(n.opcodeGroupsMask&e)!==0&&Z.push(n.port)}return Z}function Ce(e,t){return(n(e)&t)!==0}function we(t,n){if(!B||!n||typeof n!=`object`)return;let r=n;if(!(r.type!==`send`||!(r.message instanceof ArrayBuffer)))try{let n=e(new Uint8Array(r.message));if(!Ce(n,t))return;B.sendProtocolMessage(n),W&&W.postMessage({direction:`sent`,message:Array.from(n)})}catch(e){$(e)}}async function Te(e){Q(),B=new ye({sessionId:e.sessionId,keepaliveTimeoutMs:e.keepaliveTimeoutMs,reconnectBackoffMs:e.reconnectBackoffMs,maxReconnectAttempts:e.maxReconnectAttempts,orderedEndpointTypes:e.orderedEndpointTypes,httpStreamMode:e.httpStreamMode,httpStreamPreferredMode:e.httpStreamPreferredMode,webRtcEnabled:e.webRtcEnabled,onStateChange:e=>{z({type:`state`,state:e,activeType:B?.activeEndpointType??void 0,httpStreamMode:B?.activeHttpStreamMode??void 0})},onRememberWorkingType:()=>{z({type:`state`,state:B?.managerState??`idle`,activeType:B?.activeEndpointType??void 0,httpStreamMode:B?.activeHttpStreamMode??void 0})},onError:e=>{$(e)},onRefreshEntrypoints:()=>new Promise((e,t)=>{V=e,H=t,z({type:`refreshEntrypoints`})}),onProtocolMessage:e=>{W&&(W.postMessage({direction:`received`,message:Array.from(e)}),t(e)===v.ANALYTICS_LOGS&&W.postMessage({type:`serverLogs`,message:Array.from(e)}));let i=n(e),a=xe(e),o=Se(i);if(!(!a&&o.length===0))try{let t=r(e),n=e.buffer instanceof ArrayBuffer&&e.byteOffset===0&&e.byteLength===e.buffer.byteLength,i=o.length>0;if(i&&!a&&o.length===1&&n){let n=e.buffer;o[0].postMessage({type:`protocol`,message:n,headers:t},[n]);return}if(!i&&a&&n){let n=e.buffer;z({type:`protocol`,message:n,headers:t},[n]);return}if(i&&n){let n=[];for(let t=1;t<o.length;t++)n.push(e.slice().buffer);let r=a?e.slice().buffer:null,i=e.buffer;o[0].postMessage({type:`protocol`,message:i,headers:t},[i]);for(let e=1;e<o.length;e++)o[e].postMessage({type:`protocol`,message:n[e-1],headers:t},[n[e-1]]);r&&z({type:`protocol`,message:r,headers:t},[r]);return}if(i)for(let n of o){let r=e.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:t},[r])}if(a){let n=e.slice().buffer;z({type:`protocol`,message:n,headers:t},[n])}}catch(e){$(e)}}}),await B.connect(e.entrypoints,{retry:e.retry})}self.addEventListener(`message`,t=>{let i=t.data;if(i.type===`connect`){Te(i).catch(e=>{R.error(`Failed to connect: ${e}`),$(e),Q()});return}if(i.type===`disconnect`){Q(),z({type:`state`,state:`idle`});return}if(i.type===`send`){if(!B)return;try{let t=e(new Uint8Array(i.message));B.sendProtocolMessage(t),W&&W.postMessage({direction:`sent`,message:Array.from(t)})}catch(e){$(e)}return}if(i.type===`setInterest`){U=i.opcodeGroupsMask;return}if(i.type===`enableDevtools`){i.enabled&&!W?W=new BroadcastChannel(`ikon:devtools`):!i.enabled&&W&&(W.close(),W=null);return}if(i.type===`setLogLevel`){ie(i.level);return}if(i.type===`checkHealth`){B?.checkHealth();return}if(i.type===`triggerReconnect`){B?.triggerReconnect(i.reason);return}if(i.type===`refreshedEntrypoints`){V&&(V({entrypoints:i.entrypoints,sessionId:i.sessionId}),V=null,H=null);return}if(i.type===`refreshEntrypointsFailed`){H&&=(H(Error(`Failed to refresh entrypoints`)),V=null,null);return}if(i.type===`forwardToPorts`){try{let t=e(new Uint8Array(i.message)),a=Se(n(t));if(a.length>0){let e=r(t);for(let n of a){let r=t.slice().buffer;n.postMessage({type:`protocol`,message:r,headers:e},[r])}}}catch(e){$(e)}return}if(i.type===`attachPort`){try{i.port.start?.()}catch{}let e=G.length;G.push(i.portId),K.push({port:i.port,opcodeGroupsMask:i.opcodeGroupsMask}),q.set(i.portId,e);return}if(i.type===`detachPort`){let e=q.get(i.portId);if(e!==void 0){let t=K[e];try{t.port.close()}catch{}let n=G.length-1;if(e!==n){let t=G[n];G[e]=t,K[e]=K[n],q.set(t,e)}G.length--,K.length--,q.delete(i.portId)}return}if(i.type===`attachSendPort`){let e=X.get(i.portId);if(e!==void 0){let t=Y[e];try{t.port.close()}catch{}let n=J.length-1;if(e!==n){let t=J[n];J[e]=t,Y[e]=Y[n],X.set(t,e)}J.length--,Y.length--,X.delete(i.portId)}let t={port:i.port,opcodeGroupsMask:i.opcodeGroupsMask},n=J.length;J.push(i.portId),Y.push(t),X.set(i.portId,n);try{t.port.start?.()}catch{}t.port.addEventListener(`message`,e=>{we(t.opcodeGroupsMask,e.data)});return}if(i.type===`detachSendPort`){let e=X.get(i.portId);if(e!==void 0){let t=Y[e];try{t.port.close()}catch{}let n=J.length-1;if(e!==n){let t=J[n];J[e]=t,Y[e]=Y[n],X.set(t,e)}J.length--,Y.length--,X.delete(i.portId)}return}});