@dxos/shell 0.6.3-staging.75e3813 → 0.6.3-staging.9c1c979

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.
@@ -848,7 +848,7 @@ button {
848
848
  *
849
849
  * @author Feross Aboukhadijeh <https://feross.org>
850
850
  * @license MIT
851
- */(function($){const I=base64Js,U=ieee754,q=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;$.Buffer=J,$.SlowBuffer=se,$.INSPECT_MAX_BYTES=50;const G=2147483647;$.kMaxLength=G,J.TYPED_ARRAY_SUPPORT=K(),!J.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function K(){try{const le=new Uint8Array(1),re={foo:function(){return 42}};return Object.setPrototypeOf(re,Uint8Array.prototype),Object.setPrototypeOf(le,re),le.foo()===42}catch{return!1}}Object.defineProperty(J.prototype,"parent",{enumerable:!0,get:function(){if(J.isBuffer(this))return this.buffer}}),Object.defineProperty(J.prototype,"offset",{enumerable:!0,get:function(){if(J.isBuffer(this))return this.byteOffset}});function Y(le){if(le>G)throw new RangeError('The value "'+le+'" is invalid for option "size"');const re=new Uint8Array(le);return Object.setPrototypeOf(re,J.prototype),re}function J(le,re,ae){if(typeof le=="number"){if(typeof re=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ee(le)}return X(le,re,ae)}J.poolSize=8192;function X(le,re,ae){if(typeof le=="string")return te(le,re);if(ArrayBuffer.isView(le))return ie(le);if(le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof le);if(At(le,ArrayBuffer)||le&&At(le.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(At(le,SharedArrayBuffer)||le&&At(le.buffer,SharedArrayBuffer)))return oe(le,re,ae);if(typeof le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const pe=le.valueOf&&le.valueOf();if(pe!=null&&pe!==le)return J.from(pe,re,ae);const we=ce(le);if(we)return we;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof le[Symbol.toPrimitive]=="function")return J.from(le[Symbol.toPrimitive]("string"),re,ae);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof le)}J.from=function(le,re,ae){return X(le,re,ae)},Object.setPrototypeOf(J.prototype,Uint8Array.prototype),Object.setPrototypeOf(J,Uint8Array);function Z(le){if(typeof le!="number")throw new TypeError('"size" argument must be of type number');if(le<0)throw new RangeError('The value "'+le+'" is invalid for option "size"')}function Q(le,re,ae){return Z(le),le<=0?Y(le):re!==void 0?typeof ae=="string"?Y(le).fill(re,ae):Y(le).fill(re):Y(le)}J.alloc=function(le,re,ae){return Q(le,re,ae)};function ee(le){return Z(le),Y(le<0?0:fe(le)|0)}J.allocUnsafe=function(le){return ee(le)},J.allocUnsafeSlow=function(le){return ee(le)};function te(le,re){if((typeof re!="string"||re==="")&&(re="utf8"),!J.isEncoding(re))throw new TypeError("Unknown encoding: "+re);const ae=de(le,re)|0;let pe=Y(ae);const we=pe.write(le,re);return we!==ae&&(pe=pe.slice(0,we)),pe}function ne(le){const re=le.length<0?0:fe(le.length)|0,ae=Y(re);for(let pe=0;pe<re;pe+=1)ae[pe]=le[pe]&255;return ae}function ie(le){if(At(le,Uint8Array)){const re=new Uint8Array(le);return oe(re.buffer,re.byteOffset,re.byteLength)}return ne(le)}function oe(le,re,ae){if(re<0||le.byteLength<re)throw new RangeError('"offset" is outside of buffer bounds');if(le.byteLength<re+(ae||0))throw new RangeError('"length" is outside of buffer bounds');let pe;return re===void 0&&ae===void 0?pe=new Uint8Array(le):ae===void 0?pe=new Uint8Array(le,re):pe=new Uint8Array(le,re,ae),Object.setPrototypeOf(pe,J.prototype),pe}function ce(le){if(J.isBuffer(le)){const re=fe(le.length)|0,ae=Y(re);return ae.length===0||le.copy(ae,0,0,re),ae}if(le.length!==void 0)return typeof le.length!="number"||zt(le.length)?Y(0):ne(le);if(le.type==="Buffer"&&Array.isArray(le.data))return ne(le.data)}function fe(le){if(le>=G)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+G.toString(16)+" bytes");return le|0}function se(le){return+le!=le&&(le=0),J.alloc(+le)}J.isBuffer=function(re){return re!=null&&re._isBuffer===!0&&re!==J.prototype},J.compare=function(re,ae){if(At(re,Uint8Array)&&(re=J.from(re,re.offset,re.byteLength)),At(ae,Uint8Array)&&(ae=J.from(ae,ae.offset,ae.byteLength)),!J.isBuffer(re)||!J.isBuffer(ae))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(re===ae)return 0;let pe=re.length,we=ae.length;for(let Ee=0,De=Math.min(pe,we);Ee<De;++Ee)if(re[Ee]!==ae[Ee]){pe=re[Ee],we=ae[Ee];break}return pe<we?-1:we<pe?1:0},J.isEncoding=function(re){switch(String(re).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},J.concat=function(re,ae){if(!Array.isArray(re))throw new TypeError('"list" argument must be an Array of Buffers');if(re.length===0)return J.alloc(0);let pe;if(ae===void 0)for(ae=0,pe=0;pe<re.length;++pe)ae+=re[pe].length;const we=J.allocUnsafe(ae);let Ee=0;for(pe=0;pe<re.length;++pe){let De=re[pe];if(At(De,Uint8Array))Ee+De.length>we.length?(J.isBuffer(De)||(De=J.from(De)),De.copy(we,Ee)):Uint8Array.prototype.set.call(we,De,Ee);else if(J.isBuffer(De))De.copy(we,Ee);else throw new TypeError('"list" argument must be an Array of Buffers');Ee+=De.length}return we};function de(le,re){if(J.isBuffer(le))return le.length;if(ArrayBuffer.isView(le)||At(le,ArrayBuffer))return le.byteLength;if(typeof le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof le);const ae=le.length,pe=arguments.length>2&&arguments[2]===!0;if(!pe&&ae===0)return 0;let we=!1;for(;;)switch(re){case"ascii":case"latin1":case"binary":return ae;case"utf8":case"utf-8":return $t(le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ae*2;case"hex":return ae>>>1;case"base64":return jt(le).length;default:if(we)return pe?-1:$t(le).length;re=(""+re).toLowerCase(),we=!0}}J.byteLength=de;function ue(le,re,ae){let pe=!1;if((re===void 0||re<0)&&(re=0),re>this.length||((ae===void 0||ae>this.length)&&(ae=this.length),ae<=0)||(ae>>>=0,re>>>=0,ae<=re))return"";for(le||(le="utf8");;)switch(le){case"hex":return it(this,re,ae);case"utf8":case"utf-8":return Me(this,re,ae);case"ascii":return ot(this,re,ae);case"latin1":case"binary":return ft(this,re,ae);case"base64":return Be(this,re,ae);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return dt(this,re,ae);default:if(pe)throw new TypeError("Unknown encoding: "+le);le=(le+"").toLowerCase(),pe=!0}}J.prototype._isBuffer=!0;function he(le,re,ae){const pe=le[re];le[re]=le[ae],le[ae]=pe}J.prototype.swap16=function(){const re=this.length;if(re%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let ae=0;ae<re;ae+=2)he(this,ae,ae+1);return this},J.prototype.swap32=function(){const re=this.length;if(re%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let ae=0;ae<re;ae+=4)he(this,ae,ae+3),he(this,ae+1,ae+2);return this},J.prototype.swap64=function(){const re=this.length;if(re%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let ae=0;ae<re;ae+=8)he(this,ae,ae+7),he(this,ae+1,ae+6),he(this,ae+2,ae+5),he(this,ae+3,ae+4);return this},J.prototype.toString=function(){const re=this.length;return re===0?"":arguments.length===0?Me(this,0,re):ue.apply(this,arguments)},J.prototype.toLocaleString=J.prototype.toString,J.prototype.equals=function(re){if(!J.isBuffer(re))throw new TypeError("Argument must be a Buffer");return this===re?!0:J.compare(this,re)===0},J.prototype.inspect=function(){let re="";const ae=$.INSPECT_MAX_BYTES;return re=this.toString("hex",0,ae).replace(/(.{2})/g,"$1 ").trim(),this.length>ae&&(re+=" ... "),"<Buffer "+re+">"},q&&(J.prototype[q]=J.prototype.inspect),J.prototype.compare=function(re,ae,pe,we,Ee){if(At(re,Uint8Array)&&(re=J.from(re,re.offset,re.byteLength)),!J.isBuffer(re))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof re);if(ae===void 0&&(ae=0),pe===void 0&&(pe=re?re.length:0),we===void 0&&(we=0),Ee===void 0&&(Ee=this.length),ae<0||pe>re.length||we<0||Ee>this.length)throw new RangeError("out of range index");if(we>=Ee&&ae>=pe)return 0;if(we>=Ee)return-1;if(ae>=pe)return 1;if(ae>>>=0,pe>>>=0,we>>>=0,Ee>>>=0,this===re)return 0;let De=Ee-we,bt=pe-ae;const Mt=Math.min(De,bt),Rt=this.slice(we,Ee),Ot=re.slice(ae,pe);for(let Tt=0;Tt<Mt;++Tt)if(Rt[Tt]!==Ot[Tt]){De=Rt[Tt],bt=Ot[Tt];break}return De<bt?-1:bt<De?1:0};function ve(le,re,ae,pe,we){if(le.length===0)return-1;if(typeof ae=="string"?(pe=ae,ae=0):ae>2147483647?ae=2147483647:ae<-2147483648&&(ae=-2147483648),ae=+ae,zt(ae)&&(ae=we?0:le.length-1),ae<0&&(ae=le.length+ae),ae>=le.length){if(we)return-1;ae=le.length-1}else if(ae<0)if(we)ae=0;else return-1;if(typeof re=="string"&&(re=J.from(re,pe)),J.isBuffer(re))return re.length===0?-1:me(le,re,ae,pe,we);if(typeof re=="number")return re=re&255,typeof Uint8Array.prototype.indexOf=="function"?we?Uint8Array.prototype.indexOf.call(le,re,ae):Uint8Array.prototype.lastIndexOf.call(le,re,ae):me(le,[re],ae,pe,we);throw new TypeError("val must be string, number or Buffer")}function me(le,re,ae,pe,we){let Ee=1,De=le.length,bt=re.length;if(pe!==void 0&&(pe=String(pe).toLowerCase(),pe==="ucs2"||pe==="ucs-2"||pe==="utf16le"||pe==="utf-16le")){if(le.length<2||re.length<2)return-1;Ee=2,De/=2,bt/=2,ae/=2}function Mt(Ot,Tt){return Ee===1?Ot[Tt]:Ot.readUInt16BE(Tt*Ee)}let Rt;if(we){let Ot=-1;for(Rt=ae;Rt<De;Rt++)if(Mt(le,Rt)===Mt(re,Ot===-1?0:Rt-Ot)){if(Ot===-1&&(Ot=Rt),Rt-Ot+1===bt)return Ot*Ee}else Ot!==-1&&(Rt-=Rt-Ot),Ot=-1}else for(ae+bt>De&&(ae=De-bt),Rt=ae;Rt>=0;Rt--){let Ot=!0;for(let Tt=0;Tt<bt;Tt++)if(Mt(le,Rt+Tt)!==Mt(re,Tt)){Ot=!1;break}if(Ot)return Rt}return-1}J.prototype.includes=function(re,ae,pe){return this.indexOf(re,ae,pe)!==-1},J.prototype.indexOf=function(re,ae,pe){return ve(this,re,ae,pe,!0)},J.prototype.lastIndexOf=function(re,ae,pe){return ve(this,re,ae,pe,!1)};function be(le,re,ae,pe){ae=Number(ae)||0;const we=le.length-ae;pe?(pe=Number(pe),pe>we&&(pe=we)):pe=we;const Ee=re.length;pe>Ee/2&&(pe=Ee/2);let De;for(De=0;De<pe;++De){const bt=parseInt(re.substr(De*2,2),16);if(zt(bt))return De;le[ae+De]=bt}return De}function _e(le,re,ae,pe){return Gt($t(re,le.length-ae),le,ae,pe)}function Ce(le,re,ae,pe){return Gt(Et(re),le,ae,pe)}function xe(le,re,ae,pe){return Gt(jt(re),le,ae,pe)}function ke(le,re,ae,pe){return Gt(rt(re,le.length-ae),le,ae,pe)}J.prototype.write=function(re,ae,pe,we){if(ae===void 0)we="utf8",pe=this.length,ae=0;else if(pe===void 0&&typeof ae=="string")we=ae,pe=this.length,ae=0;else if(isFinite(ae))ae=ae>>>0,isFinite(pe)?(pe=pe>>>0,we===void 0&&(we="utf8")):(we=pe,pe=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const Ee=this.length-ae;if((pe===void 0||pe>Ee)&&(pe=Ee),re.length>0&&(pe<0||ae<0)||ae>this.length)throw new RangeError("Attempt to write outside buffer bounds");we||(we="utf8");let De=!1;for(;;)switch(we){case"hex":return be(this,re,ae,pe);case"utf8":case"utf-8":return _e(this,re,ae,pe);case"ascii":case"latin1":case"binary":return Ce(this,re,ae,pe);case"base64":return xe(this,re,ae,pe);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ke(this,re,ae,pe);default:if(De)throw new TypeError("Unknown encoding: "+we);we=(""+we).toLowerCase(),De=!0}},J.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Be(le,re,ae){return re===0&&ae===le.length?I.fromByteArray(le):I.fromByteArray(le.slice(re,ae))}function Me(le,re,ae){ae=Math.min(le.length,ae);const pe=[];let we=re;for(;we<ae;){const Ee=le[we];let De=null,bt=Ee>239?4:Ee>223?3:Ee>191?2:1;if(we+bt<=ae){let Mt,Rt,Ot,Tt;switch(bt){case 1:Ee<128&&(De=Ee);break;case 2:Mt=le[we+1],(Mt&192)===128&&(Tt=(Ee&31)<<6|Mt&63,Tt>127&&(De=Tt));break;case 3:Mt=le[we+1],Rt=le[we+2],(Mt&192)===128&&(Rt&192)===128&&(Tt=(Ee&15)<<12|(Mt&63)<<6|Rt&63,Tt>2047&&(Tt<55296||Tt>57343)&&(De=Tt));break;case 4:Mt=le[we+1],Rt=le[we+2],Ot=le[we+3],(Mt&192)===128&&(Rt&192)===128&&(Ot&192)===128&&(Tt=(Ee&15)<<18|(Mt&63)<<12|(Rt&63)<<6|Ot&63,Tt>65535&&Tt<1114112&&(De=Tt))}}De===null?(De=65533,bt=1):De>65535&&(De-=65536,pe.push(De>>>10&1023|55296),De=56320|De&1023),pe.push(De),we+=bt}return nt(pe)}const Ve=4096;function nt(le){const re=le.length;if(re<=Ve)return String.fromCharCode.apply(String,le);let ae="",pe=0;for(;pe<re;)ae+=String.fromCharCode.apply(String,le.slice(pe,pe+=Ve));return ae}function ot(le,re,ae){let pe="";ae=Math.min(le.length,ae);for(let we=re;we<ae;++we)pe+=String.fromCharCode(le[we]&127);return pe}function ft(le,re,ae){let pe="";ae=Math.min(le.length,ae);for(let we=re;we<ae;++we)pe+=String.fromCharCode(le[we]);return pe}function it(le,re,ae){const pe=le.length;(!re||re<0)&&(re=0),(!ae||ae<0||ae>pe)&&(ae=pe);let we="";for(let Ee=re;Ee<ae;++Ee)we+=an[le[Ee]];return we}function dt(le,re,ae){const pe=le.slice(re,ae);let we="";for(let Ee=0;Ee<pe.length-1;Ee+=2)we+=String.fromCharCode(pe[Ee]+pe[Ee+1]*256);return we}J.prototype.slice=function(re,ae){const pe=this.length;re=~~re,ae=ae===void 0?pe:~~ae,re<0?(re+=pe,re<0&&(re=0)):re>pe&&(re=pe),ae<0?(ae+=pe,ae<0&&(ae=0)):ae>pe&&(ae=pe),ae<re&&(ae=re);const we=this.subarray(re,ae);return Object.setPrototypeOf(we,J.prototype),we};function Qe(le,re,ae){if(le%1!==0||le<0)throw new RangeError("offset is not uint");if(le+re>ae)throw new RangeError("Trying to access beyond buffer length")}J.prototype.readUintLE=J.prototype.readUIntLE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re],Ee=1,De=0;for(;++De<ae&&(Ee*=256);)we+=this[re+De]*Ee;return we},J.prototype.readUintBE=J.prototype.readUIntBE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re+--ae],Ee=1;for(;ae>0&&(Ee*=256);)we+=this[re+--ae]*Ee;return we},J.prototype.readUint8=J.prototype.readUInt8=function(re,ae){return re=re>>>0,ae||Qe(re,1,this.length),this[re]},J.prototype.readUint16LE=J.prototype.readUInt16LE=function(re,ae){return re=re>>>0,ae||Qe(re,2,this.length),this[re]|this[re+1]<<8},J.prototype.readUint16BE=J.prototype.readUInt16BE=function(re,ae){return re=re>>>0,ae||Qe(re,2,this.length),this[re]<<8|this[re+1]},J.prototype.readUint32LE=J.prototype.readUInt32LE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),(this[re]|this[re+1]<<8|this[re+2]<<16)+this[re+3]*16777216},J.prototype.readUint32BE=J.prototype.readUInt32BE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]*16777216+(this[re+1]<<16|this[re+2]<<8|this[re+3])},J.prototype.readBigUInt64LE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=ae+this[++re]*2**8+this[++re]*2**16+this[++re]*2**24,Ee=this[++re]+this[++re]*2**8+this[++re]*2**16+pe*2**24;return BigInt(we)+(BigInt(Ee)<<BigInt(32))}),J.prototype.readBigUInt64BE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=ae*2**24+this[++re]*2**16+this[++re]*2**8+this[++re],Ee=this[++re]*2**24+this[++re]*2**16+this[++re]*2**8+pe;return(BigInt(we)<<BigInt(32))+BigInt(Ee)}),J.prototype.readIntLE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re],Ee=1,De=0;for(;++De<ae&&(Ee*=256);)we+=this[re+De]*Ee;return Ee*=128,we>=Ee&&(we-=Math.pow(2,8*ae)),we},J.prototype.readIntBE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=ae,Ee=1,De=this[re+--we];for(;we>0&&(Ee*=256);)De+=this[re+--we]*Ee;return Ee*=128,De>=Ee&&(De-=Math.pow(2,8*ae)),De},J.prototype.readInt8=function(re,ae){return re=re>>>0,ae||Qe(re,1,this.length),this[re]&128?(255-this[re]+1)*-1:this[re]},J.prototype.readInt16LE=function(re,ae){re=re>>>0,ae||Qe(re,2,this.length);const pe=this[re]|this[re+1]<<8;return pe&32768?pe|4294901760:pe},J.prototype.readInt16BE=function(re,ae){re=re>>>0,ae||Qe(re,2,this.length);const pe=this[re+1]|this[re]<<8;return pe&32768?pe|4294901760:pe},J.prototype.readInt32LE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]|this[re+1]<<8|this[re+2]<<16|this[re+3]<<24},J.prototype.readInt32BE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]<<24|this[re+1]<<16|this[re+2]<<8|this[re+3]},J.prototype.readBigInt64LE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=this[re+4]+this[re+5]*2**8+this[re+6]*2**16+(pe<<24);return(BigInt(we)<<BigInt(32))+BigInt(ae+this[++re]*2**8+this[++re]*2**16+this[++re]*2**24)}),J.prototype.readBigInt64BE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=(ae<<24)+this[++re]*2**16+this[++re]*2**8+this[++re];return(BigInt(we)<<BigInt(32))+BigInt(this[++re]*2**24+this[++re]*2**16+this[++re]*2**8+pe)}),J.prototype.readFloatLE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),U.read(this,re,!0,23,4)},J.prototype.readFloatBE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),U.read(this,re,!1,23,4)},J.prototype.readDoubleLE=function(re,ae){return re=re>>>0,ae||Qe(re,8,this.length),U.read(this,re,!0,52,8)},J.prototype.readDoubleBE=function(re,ae){return re=re>>>0,ae||Qe(re,8,this.length),U.read(this,re,!1,52,8)};function Ue(le,re,ae,pe,we,Ee){if(!J.isBuffer(le))throw new TypeError('"buffer" argument must be a Buffer instance');if(re>we||re<Ee)throw new RangeError('"value" argument is out of bounds');if(ae+pe>le.length)throw new RangeError("Index out of range")}J.prototype.writeUintLE=J.prototype.writeUIntLE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,pe=pe>>>0,!we){const bt=Math.pow(2,8*pe)-1;Ue(this,re,ae,pe,bt,0)}let Ee=1,De=0;for(this[ae]=re&255;++De<pe&&(Ee*=256);)this[ae+De]=re/Ee&255;return ae+pe},J.prototype.writeUintBE=J.prototype.writeUIntBE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,pe=pe>>>0,!we){const bt=Math.pow(2,8*pe)-1;Ue(this,re,ae,pe,bt,0)}let Ee=pe-1,De=1;for(this[ae+Ee]=re&255;--Ee>=0&&(De*=256);)this[ae+Ee]=re/De&255;return ae+pe},J.prototype.writeUint8=J.prototype.writeUInt8=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,1,255,0),this[ae]=re&255,ae+1},J.prototype.writeUint16LE=J.prototype.writeUInt16LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,65535,0),this[ae]=re&255,this[ae+1]=re>>>8,ae+2},J.prototype.writeUint16BE=J.prototype.writeUInt16BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,65535,0),this[ae]=re>>>8,this[ae+1]=re&255,ae+2},J.prototype.writeUint32LE=J.prototype.writeUInt32LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,4294967295,0),this[ae+3]=re>>>24,this[ae+2]=re>>>16,this[ae+1]=re>>>8,this[ae]=re&255,ae+4},J.prototype.writeUint32BE=J.prototype.writeUInt32BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,4294967295,0),this[ae]=re>>>24,this[ae+1]=re>>>16,this[ae+2]=re>>>8,this[ae+3]=re&255,ae+4};function We(le,re,ae,pe,we){ye(re,pe,we,le,ae,7);let Ee=Number(re&BigInt(4294967295));le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee;let De=Number(re>>BigInt(32)&BigInt(4294967295));return le[ae++]=De,De=De>>8,le[ae++]=De,De=De>>8,le[ae++]=De,De=De>>8,le[ae++]=De,ae}function tt(le,re,ae,pe,we){ye(re,pe,we,le,ae,7);let Ee=Number(re&BigInt(4294967295));le[ae+7]=Ee,Ee=Ee>>8,le[ae+6]=Ee,Ee=Ee>>8,le[ae+5]=Ee,Ee=Ee>>8,le[ae+4]=Ee;let De=Number(re>>BigInt(32)&BigInt(4294967295));return le[ae+3]=De,De=De>>8,le[ae+2]=De,De=De>>8,le[ae+1]=De,De=De>>8,le[ae]=De,ae+8}J.prototype.writeBigUInt64LE=St(function(re,ae=0){return We(this,re,ae,BigInt(0),BigInt("0xffffffffffffffff"))}),J.prototype.writeBigUInt64BE=St(function(re,ae=0){return tt(this,re,ae,BigInt(0),BigInt("0xffffffffffffffff"))}),J.prototype.writeIntLE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,!we){const Mt=Math.pow(2,8*pe-1);Ue(this,re,ae,pe,Mt-1,-Mt)}let Ee=0,De=1,bt=0;for(this[ae]=re&255;++Ee<pe&&(De*=256);)re<0&&bt===0&&this[ae+Ee-1]!==0&&(bt=1),this[ae+Ee]=(re/De>>0)-bt&255;return ae+pe},J.prototype.writeIntBE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,!we){const Mt=Math.pow(2,8*pe-1);Ue(this,re,ae,pe,Mt-1,-Mt)}let Ee=pe-1,De=1,bt=0;for(this[ae+Ee]=re&255;--Ee>=0&&(De*=256);)re<0&&bt===0&&this[ae+Ee+1]!==0&&(bt=1),this[ae+Ee]=(re/De>>0)-bt&255;return ae+pe},J.prototype.writeInt8=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,1,127,-128),re<0&&(re=255+re+1),this[ae]=re&255,ae+1},J.prototype.writeInt16LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,32767,-32768),this[ae]=re&255,this[ae+1]=re>>>8,ae+2},J.prototype.writeInt16BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,32767,-32768),this[ae]=re>>>8,this[ae+1]=re&255,ae+2},J.prototype.writeInt32LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,2147483647,-2147483648),this[ae]=re&255,this[ae+1]=re>>>8,this[ae+2]=re>>>16,this[ae+3]=re>>>24,ae+4},J.prototype.writeInt32BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,2147483647,-2147483648),re<0&&(re=4294967295+re+1),this[ae]=re>>>24,this[ae+1]=re>>>16,this[ae+2]=re>>>8,this[ae+3]=re&255,ae+4},J.prototype.writeBigInt64LE=St(function(re,ae=0){return We(this,re,ae,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),J.prototype.writeBigInt64BE=St(function(re,ae=0){return tt(this,re,ae,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function vt(le,re,ae,pe,we,Ee){if(ae+pe>le.length)throw new RangeError("Index out of range");if(ae<0)throw new RangeError("Index out of range")}function je(le,re,ae,pe,we){return re=+re,ae=ae>>>0,we||vt(le,re,ae,4),U.write(le,re,ae,pe,23,4),ae+4}J.prototype.writeFloatLE=function(re,ae,pe){return je(this,re,ae,!0,pe)},J.prototype.writeFloatBE=function(re,ae,pe){return je(this,re,ae,!1,pe)};function ze(le,re,ae,pe,we){return re=+re,ae=ae>>>0,we||vt(le,re,ae,8),U.write(le,re,ae,pe,52,8),ae+8}J.prototype.writeDoubleLE=function(re,ae,pe){return ze(this,re,ae,!0,pe)},J.prototype.writeDoubleBE=function(re,ae,pe){return ze(this,re,ae,!1,pe)},J.prototype.copy=function(re,ae,pe,we){if(!J.isBuffer(re))throw new TypeError("argument should be a Buffer");if(pe||(pe=0),!we&&we!==0&&(we=this.length),ae>=re.length&&(ae=re.length),ae||(ae=0),we>0&&we<pe&&(we=pe),we===pe||re.length===0||this.length===0)return 0;if(ae<0)throw new RangeError("targetStart out of bounds");if(pe<0||pe>=this.length)throw new RangeError("Index out of range");if(we<0)throw new RangeError("sourceEnd out of bounds");we>this.length&&(we=this.length),re.length-ae<we-pe&&(we=re.length-ae+pe);const Ee=we-pe;return this===re&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(ae,pe,we):Uint8Array.prototype.set.call(re,this.subarray(pe,we),ae),Ee},J.prototype.fill=function(re,ae,pe,we){if(typeof re=="string"){if(typeof ae=="string"?(we=ae,ae=0,pe=this.length):typeof pe=="string"&&(we=pe,pe=this.length),we!==void 0&&typeof we!="string")throw new TypeError("encoding must be a string");if(typeof we=="string"&&!J.isEncoding(we))throw new TypeError("Unknown encoding: "+we);if(re.length===1){const De=re.charCodeAt(0);(we==="utf8"&&De<128||we==="latin1")&&(re=De)}}else typeof re=="number"?re=re&255:typeof re=="boolean"&&(re=Number(re));if(ae<0||this.length<ae||this.length<pe)throw new RangeError("Out of range index");if(pe<=ae)return this;ae=ae>>>0,pe=pe===void 0?this.length:pe>>>0,re||(re=0);let Ee;if(typeof re=="number")for(Ee=ae;Ee<pe;++Ee)this[Ee]=re;else{const De=J.isBuffer(re)?re:J.from(re,we),bt=De.length;if(bt===0)throw new TypeError('The value "'+re+'" is invalid for argument "value"');for(Ee=0;Ee<pe-ae;++Ee)this[Ee+ae]=De[Ee%bt]}return this};const Ae={};function Se(le,re,ae){Ae[le]=class extends ae{constructor(){super(),Object.defineProperty(this,"message",{value:re.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${le}]`,this.stack,delete this.name}get code(){return le}set code(we){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:we,writable:!0})}toString(){return`${this.name} [${le}]: ${this.message}`}}}Se("ERR_BUFFER_OUT_OF_BOUNDS",function(le){return le?`${le} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Se("ERR_INVALID_ARG_TYPE",function(le,re){return`The "${le}" argument must be of type number. Received type ${typeof re}`},TypeError),Se("ERR_OUT_OF_RANGE",function(le,re,ae){let pe=`The value of "${le}" is out of range.`,we=ae;return Number.isInteger(ae)&&Math.abs(ae)>2**32?we=Re(String(ae)):typeof ae=="bigint"&&(we=String(ae),(ae>BigInt(2)**BigInt(32)||ae<-(BigInt(2)**BigInt(32)))&&(we=Re(we)),we+="n"),pe+=` It must be ${re}. Received ${we}`,pe},RangeError);function Re(le){let re="",ae=le.length;const pe=le[0]==="-"?1:0;for(;ae>=pe+4;ae-=3)re=`_${le.slice(ae-3,ae)}${re}`;return`${le.slice(0,ae)}${re}`}function ge(le,re,ae){Le(re,"offset"),(le[re]===void 0||le[re+ae]===void 0)&&Ke(re,le.length-(ae+1))}function ye(le,re,ae,pe,we,Ee){if(le>ae||le<re){const De=typeof re=="bigint"?"n":"";let bt;throw Ee>3?re===0||re===BigInt(0)?bt=`>= 0${De} and < 2${De} ** ${(Ee+1)*8}${De}`:bt=`>= -(2${De} ** ${(Ee+1)*8-1}${De}) and < 2 ** ${(Ee+1)*8-1}${De}`:bt=`>= ${re}${De} and <= ${ae}${De}`,new Ae.ERR_OUT_OF_RANGE("value",bt,le)}ge(pe,we,Ee)}function Le(le,re){if(typeof le!="number")throw new Ae.ERR_INVALID_ARG_TYPE(re,"number",le)}function Ke(le,re,ae){throw Math.floor(le)!==le?(Le(le,ae),new Ae.ERR_OUT_OF_RANGE(ae||"offset","an integer",le)):re<0?new Ae.ERR_BUFFER_OUT_OF_BOUNDS:new Ae.ERR_OUT_OF_RANGE(ae||"offset",`>= ${ae?1:0} and <= ${re}`,le)}const st=/[^+/0-9A-Za-z-_]/g;function ut(le){if(le=le.split("=")[0],le=le.trim().replace(st,""),le.length<2)return"";for(;le.length%4!==0;)le=le+"=";return le}function $t(le,re){re=re||1/0;let ae;const pe=le.length;let we=null;const Ee=[];for(let De=0;De<pe;++De){if(ae=le.charCodeAt(De),ae>55295&&ae<57344){if(!we){if(ae>56319){(re-=3)>-1&&Ee.push(239,191,189);continue}else if(De+1===pe){(re-=3)>-1&&Ee.push(239,191,189);continue}we=ae;continue}if(ae<56320){(re-=3)>-1&&Ee.push(239,191,189),we=ae;continue}ae=(we-55296<<10|ae-56320)+65536}else we&&(re-=3)>-1&&Ee.push(239,191,189);if(we=null,ae<128){if((re-=1)<0)break;Ee.push(ae)}else if(ae<2048){if((re-=2)<0)break;Ee.push(ae>>6|192,ae&63|128)}else if(ae<65536){if((re-=3)<0)break;Ee.push(ae>>12|224,ae>>6&63|128,ae&63|128)}else if(ae<1114112){if((re-=4)<0)break;Ee.push(ae>>18|240,ae>>12&63|128,ae>>6&63|128,ae&63|128)}else throw new Error("Invalid code point")}return Ee}function Et(le){const re=[];for(let ae=0;ae<le.length;++ae)re.push(le.charCodeAt(ae)&255);return re}function rt(le,re){let ae,pe,we;const Ee=[];for(let De=0;De<le.length&&!((re-=2)<0);++De)ae=le.charCodeAt(De),pe=ae>>8,we=ae%256,Ee.push(we),Ee.push(pe);return Ee}function jt(le){return I.toByteArray(ut(le))}function Gt(le,re,ae,pe){let we;for(we=0;we<pe&&!(we+ae>=re.length||we>=le.length);++we)re[we+ae]=le[we];return we}function At(le,re){return le instanceof re||le!=null&&le.constructor!=null&&le.constructor.name!=null&&le.constructor.name===re.name}function zt(le){return le!==le}const an=function(){const le="0123456789abcdef",re=new Array(256);for(let ae=0;ae<16;++ae){const pe=ae*16;for(let we=0;we<16;++we)re[pe+we]=le[ae]+le[we]}return re}();function St(le){return typeof BigInt>"u"?Ut:le}function Ut(){throw new Error("BigInt not supported")}})(buffer);const __viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze(Object.defineProperty({__proto__:null,default:__viteBrowserExternal},Symbol.toStringTag,{value:"Module"})),require$$3=getAugmentedNamespace(__viteBrowserExternal$1);var buffer_list,hasRequiredBuffer_list;function requireBuffer_list(){if(hasRequiredBuffer_list)return buffer_list;hasRequiredBuffer_list=1;function $(te,ne){var ie=Object.keys(te);if(Object.getOwnPropertySymbols){var oe=Object.getOwnPropertySymbols(te);ne&&(oe=oe.filter(function(ce){return Object.getOwnPropertyDescriptor(te,ce).enumerable})),ie.push.apply(ie,oe)}return ie}function I(te){for(var ne=1;ne<arguments.length;ne++){var ie=arguments[ne]!=null?arguments[ne]:{};ne%2?$(Object(ie),!0).forEach(function(oe){U(te,oe,ie[oe])}):Object.getOwnPropertyDescriptors?Object.defineProperties(te,Object.getOwnPropertyDescriptors(ie)):$(Object(ie)).forEach(function(oe){Object.defineProperty(te,oe,Object.getOwnPropertyDescriptor(ie,oe))})}return te}function U(te,ne,ie){return ne in te?Object.defineProperty(te,ne,{value:ie,enumerable:!0,configurable:!0,writable:!0}):te[ne]=ie,te}function q(te,ne){if(!(te instanceof ne))throw new TypeError("Cannot call a class as a function")}function G(te,ne){for(var ie=0;ie<ne.length;ie++){var oe=ne[ie];oe.enumerable=oe.enumerable||!1,oe.configurable=!0,"value"in oe&&(oe.writable=!0),Object.defineProperty(te,oe.key,oe)}}function K(te,ne,ie){return ne&&G(te.prototype,ne),ie&&G(te,ie),te}var Y=buffer,J=Y.Buffer,X=require$$3,Z=X.inspect,Q=Z&&Z.custom||"inspect";function ee(te,ne,ie){J.prototype.copy.call(te,ne,ie)}return buffer_list=function(){function te(){q(this,te),this.head=null,this.tail=null,this.length=0}return K(te,[{key:"push",value:function(ie){var oe={data:ie,next:null};this.length>0?this.tail.next=oe:this.head=oe,this.tail=oe,++this.length}},{key:"unshift",value:function(ie){var oe={data:ie,next:this.head};this.length===0&&(this.tail=oe),this.head=oe,++this.length}},{key:"shift",value:function(){if(this.length!==0){var ie=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,ie}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(ie){if(this.length===0)return"";for(var oe=this.head,ce=""+oe.data;oe=oe.next;)ce+=ie+oe.data;return ce}},{key:"concat",value:function(ie){if(this.length===0)return J.alloc(0);for(var oe=J.allocUnsafe(ie>>>0),ce=this.head,fe=0;ce;)ee(ce.data,oe,fe),fe+=ce.data.length,ce=ce.next;return oe}},{key:"consume",value:function(ie,oe){var ce;return ie<this.head.data.length?(ce=this.head.data.slice(0,ie),this.head.data=this.head.data.slice(ie)):ie===this.head.data.length?ce=this.shift():ce=oe?this._getString(ie):this._getBuffer(ie),ce}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(ie){var oe=this.head,ce=1,fe=oe.data;for(ie-=fe.length;oe=oe.next;){var se=oe.data,de=ie>se.length?se.length:ie;if(de===se.length?fe+=se:fe+=se.slice(0,ie),ie-=de,ie===0){de===se.length?(++ce,oe.next?this.head=oe.next:this.head=this.tail=null):(this.head=oe,oe.data=se.slice(de));break}++ce}return this.length-=ce,fe}},{key:"_getBuffer",value:function(ie){var oe=J.allocUnsafe(ie),ce=this.head,fe=1;for(ce.data.copy(oe),ie-=ce.data.length;ce=ce.next;){var se=ce.data,de=ie>se.length?se.length:ie;if(se.copy(oe,oe.length-ie,0,de),ie-=de,ie===0){de===se.length?(++fe,ce.next?this.head=ce.next:this.head=this.tail=null):(this.head=ce,ce.data=se.slice(de));break}++fe}return this.length-=fe,oe}},{key:Q,value:function(ie,oe){return Z(this,I({},oe,{depth:0,customInspect:!1}))}}]),te}(),buffer_list}function destroy($,I){var U=this,q=this._readableState&&this._readableState.destroyed,G=this._writableState&&this._writableState.destroyed;return q||G?(I?I($):$&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(emitErrorNT,this,$)):process.nextTick(emitErrorNT,this,$)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy($||null,function(K){!I&&K?U._writableState?U._writableState.errorEmitted?process.nextTick(emitCloseNT,U):(U._writableState.errorEmitted=!0,process.nextTick(emitErrorAndCloseNT,U,K)):process.nextTick(emitErrorAndCloseNT,U,K):I?(process.nextTick(emitCloseNT,U),I(K)):process.nextTick(emitCloseNT,U)}),this)}function emitErrorAndCloseNT($,I){emitErrorNT($,I),emitCloseNT($)}function emitCloseNT($){$._writableState&&!$._writableState.emitClose||$._readableState&&!$._readableState.emitClose||$.emit("close")}function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function emitErrorNT($,I){$.emit("error",I)}function errorOrDestroy($,I){var U=$._readableState,q=$._writableState;U&&U.autoDestroy||q&&q.autoDestroy?$.destroy(I):$.emit("error",I)}var destroy_1={destroy,undestroy,errorOrDestroy},errorsBrowser={};function _inheritsLoose($,I){$.prototype=Object.create(I.prototype),$.prototype.constructor=$,$.__proto__=I}var codes={};function createErrorType($,I,U){U||(U=Error);function q(K,Y,J){return typeof I=="string"?I:I(K,Y,J)}var G=function(K){_inheritsLoose(Y,K);function Y(J,X,Z){return K.call(this,q(J,X,Z))||this}return Y}(U);G.prototype.name=U.name,G.prototype.code=$,codes[$]=G}function oneOf($,I){if(Array.isArray($)){var U=$.length;return $=$.map(function(q){return String(q)}),U>2?"one of ".concat(I," ").concat($.slice(0,U-1).join(", "),", or ")+$[U-1]:U===2?"one of ".concat(I," ").concat($[0]," or ").concat($[1]):"of ".concat(I," ").concat($[0])}else return"of ".concat(I," ").concat(String($))}function startsWith($,I,U){return $.substr(!U||U<0?0:+U,I.length)===I}function endsWith($,I,U){return(U===void 0||U>$.length)&&(U=$.length),$.substring(U-I.length,U)===I}function includes($,I,U){return typeof U!="number"&&(U=0),U+I.length>$.length?!1:$.indexOf(I,U)!==-1}createErrorType("ERR_INVALID_OPT_VALUE",function($,I){return'The value "'+I+'" is invalid for option "'+$+'"'},TypeError),createErrorType("ERR_INVALID_ARG_TYPE",function($,I,U){var q;typeof I=="string"&&startsWith(I,"not ")?(q="must not be",I=I.replace(/^not /,"")):q="must be";var G;if(endsWith($," argument"))G="The ".concat($," ").concat(q," ").concat(oneOf(I,"type"));else{var K=includes($,".")?"property":"argument";G='The "'.concat($,'" ').concat(K," ").concat(q," ").concat(oneOf(I,"type"))}return G+=". Received type ".concat(typeof U),G},TypeError),createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),createErrorType("ERR_METHOD_NOT_IMPLEMENTED",function($){return"The "+$+" method is not implemented"}),createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close"),createErrorType("ERR_STREAM_DESTROYED",function($){return"Cannot call "+$+" after a stream was destroyed"}),createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end"),createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),createErrorType("ERR_UNKNOWN_ENCODING",function($){return"Unknown encoding: "+$},TypeError),createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),errorsBrowser.codes=codes;var ERR_INVALID_OPT_VALUE=errorsBrowser.codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom($,I,U){return $.highWaterMark!=null?$.highWaterMark:I?$[U]:null}function getHighWaterMark($,I,U,q){var G=highWaterMarkFrom(I,q,U);if(G!=null){if(!(isFinite(G)&&Math.floor(G)===G)||G<0){var K=q?U:"highWaterMark";throw new ERR_INVALID_OPT_VALUE(K,G)}return Math.floor(G)}return $.objectMode?16:16*1024}var state={getHighWaterMark},inherits_browser={exports:{}};typeof Object.create=="function"?inherits_browser.exports=function(I,U){U&&(I.super_=U,I.prototype=Object.create(U.prototype,{constructor:{value:I,enumerable:!1,writable:!0,configurable:!0}}))}:inherits_browser.exports=function(I,U){if(U){I.super_=U;var q=function(){};q.prototype=U.prototype,I.prototype=new q,I.prototype.constructor=I}};var inherits_browserExports=inherits_browser.exports,browser$3=deprecate;function deprecate($,I){if(config$1("noDeprecation"))return $;var U=!1;function q(){if(!U){if(config$1("throwDeprecation"))throw new Error(I);config$1("traceDeprecation")?console.trace(I):console.warn(I),U=!0}return $.apply(this,arguments)}return q}function config$1($){try{if(!commonjsGlobal.localStorage)return!1}catch{return!1}var I=commonjsGlobal.localStorage[$];return I==null?!1:String(I).toLowerCase()==="true"}var _stream_writable,hasRequired_stream_writable;function require_stream_writable(){if(hasRequired_stream_writable)return _stream_writable;hasRequired_stream_writable=1,_stream_writable=be;function $(je){var ze=this;this.next=null,this.entry=null,this.finish=function(){vt(ze,je)}}var I;be.WritableState=ve;var U={deprecate:browser$3},q=streamBrowser,G=buffer.Buffer,K=commonjsGlobal.Uint8Array||function(){};function Y(je){return G.from(je)}function J(je){return G.isBuffer(je)||je instanceof K}var X=destroy_1,Z=state,Q=Z.getHighWaterMark,ee=errorsBrowser.codes,te=ee.ERR_INVALID_ARG_TYPE,ne=ee.ERR_METHOD_NOT_IMPLEMENTED,ie=ee.ERR_MULTIPLE_CALLBACK,oe=ee.ERR_STREAM_CANNOT_PIPE,ce=ee.ERR_STREAM_DESTROYED,fe=ee.ERR_STREAM_NULL_VALUES,se=ee.ERR_STREAM_WRITE_AFTER_END,de=ee.ERR_UNKNOWN_ENCODING,ue=X.errorOrDestroy;inherits_browserExports(be,q);function he(){}function ve(je,ze,Ae){I=I||require_stream_duplex(),je=je||{},typeof Ae!="boolean"&&(Ae=ze instanceof I),this.objectMode=!!je.objectMode,Ae&&(this.objectMode=this.objectMode||!!je.writableObjectMode),this.highWaterMark=Q(this,je,"writableHighWaterMark",Ae),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var Se=je.decodeStrings===!1;this.decodeStrings=!Se,this.defaultEncoding=je.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(Re){nt(ze,Re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=je.emitClose!==!1,this.autoDestroy=!!je.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new $(this)}ve.prototype.getBuffer=function(){for(var ze=this.bufferedRequest,Ae=[];ze;)Ae.push(ze),ze=ze.next;return Ae},function(){try{Object.defineProperty(ve.prototype,"buffer",{get:U.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var me;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(me=Function.prototype[Symbol.hasInstance],Object.defineProperty(be,Symbol.hasInstance,{value:function(ze){return me.call(this,ze)?!0:this!==be?!1:ze&&ze._writableState instanceof ve}})):me=function(ze){return ze instanceof this};function be(je){I=I||require_stream_duplex();var ze=this instanceof I;if(!ze&&!me.call(be,this))return new be(je);this._writableState=new ve(je,this,ze),this.writable=!0,je&&(typeof je.write=="function"&&(this._write=je.write),typeof je.writev=="function"&&(this._writev=je.writev),typeof je.destroy=="function"&&(this._destroy=je.destroy),typeof je.final=="function"&&(this._final=je.final)),q.call(this)}be.prototype.pipe=function(){ue(this,new oe)};function _e(je,ze){var Ae=new se;ue(je,Ae),process.nextTick(ze,Ae)}function Ce(je,ze,Ae,Se){var Re;return Ae===null?Re=new fe:typeof Ae!="string"&&!ze.objectMode&&(Re=new te("chunk",["string","Buffer"],Ae)),Re?(ue(je,Re),process.nextTick(Se,Re),!1):!0}be.prototype.write=function(je,ze,Ae){var Se=this._writableState,Re=!1,ge=!Se.objectMode&&J(je);return ge&&!G.isBuffer(je)&&(je=Y(je)),typeof ze=="function"&&(Ae=ze,ze=null),ge?ze="buffer":ze||(ze=Se.defaultEncoding),typeof Ae!="function"&&(Ae=he),Se.ending?_e(this,Ae):(ge||Ce(this,Se,je,Ae))&&(Se.pendingcb++,Re=ke(this,Se,ge,je,ze,Ae)),Re},be.prototype.cork=function(){this._writableState.corked++},be.prototype.uncork=function(){var je=this._writableState;je.corked&&(je.corked--,!je.writing&&!je.corked&&!je.bufferProcessing&&je.bufferedRequest&&it(this,je))},be.prototype.setDefaultEncoding=function(ze){if(typeof ze=="string"&&(ze=ze.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((ze+"").toLowerCase())>-1))throw new de(ze);return this._writableState.defaultEncoding=ze,this},Object.defineProperty(be.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function xe(je,ze,Ae){return!je.objectMode&&je.decodeStrings!==!1&&typeof ze=="string"&&(ze=G.from(ze,Ae)),ze}Object.defineProperty(be.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function ke(je,ze,Ae,Se,Re,ge){if(!Ae){var ye=xe(ze,Se,Re);Se!==ye&&(Ae=!0,Re="buffer",Se=ye)}var Le=ze.objectMode?1:Se.length;ze.length+=Le;var Ke=ze.length<ze.highWaterMark;if(Ke||(ze.needDrain=!0),ze.writing||ze.corked){var st=ze.lastBufferedRequest;ze.lastBufferedRequest={chunk:Se,encoding:Re,isBuf:Ae,callback:ge,next:null},st?st.next=ze.lastBufferedRequest:ze.bufferedRequest=ze.lastBufferedRequest,ze.bufferedRequestCount+=1}else Be(je,ze,!1,Le,Se,Re,ge);return Ke}function Be(je,ze,Ae,Se,Re,ge,ye){ze.writelen=Se,ze.writecb=ye,ze.writing=!0,ze.sync=!0,ze.destroyed?ze.onwrite(new ce("write")):Ae?je._writev(Re,ze.onwrite):je._write(Re,ge,ze.onwrite),ze.sync=!1}function Me(je,ze,Ae,Se,Re){--ze.pendingcb,Ae?(process.nextTick(Re,Se),process.nextTick(We,je,ze),je._writableState.errorEmitted=!0,ue(je,Se)):(Re(Se),je._writableState.errorEmitted=!0,ue(je,Se),We(je,ze))}function Ve(je){je.writing=!1,je.writecb=null,je.length-=je.writelen,je.writelen=0}function nt(je,ze){var Ae=je._writableState,Se=Ae.sync,Re=Ae.writecb;if(typeof Re!="function")throw new ie;if(Ve(Ae),ze)Me(je,Ae,Se,ze,Re);else{var ge=dt(Ae)||je.destroyed;!ge&&!Ae.corked&&!Ae.bufferProcessing&&Ae.bufferedRequest&&it(je,Ae),Se?process.nextTick(ot,je,Ae,ge,Re):ot(je,Ae,ge,Re)}}function ot(je,ze,Ae,Se){Ae||ft(je,ze),ze.pendingcb--,Se(),We(je,ze)}function ft(je,ze){ze.length===0&&ze.needDrain&&(ze.needDrain=!1,je.emit("drain"))}function it(je,ze){ze.bufferProcessing=!0;var Ae=ze.bufferedRequest;if(je._writev&&Ae&&Ae.next){var Se=ze.bufferedRequestCount,Re=new Array(Se),ge=ze.corkedRequestsFree;ge.entry=Ae;for(var ye=0,Le=!0;Ae;)Re[ye]=Ae,Ae.isBuf||(Le=!1),Ae=Ae.next,ye+=1;Re.allBuffers=Le,Be(je,ze,!0,ze.length,Re,"",ge.finish),ze.pendingcb++,ze.lastBufferedRequest=null,ge.next?(ze.corkedRequestsFree=ge.next,ge.next=null):ze.corkedRequestsFree=new $(ze),ze.bufferedRequestCount=0}else{for(;Ae;){var Ke=Ae.chunk,st=Ae.encoding,ut=Ae.callback,$t=ze.objectMode?1:Ke.length;if(Be(je,ze,!1,$t,Ke,st,ut),Ae=Ae.next,ze.bufferedRequestCount--,ze.writing)break}Ae===null&&(ze.lastBufferedRequest=null)}ze.bufferedRequest=Ae,ze.bufferProcessing=!1}be.prototype._write=function(je,ze,Ae){Ae(new ne("_write()"))},be.prototype._writev=null,be.prototype.end=function(je,ze,Ae){var Se=this._writableState;return typeof je=="function"?(Ae=je,je=null,ze=null):typeof ze=="function"&&(Ae=ze,ze=null),je!=null&&this.write(je,ze),Se.corked&&(Se.corked=1,this.uncork()),Se.ending||tt(this,Se,Ae),this},Object.defineProperty(be.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function dt(je){return je.ending&&je.length===0&&je.bufferedRequest===null&&!je.finished&&!je.writing}function Qe(je,ze){je._final(function(Ae){ze.pendingcb--,Ae&&ue(je,Ae),ze.prefinished=!0,je.emit("prefinish"),We(je,ze)})}function Ue(je,ze){!ze.prefinished&&!ze.finalCalled&&(typeof je._final=="function"&&!ze.destroyed?(ze.pendingcb++,ze.finalCalled=!0,process.nextTick(Qe,je,ze)):(ze.prefinished=!0,je.emit("prefinish")))}function We(je,ze){var Ae=dt(ze);if(Ae&&(Ue(je,ze),ze.pendingcb===0&&(ze.finished=!0,je.emit("finish"),ze.autoDestroy))){var Se=je._readableState;(!Se||Se.autoDestroy&&Se.endEmitted)&&je.destroy()}return Ae}function tt(je,ze,Ae){ze.ending=!0,We(je,ze),Ae&&(ze.finished?process.nextTick(Ae):je.once("finish",Ae)),ze.ended=!0,je.writable=!1}function vt(je,ze,Ae){var Se=je.entry;for(je.entry=null;Se;){var Re=Se.callback;ze.pendingcb--,Re(Ae),Se=Se.next}ze.corkedRequestsFree.next=je}return Object.defineProperty(be.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(ze){this._writableState&&(this._writableState.destroyed=ze)}}),be.prototype.destroy=X.destroy,be.prototype._undestroy=X.undestroy,be.prototype._destroy=function(je,ze){ze(je)},_stream_writable}var _stream_duplex,hasRequired_stream_duplex;function require_stream_duplex(){if(hasRequired_stream_duplex)return _stream_duplex;hasRequired_stream_duplex=1;var $=Object.keys||function(Z){var Q=[];for(var ee in Z)Q.push(ee);return Q};_stream_duplex=Y;var I=require_stream_readable(),U=require_stream_writable();inherits_browserExports(Y,I);for(var q=$(U.prototype),G=0;G<q.length;G++){var K=q[G];Y.prototype[K]||(Y.prototype[K]=U.prototype[K])}function Y(Z){if(!(this instanceof Y))return new Y(Z);I.call(this,Z),U.call(this,Z),this.allowHalfOpen=!0,Z&&(Z.readable===!1&&(this.readable=!1),Z.writable===!1&&(this.writable=!1),Z.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",J)))}Object.defineProperty(Y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Y.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Y.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function J(){this._writableState.ended||process.nextTick(X,this)}function X(Z){Z.end()}return Object.defineProperty(Y.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(Q){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=Q,this._writableState.destroyed=Q)}}),_stream_duplex}var string_decoder={},safeBuffer={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */(function($,I){var U=buffer,q=U.Buffer;function G(Y,J){for(var X in Y)J[X]=Y[X]}q.from&&q.alloc&&q.allocUnsafe&&q.allocUnsafeSlow?$.exports=U:(G(U,I),I.Buffer=K);function K(Y,J,X){return q(Y,J,X)}K.prototype=Object.create(q.prototype),G(q,K),K.from=function(Y,J,X){if(typeof Y=="number")throw new TypeError("Argument must not be a number");return q(Y,J,X)},K.alloc=function(Y,J,X){if(typeof Y!="number")throw new TypeError("Argument must be a number");var Z=q(Y);return J!==void 0?typeof X=="string"?Z.fill(J,X):Z.fill(J):Z.fill(0),Z},K.allocUnsafe=function(Y){if(typeof Y!="number")throw new TypeError("Argument must be a number");return q(Y)},K.allocUnsafeSlow=function(Y){if(typeof Y!="number")throw new TypeError("Argument must be a number");return U.SlowBuffer(Y)}})(safeBuffer,safeBuffer.exports);var safeBufferExports=safeBuffer.exports,hasRequiredString_decoder;function requireString_decoder(){if(hasRequiredString_decoder)return string_decoder;hasRequiredString_decoder=1;var $=safeBufferExports.Buffer,I=$.isEncoding||function(fe){switch(fe=""+fe,fe&&fe.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function U(fe){if(!fe)return"utf8";for(var se;;)switch(fe){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return fe;default:if(se)return;fe=(""+fe).toLowerCase(),se=!0}}function q(fe){var se=U(fe);if(typeof se!="string"&&($.isEncoding===I||!I(fe)))throw new Error("Unknown encoding: "+fe);return se||fe}string_decoder.StringDecoder=G;function G(fe){this.encoding=q(fe);var se;switch(this.encoding){case"utf16le":this.text=ee,this.end=te,se=4;break;case"utf8":this.fillLast=X,se=4;break;case"base64":this.text=ne,this.end=ie,se=3;break;default:this.write=oe,this.end=ce;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=$.allocUnsafe(se)}G.prototype.write=function(fe){if(fe.length===0)return"";var se,de;if(this.lastNeed){if(se=this.fillLast(fe),se===void 0)return"";de=this.lastNeed,this.lastNeed=0}else de=0;return de<fe.length?se?se+this.text(fe,de):this.text(fe,de):se||""},G.prototype.end=Q,G.prototype.text=Z,G.prototype.fillLast=function(fe){if(this.lastNeed<=fe.length)return fe.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);fe.copy(this.lastChar,this.lastTotal-this.lastNeed,0,fe.length),this.lastNeed-=fe.length};function K(fe){return fe<=127?0:fe>>5===6?2:fe>>4===14?3:fe>>3===30?4:fe>>6===2?-1:-2}function Y(fe,se,de){var ue=se.length-1;if(ue<de)return 0;var he=K(se[ue]);return he>=0?(he>0&&(fe.lastNeed=he-1),he):--ue<de||he===-2?0:(he=K(se[ue]),he>=0?(he>0&&(fe.lastNeed=he-2),he):--ue<de||he===-2?0:(he=K(se[ue]),he>=0?(he>0&&(he===2?he=0:fe.lastNeed=he-3),he):0))}function J(fe,se,de){if((se[0]&192)!==128)return fe.lastNeed=0,"�";if(fe.lastNeed>1&&se.length>1){if((se[1]&192)!==128)return fe.lastNeed=1,"�";if(fe.lastNeed>2&&se.length>2&&(se[2]&192)!==128)return fe.lastNeed=2,"�"}}function X(fe){var se=this.lastTotal-this.lastNeed,de=J(this,fe);if(de!==void 0)return de;if(this.lastNeed<=fe.length)return fe.copy(this.lastChar,se,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);fe.copy(this.lastChar,se,0,fe.length),this.lastNeed-=fe.length}function Z(fe,se){var de=Y(this,fe,se);if(!this.lastNeed)return fe.toString("utf8",se);this.lastTotal=de;var ue=fe.length-(de-this.lastNeed);return fe.copy(this.lastChar,0,ue),fe.toString("utf8",se,ue)}function Q(fe){var se=fe&&fe.length?this.write(fe):"";return this.lastNeed?se+"�":se}function ee(fe,se){if((fe.length-se)%2===0){var de=fe.toString("utf16le",se);if(de){var ue=de.charCodeAt(de.length-1);if(ue>=55296&&ue<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=fe[fe.length-2],this.lastChar[1]=fe[fe.length-1],de.slice(0,-1)}return de}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=fe[fe.length-1],fe.toString("utf16le",se,fe.length-1)}function te(fe){var se=fe&&fe.length?this.write(fe):"";if(this.lastNeed){var de=this.lastTotal-this.lastNeed;return se+this.lastChar.toString("utf16le",0,de)}return se}function ne(fe,se){var de=(fe.length-se)%3;return de===0?fe.toString("base64",se):(this.lastNeed=3-de,this.lastTotal=3,de===1?this.lastChar[0]=fe[fe.length-1]:(this.lastChar[0]=fe[fe.length-2],this.lastChar[1]=fe[fe.length-1]),fe.toString("base64",se,fe.length-de))}function ie(fe){var se=fe&&fe.length?this.write(fe):"";return this.lastNeed?se+this.lastChar.toString("base64",0,3-this.lastNeed):se}function oe(fe){return fe.toString(this.encoding)}function ce(fe){return fe&&fe.length?this.write(fe):""}return string_decoder}var ERR_STREAM_PREMATURE_CLOSE=errorsBrowser.codes.ERR_STREAM_PREMATURE_CLOSE;function once$1($){var I=!1;return function(){if(!I){I=!0;for(var U=arguments.length,q=new Array(U),G=0;G<U;G++)q[G]=arguments[G];$.apply(this,q)}}}function noop$2(){}function isRequest$1($){return $.setHeader&&typeof $.abort=="function"}function eos$1($,I,U){if(typeof I=="function")return eos$1($,null,I);I||(I={}),U=once$1(U||noop$2);var q=I.readable||I.readable!==!1&&$.readable,G=I.writable||I.writable!==!1&&$.writable,K=function(){$.writable||J()},Y=$._writableState&&$._writableState.finished,J=function(){G=!1,Y=!0,q||U.call($)},X=$._readableState&&$._readableState.endEmitted,Z=function(){q=!1,X=!0,G||U.call($)},Q=function(ie){U.call($,ie)},ee=function(){var ie;if(q&&!X)return(!$._readableState||!$._readableState.ended)&&(ie=new ERR_STREAM_PREMATURE_CLOSE),U.call($,ie);if(G&&!Y)return(!$._writableState||!$._writableState.ended)&&(ie=new ERR_STREAM_PREMATURE_CLOSE),U.call($,ie)},te=function(){$.req.on("finish",J)};return isRequest$1($)?($.on("complete",J),$.on("abort",ee),$.req?te():$.on("request",te)):G&&!$._writableState&&($.on("end",K),$.on("close",K)),$.on("end",Z),$.on("finish",J),I.error!==!1&&$.on("error",Q),$.on("close",ee),function(){$.removeListener("complete",J),$.removeListener("abort",ee),$.removeListener("request",te),$.req&&$.req.removeListener("finish",J),$.removeListener("end",K),$.removeListener("close",K),$.removeListener("finish",J),$.removeListener("end",Z),$.removeListener("error",Q),$.removeListener("close",ee)}}var endOfStream=eos$1,async_iterator,hasRequiredAsync_iterator;function requireAsync_iterator(){if(hasRequiredAsync_iterator)return async_iterator;hasRequiredAsync_iterator=1;var $;function I(fe,se,de){return se in fe?Object.defineProperty(fe,se,{value:de,enumerable:!0,configurable:!0,writable:!0}):fe[se]=de,fe}var U=endOfStream,q=Symbol("lastResolve"),G=Symbol("lastReject"),K=Symbol("error"),Y=Symbol("ended"),J=Symbol("lastPromise"),X=Symbol("handlePromise"),Z=Symbol("stream");function Q(fe,se){return{value:fe,done:se}}function ee(fe){var se=fe[q];if(se!==null){var de=fe[Z].read();de!==null&&(fe[J]=null,fe[q]=null,fe[G]=null,se(Q(de,!1)))}}function te(fe){process.nextTick(ee,fe)}function ne(fe,se){return function(de,ue){fe.then(function(){if(se[Y]){de(Q(void 0,!0));return}se[X](de,ue)},ue)}}var ie=Object.getPrototypeOf(function(){}),oe=Object.setPrototypeOf(($={get stream(){return this[Z]},next:function(){var se=this,de=this[K];if(de!==null)return Promise.reject(de);if(this[Y])return Promise.resolve(Q(void 0,!0));if(this[Z].destroyed)return new Promise(function(me,be){process.nextTick(function(){se[K]?be(se[K]):me(Q(void 0,!0))})});var ue=this[J],he;if(ue)he=new Promise(ne(ue,this));else{var ve=this[Z].read();if(ve!==null)return Promise.resolve(Q(ve,!1));he=new Promise(this[X])}return this[J]=he,he}},I($,Symbol.asyncIterator,function(){return this}),I($,"return",function(){var se=this;return new Promise(function(de,ue){se[Z].destroy(null,function(he){if(he){ue(he);return}de(Q(void 0,!0))})})}),$),ie),ce=function(se){var de,ue=Object.create(oe,(de={},I(de,Z,{value:se,writable:!0}),I(de,q,{value:null,writable:!0}),I(de,G,{value:null,writable:!0}),I(de,K,{value:null,writable:!0}),I(de,Y,{value:se._readableState.endEmitted,writable:!0}),I(de,X,{value:function(ve,me){var be=ue[Z].read();be?(ue[J]=null,ue[q]=null,ue[G]=null,ve(Q(be,!1))):(ue[q]=ve,ue[G]=me)},writable:!0}),de));return ue[J]=null,U(se,function(he){if(he&&he.code!=="ERR_STREAM_PREMATURE_CLOSE"){var ve=ue[G];ve!==null&&(ue[J]=null,ue[q]=null,ue[G]=null,ve(he)),ue[K]=he;return}var me=ue[q];me!==null&&(ue[J]=null,ue[q]=null,ue[G]=null,me(Q(void 0,!0))),ue[Y]=!0}),se.on("readable",te.bind(null,ue)),ue};return async_iterator=ce,async_iterator}var fromBrowser,hasRequiredFromBrowser;function requireFromBrowser(){return hasRequiredFromBrowser||(hasRequiredFromBrowser=1,fromBrowser=function(){throw new Error("Readable.from is not available in the browser")}),fromBrowser}var _stream_readable,hasRequired_stream_readable;function require_stream_readable(){if(hasRequired_stream_readable)return _stream_readable;hasRequired_stream_readable=1,_stream_readable=_e;var $;_e.ReadableState=be,eventsExports.EventEmitter;var I=function(ye,Le){return ye.listeners(Le).length},U=streamBrowser,q=buffer.Buffer,G=commonjsGlobal.Uint8Array||function(){};function K(ge){return q.from(ge)}function Y(ge){return q.isBuffer(ge)||ge instanceof G}var J=require$$3,X;J&&J.debuglog?X=J.debuglog("stream"):X=function(){};var Z=requireBuffer_list(),Q=destroy_1,ee=state,te=ee.getHighWaterMark,ne=errorsBrowser.codes,ie=ne.ERR_INVALID_ARG_TYPE,oe=ne.ERR_STREAM_PUSH_AFTER_EOF,ce=ne.ERR_METHOD_NOT_IMPLEMENTED,fe=ne.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,se,de,ue;inherits_browserExports(_e,U);var he=Q.errorOrDestroy,ve=["error","close","destroy","pause","resume"];function me(ge,ye,Le){if(typeof ge.prependListener=="function")return ge.prependListener(ye,Le);!ge._events||!ge._events[ye]?ge.on(ye,Le):Array.isArray(ge._events[ye])?ge._events[ye].unshift(Le):ge._events[ye]=[Le,ge._events[ye]]}function be(ge,ye,Le){$=$||require_stream_duplex(),ge=ge||{},typeof Le!="boolean"&&(Le=ye instanceof $),this.objectMode=!!ge.objectMode,Le&&(this.objectMode=this.objectMode||!!ge.readableObjectMode),this.highWaterMark=te(this,ge,"readableHighWaterMark",Le),this.buffer=new Z,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=ge.emitClose!==!1,this.autoDestroy=!!ge.autoDestroy,this.destroyed=!1,this.defaultEncoding=ge.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,ge.encoding&&(se||(se=requireString_decoder().StringDecoder),this.decoder=new se(ge.encoding),this.encoding=ge.encoding)}function _e(ge){if($=$||require_stream_duplex(),!(this instanceof _e))return new _e(ge);var ye=this instanceof $;this._readableState=new be(ge,this,ye),this.readable=!0,ge&&(typeof ge.read=="function"&&(this._read=ge.read),typeof ge.destroy=="function"&&(this._destroy=ge.destroy)),U.call(this)}Object.defineProperty(_e.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(ye){this._readableState&&(this._readableState.destroyed=ye)}}),_e.prototype.destroy=Q.destroy,_e.prototype._undestroy=Q.undestroy,_e.prototype._destroy=function(ge,ye){ye(ge)},_e.prototype.push=function(ge,ye){var Le=this._readableState,Ke;return Le.objectMode?Ke=!0:typeof ge=="string"&&(ye=ye||Le.defaultEncoding,ye!==Le.encoding&&(ge=q.from(ge,ye),ye=""),Ke=!0),Ce(this,ge,ye,!1,Ke)},_e.prototype.unshift=function(ge){return Ce(this,ge,null,!0,!1)};function Ce(ge,ye,Le,Ke,st){X("readableAddChunk",ye);var ut=ge._readableState;if(ye===null)ut.reading=!1,nt(ge,ut);else{var $t;if(st||($t=ke(ut,ye)),$t)he(ge,$t);else if(ut.objectMode||ye&&ye.length>0)if(typeof ye!="string"&&!ut.objectMode&&Object.getPrototypeOf(ye)!==q.prototype&&(ye=K(ye)),Ke)ut.endEmitted?he(ge,new fe):xe(ge,ut,ye,!0);else if(ut.ended)he(ge,new oe);else{if(ut.destroyed)return!1;ut.reading=!1,ut.decoder&&!Le?(ye=ut.decoder.write(ye),ut.objectMode||ye.length!==0?xe(ge,ut,ye,!1):it(ge,ut)):xe(ge,ut,ye,!1)}else Ke||(ut.reading=!1,it(ge,ut))}return!ut.ended&&(ut.length<ut.highWaterMark||ut.length===0)}function xe(ge,ye,Le,Ke){ye.flowing&&ye.length===0&&!ye.sync?(ye.awaitDrain=0,ge.emit("data",Le)):(ye.length+=ye.objectMode?1:Le.length,Ke?ye.buffer.unshift(Le):ye.buffer.push(Le),ye.needReadable&&ot(ge)),it(ge,ye)}function ke(ge,ye){var Le;return!Y(ye)&&typeof ye!="string"&&ye!==void 0&&!ge.objectMode&&(Le=new ie("chunk",["string","Buffer","Uint8Array"],ye)),Le}_e.prototype.isPaused=function(){return this._readableState.flowing===!1},_e.prototype.setEncoding=function(ge){se||(se=requireString_decoder().StringDecoder);var ye=new se(ge);this._readableState.decoder=ye,this._readableState.encoding=this._readableState.decoder.encoding;for(var Le=this._readableState.buffer.head,Ke="";Le!==null;)Ke+=ye.write(Le.data),Le=Le.next;return this._readableState.buffer.clear(),Ke!==""&&this._readableState.buffer.push(Ke),this._readableState.length=Ke.length,this};var Be=1073741824;function Me(ge){return ge>=Be?ge=Be:(ge--,ge|=ge>>>1,ge|=ge>>>2,ge|=ge>>>4,ge|=ge>>>8,ge|=ge>>>16,ge++),ge}function Ve(ge,ye){return ge<=0||ye.length===0&&ye.ended?0:ye.objectMode?1:ge!==ge?ye.flowing&&ye.length?ye.buffer.head.data.length:ye.length:(ge>ye.highWaterMark&&(ye.highWaterMark=Me(ge)),ge<=ye.length?ge:ye.ended?ye.length:(ye.needReadable=!0,0))}_e.prototype.read=function(ge){X("read",ge),ge=parseInt(ge,10);var ye=this._readableState,Le=ge;if(ge!==0&&(ye.emittedReadable=!1),ge===0&&ye.needReadable&&((ye.highWaterMark!==0?ye.length>=ye.highWaterMark:ye.length>0)||ye.ended))return X("read: emitReadable",ye.length,ye.ended),ye.length===0&&ye.ended?Ae(this):ot(this),null;if(ge=Ve(ge,ye),ge===0&&ye.ended)return ye.length===0&&Ae(this),null;var Ke=ye.needReadable;X("need readable",Ke),(ye.length===0||ye.length-ge<ye.highWaterMark)&&(Ke=!0,X("length less than watermark",Ke)),ye.ended||ye.reading?(Ke=!1,X("reading or ended",Ke)):Ke&&(X("do read"),ye.reading=!0,ye.sync=!0,ye.length===0&&(ye.needReadable=!0),this._read(ye.highWaterMark),ye.sync=!1,ye.reading||(ge=Ve(Le,ye)));var st;return ge>0?st=ze(ge,ye):st=null,st===null?(ye.needReadable=ye.length<=ye.highWaterMark,ge=0):(ye.length-=ge,ye.awaitDrain=0),ye.length===0&&(ye.ended||(ye.needReadable=!0),Le!==ge&&ye.ended&&Ae(this)),st!==null&&this.emit("data",st),st};function nt(ge,ye){if(X("onEofChunk"),!ye.ended){if(ye.decoder){var Le=ye.decoder.end();Le&&Le.length&&(ye.buffer.push(Le),ye.length+=ye.objectMode?1:Le.length)}ye.ended=!0,ye.sync?ot(ge):(ye.needReadable=!1,ye.emittedReadable||(ye.emittedReadable=!0,ft(ge)))}}function ot(ge){var ye=ge._readableState;X("emitReadable",ye.needReadable,ye.emittedReadable),ye.needReadable=!1,ye.emittedReadable||(X("emitReadable",ye.flowing),ye.emittedReadable=!0,process.nextTick(ft,ge))}function ft(ge){var ye=ge._readableState;X("emitReadable_",ye.destroyed,ye.length,ye.ended),!ye.destroyed&&(ye.length||ye.ended)&&(ge.emit("readable"),ye.emittedReadable=!1),ye.needReadable=!ye.flowing&&!ye.ended&&ye.length<=ye.highWaterMark,je(ge)}function it(ge,ye){ye.readingMore||(ye.readingMore=!0,process.nextTick(dt,ge,ye))}function dt(ge,ye){for(;!ye.reading&&!ye.ended&&(ye.length<ye.highWaterMark||ye.flowing&&ye.length===0);){var Le=ye.length;if(X("maybeReadMore read 0"),ge.read(0),Le===ye.length)break}ye.readingMore=!1}_e.prototype._read=function(ge){he(this,new ce("_read()"))},_e.prototype.pipe=function(ge,ye){var Le=this,Ke=this._readableState;switch(Ke.pipesCount){case 0:Ke.pipes=ge;break;case 1:Ke.pipes=[Ke.pipes,ge];break;default:Ke.pipes.push(ge);break}Ke.pipesCount+=1,X("pipe count=%d opts=%j",Ke.pipesCount,ye);var st=(!ye||ye.end!==!1)&&ge!==process.stdout&&ge!==process.stderr,ut=st?Et:Ut;Ke.endEmitted?process.nextTick(ut):Le.once("end",ut),ge.on("unpipe",$t);function $t(le,re){X("onunpipe"),le===Le&&re&&re.hasUnpiped===!1&&(re.hasUnpiped=!0,Gt())}function Et(){X("onend"),ge.end()}var rt=Qe(Le);ge.on("drain",rt);var jt=!1;function Gt(){X("cleanup"),ge.removeListener("close",an),ge.removeListener("finish",St),ge.removeListener("drain",rt),ge.removeListener("error",zt),ge.removeListener("unpipe",$t),Le.removeListener("end",Et),Le.removeListener("end",Ut),Le.removeListener("data",At),jt=!0,Ke.awaitDrain&&(!ge._writableState||ge._writableState.needDrain)&&rt()}Le.on("data",At);function At(le){X("ondata");var re=ge.write(le);X("dest.write",re),re===!1&&((Ke.pipesCount===1&&Ke.pipes===ge||Ke.pipesCount>1&&Re(Ke.pipes,ge)!==-1)&&!jt&&(X("false write response, pause",Ke.awaitDrain),Ke.awaitDrain++),Le.pause())}function zt(le){X("onerror",le),Ut(),ge.removeListener("error",zt),I(ge,"error")===0&&he(ge,le)}me(ge,"error",zt);function an(){ge.removeListener("finish",St),Ut()}ge.once("close",an);function St(){X("onfinish"),ge.removeListener("close",an),Ut()}ge.once("finish",St);function Ut(){X("unpipe"),Le.unpipe(ge)}return ge.emit("pipe",Le),Ke.flowing||(X("pipe resume"),Le.resume()),ge};function Qe(ge){return function(){var Le=ge._readableState;X("pipeOnDrain",Le.awaitDrain),Le.awaitDrain&&Le.awaitDrain--,Le.awaitDrain===0&&I(ge,"data")&&(Le.flowing=!0,je(ge))}}_e.prototype.unpipe=function(ge){var ye=this._readableState,Le={hasUnpiped:!1};if(ye.pipesCount===0)return this;if(ye.pipesCount===1)return ge&&ge!==ye.pipes?this:(ge||(ge=ye.pipes),ye.pipes=null,ye.pipesCount=0,ye.flowing=!1,ge&&ge.emit("unpipe",this,Le),this);if(!ge){var Ke=ye.pipes,st=ye.pipesCount;ye.pipes=null,ye.pipesCount=0,ye.flowing=!1;for(var ut=0;ut<st;ut++)Ke[ut].emit("unpipe",this,{hasUnpiped:!1});return this}var $t=Re(ye.pipes,ge);return $t===-1?this:(ye.pipes.splice($t,1),ye.pipesCount-=1,ye.pipesCount===1&&(ye.pipes=ye.pipes[0]),ge.emit("unpipe",this,Le),this)},_e.prototype.on=function(ge,ye){var Le=U.prototype.on.call(this,ge,ye),Ke=this._readableState;return ge==="data"?(Ke.readableListening=this.listenerCount("readable")>0,Ke.flowing!==!1&&this.resume()):ge==="readable"&&!Ke.endEmitted&&!Ke.readableListening&&(Ke.readableListening=Ke.needReadable=!0,Ke.flowing=!1,Ke.emittedReadable=!1,X("on readable",Ke.length,Ke.reading),Ke.length?ot(this):Ke.reading||process.nextTick(We,this)),Le},_e.prototype.addListener=_e.prototype.on,_e.prototype.removeListener=function(ge,ye){var Le=U.prototype.removeListener.call(this,ge,ye);return ge==="readable"&&process.nextTick(Ue,this),Le},_e.prototype.removeAllListeners=function(ge){var ye=U.prototype.removeAllListeners.apply(this,arguments);return(ge==="readable"||ge===void 0)&&process.nextTick(Ue,this),ye};function Ue(ge){var ye=ge._readableState;ye.readableListening=ge.listenerCount("readable")>0,ye.resumeScheduled&&!ye.paused?ye.flowing=!0:ge.listenerCount("data")>0&&ge.resume()}function We(ge){X("readable nexttick read 0"),ge.read(0)}_e.prototype.resume=function(){var ge=this._readableState;return ge.flowing||(X("resume"),ge.flowing=!ge.readableListening,tt(this,ge)),ge.paused=!1,this};function tt(ge,ye){ye.resumeScheduled||(ye.resumeScheduled=!0,process.nextTick(vt,ge,ye))}function vt(ge,ye){X("resume",ye.reading),ye.reading||ge.read(0),ye.resumeScheduled=!1,ge.emit("resume"),je(ge),ye.flowing&&!ye.reading&&ge.read(0)}_e.prototype.pause=function(){return X("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(X("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function je(ge){var ye=ge._readableState;for(X("flow",ye.flowing);ye.flowing&&ge.read()!==null;);}_e.prototype.wrap=function(ge){var ye=this,Le=this._readableState,Ke=!1;ge.on("end",function(){if(X("wrapped end"),Le.decoder&&!Le.ended){var $t=Le.decoder.end();$t&&$t.length&&ye.push($t)}ye.push(null)}),ge.on("data",function($t){if(X("wrapped data"),Le.decoder&&($t=Le.decoder.write($t)),!(Le.objectMode&&$t==null)&&!(!Le.objectMode&&(!$t||!$t.length))){var Et=ye.push($t);Et||(Ke=!0,ge.pause())}});for(var st in ge)this[st]===void 0&&typeof ge[st]=="function"&&(this[st]=function(Et){return function(){return ge[Et].apply(ge,arguments)}}(st));for(var ut=0;ut<ve.length;ut++)ge.on(ve[ut],this.emit.bind(this,ve[ut]));return this._read=function($t){X("wrapped _read",$t),Ke&&(Ke=!1,ge.resume())},this},typeof Symbol=="function"&&(_e.prototype[Symbol.asyncIterator]=function(){return de===void 0&&(de=requireAsync_iterator()),de(this)}),Object.defineProperty(_e.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(_e.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(_e.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(ye){this._readableState&&(this._readableState.flowing=ye)}}),_e._fromList=ze,Object.defineProperty(_e.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function ze(ge,ye){if(ye.length===0)return null;var Le;return ye.objectMode?Le=ye.buffer.shift():!ge||ge>=ye.length?(ye.decoder?Le=ye.buffer.join(""):ye.buffer.length===1?Le=ye.buffer.first():Le=ye.buffer.concat(ye.length),ye.buffer.clear()):Le=ye.buffer.consume(ge,ye.decoder),Le}function Ae(ge){var ye=ge._readableState;X("endReadable",ye.endEmitted),ye.endEmitted||(ye.ended=!0,process.nextTick(Se,ye,ge))}function Se(ge,ye){if(X("endReadableNT",ge.endEmitted,ge.length),!ge.endEmitted&&ge.length===0&&(ge.endEmitted=!0,ye.readable=!1,ye.emit("end"),ge.autoDestroy)){var Le=ye._writableState;(!Le||Le.autoDestroy&&Le.finished)&&ye.destroy()}}typeof Symbol=="function"&&(_e.from=function(ge,ye){return ue===void 0&&(ue=requireFromBrowser()),ue(_e,ge,ye)});function Re(ge,ye){for(var Le=0,Ke=ge.length;Le<Ke;Le++)if(ge[Le]===ye)return Le;return-1}return _stream_readable}var _stream_transform=Transform$1,_require$codes$1=errorsBrowser.codes,ERR_METHOD_NOT_IMPLEMENTED=_require$codes$1.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes$1.ERR_MULTIPLE_CALLBACK,ERR_TRANSFORM_ALREADY_TRANSFORMING=_require$codes$1.ERR_TRANSFORM_ALREADY_TRANSFORMING,ERR_TRANSFORM_WITH_LENGTH_0=_require$codes$1.ERR_TRANSFORM_WITH_LENGTH_0,Duplex=require_stream_duplex();inherits_browserExports(Transform$1,Duplex);function afterTransform($,I){var U=this._transformState;U.transforming=!1;var q=U.writecb;if(q===null)return this.emit("error",new ERR_MULTIPLE_CALLBACK);U.writechunk=null,U.writecb=null,I!=null&&this.push(I),q($);var G=this._readableState;G.reading=!1,(G.needReadable||G.length<G.highWaterMark)&&this._read(G.highWaterMark)}function Transform$1($){if(!(this instanceof Transform$1))return new Transform$1($);Duplex.call(this,$),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,$&&(typeof $.transform=="function"&&(this._transform=$.transform),typeof $.flush=="function"&&(this._flush=$.flush)),this.on("prefinish",prefinish)}function prefinish(){var $=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(I,U){done$1($,I,U)}):done$1(this,null,null)}Transform$1.prototype.push=function($,I){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,$,I)},Transform$1.prototype._transform=function($,I,U){U(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"))},Transform$1.prototype._write=function($,I,U){var q=this._transformState;if(q.writecb=U,q.writechunk=$,q.writeencoding=I,!q.transforming){var G=this._readableState;(q.needTransform||G.needReadable||G.length<G.highWaterMark)&&this._read(G.highWaterMark)}},Transform$1.prototype._read=function($){var I=this._transformState;I.writechunk!==null&&!I.transforming?(I.transforming=!0,this._transform(I.writechunk,I.writeencoding,I.afterTransform)):I.needTransform=!0},Transform$1.prototype._destroy=function($,I){Duplex.prototype._destroy.call(this,$,function(U){I(U)})};function done$1($,I,U){if(I)return $.emit("error",I);if(U!=null&&$.push(U),$._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0;if($._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING;return $.push(null)}var _stream_passthrough=PassThrough,Transform=_stream_transform;inherits_browserExports(PassThrough,Transform);function PassThrough($){if(!(this instanceof PassThrough))return new PassThrough($);Transform.call(this,$)}PassThrough.prototype._transform=function($,I,U){U(null,$)};var eos;function once($){var I=!1;return function(){I||(I=!0,$.apply(void 0,arguments))}}var _require$codes=errorsBrowser.codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop$1($){if($)throw $}function isRequest($){return $.setHeader&&typeof $.abort=="function"}function destroyer($,I,U,q){q=once(q);var G=!1;$.on("close",function(){G=!0}),eos===void 0&&(eos=endOfStream),eos($,{readable:I,writable:U},function(Y){if(Y)return q(Y);G=!0,q()});var K=!1;return function(Y){if(!G&&!K){if(K=!0,isRequest($))return $.abort();if(typeof $.destroy=="function")return $.destroy();q(Y||new ERR_STREAM_DESTROYED("pipe"))}}}function call($){$()}function pipe($,I){return $.pipe(I)}function popCallback($){return!$.length||typeof $[$.length-1]!="function"?noop$1:$.pop()}function pipeline(){for(var $=arguments.length,I=new Array($),U=0;U<$;U++)I[U]=arguments[U];var q=popCallback(I);if(Array.isArray(I[0])&&(I=I[0]),I.length<2)throw new ERR_MISSING_ARGS("streams");var G,K=I.map(function(Y,J){var X=J<I.length-1,Z=J>0;return destroyer(Y,X,Z,function(Q){G||(G=Q),Q&&K.forEach(call),!X&&(K.forEach(call),q(G))})});return I.reduce(pipe)}var pipeline_1=pipeline;(function($,I){I=$.exports=require_stream_readable(),I.Stream=I,I.Readable=I,I.Writable=require_stream_writable(),I.Duplex=require_stream_duplex(),I.Transform=_stream_transform,I.PassThrough=_stream_passthrough,I.finished=endOfStream,I.pipeline=pipeline_1})(readableBrowser,readableBrowser.exports);var readableBrowserExports=readableBrowser.exports,createPromiseFromCallback=$=>new Promise((I,U)=>{$((q,G)=>{q?U(q):I(G)})}),TimeoutError=class extends Error{constructor($,I){super($?`Timeout [${$.toLocaleString()}ms]${I===void 0?"":`: ${I}`}`:"Timeout")}},sleep=$=>new Promise(I=>{const U=Date.now()+$,q=()=>{const G=U-Date.now();G>0?setTimeout(q,G):I()};q()}),asyncTimeout=async($,I,U)=>{let q;const G=U===void 0||typeof U=="string"?new TimeoutError(I,U):U,K=new Promise((J,X)=>{q=setTimeout(()=>{X(G)},I),unrefTimeout(q)}),Y=typeof $=="function"?createPromiseFromCallback($):$;return await Promise.race([Y,K]).finally(()=>{clearTimeout(q)})},unrefTimeout=$=>{typeof $=="object"&&"unref"in $&&$.unref()},__dxlog_file$a="/home/runner/work/dxos/dxos/packages/common/async/src/events.ts",EventSubscriptions=class{constructor(){this._listeners=[]}add($){this._listeners.push($)}clear(){this._listeners.forEach($=>$()),this._listeners.length=0}},Event$1=class Nr{constructor(){this._listeners=new Set,this._effects=new Set}static wrap(I,U){const q=new Nr;return q.addEffect(()=>{const G=K=>q.emit(K);return I.on(U,G),()=>I.off(U,G)}),q}emit(I){for(const U of this._listeners)U.trigger(I),U.once&&this._listeners.delete(U)}on(I,U,q){const[G,K]=I instanceof Context?[I,U]:[new Context(void 0,{F:__dxlog_file$a,L:121}),I],Y=!!(q!=null&&q.weak),J=!!(q!=null&&q.once),X=new EventListener(this,K,G,J,Y);return this._addListener(X),()=>{this._removeListener(X)}}off(I){for(const U of this._listeners)U.derefCallback()===I&&this._removeListener(U)}once(I,U){const[q,G]=I instanceof Context?[I,U]:[new Context(void 0,{F:__dxlog_file$a,L:158}),I],K=new EventListener(this,G,q,!0,!1);return this._addListener(K),()=>{this._removeListener(K)}}async*[Symbol.asyncIterator](){for(;;)yield await new Promise(I=>{this.once(I)})}waitFor(I){return new Promise(U=>{const q=this.on(G=>{I(G)&&(q(),U(G))})})}waitForCount(I){let U=0;return this.waitFor(()=>++U===I)}async waitForCondition(I){I()||await this.waitFor(I)}listenerCount(){return this._listeners.size}addEffect(I){const U={effect:I,cleanup:void 0};return this.listenerCount()>0&&(U.cleanup=U.effect()),this._effects.add(U),()=>{var q;(q=U.cleanup)==null||q.call(U),this._effects.delete(U)}}debounce(I=0){let U,q;const G=new Nr;return G.addEffect(()=>{const K=this.on(()=>{if(!U){const Y=!q||Date.now()-q>I?I/8:I;U=setTimeout(()=>{q=Date.now(),U=void 0,G.emit()},Y)}});return()=>{K(),clearTimeout(U)}}),G}discardParameter(){return this}toJSON(){return{listenerCount:this.listenerCount()}}_addListener(I){this._listeners.add(I),this.listenerCount()===1&&this._runEffects()}_removeListener(I){this._listeners.delete(I),I.remove(),this.listenerCount()===0&&this._cleanupEffects()}_runEffects(){for(const I of this._effects)I.cleanup=I.effect()}_cleanupEffects(){var I;for(const U of this._effects)(I=U.cleanup)==null||I.call(U),U.cleanup=void 0}},EventListener=class{constructor($,I,U,q,G){this.ctx=U,this.once=q,this.weak=G,this._clearDispose=void 0,this._clearDispose=U.onDispose(()=>{$._removeListener(this)}),G?(this.callback=new WeakRef(I),weakListeners().registry.register(I,{event:new WeakRef($),listener:this},this)):this.callback=I}derefCallback(){return this.weak?this.callback.deref():this.callback}async trigger($){try{const I=this.derefCallback();await(I==null?void 0:I($))}catch(I){this.ctx.raise(I)}}remove(){var $;($=this._clearDispose)==null||$.call(this),weakListeners().registry.unregister(this)}},weakListenersState=null,weakListeners=()=>(weakListenersState??(weakListenersState=new FinalizationRegistry(({event:$,listener:I})=>{var U;(U=$.deref())==null||U._removeListener(I)})),{registry:weakListenersState}),TriggerState;(function($){$.WAITING="WAITING",$.RESOLVED="RESOLVED",$.REJECTED="REJECTED"})(TriggerState||(TriggerState={}));var Trigger=class{constructor($={autoReset:!1}){this._options=$,this._state="WAITING",this.reset()}get state(){return this._state}async wait({timeout:$}={}){return $?asyncTimeout(this._promise,$,new TimeoutError($)):this._promise}wake($){return this._state="RESOLVED",this._resolve($),this._options.autoReset?this.reset():this}reset(){return this._state="WAITING",this._promise=new Promise(($,I)=>{this._resolve=$,this._reject=I}),this._promise.catch(()=>{}),this}throw($){return this._state="REJECTED",this._reject($),this._options.autoReset?this.reset():this}},MulticastObservable=class rr extends Observable{constructor(I,U){super(q=>this._subscribe(q)),this._value=U,this._observers=new Set,this._completed=new Trigger,this._handlers={next:q=>{this._value=q,this._observers.forEach(G=>{var K;return(K=G.next)==null?void 0:K.call(G,q)})},error:q=>{this._observers.forEach(G=>{var K;return(K=G.error)==null?void 0:K.call(G,q)})},complete:()=>{this._completed.wake(),this._observers.forEach(q=>{var G;return(G=q.complete)==null?void 0:G.call(q)})}},this._observable=typeof I=="function"?new Observable(I):I,this._observable.subscribe(this._handlers)}static from(I,U){if("emit"in I)return new rr(G=>{I.on(K=>{G.next(K)})},U);const q=Observable.from(I);return new rr(q,U)}static of(...I){return new rr(Observable.of(...I.slice(1)),I[0])}static empty(){return EMPTY_OBSERVABLE}get(){if(this._value===void 0)throw new Error("MulticastObservable is not initialized.");return this._value}async wait({timeout:I}={}){return await this._completed.wait({timeout:I}),this.get()}forEach(I){return this._observable.forEach(I)}map(I){return new rr(this._observable.map(I),this._value&&I(this._value))}filter(I){return new rr(this._observable.filter(I),this._value&&I(this._value)?this._value:void 0)}reduce(I,U){return new rr(U?this._observable.reduce(I,U):this._observable.reduce(I),U??this._value)}flatMap(I){return new rr(this._observable.flatMap(I),this._value&&I(this._value).get())}concat(...I){return new rr(this._observable.concat(...I),this._value)}losslessConcat(I,...U){const q=U.filter(K=>K instanceof rr),G=I(this._value,q.map(K=>K.get()));return new rr(this._observable.concat(...U),G)}_subscribe(I){var U;return this._observers.has(I)||this._observers.add(I),this._value!==void 0&&((U=I.next)==null||U.call(I,this._value)),()=>{this._observers.delete(I)}}},EMPTY_OBSERVABLE=MulticastObservable.of(null),Mutex=class{constructor(){this._queue=Promise.resolve(),this._queueLength=0,this._tag=null}get tag(){return this._tag}isLocked(){return this._queueLength>0}async acquire($){const I=this._queue;let U;return this._queueLength++,this._queue=new Promise(q=>{U=new MutexGuard(()=>{this._queueLength--,this._tag=null,q()})}),await I,$!==void 0&&(this._tag=$),U}async executeSynchronized($){const I=await this.acquire();try{return await $()}finally{I.release()}}},MutexGuard=class{constructor($){this._release=$}release(){this._release()}[Symbol.dispose](){this.release()}},classMutexSymbol=Symbol("class-mutex"),enableWarning=globalThis.mochaExecutor,synchronized=($,I,U)=>{const q=U.value;U.value=async function(...K){const Y=this[classMutexSymbol]??(this[classMutexSymbol]=new Mutex),J=`${$.constructor.name}.${I}`;let X;enableWarning?X=await warnAfterTimeout(1e4,`lock on ${J} (taken by ${Y.tag})`,()=>Y.acquire(J)):X=await Y.acquire(J);try{return await q.apply(this,K)}finally{X.release()}},Object.defineProperty(U.value,"name",{value:I+"$synchronized"})},__dxlog_file3$5="/home/runner/work/dxos/dxos/packages/common/async/src/track-leaks.ts",enabled=typeof process<"u"&&!!process.env.DX_TRACK_LEAKS,openResources=new Set,trackResource=$=>{if(!enabled)return()=>{};const I=$();return openResources.add(I),()=>{openResources.delete(I)}},dumpLeaks=()=>{if(enabled){log$2.info(`Leaked resources ${openResources.size}:`,void 0,{F:__dxlog_file3$5,L:82,S:void 0,C:($,I)=>$(...I)});for(const $ of openResources)log$2.info(`- ${$.name} at`,void 0,{F:__dxlog_file3$5,L:84,S:void 0,C:(I,U)=>I(...U)}),log$2.info($.openStack.getStack(1),void 0,{F:__dxlog_file3$5,L:85,S:void 0,C:(I,U)=>I(...U)}),log$2.info(`
851
+ */(function($){const I=base64Js,U=ieee754,q=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;$.Buffer=J,$.SlowBuffer=se,$.INSPECT_MAX_BYTES=50;const G=2147483647;$.kMaxLength=G,J.TYPED_ARRAY_SUPPORT=K(),!J.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function K(){try{const le=new Uint8Array(1),re={foo:function(){return 42}};return Object.setPrototypeOf(re,Uint8Array.prototype),Object.setPrototypeOf(le,re),le.foo()===42}catch{return!1}}Object.defineProperty(J.prototype,"parent",{enumerable:!0,get:function(){if(J.isBuffer(this))return this.buffer}}),Object.defineProperty(J.prototype,"offset",{enumerable:!0,get:function(){if(J.isBuffer(this))return this.byteOffset}});function Y(le){if(le>G)throw new RangeError('The value "'+le+'" is invalid for option "size"');const re=new Uint8Array(le);return Object.setPrototypeOf(re,J.prototype),re}function J(le,re,ae){if(typeof le=="number"){if(typeof re=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ee(le)}return X(le,re,ae)}J.poolSize=8192;function X(le,re,ae){if(typeof le=="string")return te(le,re);if(ArrayBuffer.isView(le))return ie(le);if(le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof le);if(At(le,ArrayBuffer)||le&&At(le.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(At(le,SharedArrayBuffer)||le&&At(le.buffer,SharedArrayBuffer)))return oe(le,re,ae);if(typeof le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const pe=le.valueOf&&le.valueOf();if(pe!=null&&pe!==le)return J.from(pe,re,ae);const we=ce(le);if(we)return we;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof le[Symbol.toPrimitive]=="function")return J.from(le[Symbol.toPrimitive]("string"),re,ae);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof le)}J.from=function(le,re,ae){return X(le,re,ae)},Object.setPrototypeOf(J.prototype,Uint8Array.prototype),Object.setPrototypeOf(J,Uint8Array);function Z(le){if(typeof le!="number")throw new TypeError('"size" argument must be of type number');if(le<0)throw new RangeError('The value "'+le+'" is invalid for option "size"')}function Q(le,re,ae){return Z(le),le<=0?Y(le):re!==void 0?typeof ae=="string"?Y(le).fill(re,ae):Y(le).fill(re):Y(le)}J.alloc=function(le,re,ae){return Q(le,re,ae)};function ee(le){return Z(le),Y(le<0?0:fe(le)|0)}J.allocUnsafe=function(le){return ee(le)},J.allocUnsafeSlow=function(le){return ee(le)};function te(le,re){if((typeof re!="string"||re==="")&&(re="utf8"),!J.isEncoding(re))throw new TypeError("Unknown encoding: "+re);const ae=de(le,re)|0;let pe=Y(ae);const we=pe.write(le,re);return we!==ae&&(pe=pe.slice(0,we)),pe}function ne(le){const re=le.length<0?0:fe(le.length)|0,ae=Y(re);for(let pe=0;pe<re;pe+=1)ae[pe]=le[pe]&255;return ae}function ie(le){if(At(le,Uint8Array)){const re=new Uint8Array(le);return oe(re.buffer,re.byteOffset,re.byteLength)}return ne(le)}function oe(le,re,ae){if(re<0||le.byteLength<re)throw new RangeError('"offset" is outside of buffer bounds');if(le.byteLength<re+(ae||0))throw new RangeError('"length" is outside of buffer bounds');let pe;return re===void 0&&ae===void 0?pe=new Uint8Array(le):ae===void 0?pe=new Uint8Array(le,re):pe=new Uint8Array(le,re,ae),Object.setPrototypeOf(pe,J.prototype),pe}function ce(le){if(J.isBuffer(le)){const re=fe(le.length)|0,ae=Y(re);return ae.length===0||le.copy(ae,0,0,re),ae}if(le.length!==void 0)return typeof le.length!="number"||zt(le.length)?Y(0):ne(le);if(le.type==="Buffer"&&Array.isArray(le.data))return ne(le.data)}function fe(le){if(le>=G)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+G.toString(16)+" bytes");return le|0}function se(le){return+le!=le&&(le=0),J.alloc(+le)}J.isBuffer=function(re){return re!=null&&re._isBuffer===!0&&re!==J.prototype},J.compare=function(re,ae){if(At(re,Uint8Array)&&(re=J.from(re,re.offset,re.byteLength)),At(ae,Uint8Array)&&(ae=J.from(ae,ae.offset,ae.byteLength)),!J.isBuffer(re)||!J.isBuffer(ae))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(re===ae)return 0;let pe=re.length,we=ae.length;for(let Ee=0,De=Math.min(pe,we);Ee<De;++Ee)if(re[Ee]!==ae[Ee]){pe=re[Ee],we=ae[Ee];break}return pe<we?-1:we<pe?1:0},J.isEncoding=function(re){switch(String(re).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},J.concat=function(re,ae){if(!Array.isArray(re))throw new TypeError('"list" argument must be an Array of Buffers');if(re.length===0)return J.alloc(0);let pe;if(ae===void 0)for(ae=0,pe=0;pe<re.length;++pe)ae+=re[pe].length;const we=J.allocUnsafe(ae);let Ee=0;for(pe=0;pe<re.length;++pe){let De=re[pe];if(At(De,Uint8Array))Ee+De.length>we.length?(J.isBuffer(De)||(De=J.from(De)),De.copy(we,Ee)):Uint8Array.prototype.set.call(we,De,Ee);else if(J.isBuffer(De))De.copy(we,Ee);else throw new TypeError('"list" argument must be an Array of Buffers');Ee+=De.length}return we};function de(le,re){if(J.isBuffer(le))return le.length;if(ArrayBuffer.isView(le)||At(le,ArrayBuffer))return le.byteLength;if(typeof le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof le);const ae=le.length,pe=arguments.length>2&&arguments[2]===!0;if(!pe&&ae===0)return 0;let we=!1;for(;;)switch(re){case"ascii":case"latin1":case"binary":return ae;case"utf8":case"utf-8":return $t(le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ae*2;case"hex":return ae>>>1;case"base64":return jt(le).length;default:if(we)return pe?-1:$t(le).length;re=(""+re).toLowerCase(),we=!0}}J.byteLength=de;function ue(le,re,ae){let pe=!1;if((re===void 0||re<0)&&(re=0),re>this.length||((ae===void 0||ae>this.length)&&(ae=this.length),ae<=0)||(ae>>>=0,re>>>=0,ae<=re))return"";for(le||(le="utf8");;)switch(le){case"hex":return it(this,re,ae);case"utf8":case"utf-8":return Me(this,re,ae);case"ascii":return ot(this,re,ae);case"latin1":case"binary":return ft(this,re,ae);case"base64":return Be(this,re,ae);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return dt(this,re,ae);default:if(pe)throw new TypeError("Unknown encoding: "+le);le=(le+"").toLowerCase(),pe=!0}}J.prototype._isBuffer=!0;function he(le,re,ae){const pe=le[re];le[re]=le[ae],le[ae]=pe}J.prototype.swap16=function(){const re=this.length;if(re%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let ae=0;ae<re;ae+=2)he(this,ae,ae+1);return this},J.prototype.swap32=function(){const re=this.length;if(re%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let ae=0;ae<re;ae+=4)he(this,ae,ae+3),he(this,ae+1,ae+2);return this},J.prototype.swap64=function(){const re=this.length;if(re%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let ae=0;ae<re;ae+=8)he(this,ae,ae+7),he(this,ae+1,ae+6),he(this,ae+2,ae+5),he(this,ae+3,ae+4);return this},J.prototype.toString=function(){const re=this.length;return re===0?"":arguments.length===0?Me(this,0,re):ue.apply(this,arguments)},J.prototype.toLocaleString=J.prototype.toString,J.prototype.equals=function(re){if(!J.isBuffer(re))throw new TypeError("Argument must be a Buffer");return this===re?!0:J.compare(this,re)===0},J.prototype.inspect=function(){let re="";const ae=$.INSPECT_MAX_BYTES;return re=this.toString("hex",0,ae).replace(/(.{2})/g,"$1 ").trim(),this.length>ae&&(re+=" ... "),"<Buffer "+re+">"},q&&(J.prototype[q]=J.prototype.inspect),J.prototype.compare=function(re,ae,pe,we,Ee){if(At(re,Uint8Array)&&(re=J.from(re,re.offset,re.byteLength)),!J.isBuffer(re))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof re);if(ae===void 0&&(ae=0),pe===void 0&&(pe=re?re.length:0),we===void 0&&(we=0),Ee===void 0&&(Ee=this.length),ae<0||pe>re.length||we<0||Ee>this.length)throw new RangeError("out of range index");if(we>=Ee&&ae>=pe)return 0;if(we>=Ee)return-1;if(ae>=pe)return 1;if(ae>>>=0,pe>>>=0,we>>>=0,Ee>>>=0,this===re)return 0;let De=Ee-we,bt=pe-ae;const Mt=Math.min(De,bt),Rt=this.slice(we,Ee),Ot=re.slice(ae,pe);for(let Tt=0;Tt<Mt;++Tt)if(Rt[Tt]!==Ot[Tt]){De=Rt[Tt],bt=Ot[Tt];break}return De<bt?-1:bt<De?1:0};function ve(le,re,ae,pe,we){if(le.length===0)return-1;if(typeof ae=="string"?(pe=ae,ae=0):ae>2147483647?ae=2147483647:ae<-2147483648&&(ae=-2147483648),ae=+ae,zt(ae)&&(ae=we?0:le.length-1),ae<0&&(ae=le.length+ae),ae>=le.length){if(we)return-1;ae=le.length-1}else if(ae<0)if(we)ae=0;else return-1;if(typeof re=="string"&&(re=J.from(re,pe)),J.isBuffer(re))return re.length===0?-1:me(le,re,ae,pe,we);if(typeof re=="number")return re=re&255,typeof Uint8Array.prototype.indexOf=="function"?we?Uint8Array.prototype.indexOf.call(le,re,ae):Uint8Array.prototype.lastIndexOf.call(le,re,ae):me(le,[re],ae,pe,we);throw new TypeError("val must be string, number or Buffer")}function me(le,re,ae,pe,we){let Ee=1,De=le.length,bt=re.length;if(pe!==void 0&&(pe=String(pe).toLowerCase(),pe==="ucs2"||pe==="ucs-2"||pe==="utf16le"||pe==="utf-16le")){if(le.length<2||re.length<2)return-1;Ee=2,De/=2,bt/=2,ae/=2}function Mt(Ot,Tt){return Ee===1?Ot[Tt]:Ot.readUInt16BE(Tt*Ee)}let Rt;if(we){let Ot=-1;for(Rt=ae;Rt<De;Rt++)if(Mt(le,Rt)===Mt(re,Ot===-1?0:Rt-Ot)){if(Ot===-1&&(Ot=Rt),Rt-Ot+1===bt)return Ot*Ee}else Ot!==-1&&(Rt-=Rt-Ot),Ot=-1}else for(ae+bt>De&&(ae=De-bt),Rt=ae;Rt>=0;Rt--){let Ot=!0;for(let Tt=0;Tt<bt;Tt++)if(Mt(le,Rt+Tt)!==Mt(re,Tt)){Ot=!1;break}if(Ot)return Rt}return-1}J.prototype.includes=function(re,ae,pe){return this.indexOf(re,ae,pe)!==-1},J.prototype.indexOf=function(re,ae,pe){return ve(this,re,ae,pe,!0)},J.prototype.lastIndexOf=function(re,ae,pe){return ve(this,re,ae,pe,!1)};function be(le,re,ae,pe){ae=Number(ae)||0;const we=le.length-ae;pe?(pe=Number(pe),pe>we&&(pe=we)):pe=we;const Ee=re.length;pe>Ee/2&&(pe=Ee/2);let De;for(De=0;De<pe;++De){const bt=parseInt(re.substr(De*2,2),16);if(zt(bt))return De;le[ae+De]=bt}return De}function _e(le,re,ae,pe){return Gt($t(re,le.length-ae),le,ae,pe)}function Ce(le,re,ae,pe){return Gt(Et(re),le,ae,pe)}function xe(le,re,ae,pe){return Gt(jt(re),le,ae,pe)}function ke(le,re,ae,pe){return Gt(rt(re,le.length-ae),le,ae,pe)}J.prototype.write=function(re,ae,pe,we){if(ae===void 0)we="utf8",pe=this.length,ae=0;else if(pe===void 0&&typeof ae=="string")we=ae,pe=this.length,ae=0;else if(isFinite(ae))ae=ae>>>0,isFinite(pe)?(pe=pe>>>0,we===void 0&&(we="utf8")):(we=pe,pe=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const Ee=this.length-ae;if((pe===void 0||pe>Ee)&&(pe=Ee),re.length>0&&(pe<0||ae<0)||ae>this.length)throw new RangeError("Attempt to write outside buffer bounds");we||(we="utf8");let De=!1;for(;;)switch(we){case"hex":return be(this,re,ae,pe);case"utf8":case"utf-8":return _e(this,re,ae,pe);case"ascii":case"latin1":case"binary":return Ce(this,re,ae,pe);case"base64":return xe(this,re,ae,pe);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ke(this,re,ae,pe);default:if(De)throw new TypeError("Unknown encoding: "+we);we=(""+we).toLowerCase(),De=!0}},J.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Be(le,re,ae){return re===0&&ae===le.length?I.fromByteArray(le):I.fromByteArray(le.slice(re,ae))}function Me(le,re,ae){ae=Math.min(le.length,ae);const pe=[];let we=re;for(;we<ae;){const Ee=le[we];let De=null,bt=Ee>239?4:Ee>223?3:Ee>191?2:1;if(we+bt<=ae){let Mt,Rt,Ot,Tt;switch(bt){case 1:Ee<128&&(De=Ee);break;case 2:Mt=le[we+1],(Mt&192)===128&&(Tt=(Ee&31)<<6|Mt&63,Tt>127&&(De=Tt));break;case 3:Mt=le[we+1],Rt=le[we+2],(Mt&192)===128&&(Rt&192)===128&&(Tt=(Ee&15)<<12|(Mt&63)<<6|Rt&63,Tt>2047&&(Tt<55296||Tt>57343)&&(De=Tt));break;case 4:Mt=le[we+1],Rt=le[we+2],Ot=le[we+3],(Mt&192)===128&&(Rt&192)===128&&(Ot&192)===128&&(Tt=(Ee&15)<<18|(Mt&63)<<12|(Rt&63)<<6|Ot&63,Tt>65535&&Tt<1114112&&(De=Tt))}}De===null?(De=65533,bt=1):De>65535&&(De-=65536,pe.push(De>>>10&1023|55296),De=56320|De&1023),pe.push(De),we+=bt}return nt(pe)}const Ve=4096;function nt(le){const re=le.length;if(re<=Ve)return String.fromCharCode.apply(String,le);let ae="",pe=0;for(;pe<re;)ae+=String.fromCharCode.apply(String,le.slice(pe,pe+=Ve));return ae}function ot(le,re,ae){let pe="";ae=Math.min(le.length,ae);for(let we=re;we<ae;++we)pe+=String.fromCharCode(le[we]&127);return pe}function ft(le,re,ae){let pe="";ae=Math.min(le.length,ae);for(let we=re;we<ae;++we)pe+=String.fromCharCode(le[we]);return pe}function it(le,re,ae){const pe=le.length;(!re||re<0)&&(re=0),(!ae||ae<0||ae>pe)&&(ae=pe);let we="";for(let Ee=re;Ee<ae;++Ee)we+=an[le[Ee]];return we}function dt(le,re,ae){const pe=le.slice(re,ae);let we="";for(let Ee=0;Ee<pe.length-1;Ee+=2)we+=String.fromCharCode(pe[Ee]+pe[Ee+1]*256);return we}J.prototype.slice=function(re,ae){const pe=this.length;re=~~re,ae=ae===void 0?pe:~~ae,re<0?(re+=pe,re<0&&(re=0)):re>pe&&(re=pe),ae<0?(ae+=pe,ae<0&&(ae=0)):ae>pe&&(ae=pe),ae<re&&(ae=re);const we=this.subarray(re,ae);return Object.setPrototypeOf(we,J.prototype),we};function Qe(le,re,ae){if(le%1!==0||le<0)throw new RangeError("offset is not uint");if(le+re>ae)throw new RangeError("Trying to access beyond buffer length")}J.prototype.readUintLE=J.prototype.readUIntLE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re],Ee=1,De=0;for(;++De<ae&&(Ee*=256);)we+=this[re+De]*Ee;return we},J.prototype.readUintBE=J.prototype.readUIntBE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re+--ae],Ee=1;for(;ae>0&&(Ee*=256);)we+=this[re+--ae]*Ee;return we},J.prototype.readUint8=J.prototype.readUInt8=function(re,ae){return re=re>>>0,ae||Qe(re,1,this.length),this[re]},J.prototype.readUint16LE=J.prototype.readUInt16LE=function(re,ae){return re=re>>>0,ae||Qe(re,2,this.length),this[re]|this[re+1]<<8},J.prototype.readUint16BE=J.prototype.readUInt16BE=function(re,ae){return re=re>>>0,ae||Qe(re,2,this.length),this[re]<<8|this[re+1]},J.prototype.readUint32LE=J.prototype.readUInt32LE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),(this[re]|this[re+1]<<8|this[re+2]<<16)+this[re+3]*16777216},J.prototype.readUint32BE=J.prototype.readUInt32BE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]*16777216+(this[re+1]<<16|this[re+2]<<8|this[re+3])},J.prototype.readBigUInt64LE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=ae+this[++re]*2**8+this[++re]*2**16+this[++re]*2**24,Ee=this[++re]+this[++re]*2**8+this[++re]*2**16+pe*2**24;return BigInt(we)+(BigInt(Ee)<<BigInt(32))}),J.prototype.readBigUInt64BE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=ae*2**24+this[++re]*2**16+this[++re]*2**8+this[++re],Ee=this[++re]*2**24+this[++re]*2**16+this[++re]*2**8+pe;return(BigInt(we)<<BigInt(32))+BigInt(Ee)}),J.prototype.readIntLE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=this[re],Ee=1,De=0;for(;++De<ae&&(Ee*=256);)we+=this[re+De]*Ee;return Ee*=128,we>=Ee&&(we-=Math.pow(2,8*ae)),we},J.prototype.readIntBE=function(re,ae,pe){re=re>>>0,ae=ae>>>0,pe||Qe(re,ae,this.length);let we=ae,Ee=1,De=this[re+--we];for(;we>0&&(Ee*=256);)De+=this[re+--we]*Ee;return Ee*=128,De>=Ee&&(De-=Math.pow(2,8*ae)),De},J.prototype.readInt8=function(re,ae){return re=re>>>0,ae||Qe(re,1,this.length),this[re]&128?(255-this[re]+1)*-1:this[re]},J.prototype.readInt16LE=function(re,ae){re=re>>>0,ae||Qe(re,2,this.length);const pe=this[re]|this[re+1]<<8;return pe&32768?pe|4294901760:pe},J.prototype.readInt16BE=function(re,ae){re=re>>>0,ae||Qe(re,2,this.length);const pe=this[re+1]|this[re]<<8;return pe&32768?pe|4294901760:pe},J.prototype.readInt32LE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]|this[re+1]<<8|this[re+2]<<16|this[re+3]<<24},J.prototype.readInt32BE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),this[re]<<24|this[re+1]<<16|this[re+2]<<8|this[re+3]},J.prototype.readBigInt64LE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=this[re+4]+this[re+5]*2**8+this[re+6]*2**16+(pe<<24);return(BigInt(we)<<BigInt(32))+BigInt(ae+this[++re]*2**8+this[++re]*2**16+this[++re]*2**24)}),J.prototype.readBigInt64BE=St(function(re){re=re>>>0,Le(re,"offset");const ae=this[re],pe=this[re+7];(ae===void 0||pe===void 0)&&Ke(re,this.length-8);const we=(ae<<24)+this[++re]*2**16+this[++re]*2**8+this[++re];return(BigInt(we)<<BigInt(32))+BigInt(this[++re]*2**24+this[++re]*2**16+this[++re]*2**8+pe)}),J.prototype.readFloatLE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),U.read(this,re,!0,23,4)},J.prototype.readFloatBE=function(re,ae){return re=re>>>0,ae||Qe(re,4,this.length),U.read(this,re,!1,23,4)},J.prototype.readDoubleLE=function(re,ae){return re=re>>>0,ae||Qe(re,8,this.length),U.read(this,re,!0,52,8)},J.prototype.readDoubleBE=function(re,ae){return re=re>>>0,ae||Qe(re,8,this.length),U.read(this,re,!1,52,8)};function Ue(le,re,ae,pe,we,Ee){if(!J.isBuffer(le))throw new TypeError('"buffer" argument must be a Buffer instance');if(re>we||re<Ee)throw new RangeError('"value" argument is out of bounds');if(ae+pe>le.length)throw new RangeError("Index out of range")}J.prototype.writeUintLE=J.prototype.writeUIntLE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,pe=pe>>>0,!we){const bt=Math.pow(2,8*pe)-1;Ue(this,re,ae,pe,bt,0)}let Ee=1,De=0;for(this[ae]=re&255;++De<pe&&(Ee*=256);)this[ae+De]=re/Ee&255;return ae+pe},J.prototype.writeUintBE=J.prototype.writeUIntBE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,pe=pe>>>0,!we){const bt=Math.pow(2,8*pe)-1;Ue(this,re,ae,pe,bt,0)}let Ee=pe-1,De=1;for(this[ae+Ee]=re&255;--Ee>=0&&(De*=256);)this[ae+Ee]=re/De&255;return ae+pe},J.prototype.writeUint8=J.prototype.writeUInt8=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,1,255,0),this[ae]=re&255,ae+1},J.prototype.writeUint16LE=J.prototype.writeUInt16LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,65535,0),this[ae]=re&255,this[ae+1]=re>>>8,ae+2},J.prototype.writeUint16BE=J.prototype.writeUInt16BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,65535,0),this[ae]=re>>>8,this[ae+1]=re&255,ae+2},J.prototype.writeUint32LE=J.prototype.writeUInt32LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,4294967295,0),this[ae+3]=re>>>24,this[ae+2]=re>>>16,this[ae+1]=re>>>8,this[ae]=re&255,ae+4},J.prototype.writeUint32BE=J.prototype.writeUInt32BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,4294967295,0),this[ae]=re>>>24,this[ae+1]=re>>>16,this[ae+2]=re>>>8,this[ae+3]=re&255,ae+4};function We(le,re,ae,pe,we){ye(re,pe,we,le,ae,7);let Ee=Number(re&BigInt(4294967295));le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee,Ee=Ee>>8,le[ae++]=Ee;let De=Number(re>>BigInt(32)&BigInt(4294967295));return le[ae++]=De,De=De>>8,le[ae++]=De,De=De>>8,le[ae++]=De,De=De>>8,le[ae++]=De,ae}function tt(le,re,ae,pe,we){ye(re,pe,we,le,ae,7);let Ee=Number(re&BigInt(4294967295));le[ae+7]=Ee,Ee=Ee>>8,le[ae+6]=Ee,Ee=Ee>>8,le[ae+5]=Ee,Ee=Ee>>8,le[ae+4]=Ee;let De=Number(re>>BigInt(32)&BigInt(4294967295));return le[ae+3]=De,De=De>>8,le[ae+2]=De,De=De>>8,le[ae+1]=De,De=De>>8,le[ae]=De,ae+8}J.prototype.writeBigUInt64LE=St(function(re,ae=0){return We(this,re,ae,BigInt(0),BigInt("0xffffffffffffffff"))}),J.prototype.writeBigUInt64BE=St(function(re,ae=0){return tt(this,re,ae,BigInt(0),BigInt("0xffffffffffffffff"))}),J.prototype.writeIntLE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,!we){const Mt=Math.pow(2,8*pe-1);Ue(this,re,ae,pe,Mt-1,-Mt)}let Ee=0,De=1,bt=0;for(this[ae]=re&255;++Ee<pe&&(De*=256);)re<0&&bt===0&&this[ae+Ee-1]!==0&&(bt=1),this[ae+Ee]=(re/De>>0)-bt&255;return ae+pe},J.prototype.writeIntBE=function(re,ae,pe,we){if(re=+re,ae=ae>>>0,!we){const Mt=Math.pow(2,8*pe-1);Ue(this,re,ae,pe,Mt-1,-Mt)}let Ee=pe-1,De=1,bt=0;for(this[ae+Ee]=re&255;--Ee>=0&&(De*=256);)re<0&&bt===0&&this[ae+Ee+1]!==0&&(bt=1),this[ae+Ee]=(re/De>>0)-bt&255;return ae+pe},J.prototype.writeInt8=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,1,127,-128),re<0&&(re=255+re+1),this[ae]=re&255,ae+1},J.prototype.writeInt16LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,32767,-32768),this[ae]=re&255,this[ae+1]=re>>>8,ae+2},J.prototype.writeInt16BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,2,32767,-32768),this[ae]=re>>>8,this[ae+1]=re&255,ae+2},J.prototype.writeInt32LE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,2147483647,-2147483648),this[ae]=re&255,this[ae+1]=re>>>8,this[ae+2]=re>>>16,this[ae+3]=re>>>24,ae+4},J.prototype.writeInt32BE=function(re,ae,pe){return re=+re,ae=ae>>>0,pe||Ue(this,re,ae,4,2147483647,-2147483648),re<0&&(re=4294967295+re+1),this[ae]=re>>>24,this[ae+1]=re>>>16,this[ae+2]=re>>>8,this[ae+3]=re&255,ae+4},J.prototype.writeBigInt64LE=St(function(re,ae=0){return We(this,re,ae,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),J.prototype.writeBigInt64BE=St(function(re,ae=0){return tt(this,re,ae,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function vt(le,re,ae,pe,we,Ee){if(ae+pe>le.length)throw new RangeError("Index out of range");if(ae<0)throw new RangeError("Index out of range")}function je(le,re,ae,pe,we){return re=+re,ae=ae>>>0,we||vt(le,re,ae,4),U.write(le,re,ae,pe,23,4),ae+4}J.prototype.writeFloatLE=function(re,ae,pe){return je(this,re,ae,!0,pe)},J.prototype.writeFloatBE=function(re,ae,pe){return je(this,re,ae,!1,pe)};function ze(le,re,ae,pe,we){return re=+re,ae=ae>>>0,we||vt(le,re,ae,8),U.write(le,re,ae,pe,52,8),ae+8}J.prototype.writeDoubleLE=function(re,ae,pe){return ze(this,re,ae,!0,pe)},J.prototype.writeDoubleBE=function(re,ae,pe){return ze(this,re,ae,!1,pe)},J.prototype.copy=function(re,ae,pe,we){if(!J.isBuffer(re))throw new TypeError("argument should be a Buffer");if(pe||(pe=0),!we&&we!==0&&(we=this.length),ae>=re.length&&(ae=re.length),ae||(ae=0),we>0&&we<pe&&(we=pe),we===pe||re.length===0||this.length===0)return 0;if(ae<0)throw new RangeError("targetStart out of bounds");if(pe<0||pe>=this.length)throw new RangeError("Index out of range");if(we<0)throw new RangeError("sourceEnd out of bounds");we>this.length&&(we=this.length),re.length-ae<we-pe&&(we=re.length-ae+pe);const Ee=we-pe;return this===re&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(ae,pe,we):Uint8Array.prototype.set.call(re,this.subarray(pe,we),ae),Ee},J.prototype.fill=function(re,ae,pe,we){if(typeof re=="string"){if(typeof ae=="string"?(we=ae,ae=0,pe=this.length):typeof pe=="string"&&(we=pe,pe=this.length),we!==void 0&&typeof we!="string")throw new TypeError("encoding must be a string");if(typeof we=="string"&&!J.isEncoding(we))throw new TypeError("Unknown encoding: "+we);if(re.length===1){const De=re.charCodeAt(0);(we==="utf8"&&De<128||we==="latin1")&&(re=De)}}else typeof re=="number"?re=re&255:typeof re=="boolean"&&(re=Number(re));if(ae<0||this.length<ae||this.length<pe)throw new RangeError("Out of range index");if(pe<=ae)return this;ae=ae>>>0,pe=pe===void 0?this.length:pe>>>0,re||(re=0);let Ee;if(typeof re=="number")for(Ee=ae;Ee<pe;++Ee)this[Ee]=re;else{const De=J.isBuffer(re)?re:J.from(re,we),bt=De.length;if(bt===0)throw new TypeError('The value "'+re+'" is invalid for argument "value"');for(Ee=0;Ee<pe-ae;++Ee)this[Ee+ae]=De[Ee%bt]}return this};const Ae={};function Se(le,re,ae){Ae[le]=class extends ae{constructor(){super(),Object.defineProperty(this,"message",{value:re.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${le}]`,this.stack,delete this.name}get code(){return le}set code(we){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:we,writable:!0})}toString(){return`${this.name} [${le}]: ${this.message}`}}}Se("ERR_BUFFER_OUT_OF_BOUNDS",function(le){return le?`${le} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Se("ERR_INVALID_ARG_TYPE",function(le,re){return`The "${le}" argument must be of type number. Received type ${typeof re}`},TypeError),Se("ERR_OUT_OF_RANGE",function(le,re,ae){let pe=`The value of "${le}" is out of range.`,we=ae;return Number.isInteger(ae)&&Math.abs(ae)>2**32?we=Re(String(ae)):typeof ae=="bigint"&&(we=String(ae),(ae>BigInt(2)**BigInt(32)||ae<-(BigInt(2)**BigInt(32)))&&(we=Re(we)),we+="n"),pe+=` It must be ${re}. Received ${we}`,pe},RangeError);function Re(le){let re="",ae=le.length;const pe=le[0]==="-"?1:0;for(;ae>=pe+4;ae-=3)re=`_${le.slice(ae-3,ae)}${re}`;return`${le.slice(0,ae)}${re}`}function ge(le,re,ae){Le(re,"offset"),(le[re]===void 0||le[re+ae]===void 0)&&Ke(re,le.length-(ae+1))}function ye(le,re,ae,pe,we,Ee){if(le>ae||le<re){const De=typeof re=="bigint"?"n":"";let bt;throw Ee>3?re===0||re===BigInt(0)?bt=`>= 0${De} and < 2${De} ** ${(Ee+1)*8}${De}`:bt=`>= -(2${De} ** ${(Ee+1)*8-1}${De}) and < 2 ** ${(Ee+1)*8-1}${De}`:bt=`>= ${re}${De} and <= ${ae}${De}`,new Ae.ERR_OUT_OF_RANGE("value",bt,le)}ge(pe,we,Ee)}function Le(le,re){if(typeof le!="number")throw new Ae.ERR_INVALID_ARG_TYPE(re,"number",le)}function Ke(le,re,ae){throw Math.floor(le)!==le?(Le(le,ae),new Ae.ERR_OUT_OF_RANGE(ae||"offset","an integer",le)):re<0?new Ae.ERR_BUFFER_OUT_OF_BOUNDS:new Ae.ERR_OUT_OF_RANGE(ae||"offset",`>= ${ae?1:0} and <= ${re}`,le)}const st=/[^+/0-9A-Za-z-_]/g;function ut(le){if(le=le.split("=")[0],le=le.trim().replace(st,""),le.length<2)return"";for(;le.length%4!==0;)le=le+"=";return le}function $t(le,re){re=re||1/0;let ae;const pe=le.length;let we=null;const Ee=[];for(let De=0;De<pe;++De){if(ae=le.charCodeAt(De),ae>55295&&ae<57344){if(!we){if(ae>56319){(re-=3)>-1&&Ee.push(239,191,189);continue}else if(De+1===pe){(re-=3)>-1&&Ee.push(239,191,189);continue}we=ae;continue}if(ae<56320){(re-=3)>-1&&Ee.push(239,191,189),we=ae;continue}ae=(we-55296<<10|ae-56320)+65536}else we&&(re-=3)>-1&&Ee.push(239,191,189);if(we=null,ae<128){if((re-=1)<0)break;Ee.push(ae)}else if(ae<2048){if((re-=2)<0)break;Ee.push(ae>>6|192,ae&63|128)}else if(ae<65536){if((re-=3)<0)break;Ee.push(ae>>12|224,ae>>6&63|128,ae&63|128)}else if(ae<1114112){if((re-=4)<0)break;Ee.push(ae>>18|240,ae>>12&63|128,ae>>6&63|128,ae&63|128)}else throw new Error("Invalid code point")}return Ee}function Et(le){const re=[];for(let ae=0;ae<le.length;++ae)re.push(le.charCodeAt(ae)&255);return re}function rt(le,re){let ae,pe,we;const Ee=[];for(let De=0;De<le.length&&!((re-=2)<0);++De)ae=le.charCodeAt(De),pe=ae>>8,we=ae%256,Ee.push(we),Ee.push(pe);return Ee}function jt(le){return I.toByteArray(ut(le))}function Gt(le,re,ae,pe){let we;for(we=0;we<pe&&!(we+ae>=re.length||we>=le.length);++we)re[we+ae]=le[we];return we}function At(le,re){return le instanceof re||le!=null&&le.constructor!=null&&le.constructor.name!=null&&le.constructor.name===re.name}function zt(le){return le!==le}const an=function(){const le="0123456789abcdef",re=new Array(256);for(let ae=0;ae<16;++ae){const pe=ae*16;for(let we=0;we<16;++we)re[pe+we]=le[ae]+le[we]}return re}();function St(le){return typeof BigInt>"u"?Ut:le}function Ut(){throw new Error("BigInt not supported")}})(buffer);const __viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze(Object.defineProperty({__proto__:null,default:__viteBrowserExternal},Symbol.toStringTag,{value:"Module"})),require$$3=getAugmentedNamespace(__viteBrowserExternal$1);var buffer_list,hasRequiredBuffer_list;function requireBuffer_list(){if(hasRequiredBuffer_list)return buffer_list;hasRequiredBuffer_list=1;function $(te,ne){var ie=Object.keys(te);if(Object.getOwnPropertySymbols){var oe=Object.getOwnPropertySymbols(te);ne&&(oe=oe.filter(function(ce){return Object.getOwnPropertyDescriptor(te,ce).enumerable})),ie.push.apply(ie,oe)}return ie}function I(te){for(var ne=1;ne<arguments.length;ne++){var ie=arguments[ne]!=null?arguments[ne]:{};ne%2?$(Object(ie),!0).forEach(function(oe){U(te,oe,ie[oe])}):Object.getOwnPropertyDescriptors?Object.defineProperties(te,Object.getOwnPropertyDescriptors(ie)):$(Object(ie)).forEach(function(oe){Object.defineProperty(te,oe,Object.getOwnPropertyDescriptor(ie,oe))})}return te}function U(te,ne,ie){return ne in te?Object.defineProperty(te,ne,{value:ie,enumerable:!0,configurable:!0,writable:!0}):te[ne]=ie,te}function q(te,ne){if(!(te instanceof ne))throw new TypeError("Cannot call a class as a function")}function G(te,ne){for(var ie=0;ie<ne.length;ie++){var oe=ne[ie];oe.enumerable=oe.enumerable||!1,oe.configurable=!0,"value"in oe&&(oe.writable=!0),Object.defineProperty(te,oe.key,oe)}}function K(te,ne,ie){return ne&&G(te.prototype,ne),ie&&G(te,ie),te}var Y=buffer,J=Y.Buffer,X=require$$3,Z=X.inspect,Q=Z&&Z.custom||"inspect";function ee(te,ne,ie){J.prototype.copy.call(te,ne,ie)}return buffer_list=function(){function te(){q(this,te),this.head=null,this.tail=null,this.length=0}return K(te,[{key:"push",value:function(ie){var oe={data:ie,next:null};this.length>0?this.tail.next=oe:this.head=oe,this.tail=oe,++this.length}},{key:"unshift",value:function(ie){var oe={data:ie,next:this.head};this.length===0&&(this.tail=oe),this.head=oe,++this.length}},{key:"shift",value:function(){if(this.length!==0){var ie=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,ie}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(ie){if(this.length===0)return"";for(var oe=this.head,ce=""+oe.data;oe=oe.next;)ce+=ie+oe.data;return ce}},{key:"concat",value:function(ie){if(this.length===0)return J.alloc(0);for(var oe=J.allocUnsafe(ie>>>0),ce=this.head,fe=0;ce;)ee(ce.data,oe,fe),fe+=ce.data.length,ce=ce.next;return oe}},{key:"consume",value:function(ie,oe){var ce;return ie<this.head.data.length?(ce=this.head.data.slice(0,ie),this.head.data=this.head.data.slice(ie)):ie===this.head.data.length?ce=this.shift():ce=oe?this._getString(ie):this._getBuffer(ie),ce}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(ie){var oe=this.head,ce=1,fe=oe.data;for(ie-=fe.length;oe=oe.next;){var se=oe.data,de=ie>se.length?se.length:ie;if(de===se.length?fe+=se:fe+=se.slice(0,ie),ie-=de,ie===0){de===se.length?(++ce,oe.next?this.head=oe.next:this.head=this.tail=null):(this.head=oe,oe.data=se.slice(de));break}++ce}return this.length-=ce,fe}},{key:"_getBuffer",value:function(ie){var oe=J.allocUnsafe(ie),ce=this.head,fe=1;for(ce.data.copy(oe),ie-=ce.data.length;ce=ce.next;){var se=ce.data,de=ie>se.length?se.length:ie;if(se.copy(oe,oe.length-ie,0,de),ie-=de,ie===0){de===se.length?(++fe,ce.next?this.head=ce.next:this.head=this.tail=null):(this.head=ce,ce.data=se.slice(de));break}++fe}return this.length-=fe,oe}},{key:Q,value:function(ie,oe){return Z(this,I({},oe,{depth:0,customInspect:!1}))}}]),te}(),buffer_list}function destroy($,I){var U=this,q=this._readableState&&this._readableState.destroyed,G=this._writableState&&this._writableState.destroyed;return q||G?(I?I($):$&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(emitErrorNT,this,$)):process.nextTick(emitErrorNT,this,$)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy($||null,function(K){!I&&K?U._writableState?U._writableState.errorEmitted?process.nextTick(emitCloseNT,U):(U._writableState.errorEmitted=!0,process.nextTick(emitErrorAndCloseNT,U,K)):process.nextTick(emitErrorAndCloseNT,U,K):I?(process.nextTick(emitCloseNT,U),I(K)):process.nextTick(emitCloseNT,U)}),this)}function emitErrorAndCloseNT($,I){emitErrorNT($,I),emitCloseNT($)}function emitCloseNT($){$._writableState&&!$._writableState.emitClose||$._readableState&&!$._readableState.emitClose||$.emit("close")}function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function emitErrorNT($,I){$.emit("error",I)}function errorOrDestroy($,I){var U=$._readableState,q=$._writableState;U&&U.autoDestroy||q&&q.autoDestroy?$.destroy(I):$.emit("error",I)}var destroy_1={destroy,undestroy,errorOrDestroy},errorsBrowser={};function _inheritsLoose($,I){$.prototype=Object.create(I.prototype),$.prototype.constructor=$,$.__proto__=I}var codes={};function createErrorType($,I,U){U||(U=Error);function q(K,Y,J){return typeof I=="string"?I:I(K,Y,J)}var G=function(K){_inheritsLoose(Y,K);function Y(J,X,Z){return K.call(this,q(J,X,Z))||this}return Y}(U);G.prototype.name=U.name,G.prototype.code=$,codes[$]=G}function oneOf($,I){if(Array.isArray($)){var U=$.length;return $=$.map(function(q){return String(q)}),U>2?"one of ".concat(I," ").concat($.slice(0,U-1).join(", "),", or ")+$[U-1]:U===2?"one of ".concat(I," ").concat($[0]," or ").concat($[1]):"of ".concat(I," ").concat($[0])}else return"of ".concat(I," ").concat(String($))}function startsWith($,I,U){return $.substr(!U||U<0?0:+U,I.length)===I}function endsWith($,I,U){return(U===void 0||U>$.length)&&(U=$.length),$.substring(U-I.length,U)===I}function includes($,I,U){return typeof U!="number"&&(U=0),U+I.length>$.length?!1:$.indexOf(I,U)!==-1}createErrorType("ERR_INVALID_OPT_VALUE",function($,I){return'The value "'+I+'" is invalid for option "'+$+'"'},TypeError),createErrorType("ERR_INVALID_ARG_TYPE",function($,I,U){var q;typeof I=="string"&&startsWith(I,"not ")?(q="must not be",I=I.replace(/^not /,"")):q="must be";var G;if(endsWith($," argument"))G="The ".concat($," ").concat(q," ").concat(oneOf(I,"type"));else{var K=includes($,".")?"property":"argument";G='The "'.concat($,'" ').concat(K," ").concat(q," ").concat(oneOf(I,"type"))}return G+=". Received type ".concat(typeof U),G},TypeError),createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),createErrorType("ERR_METHOD_NOT_IMPLEMENTED",function($){return"The "+$+" method is not implemented"}),createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close"),createErrorType("ERR_STREAM_DESTROYED",function($){return"Cannot call "+$+" after a stream was destroyed"}),createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end"),createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),createErrorType("ERR_UNKNOWN_ENCODING",function($){return"Unknown encoding: "+$},TypeError),createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),errorsBrowser.codes=codes;var ERR_INVALID_OPT_VALUE=errorsBrowser.codes.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom($,I,U){return $.highWaterMark!=null?$.highWaterMark:I?$[U]:null}function getHighWaterMark($,I,U,q){var G=highWaterMarkFrom(I,q,U);if(G!=null){if(!(isFinite(G)&&Math.floor(G)===G)||G<0){var K=q?U:"highWaterMark";throw new ERR_INVALID_OPT_VALUE(K,G)}return Math.floor(G)}return $.objectMode?16:16*1024}var state={getHighWaterMark},inherits_browser={exports:{}};typeof Object.create=="function"?inherits_browser.exports=function(I,U){U&&(I.super_=U,I.prototype=Object.create(U.prototype,{constructor:{value:I,enumerable:!1,writable:!0,configurable:!0}}))}:inherits_browser.exports=function(I,U){if(U){I.super_=U;var q=function(){};q.prototype=U.prototype,I.prototype=new q,I.prototype.constructor=I}};var inherits_browserExports=inherits_browser.exports,browser$3=deprecate;function deprecate($,I){if(config$1("noDeprecation"))return $;var U=!1;function q(){if(!U){if(config$1("throwDeprecation"))throw new Error(I);config$1("traceDeprecation")?console.trace(I):console.warn(I),U=!0}return $.apply(this,arguments)}return q}function config$1($){try{if(!commonjsGlobal.localStorage)return!1}catch{return!1}var I=commonjsGlobal.localStorage[$];return I==null?!1:String(I).toLowerCase()==="true"}var _stream_writable,hasRequired_stream_writable;function require_stream_writable(){if(hasRequired_stream_writable)return _stream_writable;hasRequired_stream_writable=1,_stream_writable=be;function $(je){var ze=this;this.next=null,this.entry=null,this.finish=function(){vt(ze,je)}}var I;be.WritableState=ve;var U={deprecate:browser$3},q=streamBrowser,G=buffer.Buffer,K=commonjsGlobal.Uint8Array||function(){};function Y(je){return G.from(je)}function J(je){return G.isBuffer(je)||je instanceof K}var X=destroy_1,Z=state,Q=Z.getHighWaterMark,ee=errorsBrowser.codes,te=ee.ERR_INVALID_ARG_TYPE,ne=ee.ERR_METHOD_NOT_IMPLEMENTED,ie=ee.ERR_MULTIPLE_CALLBACK,oe=ee.ERR_STREAM_CANNOT_PIPE,ce=ee.ERR_STREAM_DESTROYED,fe=ee.ERR_STREAM_NULL_VALUES,se=ee.ERR_STREAM_WRITE_AFTER_END,de=ee.ERR_UNKNOWN_ENCODING,ue=X.errorOrDestroy;inherits_browserExports(be,q);function he(){}function ve(je,ze,Ae){I=I||require_stream_duplex(),je=je||{},typeof Ae!="boolean"&&(Ae=ze instanceof I),this.objectMode=!!je.objectMode,Ae&&(this.objectMode=this.objectMode||!!je.writableObjectMode),this.highWaterMark=Q(this,je,"writableHighWaterMark",Ae),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var Se=je.decodeStrings===!1;this.decodeStrings=!Se,this.defaultEncoding=je.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(Re){nt(ze,Re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=je.emitClose!==!1,this.autoDestroy=!!je.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new $(this)}ve.prototype.getBuffer=function(){for(var ze=this.bufferedRequest,Ae=[];ze;)Ae.push(ze),ze=ze.next;return Ae},function(){try{Object.defineProperty(ve.prototype,"buffer",{get:U.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var me;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(me=Function.prototype[Symbol.hasInstance],Object.defineProperty(be,Symbol.hasInstance,{value:function(ze){return me.call(this,ze)?!0:this!==be?!1:ze&&ze._writableState instanceof ve}})):me=function(ze){return ze instanceof this};function be(je){I=I||require_stream_duplex();var ze=this instanceof I;if(!ze&&!me.call(be,this))return new be(je);this._writableState=new ve(je,this,ze),this.writable=!0,je&&(typeof je.write=="function"&&(this._write=je.write),typeof je.writev=="function"&&(this._writev=je.writev),typeof je.destroy=="function"&&(this._destroy=je.destroy),typeof je.final=="function"&&(this._final=je.final)),q.call(this)}be.prototype.pipe=function(){ue(this,new oe)};function _e(je,ze){var Ae=new se;ue(je,Ae),process.nextTick(ze,Ae)}function Ce(je,ze,Ae,Se){var Re;return Ae===null?Re=new fe:typeof Ae!="string"&&!ze.objectMode&&(Re=new te("chunk",["string","Buffer"],Ae)),Re?(ue(je,Re),process.nextTick(Se,Re),!1):!0}be.prototype.write=function(je,ze,Ae){var Se=this._writableState,Re=!1,ge=!Se.objectMode&&J(je);return ge&&!G.isBuffer(je)&&(je=Y(je)),typeof ze=="function"&&(Ae=ze,ze=null),ge?ze="buffer":ze||(ze=Se.defaultEncoding),typeof Ae!="function"&&(Ae=he),Se.ending?_e(this,Ae):(ge||Ce(this,Se,je,Ae))&&(Se.pendingcb++,Re=ke(this,Se,ge,je,ze,Ae)),Re},be.prototype.cork=function(){this._writableState.corked++},be.prototype.uncork=function(){var je=this._writableState;je.corked&&(je.corked--,!je.writing&&!je.corked&&!je.bufferProcessing&&je.bufferedRequest&&it(this,je))},be.prototype.setDefaultEncoding=function(ze){if(typeof ze=="string"&&(ze=ze.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((ze+"").toLowerCase())>-1))throw new de(ze);return this._writableState.defaultEncoding=ze,this},Object.defineProperty(be.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function xe(je,ze,Ae){return!je.objectMode&&je.decodeStrings!==!1&&typeof ze=="string"&&(ze=G.from(ze,Ae)),ze}Object.defineProperty(be.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function ke(je,ze,Ae,Se,Re,ge){if(!Ae){var ye=xe(ze,Se,Re);Se!==ye&&(Ae=!0,Re="buffer",Se=ye)}var Le=ze.objectMode?1:Se.length;ze.length+=Le;var Ke=ze.length<ze.highWaterMark;if(Ke||(ze.needDrain=!0),ze.writing||ze.corked){var st=ze.lastBufferedRequest;ze.lastBufferedRequest={chunk:Se,encoding:Re,isBuf:Ae,callback:ge,next:null},st?st.next=ze.lastBufferedRequest:ze.bufferedRequest=ze.lastBufferedRequest,ze.bufferedRequestCount+=1}else Be(je,ze,!1,Le,Se,Re,ge);return Ke}function Be(je,ze,Ae,Se,Re,ge,ye){ze.writelen=Se,ze.writecb=ye,ze.writing=!0,ze.sync=!0,ze.destroyed?ze.onwrite(new ce("write")):Ae?je._writev(Re,ze.onwrite):je._write(Re,ge,ze.onwrite),ze.sync=!1}function Me(je,ze,Ae,Se,Re){--ze.pendingcb,Ae?(process.nextTick(Re,Se),process.nextTick(We,je,ze),je._writableState.errorEmitted=!0,ue(je,Se)):(Re(Se),je._writableState.errorEmitted=!0,ue(je,Se),We(je,ze))}function Ve(je){je.writing=!1,je.writecb=null,je.length-=je.writelen,je.writelen=0}function nt(je,ze){var Ae=je._writableState,Se=Ae.sync,Re=Ae.writecb;if(typeof Re!="function")throw new ie;if(Ve(Ae),ze)Me(je,Ae,Se,ze,Re);else{var ge=dt(Ae)||je.destroyed;!ge&&!Ae.corked&&!Ae.bufferProcessing&&Ae.bufferedRequest&&it(je,Ae),Se?process.nextTick(ot,je,Ae,ge,Re):ot(je,Ae,ge,Re)}}function ot(je,ze,Ae,Se){Ae||ft(je,ze),ze.pendingcb--,Se(),We(je,ze)}function ft(je,ze){ze.length===0&&ze.needDrain&&(ze.needDrain=!1,je.emit("drain"))}function it(je,ze){ze.bufferProcessing=!0;var Ae=ze.bufferedRequest;if(je._writev&&Ae&&Ae.next){var Se=ze.bufferedRequestCount,Re=new Array(Se),ge=ze.corkedRequestsFree;ge.entry=Ae;for(var ye=0,Le=!0;Ae;)Re[ye]=Ae,Ae.isBuf||(Le=!1),Ae=Ae.next,ye+=1;Re.allBuffers=Le,Be(je,ze,!0,ze.length,Re,"",ge.finish),ze.pendingcb++,ze.lastBufferedRequest=null,ge.next?(ze.corkedRequestsFree=ge.next,ge.next=null):ze.corkedRequestsFree=new $(ze),ze.bufferedRequestCount=0}else{for(;Ae;){var Ke=Ae.chunk,st=Ae.encoding,ut=Ae.callback,$t=ze.objectMode?1:Ke.length;if(Be(je,ze,!1,$t,Ke,st,ut),Ae=Ae.next,ze.bufferedRequestCount--,ze.writing)break}Ae===null&&(ze.lastBufferedRequest=null)}ze.bufferedRequest=Ae,ze.bufferProcessing=!1}be.prototype._write=function(je,ze,Ae){Ae(new ne("_write()"))},be.prototype._writev=null,be.prototype.end=function(je,ze,Ae){var Se=this._writableState;return typeof je=="function"?(Ae=je,je=null,ze=null):typeof ze=="function"&&(Ae=ze,ze=null),je!=null&&this.write(je,ze),Se.corked&&(Se.corked=1,this.uncork()),Se.ending||tt(this,Se,Ae),this},Object.defineProperty(be.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function dt(je){return je.ending&&je.length===0&&je.bufferedRequest===null&&!je.finished&&!je.writing}function Qe(je,ze){je._final(function(Ae){ze.pendingcb--,Ae&&ue(je,Ae),ze.prefinished=!0,je.emit("prefinish"),We(je,ze)})}function Ue(je,ze){!ze.prefinished&&!ze.finalCalled&&(typeof je._final=="function"&&!ze.destroyed?(ze.pendingcb++,ze.finalCalled=!0,process.nextTick(Qe,je,ze)):(ze.prefinished=!0,je.emit("prefinish")))}function We(je,ze){var Ae=dt(ze);if(Ae&&(Ue(je,ze),ze.pendingcb===0&&(ze.finished=!0,je.emit("finish"),ze.autoDestroy))){var Se=je._readableState;(!Se||Se.autoDestroy&&Se.endEmitted)&&je.destroy()}return Ae}function tt(je,ze,Ae){ze.ending=!0,We(je,ze),Ae&&(ze.finished?process.nextTick(Ae):je.once("finish",Ae)),ze.ended=!0,je.writable=!1}function vt(je,ze,Ae){var Se=je.entry;for(je.entry=null;Se;){var Re=Se.callback;ze.pendingcb--,Re(Ae),Se=Se.next}ze.corkedRequestsFree.next=je}return Object.defineProperty(be.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(ze){this._writableState&&(this._writableState.destroyed=ze)}}),be.prototype.destroy=X.destroy,be.prototype._undestroy=X.undestroy,be.prototype._destroy=function(je,ze){ze(je)},_stream_writable}var _stream_duplex,hasRequired_stream_duplex;function require_stream_duplex(){if(hasRequired_stream_duplex)return _stream_duplex;hasRequired_stream_duplex=1;var $=Object.keys||function(Z){var Q=[];for(var ee in Z)Q.push(ee);return Q};_stream_duplex=Y;var I=require_stream_readable(),U=require_stream_writable();inherits_browserExports(Y,I);for(var q=$(U.prototype),G=0;G<q.length;G++){var K=q[G];Y.prototype[K]||(Y.prototype[K]=U.prototype[K])}function Y(Z){if(!(this instanceof Y))return new Y(Z);I.call(this,Z),U.call(this,Z),this.allowHalfOpen=!0,Z&&(Z.readable===!1&&(this.readable=!1),Z.writable===!1&&(this.writable=!1),Z.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",J)))}Object.defineProperty(Y.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(Y.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Y.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function J(){this._writableState.ended||process.nextTick(X,this)}function X(Z){Z.end()}return Object.defineProperty(Y.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(Q){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=Q,this._writableState.destroyed=Q)}}),_stream_duplex}var string_decoder={},safeBuffer={exports:{}};/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var hasRequiredSafeBuffer;function requireSafeBuffer(){return hasRequiredSafeBuffer||(hasRequiredSafeBuffer=1,function($,I){var U=buffer,q=U.Buffer;function G(Y,J){for(var X in Y)J[X]=Y[X]}q.from&&q.alloc&&q.allocUnsafe&&q.allocUnsafeSlow?$.exports=U:(G(U,I),I.Buffer=K);function K(Y,J,X){return q(Y,J,X)}K.prototype=Object.create(q.prototype),G(q,K),K.from=function(Y,J,X){if(typeof Y=="number")throw new TypeError("Argument must not be a number");return q(Y,J,X)},K.alloc=function(Y,J,X){if(typeof Y!="number")throw new TypeError("Argument must be a number");var Z=q(Y);return J!==void 0?typeof X=="string"?Z.fill(J,X):Z.fill(J):Z.fill(0),Z},K.allocUnsafe=function(Y){if(typeof Y!="number")throw new TypeError("Argument must be a number");return q(Y)},K.allocUnsafeSlow=function(Y){if(typeof Y!="number")throw new TypeError("Argument must be a number");return U.SlowBuffer(Y)}}(safeBuffer,safeBuffer.exports)),safeBuffer.exports}var hasRequiredString_decoder;function requireString_decoder(){if(hasRequiredString_decoder)return string_decoder;hasRequiredString_decoder=1;var $=requireSafeBuffer().Buffer,I=$.isEncoding||function(fe){switch(fe=""+fe,fe&&fe.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function U(fe){if(!fe)return"utf8";for(var se;;)switch(fe){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return fe;default:if(se)return;fe=(""+fe).toLowerCase(),se=!0}}function q(fe){var se=U(fe);if(typeof se!="string"&&($.isEncoding===I||!I(fe)))throw new Error("Unknown encoding: "+fe);return se||fe}string_decoder.StringDecoder=G;function G(fe){this.encoding=q(fe);var se;switch(this.encoding){case"utf16le":this.text=ee,this.end=te,se=4;break;case"utf8":this.fillLast=X,se=4;break;case"base64":this.text=ne,this.end=ie,se=3;break;default:this.write=oe,this.end=ce;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=$.allocUnsafe(se)}G.prototype.write=function(fe){if(fe.length===0)return"";var se,de;if(this.lastNeed){if(se=this.fillLast(fe),se===void 0)return"";de=this.lastNeed,this.lastNeed=0}else de=0;return de<fe.length?se?se+this.text(fe,de):this.text(fe,de):se||""},G.prototype.end=Q,G.prototype.text=Z,G.prototype.fillLast=function(fe){if(this.lastNeed<=fe.length)return fe.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);fe.copy(this.lastChar,this.lastTotal-this.lastNeed,0,fe.length),this.lastNeed-=fe.length};function K(fe){return fe<=127?0:fe>>5===6?2:fe>>4===14?3:fe>>3===30?4:fe>>6===2?-1:-2}function Y(fe,se,de){var ue=se.length-1;if(ue<de)return 0;var he=K(se[ue]);return he>=0?(he>0&&(fe.lastNeed=he-1),he):--ue<de||he===-2?0:(he=K(se[ue]),he>=0?(he>0&&(fe.lastNeed=he-2),he):--ue<de||he===-2?0:(he=K(se[ue]),he>=0?(he>0&&(he===2?he=0:fe.lastNeed=he-3),he):0))}function J(fe,se,de){if((se[0]&192)!==128)return fe.lastNeed=0,"�";if(fe.lastNeed>1&&se.length>1){if((se[1]&192)!==128)return fe.lastNeed=1,"�";if(fe.lastNeed>2&&se.length>2&&(se[2]&192)!==128)return fe.lastNeed=2,"�"}}function X(fe){var se=this.lastTotal-this.lastNeed,de=J(this,fe);if(de!==void 0)return de;if(this.lastNeed<=fe.length)return fe.copy(this.lastChar,se,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);fe.copy(this.lastChar,se,0,fe.length),this.lastNeed-=fe.length}function Z(fe,se){var de=Y(this,fe,se);if(!this.lastNeed)return fe.toString("utf8",se);this.lastTotal=de;var ue=fe.length-(de-this.lastNeed);return fe.copy(this.lastChar,0,ue),fe.toString("utf8",se,ue)}function Q(fe){var se=fe&&fe.length?this.write(fe):"";return this.lastNeed?se+"�":se}function ee(fe,se){if((fe.length-se)%2===0){var de=fe.toString("utf16le",se);if(de){var ue=de.charCodeAt(de.length-1);if(ue>=55296&&ue<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=fe[fe.length-2],this.lastChar[1]=fe[fe.length-1],de.slice(0,-1)}return de}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=fe[fe.length-1],fe.toString("utf16le",se,fe.length-1)}function te(fe){var se=fe&&fe.length?this.write(fe):"";if(this.lastNeed){var de=this.lastTotal-this.lastNeed;return se+this.lastChar.toString("utf16le",0,de)}return se}function ne(fe,se){var de=(fe.length-se)%3;return de===0?fe.toString("base64",se):(this.lastNeed=3-de,this.lastTotal=3,de===1?this.lastChar[0]=fe[fe.length-1]:(this.lastChar[0]=fe[fe.length-2],this.lastChar[1]=fe[fe.length-1]),fe.toString("base64",se,fe.length-de))}function ie(fe){var se=fe&&fe.length?this.write(fe):"";return this.lastNeed?se+this.lastChar.toString("base64",0,3-this.lastNeed):se}function oe(fe){return fe.toString(this.encoding)}function ce(fe){return fe&&fe.length?this.write(fe):""}return string_decoder}var ERR_STREAM_PREMATURE_CLOSE=errorsBrowser.codes.ERR_STREAM_PREMATURE_CLOSE;function once$1($){var I=!1;return function(){if(!I){I=!0;for(var U=arguments.length,q=new Array(U),G=0;G<U;G++)q[G]=arguments[G];$.apply(this,q)}}}function noop$2(){}function isRequest$1($){return $.setHeader&&typeof $.abort=="function"}function eos$1($,I,U){if(typeof I=="function")return eos$1($,null,I);I||(I={}),U=once$1(U||noop$2);var q=I.readable||I.readable!==!1&&$.readable,G=I.writable||I.writable!==!1&&$.writable,K=function(){$.writable||J()},Y=$._writableState&&$._writableState.finished,J=function(){G=!1,Y=!0,q||U.call($)},X=$._readableState&&$._readableState.endEmitted,Z=function(){q=!1,X=!0,G||U.call($)},Q=function(ie){U.call($,ie)},ee=function(){var ie;if(q&&!X)return(!$._readableState||!$._readableState.ended)&&(ie=new ERR_STREAM_PREMATURE_CLOSE),U.call($,ie);if(G&&!Y)return(!$._writableState||!$._writableState.ended)&&(ie=new ERR_STREAM_PREMATURE_CLOSE),U.call($,ie)},te=function(){$.req.on("finish",J)};return isRequest$1($)?($.on("complete",J),$.on("abort",ee),$.req?te():$.on("request",te)):G&&!$._writableState&&($.on("end",K),$.on("close",K)),$.on("end",Z),$.on("finish",J),I.error!==!1&&$.on("error",Q),$.on("close",ee),function(){$.removeListener("complete",J),$.removeListener("abort",ee),$.removeListener("request",te),$.req&&$.req.removeListener("finish",J),$.removeListener("end",K),$.removeListener("close",K),$.removeListener("finish",J),$.removeListener("end",Z),$.removeListener("error",Q),$.removeListener("close",ee)}}var endOfStream=eos$1,async_iterator,hasRequiredAsync_iterator;function requireAsync_iterator(){if(hasRequiredAsync_iterator)return async_iterator;hasRequiredAsync_iterator=1;var $;function I(fe,se,de){return se in fe?Object.defineProperty(fe,se,{value:de,enumerable:!0,configurable:!0,writable:!0}):fe[se]=de,fe}var U=endOfStream,q=Symbol("lastResolve"),G=Symbol("lastReject"),K=Symbol("error"),Y=Symbol("ended"),J=Symbol("lastPromise"),X=Symbol("handlePromise"),Z=Symbol("stream");function Q(fe,se){return{value:fe,done:se}}function ee(fe){var se=fe[q];if(se!==null){var de=fe[Z].read();de!==null&&(fe[J]=null,fe[q]=null,fe[G]=null,se(Q(de,!1)))}}function te(fe){process.nextTick(ee,fe)}function ne(fe,se){return function(de,ue){fe.then(function(){if(se[Y]){de(Q(void 0,!0));return}se[X](de,ue)},ue)}}var ie=Object.getPrototypeOf(function(){}),oe=Object.setPrototypeOf(($={get stream(){return this[Z]},next:function(){var se=this,de=this[K];if(de!==null)return Promise.reject(de);if(this[Y])return Promise.resolve(Q(void 0,!0));if(this[Z].destroyed)return new Promise(function(me,be){process.nextTick(function(){se[K]?be(se[K]):me(Q(void 0,!0))})});var ue=this[J],he;if(ue)he=new Promise(ne(ue,this));else{var ve=this[Z].read();if(ve!==null)return Promise.resolve(Q(ve,!1));he=new Promise(this[X])}return this[J]=he,he}},I($,Symbol.asyncIterator,function(){return this}),I($,"return",function(){var se=this;return new Promise(function(de,ue){se[Z].destroy(null,function(he){if(he){ue(he);return}de(Q(void 0,!0))})})}),$),ie),ce=function(se){var de,ue=Object.create(oe,(de={},I(de,Z,{value:se,writable:!0}),I(de,q,{value:null,writable:!0}),I(de,G,{value:null,writable:!0}),I(de,K,{value:null,writable:!0}),I(de,Y,{value:se._readableState.endEmitted,writable:!0}),I(de,X,{value:function(ve,me){var be=ue[Z].read();be?(ue[J]=null,ue[q]=null,ue[G]=null,ve(Q(be,!1))):(ue[q]=ve,ue[G]=me)},writable:!0}),de));return ue[J]=null,U(se,function(he){if(he&&he.code!=="ERR_STREAM_PREMATURE_CLOSE"){var ve=ue[G];ve!==null&&(ue[J]=null,ue[q]=null,ue[G]=null,ve(he)),ue[K]=he;return}var me=ue[q];me!==null&&(ue[J]=null,ue[q]=null,ue[G]=null,me(Q(void 0,!0))),ue[Y]=!0}),se.on("readable",te.bind(null,ue)),ue};return async_iterator=ce,async_iterator}var fromBrowser,hasRequiredFromBrowser;function requireFromBrowser(){return hasRequiredFromBrowser||(hasRequiredFromBrowser=1,fromBrowser=function(){throw new Error("Readable.from is not available in the browser")}),fromBrowser}var _stream_readable,hasRequired_stream_readable;function require_stream_readable(){if(hasRequired_stream_readable)return _stream_readable;hasRequired_stream_readable=1,_stream_readable=_e;var $;_e.ReadableState=be,eventsExports.EventEmitter;var I=function(ye,Le){return ye.listeners(Le).length},U=streamBrowser,q=buffer.Buffer,G=commonjsGlobal.Uint8Array||function(){};function K(ge){return q.from(ge)}function Y(ge){return q.isBuffer(ge)||ge instanceof G}var J=require$$3,X;J&&J.debuglog?X=J.debuglog("stream"):X=function(){};var Z=requireBuffer_list(),Q=destroy_1,ee=state,te=ee.getHighWaterMark,ne=errorsBrowser.codes,ie=ne.ERR_INVALID_ARG_TYPE,oe=ne.ERR_STREAM_PUSH_AFTER_EOF,ce=ne.ERR_METHOD_NOT_IMPLEMENTED,fe=ne.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,se,de,ue;inherits_browserExports(_e,U);var he=Q.errorOrDestroy,ve=["error","close","destroy","pause","resume"];function me(ge,ye,Le){if(typeof ge.prependListener=="function")return ge.prependListener(ye,Le);!ge._events||!ge._events[ye]?ge.on(ye,Le):Array.isArray(ge._events[ye])?ge._events[ye].unshift(Le):ge._events[ye]=[Le,ge._events[ye]]}function be(ge,ye,Le){$=$||require_stream_duplex(),ge=ge||{},typeof Le!="boolean"&&(Le=ye instanceof $),this.objectMode=!!ge.objectMode,Le&&(this.objectMode=this.objectMode||!!ge.readableObjectMode),this.highWaterMark=te(this,ge,"readableHighWaterMark",Le),this.buffer=new Z,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=ge.emitClose!==!1,this.autoDestroy=!!ge.autoDestroy,this.destroyed=!1,this.defaultEncoding=ge.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,ge.encoding&&(se||(se=requireString_decoder().StringDecoder),this.decoder=new se(ge.encoding),this.encoding=ge.encoding)}function _e(ge){if($=$||require_stream_duplex(),!(this instanceof _e))return new _e(ge);var ye=this instanceof $;this._readableState=new be(ge,this,ye),this.readable=!0,ge&&(typeof ge.read=="function"&&(this._read=ge.read),typeof ge.destroy=="function"&&(this._destroy=ge.destroy)),U.call(this)}Object.defineProperty(_e.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(ye){this._readableState&&(this._readableState.destroyed=ye)}}),_e.prototype.destroy=Q.destroy,_e.prototype._undestroy=Q.undestroy,_e.prototype._destroy=function(ge,ye){ye(ge)},_e.prototype.push=function(ge,ye){var Le=this._readableState,Ke;return Le.objectMode?Ke=!0:typeof ge=="string"&&(ye=ye||Le.defaultEncoding,ye!==Le.encoding&&(ge=q.from(ge,ye),ye=""),Ke=!0),Ce(this,ge,ye,!1,Ke)},_e.prototype.unshift=function(ge){return Ce(this,ge,null,!0,!1)};function Ce(ge,ye,Le,Ke,st){X("readableAddChunk",ye);var ut=ge._readableState;if(ye===null)ut.reading=!1,nt(ge,ut);else{var $t;if(st||($t=ke(ut,ye)),$t)he(ge,$t);else if(ut.objectMode||ye&&ye.length>0)if(typeof ye!="string"&&!ut.objectMode&&Object.getPrototypeOf(ye)!==q.prototype&&(ye=K(ye)),Ke)ut.endEmitted?he(ge,new fe):xe(ge,ut,ye,!0);else if(ut.ended)he(ge,new oe);else{if(ut.destroyed)return!1;ut.reading=!1,ut.decoder&&!Le?(ye=ut.decoder.write(ye),ut.objectMode||ye.length!==0?xe(ge,ut,ye,!1):it(ge,ut)):xe(ge,ut,ye,!1)}else Ke||(ut.reading=!1,it(ge,ut))}return!ut.ended&&(ut.length<ut.highWaterMark||ut.length===0)}function xe(ge,ye,Le,Ke){ye.flowing&&ye.length===0&&!ye.sync?(ye.awaitDrain=0,ge.emit("data",Le)):(ye.length+=ye.objectMode?1:Le.length,Ke?ye.buffer.unshift(Le):ye.buffer.push(Le),ye.needReadable&&ot(ge)),it(ge,ye)}function ke(ge,ye){var Le;return!Y(ye)&&typeof ye!="string"&&ye!==void 0&&!ge.objectMode&&(Le=new ie("chunk",["string","Buffer","Uint8Array"],ye)),Le}_e.prototype.isPaused=function(){return this._readableState.flowing===!1},_e.prototype.setEncoding=function(ge){se||(se=requireString_decoder().StringDecoder);var ye=new se(ge);this._readableState.decoder=ye,this._readableState.encoding=this._readableState.decoder.encoding;for(var Le=this._readableState.buffer.head,Ke="";Le!==null;)Ke+=ye.write(Le.data),Le=Le.next;return this._readableState.buffer.clear(),Ke!==""&&this._readableState.buffer.push(Ke),this._readableState.length=Ke.length,this};var Be=1073741824;function Me(ge){return ge>=Be?ge=Be:(ge--,ge|=ge>>>1,ge|=ge>>>2,ge|=ge>>>4,ge|=ge>>>8,ge|=ge>>>16,ge++),ge}function Ve(ge,ye){return ge<=0||ye.length===0&&ye.ended?0:ye.objectMode?1:ge!==ge?ye.flowing&&ye.length?ye.buffer.head.data.length:ye.length:(ge>ye.highWaterMark&&(ye.highWaterMark=Me(ge)),ge<=ye.length?ge:ye.ended?ye.length:(ye.needReadable=!0,0))}_e.prototype.read=function(ge){X("read",ge),ge=parseInt(ge,10);var ye=this._readableState,Le=ge;if(ge!==0&&(ye.emittedReadable=!1),ge===0&&ye.needReadable&&((ye.highWaterMark!==0?ye.length>=ye.highWaterMark:ye.length>0)||ye.ended))return X("read: emitReadable",ye.length,ye.ended),ye.length===0&&ye.ended?Ae(this):ot(this),null;if(ge=Ve(ge,ye),ge===0&&ye.ended)return ye.length===0&&Ae(this),null;var Ke=ye.needReadable;X("need readable",Ke),(ye.length===0||ye.length-ge<ye.highWaterMark)&&(Ke=!0,X("length less than watermark",Ke)),ye.ended||ye.reading?(Ke=!1,X("reading or ended",Ke)):Ke&&(X("do read"),ye.reading=!0,ye.sync=!0,ye.length===0&&(ye.needReadable=!0),this._read(ye.highWaterMark),ye.sync=!1,ye.reading||(ge=Ve(Le,ye)));var st;return ge>0?st=ze(ge,ye):st=null,st===null?(ye.needReadable=ye.length<=ye.highWaterMark,ge=0):(ye.length-=ge,ye.awaitDrain=0),ye.length===0&&(ye.ended||(ye.needReadable=!0),Le!==ge&&ye.ended&&Ae(this)),st!==null&&this.emit("data",st),st};function nt(ge,ye){if(X("onEofChunk"),!ye.ended){if(ye.decoder){var Le=ye.decoder.end();Le&&Le.length&&(ye.buffer.push(Le),ye.length+=ye.objectMode?1:Le.length)}ye.ended=!0,ye.sync?ot(ge):(ye.needReadable=!1,ye.emittedReadable||(ye.emittedReadable=!0,ft(ge)))}}function ot(ge){var ye=ge._readableState;X("emitReadable",ye.needReadable,ye.emittedReadable),ye.needReadable=!1,ye.emittedReadable||(X("emitReadable",ye.flowing),ye.emittedReadable=!0,process.nextTick(ft,ge))}function ft(ge){var ye=ge._readableState;X("emitReadable_",ye.destroyed,ye.length,ye.ended),!ye.destroyed&&(ye.length||ye.ended)&&(ge.emit("readable"),ye.emittedReadable=!1),ye.needReadable=!ye.flowing&&!ye.ended&&ye.length<=ye.highWaterMark,je(ge)}function it(ge,ye){ye.readingMore||(ye.readingMore=!0,process.nextTick(dt,ge,ye))}function dt(ge,ye){for(;!ye.reading&&!ye.ended&&(ye.length<ye.highWaterMark||ye.flowing&&ye.length===0);){var Le=ye.length;if(X("maybeReadMore read 0"),ge.read(0),Le===ye.length)break}ye.readingMore=!1}_e.prototype._read=function(ge){he(this,new ce("_read()"))},_e.prototype.pipe=function(ge,ye){var Le=this,Ke=this._readableState;switch(Ke.pipesCount){case 0:Ke.pipes=ge;break;case 1:Ke.pipes=[Ke.pipes,ge];break;default:Ke.pipes.push(ge);break}Ke.pipesCount+=1,X("pipe count=%d opts=%j",Ke.pipesCount,ye);var st=(!ye||ye.end!==!1)&&ge!==process.stdout&&ge!==process.stderr,ut=st?Et:Ut;Ke.endEmitted?process.nextTick(ut):Le.once("end",ut),ge.on("unpipe",$t);function $t(le,re){X("onunpipe"),le===Le&&re&&re.hasUnpiped===!1&&(re.hasUnpiped=!0,Gt())}function Et(){X("onend"),ge.end()}var rt=Qe(Le);ge.on("drain",rt);var jt=!1;function Gt(){X("cleanup"),ge.removeListener("close",an),ge.removeListener("finish",St),ge.removeListener("drain",rt),ge.removeListener("error",zt),ge.removeListener("unpipe",$t),Le.removeListener("end",Et),Le.removeListener("end",Ut),Le.removeListener("data",At),jt=!0,Ke.awaitDrain&&(!ge._writableState||ge._writableState.needDrain)&&rt()}Le.on("data",At);function At(le){X("ondata");var re=ge.write(le);X("dest.write",re),re===!1&&((Ke.pipesCount===1&&Ke.pipes===ge||Ke.pipesCount>1&&Re(Ke.pipes,ge)!==-1)&&!jt&&(X("false write response, pause",Ke.awaitDrain),Ke.awaitDrain++),Le.pause())}function zt(le){X("onerror",le),Ut(),ge.removeListener("error",zt),I(ge,"error")===0&&he(ge,le)}me(ge,"error",zt);function an(){ge.removeListener("finish",St),Ut()}ge.once("close",an);function St(){X("onfinish"),ge.removeListener("close",an),Ut()}ge.once("finish",St);function Ut(){X("unpipe"),Le.unpipe(ge)}return ge.emit("pipe",Le),Ke.flowing||(X("pipe resume"),Le.resume()),ge};function Qe(ge){return function(){var Le=ge._readableState;X("pipeOnDrain",Le.awaitDrain),Le.awaitDrain&&Le.awaitDrain--,Le.awaitDrain===0&&I(ge,"data")&&(Le.flowing=!0,je(ge))}}_e.prototype.unpipe=function(ge){var ye=this._readableState,Le={hasUnpiped:!1};if(ye.pipesCount===0)return this;if(ye.pipesCount===1)return ge&&ge!==ye.pipes?this:(ge||(ge=ye.pipes),ye.pipes=null,ye.pipesCount=0,ye.flowing=!1,ge&&ge.emit("unpipe",this,Le),this);if(!ge){var Ke=ye.pipes,st=ye.pipesCount;ye.pipes=null,ye.pipesCount=0,ye.flowing=!1;for(var ut=0;ut<st;ut++)Ke[ut].emit("unpipe",this,{hasUnpiped:!1});return this}var $t=Re(ye.pipes,ge);return $t===-1?this:(ye.pipes.splice($t,1),ye.pipesCount-=1,ye.pipesCount===1&&(ye.pipes=ye.pipes[0]),ge.emit("unpipe",this,Le),this)},_e.prototype.on=function(ge,ye){var Le=U.prototype.on.call(this,ge,ye),Ke=this._readableState;return ge==="data"?(Ke.readableListening=this.listenerCount("readable")>0,Ke.flowing!==!1&&this.resume()):ge==="readable"&&!Ke.endEmitted&&!Ke.readableListening&&(Ke.readableListening=Ke.needReadable=!0,Ke.flowing=!1,Ke.emittedReadable=!1,X("on readable",Ke.length,Ke.reading),Ke.length?ot(this):Ke.reading||process.nextTick(We,this)),Le},_e.prototype.addListener=_e.prototype.on,_e.prototype.removeListener=function(ge,ye){var Le=U.prototype.removeListener.call(this,ge,ye);return ge==="readable"&&process.nextTick(Ue,this),Le},_e.prototype.removeAllListeners=function(ge){var ye=U.prototype.removeAllListeners.apply(this,arguments);return(ge==="readable"||ge===void 0)&&process.nextTick(Ue,this),ye};function Ue(ge){var ye=ge._readableState;ye.readableListening=ge.listenerCount("readable")>0,ye.resumeScheduled&&!ye.paused?ye.flowing=!0:ge.listenerCount("data")>0&&ge.resume()}function We(ge){X("readable nexttick read 0"),ge.read(0)}_e.prototype.resume=function(){var ge=this._readableState;return ge.flowing||(X("resume"),ge.flowing=!ge.readableListening,tt(this,ge)),ge.paused=!1,this};function tt(ge,ye){ye.resumeScheduled||(ye.resumeScheduled=!0,process.nextTick(vt,ge,ye))}function vt(ge,ye){X("resume",ye.reading),ye.reading||ge.read(0),ye.resumeScheduled=!1,ge.emit("resume"),je(ge),ye.flowing&&!ye.reading&&ge.read(0)}_e.prototype.pause=function(){return X("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(X("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function je(ge){var ye=ge._readableState;for(X("flow",ye.flowing);ye.flowing&&ge.read()!==null;);}_e.prototype.wrap=function(ge){var ye=this,Le=this._readableState,Ke=!1;ge.on("end",function(){if(X("wrapped end"),Le.decoder&&!Le.ended){var $t=Le.decoder.end();$t&&$t.length&&ye.push($t)}ye.push(null)}),ge.on("data",function($t){if(X("wrapped data"),Le.decoder&&($t=Le.decoder.write($t)),!(Le.objectMode&&$t==null)&&!(!Le.objectMode&&(!$t||!$t.length))){var Et=ye.push($t);Et||(Ke=!0,ge.pause())}});for(var st in ge)this[st]===void 0&&typeof ge[st]=="function"&&(this[st]=function(Et){return function(){return ge[Et].apply(ge,arguments)}}(st));for(var ut=0;ut<ve.length;ut++)ge.on(ve[ut],this.emit.bind(this,ve[ut]));return this._read=function($t){X("wrapped _read",$t),Ke&&(Ke=!1,ge.resume())},this},typeof Symbol=="function"&&(_e.prototype[Symbol.asyncIterator]=function(){return de===void 0&&(de=requireAsync_iterator()),de(this)}),Object.defineProperty(_e.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(_e.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(_e.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(ye){this._readableState&&(this._readableState.flowing=ye)}}),_e._fromList=ze,Object.defineProperty(_e.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function ze(ge,ye){if(ye.length===0)return null;var Le;return ye.objectMode?Le=ye.buffer.shift():!ge||ge>=ye.length?(ye.decoder?Le=ye.buffer.join(""):ye.buffer.length===1?Le=ye.buffer.first():Le=ye.buffer.concat(ye.length),ye.buffer.clear()):Le=ye.buffer.consume(ge,ye.decoder),Le}function Ae(ge){var ye=ge._readableState;X("endReadable",ye.endEmitted),ye.endEmitted||(ye.ended=!0,process.nextTick(Se,ye,ge))}function Se(ge,ye){if(X("endReadableNT",ge.endEmitted,ge.length),!ge.endEmitted&&ge.length===0&&(ge.endEmitted=!0,ye.readable=!1,ye.emit("end"),ge.autoDestroy)){var Le=ye._writableState;(!Le||Le.autoDestroy&&Le.finished)&&ye.destroy()}}typeof Symbol=="function"&&(_e.from=function(ge,ye){return ue===void 0&&(ue=requireFromBrowser()),ue(_e,ge,ye)});function Re(ge,ye){for(var Le=0,Ke=ge.length;Le<Ke;Le++)if(ge[Le]===ye)return Le;return-1}return _stream_readable}var _stream_transform=Transform$1,_require$codes$1=errorsBrowser.codes,ERR_METHOD_NOT_IMPLEMENTED=_require$codes$1.ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK=_require$codes$1.ERR_MULTIPLE_CALLBACK,ERR_TRANSFORM_ALREADY_TRANSFORMING=_require$codes$1.ERR_TRANSFORM_ALREADY_TRANSFORMING,ERR_TRANSFORM_WITH_LENGTH_0=_require$codes$1.ERR_TRANSFORM_WITH_LENGTH_0,Duplex=require_stream_duplex();inherits_browserExports(Transform$1,Duplex);function afterTransform($,I){var U=this._transformState;U.transforming=!1;var q=U.writecb;if(q===null)return this.emit("error",new ERR_MULTIPLE_CALLBACK);U.writechunk=null,U.writecb=null,I!=null&&this.push(I),q($);var G=this._readableState;G.reading=!1,(G.needReadable||G.length<G.highWaterMark)&&this._read(G.highWaterMark)}function Transform$1($){if(!(this instanceof Transform$1))return new Transform$1($);Duplex.call(this,$),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,$&&(typeof $.transform=="function"&&(this._transform=$.transform),typeof $.flush=="function"&&(this._flush=$.flush)),this.on("prefinish",prefinish)}function prefinish(){var $=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(I,U){done$1($,I,U)}):done$1(this,null,null)}Transform$1.prototype.push=function($,I){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,$,I)},Transform$1.prototype._transform=function($,I,U){U(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"))},Transform$1.prototype._write=function($,I,U){var q=this._transformState;if(q.writecb=U,q.writechunk=$,q.writeencoding=I,!q.transforming){var G=this._readableState;(q.needTransform||G.needReadable||G.length<G.highWaterMark)&&this._read(G.highWaterMark)}},Transform$1.prototype._read=function($){var I=this._transformState;I.writechunk!==null&&!I.transforming?(I.transforming=!0,this._transform(I.writechunk,I.writeencoding,I.afterTransform)):I.needTransform=!0},Transform$1.prototype._destroy=function($,I){Duplex.prototype._destroy.call(this,$,function(U){I(U)})};function done$1($,I,U){if(I)return $.emit("error",I);if(U!=null&&$.push(U),$._writableState.length)throw new ERR_TRANSFORM_WITH_LENGTH_0;if($._transformState.transforming)throw new ERR_TRANSFORM_ALREADY_TRANSFORMING;return $.push(null)}var _stream_passthrough=PassThrough,Transform=_stream_transform;inherits_browserExports(PassThrough,Transform);function PassThrough($){if(!(this instanceof PassThrough))return new PassThrough($);Transform.call(this,$)}PassThrough.prototype._transform=function($,I,U){U(null,$)};var eos;function once($){var I=!1;return function(){I||(I=!0,$.apply(void 0,arguments))}}var _require$codes=errorsBrowser.codes,ERR_MISSING_ARGS=_require$codes.ERR_MISSING_ARGS,ERR_STREAM_DESTROYED=_require$codes.ERR_STREAM_DESTROYED;function noop$1($){if($)throw $}function isRequest($){return $.setHeader&&typeof $.abort=="function"}function destroyer($,I,U,q){q=once(q);var G=!1;$.on("close",function(){G=!0}),eos===void 0&&(eos=endOfStream),eos($,{readable:I,writable:U},function(Y){if(Y)return q(Y);G=!0,q()});var K=!1;return function(Y){if(!G&&!K){if(K=!0,isRequest($))return $.abort();if(typeof $.destroy=="function")return $.destroy();q(Y||new ERR_STREAM_DESTROYED("pipe"))}}}function call($){$()}function pipe($,I){return $.pipe(I)}function popCallback($){return!$.length||typeof $[$.length-1]!="function"?noop$1:$.pop()}function pipeline(){for(var $=arguments.length,I=new Array($),U=0;U<$;U++)I[U]=arguments[U];var q=popCallback(I);if(Array.isArray(I[0])&&(I=I[0]),I.length<2)throw new ERR_MISSING_ARGS("streams");var G,K=I.map(function(Y,J){var X=J<I.length-1,Z=J>0;return destroyer(Y,X,Z,function(Q){G||(G=Q),Q&&K.forEach(call),!X&&(K.forEach(call),q(G))})});return I.reduce(pipe)}var pipeline_1=pipeline;(function($,I){I=$.exports=require_stream_readable(),I.Stream=I,I.Readable=I,I.Writable=require_stream_writable(),I.Duplex=require_stream_duplex(),I.Transform=_stream_transform,I.PassThrough=_stream_passthrough,I.finished=endOfStream,I.pipeline=pipeline_1})(readableBrowser,readableBrowser.exports);var readableBrowserExports=readableBrowser.exports,createPromiseFromCallback=$=>new Promise((I,U)=>{$((q,G)=>{q?U(q):I(G)})}),TimeoutError=class extends Error{constructor($,I){super($?`Timeout [${$.toLocaleString()}ms]${I===void 0?"":`: ${I}`}`:"Timeout")}},sleep=$=>new Promise(I=>{const U=Date.now()+$,q=()=>{const G=U-Date.now();G>0?setTimeout(q,G):I()};q()}),asyncTimeout=async($,I,U)=>{let q;const G=U===void 0||typeof U=="string"?new TimeoutError(I,U):U,K=new Promise((J,X)=>{q=setTimeout(()=>{X(G)},I),unrefTimeout(q)}),Y=typeof $=="function"?createPromiseFromCallback($):$;return await Promise.race([Y,K]).finally(()=>{clearTimeout(q)})},unrefTimeout=$=>{typeof $=="object"&&"unref"in $&&$.unref()},__dxlog_file$a="/home/runner/work/dxos/dxos/packages/common/async/src/events.ts",EventSubscriptions=class{constructor(){this._listeners=[]}add($){this._listeners.push($)}clear(){this._listeners.forEach($=>$()),this._listeners.length=0}},Event$1=class Nr{constructor(){this._listeners=new Set,this._effects=new Set}static wrap(I,U){const q=new Nr;return q.addEffect(()=>{const G=K=>q.emit(K);return I.on(U,G),()=>I.off(U,G)}),q}emit(I){for(const U of this._listeners)U.trigger(I),U.once&&this._listeners.delete(U)}on(I,U,q){const[G,K]=I instanceof Context?[I,U]:[new Context(void 0,{F:__dxlog_file$a,L:121}),I],Y=!!(q!=null&&q.weak),J=!!(q!=null&&q.once),X=new EventListener(this,K,G,J,Y);return this._addListener(X),()=>{this._removeListener(X)}}off(I){for(const U of this._listeners)U.derefCallback()===I&&this._removeListener(U)}once(I,U){const[q,G]=I instanceof Context?[I,U]:[new Context(void 0,{F:__dxlog_file$a,L:158}),I],K=new EventListener(this,G,q,!0,!1);return this._addListener(K),()=>{this._removeListener(K)}}async*[Symbol.asyncIterator](){for(;;)yield await new Promise(I=>{this.once(I)})}waitFor(I){return new Promise(U=>{const q=this.on(G=>{I(G)&&(q(),U(G))})})}waitForCount(I){let U=0;return this.waitFor(()=>++U===I)}async waitForCondition(I){I()||await this.waitFor(I)}listenerCount(){return this._listeners.size}addEffect(I){const U={effect:I,cleanup:void 0};return this.listenerCount()>0&&(U.cleanup=U.effect()),this._effects.add(U),()=>{var q;(q=U.cleanup)==null||q.call(U),this._effects.delete(U)}}debounce(I=0){let U,q;const G=new Nr;return G.addEffect(()=>{const K=this.on(()=>{if(!U){const Y=!q||Date.now()-q>I?I/8:I;U=setTimeout(()=>{q=Date.now(),U=void 0,G.emit()},Y)}});return()=>{K(),clearTimeout(U)}}),G}discardParameter(){return this}toJSON(){return{listenerCount:this.listenerCount()}}_addListener(I){this._listeners.add(I),this.listenerCount()===1&&this._runEffects()}_removeListener(I){this._listeners.delete(I),I.remove(),this.listenerCount()===0&&this._cleanupEffects()}_runEffects(){for(const I of this._effects)I.cleanup=I.effect()}_cleanupEffects(){var I;for(const U of this._effects)(I=U.cleanup)==null||I.call(U),U.cleanup=void 0}},EventListener=class{constructor($,I,U,q,G){this.ctx=U,this.once=q,this.weak=G,this._clearDispose=void 0,this._clearDispose=U.onDispose(()=>{$._removeListener(this)}),G?(this.callback=new WeakRef(I),weakListeners().registry.register(I,{event:new WeakRef($),listener:this},this)):this.callback=I}derefCallback(){return this.weak?this.callback.deref():this.callback}async trigger($){try{const I=this.derefCallback();await(I==null?void 0:I($))}catch(I){this.ctx.raise(I)}}remove(){var $;($=this._clearDispose)==null||$.call(this),weakListeners().registry.unregister(this)}},weakListenersState=null,weakListeners=()=>(weakListenersState??(weakListenersState=new FinalizationRegistry(({event:$,listener:I})=>{var U;(U=$.deref())==null||U._removeListener(I)})),{registry:weakListenersState}),TriggerState;(function($){$.WAITING="WAITING",$.RESOLVED="RESOLVED",$.REJECTED="REJECTED"})(TriggerState||(TriggerState={}));var Trigger=class{constructor($={autoReset:!1}){this._options=$,this._state="WAITING",this.reset()}get state(){return this._state}async wait({timeout:$}={}){return $?asyncTimeout(this._promise,$,new TimeoutError($)):this._promise}wake($){return this._state="RESOLVED",this._resolve($),this._options.autoReset?this.reset():this}reset(){return this._state="WAITING",this._promise=new Promise(($,I)=>{this._resolve=$,this._reject=I}),this._promise.catch(()=>{}),this}throw($){return this._state="REJECTED",this._reject($),this._options.autoReset?this.reset():this}},MulticastObservable=class rr extends Observable{constructor(I,U){super(q=>this._subscribe(q)),this._value=U,this._observers=new Set,this._completed=new Trigger,this._handlers={next:q=>{this._value=q,this._observers.forEach(G=>{var K;return(K=G.next)==null?void 0:K.call(G,q)})},error:q=>{this._observers.forEach(G=>{var K;return(K=G.error)==null?void 0:K.call(G,q)})},complete:()=>{this._completed.wake(),this._observers.forEach(q=>{var G;return(G=q.complete)==null?void 0:G.call(q)})}},this._observable=typeof I=="function"?new Observable(I):I,this._observable.subscribe(this._handlers)}static from(I,U){if("emit"in I)return new rr(G=>{I.on(K=>{G.next(K)})},U);const q=Observable.from(I);return new rr(q,U)}static of(...I){return new rr(Observable.of(...I.slice(1)),I[0])}static empty(){return EMPTY_OBSERVABLE}get(){if(this._value===void 0)throw new Error("MulticastObservable is not initialized.");return this._value}async wait({timeout:I}={}){return await this._completed.wait({timeout:I}),this.get()}forEach(I){return this._observable.forEach(I)}map(I){return new rr(this._observable.map(I),this._value&&I(this._value))}filter(I){return new rr(this._observable.filter(I),this._value&&I(this._value)?this._value:void 0)}reduce(I,U){return new rr(U?this._observable.reduce(I,U):this._observable.reduce(I),U??this._value)}flatMap(I){return new rr(this._observable.flatMap(I),this._value&&I(this._value).get())}concat(...I){return new rr(this._observable.concat(...I),this._value)}losslessConcat(I,...U){const q=U.filter(K=>K instanceof rr),G=I(this._value,q.map(K=>K.get()));return new rr(this._observable.concat(...U),G)}_subscribe(I){var U;return this._observers.has(I)||this._observers.add(I),this._value!==void 0&&((U=I.next)==null||U.call(I,this._value)),()=>{this._observers.delete(I)}}},EMPTY_OBSERVABLE=MulticastObservable.of(null),Mutex=class{constructor(){this._queue=Promise.resolve(),this._queueLength=0,this._tag=null}get tag(){return this._tag}isLocked(){return this._queueLength>0}async acquire($){const I=this._queue;let U;return this._queueLength++,this._queue=new Promise(q=>{U=new MutexGuard(()=>{this._queueLength--,this._tag=null,q()})}),await I,$!==void 0&&(this._tag=$),U}async executeSynchronized($){const I=await this.acquire();try{return await $()}finally{I.release()}}},MutexGuard=class{constructor($){this._release=$}release(){this._release()}[Symbol.dispose](){this.release()}},classMutexSymbol=Symbol("class-mutex"),enableWarning=globalThis.mochaExecutor,synchronized=($,I,U)=>{const q=U.value;U.value=async function(...K){const Y=this[classMutexSymbol]??(this[classMutexSymbol]=new Mutex),J=`${$.constructor.name}.${I}`;let X;enableWarning?X=await warnAfterTimeout(1e4,`lock on ${J} (taken by ${Y.tag})`,()=>Y.acquire(J)):X=await Y.acquire(J);try{return await q.apply(this,K)}finally{X.release()}},Object.defineProperty(U.value,"name",{value:I+"$synchronized"})},__dxlog_file3$5="/home/runner/work/dxos/dxos/packages/common/async/src/track-leaks.ts",enabled=typeof process<"u"&&!!process.env.DX_TRACK_LEAKS,openResources=new Set,trackResource=$=>{if(!enabled)return()=>{};const I=$();return openResources.add(I),()=>{openResources.delete(I)}},dumpLeaks=()=>{if(enabled){log$2.info(`Leaked resources ${openResources.size}:`,void 0,{F:__dxlog_file3$5,L:82,S:void 0,C:($,I)=>$(...I)});for(const $ of openResources)log$2.info(`- ${$.name} at`,void 0,{F:__dxlog_file3$5,L:84,S:void 0,C:(I,U)=>I(...U)}),log$2.info($.openStack.getStack(1),void 0,{F:__dxlog_file3$5,L:85,S:void 0,C:(I,U)=>I(...U)}),log$2.info(`
852
852
  `,void 0,{F:__dxlog_file3$5,L:86,S:void 0,C:(I,U)=>I(...U)})}};enabled&&(global.dxDumpLeaks=dumpLeaks);var DeferredTask=class{constructor($,I){this._ctx=$,this._callback=I,this._scheduled=!1,this._currentTask=null,this._nextTask=new Trigger}schedule(){this._scheduled||(scheduleTask(this._ctx,async()=>{await this._currentTask,this._scheduled=!1;const $=this._nextTask;this._nextTask=new Trigger,this._currentTask=runInContextAsync(this._ctx,()=>this._callback()).then(()=>{$.wake()})}),this._scheduled=!0)}async runBlocking(){if(this._ctx.disposed)throw new ContextDisposedError;this.schedule(),await this._nextTask.wait()}async join(){await this._currentTask}},runInContextAsync=async($,I)=>{try{await I()}catch(U){$.raise(U)}},scheduleTask=($,I,U)=>{const q=trackResource(()=>({name:`task (${I.name||"anonymous"})`,openStack:new StackTrace})),G=setTimeout(async()=>{K(),await runInContextAsync($,I),q()},U),K=$.onDispose(()=>{q(),clearTimeout(G)})},scheduleTaskInterval=($,I,U)=>{const q=trackResource(()=>({name:`repeating task (${I.name||"anonymous"})`,openStack:new StackTrace}));let G;const K=async()=>{await runInContextAsync($,I),!$.disposed&&(G=setTimeout(K,U))};G=setTimeout(K,U),$.onDispose(()=>{q(),clearTimeout(G)})},scheduleExponentialBackoffTaskInterval=($,I,U)=>{const q=trackResource(()=>({name:`repeating task (${I.name||"anonymous"})`,openStack:new StackTrace}));let G,K=U;const Y=async()=>{await runInContextAsync($,I),!$.disposed&&(K*=2,G=setTimeout(Y,K))};G=setTimeout(Y,K),$.onDispose(()=>{q(),clearTimeout(G)})},__dxlog_file$9="/home/runner/work/dxos/dxos/packages/sdk/react-client/src/invitations/useInvitationStatus.ts",useInvitationStatus=$=>{const[I,U]=React.useReducer((Y,J)=>{log$2("useInvitationStatus",{action:J},{F:__dxlog_file$9,L:84,S:void 0,C:(Z,Q)=>Z(...Q)});const X="invitation"in J?{id:J.invitation.invitationId,multiUse:J.invitation.multiUse,invitationCode:clientProtocol.InvitationEncoder.encode(J.invitation),authCode:J.invitation.authCode,authMethod:J.invitation.authMethod,type:J.invitation.type}:{};return{...Y,...X,status:J.status,result:J.status===Invitation.State.SUCCESS?J.result:Y.result,...J.status===Invitation.State.ERROR&&{error:J.error},...(J.status===Invitation.State.ERROR||J.status===Invitation.State.CANCELLED||J.status===Invitation.State.TIMEOUT)&&{haltedAt:typeof Y.haltedAt>"u"?J.haltedAt:Y.haltedAt}}},null,Y=>{const J=$==null?void 0:$.get();return{status:Invitation.State.INIT,result:{spaceKey:null,identityKey:null,swarmKey:null,target:null},id:J==null?void 0:J.invitationId,multiUse:J==null?void 0:J.multiUse,invitationCode:J?clientProtocol.InvitationEncoder.encode(J):void 0,authCode:J==null?void 0:J.authCode,authMethod:J==null?void 0:J.authMethod,type:J==null?void 0:J.type}});React.useEffect(()=>{const Y=Z=>{switch(Z.state){case Invitation.State.INIT:case Invitation.State.CONNECTED:case Invitation.State.READY_FOR_AUTHENTICATION:case Invitation.State.AUTHENTICATING:{U({invitation:Z,status:Z.state});break}case Invitation.State.SUCCESS:{U({invitation:Z,status:Z.state,result:{spaceKey:Z.spaceKey||null,identityKey:Z.identityKey||null,swarmKey:Z.swarmKey||null,target:Z.target||null}});break}case Invitation.State.CANCELLED:case Invitation.State.TIMEOUT:{U({invitation:Z,status:Z.state,haltedAt:I.status});break}}},J=$==null?void 0:$.subscribe(Y,Z=>{U({status:Invitation.State.ERROR,error:Z,haltedAt:I.status})}),X=$==null?void 0:$.get();return X&&Y(X),()=>J==null?void 0:J.unsubscribe()},[$,I.status]);const q=React.useCallback(Y=>{U({invitation:Y.get(),status:Invitation.State.CONNECTING,observable:Y})},[]),G=React.useCallback(Y=>(log$2("authenticating...",{authCode:Y},{F:__dxlog_file$9,L:187,S:void 0,C:(J,X)=>J(...X)}),$.authenticate(Y)),[$]),K=React.useCallback(async()=>$==null?void 0:$.cancel(),[$]);return React.useMemo(()=>({...I,cancel:K,connect:q,authenticate:G}),[I,K,q,G])};const AuthCode=$=>{const{code:I,large:U,classNames:q}=$,G=(I==null?void 0:I.length)??0,K=I==null?void 0:I.slice(0,G/2),Y=I==null?void 0:I.slice(G/2),J=()=>{navigator.clipboard.writeText(I??"")};return React.createElement("span",{className:mx(U?"text-6xl":"text-2xl","font-mono pli-2.5 flex gap-1.5 rounded cursor-pointer",q),onClick:J},React.createElement("span",null,K),React.createElement("span",null,Y))},InvitationListItem=$=>{const{invitation:I}=$,U=useInvitationStatus(I);return React.createElement(InvitationListItemImpl,{...$,invitationStatus:U})},avatarProps={size:10,variant:"circle"},AvatarStackEffect=({animation:$,status:I,reverseEffects:U})=>{const{tx:q}=useThemeContext();return React.createElement(React.Fragment,null,React.createElement("span",{role:"none",className:mx("absolute inline-end-auto opacity-20",U?"inline-start-3":"inline-start-1",getSize(avatarProps.size))},React.createElement("span",{role:"none",className:q("avatar.ring","avatar__ring",{...avatarProps,status:I,animation:$}),style:{animationDelay:"400ms"}})),React.createElement("span",{role:"none",className:mx("absolute inline-end-auto opacity-50","inline-start-2",getSize(avatarProps.size))},React.createElement("span",{role:"none",className:q("avatar.ring","avatar__ring",{...avatarProps,status:I,animation:$}),style:{animationDelay:"200ms"}})))},InvitationListItemImpl=({invitation:$,invitationStatus:I,send:U,onClickRemove:q,createInvitationUrl:G,reverseEffects:K,...Y})=>{const{t:J}=useTranslation("os"),{cancel:X,status:Z,invitationCode:Q,authCode:ee,multiUse:te}=I,ne=!([Invitation.State.ERROR,Invitation.State.TIMEOUT,Invitation.State.CANCELLED].indexOf(Z)>=0),ie=te||[Invitation.State.INIT,Invitation.State.CONNECTING,Invitation.State.CONNECTED].indexOf(Z)>=0,oe=Z===Invitation.State.READY_FOR_AUTHENTICATION,ce=React.useCallback(()=>q==null?void 0:q($),[$,q]),fe=Q&&G(Q),se=$==null?void 0:$.get().invitationId,de=$==null?void 0:$.get().lifetime,ue=$!=null&&$.expiry?formatDistanceToNow($==null?void 0:$.expiry,{addSuffix:!0}):void 0,he=[Invitation.State.INIT,Invitation.State.CONNECTING,Invitation.State.CONNECTED,Invitation.State.READY_FOR_AUTHENTICATION,Invitation.State.AUTHENTICATING].includes(Z)?"pulse":"none",ve=[Invitation.State.ERROR,Invitation.State.TIMEOUT,Invitation.State.CANCELLED].includes(Z),me=[Invitation.State.CONNECTED,Invitation.State.READY_FOR_AUTHENTICATION,Invitation.State.AUTHENTICATING,Invitation.State.SUCCESS].includes(Z),be=ve?"error":me?"active":"inactive";return React.createElement(ListItem.Root,{id:Q,...Y,classNames:["flex gap-2 pis-3 pie-1 items-center relative",Y.classNames]},React.createElement(ListItem.Heading,{classNames:"sr-only"},J(te?"invite many list item label":"invite one list item label")),te&&React.createElement(AvatarStackEffect,{status:be,animation:he,reverseEffects:K}),React.createElement(Tooltip.Root,null,React.createElement(Avatar.Root,{...avatarProps,animation:he,status:be},React.createElement(Tooltip.Trigger,{asChild:!0},React.createElement(Avatar.Frame,{tabIndex:0,classNames:[focusRing,"relative rounded-full place-self-center"]},React.createElement(Avatar.Fallback,{text:hexToEmoji(se)})))),React.createElement(Tooltip.Portal,null,React.createElement(Tooltip.Content,{side:"left",classNames:"z-[70]"},J(te?"invite many qr label":"invite one qr label"),React.createElement(Tooltip.Arrow,null)))),ie&&fe?React.createElement(Tooltip.Root,null,React.createElement(React.Fragment,null,React.createElement(Tooltip.Trigger,{asChild:!0},React.createElement(Button,{variant:"ghost",classNames:"grow justify-start font-medium",onClick:()=>U({type:"selectInvitation",invitation:$}),"data-testid":"show-qrcode"},React.createElement("span",null,J("open share panel label")))),React.createElement(CopyButtonIconOnly,{variant:"ghost",value:fe})),React.createElement(Tooltip.Portal,null,React.createElement(Tooltip.Content,{side:"left",classNames:"z-[70]"},de&&React.createElement("span",null,"Expires ",ue)))):oe?React.createElement(AuthCode,{code:ee,classNames:"grow"}):Z===Invitation.State.CONNECTING?React.createElement("span",{className:"pli-2 grow text-neutral-500"},"Connecting..."):Z===Invitation.State.AUTHENTICATING?React.createElement("span",{className:"pli-2 grow text-neutral-500"},"Authenticating..."):Z===Invitation.State.ERROR||Z===Invitation.State.TIMEOUT?React.createElement("span",{className:"pli-2 grow text-neutral-500"},"Failed"):Z===Invitation.State.CANCELLED?React.createElement("span",{className:"pli-2 grow text-neutral-500"},"Cancelled"):Z===Invitation.State.SUCCESS?React.createElement("span",{className:"pli-2 grow truncate"},"User joined"):React.createElement("span",{className:"grow"}," "),ne?React.createElement(Button,{variant:"ghost",classNames:"flex gap-1 pli-0",onClick:X,"data-testid":"cancel-invitation"},React.createElement("span",{className:"sr-only"},J("cancel invitation label")),React.createElement(react.X,{className:getSize(4)})):React.createElement(Button,{variant:"ghost",classNames:"flex gap-1 pli-0",onClick:ce,"data-testid":"remove-invitation"},React.createElement("span",{className:"sr-only"},J("remove invitation label")),React.createElement(react.X,{className:getSize(4)})))},InvitationList=({invitations:$,send:I,...U})=>{const{className:q,InvitationListItem:G=InvitationListItem}=U;return React.createElement(List,{classNames:mx("flex flex-col gap-2",q)},$.map(K=>{const Y=K.get().invitationId;return React.createElement(G,{key:Y,send:I,invitation:K,...U})}))},defaultActions={noopAction:{label:"No-op",description:"",icon:react.Placeholder,onClick:()=>{}}},BifurcatedAction=React.forwardRef(($,I)=>{const{classNames:U,variant:q,isFull:G=!0,actions:K=defaultActions,activeAction:Y,onChangeActiveAction:J,defaultActiveAction:X,...Z}=$,[Q=Object.keys(K)[0],ee]=$71cd76cc60e0454e$export$6f32135080cb4c3({prop:Y,onChange:J,defaultProp:X}),te=K[Q]??{},{t:ne}=useTranslation("os");return React.createElement("div",{role:"none",className:mx("mbs-2 flex gap-px items-center",G&&"is-full")},React.createElement(Button,{...Z,classNames:["bs-11 flex-1 min-is-0 flex gap-2 rounded-ie-none",U],ref:I,variant:q,onClick:te.onClick},te.icon&&React.createElement(te.icon,{className:getSize(5)}),React.createElement("span",null,te.label)),React.createElement(DropdownMenu2.Root,null,React.createElement(DropdownMenu2.Trigger,{asChild:!0},React.createElement(Button,{classNames:["bs-11 flex-none rounded-is-none",U]},React.createElement("span",{className:"sr-only"},ne("invite options label")),React.createElement(react.CaretDown,{className:getSize(4)}))),React.createElement(DropdownMenu2.Content,null,React.createElement(DropdownMenu2.Viewport,null,Object.entries(K).map(([ie,oe])=>React.createElement(DropdownMenu2.CheckboxItem,{key:ie,"aria-labelledby":`${ie}__label`,"aria-describedby":`${ie}__description`,checked:Q===ie,onCheckedChange:ce=>ce&&ee(ie),classNames:"gap-2"},oe.icon&&React.createElement(oe.icon,{className:getSize(5)}),React.createElement("div",{role:"none",className:"flex-1 min-is-0 space-b-1"},React.createElement("p",{id:`${ie}__label`},oe.label),oe.description&&React.createElement("p",{id:`${ie}__description`,className:descriptionText},oe.description)),React.createElement(DropdownMenu2.ItemIndicator,{asChild:!0},React.createElement(react.Check,{weight:"bold",className:getSize(4)}))))),React.createElement(DropdownMenu2.Arrow,null))))}),Action=React.forwardRef(($,I)=>{const{children:U,classNames:q,variant:G,isFull:K=!0,...Y}=$;return React.createElement(Button,{...Y,classNames:[K&&"is-full","bs-11 flex gap-2 mbs-2",q],ref:I,variant:G},U)}),Actions=React.forwardRef(({classNames:$,children:I,...U},q)=>React.createElement("div",{...U,className:mx("flex flex-col gap-2 mbs-2",Array.isArray(I)&&I.length>1?"justify-between":"justify-center",$),ref:q},I)),CloseButton=({onDone:$,...I})=>{const{t:U}=useTranslation("os");return React.createElement(Button,{variant:"ghost",classNames:mx("plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),onClick:()=>$==null?void 0:$(),...I},React.createElement(react.X,{weight:"bold",className:getSize(4)}),React.createElement("span",{className:"sr-only"},U("exit label")))},Emoji=({text:$,className:I})=>React.createElement("div",{role:"none",className:mx(getSize(14),"rounded relative pointer-events-none",I)},React.createElement("svg",{viewBox:`0 0 ${14*4} ${14*4}`,width:14*4,height:14*4},React.createElement("text",{x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"middle",baselineShift:"-0.25rem",fontSize:"2.25rem"},$))),Centered=$=>{const{children:I}=$;return React.createElement("div",{role:"none",className:"absolute inset-0 flex items-center justify-center"},I)},Heading=React.forwardRef(({titleId:$,title:I,titleSrOnly:U,children:q,corner:G},K)=>React.createElement("div",{role:"none",className:"pbe-2 relative",ref:K},G,React.createElement("h1",{...!U&&{id:$},className:mx(descriptionText,"text-center mlb-2",U&&"invisible")},I),U&&React.createElement("span",{id:$},I),q)),Label=$=>{const{children:I}=$;return React.createElement("span",{className:mx(descriptionText,"text-center mli-6 whitespace-normal")},I)},Input=({validationMessage:$,label:I,...U})=>React.createElement(Input$1.Root,null,React.createElement(Input$1.Label,null,I),React.createElement(Input$1.TextInput,{...U,classNames:"plb-3 mbs-2 text-center"}),React.createElement(Input$1.DescriptionAndValidation,null,$&&React.createElement(Input$1.Validation,null,$))),StepHeading=React.forwardRef(({children:$,className:I,...U},q)=>React.createElement("h2",{...U,className:mx("font-normal text-sm mbe-4 mli-1 text-center",I),ref:q},$));/*!
853
853
  * Copyright (c) Microsoft Corporation. All rights reserved.
854
854
  * Licensed under the MIT License.
@@ -998,5 +998,5 @@ Error happened in the stream at:
998
998
  ${X.getStack()}`,Y(Q)):Y()};return this._outgoingRequests.set(q,new PendingRpcRequest(J,Z,!0)),this._sendMessage({request:{id:q,method:$,payload:I,stream:!0}}).catch(Q=>{Y(Q)}),()=>{this._sendMessage({streamClose:{id:q}}).catch(Q=>{log$2.catch(Q,void 0,{F:__dxlog_file$6,L:475,S:this,C:(ee,te)=>ee(...te)})}),this._outgoingRequests.delete(q)}})}async _sendMessage($,I){log$2("sending message",{type:Object.keys($)[0]},{F:__dxlog_file$6,L:483,S:this,C:(U,q)=>U(...q)}),await this._params.port.send(RpcMessage.encode($,{preserveAny:!0}),I)}async _callHandler($){try{invariant$1(typeof $.id=="number",void 0,{F:__dxlog_file$6,L:489,S:this,A:["typeof req.id === 'number'",""]}),invariant$1($.payload,void 0,{F:__dxlog_file$6,L:490,S:this,A:["req.payload",""]}),invariant$1($.method,void 0,{F:__dxlog_file$6,L:491,S:this,A:["req.method",""]});const I=await this._params.callHandler($.method,$.payload,this._params.handlerRpcOptions);return{id:$.id,payload:I}}catch(I){return{id:$.id,error:protocols.encodeError(I)}}}_callStreamHandler($,I){try{invariant$1(this._params.streamHandler,"Requests with streaming responses are not supported.",{F:__dxlog_file$6,L:508,S:this,A:["this._params.streamHandler","'Requests with streaming responses are not supported.'"]}),invariant$1(typeof $.id=="number",void 0,{F:__dxlog_file$6,L:509,S:this,A:["typeof req.id === 'number'",""]}),invariant$1($.payload,void 0,{F:__dxlog_file$6,L:510,S:this,A:["req.payload",""]}),invariant$1($.method,void 0,{F:__dxlog_file$6,L:511,S:this,A:["req.method",""]});const U=this._params.streamHandler($.method,$.payload,this._params.handlerRpcOptions);U.onReady(()=>{I({id:$.id,streamReady:!0})}),U.subscribe(q=>{I({id:$.id,payload:q})},q=>{I(q?{id:$.id,error:protocols.encodeError(q)}:{id:$.id,close:!0})}),this._localStreams.set($.id,U)}catch(U){I({id:$.id,error:protocols.encodeError(U)})}}};_ts_decorate$5([synchronized],RpcPeer.prototype,"open",null);var throwIfNotOpen=$=>{switch($){case"OPENED":return;case"INITIAL":throw new protocols.RpcNotOpenError;case"CLOSED":throw new protocols.RpcClosedError}},__dxlog_file2$5="/home/runner/work/dxos/dxos/packages/core/mesh/rpc/src/service.ts",ProtoRpcPeer=class{constructor($,I){this.rpc=$,this._peer=I}async open(){await this._peer.open()}async close(){await this._peer.close()}async abort(){await this._peer.abort()}},createProtoRpcPeer=({requested:$,exposed:I,handlers:U,encodingOptions:q,...G})=>{const K={};if(I){invariant$1(U,void 0,{F:__dxlog_file2$5,L:93,S:void 0,A:["handlers",""]});for(const X of Object.keys(I)){const Z=I[X].serviceProto.fullName.slice(1),Q=U[X];K[Z]=I[X].createServer(Q,q)}}const Y=new RpcPeer({...G,callHandler:(X,Z,Q)=>{const[ee,te]=parseMethodName(X);if(!K[ee])throw new Error(`Service not supported: ${ee}`);return K[ee].call(te,Z,Q)},streamHandler:(X,Z,Q)=>{const[ee,te]=parseMethodName(X);if(!K[ee])throw new Error(`Service not supported: ${ee}`);return K[ee].callStream(te,Z,Q)}}),J={};if($)for(const X of Object.keys($)){const Z=$[X].serviceProto.fullName.slice(1);J[X]=$[X].createClient({call:(Q,ee,te)=>Y.call(`${Z}.${Q}`,ee,te),callStream:(Q,ee,te)=>Y.callStream(`${Z}.${Q}`,ee,te)},q)}return new ProtoRpcPeer(J,Y)},parseMethodName=$=>{const I=$.lastIndexOf("."),U=$.slice(0,I),q=$.slice(I+1);if(U.length===0||q.length===0)throw new Error(`Invalid method: ${$}`);return[U,q]};class InvalidTokenError extends Error{}InvalidTokenError.prototype.name="InvalidTokenError";function b64DecodeUnicode($){return decodeURIComponent(atob($).replace(/(.)/g,(I,U)=>{let q=U.charCodeAt(0).toString(16).toUpperCase();return q.length<2&&(q="0"+q),"%"+q}))}function base64UrlDecode($){let I=$.replace(/-/g,"+").replace(/_/g,"/");switch(I.length%4){case 0:break;case 2:I+="==";break;case 3:I+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return b64DecodeUnicode(I)}catch{return atob(I)}}function jwtDecode($,I){if(typeof $!="string")throw new InvalidTokenError("Invalid token specified: must be a string");I||(I={});const U=I.header===!0?0:1,q=$.split(".")[U];if(typeof q!="string")throw new InvalidTokenError(`Invalid token specified: missing part #${U+1}`);let G;try{G=base64UrlDecode(q)}catch(K){throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${U+1} (${K.message})`)}try{return JSON.parse(G)}catch(K){throw new InvalidTokenError(`Invalid token specified: invalid json for part #${U+1} (${K.message})`)}}var InitAuthSequenceResponse;(function($){(function(I){I[I.UNKNOWN=0]="UNKNOWN",I[I.SUCCESS=1]="SUCCESS",I[I.NOT_AUTHORIZED=2]="NOT_AUTHORIZED",I[I.ERROR=3]="ERROR"})($.InitAuthSequenceResult||($.InitAuthSequenceResult={}))})(InitAuthSequenceResponse||(InitAuthSequenceResponse={}));function _ts_decorate$4($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file$5="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/agent.ts",getUnixSocket=($,I="unix")=>`${I}://`+clientProtocol.getProfilePath(clientProtocol.DX_RUNTIME,$,"agent.sock"),AgentClientServiceProvider=class{constructor($){this._profile=$,this.closed=new Event$1}get descriptors(){return clientProtocol.clientServiceBundle}get services(){return this._client.rpc}async open(){const{WebsocketRpcClient:$}=await Promise.resolve().then(()=>index$2);this._client=new $({url:getUnixSocket(this._profile,"ws+unix"),requested:clientProtocol.clientServiceBundle,exposed:{},handlers:{}}),this._client.error.on(I=>{this.closed.emit(I)}),await this._client.open()}async close(){var $;try{await(($=this._client)==null?void 0:$.close())}catch(I){log$2.warn("Failed to close",I,{F:__dxlog_file$5,L:72,S:this,C:(U,q)=>U(...q)})}}};AgentClientServiceProvider=_ts_decorate$4([trace.resource({annotation:clientProtocol.ClientServicesProviderResource})],AgentClientServiceProvider);function _ts_decorate2$2($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file2$4="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/local-client-services.ts",LocalClientServices=class{constructor($){this.closed=new Event$1,this._ctx=new Context(void 0,{F:__dxlog_file2$4,L:95}),this.signalMetadataTags={runtime:"local-client-services"},this._isOpen=!1,this._params=$,typeof window>"u"?this.signalMetadataTags.origin="undefined":globalThis.__args?(this.signalMetadataTags.runtime="native",this.signalMetadataTags.origin=window.location.origin):this.signalMetadataTags.origin=window.location.origin}get descriptors(){return clientProtocol.clientServiceBundle}get services(){var $;return(($=this._host)==null?void 0:$.services)??{}}get host(){return this._host}async open(){if(this._isOpen)return;const{ClientServicesHost:$}=await import("@dxos/client-services"),{setIdentityTags:I}=await Promise.resolve().then(()=>index$1);this._host=new $({...this._params,callbacks:{...this._params.callbacks,onReset:async()=>{var U,q;this.closed.emit(void 0),await((q=(U=this._params.callbacks)==null?void 0:U.onReset)==null?void 0:q.call(U))}}}),await this._host.open(this._ctx),this._isOpen=!0,I({identityService:this._host.services.IdentityService,devicesService:this._host.services.DevicesService,setTag:(U,q)=>{this.signalMetadataTags[U]=q}})}async close(){var $;this._isOpen&&(await(($=this._host)==null?void 0:$.close()),this._isOpen=!1)}};_ts_decorate2$2([trace.info()],LocalClientServices.prototype,"_isOpen",void 0),_ts_decorate2$2([synchronized],LocalClientServices.prototype,"open",null),_ts_decorate2$2([synchronized],LocalClientServices.prototype,"close",null),LocalClientServices=_ts_decorate2$2([trace.resource({annotation:clientProtocol.ClientServicesProviderResource})],LocalClientServices);function _ts_decorate3$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file4$3="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/service-proxy.ts",ClientServicesProxy=class{constructor($,I=3e4){this._port=$,this._timeout=I,this.closed=new Event$1}get proxy(){return invariant$1(this._proxy,"Client services not open",{F:__dxlog_file4$3,L:34,S:this,A:["this._proxy","'Client services not open'"]}),this._proxy}get descriptors(){return clientProtocol.clientServiceBundle}get services(){return invariant$1(this._proxy,"Client services not open",{F:__dxlog_file4$3,L:43,S:this,A:["this._proxy","'Client services not open'"]}),this._proxy.rpc}async open(){this._proxy||(this._proxy=createProtoRpcPeer({requested:clientProtocol.clientServiceBundle,exposed:{},handlers:{},port:this._port}),await asyncTimeout(this._proxy.open(),this._timeout,new protocols.RemoteServiceConnectionTimeout("Failed to establish dxrpc connection",{timeout:this._timeout})))}async close(){this._proxy&&(await this._proxy.close(),this._proxy=void 0)}};ClientServicesProxy=_ts_decorate3$1([trace.resource({annotation:clientProtocol.ClientServicesProviderResource})],ClientServicesProxy);var __dxlog_file5$2="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/shared-worker-connection.ts",SharedWorkerConnection=class{constructor({config:$,systemPort:I}){this._id=String(Math.floor(Math.random()*1e6)),this._release=new Trigger,this._configProvider=$,this._systemPort=I}async open($){const{SimplePeerTransportService:I}=await Promise.resolve().then(()=>index);this._config=await getAsyncValue(this._configProvider),this._transportService=new I({iceServers:this._config.get("runtime.services.ice")}),this._systemRpc=createProtoRpcPeer({requested:clientProtocol.workerServiceBundle,exposed:clientProtocol.iframeServiceBundle,handlers:{BridgeService:this._transportService},port:this._systemPort,timeout:200});let U;if(typeof navigator<"u"){U=this._lockKey($.origin),this._release=new Trigger;const q=new Trigger;navigator.locks.request(U,async()=>{q.wake(),await this._release.wait()}),await q.wait()}try{await this._systemRpc.open(),await this._systemRpc.rpc.WorkerService.start({lockKey:U,...$})}catch(q){throw log$2.catch(q,void 0,{F:__dxlog_file5$2,L:78,S:this,C:(G,K)=>G(...K)}),new protocols.RemoteServiceConnectionError("Failed to connect to worker")}}async close(){this._release.wake();try{await this._systemRpc.rpc.WorkerService.stop()}catch{}await this._systemRpc.close()}_lockKey($){return`${$}-${this._id}`}};function _ts_decorate4$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file6$2="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/worker-client-services.ts",WorkerClientServices=class{constructor({config:$,createWorker:I,logFilter:U="error,warn",observabilityGroup:q,signalTelemetryEnabled:G}){this.closed=new Event$1,this.joinedSpace=new Event$1,this._isOpen=!1,this._config=$,this._createWorker=I,this._logFilter=parseFilter(U),this._observabilityGroup=q,this._signalTelemetryEnabled=G??!1}get descriptors(){return clientProtocol.clientServiceBundle}get services(){return this._services.services}get runtime(){return this._runtime}async open(){if(this._isOpen)return;log$2("opening...",void 0,{F:__dxlog_file6$2,L:88,S:this,C:(G,K)=>G(...K)});const $=new Trigger,I=this._createWorker();I.port.postMessage({dxlog:localStorage.getItem("dxlog")}),I.port.onmessage=G=>{const{command:K,payload:Y}=G.data;K==="init"&&$.wake(Y)};const{systemPort:U,appPort:q}=await $.wait();this._runtime=new SharedWorkerConnection({config:this._config,systemPort:createWorkerPort({port:U})}),await this._runtime.open({origin:location.origin,observabilityGroup:this._observabilityGroup,signalTelemetryEnabled:this._signalTelemetryEnabled}),this._services=new ClientServicesProxy(createWorkerPort({port:q})),await this._services.open(),navigator.locks.request(LOCK_KEY,()=>{log$2("terminated",void 0,{F:__dxlog_file6$2,L:113,S:this,C:(G,K)=>G(...K)}),this._isOpen&&this.closed.emit(new Error("Shared worker terminated."))}),this._loggingStream=this._services.services.LoggingService.queryLogs({filters:this._logFilter},{timeout:RPC_TIMEOUT}),this._loggingStream.subscribe(G=>{switch(G.level){case LogLevel.DEBUG:log$2.debug(G.message,G.context,mapLogMeta(G.meta));break;case LogLevel.INFO:log$2.info(G.message,G.context,mapLogMeta(G.meta));break;case LogLevel.WARN:log$2.warn(G.message,G.context,mapLogMeta(G.meta));break;case LogLevel.ERROR:log$2.error(G.message,G.context,mapLogMeta(G.meta));break}}),log$2("opened",void 0,{F:__dxlog_file6$2,L:142,S:this,C:(G,K)=>G(...K)}),this._isOpen=!0}async close(){var $;this._isOpen&&(log$2("closing...",void 0,{F:__dxlog_file6$2,L:152,S:this,C:(I,U)=>I(...U)}),await(($=this._loggingStream)==null?void 0:$.close()),await this._runtime.close(),await this._services.close(),log$2("closed",void 0,{F:__dxlog_file6$2,L:157,S:this,C:(I,U)=>I(...U)}),this._isOpen=!1)}};_ts_decorate4$1([trace.info()],WorkerClientServices.prototype,"_isOpen",void 0),_ts_decorate4$1([synchronized],WorkerClientServices.prototype,"open",null),_ts_decorate4$1([synchronized],WorkerClientServices.prototype,"close",null),WorkerClientServices=_ts_decorate4$1([trace.resource()],WorkerClientServices);var mapLogMeta=$=>{var I;return $&&{F:$.file,L:$.line,S:{...$.scope,remoteSessionId:(I=$.scope)==null?void 0:I.hostSessionId,hostSessionId:void 0}}};Object.entries({display:"none",position:"fixed",top:0,left:0,width:"100vw",height:"100vh",border:0,"z-index":60}).reduce(($,[I,U])=>`${$}${I}: ${U};`,"");function _ts_decorate5$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file8="/home/runner/work/dxos/dxos/packages/sdk/client/src/services/agent-hosting-provider.ts",ProviderApiError=class extends Error{},defaultConfig={name:"default",baseUrl:"http://localhost:8082/v1alpha1/",username:"dxos"},COMPOSER_BETA_COOKIE_NAME="COMPOSER-BETA",AgentManagerClient=class{constructor($,I){this._clientConfig=$,this._halo=I,this.DXRPC_PATH="dxrpc",this._rpcState="disconnected",this._authToken=null;const U=this._clientConfig.get("runtime.services.agentHosting");invariant$1(U,"agentHosting config not found",{F:__dxlog_file8,L:73,S:this,A:["runtimeAgentHostingConfig","'agentHosting config not found'"]}),invariant$1(U.server,"agentHosting server not found",{F:__dxlog_file8,L:74,S:this,A:["runtimeAgentHostingConfig.server","'agentHosting server not found'"]}),this._config={...defaultConfig,baseUrl:U.server,password:this._clientConfig.get("runtime.app.env.DX_AGENTHOSTING_PASSWORD")},this._config.baseUrl.endsWith("/")||(this._config.baseUrl+="/"),this._wsDxrpcUrl=new URL(this.DXRPC_PATH,this._config.baseUrl.replace("http","ws")).href}init($){return!!this._checkAuthorization($)}_checkAuthorization($){if(Object.fromEntries(document.cookie.split("; ").map(q=>q.split(/=(.*)/s).map(decodeURIComponent)))[COMPOSER_BETA_COOKIE_NAME]==null)return!1;const U=this._decodeComposerBetaJwt();return!!(U&&U.auth_agent)}_decodeComposerBetaJwt(){return jwtDecode(this._getComposerBetaCookie())}_getComposerBetaCookie(){const $=Object.fromEntries(document.cookie.split("; ").map(I=>I.split(/=(.*)/s).map(decodeURIComponent)));return $[COMPOSER_BETA_COOKIE_NAME]==null?null:$[COMPOSER_BETA_COOKIE_NAME]}requestInitWithCredentials($){return{...$,headers:{...$.headers,Authorization:"Basic "+Buffer.from(`${this._config.username}:${this._config.password}`).toString("base64")}}}requestInitWithAuthToken($){return{...$,headers:{...$.headers,Authorization:"Bearer "+this._authToken}}}async checkEligibility($){return!0}async _ensureAuthenticated(){if(this._validAuthToken())return;const{deviceKey:$}=this._halo.device;invariant$1($,"deviceKey not found",{F:__dxlog_file8,L:173,S:this,A:["deviceKey","'deviceKey not found'"]});const I=await this._queryCredentials("dxos.halo.credentials.AuthorizedDevice",U=>PublicKey.equals(U.subject.id,$));invariant$1(I.length===1,"Improper number of authorized devices",{F:__dxlog_file8,L:178,S:this,A:["authDeviceCreds.length === 1","'Improper number of authorized devices'"]}),await this._agentManagerAuth(I[0])}async _openRpc(){if(this._rpcState==="connected")return;const{WebsocketRpcClient:$}=await Promise.resolve().then(()=>index$2);this._rpc=new $({url:this._wsDxrpcUrl,requested:{AgentManager:protocols.schema.getService("dxos.service.agentmanager.AgentManager")},noHandshake:!0}),this._rpc.connected.on(()=>{this._rpcState="connected"}),this._rpc.disconnected.on(()=>{this._rpcState="disconnected"}),this._rpc.error.on(I=>{log$2.info("rpc error",{err:I},{F:__dxlog_file8,L:202,S:this,C:(U,q)=>U(...q)}),this._rpcState="disconnected"});try{await this._rpc.open()}catch(I){throw log$2.warn("failed to open rpc",{err:I},{F:__dxlog_file8,L:208,S:this,C:(U,q)=>U(...q)}),new Error("Failed to open rpc")}}async _agentManagerAuth($){var Q;await this._openRpc(),invariant$1(this._rpc,"RPC not initialized",{F:__dxlog_file8,L:216,S:this,A:["this._rpc","'RPC not initialized'"]});const{result:I,nonce:U,agentmanagerKey:q,initAuthResponseReason:G}=await this._rpc.rpc.AgentManager.initAuthSequence({authToken:this._getComposerBetaCookie()});if(I!==InitAuthSequenceResponse.InitAuthSequenceResult.SUCCESS||!U||!q)throw log$2("auth init failed",{result:I,nonce:U,agentmanagerKey:q,initAuthResponseReason:G},{F:__dxlog_file8,L:221,S:this,C:(ee,te)=>ee(...te)}),new Error("Failed to initialize auth sequence");const K=await this._queryCredentials("dxos.halo.credentials.ServiceAccess",ee=>PublicKey.equals(ee.issuer,q));K.length?log$2.info("access credentials found - requesting session token..",void 0,{F:__dxlog_file8,L:230,S:this,C:(ee,te)=>ee(...te)}):log$2.info("no access credentials - requesting...",void 0,{F:__dxlog_file8,L:228,S:this,C:(ee,te)=>ee(...te)});const Y=[$.id,(Q=K[0])==null?void 0:Q.id].filter(Boolean),J=await this._halo.presentCredentials({ids:Y,nonce:U}),{token:X,credential:Z}=await this._rpc.rpc.AgentManager.authenticate({presentation:J});if(X){if(this._authToken=X,!this._validAuthToken())throw log$2("received invalid authToken",{token:X},{F:__dxlog_file8,L:243,S:this,C:(ee,te)=>ee(...te)}),new ProviderApiError("Received invalid authToken")}else invariant$1(Z,"No credential or token received",{F:__dxlog_file8,L:247,S:this,A:["credential","'No credential or token received'"]}),log$2("received credential, writing to HALO",{credential:Z},{F:__dxlog_file8,L:248,S:this,C:(ee,te)=>ee(...te)}),await this._halo.writeCredentials([Z]),await this._agentManagerAuth($)}_validAuthToken(){if(!this._authToken)return null;const $=jwtDecode(this._authToken);return $.exp?$.exp*1e3<Date.now()?(log$2("authToken expired",{decoded:$},{F:__dxlog_file8,L:265,S:this,C:(I,U)=>I(...U)}),null):$:(log$2.warn("authToken missing expiry",{decoded:$},{F:__dxlog_file8,L:261,S:this,C:(I,U)=>I(...U)}),null)}async _queryCredentials($,I){return this._halo.credentials.get().filter(q=>!($&&q.subject.assertion["@type"]!==$||I&&!I(q)))}async createAgent($,I){await this._ensureAuthenticated();const U=await fetch(new URL("agent",this._config.baseUrl),this.requestInitWithAuthToken({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({invitation:$,identityKey:I})}));try{return(await U.json()).metadata.uid}catch(q){throw q instanceof TypeError?(log$2.warn("failed to parse response from agent create",{res:U},{F:__dxlog_file8,L:307,S:this,C:(G,K)=>G(...K)}),new ProviderApiError("failed to parse response from hosting provider")):(log$2.warn("bad response from agent create",{res:U},{F:__dxlog_file8,L:310,S:this,C:(G,K)=>G(...K)}),new ProviderApiError("bad response from hosting provider"))}}async getAgent($){await this._ensureAuthenticated();const I=await fetch(new URL("agent/"+$,this._config.baseUrl),this.requestInitWithAuthToken({method:"GET"}));switch(I.status){case 200:break;case 404:return null;case 401:throw new ProviderApiError("unauthorized");case 403:throw new ProviderApiError("forbidden");case 500:throw log$2.warn("request to agent get failed",{res:I},{F:__dxlog_file8,L:335,S:this,C:(U,q)=>U(...q)}),new ProviderApiError("internal server error from hosting provider");default:throw log$2.warn("request to agent get failed",{res:I},{F:__dxlog_file8,L:338,S:this,C:(U,q)=>U(...q)}),new ProviderApiError("unknown API error")}log$2.info("getAgent",{res:I},{F:__dxlog_file8,L:342,S:this,C:(U,q)=>U(...q)});try{return(await I.json()).metadata.uid}catch(U){throw U instanceof TypeError?(log$2.warn("failed to parse response from agent get",{err:U},{F:__dxlog_file8,L:349,S:this,C:(q,G)=>q(...G)}),new ProviderApiError("failed to parse response from hosting provider")):(log$2.warn("bad response from agent get",{res:I},{F:__dxlog_file8,L:352,S:this,C:(q,G)=>q(...G)}),new ProviderApiError("bad response from hosting provider"))}}async destroyAgent($){await this._ensureAuthenticated();const I=await fetch(new URL("agent/"+$,this._config.baseUrl),this.requestInitWithAuthToken({method:"DELETE"}));switch(I.status){case 204:return!0;case 404:return log$2.warn("requested destroy on non-existent agent",void 0,{F:__dxlog_file8,L:371,S:this,C:(U,q)=>U(...q)}),!1;case 403:throw new ProviderApiError("forbidden");case 500:throw log$2.warn("request to agent destroy failed",{res:I},{F:__dxlog_file8,L:376,S:this,C:(U,q)=>U(...q)}),new ProviderApiError("internal server error from hosting provider");default:throw log$2.warn("request to agent destroy failed",{res:I},{F:__dxlog_file8,L:379,S:this,C:(U,q)=>U(...q)}),new ProviderApiError("unknown API error")}}};_ts_decorate5$1([synchronized],AgentManagerClient.prototype,"_ensureAuthenticated",null);var FakeAgentHostingProvider=class{constructor($=!1){this._throw=$,this._agents=new Map}async createAgent($,I){await sleep(3e3);const U=crypto.randomUUID();return this._agents.set(I,U),U}async getAgent($){return await sleep(3e3),this._agents.get($)??null}async destroyAgent($){return await sleep(3e3),this._agents.delete($)}init($){return!0}},__dxlog_file$4="/home/runner/work/dxos/dxos/packages/sdk/react-client/src/services/AgentHostingProvider.tsx",AgentHostingContext=React.createContext(null),AgentHostingProvider=$=>{const I=useClient(),[U]=React.useState(makeClient(I));return React.createElement(AgentHostingContext.Provider,{value:U}," ",$.children)},useAgentHostingClient=()=>React.useContext(AgentHostingContext),makeClient=({config:$,halo:I})=>{const U=$.get("runtime.services.agentHosting");if(!U)return log$2("no agent hosting configured",void 0,{F:__dxlog_file$4,L:38,S:void 0,C:(G,K)=>G(...K)}),null;let q=null;switch(U.type){case"LOCAL_TESTING":return log$2("using FakeAgentHostingProvider",void 0,{F:__dxlog_file$4,L:46,S:void 0,C:(G,K)=>G(...K)}),new FakeAgentHostingProvider;case"AGENTHOSTING_API":return q=new AgentManagerClient($,I),q.init()?q:null;default:return log$2.error("Unknown agent hosting provider type: "+U.type,void 0,{F:__dxlog_file$4,L:61,S:void 0,C:(G,K)=>G(...K)}),null}};const useAgentHandlers=({invitations:$,identity:I})=>{const[U,q]=React.useState(""),[G,K]=React.useState("getting"),Y=useAgentHostingClient(),J=reactClient.useClient(),X=async()=>{if(Y){K("getting");try{const ie=await(Y==null?void 0:Y.getAgent((I==null?void 0:I.identityKey.truncate())??"never"));K(ie?"created":"creatable")}catch(ie){K("error"),q(`Couldn’t check agent status: ${ie.message}`)}}else K("error"),q("No agent provider configured.")},Z=async ie=>{if(invariant$1(I,"Identity not found"),Y){K("creating"),q("");try{await(Y==null?void 0:Y.createAgent(ie,I.identityKey.truncate()))?K("created"):(K("creatable"),q("Error creating agent."))}catch(oe){return q(`Error creating agent: ${oe.message}`),X()}}else K("error"),q("No agent provider configured.")},Q=async()=>{if(invariant$1(I,"Identity not found"),Y){K("destroying"),q("");try{await(Y==null?void 0:Y.destroyAgent(I.identityKey.truncate())),K("creatable")}catch(ie){return q(`Error destroying agent: ${ie.message}`),X()}}else K("error"),q("No agent provider configured.")};React.useEffect(()=>{X()},[]);const ee=React.useCallback(async ie=>{const oe=clientProtocol.InvitationEncoder.encode(ie);if(ie.state===Invitation.State.CONNECTING)return log$2.info(JSON.stringify({invitationCode:oe,authCode:ie.authCode})),Z(oe)},[]);return{onAgentCreate:async()=>{$.forEach(oe=>oe.cancel()),J.halo.share({type:Invitation.Type.INTERACTIVE,authMethod:Invitation.AuthMethod.NONE,multiUse:!0}).subscribe(ee)},onAgentDestroy:Q,onAgentRefresh:async()=>{q(""),await X()},validationMessage:U,agentStatus:G,agentHostingEnabled:!!Y}};var qrcode={exports:{}};(function($,I){var U=function(){var q=function(he,ve){var me=236,be=17,_e=he,Ce=K[ve],xe=null,ke=0,Be=null,Me=[],Ve={},nt=function(Ae,Se){ke=_e*4+17,xe=function(Re){for(var ge=new Array(Re),ye=0;ye<Re;ye+=1){ge[ye]=new Array(Re);for(var Le=0;Le<Re;Le+=1)ge[ye][Le]=null}return ge}(ke),ot(0,0),ot(ke-7,0),ot(0,ke-7),dt(),it(),Ue(Ae,Se),_e>=7&&Qe(Ae),Be==null&&(Be=vt(_e,Ce,Me)),We(Be,Se)},ot=function(Ae,Se){for(var Re=-1;Re<=7;Re+=1)if(!(Ae+Re<=-1||ke<=Ae+Re))for(var ge=-1;ge<=7;ge+=1)Se+ge<=-1||ke<=Se+ge||(0<=Re&&Re<=6&&(ge==0||ge==6)||0<=ge&&ge<=6&&(Re==0||Re==6)||2<=Re&&Re<=4&&2<=ge&&ge<=4?xe[Ae+Re][Se+ge]=!0:xe[Ae+Re][Se+ge]=!1)},ft=function(){for(var Ae=0,Se=0,Re=0;Re<8;Re+=1){nt(!0,Re);var ge=J.getLostPoint(Ve);(Re==0||Ae>ge)&&(Ae=ge,Se=Re)}return Se},it=function(){for(var Ae=8;Ae<ke-8;Ae+=1)xe[Ae][6]==null&&(xe[Ae][6]=Ae%2==0);for(var Se=8;Se<ke-8;Se+=1)xe[6][Se]==null&&(xe[6][Se]=Se%2==0)},dt=function(){for(var Ae=J.getPatternPosition(_e),Se=0;Se<Ae.length;Se+=1)for(var Re=0;Re<Ae.length;Re+=1){var ge=Ae[Se],ye=Ae[Re];if(xe[ge][ye]==null)for(var Le=-2;Le<=2;Le+=1)for(var Ke=-2;Ke<=2;Ke+=1)Le==-2||Le==2||Ke==-2||Ke==2||Le==0&&Ke==0?xe[ge+Le][ye+Ke]=!0:xe[ge+Le][ye+Ke]=!1}},Qe=function(Ae){for(var Se=J.getBCHTypeNumber(_e),Re=0;Re<18;Re+=1){var ge=!Ae&&(Se>>Re&1)==1;xe[Math.floor(Re/3)][Re%3+ke-8-3]=ge}for(var Re=0;Re<18;Re+=1){var ge=!Ae&&(Se>>Re&1)==1;xe[Re%3+ke-8-3][Math.floor(Re/3)]=ge}},Ue=function(Ae,Se){for(var Re=Ce<<3|Se,ge=J.getBCHTypeInfo(Re),ye=0;ye<15;ye+=1){var Le=!Ae&&(ge>>ye&1)==1;ye<6?xe[ye][8]=Le:ye<8?xe[ye+1][8]=Le:xe[ke-15+ye][8]=Le}for(var ye=0;ye<15;ye+=1){var Le=!Ae&&(ge>>ye&1)==1;ye<8?xe[8][ke-ye-1]=Le:ye<9?xe[8][15-ye-1+1]=Le:xe[8][15-ye-1]=Le}xe[ke-8][8]=!Ae},We=function(Ae,Se){for(var Re=-1,ge=ke-1,ye=7,Le=0,Ke=J.getMaskFunction(Se),st=ke-1;st>0;st-=2)for(st==6&&(st-=1);;){for(var ut=0;ut<2;ut+=1)if(xe[ge][st-ut]==null){var $t=!1;Le<Ae.length&&($t=(Ae[Le]>>>ye&1)==1);var Et=Ke(ge,st-ut);Et&&($t=!$t),xe[ge][st-ut]=$t,ye-=1,ye==-1&&(Le+=1,ye=7)}if(ge+=Re,ge<0||ke<=ge){ge-=Re,Re=-Re;break}}},tt=function(Ae,Se){for(var Re=0,ge=0,ye=0,Le=new Array(Se.length),Ke=new Array(Se.length),st=0;st<Se.length;st+=1){var ut=Se[st].dataCount,$t=Se[st].totalCount-ut;ge=Math.max(ge,ut),ye=Math.max(ye,$t),Le[st]=new Array(ut);for(var Et=0;Et<Le[st].length;Et+=1)Le[st][Et]=255&Ae.getBuffer()[Et+Re];Re+=ut;var rt=J.getErrorCorrectPolynomial($t),jt=Z(Le[st],rt.getLength()-1),Gt=jt.mod(rt);Ke[st]=new Array(rt.getLength()-1);for(var Et=0;Et<Ke[st].length;Et+=1){var At=Et+Gt.getLength()-Ke[st].length;Ke[st][Et]=At>=0?Gt.getAt(At):0}}for(var zt=0,Et=0;Et<Se.length;Et+=1)zt+=Se[Et].totalCount;for(var an=new Array(zt),St=0,Et=0;Et<ge;Et+=1)for(var st=0;st<Se.length;st+=1)Et<Le[st].length&&(an[St]=Le[st][Et],St+=1);for(var Et=0;Et<ye;Et+=1)for(var st=0;st<Se.length;st+=1)Et<Ke[st].length&&(an[St]=Ke[st][Et],St+=1);return an},vt=function(Ae,Se,Re){for(var ge=Q.getRSBlocks(Ae,Se),ye=ee(),Le=0;Le<Re.length;Le+=1){var Ke=Re[Le];ye.put(Ke.getMode(),4),ye.put(Ke.getLength(),J.getLengthInBits(Ke.getMode(),Ae)),Ke.write(ye)}for(var st=0,Le=0;Le<ge.length;Le+=1)st+=ge[Le].dataCount;if(ye.getLengthInBits()>st*8)throw"code length overflow. ("+ye.getLengthInBits()+">"+st*8+")";for(ye.getLengthInBits()+4<=st*8&&ye.put(0,4);ye.getLengthInBits()%8!=0;)ye.putBit(!1);for(;!(ye.getLengthInBits()>=st*8||(ye.put(me,8),ye.getLengthInBits()>=st*8));)ye.put(be,8);return tt(ye,ge)};Ve.addData=function(Ae,Se){Se=Se||"Byte";var Re=null;switch(Se){case"Numeric":Re=te(Ae);break;case"Alphanumeric":Re=ne(Ae);break;case"Byte":Re=ie(Ae);break;case"Kanji":Re=oe(Ae);break;default:throw"mode:"+Se}Me.push(Re),Be=null},Ve.isDark=function(Ae,Se){if(Ae<0||ke<=Ae||Se<0||ke<=Se)throw Ae+","+Se;return xe[Ae][Se]},Ve.getModuleCount=function(){return ke},Ve.make=function(){if(_e<1){for(var Ae=1;Ae<40;Ae++){for(var Se=Q.getRSBlocks(Ae,Ce),Re=ee(),ge=0;ge<Me.length;ge++){var ye=Me[ge];Re.put(ye.getMode(),4),Re.put(ye.getLength(),J.getLengthInBits(ye.getMode(),Ae)),ye.write(Re)}for(var Le=0,ge=0;ge<Se.length;ge++)Le+=Se[ge].dataCount;if(Re.getLengthInBits()<=Le*8)break}_e=Ae}nt(!1,ft())},Ve.createTableTag=function(Ae,Se){Ae=Ae||2,Se=typeof Se>"u"?Ae*4:Se;var Re="";Re+='<table style="',Re+=" border-width: 0px; border-style: none;",Re+=" border-collapse: collapse;",Re+=" padding: 0px; margin: "+Se+"px;",Re+='">',Re+="<tbody>";for(var ge=0;ge<Ve.getModuleCount();ge+=1){Re+="<tr>";for(var ye=0;ye<Ve.getModuleCount();ye+=1)Re+='<td style="',Re+=" border-width: 0px; border-style: none;",Re+=" border-collapse: collapse;",Re+=" padding: 0px; margin: 0px;",Re+=" width: "+Ae+"px;",Re+=" height: "+Ae+"px;",Re+=" background-color: ",Re+=Ve.isDark(ge,ye)?"#000000":"#ffffff",Re+=";",Re+='"/>';Re+="</tr>"}return Re+="</tbody>",Re+="</table>",Re},Ve.createSvgTag=function(Ae,Se,Re,ge){var ye={};typeof arguments[0]=="object"&&(ye=arguments[0],Ae=ye.cellSize,Se=ye.margin,Re=ye.alt,ge=ye.title),Ae=Ae||2,Se=typeof Se>"u"?Ae*4:Se,Re=typeof Re=="string"?{text:Re}:Re||{},Re.text=Re.text||null,Re.id=Re.text?Re.id||"qrcode-description":null,ge=typeof ge=="string"?{text:ge}:ge||{},ge.text=ge.text||null,ge.id=ge.text?ge.id||"qrcode-title":null;var Le=Ve.getModuleCount()*Ae+Se*2,Ke,st,ut,$t,Et="",rt;for(rt="l"+Ae+",0 0,"+Ae+" -"+Ae+",0 0,-"+Ae+"z ",Et+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',Et+=ye.scalable?"":' width="'+Le+'px" height="'+Le+'px"',Et+=' viewBox="0 0 '+Le+" "+Le+'" ',Et+=' preserveAspectRatio="xMinYMin meet"',Et+=ge.text||Re.text?' role="img" aria-labelledby="'+je([ge.id,Re.id].join(" ").trim())+'"':"",Et+=">",Et+=ge.text?'<title id="'+je(ge.id)+'">'+je(ge.text)+"</title>":"",Et+=Re.text?'<description id="'+je(Re.id)+'">'+je(Re.text)+"</description>":"",Et+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',Et+='<path d="',ut=0;ut<Ve.getModuleCount();ut+=1)for($t=ut*Ae+Se,Ke=0;Ke<Ve.getModuleCount();Ke+=1)Ve.isDark(ut,Ke)&&(st=Ke*Ae+Se,Et+="M"+st+","+$t+rt);return Et+='" stroke="transparent" fill="black"/>',Et+="</svg>",Et},Ve.createDataURL=function(Ae,Se){Ae=Ae||2,Se=typeof Se>"u"?Ae*4:Se;var Re=Ve.getModuleCount()*Ae+Se*2,ge=Se,ye=Re-Se;return ue(Re,Re,function(Le,Ke){if(ge<=Le&&Le<ye&&ge<=Ke&&Ke<ye){var st=Math.floor((Le-ge)/Ae),ut=Math.floor((Ke-ge)/Ae);return Ve.isDark(ut,st)?0:1}else return 1})},Ve.createImgTag=function(Ae,Se,Re){Ae=Ae||2,Se=typeof Se>"u"?Ae*4:Se;var ge=Ve.getModuleCount()*Ae+Se*2,ye="";return ye+="<img",ye+=' src="',ye+=Ve.createDataURL(Ae,Se),ye+='"',ye+=' width="',ye+=ge,ye+='"',ye+=' height="',ye+=ge,ye+='"',Re&&(ye+=' alt="',ye+=je(Re),ye+='"'),ye+="/>",ye};var je=function(Ae){for(var Se="",Re=0;Re<Ae.length;Re+=1){var ge=Ae.charAt(Re);switch(ge){case"<":Se+="&lt;";break;case">":Se+="&gt;";break;case"&":Se+="&amp;";break;case'"':Se+="&quot;";break;default:Se+=ge;break}}return Se},ze=function(Ae){var Se=1;Ae=typeof Ae>"u"?Se*2:Ae;var Re=Ve.getModuleCount()*Se+Ae*2,ge=Ae,ye=Re-Ae,Le,Ke,st,ut,$t,Et={"██":"█","█ ":"▀"," █":"▄"," ":" "},rt={"██":"▀","█ ":"▀"," █":" "," ":" "},jt="";for(Le=0;Le<Re;Le+=2){for(st=Math.floor((Le-ge)/Se),ut=Math.floor((Le+1-ge)/Se),Ke=0;Ke<Re;Ke+=1)$t="█",ge<=Ke&&Ke<ye&&ge<=Le&&Le<ye&&Ve.isDark(st,Math.floor((Ke-ge)/Se))&&($t=" "),ge<=Ke&&Ke<ye&&ge<=Le+1&&Le+1<ye&&Ve.isDark(ut,Math.floor((Ke-ge)/Se))?$t+=" ":$t+="█",jt+=Ae<1&&Le+1>=ye?rt[$t]:Et[$t];jt+=`
999
999
  `}return Re%2&&Ae>0?jt.substring(0,jt.length-Re-1)+Array(Re+1).join("▀"):jt.substring(0,jt.length-1)};return Ve.createASCII=function(Ae,Se){if(Ae=Ae||1,Ae<2)return ze(Se);Ae-=1,Se=typeof Se>"u"?Ae*2:Se;var Re=Ve.getModuleCount()*Ae+Se*2,ge=Se,ye=Re-Se,Le,Ke,st,ut,$t=Array(Ae+1).join("██"),Et=Array(Ae+1).join(" "),rt="",jt="";for(Le=0;Le<Re;Le+=1){for(st=Math.floor((Le-ge)/Ae),jt="",Ke=0;Ke<Re;Ke+=1)ut=1,ge<=Ke&&Ke<ye&&ge<=Le&&Le<ye&&Ve.isDark(st,Math.floor((Ke-ge)/Ae))&&(ut=0),jt+=ut?$t:Et;for(st=0;st<Ae;st+=1)rt+=jt+`
1000
1000
  `}return rt.substring(0,rt.length-1)},Ve.renderTo2dContext=function(Ae,Se){Se=Se||2;for(var Re=Ve.getModuleCount(),ge=0;ge<Re;ge++)for(var ye=0;ye<Re;ye++)Ae.fillStyle=Ve.isDark(ge,ye)?"black":"white",Ae.fillRect(ge*Se,ye*Se,Se,Se)},Ve};q.stringToBytesFuncs={default:function(he){for(var ve=[],me=0;me<he.length;me+=1){var be=he.charCodeAt(me);ve.push(be&255)}return ve}},q.stringToBytes=q.stringToBytesFuncs.default,q.createStringToBytes=function(he,ve){var me=function(){for(var _e=se(he),Ce=function(){var it=_e.read();if(it==-1)throw"eof";return it},xe=0,ke={};;){var Be=_e.read();if(Be==-1)break;var Me=Ce(),Ve=Ce(),nt=Ce(),ot=String.fromCharCode(Be<<8|Me),ft=Ve<<8|nt;ke[ot]=ft,xe+=1}if(xe!=ve)throw xe+" != "+ve;return ke}(),be=63;return function(_e){for(var Ce=[],xe=0;xe<_e.length;xe+=1){var ke=_e.charCodeAt(xe);if(ke<128)Ce.push(ke);else{var Be=me[_e.charAt(xe)];typeof Be=="number"?(Be&255)==Be?Ce.push(Be):(Ce.push(Be>>>8),Ce.push(Be&255)):Ce.push(be)}}return Ce}};var G={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},K={L:1,M:0,Q:3,H:2},Y={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},J=function(){var he=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],ve=1335,me=7973,be=21522,_e={},Ce=function(xe){for(var ke=0;xe!=0;)ke+=1,xe>>>=1;return ke};return _e.getBCHTypeInfo=function(xe){for(var ke=xe<<10;Ce(ke)-Ce(ve)>=0;)ke^=ve<<Ce(ke)-Ce(ve);return(xe<<10|ke)^be},_e.getBCHTypeNumber=function(xe){for(var ke=xe<<12;Ce(ke)-Ce(me)>=0;)ke^=me<<Ce(ke)-Ce(me);return xe<<12|ke},_e.getPatternPosition=function(xe){return he[xe-1]},_e.getMaskFunction=function(xe){switch(xe){case Y.PATTERN000:return function(ke,Be){return(ke+Be)%2==0};case Y.PATTERN001:return function(ke,Be){return ke%2==0};case Y.PATTERN010:return function(ke,Be){return Be%3==0};case Y.PATTERN011:return function(ke,Be){return(ke+Be)%3==0};case Y.PATTERN100:return function(ke,Be){return(Math.floor(ke/2)+Math.floor(Be/3))%2==0};case Y.PATTERN101:return function(ke,Be){return ke*Be%2+ke*Be%3==0};case Y.PATTERN110:return function(ke,Be){return(ke*Be%2+ke*Be%3)%2==0};case Y.PATTERN111:return function(ke,Be){return(ke*Be%3+(ke+Be)%2)%2==0};default:throw"bad maskPattern:"+xe}},_e.getErrorCorrectPolynomial=function(xe){for(var ke=Z([1],0),Be=0;Be<xe;Be+=1)ke=ke.multiply(Z([1,X.gexp(Be)],0));return ke},_e.getLengthInBits=function(xe,ke){if(1<=ke&&ke<10)switch(xe){case G.MODE_NUMBER:return 10;case G.MODE_ALPHA_NUM:return 9;case G.MODE_8BIT_BYTE:return 8;case G.MODE_KANJI:return 8;default:throw"mode:"+xe}else if(ke<27)switch(xe){case G.MODE_NUMBER:return 12;case G.MODE_ALPHA_NUM:return 11;case G.MODE_8BIT_BYTE:return 16;case G.MODE_KANJI:return 10;default:throw"mode:"+xe}else if(ke<41)switch(xe){case G.MODE_NUMBER:return 14;case G.MODE_ALPHA_NUM:return 13;case G.MODE_8BIT_BYTE:return 16;case G.MODE_KANJI:return 12;default:throw"mode:"+xe}else throw"type:"+ke},_e.getLostPoint=function(xe){for(var ke=xe.getModuleCount(),Be=0,Me=0;Me<ke;Me+=1)for(var Ve=0;Ve<ke;Ve+=1){for(var nt=0,ot=xe.isDark(Me,Ve),ft=-1;ft<=1;ft+=1)if(!(Me+ft<0||ke<=Me+ft))for(var it=-1;it<=1;it+=1)Ve+it<0||ke<=Ve+it||ft==0&&it==0||ot==xe.isDark(Me+ft,Ve+it)&&(nt+=1);nt>5&&(Be+=3+nt-5)}for(var Me=0;Me<ke-1;Me+=1)for(var Ve=0;Ve<ke-1;Ve+=1){var dt=0;xe.isDark(Me,Ve)&&(dt+=1),xe.isDark(Me+1,Ve)&&(dt+=1),xe.isDark(Me,Ve+1)&&(dt+=1),xe.isDark(Me+1,Ve+1)&&(dt+=1),(dt==0||dt==4)&&(Be+=3)}for(var Me=0;Me<ke;Me+=1)for(var Ve=0;Ve<ke-6;Ve+=1)xe.isDark(Me,Ve)&&!xe.isDark(Me,Ve+1)&&xe.isDark(Me,Ve+2)&&xe.isDark(Me,Ve+3)&&xe.isDark(Me,Ve+4)&&!xe.isDark(Me,Ve+5)&&xe.isDark(Me,Ve+6)&&(Be+=40);for(var Ve=0;Ve<ke;Ve+=1)for(var Me=0;Me<ke-6;Me+=1)xe.isDark(Me,Ve)&&!xe.isDark(Me+1,Ve)&&xe.isDark(Me+2,Ve)&&xe.isDark(Me+3,Ve)&&xe.isDark(Me+4,Ve)&&!xe.isDark(Me+5,Ve)&&xe.isDark(Me+6,Ve)&&(Be+=40);for(var Qe=0,Ve=0;Ve<ke;Ve+=1)for(var Me=0;Me<ke;Me+=1)xe.isDark(Me,Ve)&&(Qe+=1);var Ue=Math.abs(100*Qe/ke/ke-50)/5;return Be+=Ue*10,Be},_e}(),X=function(){for(var he=new Array(256),ve=new Array(256),me=0;me<8;me+=1)he[me]=1<<me;for(var me=8;me<256;me+=1)he[me]=he[me-4]^he[me-5]^he[me-6]^he[me-8];for(var me=0;me<255;me+=1)ve[he[me]]=me;var be={};return be.glog=function(_e){if(_e<1)throw"glog("+_e+")";return ve[_e]},be.gexp=function(_e){for(;_e<0;)_e+=255;for(;_e>=256;)_e-=255;return he[_e]},be}();function Z(he,ve){if(typeof he.length>"u")throw he.length+"/"+ve;var me=function(){for(var _e=0;_e<he.length&&he[_e]==0;)_e+=1;for(var Ce=new Array(he.length-_e+ve),xe=0;xe<he.length-_e;xe+=1)Ce[xe]=he[xe+_e];return Ce}(),be={};return be.getAt=function(_e){return me[_e]},be.getLength=function(){return me.length},be.multiply=function(_e){for(var Ce=new Array(be.getLength()+_e.getLength()-1),xe=0;xe<be.getLength();xe+=1)for(var ke=0;ke<_e.getLength();ke+=1)Ce[xe+ke]^=X.gexp(X.glog(be.getAt(xe))+X.glog(_e.getAt(ke)));return Z(Ce,0)},be.mod=function(_e){if(be.getLength()-_e.getLength()<0)return be;for(var Ce=X.glog(be.getAt(0))-X.glog(_e.getAt(0)),xe=new Array(be.getLength()),ke=0;ke<be.getLength();ke+=1)xe[ke]=be.getAt(ke);for(var ke=0;ke<_e.getLength();ke+=1)xe[ke]^=X.gexp(X.glog(_e.getAt(ke))+Ce);return Z(xe,0).mod(_e)},be}var Q=function(){var he=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],ve=function(_e,Ce){var xe={};return xe.totalCount=_e,xe.dataCount=Ce,xe},me={},be=function(_e,Ce){switch(Ce){case K.L:return he[(_e-1)*4+0];case K.M:return he[(_e-1)*4+1];case K.Q:return he[(_e-1)*4+2];case K.H:return he[(_e-1)*4+3];default:return}};return me.getRSBlocks=function(_e,Ce){var xe=be(_e,Ce);if(typeof xe>"u")throw"bad rs block @ typeNumber:"+_e+"/errorCorrectionLevel:"+Ce;for(var ke=xe.length/3,Be=[],Me=0;Me<ke;Me+=1)for(var Ve=xe[Me*3+0],nt=xe[Me*3+1],ot=xe[Me*3+2],ft=0;ft<Ve;ft+=1)Be.push(ve(nt,ot));return Be},me}(),ee=function(){var he=[],ve=0,me={};return me.getBuffer=function(){return he},me.getAt=function(be){var _e=Math.floor(be/8);return(he[_e]>>>7-be%8&1)==1},me.put=function(be,_e){for(var Ce=0;Ce<_e;Ce+=1)me.putBit((be>>>_e-Ce-1&1)==1)},me.getLengthInBits=function(){return ve},me.putBit=function(be){var _e=Math.floor(ve/8);he.length<=_e&&he.push(0),be&&(he[_e]|=128>>>ve%8),ve+=1},me},te=function(he){var ve=G.MODE_NUMBER,me=he,be={};be.getMode=function(){return ve},be.getLength=function(xe){return me.length},be.write=function(xe){for(var ke=me,Be=0;Be+2<ke.length;)xe.put(_e(ke.substring(Be,Be+3)),10),Be+=3;Be<ke.length&&(ke.length-Be==1?xe.put(_e(ke.substring(Be,Be+1)),4):ke.length-Be==2&&xe.put(_e(ke.substring(Be,Be+2)),7))};var _e=function(xe){for(var ke=0,Be=0;Be<xe.length;Be+=1)ke=ke*10+Ce(xe.charAt(Be));return ke},Ce=function(xe){if("0"<=xe&&xe<="9")return xe.charCodeAt(0)-48;throw"illegal char :"+xe};return be},ne=function(he){var ve=G.MODE_ALPHA_NUM,me=he,be={};be.getMode=function(){return ve},be.getLength=function(Ce){return me.length},be.write=function(Ce){for(var xe=me,ke=0;ke+1<xe.length;)Ce.put(_e(xe.charAt(ke))*45+_e(xe.charAt(ke+1)),11),ke+=2;ke<xe.length&&Ce.put(_e(xe.charAt(ke)),6)};var _e=function(Ce){if("0"<=Ce&&Ce<="9")return Ce.charCodeAt(0)-48;if("A"<=Ce&&Ce<="Z")return Ce.charCodeAt(0)-65+10;switch(Ce){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+Ce}};return be},ie=function(he){var ve=G.MODE_8BIT_BYTE,me=q.stringToBytes(he),be={};return be.getMode=function(){return ve},be.getLength=function(_e){return me.length},be.write=function(_e){for(var Ce=0;Ce<me.length;Ce+=1)_e.put(me[Ce],8)},be},oe=function(he){var ve=G.MODE_KANJI,me=q.stringToBytesFuncs.SJIS;if(!me)throw"sjis not supported.";(function(Ce,xe){var ke=me(Ce);if(ke.length!=2||(ke[0]<<8|ke[1])!=xe)throw"sjis not supported."})("友",38726);var be=me(he),_e={};return _e.getMode=function(){return ve},_e.getLength=function(Ce){return~~(be.length/2)},_e.write=function(Ce){for(var xe=be,ke=0;ke+1<xe.length;){var Be=(255&xe[ke])<<8|255&xe[ke+1];if(33088<=Be&&Be<=40956)Be-=33088;else if(57408<=Be&&Be<=60351)Be-=49472;else throw"illegal char at "+(ke+1)+"/"+Be;Be=(Be>>>8&255)*192+(Be&255),Ce.put(Be,13),ke+=2}if(ke<xe.length)throw"illegal char at "+(ke+1)},_e},ce=function(){var he=[],ve={};return ve.writeByte=function(me){he.push(me&255)},ve.writeShort=function(me){ve.writeByte(me),ve.writeByte(me>>>8)},ve.writeBytes=function(me,be,_e){be=be||0,_e=_e||me.length;for(var Ce=0;Ce<_e;Ce+=1)ve.writeByte(me[Ce+be])},ve.writeString=function(me){for(var be=0;be<me.length;be+=1)ve.writeByte(me.charCodeAt(be))},ve.toByteArray=function(){return he},ve.toString=function(){var me="";me+="[";for(var be=0;be<he.length;be+=1)be>0&&(me+=","),me+=he[be];return me+="]",me},ve},fe=function(){var he=0,ve=0,me=0,be="",_e={},Ce=function(ke){be+=String.fromCharCode(xe(ke&63))},xe=function(ke){if(!(ke<0)){if(ke<26)return 65+ke;if(ke<52)return 97+(ke-26);if(ke<62)return 48+(ke-52);if(ke==62)return 43;if(ke==63)return 47}throw"n:"+ke};return _e.writeByte=function(ke){for(he=he<<8|ke&255,ve+=8,me+=1;ve>=6;)Ce(he>>>ve-6),ve-=6},_e.flush=function(){if(ve>0&&(Ce(he<<6-ve),he=0,ve=0),me%3!=0)for(var ke=3-me%3,Be=0;Be<ke;Be+=1)be+="="},_e.toString=function(){return be},_e},se=function(he){var ve=he,me=0,be=0,_e=0,Ce={};Ce.read=function(){for(;_e<8;){if(me>=ve.length){if(_e==0)return-1;throw"unexpected end of file./"+_e}var ke=ve.charAt(me);if(me+=1,ke=="=")return _e=0,-1;if(ke.match(/^\s$/))continue;be=be<<6|xe(ke.charCodeAt(0)),_e+=6}var Be=be>>>_e-8&255;return _e-=8,Be};var xe=function(ke){if(65<=ke&&ke<=90)return ke-65;if(97<=ke&&ke<=122)return ke-97+26;if(48<=ke&&ke<=57)return ke-48+52;if(ke==43)return 62;if(ke==47)return 63;throw"c:"+ke};return Ce},de=function(he,ve){var me=he,be=ve,_e=new Array(he*ve),Ce={};Ce.setPixel=function(Me,Ve,nt){_e[Ve*me+Me]=nt},Ce.write=function(Me){Me.writeString("GIF87a"),Me.writeShort(me),Me.writeShort(be),Me.writeByte(128),Me.writeByte(0),Me.writeByte(0),Me.writeByte(0),Me.writeByte(0),Me.writeByte(0),Me.writeByte(255),Me.writeByte(255),Me.writeByte(255),Me.writeString(","),Me.writeShort(0),Me.writeShort(0),Me.writeShort(me),Me.writeShort(be),Me.writeByte(0);var Ve=2,nt=ke(Ve);Me.writeByte(Ve);for(var ot=0;nt.length-ot>255;)Me.writeByte(255),Me.writeBytes(nt,ot,255),ot+=255;Me.writeByte(nt.length-ot),Me.writeBytes(nt,ot,nt.length-ot),Me.writeByte(0),Me.writeString(";")};var xe=function(Me){var Ve=Me,nt=0,ot=0,ft={};return ft.write=function(it,dt){if(it>>>dt)throw"length over";for(;nt+dt>=8;)Ve.writeByte(255&(it<<nt|ot)),dt-=8-nt,it>>>=8-nt,ot=0,nt=0;ot=it<<nt|ot,nt=nt+dt},ft.flush=function(){nt>0&&Ve.writeByte(ot)},ft},ke=function(Me){for(var Ve=1<<Me,nt=(1<<Me)+1,ot=Me+1,ft=Be(),it=0;it<Ve;it+=1)ft.add(String.fromCharCode(it));ft.add(String.fromCharCode(Ve)),ft.add(String.fromCharCode(nt));var dt=ce(),Qe=xe(dt);Qe.write(Ve,ot);var Ue=0,We=String.fromCharCode(_e[Ue]);for(Ue+=1;Ue<_e.length;){var tt=String.fromCharCode(_e[Ue]);Ue+=1,ft.contains(We+tt)?We=We+tt:(Qe.write(ft.indexOf(We),ot),ft.size()<4095&&(ft.size()==1<<ot&&(ot+=1),ft.add(We+tt)),We=tt)}return Qe.write(ft.indexOf(We),ot),Qe.write(nt,ot),Qe.flush(),dt.toByteArray()},Be=function(){var Me={},Ve=0,nt={};return nt.add=function(ot){if(nt.contains(ot))throw"dup key:"+ot;Me[ot]=Ve,Ve+=1},nt.size=function(){return Ve},nt.indexOf=function(ot){return Me[ot]},nt.contains=function(ot){return typeof Me[ot]<"u"},nt};return Ce},ue=function(he,ve,me){for(var be=de(he,ve),_e=0;_e<ve;_e+=1)for(var Ce=0;Ce<he;Ce+=1)be.setPixel(Ce,_e,me(Ce,_e));var xe=ce();be.write(xe);for(var ke=fe(),Be=xe.toByteArray(),Me=0;Me<Be.length;Me+=1)ke.writeByte(Be[Me]);return ke.flush(),"data:image/gif;base64,"+ke};return q}();(function(){U.stringToBytesFuncs["UTF-8"]=function(q){function G(K){for(var Y=[],J=0;J<K.length;J++){var X=K.charCodeAt(J);X<128?Y.push(X):X<2048?Y.push(192|X>>6,128|X&63):X<55296||X>=57344?Y.push(224|X>>12,128|X>>6&63,128|X&63):(J++,X=65536+((X&1023)<<10|K.charCodeAt(J)&1023),Y.push(240|X>>18,128|X>>12&63,128|X>>6&63,128|X&63))}return Y}return G(q)}})(),function(q){$.exports=q()}(function(){return U})})(qrcode);var qrcodeExports=qrcode.exports;const qrGenerator=getDefaultExportFromCjs(qrcodeExports);var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=($,I,U)=>I in $?__defProp($,I,{enumerable:!0,configurable:!0,writable:!0,value:U}):$[I]=U,__spreadValues=($,I)=>{for(var U in I||(I={}))__hasOwnProp.call(I,U)&&__defNormalProp($,U,I[U]);if(__getOwnPropSymbols)for(var U of __getOwnPropSymbols(I))__propIsEnum.call(I,U)&&__defNormalProp($,U,I[U]);return $},__objRest=($,I)=>{var U={};for(var q in $)__hasOwnProp.call($,q)&&I.indexOf(q)<0&&(U[q]=$[q]);if($!=null&&__getOwnPropSymbols)for(var q of __getOwnPropSymbols($))I.indexOf(q)<0&&__propIsEnum.call($,q)&&(U[q]=$[q]);return U},VIEWPORT_SIZE=1e3,RE_CODE_LENGTH_OVERFLOW=/code length overflow/i;qrGenerator.stringToBytes=qrGenerator.stringToBytesFuncs["UTF-8"];var createQrCode=($,I,U)=>{U=Math.max(1,U);for(let q=U;q<=40;q+=1)try{const G=qrGenerator(q,I);G.addData($),G.make();const K=G.getModuleCount();return{text:$,level:I,version:q,moduleCount:K,isDark:(J,X)=>J>=0&&J<K&&X>=0&&X<K&&G.isDark(J,X)}}catch(G){if(!(q<40&&RE_CODE_LENGTH_OVERFLOW.test(String(G))))throw G}return null},round=Math.round,drawM=($,I)=>`M ${round($)} ${round(I)}`,drawL=($,I)=>`L ${round($)} ${round(I)}`,drawA=($,I,U)=>`A ${round(U)} ${round(U)} 0 0 1 ${round($)} ${round(I)}`,drawDark=($,I,U,q,G,K,Y,J,X)=>{const Z=[];return K?Z.push(drawM($+G,I)):Z.push(drawM($,I)),Y?Z.push(drawL(U-G,I),drawA(U,I+G,G)):Z.push(drawL(U,I)),J?Z.push(drawL(U,q-G),drawA(U-G,q,G)):Z.push(drawL(U,q)),X?Z.push(drawL($+G,q),drawA($,q-G,G)):Z.push(drawL($,q)),K?Z.push(drawL($,I+G),drawA($+G,I,G)):Z.push(drawL($,I)),Z.join(" ")},drawLight=($,I,U,q,G,K,Y,J,X)=>{const Z=[];return K&&Z.push(drawM($+G,I),drawL($,I),drawL($,I+G),drawA($+G,I,G)),Y&&Z.push(drawM(U,I+G),drawL(U,I),drawL(U-G,I),drawA(U,I+G,G)),J&&Z.push(drawM(U-G,q),drawL(U,q),drawL(U,q-G),drawA(U-G,q,G)),X&&Z.push(drawM($,q-G),drawL($,q),drawL($+G,q),drawA($,q-G,G)),Z.join(" ")},drawMod=($,I,U,q,G)=>{const K=G*U,Y=q*U,J=K+U,X=Y+U,Z=I*.005*U,Q=$.isDark,ee=q-1,te=q+1,ne=G-1,ie=G+1,oe=Q(q,G),ce=Q(ee,ne),fe=Q(ee,G),se=Q(ee,ie),de=Q(q,ie),ue=Q(te,ie),he=Q(te,G),ve=Q(te,ne),me=Q(q,ne);return oe?drawDark(K,Y,J,X,Z,!fe&&!me,!fe&&!de,!he&&!de,!he&&!me):drawLight(K,Y,J,X,Z,fe&&me&&ce,fe&&de&&se,he&&de&&ue,he&&me&&ve)},createPath=($,I)=>{if(!$)return"";const U=$.moduleCount,q=VIEWPORT_SIZE/U,G=[];for(let K=0;K<U;K+=1)for(let Y=0;Y<U;Y+=1)G.push(drawMod($,I,q,K,Y));return G.join(" ")},QR=$=>{var I=$,{color:U="#000",backgroundColor:q,cutout:G=!1,cutoutElement:K,errorCorrectionLevel:Y="Q",rounding:J=0,children:X}=I,Z=__objRest(I,["color","backgroundColor","cutout","cutoutElement","errorCorrectionLevel","rounding","children"]),Q,ee;const te=React.useMemo(()=>createQrCode(X,Y,1),[X,Y]);if(!te)return null;const ne=(Q=te==null?void 0:te.moduleCount)!=null?Q:1,oe=VIEWPORT_SIZE/((ee=te==null?void 0:te.moduleCount)!=null?ee:1)*(Math.floor(ne*.18)*2-1)+2,ce=(VIEWPORT_SIZE-oe)/2;return React__namespace.createElement("svg",__spreadValues({xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${VIEWPORT_SIZE} ${VIEWPORT_SIZE}`},Z),G?React__namespace.createElement("mask",{id:"react-qr-rounded__mask"},React__namespace.createElement("rect",{x:"0",y:"0",width:VIEWPORT_SIZE,height:VIEWPORT_SIZE,fill:"#fff"}),React__namespace.createElement("rect",{x:ce,y:ce,width:oe,height:oe,rx:J,ry:J,fill:"#000"})):null,q?React__namespace.createElement("rect",{x:"0",y:"0",width:VIEWPORT_SIZE,height:VIEWPORT_SIZE,fill:q}):null,React__namespace.createElement("path",{fill:U,d:createPath(te,J),mask:G?"url(#react-qr-rounded__mask)":void 0}),K?React__namespace.createElement("foreignObject",{x:ce,y:ce,width:oe,height:oe},React__namespace.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",width:"100%",overflow:"hidden",borderRadius:J}},K)):null)};const invitationStatusValue=new Map([[Invitation.State.ERROR,-3],[Invitation.State.TIMEOUT,-2],[Invitation.State.CANCELLED,-1],[Invitation.State.INIT,0],[Invitation.State.CONNECTING,1],[Invitation.State.CONNECTED,2],[Invitation.State.READY_FOR_AUTHENTICATION,3],[Invitation.State.AUTHENTICATING,4],[Invitation.State.SUCCESS,5]]),InvitationManagerView=({children:$,...I})=>React.createElement(Viewport.View,{...I,classNames:"grow flex flex-col justify-around items-center"},$),InvitationManager=({invitationUrl:$,active:I,send:U,status:q,multiUse:G,authCode:K,id:Y="0"})=>{const{t:J}=useTranslation("os"),X=useId("invitation-manager__qr-code"),Z=G?0:invitationStatusValue.get(q)??0,Q=Z===3,ee=hexToEmoji(Y),te=React.useMemo(()=>{if(G)return"showing qr";switch(!0){case Z===5:case Z<0:return"showing final";case Z===3:return"showing auth code";default:return"showing qr"}},[Z]);return React.createElement(React.Fragment,null,React.createElement(Viewport.Root,{activeView:te,classNames:"grow plb-1"},React.createElement(Viewport.Views,null,React.createElement(InvitationManagerView,{id:"showing qr",emoji:ee},React.createElement("p",{className:"text-sm mlb-1 font-normal text-center"},J(G?"invite many qr label":"invite one qr label")),React.createElement("div",{role:"none",className:mx(descriptionText,"is-full max-is-[14rem] relative")},React.createElement(QR,{rounding:100,backgroundColor:"transparent",color:"currentColor",className:mx("is-full bs-full p-2",Q&&"invisible"),"aria-labelledby":X,errorCorrectionLevel:"Q",cutout:!0},$??"never"),React.createElement(Centered,null,React.createElement(Emoji,{text:ee}))),React.createElement("span",{id:X,className:"sr-only"},J("qr label")),React.createElement(CopyButton,{variant:"ghost",value:$??"never"})),React.createElement(InvitationManagerView,{id:"showing auth code"},React.createElement(Label,null,J("auth code message")),React.createElement(AuthCode,{code:K,large:!0,classNames:"text-black dark:text-white"}),React.createElement(Label,null,J("auth other device emoji message")),ee&&React.createElement(Emoji,{text:ee})),React.createElement(InvitationManagerView,{id:"showing final"},Z>0?React.createElement(react.Check,{className:mx("m-1.5",getSize(6))}):React.createElement(react.X,{className:mx("m-1.5",getSize(6))})))),React.createElement(Actions,{classNames:"mbs-4"},React.createElement(Action,{disabled:!I,onClick:()=>U==null?void 0:U({type:"deselectInvitation"})},J("back label"))))},ConfirmReset=({active:$,onCancel:I,onConfirm:U,mode:q})=>{const{t:G}=useTranslation("os"),[K,Y]=React.useState(""),[J,X]=React.useState(!1),Z=async()=>(X(!0),U==null?void 0:U().then(()=>X(!1),Q=>{log$2.catch(Q),Y(G("failed to reset identity message")),X(!1)}));return React.createElement(ConfirmResetImpl,{disabled:!$,pending:J,validationMessage:K,onConfirm:Z,onCancel:I,mode:q})},ConfirmResetImpl=({disabled:$,pending:I,validationMessage:U,onConfirm:q,onCancel:G,mode:K})=>{const{t:Y}=useTranslation("os"),J=Y("confirmation value"),[X,Z]=React.useState(""),Q=K==="join new identity"?"join-new-identity":"reset-storage";return React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col gap-2 justify-center"},React.createElement(Message$1.Root,{valence:"error"},React.createElement(Message$1.Title,null,React.createElement(react.Warning,{className:mx(getSize(6),"inline mie-2")}),Y("sign out chooser title")),React.createElement(Message$1.Body,null,Y("sign out chooser message"))),React.createElement(Input,{validationMessage:U,label:React.createElement(StepHeading,{className:"text-start mlb-2"},Y(K==="join new identity"?"join new identity input label":"reset storage input label",{confirmationValue:J})),disabled:$,"data-testid":`${Q}.reset-identity-input`,placeholder:Y("confirmation placeholder",{confirmationValue:J}),onChange:({target:{value:ee}})=>Z(ee)})),React.createElement(Actions,null,G&&React.createElement(Action,{disabled:$,onClick:G,"data-testid":`${Q}.reset-identity-cancel`},Y("cancel label")),q&&React.createElement(Action,{variant:"destructive",disabled:$||I||X!==J,onClick:q,"data-testid":`${Q}.reset-identity-confirm`},Y(I?"reset in progress label":"reset device label"))))},viewStyles="pbs-1 pbe-3 pli-3",getHueValue=$=>{var I,U;return((U=(I=$==null?void 0:$.profile)==null?void 0:I.data)==null?void 0:U.hue)||hexToHue(($==null?void 0:$.identityKey.toHex())??"0")},getEmojiValue=$=>{var I,U;return((U=(I=$==null?void 0:$.profile)==null?void 0:I.data)==null?void 0:U.emoji)||hexToEmoji(($==null?void 0:$.identityKey.toHex())??"0")},IdentityHeading=({titleId:$,title:I,identity:U,onDone:q,onUpdateProfile:G,connectionState:K,onChangeConnectionState:Y})=>{var ve,me;const J=keyToFallback(U.identityKey),{t:X}=useTranslation("os"),[Z,Q]=React.useState(((ve=U.profile)==null?void 0:ve.displayName)??""),[ee,te]=React.useState(getEmojiValue(U)),[ne,ie]=React.useState(getHueValue(U)),{textValue:oe,setTextValue:ce}=useClipboardContext(),fe=U.identityKey.toHex(),se=oe===fe,de=be=>{var _e;te(be),G==null||G({...U.profile,data:{...(_e=U.profile)==null?void 0:_e.data,emoji:be}})},ue=be=>{var _e;ie(be),G==null||G({...U.profile,data:{...(_e=U.profile)==null?void 0:_e.data,hue:be}})},he=K===mesh.ConnectionState.ONLINE;return React.createElement(Heading,{titleId:$,title:I,corner:React.createElement(CloseButton,{onDone:q})},React.createElement(Avatar.Root,{size:16,variant:"circle",status:he?"active":"error",hue:ne||J.hue},React.createElement(Toolbar.Root,{classNames:"flex justify-center"},React.createElement(Avatar.Frame,{classNames:"relative z-[2] -mli-4 chromatic-ignore"},React.createElement(Avatar.Fallback,{text:ee||J.emoji}))),React.createElement(Avatar.Label,{classNames:"sr-only","data-testid":"identityHeading.displayName"},((me=U.profile)==null?void 0:me.displayName)??generateName(U.identityKey.toHex())),React.createElement(Input$1.Root,null,React.createElement(Input$1.Label,{srOnly:!0},X("display name input label")),React.createElement(Input$1.TextInput,{variant:"subdued","data-testid":"display-name-input",placeholder:X("display name input placeholder"),classNames:"mbs-2 text-center font-light text-xl",value:Z,onChange:({target:{value:be}})=>Q(be),onBlur:({target:{value:be}})=>G==null?void 0:G({...U.profile,displayName:be})})),React.createElement(Toolbar.Root,{classNames:"flex justify-center items-center gap-1 pt-3"},React.createElement(EmojiPickerToolbarButton,{emoji:ee,onChangeEmoji:de,classNames:"bs-[--rail-action]"}),React.createElement(HuePickerToolbarButton,{hue:ne,onChangeHue:ue,classNames:"bs-[--rail-action]"}),React.createElement(React.Fragment,null,React.createElement(Tooltip.Root,null,React.createElement(Tooltip.Trigger,{asChild:!0},React.createElement(Toolbar.Button,{classNames:"bs-[--rail-action]","data-testid":"update-profile-form-copy-key",onClick:()=>ce(fe)},React.createElement("span",{className:"sr-only"},X(se?"copy success label":"copy self public key label")),React.createElement(react.Key,{className:getSize(5)}))),React.createElement(Tooltip.Portal,null,React.createElement(Tooltip.Content,{side:"bottom",classNames:"z-50"},X(se?"copy success label":"copy self public key label"),React.createElement(Tooltip.Arrow,null))),React.createElement(Tooltip.Root,null,React.createElement(Tooltip.Trigger,{asChild:!0},React.createElement(Toolbar.Button,{classNames:["bs-[--rail-action]",!he&&"text-error-500"],onClick:()=>Y==null?void 0:Y(he?mesh.ConnectionState.OFFLINE:mesh.ConnectionState.ONLINE)},React.createElement("span",{className:"sr-only"},X(he?"disconnect label":"connect label")),he?React.createElement(react.PlugsConnected,{className:getSize(5)}):React.createElement(react.Plugs,{className:getSize(5)}))),React.createElement(Tooltip.Portal,null,React.createElement(Tooltip.Content,{side:"bottom",classNames:"z-50"},X(he?"disconnect label":"connect label"),React.createElement(Tooltip.Arrow,null)))))))))},IdentityPanelImpl=$=>{const{identity:I,titleId:U,activeView:q,onUpdateProfile:G,onResetStorage:K,onJoinNewIdentity:Y,IdentityActionChooser:J=IdentityActionChooser,InvitationManager:X=InvitationManager,connectionState:Z,onChangeConnectionState:Q,onDone:ee,...te}=$,{t:ne}=useTranslation("os"),ie=React.useMemo(()=>{switch(q){case"device invitation manager":return ne("choose add device label");default:return ne("identity heading")}},[q,ne]),oe=()=>{var ce;return(ce=te.send)==null?void 0:ce.call(te,"unchooseAction")};return React.createElement(DensityProvider,{density:"fine"},React.createElement(IdentityHeading,{identity:I,titleId:U,title:ie,onDone:ee,onUpdateProfile:G,connectionState:Z,onChangeConnectionState:Q}),React.createElement(Viewport.Root,{activeView:q},React.createElement(Viewport.Views,null,React.createElement(Viewport.View,{id:"identity action chooser",classNames:viewStyles},React.createElement(J,{active:q==="identity action chooser",...te,connectionState:Z})),React.createElement(Viewport.View,{id:"device invitation manager",classNames:viewStyles},React.createElement(X,{active:q==="device invitation manager",...te,invitationUrl:te.createInvitationUrl(te.invitationCode)})),React.createElement(Viewport.View,{classNames:viewStyles,id:"confirm join new identity"},React.createElement(ConfirmReset,{active:q==="confirm join new identity",...te,mode:"join new identity",onConfirm:Y,onCancel:oe})),React.createElement(Viewport.View,{classNames:viewStyles,id:"confirm reset storage"},React.createElement(ConfirmReset,{active:q==="confirm reset storage",...te,mode:"reset storage",onConfirm:K,onCancel:oe})))))},IdentityPanelWithInvitationImpl=({invitation:$,...I})=>{const U=useInvitationStatus($);return React.createElement(IdentityPanelImpl,{...I,...U})},IdentityPanel=({titleId:$,createInvitationUrl:I=G=>G,initialDisposition:U="default",...q})=>{const G=useId("identityPanel__heading",$),K=reactClient.useClient(),Y=halo.useDevices(),J=halo.useIdentity(),X=halo.useHaloInvitations(),Z=useAgentHandlers({identity:J,invitations:X});if(!J)return log$2.error("IdentityPanel rendered with no active identity."),null;const[Q,ee,te]=useIdentityMachine(K,{context:{initialDisposition:U}}),{swarm:ne}=mesh.useNetworkStatus(),ie=async se=>K==null?void 0:K.mesh.updateConfig(se);React.useEffect(()=>te.subscribe(de=>{log$2("[state]",de)}).unsubscribe,[te]);const oe=React.useMemo(()=>{switch(!0){case Q.matches("choosingAction"):return"identity action chooser";case Q.matches("managingDeviceInvitation"):return"device invitation manager";case Q.matches("confirmingResetStorage"):return"confirm reset storage";case Q.matches("confirmingJoinNewIdentity"):return"confirm join new identity";default:return"identity action chooser"}},[Q]),fe={...q,identity:J,devices:Y,activeView:oe,send:ee,titleId:G,createInvitationUrl:I,onUpdateProfile:async se=>{ee({type:"updateProfile"}),await K.halo.updateProfile(se)},connectionState:ne,onChangeConnectionState:ie,...Z};return Q.context.invitation?React.createElement(IdentityPanelWithInvitationImpl,{...fe,invitation:Q.context.invitation}):React.createElement(IdentityPanelImpl,{...fe})},JoinHeading=React.forwardRef(({mode:$,titleId:I,exitActionParent:U,onExit:q},G)=>{const{t:K}=useTranslation("os"),Y=React.createElement(Button,{variant:"ghost",...q&&{onClick:q},classNames:mx(descriptionText,"plb-0 pli-2 absolute block-start-0 inline-end-0 z-[1]"),"data-testid":"join-exit"},React.createElement(react.X,{weight:"bold",className:getSize(4)}),React.createElement("span",{className:"sr-only"},K("exit label")));return React.createElement(Heading,{ref:G,titleId:I,title:K($==="halo-only"?"selecting identity heading":"joining space heading"),...$==="halo-only"?{titleSrOnly:!0}:{corner:U?React.cloneElement(U,{},Y):Y},titleSrOnly:$==="halo-only"})}),getInvitationSubscribable=($,I)=>(log$2("[subscribing to invitation]",I),{subscribe:(U,q,G)=>I.subscribe(K=>{switch(K.state){case Invitation.State.CONNECTING:return log$2("[invitation connecting]",{Kind:$,invitation:K}),U({type:`connecting${$}Invitation`,invitation:K});case Invitation.State.CONNECTED:return log$2("[invitation connected]",{Kind:$,invitation:K}),U({type:`connected${$}Invitation`,invitation:K});case Invitation.State.READY_FOR_AUTHENTICATION:return log$2("[invitation ready for authentication]",{Kind:$,invitation:K}),U({type:`readyForAuthentication${$}Invitation`,invitation:K});case Invitation.State.AUTHENTICATING:return log$2("[invitation authenticating]",{Kind:$,invitation:K}),U({type:`authenticating${$}Invitation`,invitation:K});case Invitation.State.SUCCESS:return log$2("[invitation success]",{Kind:$,invitation:K}),U({type:`success${$}Invitation`,invitation:K}),G==null?void 0:G();case Invitation.State.CANCELLED:return log$2.warn("[invitation cancelled]",{Kind:$}),U({type:`fail${$}Invitation`,reason:"cancelled"});case Invitation.State.TIMEOUT:return log$2.error("[invitation timeout]",{Kind:$}),U({type:`fail${$}Invitation`,reason:"timeout"})}},K=>K instanceof reactClient.AlreadyJoinedError?(log$2("[already joined]",{Kind:$,error:K}),U({type:`success${$}Invitation`,invitation:I.get()}),G==null?void 0:G()):(log$2.error("[invitation errored]",{Kind:$,error:K}),U({type:`fail${$}Invitation`,reason:"error"}),q==null?void 0:q(K)))}),acceptingInvitationTemplate=($,I)=>({initial:`unknown${$}`,states:{[`unknown${$}`]:{always:[{cond:({mode:q})=>q==="halo-only"&&$==="Space",target:"#join.finishingJoiningHalo"},{cond:q=>!!q[$.toLowerCase()].unredeemedCode,target:`acceptingRedeemed${$}Invitation`,actions:[`redeem${$}InvitationCode`,`invalidate${$}InvitationCode`,"log"]},{target:`inputting${$}InvitationCode`,actions:"log"}]},[`inputting${$}InvitationCode`]:{},[`acceptingRedeemed${$}Invitation`]:{invoke:{src:q=>q[$.toLowerCase()].invitationSubscribable},initial:`unknown${$}Invitation`,states:{[`unknown${$}Invitation`]:{always:[{cond:q=>{var G,K;if($!=="Space")return!1;{const Y=(K=(G=q.space.invitation)==null?void 0:G.spaceKey)==null?void 0:K.toHex(),J=q.space.succeededKeys;return Y?!!(J!=null&&J.has(Y)):!1}},target:I,actions:"log"},{cond:q=>{const G=q[$.toLowerCase()].invitation;return!G||(G==null?void 0:G.state)===Invitation.State.CONNECTING},target:`connecting${$}Invitation`,actions:"log"},{target:`inputting${$}VerificationCode`,actions:"log"}]},[`connecting${$}Invitation`]:{},[`inputting${$}VerificationCode`]:{},[`authenticating${$}VerificationCode`]:{on:{[`readyForAuthentication${$}Invitation`]:{target:`authenticationFailing${$}VerificationCode`,actions:["setInvitation","log"]}}},[`authenticationFailing${$}VerificationCode`]:{},[`failing${$}Invitation`]:{},[`success${$}Invitation`]:{}},on:{[`reset${$}Invitation`]:{target:`#join${$==="Halo"?".choosingIdentity":""}.accepting${$}Invitation.unknown${$}`,actions:["resetInvitation","log"]},[`connecting${$}Invitation`]:{target:`.connecting${$}Invitation`,actions:["setInvitation","log"]},[`connected${$}Invitation`]:{target:`.connecting${$}Invitation`,actions:["setInvitation","log"]},[`readyForAuthentication${$}Invitation`]:{target:`.inputting${$}VerificationCode`,actions:["setInvitation","log"]},[`authenticating${$}Invitation`]:{target:`.authenticating${$}VerificationCode`,actions:["setInvitation","log"]},[`success${$}Invitation`]:{target:I,actions:["setInvitation","log"]},[`fail${$}Invitation`]:{target:`.failing${$}Invitation`,actions:[assign$1({[$.toLowerCase()]:(q,G)=>({...q[$.toLowerCase()],failReason:G.reason})}),"log"]}}}},on:{[`set${$}InvitationCode`]:{target:`.acceptingRedeemed${$}Invitation`,actions:[assign$1({[$.toLowerCase()]:(q,G)=>({...q[$.toLowerCase()],unredeemedCode:G.code,succeededKeys:G.succeededKeys})}),`redeem${$}InvitationCode`,`invalidate${$}InvitationCode`,"log"]}}}),joinMachine=createMachine({id:"join",predictableActionArguments:!0,context:{initialDisposition:"default",mode:"default",identity:null,halo:{},space:{}},initial:"unknown",states:{unknown:{always:[{cond:"existingIdentity",target:"resettingIdentity",actions:"log"},{cond:"initiallyAcceptingHaloInvitation",target:"#join.choosingIdentity.acceptingHaloInvitation",actions:"log"},{cond:"noSelectedIdentity",target:"choosingIdentity",actions:"log"},{target:"acceptingSpaceInvitation",actions:"log"}]},choosingIdentity:{initial:"unknownAuthMethod",states:{unknownAuthMethod:{always:[{cond:"hasHaloUnredeemedCode",target:"acceptingHaloInvitation",actions:"log"},{target:"choosingAuthMethod",actions:"log"}]},choosingAuthMethod:{},recoveringIdentity:{},creatingIdentity:{},acceptingHaloInvitation:acceptingInvitationTemplate("Halo","#join.acceptingSpaceInvitation"),confirmingAddedIdentity:{}},on:{recoverIdentity:{target:".recoveringIdentity",actions:"log"},createIdentity:{target:".creatingIdentity",actions:"log"},acceptHaloInvitation:{target:".acceptingHaloInvitation",actions:"log"},addIdentity:{target:".confirmingAddedIdentity",actions:"log"},selectIdentity:{target:"acceptingSpaceInvitation",actions:["setIdentity","log"]},deselectAuthMethod:{target:".choosingAuthMethod",actions:"log"}}},resettingIdentity:{},acceptingSpaceInvitation:acceptingInvitationTemplate("Space","#join.finishingJoiningSpace"),finishingJoiningSpace:{type:"final"},finishingJoiningHalo:{type:"final"}},on:{resetIdentity:{target:"choosingIdentity",actions:"unsetIdentity"}}},{guards:{existingIdentity:({identity:$,mode:I},U)=>I==="halo-only"&&!!$,noSelectedIdentity:({identity:$},I)=>!$,initiallyAcceptingHaloInvitation:({identity:$,initialDisposition:I},U)=>!$&&I==="accept-halo-invitation",hasHaloUnredeemedCode:({halo:$},I)=>!!$.unredeemedCode,noSpaceInvitation:({space:$},I)=>!$.invitation&&!$.unredeemedCode},actions:{setIdentity:assign$1({identity:($,I)=>I.identity}),unsetIdentity:assign$1({identity:()=>null}),resetInvitation:assign$1({halo:($,I)=>I.type!=="resetHaloInvitation"?$.halo:($.halo.invitationObservable&&$.halo.invitationObservable.cancel(),{...$.halo,invitation:void 0,invitationObservable:void 0,invitationSubscribable:void 0}),space:($,I)=>I.type!=="resetSpaceInvitation"?$.space:($.space.invitationObservable&&$.space.invitationObservable.cancel(),{...$.space,invitation:void 0,invitationObservable:void 0,invitationSubscribable:void 0})}),setInvitation:assign$1({halo:($,I)=>I.type.includes("Halo")?{...$.halo,invitation:I.invitation}:$.halo,space:($,I)=>I.type.includes("Space")?{...$.space,invitation:I.invitation}:$.space}),log:($,I)=>{log$2("[transition]",{event:I,haloInvitation:$.halo.invitation,spaceInvitation:$.space.invitation})}}}),defaultCodeFromUrl=($,I)=>{try{const U=new URLSearchParams(I.substring(I.lastIndexOf("?")));return U.get(`${$}InvitationCode`)??U.get(`${$}Invitation`)??U.get("invitationCode")??U.get("invitation")??I}catch(U){return log$2.catch(U),I}},useJoinMachine=($,I)=>{const U=React.useCallback(({halo:Y})=>{if(Y.unredeemedCode)try{const J=clientProtocol.InvitationEncoder.decode(defaultCodeFromUrl("halo",Y.unredeemedCode)),X=$.halo.join(J);return{...Y,invitationObservable:X,invitationSubscribable:getInvitationSubscribable("Halo",X)}}catch(J){return log$2.error("Could not redeem device invitation code",J),Y}else return Y},[$]),q=React.useCallback(({space:Y})=>{if(Y.unredeemedCode)try{const J=clientProtocol.InvitationEncoder.decode(defaultCodeFromUrl("space",Y.unredeemedCode)),X=$.spaces.join(J);return{...Y,invitationObservable:X,invitationSubscribable:getInvitationSubscribable("Space",X)}}catch(J){return log$2.error("Could not redeem space invitation code",J),Y}else return Y},[$]),G=React.useCallback(({halo:Y})=>{var J;return Y.unredeemedCode?((J=I==null?void 0:I.onInvalidateInvitationCode)==null||J.call(I,Y.unredeemedCode),{...Y,unredeemedCode:void 0}):Y},[I==null?void 0:I.onInvalidateInvitationCode]),K=React.useCallback(({space:Y})=>{var J;return Y.unredeemedCode?((J=I==null?void 0:I.onInvalidateInvitationCode)==null||J.call(I,Y.unredeemedCode),{...Y,unredeemedCode:void 0}):Y},[I==null?void 0:I.onInvalidateInvitationCode]);return useMachine(joinMachine,{...I,actions:{...I==null?void 0:I.actions,redeemHaloInvitationCode:assign$1({halo:U}),redeemSpaceInvitationCode:assign$1({space:q}),invalidateHaloInvitationCode:assign$1({halo:G}),invalidateSpaceInvitationCode:assign$1({space:K})}})},AdditionMethodChooser=$=>{const I=!$.active,{send:U}=$,{t:q}=useTranslation("os"),G={disabled:I,after:React.createElement(react.CaretRight,{className:getSize(4),weight:"bold"}),slots:{label:{className:"text-sm"}}};return React.createElement(React.Fragment,null,React.createElement(StepHeading,null,q("addition method chooser title")),React.createElement("div",{role:"none",className:"flex flex-col gap-1 grow"},React.createElement(CompoundButton,{...G,description:q("create identity description"),before:React.createElement(react.Plus,{className:getSize(6)}),onClick:()=>U({type:"createIdentity"}),"data-autofocus":"choosingAuthMethod","data-testid":"identity-chooser.create-identity"},q("create identity label")),React.createElement(CompoundButton,{...G,description:q("join identity description"),before:React.createElement(react.QrCode,{className:getSize(6)}),onClick:()=>U({type:"acceptHaloInvitation"}),"data-testid":"identity-chooser.join-identity"},q("join identity label")),React.createElement(CompoundButton,{...G,disabled:!0,description:q("recover identity description"),before:React.createElement(react.Textbox,{className:getSize(6)}),onClick:()=>U({type:"recoverIdentity"}),"data-testid":"identity-chooser.recover-identity"},q("recover identity label"))))},IdentityAdded=$=>{var ie,oe,ce,fe,se,de;const{mode:I,addedIdentity:U,active:q,send:G,onDone:K,doneActionParent:Y}=$,J=!q,{t:X}=useTranslation("os"),Z=(U==null?void 0:U.identityKey.toHex())??"0",Q=hexToFallback(Z),ee=useId("identityListItem__label"),te=((ie=U==null?void 0:U.profile)==null?void 0:ie.displayName)??(U&&generateName(Z)),ne=React.createElement(Action,{...K&&{onClick:()=>K(null)},disabled:J,"data-autofocus":"confirmingAddedIdentity","data-testid":"identity-added-done"},React.createElement("span",null,X("done label")));return React.createElement(React.Fragment,null,React.createElement(StepHeading,null,X("identity added label")),React.createElement("div",{role:"none",className:"grow flex flex-col items-center justify-center text-center gap-2"},React.createElement(Avatar.Root,{status:"active",labelId:ee,hue:((ce=(oe=U==null?void 0:U.profile)==null?void 0:oe.data)==null?void 0:ce.hue)||Q.hue},React.createElement(Avatar.Frame,null,React.createElement(Avatar.Fallback,{text:((se=(fe=U==null?void 0:U.profile)==null?void 0:fe.data)==null?void 0:se.emoji)||Q.emoji})),React.createElement(Avatar.Label,{classNames:mx("text-lg truncate",!((de=U==null?void 0:U.profile)!=null&&de.displayName)&&"font-mono")},te))),React.createElement(Actions,null,I==="halo-only"?Y?React.cloneElement(Y,{},ne):ne:React.createElement(Action,{variant:"primary",disabled:J||!U,onClick:()=>U&&G({type:"selectIdentity",identity:U}),"data-autofocus":"confirmingAddedIdentity"},X("continue label"))))},IdentityInput=$=>{const{send:I,method:U}=$,q=U==="recover identity",G=reactClient.useClient(),{t:K}=useTranslation("os"),[Y,J]=React.useState(""),X=Z=>{G.halo.createIdentity({[q?"seedphrase":"displayName"]:Z}).then(Q=>{I==null||I({type:"selectIdentity",identity:Q})},Q=>{log$2.catch(Q),J(K(q?"failed to recover identity message":"failed to create identity message"))})};return React.createElement(IdentityInputImpl,{...$,onDisplayNameConfirm:X,validationMessage:Y})},IdentityInputImpl=$=>{const{method:I,send:U,active:q,onDisplayNameConfirm:G,validationMessage:K}=$,Y=!q,{t:J}=useTranslation("os"),[X,Z]=React.useState(""),Q=I==="recover identity";return React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col justify-center"},React.createElement(Input,{validationMessage:K,label:React.createElement(StepHeading,null,J(Q?"recover identity input label":"new identity input label")),disabled:Y,"data-testid":"identity-input",placeholder:Q?"Type your recovery phrase":"Type a display name",onChange:({target:{value:ee}})=>Z(ee)})),React.createElement(Actions,null,React.createElement(Action,{variant:"ghost",disabled:Y,onClick:()=>U==null?void 0:U({type:"deselectAuthMethod"}),"data-testid":`${I==="recover identity"?"recover":"create"}-identity-input-back`},J("back label")),React.createElement(Action,{variant:"primary",disabled:Y,onClick:()=>G==null?void 0:G(X),"data-testid":`${I==="recover identity"?"recover":"create"}-identity-input-continue`},J("continue label"))))},InvitationAccepted=$=>{const{active:I,Kind:U,doneActionParent:q,onDone:G}=$,K=!I,{t:Y}=useTranslation("os"),J=React.createElement(Action,{variant:"primary",onClick:G,disabled:K,"data-autofocus":`success${U}Invitation finishingJoining${U}`,"data-testid":`${U.toLowerCase()}-invitation-accepted-done`},Y("done label"));return React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col justify-center"},React.createElement("p",{className:"text-center text-sm font-normal"},Y("welcome message"))),React.createElement(Actions,null,q?React.cloneElement(q,{},J):J))},invitationCodeFromUrl=$=>{try{const I=new URLSearchParams($.substring($.lastIndexOf("?")));return I.get("spaceInvitationCode")??I.get("deviceInvitationCode")??$}catch(I){return log$2.catch(I),$}},InvitationInput=$=>{const{Kind:I,active:U,send:q,unredeemedCode:G,onExit:K,exitActionParent:Y,onDone:J,doneActionParent:X,succeededKeys:Z}=$,Q=!U,{t:ee}=useTranslation("os"),[te,ne]=React.useState(G??"");React.useEffect(()=>{G&&ne(G??"")},[G]);const ie=()=>{te.trim().length!==0&&q({type:`set${I}InvitationCode`,code:invitationCodeFromUrl(te),...I==="Space"&&{succeededKeys:Z}})},oe=React.createElement(Action,{variant:"ghost",disabled:Q,...K?{onClick:()=>K()}:{onClick:()=>J==null?void 0:J(null)},"data-testid":"join-exit"},ee("cancel label"));return React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col justify-center"},React.createElement(Input,{label:React.createElement(StepHeading,null,ee("invitation input label")),placeholder:"Type an invitation code",disabled:Q,value:te,onChange:({target:{value:ce}})=>ne(ce),"data-autofocus":`inputting${I}InvitationCode`,"data-testid":`${I.toLowerCase()}-invitation-input`,onKeyUp:({key:ce})=>ce==="Enter"&&ie()})),React.createElement(Actions,null,I==="Halo"?React.createElement(Action,{variant:"ghost",disabled:Q,onClick:()=>q({type:"deselectAuthMethod"}),"data-testid":`${I.toLowerCase()}-invitation-input-back`},ee("back label")):Y?React.cloneElement(Y,{},oe):X?React.cloneElement(X,{},oe):oe,React.createElement(Action,{variant:"primary",disabled:Q,onClick:ie,"data-testid":`${I.toLowerCase()}-invitation-input-continue`},ee("continue label"))))},InvitationActions=({invitationState:$,onInvitationCancel:I,active:U,send:q,Kind:G,failReason:K})=>{const{t:Y}=useTranslation("os");return K?React.createElement(React.Fragment,null,React.createElement(StepHeading,{className:descriptionText},Y(K==="timeout"?"timeout status label":K==="cancelled"?"cancelled status label":"error status label")),React.createElement("div",{role:"none",className:"grow"}),React.createElement(Actions,null,React.createElement(Action,{disabled:!U,onClick:()=>q({type:`reset${G}Invitation`}),"data-testid":"invitation-rescuer-reset"},Y("reset label")))):React.createElement(React.Fragment,null,React.createElement(StepHeading,{className:descriptionText},Y("connecting status label")),React.createElement("div",{role:"none",className:"grow"}),React.createElement(Actions,null,React.createElement(Action,{disabled:!0,classNames:"order-2","data-testid":"next"},Y("next label")),React.createElement(Action,{disabled:!U,onClick:I,"data-testid":"invitation-rescuer-cancel"},Y("cancel label"))))},InvitationRescuer=$=>{const{Kind:I,invitationState:U,active:q,send:G}=$,{t:K}=useTranslation("os");return React.createElement(React.Fragment,null,typeof U>"u"?React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col justify-center"},React.createElement(StepHeading,{className:descriptionText},"There was a problem joining the space")),React.createElement(Actions,null,React.createElement(Action,{disabled:!q,"data-testid":"invitation-rescuer-blank-reset",onClick:()=>G({type:`reset${I}Invitation`})},K("reset label")))):React.createElement(InvitationActions,{...$}))},pinLength=6,InvitationAuthenticator=({failed:$,Kind:I,active:U,pending:q,invitationId:G,onInvitationAuthenticate:K,onInvitationCancel:Y})=>{const J=!U||q,{t:X}=useTranslation("os"),Z=I.toLowerCase(),[Q,ee]=React.useState(""),te=({target:{value:ne}})=>{var ie;ee(ne),ne.length===pinLength&&((ie=document.querySelector(`[data-autofocus-pinlength="${Z}"]`))==null||ie.focus())};return React.createElement(React.Fragment,null,React.createElement("div",{role:"none",className:"grow flex flex-col justify-center gap-4"},React.createElement(Input$1.Root,{...$&&{validationValence:"error"}},React.createElement(Input$1.Label,{asChild:!0},React.createElement(StepHeading,null,X("auth code input label"))),React.createElement(Input$1.PinInput,{disabled:J,length:pinLength,onChange:te,inputMode:"numeric",autoComplete:"off",pattern:"\\d*","data-autofocus":`connecting${I}Invitation inputting${I}VerificationCode authenticationFailing${I}VerificationCode authenticating${I}VerificationCode`,"data-prevent-ios-autofocus":!0,"data-testid":`${Z}-auth-code-input`,"data-1p-ignore":!0}),$&&React.createElement(Input$1.DescriptionAndValidation,{classNames:"text-center"},React.createElement(Input$1.Validation,null,X("failed to authenticate message")))),G&&React.createElement(React.Fragment,null,React.createElement(Label,null,X("auth other device emoji message")),React.createElement("div",{className:"flex justify-center"},React.createElement(Emoji,{text:hexToEmoji(G)})))),React.createElement(Actions,null,React.createElement(Action,{variant:"ghost",disabled:J,onClick:()=>Y==null?void 0:Y(),"data-testid":`${Z}-invitation-authenticator-cancel`},X("cancel label")),React.createElement(Action,{variant:"primary",disabled:J,onClick:()=>K==null?void 0:K(Q),"data-autofocus-pinlength":Z,"data-testid":`${Z}-invitation-authenticator-next`},X("next label"))))},stepStyles="pbs-1 pbe-3 pli-3",JoinPanelImpl=$=>{const{titleId:I,send:U,activeView:q,failed:G,mode:K,unredeemedCodes:Y,invitationIds:J,invitationStates:X,succeededKeys:Z,failReasons:Q,onExit:ee,onHaloDone:te,onSpaceDone:ne,exitActionParent:ie,doneActionParent:oe,onHaloInvitationCancel:ce,onSpaceInvitationCancel:fe,onHaloInvitationAuthenticate:se,onSpaceInvitationAuthenticate:de,onCancelResetStorage:ue,onConfirmResetStorage:he,IdentityInput:ve=IdentityInput,ConfirmReset:me=ConfirmReset}=$;return React.createElement(DensityProvider,{density:"fine"},K!=="halo-only"&&React.createElement(JoinHeading,{titleId:I,mode:K,onExit:ee,exitActionParent:ie}),React.createElement(Viewport.Root,{focusManaged:!0,activeView:q},React.createElement(Viewport.Views,null,React.createElement(Viewport.View,{classNames:stepStyles,id:"addition method chooser"},React.createElement(AdditionMethodChooser,{send:U,active:q==="addition method chooser"})),React.createElement(Viewport.View,{classNames:stepStyles,id:"reset storage confirmation"},React.createElement(me,{send:U,active:q==="reset storage confirmation",onCancel:ue,onConfirm:he})),React.createElement(Viewport.View,{classNames:stepStyles,id:"create identity input"},React.createElement(ve,{send:U,method:"create identity",active:q==="create identity input"})),React.createElement(Viewport.View,{classNames:stepStyles,id:"recover identity input"},React.createElement(ve,{send:U,method:"recover identity",active:q==="recover identity input"})),React.createElement(Viewport.View,{classNames:stepStyles,id:"halo invitation input"},React.createElement(InvitationInput,{send:U,Kind:"Halo",active:q==="halo invitation input",...(Y==null?void 0:Y.Halo)&&{unredeemedCode:Y.Halo},...(Z==null?void 0:Z.Halo)&&{succeededKeys:Z.Halo}})),React.createElement(Viewport.View,{classNames:stepStyles,id:"halo invitation rescuer"},React.createElement(InvitationRescuer,{send:U,Kind:"Halo",active:q==="halo invitation rescuer",invitationState:X==null?void 0:X.Halo,onInvitationCancel:ce,failReason:Q==null?void 0:Q.Halo})),React.createElement(Viewport.View,{classNames:stepStyles,id:"halo invitation authenticator"},React.createElement(InvitationAuthenticator,{send:U,Kind:"Halo",invitationId:J==null?void 0:J.Halo,active:q==="halo invitation authenticator",onInvitationCancel:ce,onInvitationAuthenticate:se,...G.has("Halo")&&{failed:!0}})),React.createElement(Viewport.View,{classNames:stepStyles,id:"halo invitation accepted"},React.createElement(InvitationAccepted,{send:U,Kind:"Halo",active:q==="halo invitation accepted",doneActionParent:oe,onDone:te})),React.createElement(Viewport.View,{classNames:stepStyles,id:"identity added"},React.createElement(IdentityAdded,{send:U,mode:K,active:q==="identity added",doneActionParent:oe,onDone:te})),React.createElement(Viewport.View,{classNames:stepStyles,id:"space invitation input"},React.createElement(InvitationInput,{send:U,Kind:"Space",active:q==="space invitation input",...(Y==null?void 0:Y.Space)&&{unredeemedCode:Y.Space},...(Z==null?void 0:Z.Space)&&{succeededKeys:Z.Space},onExit:ee,exitActionParent:ie})),React.createElement(Viewport.View,{classNames:stepStyles,id:"space invitation rescuer"},React.createElement(InvitationRescuer,{send:U,Kind:"Space",active:q==="space invitation rescuer",invitationState:X==null?void 0:X.Space,onInvitationCancel:fe,failReason:Q==null?void 0:Q.Space})),React.createElement(Viewport.View,{classNames:stepStyles,id:"space invitation authenticator"},React.createElement(InvitationAuthenticator,{send:U,Kind:"Space",invitationId:J==null?void 0:J.Space,active:q==="space invitation authenticator",onInvitationCancel:fe,onInvitationAuthenticate:de,...G.has("Space")&&{failed:!0}})),React.createElement(Viewport.View,{classNames:stepStyles,id:"space invitation accepted"},React.createElement(InvitationAccepted,{send:U,Kind:"Space",active:q==="space invitation accepted",doneActionParent:oe,onDone:ne})))))},JoinPanel=({titleId:$,mode:I="default",initialDisposition:U="default",initialInvitationCode:q,exitActionParent:G,onExit:K,doneActionParent:Y,onDone:J,onCancelResetStorage:X})=>{const Z=reactClient.useClient(),Q=halo.useIdentity(),{hasIosKeyboard:ee}=useThemeContext(),te=useId("joinPanel__heading",$),[ne,ie,oe]=useJoinMachine(Z,{context:{mode:I,initialDisposition:U,identity:Q,...q&&{[I==="halo-only"?"halo":"space"]:{unredeemedCode:q}}}});React.useEffect(()=>oe.subscribe(ke=>{log$2("[state]",ke)}).unsubscribe,[oe]),React.useEffect(()=>{const xe=ne.configuration[0].id.split("."),ke=xe[xe.length-1],Be=ke==="finishingJoining"?"successSpaceInvitation":ke,Me=document.querySelector(`[data-autofocus~="${Be}"]`);Me&&!(ee&&Me.hasAttribute("data-prevent-ios-autofocus"))&&Me.focus()},[ne.value,ee]);const ce=React.useMemo(()=>{switch(!0){case ne.matches({choosingIdentity:"choosingAuthMethod"}):return"addition method chooser";case ne.matches("resettingIdentity"):return"reset storage confirmation";case ne.matches({choosingIdentity:"creatingIdentity"}):return"create identity input";case ne.matches({choosingIdentity:"recoveringIdentity"}):return"recover identity input";case ne.matches({choosingIdentity:{acceptingHaloInvitation:"inputtingHaloInvitationCode"}}):return"halo invitation input";case[{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"connectingHaloInvitation"}}},{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"failingHaloInvitation"}}}].some(ne.matches):return"halo invitation rescuer";case[{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"inputtingHaloVerificationCode"}}},{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"authenticatingHaloVerificationCode"}}},{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"authenticationFailingHaloVerificationCode"}}}].some(ne.matches):return"halo invitation authenticator";case[{choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"successHaloInvitation"}}},"finishingJoiningHalo"].some(ne.matches):return"halo invitation accepted";case ne.matches({choosingIdentity:"confirmingAddedIdentity"}):return"identity added";case ne.matches({acceptingSpaceInvitation:"inputtingSpaceInvitationCode"}):return"space invitation input";case[{acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"connectingSpaceInvitation"}},{acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"failingSpaceInvitation"}}].some(ne.matches):return"space invitation rescuer";case[{acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"inputtingSpaceVerificationCode"}},{acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"authenticatingSpaceVerificationCode"}},{acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"authenticationFailingSpaceVerificationCode"}}].some(ne.matches):return"space invitation authenticator";case ne.matches("finishingJoiningSpace"):return"space invitation accepted";default:return"never"}},[ne]),fe=React.useMemo(()=>{const xe=new Set;switch(!0){case ne.matches({choosingIdentity:{acceptingHaloInvitation:{acceptingRedeemedHaloInvitation:"authenticationFailingHaloVerificationCode"}}}):xe.add("Halo");break;case ne.matches({acceptingSpaceInvitation:{acceptingRedeemedSpaceInvitation:"authenticationFailingSpaceVerificationCode"}}):xe.add("Space");break}return xe},[ne]),se=React.useMemo(()=>({Halo:ne.context.halo.unredeemedCode,Space:ne.context.space.unredeemedCode}),[ne]),de=reactClient.useMulticastObservable(Z.spaces),ue=React.useMemo(()=>({Space:de?new Set(de.map(({key:xe})=>xe.toHex())):void 0}),[de]),he=React.useMemo(()=>{var xe,ke;return{Halo:(xe=ne.context.halo.invitationObservable)==null?void 0:xe.get().state,Space:(ke=ne.context.space.invitationObservable)==null?void 0:ke.get().state}},[ne]),ve=React.useMemo(()=>{var xe,ke;return{Halo:(xe=ne.context.halo.invitationObservable)==null?void 0:xe.get().invitationId,Space:(ke=ne.context.space.invitationObservable)==null?void 0:ke.get().invitationId}},[ne]),me=React.useMemo(()=>({Halo:ne.context.halo.failReason,Space:ne.context.space.failReason}),[ne]),be=React.useCallback(()=>{var xe,ke,Be,Me;J==null||J({identityKey:((xe=ne.context.halo.invitation)==null?void 0:xe.identityKey)??null,swarmKey:((ke=ne.context.halo.invitation)==null?void 0:ke.swarmKey)??null,spaceKey:((Be=ne.context.halo.invitation)==null?void 0:Be.spaceKey)??null,target:((Me=ne.context.halo.invitation)==null?void 0:Me.target)??null})},[ne,J]),_e=React.useCallback(()=>{var xe,ke,Be,Me;J==null||J({identityKey:((xe=ne.context.space.invitation)==null?void 0:xe.identityKey)??null,swarmKey:((ke=ne.context.space.invitation)==null?void 0:ke.swarmKey)??null,spaceKey:((Be=ne.context.space.invitation)==null?void 0:Be.spaceKey)??null,target:((Me=ne.context.space.invitation)==null?void 0:Me.target)??null})},[ne,J]),Ce=React.useCallback(()=>Z.reset().then(()=>{ie({type:"resetIdentity"})}),[Z,ie]);return React.createElement(JoinPanelImpl,{titleId:te,mode:I,send:ie,activeView:ce,failed:fe,failReasons:me,pending:["connecting","authenticating"].some(xe=>ne==null?void 0:ne.configuration[0].id.includes(xe)),unredeemedCodes:se,invitationIds:ve,invitationStates:he,succeededKeys:ue,identity:Q,onExit:K,exitActionParent:G,doneActionParent:Y,onHaloDone:be,onSpaceDone:_e,onHaloInvitationCancel:()=>{var xe;return(xe=ne.context.halo.invitationObservable)==null?void 0:xe.cancel()},onSpaceInvitationCancel:()=>{var xe;return(xe=ne.context.space.invitationObservable)==null?void 0:xe.cancel()},onHaloInvitationAuthenticate:xe=>{var ke;return ie({type:"authenticateHaloVerificationCode"}),(ke=ne.context.halo.invitationObservable)==null?void 0:ke.authenticate(xe)},onSpaceInvitationAuthenticate:xe=>{var ke;return ie({type:"authenticateSpaceVerificationCode"}),(ke=ne.context.space.invitationObservable)==null?void 0:ke.authenticate(xe)},onConfirmResetStorage:Ce,onCancelResetStorage:X})},spaceMachine=createMachine({id:"space",predictableActionArguments:!0,context:{space:null},initial:"managingSpace",states:{managingSpace:{},managingSpaceInvitation:{}},on:{deselectInvitation:{target:".managingSpace",actions:["unsetInvitation","log"]},selectInvitation:{target:".managingSpaceInvitation",actions:["setInvitation","log"]}}},{actions:{setInvitation:assign$1({invitation:($,I)=>(I==null?void 0:I.invitation)??null}),unsetInvitation:assign$1({invitation:()=>{}}),log:($,I)=>{log$2("[transition]",{event:I,context:$})}}}),useSpaceMachine=$=>useMachine(spaceMachine,{...$,context:{...$==null?void 0:$.context}}),activeActionKey="dxos:react-shell/space-manager/active-action",SpaceManager=$=>{const{space:I,target:U}=$,{t:q}=useTranslation("os"),G=reactClient.useConfig(),K=echo.useSpaceInvitations(I==null?void 0:I.key),Y=React.useCallback(X=>{const Z=clientProtocol.InvitationEncoder.encode(X);X.state===Invitation.State.CONNECTING&&log$2.info(JSON.stringify({invitationCode:Z,authCode:X.authCode}))},[]),J={inviteOne:{label:q("invite one label"),description:q("invite one description"),icon:react.UserPlus,onClick:React.useCallback(()=>{var Z,Q,ee,te;const X=(Z=I.share)==null?void 0:Z.call(I,{type:Invitation.Type.INTERACTIVE,authMethod:Invitation.AuthMethod.SHARED_SECRET,multiUse:!1,target:U});X&&((te=(ee=(Q=G.values.runtime)==null?void 0:Q.app)==null?void 0:ee.env)==null?void 0:te.DX_ENVIRONMENT)!=="production"&&X.subscribe(Y)},[I])},inviteMany:{label:q("invite many label"),description:q("invite many description"),icon:react.UsersThree,onClick:React.useCallback(()=>{var Z,Q,ee,te;const X=(Z=I.share)==null?void 0:Z.call(I,{type:Invitation.Type.DELEGATED,authMethod:Invitation.AuthMethod.KNOWN_PUBLIC_KEY,multiUse:!0,target:U});X&&((te=(ee=(Q=G.values.runtime)==null?void 0:Q.app)==null?void 0:ee.env)==null?void 0:te.DX_ENVIRONMENT)!=="production"&&X.subscribe(Y)},[I])}};return React.createElement(SpaceManagerImpl,{...$,invitations:K,inviteActions:J})},headingFragment="pis-3 pie-1 plb-1 mbe-1 font-medium",SpaceManagerImpl=$=>{const{active:I,space:U,createInvitationUrl:q,send:G,inviteActions:K,invitations:Y,showInactiveInvitations:J,SpaceMemberList:X=SpaceMemberList,InvitationList:Z=InvitationList}=$,{t:Q}=useTranslation("os"),ee=K??{noopInvite:{label:Q("create space invitation label"),description:"",icon:react.Placeholder,onClick:()=>{}}},[te,ne]=React.useState(localStorage.getItem(activeActionKey)??"inviteOne"),ie=ce=>{ne(ce),localStorage.setItem(activeActionKey,ce)},oe=J?Y:Y==null?void 0:Y.filter(ce=>![Invitation.State.CANCELLED].includes(ce.get().state));return React.createElement(React.Fragment,null,React.createElement(ScrollArea.Root,{classNames:"grow shrink basis-28 -mli-2"},React.createElement(ScrollArea.Viewport,{classNames:"is-full pie-2"},!!(oe!=null&&oe.length)&&React.createElement(React.Fragment,null,React.createElement("h3",{className:mx(headingFragment,descriptionText)},Q("invitation list heading")),React.createElement(Z,{className:"mb-2",send:G,invitations:oe??[],onClickRemove:ce=>ce.cancel(),createInvitationUrl:q}),React.createElement("h3",{className:mx(headingFragment,descriptionText,"mbs-2")},Q("space member list heading"))),React.createElement(X,{spaceKey:U.key,includeSelf:!0})),React.createElement(ScrollArea.Scrollbar,{orientation:"vertical"},React.createElement(ScrollArea.Thumb,null))),React.createElement(Actions,null,React.createElement(BifurcatedAction,{disabled:!I,actions:ee,activeAction:te,onChangeActiveAction:ie,"data-testid":"spaces-panel.create-invitation"})))},SpacePanelHeading=({titleId:$,space:I,onDone:U})=>{const{t:q}=useTranslation("os"),G=I.properties.name;return React.createElement(Heading,{titleId:$,title:q("space panel heading"),corner:React.createElement(CloseButton,{"data-testid":"identity-panel-done",onDone:U})},React.createElement("div",{role:"none",className:"flex gap-4 items-center justify-center mlb-4"},React.createElement(react.Planet,{size:32,weight:"light"}),React.createElement("div",{className:"block text-start font-light text-xl"},G??I.key.truncate())))},SpacePanelImpl=$=>{const{titleId:I,activeView:U,space:q,target:G,SpaceManager:K=SpaceManager,InvitationManager:Y=InvitationManager,...J}=$;return React.createElement(DensityProvider,{density:"fine"},React.createElement(SpacePanelHeading,{...J,titleId:I,space:q}),React.createElement(Viewport.Root,{activeView:U},React.createElement(Viewport.Views,null,React.createElement(Viewport.View,{id:"space manager",classNames:stepStyles},React.createElement(K,{active:U==="space manager",space:q,target:G,...J})),React.createElement(Viewport.View,{id:"space invitation manager",classNames:stepStyles},React.createElement(Y,{active:U==="space invitation manager",...J,invitationUrl:$.invitationUrl})))))},SpacePanelWithInvitationImpl=({invitation:$,...I})=>{const U=useInvitationStatus($);return React.createElement(SpacePanelImpl,{...I,...U,invitationUrl:I.createInvitationUrl(U.invitationCode)})},SpacePanel=({titleId:$,createInvitationUrl:I=q=>q,...U})=>{const q=useId("spacePanel__heading",$),[G,K,Y]=useSpaceMachine({context:{space:U.space}});React.useEffect(()=>Y.subscribe(Q=>{log$2("[state]",Q)}).unsubscribe,[Y]);const J=React.useMemo(()=>{switch(!0){case G.matches("managingSpace"):return"space manager";case G.matches("managingSpaceInvitation"):return"space invitation manager";default:return"never"}},[G]),X={...U,activeView:J,send:K,titleId:q,createInvitationUrl:I};return G.context.invitation?React.createElement(SpacePanelWithInvitationImpl,{...X,invitation:G.context.invitation}):React.createElement(SpacePanelImpl,{...X})},StatusPanel=({titleId:$})=>{const{t:I}=useTranslation("os");return React.createElement("div",{className:"grid place-items-center p-2 gap-2"},React.createElement("p",{id:$,className:"font-medium text-center"},I("resetting message")),React.createElement(Status,{indeterminate:!0},I("resetting message")))},IdentityDialog=$=>{const I=useId("identityDialog__title",$.title);return React.createElement(Dialog.Root,{defaultOpen:!0,onOpenChange:U=>{var q;return U||((q=$.onDone)==null?void 0:q.call($))}},React.createElement(Dialog.Portal,null,React.createElement(Dialog.Overlay,null,React.createElement(Dialog.Content,{"aria-labelledby":I,onOpenAutoFocus:U=>U.preventDefault()},React.createElement(ClipboardProvider,null,React.createElement(IdentityPanel,{...$,titleId:I,doneActionParent:React.createElement(Dialog.Close,{asChild:!0})}))))))},JoinDialog=$=>{const I=useId("joinDialog__title"),{height:U}=useVisualViewport();return React.createElement(AlertDialog.Root,{defaultOpen:!0,onOpenChange:q=>{var G;return q||($.onExit?$.onExit():(G=$.onDone)==null?void 0:G.call($,null))}},React.createElement(AlertDialog.Portal,null,React.createElement(AlertDialog.Overlay,{classNames:"backdrop-blur",...U&&{style:{blockSize:`${U}px`}}},React.createElement(AlertDialog.Content,{"aria-labelledby":I},React.createElement(JoinPanel,{...$,titleId:I,exitActionParent:React.createElement(AlertDialog.Cancel,{asChild:!0}),doneActionParent:React.createElement(AlertDialog.Action,{asChild:!0})})))))};var createRoot,m=$7SXl2$reactdom;if(process.env.NODE_ENV==="production")createRoot=m.createRoot,m.hydrateRoot;else{var i=m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;createRoot=function($,I){i.usingClientEntryPoint=!0;try{return m.createRoot($,I)}finally{i.usingClientEntryPoint=!1}}}const SpaceDialog=$=>{const I=useId("spaceDialog__title");return React.createElement(Dialog.Root,{defaultOpen:!0,onOpenChange:U=>{var q;return U||((q=$.onDone)==null?void 0:q.call($))}},React.createElement(Dialog.Portal,null,React.createElement(Dialog.Overlay,null,React.createElement(Dialog.Content,{"aria-labelledby":I},React.createElement(ClipboardProvider,null,React.createElement(SpacePanel,{...$,titleId:I,doneActionParent:React.createElement(Dialog.Close,{asChild:!0})}))))))},StatusDialog=()=>{const $=useId("statusDialog__title");return React.createElement(AlertDialog.Root,{open:!0},React.createElement(AlertDialog.Portal,null,React.createElement(AlertDialog.Overlay,null,React.createElement(AlertDialog.Content,{"aria-labelledby":$},React.createElement(StatusPanel,{titleId:$})))))},Shell=({runtime:$})=>{const[{layout:I,invitationCode:U,spaceKey:q,spaceId:G,target:K},Y]=React.useState({layout:$.layout,invitationCode:$.invitationCode,spaceKey:$.spaceKey,spaceId:$.spaceId,target:$.target}),[{invitationUrl:J,deviceInvitationParam:X,spaceInvitationParam:Z},Q]=React.useState({invitationUrl:$.invitationUrl,deviceInvitationParam:$.deviceInvitationParam,spaceInvitationParam:$.spaceInvitationParam}),ee=reactClient.useClient(),te=echo.useSpace(q??G),ne=oe=>{const ce=new URL(J);return ce.searchParams.set(X,oe),ce.toString()},ie=oe=>{const ce=new URL(J);return ce.searchParams.set(Z,oe),ce.toString()};switch(React.useEffect(()=>{const oe=$.layoutUpdate.on(fe=>Y(fe)),ce=$.invitationUrlUpdate.on(fe=>Q(fe));return()=>{oe(),ce()}},[$]),React.useEffect(()=>{if(I===ShellLayout.SPACE&&!te){log$2.warn("No space found for shell space invitations.");const oe=setTimeout(async()=>{await $.setAppContext({display:ShellDisplay.NONE}),$.setLayout({layout:ShellLayout.DEFAULT})});return()=>clearTimeout(oe)}},[$,I,te]),I){case ShellLayout.STATUS:return React.createElement(StatusDialog,null);case ShellLayout.INITIALIZE_IDENTITY:case ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION:return React.createElement(JoinDialog,{mode:"halo-only",initialDisposition:I===ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION?"accept-halo-invitation":"default",initialInvitationCode:U,onCancelResetStorage:()=>$.setLayout({layout:ShellLayout.IDENTITY}),onDone:()=>{$.setAppContext({display:ShellDisplay.NONE}),$.setLayout({layout:ShellLayout.DEFAULT})}});case ShellLayout.IDENTITY:case ShellLayout.SHARE_IDENTITY:case ShellLayout.EDIT_PROFILE:return React.createElement(IdentityDialog,{createInvitationUrl:ne,onResetStorage:async()=>($.setLayout({layout:ShellLayout.STATUS}),await ee.reset(),$.setAppContext({display:ShellDisplay.NONE,reload:!0})),onJoinNewIdentity:async()=>($.setLayout({layout:ShellLayout.STATUS}),await ee.reset(),$.setLayout({layout:ShellLayout.INITIALIZE_IDENTITY_FROM_INVITATION})),onDone:async()=>{await $.setAppContext({display:ShellDisplay.NONE}),$.setLayout({layout:ShellLayout.DEFAULT})},initialDisposition:I===ShellLayout.SHARE_IDENTITY?"manage-device-invitation":"default"});case ShellLayout.SPACE:return te?React.createElement(SpaceDialog,{space:te,target:K,createInvitationUrl:ie,onDone:async()=>{await $.setAppContext({display:ShellDisplay.NONE}),$.setLayout({layout:ShellLayout.DEFAULT})}}):null;case ShellLayout.JOIN_SPACE:return React.createElement(JoinDialog,{initialInvitationCode:U,onDone:async oe=>{const ce=(oe==null?void 0:oe.target)??void 0;await $.setAppContext({display:ShellDisplay.NONE,spaceKey:(oe==null?void 0:oe.spaceKey)??void 0,target:ce}),$.setLayout({layout:ShellLayout.DEFAULT})},onExit:async()=>{await $.setAppContext({display:ShellDisplay.NONE}),$.setLayout({layout:ShellLayout.DEFAULT})}});default:return null}};class ShellRuntimeImpl{constructor(I){this._port=I,this.layoutUpdate=new Event$1,this.invitationUrlUpdate=new Event$1,this._layout=ShellLayout.DEFAULT,this._invitationUrl=typeof window<"u"?window.location.origin:void 0,this._deviceInvitationParam="deviceInvitationCode",this._spaceInvitationParam="spaceInvitationCode"}get layout(){return this._layout}get invitationCode(){return this._invitationCode}get spaceKey(){return this._spaceKey}get spaceId(){return this._spaceId}get invitationUrl(){return this._invitationUrl}get deviceInvitationParam(){return this._deviceInvitationParam}get spaceInvitationParam(){return this._spaceInvitationParam}setLayout({layout:I,invitationCode:U,spaceKey:q,spaceId:G}){this._layout=I,this._invitationCode=U,this._spaceKey=q,this._spaceId=G,this.layoutUpdate.emit({layout:I,invitationCode:U,spaceKey:q,spaceId:G})}setInvitationUrl({invitationUrl:I,deviceInvitationParam:U,spaceInvitationParam:q}){this._invitationUrl=I,this._deviceInvitationParam=U,this._spaceInvitationParam=q,this.invitationUrlUpdate.emit({invitationUrl:I,deviceInvitationParam:U,spaceInvitationParam:q})}async setAppContext(I){invariant$1(this._appRpc,"runtime not open"),await this._appRpc.rpc.AppService.setContext(I)}async open(){this._appRpc=createProtoRpcPeer({requested:clientProtocol.appServiceBundle,exposed:clientProtocol.shellServiceBundle,handlers:{ShellService:{setLayout:async I=>{this._layout=I.layout,this._invitationCode=I.invitationCode,this._spaceKey=I.spaceKey,this._spaceId=I.spaceId,this.layoutUpdate.emit(I)},setInvitationUrl:async I=>{this._invitationUrl=I.invitationUrl,this._deviceInvitationParam=I.deviceInvitationParam,this._spaceInvitationParam=I.spaceInvitationParam,this.invitationUrlUpdate.emit(I)}}},port:this._port}),await this._appRpc.open()}async close(){var I;await((I=this._appRpc)==null?void 0:I.close()),this._appRpc=void 0}}const os={"manage profile label":"Manage identity","identity offline description":"Offline","sidebar label":"DXOS sidebar","copy invitation code label":"Copy URL","copy success label":"Copied","copy self public key label":"Copy public key","open share panel label":"View QR code","joining space heading":"Joining space","join space heading":"Enter space invitation","halo heading":"Initialize device identity","exit label":"Exit","identity selector title":"Join as","identity radio group title":"Select an identity you’ve associated with this device already","add identity label":"Add","continue label":"Continue","back label":"Back","next label":"Next","close label":"Close","auth choices label":"Choose an identity","create identity label":"Create an identity","create identity description":"Create a new identity.","recover identity label":"Use a seed phrase","recover identity description":"Enter your seed phrase to log in manually.","join identity label":"Use another device","join identity description":"Add this device to an identity you’re already logged into on another device.","deselect identity label":"Back to identities","addition method chooser title":"An identity is required to continue","new identity input label":"Set display name","recover identity input label":"Type or paste your seed phrase","failed to create identity message":"Failed to create an identity.","failed to recover identity message":"Failed to recover an identity from the provided seed phrase.","failed to authenticate message":"Incorrect PIN.","identity added label":"Created identity & added to this device:","join space as identity heading":"<part>as </part><part><icon/><label>{{labelValue}}</label></part>","error status label":"Failed","timeout status label":"Timed out","cancelled status label":"Cancelled","init status label":"Ready to connect","connecting status label":"Connecting…","connected status label":"Enter confirmation PIN","authenticating status label":"Enter confirmation PIN","success status label":"Success","cancel label":"Cancel","done label":"Done","reset label":"Start over","auth code input label":"Enter the verification code","invitation input label":"Paste an invitation code or URL","create device invitation label":"Add device","create space invitation label":"Invite","qr label":"Scan to accept invitation","empty invitations message":"No pending invitations","empty device list message":"No devices authenticated other than this device.","show all spaces label":"All spaces","all spaces label":"All spaces","create space label":"Create a new space","join space label":"Join a space","show current space label":"Current space","view space invitations label":"View space invitations","toggle sidebar label":"Open/close sidebar","open sidebar label":"Open sidebar","close sidebar label":"Close sidebar","welcome message":"Welcome","selecting identity heading":"Selecting identity","devices heading":"Devices","identity heading":"Profile settings","choose add device label":"Add device","choose devices label":"Manage devices","choose profile label":"Edit profile","choose sign out label":"Reset storage","choose join new identity label":"Join existing device","empty space members message":"There is nobody in this space yet.","back to all invitations label":"Back to all invitations","invitation heading":"Invitation","invitation list heading":"Invitations","device invitation list heading":"Pending device invitations","space invitation list heading":"Pending invitations","device list heading":"Devices","space member list heading":"Members","space panel heading":"Space membership","auth code message":"Enter the following auth code on the joining device.","auth other device emoji message":"Be sure the other device shows the following symbol:","display name input label":"Display name","display name input placeholder":"Enter a display name","invite one label":"Single-use invitation","invite one description":"Only one user may join.","invite one qr label":"Single-use invitation","invite one list item label":"Active single-use invitation","invite many label":"Multi-use invitation","invite many description":"Anyone with the link can join.","invite many qr label":"Multi-use invitation","invite many list item label":"Active multi-use invitation","invite options label":"Change the active invite option.","reset in progress label":"Resetting...","confirm label":"Confirm","reset storage input label":"WARNING: This will delete all data on this device. Type {{confirmationValue}} to continue.","join new identity input label":"WARNING: To join an existing device all data on this device will be deleted. Type {{confirmationValue}} to continue.","failed to reset identity message":"Failed to reset identity.","confirmation value":"RESET","confirmation placeholder":"Enter {{confirmationValue}} to continue.","sign out chooser title":"Danger zone","sign out chooser message":"Proceeding with the action below will erase all data on this device.","join new identity label":"Join a new identity","reset device label":"Reset storage","reset device confirm message":"Are you sure you want to reset your device? All data will be lost.","emoji and color label":"Emoji and color","clear label":"Use default","select emoji label":"Avatar emoji","select hue label":"Avatar background color","resetting message":"One moment while the device is reset…","red label":"Red","orange label":"Orange","amber label":"Amber","yellow label":"Yellow","lime label":"Lime","green label":"Green","emerald label":"Emerald","teal label":"Teal","cyan label":"Cyan","sky label":"Sky","blue label":"Blue","indigo label":"Indigo","violet label":"Violet","purple label":"Purple","fuchsia label":"Fuchsia","pink label":"Pink","rose label":"Rose","current device tag label":"This device","device name placeholder":"{{platform}} on {{os}}","more options label":"More options","disconnect label":"Go offline.","connect label":"Go online.","edit device label":"Edit device name & avatar","agent heading":"Agent","create agent clickwrap":'By creating an agent, you agree to our <tosLink href="https://dxos.org/tos">Terms of Service</tosLink>.',"create agent description":"Creating an agent helps keep your devices and peers in-sync. An agent is like any other device, but since it’s always online your changes will sync even when all your physical devices are asleep.","create agent label":"Start an agent","destroy agent label":"Shut down agent","agent device label":"Your agent","shell fallback title":"Shell failed to connect","creating agent label":"Starting agent…","destroying agent label":"Stopping agent…","getting agent label":"Checking agent status…","agent requested label":"Agent requested","agent requested description":"The agent service is creating an agent for you. Once the agent connects, it will display in the devices list."},enUS=Object.freeze(Object.defineProperty({__proto__:null,os},Symbol.toStringTag,{value:"Module"})),osTranslations={"en-US":enUS},runShell=async($=new reactClient.Config)=>{const I=new ShellRuntimeImpl(createIFramePort({channel:clientProtocol.DEFAULT_SHELL_CHANNEL}));await I.open();try{const U=new ClientServicesProxy(createIFramePort({channel:clientProtocol.DEFAULT_CLIENT_CHANNEL})),q=new reactClient.Client({config:$,services:U});await q.initialize(),createRoot(document.getElementById("root")).render(React.createElement(React.StrictMode,null,React.createElement(ThemeProvider,{tx:defaultTx,resourceExtensions:[osTranslations]},React.createElement(reactClient.ClientContext.Provider,{value:{client:q,status:reactClient.SystemStatus.ACTIVE}},React.createElement(ClipboardProvider,null,React.createElement(Tooltip.Provider,null,React.createElement(AgentHostingProvider,null,React.createElement(Shell,{runtime:I}))))))))}catch{createRoot(document.getElementById("root")).render(React.createElement(React.StrictMode,null,React.createElement(ThemeProvider,{tx:defaultTx,resourceExtensions:[osTranslations]},React.createElement(Fallback,{onClose:()=>I.setAppContext({display:ShellDisplay.NONE})}))))}},Fallback=({onClose:$})=>{const{t:I}=useTranslation("os");return React.createElement(Dialog.Root,{modal:!0,open:!0,onOpenChange:()=>$==null?void 0:$()},React.createElement(Dialog.Overlay,null,React.createElement(Dialog.Content,null,React.createElement(Dialog.Title,null,I("shell fallback title")),React.createElement(Dialog.Close,{asChild:!0,onClick:()=>$==null?void 0:$()},React.createElement(Button,{variant:"primary"},I("close label"))))))};React.createContext({});var ws=null;typeof WebSocket<"u"?ws=WebSocket:typeof MozWebSocket<"u"?ws=MozWebSocket:typeof global<"u"?ws=global.WebSocket||global.MozWebSocket:typeof window<"u"?ws=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(ws=self.WebSocket||self.MozWebSocket);const WebSocket$1=ws;var __dxlog_file$3="/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/token-auth.ts",WebSocketWithTokenAuth=class extends WebSocket$1{constructor($,I){const U=export_Buffer.from(I).toString("base64").replace(/=*$/,""),q=[`base64url.bearer.authorization.dxos.org.${U}`];super($,q),log$2("encodedToken",{encodedToken:U},{F:__dxlog_file$3,L:55,S:this,C:(G,K)=>G(...K)})}};function _ts_decorate$3($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file2$3="/home/runner/work/dxos/dxos/packages/core/mesh/websocket-rpc/src/client.ts",WebsocketRpcClient=class{constructor($){this._params=$,this._connectTrigger=new Trigger,this.connected=new Event$1,this.disconnected=new Event$1,this.error=new Event$1,this._rpc=createProtoRpcPeer({requested:this._params.requested,exposed:this._params.exposed,handlers:this._params.handlers,noHandshake:this._params.noHandshake,port:{send:I=>{this._socket.send(I)},subscribe:I=>{this._socket.onmessage=async U=>{typeof Blob<"u"&&U.data instanceof Blob?I(export_Buffer.from(await U.data.arrayBuffer())):I(U.data)}}}})}get url(){return this._params.url}async open(){this._params.authenticationToken?this._socket=new WebSocketWithTokenAuth(this._params.url,this._params.authenticationToken):this._socket=new WebSocket$1(this._params.url),this._socket.onopen=async()=>{log$2("Socket open",void 0,{F:__dxlog_file2$3,L:62,S:this,C:($,I)=>$(...I)});try{await this._rpc.open(),log$2(`RPC open ${this._params.url}`,void 0,{F:__dxlog_file2$3,L:65,S:this,C:($,I)=>$(...I)}),this.connected.emit(),this._connectTrigger.wake()}catch($){this.error.emit($)}},this._socket.onclose=async()=>{log$2(`Disconnected ${this._params.url}`,void 0,{F:__dxlog_file2$3,L:74,S:this,C:($,I)=>$(...I)}),this.disconnected.emit(),await this.close()},this._socket.onerror=$=>{log$2.error($.message??"Socket error",{url:this._params.url},{F:__dxlog_file2$3,L:81,S:this,C:(U,q)=>U(...q)});const I=$.error??new Error($.message);this.error.emit(I),this._connectTrigger.throw(I)},await this._connectTrigger.wait()}async close(){var $,I;try{await(($=this._rpc)==null?void 0:$.close())}catch(U){log$2.catch(U,void 0,{F:__dxlog_file2$3,L:94,S:this,C:(q,G)=>q(...G)})}(I=this._socket)==null||I.close()}get rpc(){return this._rpc.rpc}};_ts_decorate$3([logInfo],WebsocketRpcClient.prototype,"url",null);const index$2=Object.freeze(Object.defineProperty({__proto__:null,WebSocketWithTokenAuth,WebsocketRpcClient},Symbol.toStringTag,{value:"Module"}));var SignalState;(function($){$[$.CONNECTING=0]="CONNECTING",$[$.RECONNECTING=1]="RECONNECTING",$[$.CONNECTED=2]="CONNECTED",$[$.DISCONNECTED=3]="DISCONNECTED",$[$.ERROR=4]="ERROR",$[$.CLOSED=5]="CLOSED"})(SignalState||(SignalState={}));var MessengerMonitor=class{recordMessageAckFailed(){trace.metrics.increment("dxos.mesh.signal.messenger.failed-ack",1)}recordReliableMessage($){trace.metrics.increment("dxos.mesh.signal.messenger.reliable-send",1,{tags:{success:$.sent,attempts:$.sendAttempts}})}},MESSAGE_TIMEOUT=1e4,__dxlog_file$2="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/messenger.ts",ReliablePayload=protocols.schema.getCodecForType("dxos.mesh.messaging.ReliablePayload"),Acknowledgement=protocols.schema.getCodecForType("dxos.mesh.messaging.Acknowledgement"),RECEIVED_MESSAGES_GC_INTERVAL=12e4,Messenger=class{constructor({signalManager:$,retryDelay:I=300}){this._monitor=new MessengerMonitor,this._listeners=new ComplexMap(({peerId:U,payloadType:q})=>U.toHex()+q),this._defaultListeners=new ComplexMap(PublicKey.hash),this._onAckCallbacks=new ComplexMap(PublicKey.hash),this._receivedMessages=new ComplexSet(PublicKey.hash),this._toClear=new ComplexSet(PublicKey.hash),this._closed=!0,this._signalManager=$,this._retryDelay=I,this.open()}open(){if(!this._closed)return;const $=PublicKey.random().toHex();log$2.trace("dxos.mesh.messenger.open",protocols.trace.begin({id:$}),{F:__dxlog_file$2,L:71,S:this,C:(I,U)=>I(...U)}),this._ctx=new Context({onError:I=>log$2.catch(I,void 0,{F:__dxlog_file$2,L:73,S:this,C:(U,q)=>U(...q)})},{F:__dxlog_file$2,L:72}),this._ctx.onDispose(this._signalManager.onMessage.on(async I=>{log$2("received message",{from:I.author},{F:__dxlog_file$2,L:77,S:this,C:(U,q)=>U(...q)}),await this._handleMessage(I)})),scheduleTaskInterval(this._ctx,async()=>{this._performGc()},RECEIVED_MESSAGES_GC_INTERVAL),this._closed=!1,log$2.trace("dxos.mesh.messenger.open",protocols.trace.end({id:$}),{F:__dxlog_file$2,L:92,S:this,C:(I,U)=>I(...U)})}async close(){this._closed||(this._closed=!0,await this._ctx.dispose())}async sendMessage({author:$,recipient:I,payload:U}){invariant$1(!this._closed,"Closed",{F:__dxlog_file$2,L:104,S:this,A:["!this._closed","'Closed'"]});const q=this._ctx.derive(),G={messageId:PublicKey.random(),payload:U};invariant$1(!this._onAckCallbacks.has(G.messageId),void 0,{F:__dxlog_file$2,L:111,S:this,A:["!this._onAckCallbacks.has(reliablePayload.messageId!)",""]}),log$2("send message",{messageId:G.messageId,author:$,recipient:I},{F:__dxlog_file$2,L:112,S:this,C:(Z,Q)=>Z(...Q)});let K,Y,J=0;const X=new Promise((Z,Q)=>{K=Z,Y=Q});return scheduleExponentialBackoffTaskInterval(q,async()=>{log$2("retrying message",{messageId:G.messageId},{F:__dxlog_file$2,L:127,S:this,C:(Z,Q)=>Z(...Q)}),J++,await this._encodeAndSend({author:$,recipient:I,reliablePayload:G}).catch(Z=>log$2("failed to send message",{err:Z},{F:__dxlog_file$2,L:130,S:this,C:(Q,ee)=>Q(...ee)}))},this._retryDelay),scheduleTask(q,()=>{log$2("message not delivered",{messageId:G.messageId},{F:__dxlog_file$2,L:139,S:this,C:(Z,Q)=>Z(...Q)}),this._onAckCallbacks.delete(G.messageId),Y(new protocols.TimeoutError("signaling message not delivered",new TimeoutError(MESSAGE_TIMEOUT,"Message not delivered"))),q.dispose(),this._monitor.recordReliableMessage({sendAttempts:J,sent:!1})},MESSAGE_TIMEOUT),this._onAckCallbacks.set(G.messageId,()=>{K(),this._onAckCallbacks.delete(G.messageId),q.dispose(),this._monitor.recordReliableMessage({sendAttempts:J,sent:!0})}),await this._encodeAndSend({author:$,recipient:I,reliablePayload:G}),X}async listen({peerId:$,payloadType:I,onMessage:U}){invariant$1(!this._closed,"Closed",{F:__dxlog_file$2,L:177,S:this,A:["!this._closed","'Closed'"]}),await this._signalManager.subscribeMessages($);let q;return I?(q=this._listeners.get({peerId:$,payloadType:I}),q||(q=new Set,this._listeners.set({peerId:$,payloadType:I},q))):(q=this._defaultListeners.get($),q||(q=new Set,this._defaultListeners.set($,q))),q.add(U),{unsubscribe:async()=>{q.delete(U)}}}async _encodeAndSend({author:$,recipient:I,reliablePayload:U}){await this._signalManager.sendMessage({author:$,recipient:I,payload:{type_url:"dxos.mesh.messaging.ReliablePayload",value:ReliablePayload.encode(U,{preserveAny:!0})}})}async _handleMessage($){switch($.payload.type_url){case"dxos.mesh.messaging.ReliablePayload":{await this._handleReliablePayload($);break}case"dxos.mesh.messaging.Acknowledgement":{await this._handleAcknowledgement({payload:$.payload});break}}}async _handleReliablePayload({author:$,recipient:I,payload:U}){invariant$1(U.type_url==="dxos.mesh.messaging.ReliablePayload",void 0,{F:__dxlog_file$2,L:238,S:this,A:["payload.type_url === 'dxos.mesh.messaging.ReliablePayload'",""]});const q=ReliablePayload.decode(U.value,{preserveAny:!0});log$2("handling message",{messageId:q.messageId},{F:__dxlog_file$2,L:241,S:this,C:(G,K)=>G(...K)});try{await this._sendAcknowledgement({author:$,recipient:I,messageId:q.messageId})}catch(G){throw this._monitor.recordMessageAckFailed(),G}this._receivedMessages.has(q.messageId)||(this._receivedMessages.add(q.messageId),await this._callListeners({author:$,recipient:I,payload:q.payload}))}async _handleAcknowledgement({payload:$}){var I;invariant$1($.type_url==="dxos.mesh.messaging.Acknowledgement",void 0,{F:__dxlog_file$2,L:269,S:this,A:["payload.type_url === 'dxos.mesh.messaging.Acknowledgement'",""]}),(I=this._onAckCallbacks.get(Acknowledgement.decode($.value).messageId))==null||I()}async _sendAcknowledgement({author:$,recipient:I,messageId:U}){log$2("sending ACK",{messageId:U,from:I,to:$},{F:__dxlog_file$2,L:282,S:this,C:(q,G)=>q(...G)}),await this._signalManager.sendMessage({author:I,recipient:$,payload:{type_url:"dxos.mesh.messaging.Acknowledgement",value:Acknowledgement.encode({messageId:U})}})}async _callListeners($){{const I=this._defaultListeners.get($.recipient);if(I)for(const U of I)await U($)}{const I=this._listeners.get({peerId:$.recipient,payloadType:$.payload.type_url});if(I)for(const U of I)await U($)}}_performGc(){const $=performance.now();for(const U of this._toClear.keys())this._receivedMessages.delete(U);this._toClear.clear();for(const U of this._receivedMessages.keys())this._toClear.add(U);const I=performance.now()-$;I>100&&log$2.warn("GC took too long",{elapsed:I},{F:__dxlog_file$2,L:330,S:this,C:(U,q)=>U(...q)})}},SignalClientMonitor=class{constructor(){this._performance={sentMessages:0,receivedMessages:0,reconnectCounter:0,joinCounter:0,leaveCounter:0},this._connectionStarted=new Date,this._lastStateChange=new Date}getRecordedTimestamps(){return{connectionStarted:this._connectionStarted,lastStateChange:this._lastStateChange}}recordStateChangeTime(){this._lastStateChange=new Date}recordConnectionStartTime(){this._connectionStarted=new Date}recordReconnect($){this._performance.reconnectCounter++,trace.metrics.increment("dxos.mesh.signal.signal-client.reconnect",1,{tags:{success:$.success}})}recordJoin(){this._performance.joinCounter++}recordLeave(){this._performance.leaveCounter++}recordMessageReceived($){this._performance.receivedMessages++,trace.metrics.increment("dxos.mesh.signal.signal-client.received-total",1,{tags:createIdentityTags($)}),trace.metrics.distribution("dxos.mesh.signal.signal-client.bytes-in",getByteCount($),{tags:createIdentityTags($)})}async recordMessageSending($,I){this._performance.sentMessages++;const U=createIdentityTags($);let q=!0;try{const G=Date.now();await I();const K=Date.now()-G;trace.metrics.distribution("dxos.mesh.signal.signal-client.send-duration",K,{tags:U}),trace.metrics.distribution("dxos.mesh.signal.signal-client.bytes-out",getByteCount($),{tags:U})}catch{q=!1}trace.metrics.increment("dxos.mesh.signal.signal-client.sent-total",1,{tags:{...U,success:q}})}recordStreamCloseErrors($){trace.metrics.increment("dxos.mesh.signal.signal-client.stream-close-errors",$)}recordReconciliation($){trace.metrics.increment("dxos.mesh.signal.signal-client.reconciliation",1,{tags:{success:$.success}})}},getByteCount=$=>$.author.asUint8Array().length+$.recipient.asUint8Array().length+$.payload.type_url.length+$.payload.value.length,createIdentityTags=$=>({peer:$.author.toHex()}),__dxlog_file2$2="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-local-state.ts",SignalLocalState=class{constructor($,I){this._onMessage=$,this._onSwarmEvent=I,this._swarmStreams=new ComplexMap(({topic:U,peerId:q})=>U.toHex()+q.toHex()),this._joinedTopics=new ComplexSet(({topic:U,peerId:q})=>U.toHex()+q.toHex()),this._subscribedMessages=new ComplexSet(({peerId:U})=>U.toHex()),this.messageStreams=new ComplexMap(U=>U.toHex()),this.reconciled=new Event$1}async safeCloseStreams(){const $=[...this._swarmStreams.values()].concat([...this.messageStreams.values()]);return this._swarmStreams.clear(),this.messageStreams.clear(),{failureCount:(await safeAwaitAll($,U=>U.close())).length}}join({topic:$,peerId:I}){this._joinedTopics.add({topic:$,peerId:I})}leave({topic:$,peerId:I}){var U;(U=this._swarmStreams.get({topic:$,peerId:I}))==null||U.close(),this._swarmStreams.delete({topic:$,peerId:I}),this._joinedTopics.delete({topic:$,peerId:I})}subscribeMessages($){this._subscribedMessages.add({peerId:$})}unsubscribeMessages($){var I;log$2("unsubscribing from messages",{peerId:$},{F:__dxlog_file2$2,L:76,S:this,C:(U,q)=>U(...q)}),this._subscribedMessages.delete({peerId:$}),(I=this.messageStreams.get($))==null||I.close(),this.messageStreams.delete($)}async reconcile($,I){await this._reconcileSwarmSubscriptions($,I),await this._reconcileMessageSubscriptions($,I),this.reconciled.emit()}async _reconcileSwarmSubscriptions($,I){var U;for(const{topic:q,peerId:G}of this._swarmStreams.keys())this._joinedTopics.has({topic:q,peerId:G})||((U=this._swarmStreams.get({topic:q,peerId:G}))==null||U.close(),this._swarmStreams.delete({topic:q,peerId:G}));for(const{topic:q,peerId:G}of this._joinedTopics.values()){if(this._swarmStreams.has({topic:q,peerId:G}))continue;const K=await asyncTimeout(cancelWithContext($,I.join({topic:q,peerId:G})),5e3);K.subscribe(async Y=>{this._joinedTopics.has({topic:q,peerId:G})&&(log$2("swarm event",{swarmEvent:Y},{F:__dxlog_file2$2,L:112,S:this,C:(J,X)=>J(...X)}),await this._onSwarmEvent({topic:q,swarmEvent:Y}))}),this._swarmStreams.set({topic:q,peerId:G},K)}}async _reconcileMessageSubscriptions($,I){var U;for(const q of this.messageStreams.keys())this._subscribedMessages.has({peerId:q})||((U=this.messageStreams.get(q))==null||U.close(),this.messageStreams.delete(q));for(const{peerId:q}of this._subscribedMessages.values()){if(this.messageStreams.has(q))continue;const G=await asyncTimeout(cancelWithContext($,I.receiveMessages(q)),5e3);G.subscribe(async K=>{if(this._subscribedMessages.has({peerId:q})){const Y={author:PublicKey.from(K.author),recipient:PublicKey.from(K.recipient),payload:K.payload};await this._onMessage(Y)}}),this.messageStreams.set(q,G)}}},SignalRpcClientMonitor=class{recordClientCloseFailure($){trace.metrics.increment("dxos.mesh.signal.signal-rpc-client.close-failure",1,{tags:{reason:$.failureReason}})}},__dxlog_file3$2="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-rpc-client.ts",SIGNAL_KEEPALIVE_INTERVAL=1e4,SignalRPCClient=class{constructor({url:$,callbacks:I={}}){this._connectTrigger=new Trigger,this._closed=!1,this._closeComplete=new Trigger,this._monitor=new SignalRpcClientMonitor;const U=PublicKey.random().toHex();log$2.trace("dxos.mesh.signal-rpc-client.constructor",protocols.trace.begin({id:U}),{F:__dxlog_file3$2,L:60,S:this,C:(q,G)=>q(...G)}),this._url=$,this._callbacks=I,this._socket=new WebSocket$1(this._url),this._rpc=createProtoRpcPeer({requested:{Signal:protocols.schema.getService("dxos.mesh.signal.Signal")},noHandshake:!0,port:{send:q=>{if(!this._closed)try{this._socket.send(q)}catch(G){log$2.warn("send error",G,{F:__dxlog_file3$2,L:79,S:this,C:(K,Y)=>K(...Y)})}},subscribe:q=>{this._socket.onmessage=async G=>{typeof Blob<"u"&&G.data instanceof Blob?q(export_Buffer.from(await G.data.arrayBuffer())):q(G.data)}}},encodingOptions:{preserveAny:!0}}),this._socket.onopen=async()=>{var q,G,K,Y;try{if(await this._rpc.open(),this._closed){await this._safeCloseRpc();return}log$2(`RPC open ${this._url}`,void 0,{F:__dxlog_file3$2,L:104,S:this,C:(J,X)=>J(...X)}),(G=(q=this._callbacks).onConnected)==null||G.call(q),this._connectTrigger.wake(),this._keepaliveCtx=new Context(void 0,{F:__dxlog_file3$2,L:107}),scheduleTaskInterval(this._keepaliveCtx,async()=>{var J;(J=this._socket)==null||J.send("__ping__")},SIGNAL_KEEPALIVE_INTERVAL)}catch(J){(Y=(K=this._callbacks).onError)==null||Y.call(K,J),this._socket.close(),this._closed=!0}},this._socket.onclose=async()=>{var q,G;log$2(`Disconnected ${this._url}`,void 0,{F:__dxlog_file3$2,L:127,S:this,C:(K,Y)=>K(...Y)}),(G=(q=this._callbacks).onDisconnected)==null||G.call(q),this._closeComplete.wake(),await this.close()},this._socket.onerror=async q=>{var G,K;if(this._closed){this._socket.close();return}this._closed=!0,(K=(G=this._callbacks).onError)==null||K.call(G,q.error??new Error(q.message)),await this._safeCloseRpc(),log$2.warn(`Socket ${q.type??"unknown"} error`,{message:q.message,url:this._url},{F:__dxlog_file3$2,L:143,S:this,C:(Y,J)=>Y(...J)})},log$2.trace("dxos.mesh.signal-rpc-client.constructor",protocols.trace.end({id:U}),{F:__dxlog_file3$2,L:146,S:this,C:(q,G)=>q(...G)})}async close(){var $,I;if(!this._closed){this._closed=!0,await(($=this._keepaliveCtx)==null?void 0:$.dispose());try{await this._safeCloseRpc(),(this._socket.readyState===WebSocket$1.OPEN||this._socket.readyState===WebSocket$1.CONNECTING)&&this._socket.close(),await this._closeComplete.wait({timeout:1e3})}catch(U){const q=U instanceof TimeoutError?"timeout":((I=U==null?void 0:U.constructor)==null?void 0:I.name)??"unknown";this._monitor.recordClientCloseFailure({failureReason:q})}}}async join({topic:$,peerId:I}){var q,G,K,Y;log$2("join",{topic:$,peerId:I,metadata:(G=(q=this._callbacks)==null?void 0:q.getMetadata)==null?void 0:G.call(q)},{F:__dxlog_file3$2,L:172,S:this,C:(J,X)=>J(...X)}),invariant$1(!this._closed,"SignalRPCClient is closed",{F:__dxlog_file3$2,L:173,S:this,A:["!this._closed","'SignalRPCClient is closed'"]}),await this._connectTrigger.wait();const U=this._rpc.rpc.Signal.join({swarm:$.asUint8Array(),peer:I.asUint8Array(),metadata:(Y=(K=this._callbacks)==null?void 0:K.getMetadata)==null?void 0:Y.call(K)});return await U.waitUntilReady(),U}async receiveMessages($){log$2("receiveMessages",{peerId:$},{F:__dxlog_file3$2,L:185,S:this,C:(U,q)=>U(...q)}),invariant$1(!this._closed,"SignalRPCClient is closed",{F:__dxlog_file3$2,L:186,S:this,A:["!this._closed","'SignalRPCClient is closed'"]}),await this._connectTrigger.wait();const I=this._rpc.rpc.Signal.receiveMessages({peer:$.asUint8Array()});return await I.waitUntilReady(),I}async sendMessage({author:$,recipient:I,payload:U}){var q,G,K,Y;log$2("sendMessage",{author:$,recipient:I,payload:U,metadata:(G=(q=this._callbacks)==null?void 0:q.getMetadata)==null?void 0:G.call(q)},{F:__dxlog_file3$2,L:196,S:this,C:(J,X)=>J(...X)}),invariant$1(!this._closed,"SignalRPCClient is closed",{F:__dxlog_file3$2,L:197,S:this,A:["!this._closed","'SignalRPCClient is closed'"]}),await this._connectTrigger.wait(),await this._rpc.rpc.Signal.sendMessage({author:$.asUint8Array(),recipient:I.asUint8Array(),payload:U,metadata:(Y=(K=this._callbacks)==null?void 0:K.getMetadata)==null?void 0:Y.call(K)})}async _safeCloseRpc(){try{this._connectTrigger.reset(),await this._rpc.close()}catch($){log$2.catch($,void 0,{F:__dxlog_file3$2,L:212,S:this,C:(I,U)=>I(...U)})}}},__dxlog_file4$2="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-client/signal-client.ts",DEFAULT_RECONNECT_TIMEOUT=100,MAX_RECONNECT_TIMEOUT=5e3,ERROR_RECONCILE_DELAY=1e3,RECONCILE_INTERVAL=5e3,SignalClient=class extends Resource{constructor($,I,U,q){if(super(),this._host=$,this._getMetadata=q,this._monitor=new SignalClientMonitor,this._state=SignalState.CLOSED,this._lastReconciliationFailed=!1,this._clientReady=new Trigger,this._reconnectAfter=DEFAULT_RECONNECT_TIMEOUT,this._instanceId=PublicKey.random().toHex(),this.statusChanged=new Event$1,!this._host.startsWith("wss://")&&!this._host.startsWith("ws://"))throw new Error(`Signal server requires a websocket URL. Provided: ${this._host}`);this.localState=new SignalLocalState(G=>(this._monitor.recordMessageReceived(G),I(G)),U)}async _open(){log$2.trace("dxos.mesh.signal-client.open",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file4$2,L:83,S:this,C:($,I)=>$(...I)}),![SignalState.CONNECTED,SignalState.CONNECTING].includes(this._state)&&(this._setState(SignalState.CONNECTING),this._reconcileTask=new DeferredTask(this._ctx,async()=>{try{await cancelWithContext(this._connectionCtx,this._clientReady.wait({timeout:5e3})),invariant$1(this._state===SignalState.CONNECTED,"Not connected to Signal Server",{F:__dxlog_file4$2,L:93,S:this,A:["this._state === SignalState.CONNECTED","'Not connected to Signal Server'"]}),await this.localState.reconcile(this._connectionCtx,this._client),this._monitor.recordReconciliation({success:!0}),this._lastReconciliationFailed=!1}catch($){throw this._lastReconciliationFailed=!0,this._monitor.recordReconciliation({success:!1}),$}}),scheduleTaskInterval(this._ctx,async()=>{this._state===SignalState.CONNECTED&&this._reconcileTask.schedule()},RECONCILE_INTERVAL),this._reconnectTask=new DeferredTask(this._ctx,async()=>{try{await this._reconnect(),this._monitor.recordReconnect({success:!0})}catch($){throw this._monitor.recordReconnect({success:!1}),$}}),this._createClient(),log$2.trace("dxos.mesh.signal-client.open",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file4$2,L:126,S:this,C:($,I)=>$(...I)}))}async _catch($){this._state===SignalState.CLOSED||this._ctx.disposed||(this._state===SignalState.CONNECTED&&!this._lastReconciliationFailed&&log$2.warn("SignalClient error:",$,{F:__dxlog_file4$2,L:135,S:this,C:(I,U)=>I(...U)}),this._scheduleReconcileAfterError())}async _close(){log$2("closing...",void 0,{F:__dxlog_file4$2,L:141,S:this,C:($,I)=>$(...I)}),![SignalState.CLOSED].includes(this._state)&&(this._setState(SignalState.CLOSED),await this._safeResetClient(),log$2("closed",void 0,{F:__dxlog_file4$2,L:149,S:this,C:($,I)=>$(...I)}))}getStatus(){var $;return{host:this._host,state:this._state,error:($=this._lastError)==null?void 0:$.message,reconnectIn:this._reconnectAfter,...this._monitor.getRecordedTimestamps()}}async join($){var I;log$2("joining",{topic:$.topic,peerId:$.peerId},{F:__dxlog_file4$2,L:163,S:this,C:(U,q)=>U(...q)}),this._monitor.recordJoin(),this.localState.join($),(I=this._reconcileTask)==null||I.schedule()}async leave($){log$2("leaving",{topic:$.topic,peerId:$.peerId},{F:__dxlog_file4$2,L:170,S:this,C:(I,U)=>I(...U)}),this._monitor.recordLeave(),this.localState.leave($)}async sendMessage($){return this._monitor.recordMessageSending($,async()=>{await this._clientReady.wait(),invariant$1(this._state===SignalState.CONNECTED,"Not connected to Signal Server",{F:__dxlog_file4$2,L:178,S:this,A:["this._state === SignalState.CONNECTED","'Not connected to Signal Server'"]}),await this._client.sendMessage($)})}async subscribeMessages($){var I;log$2("subscribing to messages",{peerId:$},{F:__dxlog_file4$2,L:184,S:this,C:(U,q)=>U(...q)}),this.localState.subscribeMessages($),(I=this._reconcileTask)==null||I.schedule()}async unsubscribeMessages($){log$2("unsubscribing from messages",{peerId:$},{F:__dxlog_file4$2,L:190,S:this,C:(I,U)=>I(...U)}),this.localState.unsubscribeMessages($)}_scheduleReconcileAfterError(){scheduleTask(this._ctx,()=>this._reconcileTask.schedule(),ERROR_RECONCILE_DELAY)}_createClient(){log$2("creating client",{host:this._host,state:this._state},{F:__dxlog_file4$2,L:199,S:this,C:($,I)=>$(...I)}),invariant$1(!this._client,"Client already created",{F:__dxlog_file4$2,L:200,S:this,A:["!this._client","'Client already created'"]}),this._monitor.recordConnectionStartTime(),this._connectionCtx=this._ctx.derive(),this._connectionCtx.onDispose(async()=>{log$2("connection context disposed",void 0,{F:__dxlog_file4$2,L:207,S:this,C:(I,U)=>I(...U)});const{failureCount:$}=await this.localState.safeCloseStreams();this._monitor.recordStreamCloseErrors($)});try{const $=new SignalRPCClient({url:this._host,callbacks:{onConnected:()=>{$===this._client&&(log$2("socket connected",void 0,{F:__dxlog_file4$2,L:218,S:this,C:(I,U)=>I(...U)}),this._onConnected())},onDisconnected:()=>{$===this._client&&(log$2("socket disconnected",{state:this._state},{F:__dxlog_file4$2,L:227,S:this,C:(I,U)=>I(...U)}),this._state===SignalState.ERROR?this._setState(SignalState.DISCONNECTED):this._onDisconnected())},onError:I=>{$===this._client&&(log$2("socket error",{error:I,state:this._state},{F:__dxlog_file4$2,L:239,S:this,C:(U,q)=>U(...q)}),this._onDisconnected({error:I}))},getMetadata:this._getMetadata}});this._client=$}catch($){this._client=void 0,this._onDisconnected({error:$})}}async _reconnect(){if(log$2(`reconnecting in ${this._reconnectAfter}ms`,{state:this._state},{F:__dxlog_file4$2,L:254,S:this,C:($,I)=>$(...I)}),this._state===SignalState.RECONNECTING){log$2.info("Signal api already reconnecting.",void 0,{F:__dxlog_file4$2,L:257,S:this,C:($,I)=>$(...I)});return}this._state!==SignalState.CLOSED&&(this._setState(SignalState.RECONNECTING),await this._safeResetClient(),await cancelWithContext(this._ctx,sleep(this._reconnectAfter)),this._createClient())}_onConnected(){this._lastError=void 0,this._lastReconciliationFailed=!1,this._reconnectAfter=DEFAULT_RECONNECT_TIMEOUT,this._setState(SignalState.CONNECTED),this._clientReady.wake(),this._reconcileTask.schedule()}_onDisconnected($){this._updateReconnectTimeout(),this._state!==SignalState.CLOSED&&($!=null&&$.error?(this._lastError=$.error,this._setState(SignalState.ERROR)):this._setState(SignalState.DISCONNECTED),this._reconnectTask.schedule())}_setState($){this._state=$,this._monitor.recordStateChangeTime(),log$2("signal state changed",{status:this.getStatus()},{F:__dxlog_file4$2,L:298,S:this,C:(I,U)=>I(...U)}),this.statusChanged.emit(this.getStatus())}_updateReconnectTimeout(){this._state!==SignalState.CONNECTED&&this._state!==SignalState.CONNECTING&&(this._reconnectAfter*=2,this._reconnectAfter=Math.min(this._reconnectAfter,MAX_RECONNECT_TIMEOUT))}async _safeResetClient(){var $,I;await(($=this._connectionCtx)==null?void 0:$.dispose()),this._connectionCtx=void 0,this._clientReady.reset(),await((I=this._client)==null?void 0:I.close().catch(()=>{})),this._client=void 0}},WebsocketSignalManagerMonitor=class{recordRateLimitExceeded(){trace.metrics.increment("dxos.mesh.signal.signal-manager.rate-limit-hit",1)}recordServerFailure($){trace.metrics.increment("dxos.mesh.signal.signal-manager.server-failure",1,{tags:{server:$.serverName,restarted:$.willRestart}})}};function _ts_decorate$2($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file6$1="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/websocket-signal-manager.ts",MAX_SERVER_FAILURES=5,WSS_SIGNAL_SERVER_REBOOT_DELAY=3e3,WebsocketSignalManager=class{constructor($,I){this._hosts=$,this._getMetadata=I,this._servers=new Map,this._monitor=new WebsocketSignalManagerMonitor,this._opened=!1,this.failureCount=new Map,this.statusChanged=new Event$1,this.swarmEvent=new Event$1,this.onMessage=new Event$1,this._instanceId=PublicKey.random().toHex(),log$2("Created WebsocketSignalManager",{hosts:this._hosts},{F:__dxlog_file6$1,L:58,S:this,C:(U,q)=>U(...q)});for(const U of this._hosts){if(this._servers.has(U.server))continue;const q=new SignalClient(U.server,async G=>this.onMessage.emit(G),async G=>this.swarmEvent.emit(G),this._getMetadata);q.statusChanged.on(()=>this.statusChanged.emit(this.getStatus())),this._servers.set(U.server,q),this.failureCount.set(U.server,0)}this._failedServersBitfield=BitField.zeros(this._hosts.length)}async open(){this._opened||(log$2("open signal manager",{hosts:this._hosts},{F:__dxlog_file6$1,L:85,S:this,C:($,I)=>$(...I)}),log$2.trace("dxos.mesh.websocket-signal-manager.open",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file6$1,L:86,S:this,C:($,I)=>$(...I)}),this._initContext(),await safeAwaitAll(this._servers.values(),$=>$.open()),this._opened=!0,log$2.trace("dxos.mesh.websocket-signal-manager.open",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file6$1,L:93,S:this,C:($,I)=>$(...I)}))}async close(){this._opened&&(this._opened=!1,await this._ctx.dispose(),await safeAwaitAll(this._servers.values(),$=>$.close()))}async restartServer($){log$2("restarting server",{serverName:$},{F:__dxlog_file6$1,L:107,S:this,C:(U,q)=>U(...q)}),invariant$1(this._opened,"server already closed",{F:__dxlog_file6$1,L:108,S:this,A:["this._opened","'server already closed'"]});const I=this._servers.get($);invariant$1(I,"server not found",{F:__dxlog_file6$1,L:111,S:this,A:["server","'server not found'"]}),await I.close(),await sleep(WSS_SIGNAL_SERVER_REBOOT_DELAY),await I.open()}getStatus(){return Array.from(this._servers.values()).map($=>$.getStatus())}async join({topic:$,peerId:I}){log$2("join",{topic:$,peerId:I},{F:__dxlog_file6$1,L:124,S:this,C:(U,q)=>U(...q)}),invariant$1(this._opened,"Closed",{F:__dxlog_file6$1,L:125,S:this,A:["this._opened","'Closed'"]}),await this._forEachServer(U=>U.join({topic:$,peerId:I}))}async leave({topic:$,peerId:I}){log$2("leaving",{topic:$,peerId:I},{F:__dxlog_file6$1,L:131,S:this,C:(U,q)=>U(...q)}),invariant$1(this._opened,"Closed",{F:__dxlog_file6$1,L:132,S:this,A:["this._opened","'Closed'"]}),await this._forEachServer(U=>U.leave({topic:$,peerId:I}))}async sendMessage({author:$,recipient:I,payload:U}){log$2("signal",{recipient:I},{F:__dxlog_file6$1,L:145,S:this,C:(q,G)=>q(...G)}),invariant$1(this._opened,"Closed",{F:__dxlog_file6$1,L:146,S:this,A:["this._opened","'Closed'"]}),this._forEachServer(async(q,G,K)=>{q.sendMessage({author:$,recipient:I,payload:U}).then(()=>this._clearServerFailedFlag(G,K)).catch(Y=>{Y instanceof protocols.RateLimitExceededError?(log$2.info("WSS rate limit exceeded",{err:Y},{F:__dxlog_file6$1,L:154,S:this,C:(J,X)=>J(...X)}),this._monitor.recordRateLimitExceeded()):Y instanceof protocols.TimeoutError||Y.constructor.name==="TimeoutError"?(log$2.info("WSS sendMessage timeout",{err:Y},{F:__dxlog_file6$1,L:157,S:this,C:(J,X)=>J(...X)}),this.checkServerFailure(G,K)):(log$2.warn(`error sending to ${G}`,{err:Y},{F:__dxlog_file6$1,L:160,S:this,C:(J,X)=>J(...X)}),this.checkServerFailure(G,K))})})}async checkServerFailure($,I){const U=this.failureCount.get($)??0,q=U>MAX_SERVER_FAILURES;if(this._monitor.recordServerFailure({serverName:$,willRestart:q}),q){BitField.get(this._failedServersBitfield,I)||(log$2.warn("too many failures for ws-server, restarting",{serverName:$,failureCount:U},{F:__dxlog_file6$1,L:174,S:this,C:(G,K)=>G(...K)}),BitField.set(this._failedServersBitfield,I,!0)),await this.restartServer($),this.failureCount.set($,0);return}this.failureCount.set($,(this.failureCount.get($)??0)+1)}_clearServerFailedFlag($,I){BitField.get(this._failedServersBitfield,I)&&(log$2.info("server connection restored",{serverName:$},{F:__dxlog_file6$1,L:187,S:this,C:(U,q)=>U(...q)}),BitField.set(this._failedServersBitfield,I,!1),this.failureCount.set($,0))}async subscribeMessages($){log$2("subscribed for message stream",{peerId:$},{F:__dxlog_file6$1,L:194,S:this,C:(I,U)=>I(...U)}),invariant$1(this._opened,"Closed",{F:__dxlog_file6$1,L:195,S:this,A:["this._opened","'Closed'"]}),await this._forEachServer(async I=>I.subscribeMessages($))}async unsubscribeMessages($){log$2("subscribed for message stream",{peerId:$},{F:__dxlog_file6$1,L:201,S:this,C:(I,U)=>I(...U)}),invariant$1(this._opened,"Closed",{F:__dxlog_file6$1,L:202,S:this,A:["this._opened","'Closed'"]}),await this._forEachServer(async I=>I.unsubscribeMessages($))}_initContext(){this._ctx=new Context({onError:$=>log$2.catch($,void 0,{F:__dxlog_file6$1,L:209,S:this,C:(I,U)=>I(...U)})},{F:__dxlog_file6$1,L:208})}async _forEachServer($){return Promise.all(Array.from(this._servers.entries()).map(([I,U],q)=>$(U,I,q)))}};_ts_decorate$2([synchronized],WebsocketSignalManager.prototype,"open",null),_ts_decorate$2([synchronized],WebsocketSignalManager.prototype,"close",null),_ts_decorate$2([synchronized],WebsocketSignalManager.prototype,"join",null),_ts_decorate$2([synchronized],WebsocketSignalManager.prototype,"leave",null),_ts_decorate$2([synchronized],WebsocketSignalManager.prototype,"checkServerFailure",null);var __dxlog_file7$1="/home/runner/work/dxos/dxos/packages/core/mesh/messaging/src/signal-manager/utils.ts",setIdentityTags=({identityService:$,devicesService:I,setTag:U})=>{$.queryIdentity().subscribe(q=>{var G;if(!((G=q==null?void 0:q.identity)!=null&&G.identityKey)){log$2("empty response from identity service",{idqr:q},{F:__dxlog_file7$1,L:21,S:void 0,C:(K,Y)=>K(...Y)});return}U("identityKey",q.identity.identityKey.truncate())}),I.queryDevices().subscribe(q=>{if(!q||!q.devices||q.devices.length===0){log$2("empty response from device service",{device:q},{F:__dxlog_file7$1,L:30,S:void 0,C:(K,Y)=>K(...Y)});return}invariant$1(q,"empty response from device service",{F:__dxlog_file7$1,L:33,S:void 0,A:["dqr","'empty response from device service'"]});const G=q.devices.find(K=>K.kind===DeviceKind.CURRENT);if(!G){log$2("no current device",{device:q},{F:__dxlog_file7$1,L:37,S:void 0,C:(K,Y)=>K(...Y)});return}U("deviceKey",G.deviceKey.truncate())})};const index$1=Object.freeze(Object.defineProperty({__proto__:null,Messenger,SignalClient,WebsocketSignalManager,setIdentityTags},Symbol.toStringTag,{value:"Module"}));function dist($,I){if($.length!==I.length)throw new Error("Inputs should have the same length");for(var U=Buffer.allocUnsafe($.length),q=0;q<$.length;q++)U[q]=$[q]^I[q];return U}dist.compare=function $(I,U){if(I.length!==U.length)throw new Error("Inputs should have the same length");for(var q=0;q<I.length;q++)if(I[q]!==U[q])return I[q]<U[q]?-1:1;return 0},dist.gt=function $(I,U){return dist.compare(I,U)===1},dist.lt=function $(I,U){return dist.compare(I,U)===-1},dist.eq=function $(I,U){return dist.compare(I,U)===0};var browser$1={exports:{}},ms,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms;hasRequiredMs=1;var $=1e3,I=$*60,U=I*60,q=U*24,G=q*7,K=q*365.25;ms=function(Q,ee){ee=ee||{};var te=typeof Q;if(te==="string"&&Q.length>0)return Y(Q);if(te==="number"&&isFinite(Q))return ee.long?X(Q):J(Q);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(Q))};function Y(Q){if(Q=String(Q),!(Q.length>100)){var ee=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(Q);if(ee){var te=parseFloat(ee[1]),ne=(ee[2]||"ms").toLowerCase();switch(ne){case"years":case"year":case"yrs":case"yr":case"y":return te*K;case"weeks":case"week":case"w":return te*G;case"days":case"day":case"d":return te*q;case"hours":case"hour":case"hrs":case"hr":case"h":return te*U;case"minutes":case"minute":case"mins":case"min":case"m":return te*I;case"seconds":case"second":case"secs":case"sec":case"s":return te*$;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return te;default:return}}}}function J(Q){var ee=Math.abs(Q);return ee>=q?Math.round(Q/q)+"d":ee>=U?Math.round(Q/U)+"h":ee>=I?Math.round(Q/I)+"m":ee>=$?Math.round(Q/$)+"s":Q+"ms"}function X(Q){var ee=Math.abs(Q);return ee>=q?Z(Q,ee,q,"day"):ee>=U?Z(Q,ee,U,"hour"):ee>=I?Z(Q,ee,I,"minute"):ee>=$?Z(Q,ee,$,"second"):Q+" ms"}function Z(Q,ee,te,ne){var ie=ee>=te*1.5;return Math.round(Q/te)+" "+ne+(ie?"s":"")}return ms}function setup($){U.debug=U,U.default=U,U.coerce=X,U.disable=K,U.enable=G,U.enabled=Y,U.humanize=requireMs(),U.destroy=Z,Object.keys($).forEach(Q=>{U[Q]=$[Q]}),U.names=[],U.skips=[],U.formatters={};function I(Q){let ee=0;for(let te=0;te<Q.length;te++)ee=(ee<<5)-ee+Q.charCodeAt(te),ee|=0;return U.colors[Math.abs(ee)%U.colors.length]}U.selectColor=I;function U(Q){let ee,te=null,ne,ie;function oe(...ce){if(!oe.enabled)return;const fe=oe,se=Number(new Date),de=se-(ee||se);fe.diff=de,fe.prev=ee,fe.curr=se,ee=se,ce[0]=U.coerce(ce[0]),typeof ce[0]!="string"&&ce.unshift("%O");let ue=0;ce[0]=ce[0].replace(/%([a-zA-Z%])/g,(ve,me)=>{if(ve==="%%")return"%";ue++;const be=U.formatters[me];if(typeof be=="function"){const _e=ce[ue];ve=be.call(fe,_e),ce.splice(ue,1),ue--}return ve}),U.formatArgs.call(fe,ce),(fe.log||U.log).apply(fe,ce)}return oe.namespace=Q,oe.useColors=U.useColors(),oe.color=U.selectColor(Q),oe.extend=q,oe.destroy=U.destroy,Object.defineProperty(oe,"enabled",{enumerable:!0,configurable:!1,get:()=>te!==null?te:(ne!==U.namespaces&&(ne=U.namespaces,ie=U.enabled(Q)),ie),set:ce=>{te=ce}}),typeof U.init=="function"&&U.init(oe),oe}function q(Q,ee){const te=U(this.namespace+(typeof ee>"u"?":":ee)+Q);return te.log=this.log,te}function G(Q){U.save(Q),U.namespaces=Q,U.names=[],U.skips=[];let ee;const te=(typeof Q=="string"?Q:"").split(/[\s,]+/),ne=te.length;for(ee=0;ee<ne;ee++)te[ee]&&(Q=te[ee].replace(/\*/g,".*?"),Q[0]==="-"?U.skips.push(new RegExp("^"+Q.slice(1)+"$")):U.names.push(new RegExp("^"+Q+"$")))}function K(){const Q=[...U.names.map(J),...U.skips.map(J).map(ee=>"-"+ee)].join(",");return U.enable(""),Q}function Y(Q){if(Q[Q.length-1]==="*")return!0;let ee,te;for(ee=0,te=U.skips.length;ee<te;ee++)if(U.skips[ee].test(Q))return!1;for(ee=0,te=U.names.length;ee<te;ee++)if(U.names[ee].test(Q))return!0;return!1}function J(Q){return Q.toString().substring(2,Q.toString().length-2).replace(/\.\*\?$/,"*")}function X(Q){return Q instanceof Error?Q.stack||Q.message:Q}function Z(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return U.enable(U.load()),U}var common=setup;(function($,I){I.formatArgs=q,I.save=G,I.load=K,I.useColors=U,I.storage=Y(),I.destroy=(()=>{let X=!1;return()=>{X||(X=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),I.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function U(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function q(X){if(X[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+X[0]+(this.useColors?"%c ":" ")+"+"+$.exports.humanize(this.diff),!this.useColors)return;const Z="color: "+this.color;X.splice(1,0,Z,"color: inherit");let Q=0,ee=0;X[0].replace(/%[a-zA-Z%]/g,te=>{te!=="%%"&&(Q++,te==="%c"&&(ee=Q))}),X.splice(ee,0,Z)}I.log=console.debug||console.log||(()=>{});function G(X){try{X?I.storage.setItem("debug",X):I.storage.removeItem("debug")}catch{}}function K(){let X;try{X=I.storage.getItem("debug")}catch{}return!X&&typeof process<"u"&&"env"in process&&(X=process.env.DEBUG),X}function Y(){try{return localStorage}catch{}}$.exports=common(I);const{formatters:J}=$.exports;J.j=function(X){try{return JSON.stringify(X)}catch(Z){return"[UnexpectedJSONParseError]: "+Z.message}}})(browser$1,browser$1.exports);var browserExports$1=browser$1.exports,getBrowserRtc=function $(){if(typeof globalThis>"u")return null;var I={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return I.RTCPeerConnection?I:null},browser={exports:{}},MAX_BYTES=65536,MAX_UINT32=4294967295;function oldBrowser(){throw new Error(`Secure random number generation is not supported by this browser.
1001
- Use Chrome, Firefox or Internet Explorer 11`)}var Buffer$2=safeBufferExports.Buffer,crypto$1=commonjsGlobal.crypto||commonjsGlobal.msCrypto;crypto$1&&crypto$1.getRandomValues?browser.exports=randomBytes:browser.exports=oldBrowser;function randomBytes($,I){if($>MAX_UINT32)throw new RangeError("requested too many random bytes");var U=Buffer$2.allocUnsafe($);if($>0)if($>MAX_BYTES)for(var q=0;q<$;q+=MAX_BYTES)crypto$1.getRandomValues(U.slice(q,q+MAX_BYTES));else crypto$1.getRandomValues(U);return typeof I=="function"?process.nextTick(function(){I(null,U)}):U}var browserExports=browser.exports;/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */let promise;var queueMicrotask_1=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:commonjsGlobal):$=>(promise||(promise=Promise.resolve())).then($).catch(I=>setTimeout(()=>{throw I},0));function assign($,I){for(const U in I)Object.defineProperty($,U,{value:I[U],enumerable:!0,configurable:!0});return $}function createError($,I,U){if(!$||typeof $=="string")throw new TypeError("Please pass an Error to err-code");U||(U={}),typeof I=="object"&&(U=I,I=""),I&&(U.code=I);try{return assign($,U)}catch{U.message=$.message,U.stack=$.stack;const G=function(){};return G.prototype=Object.create(Object.getPrototypeOf($)),assign(new G,U)}}var errCode$1=createError;/*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */const debug=browserExports$1("simple-peer"),getBrowserRTC=getBrowserRtc,randombytes=browserExports,stream$1=readableBrowserExports,queueMicrotask$1=queueMicrotask_1,errCode=errCode$1,{Buffer:Buffer$1}=buffer,MAX_BUFFERED_AMOUNT$1=64*1024,ICECOMPLETE_TIMEOUT=5*1e3,CHANNEL_CLOSING_TIMEOUT=5*1e3;function filterTrickle($){return $.replace(/a=ice-options:trickle\s\n/g,"")}function warn($){console.warn($)}let Peer$1=class Fr extends stream$1.Duplex{constructor(I){if(I=Object.assign({allowHalfOpen:!1},I),super(I),this._id=randombytes(4).toString("hex").slice(0,7),this._debug("new peer %o",I),this.channelName=I.initiator?I.channelName||randombytes(20).toString("hex"):null,this.initiator=I.initiator||!1,this.channelConfig=I.channelConfig||Fr.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},Fr.config,I.config),this.offerOptions=I.offerOptions||{},this.answerOptions=I.answerOptions||{},this.sdpTransform=I.sdpTransform||(U=>U),this.streams=I.streams||(I.stream?[I.stream]:[]),this.trickle=I.trickle!==void 0?I.trickle:!0,this.allowHalfTrickle=I.allowHalfTrickle!==void 0?I.allowHalfTrickle:!1,this.iceCompleteTimeout=I.iceCompleteTimeout||ICECOMPLETE_TIMEOUT,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=I.wrtc&&typeof I.wrtc=="object"?I.wrtc:getBrowserRTC(),!this._wrtc)throw errCode(typeof window>"u"?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(U){this.destroy(errCode(U,"ERR_PC_CONSTRUCTOR"));return}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=U=>{this._onIceCandidate(U)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(U=>{this.destroy(errCode(U,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=U=>{this._setupData(U)},this.streams&&this.streams.forEach(U=>{this.addStream(U)}),this._pc.ontrack=U=>{this._onTrack(U)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof I=="string")try{I=JSON.parse(I)}catch{I={}}this._debug("signal()"),I.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),I.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(I.transceiverRequest.kind,I.transceiverRequest.init)),I.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(I.candidate):this._pendingCandidates.push(I.candidate)),I.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(I)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(U=>{this._addIceCandidate(U)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(U=>{this.destroy(errCode(U,"ERR_SET_REMOTE_DESCRIPTION"))}),!I.sdp&&!I.candidate&&!I.renegotiate&&!I.transceiverRequest&&this.destroy(errCode(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(I){const U=new this._wrtc.RTCIceCandidate(I);this._pc.addIceCandidate(U).catch(q=>{!U.address||U.address.endsWith(".local")?warn("Ignoring unsupported ICE candidate."):this.destroy(errCode(q,"ERR_ADD_ICE_CANDIDATE"))})}send(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(I)}}addTransceiver(I,U){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(I,U),this._needsNegotiation()}catch(q){this.destroy(errCode(q,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:I,init:U}})}}addStream(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),I.getTracks().forEach(U=>{this.addTrack(U,I)})}}addTrack(I,U){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");const q=this._senderMap.get(I)||new Map;let G=q.get(U);if(!G)G=this._pc.addTrack(I,U),q.set(U,G),this._senderMap.set(I,q),this._needsNegotiation();else throw G.removed?errCode(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):errCode(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(I,U,q){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");const G=this._senderMap.get(I),K=G?G.get(q):null;if(!K)throw errCode(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");U&&this._senderMap.set(U,G),K.replaceTrack!=null?K.replaceTrack(U):this.destroy(errCode(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(I,U){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");const q=this._senderMap.get(I),G=q?q.get(U):null;if(!G)throw errCode(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{G.removed=!0,this._pc.removeTrack(G)}catch(K){K.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(G):this.destroy(errCode(K,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),I.getTracks().forEach(U=>{this.removeTrack(U,I)})}}_needsNegotiation(){this._debug("_needsNegotiation"),!this._batchedNegotiation&&(this._batchedNegotiation=!0,queueMicrotask$1(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}destroy(I){this._destroy(I,()=>{})}_destroy(I,U){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",I&&(I.message||I)),queueMicrotask$1(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",I&&(I.message||I)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,I&&this.emit("error",I),this.emit("close"),U()}))}_setupData(I){if(!I.channel)return this.destroy(errCode(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=I.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=MAX_BUFFERED_AMOUNT$1),this.channelName=this._channel.label,this._channel.onmessage=q=>{this._onChannelMessage(q)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=q=>{const G=q.error instanceof Error?q.error:new Error(`Datachannel error: ${q.message} ${q.filename}:${q.lineno}:${q.colno}`);this.destroy(errCode(G,"ERR_DATA_CHANNEL"))};let U=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(U&&this._onChannelClose(),U=!0):U=!1},CHANNEL_CLOSING_TIMEOUT)}_read(){}_write(I,U,q){if(this.destroyed)return q(errCode(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(I)}catch(G){return this.destroy(errCode(G,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT$1?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=q):q(null)}else this._debug("write before connect"),this._chunk=I,this._cb=q}_onFinish(){if(this.destroyed)return;const I=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?I():this.once("connect",I)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(I=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(I.sdp=filterTrickle(I.sdp)),I.sdp=this.sdpTransform(I.sdp);const U=()=>{if(this.destroyed)return;const K=this._pc.localDescription||I;this._debug("signal"),this.emit("signal",{type:K.type,sdp:K.sdp})},q=()=>{this._debug("createOffer success"),!this.destroyed&&(this.trickle||this._iceComplete?U():this.once("_iceComplete",U))},G=K=>{this.destroy(errCode(K,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(I).then(q).catch(G)}).catch(I=>{this.destroy(errCode(I,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(I=>{!I.mid&&I.sender.track&&!I.requested&&(I.requested=!0,this.addTransceiver(I.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(I=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(I.sdp=filterTrickle(I.sdp)),I.sdp=this.sdpTransform(I.sdp);const U=()=>{if(this.destroyed)return;const K=this._pc.localDescription||I;this._debug("signal"),this.emit("signal",{type:K.type,sdp:K.sdp}),this.initiator||this._requestMissingTransceivers()},q=()=>{this.destroyed||(this.trickle||this._iceComplete?U():this.once("_iceComplete",U))},G=K=>{this.destroy(errCode(K,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(I).then(q).catch(G)}).catch(I=>{this.destroy(errCode(I,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(errCode(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;const I=this._pc.iceConnectionState,U=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",I,U),this.emit("iceStateChange",I,U),(I==="connected"||I==="completed")&&(this._pcReady=!0,this._maybeReady()),I==="failed"&&this.destroy(errCode(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),I==="closed"&&this.destroy(errCode(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(I){const U=q=>(Object.prototype.toString.call(q.values)==="[object Array]"&&q.values.forEach(G=>{Object.assign(q,G)}),q);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(q=>{const G=[];q.forEach(K=>{G.push(U(K))}),I(null,G)},q=>I(q)):this._pc.getStats.length>0?this._pc.getStats(q=>{if(this.destroyed)return;const G=[];q.result().forEach(K=>{const Y={};K.names().forEach(J=>{Y[J]=K.stat(J)}),Y.id=K.id,Y.type=K.type,Y.timestamp=K.timestamp,G.push(U(Y))}),I(null,G)},q=>I(q)):I(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const I=()=>{this.destroyed||this.getStats((U,q)=>{if(this.destroyed)return;U&&(q=[]);const G={},K={},Y={};let J=!1;q.forEach(Z=>{(Z.type==="remotecandidate"||Z.type==="remote-candidate")&&(G[Z.id]=Z),(Z.type==="localcandidate"||Z.type==="local-candidate")&&(K[Z.id]=Z),(Z.type==="candidatepair"||Z.type==="candidate-pair")&&(Y[Z.id]=Z)});const X=Z=>{J=!0;let Q=K[Z.localCandidateId];Q&&(Q.ip||Q.address)?(this.localAddress=Q.ip||Q.address,this.localPort=Number(Q.port)):Q&&Q.ipAddress?(this.localAddress=Q.ipAddress,this.localPort=Number(Q.portNumber)):typeof Z.googLocalAddress=="string"&&(Q=Z.googLocalAddress.split(":"),this.localAddress=Q[0],this.localPort=Number(Q[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let ee=G[Z.remoteCandidateId];ee&&(ee.ip||ee.address)?(this.remoteAddress=ee.ip||ee.address,this.remotePort=Number(ee.port)):ee&&ee.ipAddress?(this.remoteAddress=ee.ipAddress,this.remotePort=Number(ee.portNumber)):typeof Z.googRemoteAddress=="string"&&(ee=Z.googRemoteAddress.split(":"),this.remoteAddress=ee[0],this.remotePort=Number(ee[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(q.forEach(Z=>{Z.type==="transport"&&Z.selectedCandidatePairId&&X(Y[Z.selectedCandidatePairId]),(Z.type==="googCandidatePair"&&Z.googActiveConnection==="true"||(Z.type==="candidatepair"||Z.type==="candidate-pair")&&Z.selected)&&X(Z)}),!J&&(!Object.keys(Y).length||Object.keys(K).length)){setTimeout(I,100);return}else this._connecting=!1,this._connected=!0;if(this._chunk){try{this.send(this._chunk)}catch(Q){return this.destroy(errCode(Q,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');const Z=this._cb;this._cb=null,Z(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};I()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT$1||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(I=>{this._pc.removeTrack(I),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(I){this.destroyed||(I.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:I.candidate.candidate,sdpMLineIndex:I.candidate.sdpMLineIndex,sdpMid:I.candidate.sdpMid}}):!I.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),I.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(I){if(this.destroyed)return;let U=I.data;U instanceof ArrayBuffer&&(U=Buffer$1.from(U)),this.push(U)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);const I=this._cb;this._cb=null,I(null)}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(I){this.destroyed||I.streams.forEach(U=>{this._debug("on track"),this.emit("track",I.track,U),this._remoteTracks.push({track:I.track,stream:U}),!this._remoteStreams.some(q=>q.id===U.id)&&(this._remoteStreams.push(U),queueMicrotask$1(()=>{this._debug("on stream"),this.emit("stream",U)}))})}_debug(){const I=[].slice.call(arguments);I[0]="["+this._id+"] "+I[0],debug.apply(null,I)}};Peer$1.WEBRTC_SUPPORT=!!getBrowserRTC(),Peer$1.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},Peer$1.channelConfig={};var simplePeer=Peer$1;const SimplePeerConstructor=getDefaultExportFromCjs(simplePeer);var isProduction=process.env.NODE_ENV==="production",prefix="Invariant failed";function invariant($,I){if(!$){if(isProduction)throw new Error(prefix);var U=typeof I=="function"?I():I,q=U?"".concat(prefix,": ").concat(U):prefix;throw new Error(q)}}var ConnectionState$1;(function($){$[$.INVALID=0]="INVALID",$[$.CONNECTING=1]="CONNECTING",$[$.CONNECTED=2]="CONNECTED",$[$.CLOSED=3]="CLOSED"})(ConnectionState$1||(ConnectionState$1={}));var emitterComponent=Emitter$1;function Emitter$1($){if($)return mixin($)}function mixin($){for(var I in Emitter$1.prototype)$[I]=Emitter$1.prototype[I];return $}Emitter$1.prototype.on=Emitter$1.prototype.addEventListener=function($,I){return this._callbacks=this._callbacks||{},(this._callbacks[$]=this._callbacks[$]||[]).push(I),this},Emitter$1.prototype.once=function($,I){var U=this;this._callbacks=this._callbacks||{};function q(){U.off($,q),I.apply(this,arguments)}return q.fn=I,this.on($,q),this},Emitter$1.prototype.off=Emitter$1.prototype.removeListener=Emitter$1.prototype.removeAllListeners=Emitter$1.prototype.removeEventListener=function($,I){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var U=this._callbacks[$];if(!U)return this;if(arguments.length==1)return delete this._callbacks[$],this;for(var q,G=0;G<U.length;G++)if(q=U[G],q===I||q.fn===I){U.splice(G,1);break}return this},Emitter$1.prototype.emit=function($){this._callbacks=this._callbacks||{};var I=[].slice.call(arguments,1),U=this._callbacks[$];if(U){U=U.slice(0);for(var q=0,G=U.length;q<G;++q)U[q].apply(this,I)}return this},Emitter$1.prototype.listeners=function($){return this._callbacks=this._callbacks||{},this._callbacks[$]||[]},Emitter$1.prototype.hasListeners=function($){return!!this.listeners($).length};var Emitter=emitterComponent;function Stream(){Emitter.call(this)}Stream.prototype=new Emitter;var stream=Stream;Stream.Stream=Stream,Stream.prototype.pipe=function($,I){var U=this;function q(Q){$.writable&&$.write(Q)===!1&&U.pause&&U.pause()}U.on("data",q);function G(){U.readable&&U.resume&&U.resume()}$.on("drain",G),!$._isStdio&&(!I||I.end!==!1)&&(U.on("end",Y),U.on("close",J));var K=!1;function Y(){K||(K=!0,$.end())}function J(){K||(K=!0,typeof $.destroy=="function"&&$.destroy())}function X(Q){if(Z(),!this.hasListeners("error"))throw Q}U.on("error",X),$.on("error",X);function Z(){U.off("data",q),$.off("drain",G),U.off("end",Y),U.off("close",J),U.off("error",X),$.off("error",X),U.off("end",Z),U.off("close",Z),$.off("end",Z),$.off("close",Z)}return U.on("end",Z),U.on("close",Z),$.on("end",Z),$.on("close",Z),$.emit("pipe",U),$};var encode_1=encode,MSB$1=128,REST$1=127,MSBALL=~REST$1,INT=Math.pow(2,31);function encode($,I,U){if(Number.MAX_SAFE_INTEGER&&$>Number.MAX_SAFE_INTEGER)throw encode.bytes=0,new RangeError("Could not encode varint");I=I||[],U=U||0;for(var q=U;$>=INT;)I[U++]=$&255|MSB$1,$/=128;for(;$&MSBALL;)I[U++]=$&255|MSB$1,$>>>=7;return I[U]=$|0,encode.bytes=U-q+1,I}var decode=read,MSB=128,REST=127;function read($,q){var U=0,q=q||0,G=0,K=q,Y,J=$.length;do{if(K>=J||G>49)throw read.bytes=0,new RangeError("Could not decode varint");Y=$[K++],U+=G<28?(Y&REST)<<G:(Y&REST)*Math.pow(2,G),G+=7}while(Y>=MSB);return read.bytes=K-q,U}var N1=Math.pow(2,7),N2=Math.pow(2,14),N3=Math.pow(2,21),N4=Math.pow(2,28),N5=Math.pow(2,35),N6=Math.pow(2,42),N7=Math.pow(2,49),N8=Math.pow(2,56),N9=Math.pow(2,63),length=function($){return $<N1?1:$<N2?2:$<N3?3:$<N4?4:$<N5?5:$<N6?6:$<N7?7:$<N8?8:$<N9?9:10},varint={encode:encode_1,decode,encodingLength:length},__dxlog_file$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/control-extension.ts",HEARTBEAT_RTT_WARN_THRESH=1e4,DEBUG_PRINT_HEARTBEAT=!1,ControlExtension=class{constructor($,I,U){this.opts=$,this.localPeerId=I,this.remotePeerId=U,this._ctx=new Context({onError:q=>{this._extensionContext.close(q)}},{F:__dxlog_file$1,L:30}),this.onExtensionRegistered=new Callback}async registerExtension($){await this._rpc.rpc.Control.registerExtension({name:$})}async onOpen($){this._extensionContext=$,this._rpc=createProtoRpcPeer({requested:{Control:protocols.schema.getService("dxos.mesh.teleport.control.ControlService")},exposed:{Control:protocols.schema.getService("dxos.mesh.teleport.control.ControlService")},handlers:{Control:{registerExtension:async I=>{this.onExtensionRegistered.call(I.name)},heartbeat:async I=>({requestTimestamp:I.requestTimestamp})}},port:await $.createPort("rpc",{contentType:'application/x-protobuf; messageType="dxos.rpc.Message"'}),timeout:this.opts.heartbeatTimeout}),await this._rpc.open(),scheduleTaskInterval(this._ctx,async()=>{const I=new Date;try{const U=await asyncTimeout(this._rpc.rpc.Control.heartbeat({requestTimestamp:I}),this.opts.heartbeatTimeout),q=Date.now();U.requestTimestamp instanceof Date&&q-U.requestTimestamp.getTime()>(HEARTBEAT_RTT_WARN_THRESH<this.opts.heartbeatTimeout?HEARTBEAT_RTT_WARN_THRESH:this.opts.heartbeatTimeout/2)&&log$2.warn(`heartbeat RTT for Teleport > ${HEARTBEAT_RTT_WARN_THRESH/1e3}s`,{rtt:q-U.requestTimestamp.getTime(),localPeerId:this.localPeerId.truncate(),remotePeerId:this.remotePeerId.truncate()},{F:__dxlog_file$1,L:106,S:this,C:(G,K)=>G(...K)})}catch(U){const q=Date.now();if(U instanceof protocols.RpcClosedError){log$2("ignoring RpcClosedError in heartbeat",void 0,{F:__dxlog_file$1,L:125,S:this,C:(G,K)=>G(...K)}),this._extensionContext.close(U);return}U instanceof TimeoutError?(log$2("timeout waiting for heartbeat response",{err:U,delay:q-I.getTime()},{F:__dxlog_file$1,L:130,S:this,C:(G,K)=>G(...K)}),this.opts.onTimeout(U)):(log$2.info("other error waiting for heartbeat response",{err:U,delay:q-I.getTime()},{F:__dxlog_file$1,L:133,S:this,C:(G,K)=>G(...K)}),this.opts.onTimeout(U))}},this.opts.heartbeatInterval)}async onClose($){await this._ctx.dispose(),await this._rpc.close()}async onAbort($){await this._ctx.dispose(),await this._rpc.abort()}},__dxlog_file2$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts",FRAME_LENGTH_SIZE=2,Framer=class{constructor(){this._messageCb=void 0,this._subscribeCb=void 0,this._buffer=void 0,this._sendCallbacks=[],this._bytesSent=0,this._bytesReceived=0,this._writable=!0,this.drain=new Event$1,this._stream=new readableBrowserExports.Duplex({objectMode:!1,read:()=>{this._processResponseQueue()},write:($,I,U)=>{invariant$1(!this._subscribeCb,"Internal Framer bug. Concurrent writes detected.",{F:__dxlog_file2$1,L:40,S:this,A:["!this._subscribeCb","'Internal Framer bug. Concurrent writes detected.'"]}),this._bytesReceived+=$.length,this._buffer&&this._buffer.length>0?this._buffer=export_Buffer.concat([this._buffer,$]):this._buffer=$,this._messageCb?(this._popFrames(),U()):this._subscribeCb=()=>{this._popFrames(),this._subscribeCb=void 0,U()}}}),this.port={send:$=>new Promise(I=>{const U=encodeFrame($);this._bytesSent+=U.length,this._writable=this._stream.push(U),this._writable?I():this._sendCallbacks.push(I)}),subscribe:$=>{var I;return invariant$1(!this._messageCb,"Rpc port already has a message listener.",{F:__dxlog_file2$1,L:79,S:this,A:["!this._messageCb","'Rpc port already has a message listener.'"]}),this._messageCb=$,(I=this._subscribeCb)==null||I.call(this),()=>{this._messageCb=void 0}}}}get stream(){return this._stream}get bytesSent(){return this._bytesSent}get bytesReceived(){return this._bytesReceived}get writable(){return this._writable}_processResponseQueue(){const $=this._sendCallbacks;this._sendCallbacks=[],this._writable=!0,this.drain.emit(),$.forEach(I=>I())}_popFrames(){let $=0;for(;$<this._buffer.length;){const I=decodeFrame(this._buffer,$);if(!I)break;$+=I.bytesConsumed,this._messageCb(I.payload)}$<this._buffer.length?this._buffer=this._buffer.subarray($):this._buffer=void 0}destroy(){this._stream.readableLength>0&&log$2("framer destroyed while there are still read bytes in the buffer.",void 0,{F:__dxlog_file2$1,L:140,S:this,C:($,I)=>$(...I)}),this._stream.writableLength>0&&log$2.warn("framer destroyed while there are still write bytes in the buffer.",void 0,{F:__dxlog_file2$1,L:143,S:this,C:($,I)=>$(...I)}),this._stream.destroy()}},decodeFrame=($,I)=>{if($.length<I+FRAME_LENGTH_SIZE)return;const U=$.readUInt16BE(I),q=FRAME_LENGTH_SIZE+U;return $.length<I+q?void 0:{payload:$.subarray(I+FRAME_LENGTH_SIZE,I+q),bytesConsumed:q}},encodeFrame=$=>{const I=export_Buffer.allocUnsafe(FRAME_LENGTH_SIZE+$.length);return I.writeUInt16BE($.length,0),I.set($,FRAME_LENGTH_SIZE),I},__dxlog_file3$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts",MAX_CHUNK_SIZE=8192,Balancer=class{constructor($){this._sysChannelId=$,this._lastCallerIndex=0,this._channels=[],this._framer=new Framer,this._sendBuffers=new Map,this._receiveBuffers=new Map,this._sending=!1,this.incomingData=new Event$1,this.stream=this._framer.stream,this._channels.push($),this._framer.port.subscribe(this._processIncomingMessage.bind(this))}get bytesSent(){return this._framer.bytesSent}get bytesReceived(){return this._framer.bytesReceived}get buffersCount(){return this._sendBuffers.size}addChannel($){this._channels.push($)}pushData($,I,U){this._enqueueChunk($,I,U),this._sendChunks().catch(q=>log$2.catch(q,void 0,{F:__dxlog_file3$1,L:75,S:this,C:(G,K)=>G(...K)}))}destroy(){this._sendBuffers.size!==0&&log$2.info("destroying balancer with pending calls",void 0,{F:__dxlog_file3$1,L:80,S:this,C:($,I)=>$(...I)}),this._sendBuffers.clear(),this._framer.destroy()}_processIncomingMessage($){const{channelId:I,dataLength:U,chunk:q}=decodeChunk($,G=>!this._receiveBuffers.has(G));if(!this._receiveBuffers.has(I))q.length<U?this._receiveBuffers.set(I,{buffer:export_Buffer.from(q),msgLength:U}):this.incomingData.emit(q);else{const G=this._receiveBuffers.get(I);if(G.buffer=export_Buffer.concat([G.buffer,q]),G.buffer.length<G.msgLength)return;const K=G.buffer;this._receiveBuffers.delete(I),this.incomingData.emit(K)}}_getNextCallerId(){if(this._sendBuffers.has(this._sysChannelId))return this._sysChannelId;const $=this._lastCallerIndex;return this._lastCallerIndex=(this._lastCallerIndex+1)%this._channels.length,this._channels[$]}_enqueueChunk($,I,U){if(!this._channels.includes(U))throw new Error(`Unknown channel ${U}`);this._sendBuffers.has(U)||this._sendBuffers.set(U,[]);const q=this._sendBuffers.get(U),G=[];for(let K=0;K<$.length;K+=MAX_CHUNK_SIZE)G.push($.subarray(K,K+MAX_CHUNK_SIZE));G.forEach((K,Y)=>{const J=encodeChunk({chunk:K,channelId:U,dataLength:Y===0?$.length:void 0});q.push({msg:J,trigger:Y===G.length-1?I:void 0})})}_getNextChunk(){let $;for(;this._sendBuffers.size>0;){const I=this._getNextCallerId(),U=this._sendBuffers.get(I);if(U&&($=U.shift(),!!$))return U.length===0&&this._sendBuffers.delete(I),$}return null}async _sendChunks(){var I,U;if(this._sending)return;this._sending=!0;let $;for($=this._getNextChunk();$;){this._framer.writable||(log$2("PAUSE for drain",void 0,{F:__dxlog_file3$1,L:179,S:this,C:(q,G)=>q(...G)}),await this._framer.drain.waitForCount(1),log$2("RESUME for drain",void 0,{F:__dxlog_file3$1,L:181,S:this,C:(q,G)=>q(...G)}));try{await this._framer.port.send($.msg),(I=$.trigger)==null||I.wake()}catch(q){log$2("Error sending chunk",{err:q},{F:__dxlog_file3$1,L:187,S:this,C:(G,K)=>G(...K)}),(U=$.trigger)==null||U.throw(q)}$=this._getNextChunk()}invariant$1(this._sendBuffers.size===0,"sendBuffers not empty",{F:__dxlog_file3$1,L:192,S:this,A:["this._sendBuffers.size === 0","'sendBuffers not empty'"]}),this._sending=!1}},encodeChunk=({channelId:$,dataLength:I,chunk:U})=>{const q=varint.encodingLength($),G=I?varint.encodingLength(I):0,K=export_Buffer.allocUnsafe(q+G+U.length);return varint.encode($,K),I&&varint.encode(I,K,q),K.set(U,q+G),K},decodeChunk=($,I)=>{const U=varint.decode($);let q,G=varint.decode.bytes;I(U)&&(q=varint.decode($,G),G+=varint.decode.bytes);const K=$.subarray(G);return{channelId:U,dataLength:q,chunk:K}};function _ts_decorate$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file4$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/muxer.ts",Command=protocols.schema.getCodecForType("dxos.mesh.muxer.Command"),DEFAULT_SEND_COMMAND_TIMEOUT=6e4,DESTROY_COMMAND_SEND_TIMEOUT=5e3,STATS_INTERVAL=1e3,MAX_SAFE_FRAME_SIZE=1e6,SYSTEM_CHANNEL_ID=0,GRACEFUL_CLOSE_TIMEOUT=3e3,Muxer=class{constructor(){this._balancer=new Balancer(SYSTEM_CHANNEL_ID),this._channelsByLocalId=new Map,this._channelsByTag=new Map,this._ctx=new Context(void 0,{F:__dxlog_file4$1,L:107}),this._nextId=1,this._closing=!1,this._destroying=!1,this._disposed=!1,this._lastStats=void 0,this._lastChannelStats=new Map,this.afterClosed=new Event$1,this.statsUpdated=new Event$1,this.stream=this._balancer.stream,this._balancer.incomingData.on(async $=>{await this._handleCommand(Command.decode($))})}setSessionId($){this._sessionId=$}get sessionIdString(){return this._sessionId?this._sessionId.truncate():"none"}async createStream($,I={}){const U=this._getOrCreateStream({tag:$,contentType:I.contentType});invariant$1(!U.push,`Channel already open: ${$}`,{F:__dxlog_file4$1,L:151,S:this,A:["!channel.push","`Channel already open: ${tag}`"]});const q=new readableBrowserExports.Duplex({write:(G,K,Y)=>{this._sendData(U,G).then(()=>Y()).catch(Y)},read:()=>{}});U.push=G=>{U.stats.bytesReceived+=G.length,q.push(G)},U.destroy=G=>{G&&q.listeners("error").length>0?q.destroy(G):q.destroy()};try{await this._sendCommand({openChannel:{id:U.id,tag:U.tag,contentType:U.contentType}},SYSTEM_CHANNEL_ID)}catch(G){throw this._destroyChannel(U,G),G}return q}async createPort($,I={}){const U=this._getOrCreateStream({tag:$,contentType:I.contentType});invariant$1(!U.push,`Channel already open: ${$}`,{F:__dxlog_file4$1,L:211,S:this,A:["!channel.push","`Channel already open: ${tag}`"]});let q=[],G;U.push=Y=>{U.stats.bytesReceived+=Y.length,G?G(Y):q.push(Y)};const K={send:async(Y,J)=>{await this._sendData(U,Y,J)},subscribe:Y=>{invariant$1(!G,"Only one subscriber is allowed",{F:__dxlog_file4$1,L:233,S:this,A:["!callback","'Only one subscriber is allowed'"]}),G=Y;for(const J of q)Y(J);q=[]}};try{await this._sendCommand({openChannel:{id:U.id,tag:U.tag,contentType:U.contentType}},SYSTEM_CHANNEL_ID)}catch(Y){throw this._destroyChannel(U,Y),Y}return K}async close($){if(this._destroying){log$2("already destroying, ignoring graceful close request",void 0,{F:__dxlog_file4$1,L:266,S:this,C:(I,U)=>I(...U)});return}if(this._closing){log$2("already closing, ignoring graceful close request",void 0,{F:__dxlog_file4$1,L:270,S:this,C:(I,U)=>I(...U)});return}this._closing=!0,await this._sendCommand({close:{error:$==null?void 0:$.message}},SYSTEM_CHANNEL_ID,DESTROY_COMMAND_SEND_TIMEOUT).catch(async I=>{log$2("error sending close command",{err:I},{F:__dxlog_file4$1,L:285,S:this,C:(U,q)=>U(...q)}),await this._dispose(I)}),await asyncTimeout(this._dispose($),GRACEFUL_CLOSE_TIMEOUT,new protocols.TimeoutError("gracefully closing muxer"))}async destroy($){if(this._destroying){log$2("already destroying, ignoring destroy request",void 0,{F:__dxlog_file4$1,L:298,S:this,C:(I,U)=>I(...U)});return}this._destroying=!0,this._ctx.dispose(),this._closing?(log$2("destroy cancelling graceful close",void 0,{F:__dxlog_file4$1,L:304,S:this,C:(I,U)=>I(...U)}),this._closing=!1):await this._sendCommand({close:{error:$==null?void 0:$.message}},SYSTEM_CHANNEL_ID).catch(async I=>{log$2("error sending courtesy close command",{err:I},{F:__dxlog_file4$1,L:317,S:this,C:(U,q)=>U(...q)})}),this._dispose($).catch(I=>{log$2("error disposing after destroy",{err:I},{F:__dxlog_file4$1,L:322,S:this,C:(U,q)=>U(...q)})})}async _dispose($){var I;if(this._disposed){log$2("already destroyed, ignoring dispose request",void 0,{F:__dxlog_file4$1,L:330,S:this,C:(U,q)=>U(...q)});return}this._ctx.dispose(),await this._balancer.destroy();for(const U of this._channelsByTag.values())(I=U.destroy)==null||I.call(U,$);this._disposed=!0,await this._emitStats(),this.afterClosed.emit($),this._channelsByLocalId.clear(),this._channelsByTag.clear()}async _handleCommand($){if(this._disposed){log$2.warn("Received command after disposed",{cmd:$},{F:__dxlog_file4$1,L:353,S:this,C:(I,U)=>I(...U)});return}if($.close){this._closing?log$2("received close from peer, already closing",void 0,{F:__dxlog_file4$1,L:362,S:this,C:(I,U)=>I(...U)}):(log$2("received peer close, initiating my own graceful close",void 0,{F:__dxlog_file4$1,L:359,S:this,C:(I,U)=>I(...U)}),await this.close(new Error("received peer close")));return}if($.openChannel){const I=this._getOrCreateStream({tag:$.openChannel.tag,contentType:$.openChannel.contentType});I.remoteId=$.openChannel.id;for(const U of I.buffer)await this._sendCommand({data:{channelId:I.remoteId,data:U}},I.id);I.buffer=[]}else if($.data){const I=this._channelsByLocalId.get($.data.channelId)??failUndefined();if(!I.push){log$2.warn("Received data for channel before it was opened",{tag:I.tag},{F:__dxlog_file4$1,L:391,S:this,C:(U,q)=>U(...q)});return}I.push($.data.data)}}async _sendCommand($,I=-1,U=DEFAULT_SEND_COMMAND_TIMEOUT){if(!this._disposed)try{const q=new Trigger;this._balancer.pushData(Command.encode($),q,I),await q.wait({timeout:U})}catch(q){await this.destroy(q)}}_getOrCreateStream($){this._channelsByTag.size===0&&scheduleTaskInterval(this._ctx,async()=>this._emitStats(),STATS_INTERVAL);let I=this._channelsByTag.get($.tag);return I||(I={id:this._nextId++,remoteId:null,tag:$.tag,contentType:$.contentType,buffer:[],push:null,destroy:null,stats:{bytesSent:0,bytesReceived:0}},this._channelsByTag.set(I.tag,I),this._channelsByLocalId.set(I.id,I),this._balancer.addChannel(I.id)),I}async _sendData($,I,U){if(I.length>MAX_SAFE_FRAME_SIZE&&log$2.warn("frame size exceeds maximum safe value",{size:I.length,threshold:MAX_SAFE_FRAME_SIZE},{F:__dxlog_file4$1,L:441,S:this,C:(q,G)=>q(...G)}),$.stats.bytesSent+=I.length,$.remoteId===null){$.buffer.push(I);return}await this._sendCommand({data:{channelId:$.remoteId,data:I}},$.id,U)}_destroyChannel($,I){$.destroy&&$.destroy(I),this._channelsByLocalId.delete($.id),this._channelsByTag.delete($.tag)}async _emitStats(){if(this._disposed||this._destroying){if(!this._lastStats)return;const K=this._lastStats;this._lastStats=void 0,K.readBufferSize=0,K.writeBufferSize=0;for(const Y of K.channels)Y.writeBufferSize=0;this.statsUpdated.emit(K),this._lastChannelStats.clear();return}const $=this._balancer.bytesSent,I=this._balancer.bytesReceived,U=Date.now(),q=this._lastStats?(U-this._lastStats.timestamp)/1e3:0,G=(K,Y)=>Y?{bytesSentRate:q?(K.bytesSent-Y.bytesSent)/q:void 0,bytesReceivedRate:q?(K.bytesReceived-Y.bytesReceived)/q:void 0}:{};this._lastStats={timestamp:U,channels:Array.from(this._channelsByTag.values()).map(K=>{const Y={id:K.id,tag:K.tag,contentType:K.contentType,writeBufferSize:K.buffer.length,bytesSent:K.stats.bytesSent,bytesReceived:K.stats.bytesReceived,...G(K.stats,this._lastChannelStats.get(K.id))};return this._lastChannelStats.set(K.id,Y),Y}),bytesSent:$,bytesReceived:I,...G({bytesSent:$,bytesReceived:I},this._lastStats),readBufferSize:this._balancer.stream.readableLength,writeBufferSize:this._balancer.stream.writableLength},this.statsUpdated.emit(this._lastStats)}};_ts_decorate$1([logInfo],Muxer.prototype,"sessionIdString",null);function _ts_decorate2$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file5$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts",CONTROL_HEARTBEAT_INTERVAL=1e4,CONTROL_HEARTBEAT_TIMEOUT=6e4,Teleport=class{constructor({initiator:$,localPeerId:I,remotePeerId:U,...q}){this._ctx=new Context({onError:G=>{this.destroy(G).catch(()=>{log$2.error("Error during destroy",G,{F:__dxlog_file5$1,L:41,S:this,C:(K,Y)=>K(...Y)})})}},{F:__dxlog_file5$1,L:38}),this._muxer=new Muxer,this._extensions=new Map,this._remoteExtensions=new Set,this._open=!1,this._destroying=!1,this._aborting=!1,invariant$1(typeof $=="boolean",void 0,{F:__dxlog_file5$1,L:62,S:this,A:["typeof initiator === 'boolean'",""]}),invariant$1(PublicKey.isPublicKey(I),void 0,{F:__dxlog_file5$1,L:63,S:this,A:["PublicKey.isPublicKey(localPeerId)",""]}),invariant$1(PublicKey.isPublicKey(U),void 0,{F:__dxlog_file5$1,L:64,S:this,A:["PublicKey.isPublicKey(remotePeerId)",""]}),this.initiator=$,this.localPeerId=I,this.remotePeerId=U,this._control=new ControlExtension({heartbeatInterval:q.controlHeartbeatInterval??CONTROL_HEARTBEAT_INTERVAL,heartbeatTimeout:q.controlHeartbeatTimeout??CONTROL_HEARTBEAT_TIMEOUT,onTimeout:()=>{this._destroying||this._aborting||(log$2.info("abort teleport due to onTimeout in ControlExtension",void 0,{F:__dxlog_file5$1,L:77,S:this,C:(G,K)=>G(...K)}),this.abort(new protocols.TimeoutError("control extension")).catch(G=>log$2.catch(G,void 0,{F:__dxlog_file5$1,L:78,S:this,C:(K,Y)=>K(...Y)})))}},this.localPeerId,this.remotePeerId),this._control.onExtensionRegistered.set(async G=>{if(log$2("remote extension",{name:G},{F:__dxlog_file5$1,L:86,S:this,C:(K,Y)=>K(...Y)}),invariant$1(!this._remoteExtensions.has(G),"Remote extension already exists",{F:__dxlog_file5$1,L:87,S:this,A:["!this._remoteExtensions.has(name)","'Remote extension already exists'"]}),this._remoteExtensions.add(G),this._extensions.has(G))try{await this._openExtension(G)}catch(K){await this.destroy(K)}}),this._muxer.stream.on("close",async()=>{if(this._destroying||this._aborting){log$2("destroy teleport due to muxer stream close, skipping due to already destroying/aborting",void 0,{F:__dxlog_file5$1,L:103,S:this,C:(G,K)=>G(...K)});return}await this.destroy()}),this._muxer.stream.on("error",async G=>{await this.destroy(G)}),this._muxer.statsUpdated.on(G=>{log$2.trace("dxos.mesh.teleport.stats",{localPeerId:I,remotePeerId:U,bytesSent:G.bytesSent,bytesSentRate:G.bytesSentRate,bytesReceived:G.bytesReceived,bytesReceivedRate:G.bytesReceivedRate,channels:G.channels},{F:__dxlog_file5$1,L:116,S:this,C:(K,Y)=>K(...Y)})})}get isOpen(){return this._open}get sessionIdString(){return this._sessionId?this._sessionId.truncate():"none"}get stream(){return this._muxer.stream}get stats(){return this._muxer.statsUpdated}async open($=PublicKey.random()){this._sessionId=$,log$2("open",void 0,{F:__dxlog_file5$1,L:150,S:this,C:(I,U)=>I(...U)}),this._setExtension("dxos.mesh.teleport.control",this._control),await this._openExtension("dxos.mesh.teleport.control"),this._open=!0,this._muxer.setSessionId($)}async close($){await this.destroy($)}async abort($){if(!(this._aborting||this._destroying)&&(this._aborting=!0,this._open=!1,!this._ctx.disposed)){await this._ctx.dispose();for(const I of this._extensions.values())try{await I.onAbort($)}catch(U){log$2.catch(U,void 0,{F:__dxlog_file5$1,L:180,S:this,C:(q,G)=>q(...G)})}await this._muxer.destroy($)}}async destroy($){if(!(this._destroying||this._aborting)&&(log$2("destroying teleport...",{extensionsCount:this._extensions.size},{F:__dxlog_file5$1,L:193,S:this,C:(I,U)=>I(...U)}),this._destroying=!0,this._open=!1,!this._ctx.disposed)){await this._ctx.dispose();for(const I of this._extensions.values())try{log$2("destroying extension",{name:I.constructor.name},{F:__dxlog_file5$1,L:205,S:this,C:(U,q)=>U(...q)}),await I.onClose($),log$2("destroyed extension",{name:I.constructor.name},{F:__dxlog_file5$1,L:207,S:this,C:(U,q)=>U(...q)})}catch(U){log$2.catch(U,void 0,{F:__dxlog_file5$1,L:209,S:this,C:(q,G)=>q(...G)})}await this._muxer.close(),log$2("teleport destroyed",void 0,{F:__dxlog_file5$1,L:214,S:this,C:(I,U)=>I(...U)})}}addExtension($,I){if(!this._open)throw new Error("Not open");log$2("addExtension",{name:$},{F:__dxlog_file5$1,L:222,S:this,C:(U,q)=>U(...q)}),this._setExtension($,I),scheduleTask(this._ctx,async()=>{try{await this._control.registerExtension($)}catch(U){if(U instanceof protocols.RpcClosedError)return;throw U}}),this._remoteExtensions.has($)&&scheduleTask(this._ctx,async()=>{await this._openExtension($)})}_setExtension($,I){invariant$1(!$.includes("/"),"Invalid extension name",{F:__dxlog_file5$1,L:246,S:this,A:["!extensionName.includes('/')","'Invalid extension name'"]}),invariant$1(!this._extensions.has($),"Extension already exists",{F:__dxlog_file5$1,L:247,S:this,A:["!this._extensions.has(extensionName)","'Extension already exists'"]}),this._extensions.set($,I)}async _openExtension($){log$2("open extension",{extensionName:$},{F:__dxlog_file5$1,L:252,S:this,C:(q,G)=>q(...G)});const I=this._extensions.get($)??failUndefined(),U={initiator:this.initiator,localPeerId:this.localPeerId,remotePeerId:this.remotePeerId,createPort:async(q,G)=>(invariant$1(!q.includes("/"),"Invalid channel name",{F:__dxlog_file5$1,L:260,S:this,A:["!channelName.includes('/')","'Invalid channel name'"]}),this._muxer.createPort(`${$}/${q}`,G)),createStream:async(q,G)=>(invariant$1(!q.includes("/"),"Invalid channel name",{F:__dxlog_file5$1,L:264,S:this,A:["!channelName.includes('/')","'Invalid channel name'"]}),this._muxer.createStream(`${$}/${q}`,G)),close:q=>{runInContextAsync(this._ctx,async()=>{await this.close(q)})}};await I.onOpen(U),log$2("extension opened",{extensionName:$},{F:__dxlog_file5$1,L:275,S:this,C:(q,G)=>q(...G)})}};_ts_decorate2$1([logInfo],Teleport.prototype,"sessionIdString",null),_ts_decorate2$1([synchronized],Teleport.prototype,"abort",null),_ts_decorate2$1([synchronized],Teleport.prototype,"destroy",null);var __require=($=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(I,U)=>(typeof require<"u"?require:I)[U]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});function _ts_decorate($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection.ts",STARTING_SIGNALLING_DELAY=10,TRANSPORT_CONNECTION_TIMEOUT=1e4,TRANSPORT_STATS_INTERVAL=5e3,MAX_SIGNALLING_DELAY=300,ConnectionState;(function($){$.CREATED="CREATED",$.INITIAL="INITIAL",$.CONNECTING="CONNECTING",$.CONNECTED="CONNECTED",$.CLOSING="CLOSING",$.CLOSED="CLOSED",$.ABORTING="ABORTING",$.ABORTED="ABORTED"})(ConnectionState||(ConnectionState={}));var Connection=class{constructor($,I,U,q,G,K,Y,J,X){this.topic=$,this.ownId=I,this.remoteId=U,this.sessionId=q,this.initiator=G,this._signalMessaging=K,this._protocol=Y,this._transportFactory=J,this._callbacks=X,this._ctx=new Context(void 0,{F:__dxlog_file,L:100}),this.connectedTimeoutContext=new Context(void 0,{F:__dxlog_file,L:101}),this._protocolClosed=new Trigger,this._transportClosed=new Trigger,this._state="CREATED",this._incomingSignalBuffer=[],this._outgoingSignalBuffer=[],this.stateChanged=new Event$1,this.errors=new ErrorStream,this._instanceId=PublicKey.random().toHex(),this.transportStats=new Event$1,this._signalSendTask=new DeferredTask(this._ctx,async()=>{await this._flushSignalBuffer()}),this._signallingDelay=STARTING_SIGNALLING_DELAY,log$2.trace("dxos.mesh.connection.construct",{sessionId:this.sessionId,topic:this.topic,localPeerId:this.ownId,remotePeerId:this.remoteId,initiator:this.initiator},{F:__dxlog_file,L:137,S:this,C:(Z,Q)=>Z(...Q)})}get sessionIdString(){return this.sessionId.truncate()}get state(){return this._state}get transport(){return this._transport}get protocol(){return this._protocol}async openConnection(){invariant$1(this._state==="INITIAL","Invalid state.",{F:__dxlog_file,L:167,S:this,A:["this._state === ConnectionState.INITIAL","'Invalid state.'"]}),log$2.trace("dxos.mesh.connection.open-connection",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file,L:168,S:this,C:($,I)=>$(...I)}),log$2.trace("dxos.mesh.connection.open",{sessionId:this.sessionId,topic:this.topic,localPeerId:this.ownId,remotePeerId:this.remoteId,initiator:this.initiator},{F:__dxlog_file,L:169,S:this,C:($,I)=>$(...I)}),this._changeState("CONNECTING"),this._protocol.open(this.sessionId).catch($=>{this.errors.raise($)}),this._protocol.stream.on("close",()=>{log$2("protocol stream closed",void 0,{F:__dxlog_file,L:186,S:this,C:($,I)=>$(...I)}),this._protocolClosed.wake(),this.close(new protocols.ProtocolError("protocol stream closed")).catch($=>this.errors.raise($))}),scheduleTask(this.connectedTimeoutContext,async()=>{log$2.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT/1e3}s for transport to connect, aborting`,void 0,{F:__dxlog_file,L:194,S:this,C:($,I)=>$(...I)}),await this.abort(new protocols.TimeoutError(`${TRANSPORT_CONNECTION_TIMEOUT/1e3}s for transport to connect`)).catch($=>this.errors.raise($))},TRANSPORT_CONNECTION_TIMEOUT),invariant$1(!this._transport,void 0,{F:__dxlog_file,L:202,S:this,A:["!this._transport",""]}),this._transport=this._transportFactory.createTransport({initiator:this.initiator,stream:this._protocol.stream,sendSignal:async $=>this._sendSignal($),sessionId:this.sessionId}),await this._transport.open(),this._transport.connected.once(async()=>{var $,I;this._changeState("CONNECTED"),await this.connectedTimeoutContext.dispose(),(I=($=this._callbacks)==null?void 0:$.onConnected)==null||I.call($),scheduleTaskInterval(this._ctx,async()=>this._emitTransportStats(),TRANSPORT_STATS_INTERVAL)}),this._transport.closed.once(()=>{this._transport=void 0,this._transportClosed.wake(),log$2("abort triggered by transport close",void 0,{F:__dxlog_file,L:223,S:this,C:($,I)=>$(...I)}),this.abort().catch($=>this.errors.raise($))}),this._transport.errors.handle(async $=>{log$2("transport error:",{err:$},{F:__dxlog_file,L:228,S:this,C:(I,U)=>I(...U)}),this.closeReason||(this.closeReason=$==null?void 0:$.message),$ instanceof protocols.ConnectionResetError?(log$2.info("aborting due to transport ConnectionResetError",void 0,{F:__dxlog_file,L:235,S:this,C:(I,U)=>I(...U)}),this.abort().catch(I=>this.errors.raise(I))):$ instanceof protocols.ConnectivityError?(log$2.info("aborting due to transport ConnectivityError",void 0,{F:__dxlog_file,L:238,S:this,C:(I,U)=>I(...U)}),this.abort().catch(I=>this.errors.raise(I))):$ instanceof protocols.UnknownProtocolError&&log$2.warn("unsure what to do with UnknownProtocolError, will keep on truckin",{err:$},{F:__dxlog_file,L:241,S:this,C:(I,U)=>I(...U)}),this._state!=="CLOSED"&&this._state!=="CLOSING"&&(await this.connectedTimeoutContext.dispose(),this.errors.raise($))});for(const $ of this._incomingSignalBuffer)this._transport.onSignal($);this._incomingSignalBuffer=[],log$2.trace("dxos.mesh.connection.open-connection",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file,L:257,S:this,C:($,I)=>$(...I)})}async abort($){var I,U;if(log$2("aborting...",{err:$},{F:__dxlog_file,L:264,S:this,C:(q,G)=>q(...G)}),this._state==="CLOSED"||this._state==="ABORTED"){log$2(`abort ignored: already ${this._state}`,this.closeReason,{F:__dxlog_file,L:266,S:this,C:(q,G)=>q(...G)});return}await this.connectedTimeoutContext.dispose(),this._changeState("ABORTING"),this.closeReason||(this.closeReason=$==null?void 0:$.message),await this._ctx.dispose();try{await this._closeProtocol({abort:!0})}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:282,S:this,C:(G,K)=>G(...K)})}try{await this._closeTransport()}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:289,S:this,C:(G,K)=>G(...K)})}try{(U=(I=this._callbacks)==null?void 0:I.onClosed)==null||U.call(I,$)}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:295,S:this,C:(G,K)=>G(...K)})}this._changeState("ABORTED")}async close($){var q,G;if(this.closeReason?this.closeReason+=`; ${$==null?void 0:$.message}`:this.closeReason=$==null?void 0:$.message,this._state==="CLOSED"||this._state==="ABORTING"||this._state==="ABORTED")return;const I=this._state;this._changeState("CLOSING"),await this.connectedTimeoutContext.dispose(),await this._ctx.dispose(),log$2("closing...",{peerId:this.ownId},{F:__dxlog_file,L:320,S:this,C:(K,Y)=>K(...Y)});let U=!1;I!=="CONNECTED"&&(log$2(`graceful close requested when we were in ${I} state? aborting`,void 0,{F:__dxlog_file,L:324,S:this,C:(K,Y)=>K(...Y)}),U=!0);try{await this._closeProtocol({abort:U})}catch(K){log$2.catch(K,void 0,{F:__dxlog_file,L:330,S:this,C:(Y,J)=>Y(...J)})}try{await this._closeTransport()}catch(K){log$2.catch(K,void 0,{F:__dxlog_file,L:336,S:this,C:(Y,J)=>Y(...J)})}log$2("closed",{peerId:this.ownId},{F:__dxlog_file,L:339,S:this,C:(K,Y)=>K(...Y)}),this._changeState("CLOSED"),(G=(q=this._callbacks)==null?void 0:q.onClosed)==null||G.call(q,$)}async _closeProtocol($){log$2("closing protocol",$,{F:__dxlog_file,L:345,S:this,C:(I,U)=>I(...U)}),await Promise.race([$!=null&&$.abort?this._protocol.abort():this._protocol.close(),this._protocolClosed.wait()]),log$2("protocol closed",$,{F:__dxlog_file,L:347,S:this,C:(I,U)=>I(...U)})}async _closeTransport(){var $;log$2("closing transport",void 0,{F:__dxlog_file,L:351,S:this,C:(I,U)=>I(...U)}),await Promise.race([($=this._transport)==null?void 0:$.close(),this._transportClosed.wait()]),log$2("transport closed",void 0,{F:__dxlog_file,L:353,S:this,C:(I,U)=>I(...U)})}_sendSignal($){this._outgoingSignalBuffer.push($),this._signalSendTask.schedule()}async _flushSignalBuffer(){var $;if(this._outgoingSignalBuffer.length!==0)try{await cancelWithContext(this._ctx,sleep(this._signallingDelay)),this._signallingDelay=Math.min(this._signallingDelay*2,MAX_SIGNALLING_DELAY);const I=[...this._outgoingSignalBuffer];this._outgoingSignalBuffer.length=0,await this._signalMessaging.signal({author:this.ownId,recipient:this.remoteId,sessionId:this.sessionId,topic:this.topic,data:{signalBatch:{signals:I}}})}catch(I){if(I instanceof protocols.CancelledError||I instanceof Error&&(($=I.message)!=null&&$.includes("CANCELLED")))return;log$2.info("signal message failed to deliver",{err:I},{F:__dxlog_file,L:389,S:this,C:(U,q)=>U(...q)}),await this.close(new protocols.ConnectivityError("signal message failed to deliver",I))}}async signal($){var U,q;if(invariant$1($.sessionId,void 0,{F:__dxlog_file,L:398,S:this,A:["msg.sessionId",""]}),!$.sessionId.equals(this.sessionId)){log$2("dropping signal for incorrect session id",void 0,{F:__dxlog_file,L:400,S:this,C:(G,K)=>G(...K)});return}invariant$1($.data.signal||$.data.signalBatch,void 0,{F:__dxlog_file,L:403,S:this,A:["msg.data.signal || msg.data.signalBatch",""]}),invariant$1((U=$.author)==null?void 0:U.equals(this.remoteId),void 0,{F:__dxlog_file,L:404,S:this,A:["msg.author?.equals(this.remoteId)",""]}),invariant$1((q=$.recipient)==null?void 0:q.equals(this.ownId),void 0,{F:__dxlog_file,L:405,S:this,A:["msg.recipient?.equals(this.ownId)",""]});const I=$.data.signalBatch?$.data.signalBatch.signals??[]:[$.data.signal];for(const G of I)G&&(["CREATED","INITIAL"].includes(this.state)?(log$2("buffered signal",{peerId:this.ownId,remoteId:this.remoteId,msg:$.data},{F:__dxlog_file,L:414,S:this,C:(K,Y)=>K(...Y)}),this._incomingSignalBuffer.push(G)):(invariant$1(this._transport,"Connection not ready to accept signals.",{F:__dxlog_file,L:417,S:this,A:["this._transport","'Connection not ready to accept signals.'"]}),log$2("received signal",{peerId:this.ownId,remoteId:this.remoteId,msg:$.data},{F:__dxlog_file,L:418,S:this,C:(K,Y)=>K(...Y)}),await this._transport.onSignal(G)))}initiate(){this._changeState("INITIAL")}_changeState($){log$2("stateChanged",{from:this._state,to:$,peerId:this.ownId},{F:__dxlog_file,L:429,S:this,C:(I,U)=>I(...U)}),invariant$1($!==this._state,"Already in this state.",{F:__dxlog_file,L:430,S:this,A:["state !== this._state","'Already in this state.'"]}),this._state=$,this.stateChanged.emit($)}async _emitTransportStats(){var I;const $=await((I=this.transport)==null?void 0:I.getStats());$&&this.transportStats.emit($)}};_ts_decorate([logInfo],Connection.prototype,"sessionIdString",null),_ts_decorate([synchronized],Connection.prototype,"abort",null),_ts_decorate([synchronized],Connection.prototype,"close",null);var __dxlog_file2="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/signal/swarm-messenger.ts",SwarmMessage=protocols.schema.getCodecForType("dxos.mesh.swarm.SwarmMessage"),SwarmMessenger=class{constructor({sendMessage:$,onSignal:I,onOffer:U,topic:q}){this._ctx=new Context(void 0,{F:__dxlog_file2,L:33}),this._offerRecords=new ComplexMap(G=>G.toHex()),this._sendMessage=$,this._onSignal=I,this._onOffer=U,this._topic=q}async receiveMessage({author:$,recipient:I,payload:U}){var G,K,Y,J;if(U.type_url!=="dxos.mesh.swarm.SwarmMessage")return;const q=SwarmMessage.decode(U.value);this._topic.equals(q.topic)&&(log$2("received",{from:$,to:I,msg:q},{F:__dxlog_file2,L:69,S:this,C:(X,Z)=>X(...Z)}),(G=q.data)!=null&&G.offer?await this._handleOffer({author:$,recipient:I,message:q}):(K=q.data)!=null&&K.answer?await this._resolveAnswers(q):(Y=q.data)!=null&&Y.signal?await this._handleSignal({author:$,recipient:I,message:q}):(J=q.data)!=null&&J.signalBatch?await this._handleSignal({author:$,recipient:I,message:q}):log$2.warn("unknown message",{message:q},{F:__dxlog_file2,L:80,S:this,C:(X,Z)=>X(...Z)}))}async signal($){var I,U;invariant$1(((I=$.data)==null?void 0:I.signal)||((U=$.data)==null?void 0:U.signalBatch),"Invalid message",{F:__dxlog_file2,L:85,S:this,A:["message.data?.signal || message.data?.signalBatch","'Invalid message'"]}),await this._sendReliableMessage({author:$.author,recipient:$.recipient,message:$})}async offer($){const I={...$,messageId:PublicKey.random()};return new Promise((U,q)=>{this._offerRecords.set(I.messageId,{resolve:U}),this._sendReliableMessage({author:$.author,recipient:$.recipient,message:I}).catch(G=>q(G))})}async _sendReliableMessage({author:$,recipient:I,message:U}){const q={...U,messageId:U.messageId??PublicKey.random()};log$2("sending",{from:$,to:I,msg:q},{F:__dxlog_file2,L:123,S:this,C:(G,K)=>G(...K)}),await this._sendMessage({author:$,recipient:I,payload:{type_url:"dxos.mesh.swarm.SwarmMessage",value:SwarmMessage.encode(q)}})}async _resolveAnswers($){var U,q,G;invariant$1((q=(U=$.data)==null?void 0:U.answer)==null?void 0:q.offerMessageId,"No offerMessageId",{F:__dxlog_file2,L:135,S:this,A:["message.data?.answer?.offerMessageId","'No offerMessageId'"]});const I=this._offerRecords.get($.data.answer.offerMessageId);I&&(this._offerRecords.delete($.data.answer.offerMessageId),invariant$1((G=$.data)==null?void 0:G.answer,"No answer",{F:__dxlog_file2,L:139,S:this,A:["message.data?.answer","'No answer'"]}),log$2("resolving",{answer:$.data.answer},{F:__dxlog_file2,L:140,S:this,C:(K,Y)=>K(...Y)}),I.resolve($.data.answer))}async _handleOffer({author:$,recipient:I,message:U}){invariant$1(U.data.offer,"No offer",{F:__dxlog_file2,L:154,S:this,A:["message.data.offer","'No offer'"]});const q={author:$,recipient:I,...U,data:{offer:U.data.offer}},G=await this._onOffer(q);G.offerMessageId=U.messageId;try{await this._sendReliableMessage({author:I,recipient:$,message:{topic:U.topic,sessionId:U.sessionId,data:{answer:G}}})}catch(K){K instanceof protocols.TimeoutError?log$2.info("timeout sending answer to offer",{err:K},{F:__dxlog_file2,L:175,S:this,C:(Y,J)=>Y(...J)}):log$2.info("error sending answer to offer",{err:K},{F:__dxlog_file2,L:177,S:this,C:(Y,J)=>Y(...J)})}}async _handleSignal({author:$,recipient:I,message:U}){invariant$1(U.messageId,void 0,{F:__dxlog_file2,L:191,S:this,A:["message.messageId",""]}),invariant$1(U.data.signal||U.data.signalBatch,"Invalid message",{F:__dxlog_file2,L:192,S:this,A:["message.data.signal || message.data.signalBatch","'Invalid message'"]});const q={author:$,recipient:I,...U,data:{signal:U.data.signal,signalBatch:U.data.signalBatch}};await this._onSignal(q)}};function _ts_decorate2($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file3="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/peer.ts",ConnectionDisplacedError=class extends protocols.SystemError{constructor(){super("Connection displaced by remote initiator.")}},CONNECTION_COUNTS_STABLE_AFTER=5e3,Peer=class{constructor($,I,U,q,G,K,Y,J){this.id=$,this.topic=I,this.localPeerId=U,this._signalMessaging=q,this._protocolProvider=G,this._transportFactory=K,this._connectionLimiter=Y,this._callbacks=J,this._availableAfter=0,this.availableToConnect=!0,this._ctx=new Context(void 0,{F:__dxlog_file3,L:79}),this.advertizing=!1,this.initiating=!1,this.connectionDisplaced=new Event$1}async onOffer($){var U;const I=$.author;if(this.connection&&![ConnectionState.CREATED,ConnectionState.INITIAL,ConnectionState.CONNECTING].includes(this.connection.state))return log$2.info(`received offer when connection already in ${this.connection.state} state`,void 0,{F:__dxlog_file3,L:114,S:this,C:(q,G)=>q(...G)}),{accept:!1};if(this.connection||this.initiating)if(I.toHex()<this.localPeerId.toHex())log$2("close local connection",{localPeerId:this.id,topic:this.topic,remotePeerId:this.localPeerId,sessionId:(U=this.connection)==null?void 0:U.sessionId},{F:__dxlog_file3,L:123,S:this,C:(q,G)=>q(...G)}),this.connection&&await this.closeConnection(new ConnectionDisplacedError);else return{accept:!1};if(await this._callbacks.onOffer(I)&&!this.connection){invariant$1($.sessionId,void 0,{F:__dxlog_file3,L:143,S:this,A:["message.sessionId",""]});const q=this._createConnection(!1,$.sessionId);try{await this._connectionLimiter.connecting($.sessionId),q.initiate(),await q.openConnection()}catch(G){G instanceof protocols.CancelledError||log$2.info("connection error",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,err:G},{F:__dxlog_file3,L:153,S:this,C:(K,Y)=>K(...Y)}),await this.closeConnection(G)}return{accept:!0}}return{accept:!1}}async initiateConnection(){invariant$1(!this.initiating,"Initiation in progress.",{F:__dxlog_file3,L:170,S:this,A:["!this.initiating","'Initiation in progress.'"]}),invariant$1(!this.connection,"Already connected.",{F:__dxlog_file3,L:171,S:this,A:["!this.connection","'Already connected.'"]});const $=PublicKey.random();log$2("initiating...",{ownPeerId:this.localPeerId,topic:this.topic,remotePeerId:this.id,sessionId:$},{F:__dxlog_file3,L:173,S:this,C:(q,G)=>q(...G)});const I=this._createConnection(!0,$);this.initiating=!0;let U;try{if(await this._connectionLimiter.connecting($),I.initiate(),U=await this._signalMessaging.offer({author:this.localPeerId,recipient:this.id,sessionId:$,topic:this.topic,data:{offer:{}}}),log$2("received",{answer:U,topic:this.topic,ownId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:190,S:this,C:(q,G)=>q(...G)}),I.state!==ConnectionState.INITIAL){log$2("ignoring response",void 0,{F:__dxlog_file3,L:192,S:this,C:(q,G)=>q(...G)});return}}catch(q){throw log$2("initiation error: send offer",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:196,S:this,C:(G,K)=>G(...K)}),await I.abort(q),q}finally{this.initiating=!1}try{if(!U.accept){this._callbacks.onRejected();return}}catch(q){throw log$2("initiation error: accept answer",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:209,S:this,C:(G,K)=>G(...K)}),await I.abort(q),q}finally{this.initiating=!1}try{log$2("opening connection as initiator",void 0,{F:__dxlog_file3,L:222,S:this,C:(q,G)=>q(...G)}),await I.openConnection(),this._callbacks.onAccepted()}catch(q){throw log$2("initiation error: open connection",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:226,S:this,C:(G,K)=>G(...K)}),log$2.warn("closing connection due to unhandled error on openConnection",{err:q},{F:__dxlog_file3,L:233,S:this,C:(G,K)=>G(...K)}),await this.closeConnection(q),q}finally{this.initiating=!1}}_createConnection($,I){var q;log$2("creating connection",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$,sessionId:I},{F:__dxlog_file3,L:247,S:this,C:(G,K)=>G(...K)}),invariant$1(!this.connection,"Already connected.",{F:__dxlog_file3,L:254,S:this,A:["!this.connection","'Already connected.'"]});const U=new Connection(this.topic,this.localPeerId,this.id,I,$,this._signalMessaging,this._protocolProvider({initiator:$,localPeerId:this.localPeerId,remotePeerId:this.id,topic:this.topic}),this._transportFactory,{onConnected:()=>{this.availableToConnect=!0,this._lastConnectionTime=Date.now(),this._callbacks.onConnected(),this._connectionLimiter.doneConnecting(I),log$2.trace("dxos.mesh.connection.connected",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$},{F:__dxlog_file3,L:273,S:this,C:(G,K)=>G(...K)})},onClosed:G=>{log$2("connection closed",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$},{F:__dxlog_file3,L:282,S:this,C:(K,Y)=>K(...Y)}),this._connectionLimiter.doneConnecting(I),invariant$1(this.connection===U,"Connection mismatch (race condition).",{F:__dxlog_file3,L:287,S:this,A:["this.connection === connection","'Connection mismatch (race condition).'"]}),log$2.trace("dxos.mesh.connection.closed",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$},{F:__dxlog_file3,L:289,S:this,C:(K,Y)=>K(...Y)}),G instanceof ConnectionDisplacedError?this.connectionDisplaced.emit(this.connection):(this._lastConnectionTime&&this._lastConnectionTime+CONNECTION_COUNTS_STABLE_AFTER<Date.now()?this._availableAfter=0:(this.availableToConnect=!1,this._availableAfter=increaseInterval(this._availableAfter)),this._callbacks.onDisconnected(),scheduleTask(this._connectionCtx,()=>{this.availableToConnect=!0,this._callbacks.onPeerAvailable()},this._availableAfter)),this.connection=void 0}});return this._callbacks.onInitiated(U),(q=this._connectionCtx)==null||q.dispose(),this._connectionCtx=this._ctx.derive(),U.errors.handle(G=>{log$2.info("connection error, closing",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$,err:G},{F:__dxlog_file3,L:329,S:this,C:(K,Y)=>K(...Y)}),log$2.trace("dxos.mesh.connection.error",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$,err:G},{F:__dxlog_file3,L:336,S:this,C:(K,Y)=>K(...Y)}),this.closeConnection(G)}),this.connection=U,U}async closeConnection($){if(!this.connection)return;const I=this.connection;log$2("closing...",{peerId:this.id,sessionId:I.sessionId},{F:__dxlog_file3,L:361,S:this,C:(U,q)=>U(...q)}),await I.close($),log$2("closed",{peerId:this.id,sessionId:I.sessionId},{F:__dxlog_file3,L:367,S:this,C:(U,q)=>U(...q)})}async onSignal($){if(!this.connection){log$2("dropping signal message for non-existent connection",{message:$},{F:__dxlog_file3,L:372,S:this,C:(I,U)=>I(...U)});return}await this.connection.signal($)}async safeDestroy($){var I;await this._ctx.dispose(),log$2("Destroying peer",{peerId:this.id,topic:this.topic},{F:__dxlog_file3,L:382,S:this,C:(U,q)=>U(...q)}),await((I=this==null?void 0:this.connection)==null?void 0:I.close($))}};_ts_decorate2([synchronized],Peer.prototype,"safeDestroy",null);var increaseInterval=$=>$===0?50:$<500?500:$<1e3?1e3:$<5e3?5e3:1e4;function _ts_decorate3($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file4="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm.ts",INITIATION_DELAY=100,getClassName=$=>Object.getPrototypeOf($).constructor.name,Swarm=class{constructor($,I,U,q,G,K,Y,J,X=INITIATION_DELAY){this._topic=$,this._ownPeerId=I,this._topology=U,this._protocolProvider=q,this._messenger=G,this._transportFactory=K,this._label=Y,this._connectionLimiter=J,this._initiationDelay=X,this._ctx=new Context(void 0,{F:__dxlog_file4,L:39}),this._listeningHandle=void 0,this._peers=new ComplexMap(PublicKey.hash),this._instanceId=PublicKey.random().toHex(),this.connectionAdded=new Event$1,this.disconnected=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,log$2.trace("dxos.mesh.swarm.constructor",protocols.trace.begin({id:this._instanceId,data:{topic:this._topic.toHex(),peerId:this._ownPeerId.toHex()}}),{F:__dxlog_file4,L:89,S:this,C:(Z,Q)=>Z(...Q)}),log$2("creating swarm",{peerId:I},{F:__dxlog_file4,L:93,S:this,C:(Z,Q)=>Z(...Q)}),U.init(this._getSwarmController()),this._swarmMessenger=new SwarmMessenger({sendMessage:async Z=>await this._messenger.sendMessage(Z),onSignal:async Z=>await this.onSignal(Z),onOffer:async Z=>await this.onOffer(Z),topic:this._topic}),log$2.trace("dxos.mesh.swarm.constructor",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file4,L:102,S:this,C:(Z,Q)=>Z(...Q)})}get connections(){return Array.from(this._peers.values()).map($=>$.connection).filter(isNotNullOrUndefined)}get ownPeerId(){return this._ownPeerId}get label(){return this._label}get topic(){return this._topic}async open(){invariant$1(!this._listeningHandle,void 0,{F:__dxlog_file4,L:129,S:this,A:["!this._listeningHandle",""]}),this._listeningHandle=await this._messenger.listen({peerId:this._ownPeerId,payloadType:"dxos.mesh.swarm.SwarmMessage",onMessage:async $=>{await this._swarmMessenger.receiveMessage($).catch(I=>log$2.info("Error while receiving message",{err:I},{F:__dxlog_file4,L:137,S:this,C:(U,q)=>U(...q)}))}})}async destroy(){var $;log$2("destroying...",void 0,{F:__dxlog_file4,L:143,S:this,C:(I,U)=>I(...U)}),await(($=this._listeningHandle)==null?void 0:$.unsubscribe()),this._listeningHandle=void 0,await this._ctx.dispose(),await this._topology.destroy(),await Promise.all(Array.from(this._peers.keys()).map(I=>this._destroyPeer(I,"swarm destroyed"))),log$2("destroyed",void 0,{F:__dxlog_file4,L:150,S:this,C:(I,U)=>I(...U)})}async setTopology($){invariant$1(!this._ctx.disposed,"Swarm is offline",{F:__dxlog_file4,L:154,S:this,A:["!this._ctx.disposed","'Swarm is offline'"]}),$!==this._topology&&(log$2("setting topology",{previous:getClassName(this._topology),topology:getClassName($)},{F:__dxlog_file4,L:158,S:this,C:(I,U)=>I(...U)}),await this._topology.destroy(),this._topology=$,this._topology.init(this._getSwarmController()),this._topology.update())}onSwarmEvent($){var I;if(log$2("swarm event",{swarmEvent:$},{F:__dxlog_file4,L:171,S:this,C:(U,q)=>U(...q)}),this._ctx.disposed){log$2("swarm event ignored for disposed swarm",void 0,{F:__dxlog_file4,L:174,S:this,C:(U,q)=>U(...q)});return}if($.peerAvailable){const U=PublicKey.from($.peerAvailable.peer);if(!U.equals(this._ownPeerId)){log$2("new peer",{peerId:U},{F:__dxlog_file4,L:181,S:this,C:(G,K)=>G(...K)});const q=this._getOrCreatePeer(U);q.advertizing=!0}}else if($.peerLeft){const U=this._peers.get(PublicKey.from($.peerLeft.peer));U?(U.advertizing=!1,((I=U.connection)==null?void 0:I.state)!==ConnectionState.CONNECTED&&this._destroyPeer(U.id,"peer left").catch(q=>log$2.catch(q,void 0,{F:__dxlog_file4,L:191,S:this,C:(G,K)=>G(...K)}))):log$2("received peerLeft but no peer found",{peer:$.peerLeft.peer},{F:__dxlog_file4,L:194,S:this,C:(q,G)=>q(...G)})}this._topology.update()}async onOffer($){var q,G;if(log$2("offer",{message:$},{F:__dxlog_file4,L:203,S:this,C:(K,Y)=>K(...Y)}),this._ctx.disposed)return log$2("ignored for disposed swarm",void 0,{F:__dxlog_file4,L:205,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};if(invariant$1($.author,void 0,{F:__dxlog_file4,L:210,S:this,A:["message.author",""]}),!((q=$.recipient)!=null&&q.equals(this._ownPeerId)))return log$2("rejecting offer with incorrect peerId",{message:$},{F:__dxlog_file4,L:212,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};if(!((G=$.topic)!=null&&G.equals(this._topic)))return log$2("rejecting offer with incorrect topic",{message:$},{F:__dxlog_file4,L:216,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};const U=await this._getOrCreatePeer($.author).onOffer($);return this._topology.update(),U}async onSignal($){var U,q;if(log$2("signal",{message:$},{F:__dxlog_file4,L:227,S:this,C:(G,K)=>G(...K)}),this._ctx.disposed){log$2.info("ignored for offline swarm",void 0,{F:__dxlog_file4,L:229,S:this,C:(G,K)=>G(...K)});return}invariant$1((U=$.recipient)==null?void 0:U.equals(this._ownPeerId),`Invalid signal peer id expected=${this.ownPeerId}, actual=${$.recipient}`,{F:__dxlog_file4,L:232,S:this,A:["message.recipient?.equals(this._ownPeerId)","`Invalid signal peer id expected=${this.ownPeerId}, actual=${message.recipient}`"]}),invariant$1((q=$.topic)==null?void 0:q.equals(this._topic),void 0,{F:__dxlog_file4,L:236,S:this,A:["message.topic?.equals(this._topic)",""]}),invariant$1($.author,void 0,{F:__dxlog_file4,L:237,S:this,A:["message.author",""]}),await this._getOrCreatePeer($.author).onSignal($)}async goOffline(){await this._ctx.dispose(),await Promise.all([...this._peers.keys()].map($=>this._destroyPeer($,"goOffline")))}async goOnline(){this._ctx=new Context(void 0,{F:__dxlog_file4,L:253})}_getOrCreatePeer($){let I=this._peers.get($);return I||(I=new Peer($,this._topic,this._ownPeerId,this._swarmMessenger,this._protocolProvider,this._transportFactory,this._connectionLimiter,{onInitiated:U=>{this.connectionAdded.emit(U)},onConnected:()=>{this.connected.emit($)},onDisconnected:async()=>{this._isUnregistered(I)||(I.advertizing||await this._destroyPeer(I.id,"peer disconnected"),this.disconnected.emit($),this._topology.update())},onRejected:()=>{this._isUnregistered(I)||(log$2("peer rejected connection",{peerId:$},{F:__dxlog_file4,L:289,S:this,C:(U,q)=>U(...q)}),this._destroyPeer($,"peer rejected connection"))},onAccepted:()=>{this._topology.update()},onOffer:U=>this._topology.onOffer(U),onPeerAvailable:()=>{this._topology.update()}}),this._peers.set($,I)),I}async _destroyPeer($,I){const U=this._peers.get($);invariant$1(U,void 0,{F:__dxlog_file4,L:312,S:this,A:["peer",""]}),this._peers.delete($),await U.safeDestroy(new Error(I))}_getSwarmController(){return{getState:()=>({ownPeerId:this._ownPeerId,connected:Array.from(this._peers.values()).filter($=>$.connection).map($=>$.id),candidates:Array.from(this._peers.values()).filter($=>!$.connection&&$.advertizing&&$.availableToConnect).map($=>$.id),allPeers:Array.from(this._peers.values()).map($=>$.id)}),connect:$=>{this._ctx.disposed||scheduleTask(this._ctx,async()=>{try{await this._initiateConnection($)}catch(I){log$2("initiation error",I,{F:__dxlog_file4,L:339,S:this,C:(U,q)=>U(...q)})}})},disconnect:async $=>{this._ctx.disposed||scheduleTask(this._ctx,async()=>{await this._closeConnection($),this._topology.update()})}}}async _initiateConnection($){const I=this._ctx,U=this._getOrCreatePeer($);if($.toHex()<this._ownPeerId.toHex()&&(log$2("initiation delay",{remoteId:$},{F:__dxlog_file4,L:367,S:this,C:(q,G)=>q(...G)}),await sleep(this._initiationDelay)),!I.disposed){if(this._isUnregistered(U))throw new Error("Peer left during initiation delay");U.connection||(log$2("initiating connection...",{remoteId:$},{F:__dxlog_file4,L:383,S:this,C:(q,G)=>q(...G)}),await U.initiateConnection(),this._topology.update(),log$2("initiated",{remoteId:$},{F:__dxlog_file4,L:386,S:this,C:(q,G)=>q(...G)}))}}async _closeConnection($){const I=this._peers.get($);I&&await I.closeConnection()}_isUnregistered($){return!$||this._peers.get($.id)!==$}};_ts_decorate3([logInfo],Swarm.prototype,"_instanceId",void 0),_ts_decorate3([logInfo],Swarm.prototype,"ownPeerId",null),_ts_decorate3([logInfo],Swarm.prototype,"topic",null),_ts_decorate3([synchronized],Swarm.prototype,"onSwarmEvent",null),_ts_decorate3([synchronized],Swarm.prototype,"onOffer",null),_ts_decorate3([synchronized],Swarm.prototype,"goOffline",null),_ts_decorate3([synchronized],Swarm.prototype,"goOnline",null);var __dxlog_file5="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts",SwarmMapper=class{get peers(){return Array.from(this._peers.values())}constructor($){this._swarm=$,this._subscriptions=new EventSubscriptions,this._connectionSubscriptions=new ComplexMap(PublicKey.hash),this._peers=new ComplexMap(PublicKey.hash),this.mapUpdated=new Event$1,this._subscriptions.add($.connectionAdded.on(I=>{this._update(),this._connectionSubscriptions.set(I.remoteId,I.stateChanged.on(()=>{this._update()}))})),this._subscriptions.add($.disconnected.on(I=>{var U;(U=this._connectionSubscriptions.get(I))==null||U(),this._connectionSubscriptions.delete(I),this._update()})),this._update()}_update(){log$2("updating swarm",void 0,{F:__dxlog_file5,L:72,S:this,C:($,I)=>$(...I)}),this._peers.clear(),this._peers.set(this._swarm.ownPeerId,{id:this._swarm.ownPeerId,state:"ME",connections:[]});for(const $ of this._swarm.connections)this._peers.set($.remoteId,{id:$.remoteId,state:$.state,connections:[this._swarm.ownPeerId]});log$2("graph changed",{directConnections:this._swarm.connections.length,totalPeersInSwarm:this._peers.size},{F:__dxlog_file5,L:113,S:this,C:($,I)=>$(...I)}),this.mapUpdated.emit(Array.from(this._peers.values()))}destroy(){Array.from(this._connectionSubscriptions.values()).forEach($=>$()),this._subscriptions.clear()}},__dxlog_file6="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection-limiter.ts",MAX_CONCURRENT_INITIATING_CONNECTIONS=50,ConnectionLimiter=class{constructor({maxConcurrentInitConnections:$=MAX_CONCURRENT_INITIATING_CONNECTIONS}={}){this._ctx=new Context(void 0,{F:__dxlog_file6,L:23}),this._waitingPromises=new ComplexMap(PublicKey.hash),this.resolveWaitingPromises=new DeferredTask(this._ctx,async()=>{Array.from(this._waitingPromises.values()).slice(0,this._maxConcurrentInitConnections).forEach(({resolve:I})=>{I()})}),this._maxConcurrentInitConnections=$}async connecting($){invariant$1(!this._waitingPromises.has($),"Peer is already waiting for connection",{F:__dxlog_file6,L:48,S:this,A:["!this._waitingPromises.has(sessionId)","'Peer is already waiting for connection'"]}),log$2("waiting",{sessionId:$},{F:__dxlog_file6,L:49,S:this,C:(I,U)=>I(...U)}),await new Promise((I,U)=>{this._waitingPromises.set($,{resolve:I,reject:U}),this.resolveWaitingPromises.schedule()}),log$2("allow",{sessionId:$},{F:__dxlog_file6,L:57,S:this,C:(I,U)=>I(...U)})}doneConnecting($){log$2("done",{sessionId:$},{F:__dxlog_file6,L:64,S:this,C:(I,U)=>I(...U)}),this._waitingPromises.has($)&&(this._waitingPromises.get($).reject(new protocols.CancelledError),this._waitingPromises.delete($),this.resolveWaitingPromises.schedule())}},CONNECTION_GC_THRESHOLD=1e3*60*15,EventType;(function($){$.CONNECTION_STATE_CHANGED="CONNECTION_STATE_CHANGED",$.PROTOCOL_ERROR="PROTOCOL_ERROR",$.PROTOCOL_EXTENSIONS_INITIALIZED="PROTOCOL_EXTENSIONS_INITIALIZED",$.PROTOCOL_EXTENSIONS_HANDSHAKE="PROTOCOL_EXTENSIONS_HANDSHAKE",$.PROTOCOL_HANDSHAKE="PROTOCOL_HANDSHAKE"})(EventType||(EventType={}));var ConnectionLog=class{constructor(){this._swarms=new ComplexMap(PublicKey.hash),this.update=new Event$1}getSwarmInfo($){return this._swarms.get($)??raise$2(new Error(`Swarm not found: ${$}`))}get swarms(){return Array.from(this._swarms.values())}joinedSwarm($){const I={id:PublicKey.from($._instanceId),topic:$.topic,isActive:!0,label:$.label,connections:[]};this._swarms.set(PublicKey.from($._instanceId),I),this.update.emit(),$.connectionAdded.on(U=>{var G,K,Y;const q={state:ConnectionState.CREATED,closeReason:U.closeReason,remotePeerId:U.remoteId,sessionId:U.sessionId,transport:U.transport&&Object.getPrototypeOf(U.transport).constructor.name,protocolExtensions:[],events:[],lastUpdate:new Date};I.connections.push(q),this.update.emit(),U.stateChanged.on(async J=>{var X;if(q.state=J,q.closeReason=U.closeReason,q.lastUpdate=new Date,q.events.push({type:"CONNECTION_STATE_CHANGED",newState:J}),J===ConnectionState.CONNECTED){const Z=await((X=U.transport)==null?void 0:X.getDetails());q.transportDetails=Z}this.update.emit()}),(K=(G=U.protocol)==null?void 0:G.stats)==null||K.on(J=>{q.readBufferSize=J.readBufferSize,q.writeBufferSize=J.writeBufferSize,q.streams=J.channels,q.lastUpdate=new Date,this.update.emit()}),(Y=U.transportStats)==null||Y.on(J=>{q.transportBytesSent=J.bytesSent,q.transportBytesReceived=J.bytesReceived,q.transportPacketsSent=J.packetsSent,q.transportPacketsReceived=J.packetsReceived}),gcSwarm(I)})}leftSwarm($){this.getSwarmInfo(PublicKey.from($._instanceId)).isActive=!1,this.update.emit()}},gcSwarm=$=>{var I;$.connections=(I=$.connections)==null?void 0:I.filter(U=>U.lastUpdate?Date.now()-U.lastUpdate.getTime()<CONNECTION_GC_THRESHOLD:!0)};function _ts_decorate4($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file7="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/network-manager.ts",SwarmNetworkManager=class{constructor({transportFactory:$,signalManager:I,log:U}){this._swarms=new ComplexMap(PublicKey.hash),this._mappers=new ComplexMap(PublicKey.hash),this._instanceId=PublicKey.random().toHex(),this._connectionState=ConnectionState$2.ONLINE,this.connectionStateChanged=new Event$1,this.topicsUpdated=new Event$1,this._transportFactory=$,this._signalManager=I,this._signalManager.swarmEvent.on(({topic:q,swarmEvent:G})=>{var K;return(K=this._swarms.get(q))==null?void 0:K.onSwarmEvent(G)}),this._messenger=new Messenger({signalManager:this._signalManager}),this._signalConnection={join:q=>this._signalManager.join(q),leave:q=>this._signalManager.leave(q)},this._connectionLimiter=new ConnectionLimiter,U&&(this._connectionLog=new ConnectionLog)}get connectionLog(){return this._connectionLog}get connectionState(){return this._connectionState}get topics(){return Array.from(this._swarms.keys())}getSwarmMap($){return this._mappers.get($)}getSwarm($){return this._swarms.get($)}async open(){log$2.trace("dxos.mesh.network-manager.open",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file7,L:126,S:this,C:($,I)=>$(...I)}),await this._messenger.open(),await this._signalManager.open(),log$2.trace("dxos.mesh.network-manager.open",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file7,L:129,S:this,C:($,I)=>$(...I)})}async close(){for(const $ of this._swarms.keys())await this.leaveSwarm($).catch(I=>{log$2(I,void 0,{F:__dxlog_file7,L:135,S:this,C:(U,q)=>U(...q)})});await this._messenger.close(),await this._signalManager.close()}async joinSwarm({topic:$,peerId:I,topology:U,protocolProvider:q,label:G}){var Y;if(invariant$1(PublicKey.isPublicKey($),void 0,{F:__dxlog_file7,L:154,S:this,A:["PublicKey.isPublicKey(topic)",""]}),invariant$1(PublicKey.isPublicKey(I),void 0,{F:__dxlog_file7,L:155,S:this,A:["PublicKey.isPublicKey(peerId)",""]}),invariant$1(U,void 0,{F:__dxlog_file7,L:156,S:this,A:["topology",""]}),invariant$1(typeof q=="function",void 0,{F:__dxlog_file7,L:157,S:this,A:["typeof protocol === 'function'",""]}),this._swarms.has($))throw new Error(`Already connected to swarm: ${PublicKey.from($)}`);log$2("joining",{topic:PublicKey.from($),peerId:I,topology:U.toString()},{F:__dxlog_file7,L:162,S:this,C:(J,X)=>J(...X)});const K=new Swarm($,I,U,q,this._messenger,this._transportFactory,G,this._connectionLimiter);return K.errors.handle(J=>{log$2("swarm error",{error:J},{F:__dxlog_file7,L:175,S:this,C:(X,Z)=>X(...Z)})}),this._swarms.set($,K),this._mappers.set($,new SwarmMapper(K)),await K.open(),this._signalConnection.join({topic:$,peerId:I}).catch(J=>log$2.catch(J,void 0,{F:__dxlog_file7,L:184,S:this,C:(X,Z)=>X(...Z)})),this.topicsUpdated.emit(),(Y=this._connectionLog)==null||Y.joinedSwarm(K),log$2("joined",{topic:PublicKey.from($),count:this._swarms.size},{F:__dxlog_file7,L:188,S:this,C:(J,X)=>J(...X)}),{close:()=>this.leaveSwarm($)}}async leaveSwarm($){var q;if(!this._swarms.has($))return;log$2("leaving",{topic:PublicKey.from($)},{F:__dxlog_file7,L:205,S:this,C:(G,K)=>G(...K)});const I=this._swarms.get($);await this._signalConnection.leave({topic:$,peerId:I.ownPeerId}),this._mappers.get($).destroy(),this._mappers.delete($),(q=this._connectionLog)==null||q.leftSwarm(I),await I.destroy(),this._swarms.delete($),this.topicsUpdated.emit(),log$2("left",{topic:PublicKey.from($),count:this._swarms.size},{F:__dxlog_file7,L:219,S:this,C:(G,K)=>G(...K)})}async setConnectionState($){if($!==this._connectionState){switch($){case ConnectionState$2.OFFLINE:{this._connectionState=$,await Promise.all([...this._swarms.values()].map(I=>I.goOffline())),await this._messenger.close(),await this._signalManager.close();break}case ConnectionState$2.ONLINE:{this._connectionState=$,this._messenger.open(),await Promise.all([...this._swarms.values()].map(I=>I.goOnline())),await this._signalManager.open();break}}this.connectionStateChanged.emit(this._connectionState)}}};_ts_decorate4([synchronized],SwarmNetworkManager.prototype,"joinSwarm",null),_ts_decorate4([synchronized],SwarmNetworkManager.prototype,"leaveSwarm",null);function _ts_decorate5($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file11="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/memory-transport.ts",MEMORY_TRANSPORT_DELAY=1,createStreamDelay=$=>new readableBrowserExports.Transform({objectMode:!0,transform:(I,U,q)=>{setTimeout(()=>q(null,I),$)}}),MemoryTransport=(Zn=class{constructor(I){this._options=I,this._instanceId=PublicKey.random(),this._remote=new Trigger,this._outgoingDelay=createStreamDelay(MEMORY_TRANSPORT_DELAY),this._incomingDelay=createStreamDelay(MEMORY_TRANSPORT_DELAY),this._closed=!1,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,invariant$1(!Zn._connections.has(this._instanceId),"Duplicate memory connection",{F:__dxlog_file11,L:64,S:this,A:["!MemoryTransport._connections.has(this._instanceId)","'Duplicate memory connection'"]}),Zn._connections.set(this._instanceId,this)}get isOpen(){return!this._closed}async open(){if(log$2("opening...",void 0,{F:__dxlog_file11,L:74,S:this,C:(I,U)=>I(...U)}),this._options.initiator){log$2("sending signal",void 0,{F:__dxlog_file11,L:78,S:this,C:(I,U)=>I(...U)});try{await this._options.sendSignal({payload:{transportId:this._instanceId.toHex()}})}catch(I){this._closed||this.errors.raise(toError(I))}}else this._remote.wait({timeout:this._options.timeout??1e3}).then(I=>{if(!this._closed){if(this._remoteInstanceId=I,this._remoteConnection=Zn._connections.get(this._remoteInstanceId),!this._remoteConnection){this._closed=!0,this.closed.emit();return}invariant$1(!this._remoteConnection._remoteConnection,`Remote already connected: ${this._remoteInstanceId}`,{F:__dxlog_file11,L:104,S:this,A:["!this._remoteConnection._remoteConnection","`Remote already connected: ${this._remoteInstanceId}`"]}),this._remoteConnection._remoteConnection=this,this._remoteConnection._remoteInstanceId=this._instanceId,log$2("connected",void 0,{F:__dxlog_file11,L:108,S:this,C:(U,q)=>U(...q)}),this._options.stream.pipe(this._outgoingDelay).pipe(this._remoteConnection._options.stream).pipe(this._incomingDelay).pipe(this._options.stream),this.connected.emit(),this._remoteConnection.connected.emit()}}).catch(I=>{this._closed||this.errors.raise(I)})}async close(){log$2("closing...",void 0,{F:__dxlog_file11,L:129,S:this,C:(I,U)=>I(...U)}),this._closed=!0,Zn._connections.delete(this._instanceId),this._remoteConnection&&(this._remoteConnection._closed=!0,Zn._connections.delete(this._remoteInstanceId),this._options.stream.unpipe(this._incomingDelay),this._incomingDelay.unpipe(this._remoteConnection._options.stream),this._remoteConnection._options.stream.unpipe(this._outgoingDelay),this._outgoingDelay.unpipe(this._options.stream),this._options.stream.unpipe(this._outgoingDelay),this._remoteConnection.closed.emit(),this._remoteConnection._remoteConnection=void 0,this._remoteConnection=void 0),this.closed.emit(),log$2("closed",void 0,{F:__dxlog_file11,L:157,S:this,C:(I,U)=>I(...U)})}async onSignal({payload:I}){if(log$2("received signal",{payload:I},{F:__dxlog_file11,L:161,S:this,C:(q,G)=>q(...G)}),!(I!=null&&I.transportId))return;const U=I.transportId;if(U){const q=PublicKey.fromHex(U);this._remote.wake(q)}}async getDetails(){return this._instanceId.toHex()}async getStats(){return{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0}}},Zn._connections=new ComplexMap(PublicKey.hash),Zn);_ts_decorate5([logInfo],MemoryTransport.prototype,"_instanceId",void 0),_ts_decorate5([logInfo],MemoryTransport.prototype,"_remoteInstanceId",void 0);var toError=$=>$ instanceof Error?$:new Error(String($)),TransportKind;(function($){$.SIMPLE_PEER="SIMPLE_PEER",$.SIMPLE_PEER_PROXY="SIMPLE_PEER_PROXY",$.LIBDATACHANNEL="LIBDATACHANNEL",$.MEMORY="MEMORY",$.TCP="TCP"})(TransportKind||(TransportKind={}));var wrtc=null;try{wrtc=__require("@koush/wrtc")}catch{}var __dxlog_file12="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts",SimplePeerTransport=class{get isOpen(){return this._piped&&!this._closed}constructor($){this._params=$,this._closed=!1,this._piped=!1,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,this._instanceId=PublicKey.random().toHex(),log$2.trace("dxos.mesh.webrtc-transport.constructor",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file12,L:50,S:this,C:(I,U)=>I(...U)}),log$2("created connection",$,{F:__dxlog_file12,L:51,S:this,C:(I,U)=>I(...U)}),this._peer=new SimplePeerConstructor({channelName:"dxos.mesh.transport",initiator:this._params.initiator,wrtc:SimplePeerConstructor.WEBRTC_SUPPORT?void 0:wrtc??raise$2(new Error("wrtc not available")),config:this._params.webrtcConfig}),this._peer.on("signal",async I=>{log$2("signal",I,{F:__dxlog_file12,L:60,S:this,C:(U,q)=>U(...q)}),await this._params.sendSignal({payload:{data:I}})}),this._peer.on("connect",()=>{log$2("connected",void 0,{F:__dxlog_file12,L:65,S:this,C:(I,U)=>I(...U)}),this._params.stream.pipe(this._peer).pipe(this._params.stream),this._piped=!0,this.connected.emit()}),this._peer.on("close",async()=>{log$2("closed",void 0,{F:__dxlog_file12,L:72,S:this,C:(I,U)=>I(...U)}),await this.close()}),this._peer.on("error",async I=>{var U,q;if(typeof RTCError<"u"&&I instanceof RTCError)I.errorDetail==="sctp-failure"?this.errors.raise(new protocols.ConnectionResetError("sctp-failure from RTCError",I)):(log$2.info("unknown RTCError",{err:I},{F:__dxlog_file12,L:83,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new protocols.UnknownProtocolError("unknown RTCError",I)));else if("code"in I)switch(log$2.info("simple-peer error",I,{F:__dxlog_file12,L:88,S:this,C:(G,K)=>G(...K)}),I.code){case"ERR_WEBRTC_SUPPORT":this.errors.raise(new protocols.ProtocolError("WebRTC not supported",I));break;case"ERR_SIGNALING":this.errors.raise(new protocols.ConnectivityError("signaling failure",I));break;case"ERR_ICE_CONNECTION_FAILURE":case"ERR_DATA_CHANNEL":case"ERR_CONNECTION_FAILURE":this.errors.raise(new protocols.ConnectivityError("unknown communication failure",I));break;case"ERR_CREATE_OFFER":case"ERR_CREATE_ANSWER":case"ERR_SET_LOCAL_DESCRIPTION":case"ERR_SET_REMOTE_DESCRIPTION":case"ERR_ADD_ICE_CANDIDATE":this.errors.raise(new protocols.UnknownProtocolError("unknown simple-peer library failure",I));break;default:this.errors.raise(new Error("unknown simple-peer error"));break}else log$2.info("unknown peer connection error",I,{F:__dxlog_file12,L:114,S:this,C:(G,K)=>G(...K)}),this.errors.raise(I);try{typeof((q=(U=this._peer)==null?void 0:U._pc)==null?void 0:q.getStats)=="function"&&this._peer._pc.getStats().then(G=>{log$2.info("report after webrtc error",{config:this._params.webrtcConfig,stats:Object.fromEntries(G.entries())},{F:__dxlog_file12,L:122,S:this,C:(K,Y)=>K(...Y)})})}catch(G){log$2.catch(G,void 0,{F:__dxlog_file12,L:129,S:this,C:(K,Y)=>K(...Y)})}await this.close()}),log$2.trace("dxos.mesh.webrtc-transport.constructor",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file12,L:135,S:this,C:(I,U)=>I(...U)})}async getStats(){const $=await this._getStats();return $?{bytesSent:$.transport.bytesSent,bytesReceived:$.transport.bytesReceived,packetsSent:$.transport.packetsSent,packetsReceived:$.transport.packetsReceived,rawStats:$.raw}:{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rawStats:{}}}async _getStats(){var $,I;return typeof((I=($=this._peer)==null?void 0:$._pc)==null?void 0:I.getStats)!="function"?null:await this._peer._pc.getStats().then(U=>{const q=Array.from(U.entries()),G=q.filter(X=>X[1].type==="transport")[0][1],K=q.filter(X=>X[0]===G.selectedCandidatePairId);let Y,J;return K.length>0&&(Y=K[0][1],J=q.filter(X=>X[0]===Y.remoteCandidateId)[0][1]),{datachannel:q.filter(X=>X[1].type==="data-channel")[0][1],transport:G,selectedCandidatePair:Y,remoteCandidate:J,raw:Object.fromEntries(U.entries())}})}async getDetails(){const $=await this._getStats(),I=$==null?void 0:$.remoteCandidate;return I?I.candidateType==="relay"?`${I.ip}:${I.port}/${I.protocol} relay for ${I.relatedAddress}:${I.relatedPort}`:`${I.ip}:${I.port}/${I.protocol} ${I.candidateType}`:"unavailable"}async open(){}async close(){log$2("closing...",void 0,{F:__dxlog_file12,L:200,S:this,C:($,I)=>$(...I)}),!this._closed&&(this._disconnectStreams(),this._peer.destroy(),this._closed=!0,this.closed.emit(),log$2("closed",void 0,{F:__dxlog_file12,L:208,S:this,C:($,I)=>$(...I)}))}async onSignal($){this._closed||(invariant($.payload.data,"Signal message must contain signal data."),this._peer.signal($.payload.data))}_disconnectStreams(){var $,I,U,q;this._piped&&((q=(U=(I=($=this._params.stream).unpipe)==null?void 0:I.call($,this._peer))==null?void 0:U.unpipe)==null||q.call(U,this._params.stream))}},__dxlog_file13="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts",SimplePeerTransportService=class{constructor($){this._webrtcConfig=$,this.transports=new ComplexMap(PublicKey.hash)}open($){return new Stream$1(({ready:U,next:q,close:G})=>{const K=new readableBrowserExports.Duplex({read:()=>{const X=[...J.writeCallbacks];J.writeCallbacks.length=0;for(const Z of X)Z()},write:function(X,Z,Q){q({data:{payload:X}}),Q()}}),Y=new SimplePeerTransport({initiator:$.initiator,stream:K,webrtcConfig:this._webrtcConfig,sendSignal:async X=>{q({signal:{payload:X}})}});Y.open(),q({connection:{state:ConnectionState$1.CONNECTING}}),Y.connected.on(()=>{q({connection:{state:ConnectionState$1.CONNECTED}})}),Y.errors.handle(X=>{q({connection:{state:ConnectionState$1.CLOSED,error:X.toString()}}),G(X)}),Y.closed.on(()=>{q({connection:{state:ConnectionState$1.CLOSED}}),G()});const J={transport:Y,stream:K,writeCallbacks:[],state:"OPEN"};U(),this.transports.set($.proxyId,J)})}async sendSignal({proxyId:$,signal:I}){invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:119,S:this,A:["this.transports.has(proxyId)",""]}),await this.transports.get($).transport.onSignal(I)}async getDetails({proxyId:$}){return invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:124,S:this,A:["this.transports.has(proxyId)",""]}),{details:await this.transports.get($).transport.getDetails()}}async getStats({proxyId:$}){return invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:129,S:this,A:["this.transports.has(proxyId)",""]}),{stats:await this.transports.get($).transport.getStats()}}async sendData({proxyId:$,payload:I}){var G;((G=this.transports.get($))==null?void 0:G.state)!=="OPEN"&&log$2.debug("transport is closed",void 0,{F:__dxlog_file13,L:135,S:this,C:(K,Y)=>K(...Y)}),invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:137,S:this,A:["this.transports.has(proxyId)",""]});const U=this.transports.get($);U.stream.push(I)||await new Promise(K=>{U.writeCallbacks.push(K)})}async close({proxyId:$}){var I,U;await((I=this.transports.get($))==null?void 0:I.transport.close()),await((U=this.transports.get($))==null?void 0:U.stream.end()),this.transports.get($)&&(this.transports.get($).state="CLOSED"),log$2("Closed.",void 0,{F:__dxlog_file13,L:153,S:this,C:(q,G)=>q(...G)})}};function _ts_decorate6($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file15="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts",DATACHANNEL_LABEL="dxos.mesh.transport",MAX_BUFFERED_AMOUNT=64*1024,MAX_MESSAGE_SIZE=64*1024,LibDataChannelTransport=(lr=class{constructor(I){this._options=I,this._closed=!1,this._connected=!1,this._writeCallback=null,this._readyForCandidates=new Trigger,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream}get isOpen(){return!!this._peer&&!this._closed}async open(){this._closed&&this.errors.raise(new Error("connection already closed"));const{RTCPeerConnection:I}=(await importESM("node-datachannel/polyfill")).default;this._options.webrtcConfig?this._options.webrtcConfig.iceServers=this._options.webrtcConfig.iceServers??[]:this._options.webrtcConfig={iceServers:[]},this._peer=new I(this._options.webrtcConfig),this._peer.onicecandidateerror=U=>{log$2.error("peer.onicecandidateerror",{event:U},{F:__dxlog_file15,L:77,S:this,C:(q,G)=>q(...G)})},this._peer.onconnectionstatechange=U=>{var q;log$2.debug("peer.onconnectionstatechange",{event:U,peerConnectionState:(q=this._peer)==null?void 0:q.connectionState,transportConnectionState:this._connected},{F:__dxlog_file15,L:81,S:this,C:(G,K)=>G(...K)})},this._peer.onicecandidate=async U=>{if(log$2.debug("peer.onicecandidate",{event:U},{F:__dxlog_file15,L:91,S:this,C:(q,G)=>q(...G)}),U.candidate)try{await this._options.sendSignal({payload:{data:{type:"candidate",candidate:{candidate:U.candidate.candidate,sdpMLineIndex:U.candidate.sdpMLineIndex??0,sdpMid:U.candidate.sdpMid??0}}}})}catch(q){log$2.info("signaling error",{err:q},{F:__dxlog_file15,L:108,S:this,C:(G,K)=>G(...K)})}},this._options.initiator?(invariant$1(this._peer,"not open",{F:__dxlog_file15,L:114,S:this,A:["this._peer","'not open'"]}),this._peer.createOffer().then(async U=>{var q;this._closed||(((q=this._peer)==null?void 0:q.connectionState)!=="connecting"&&(log$2.error("peer not connecting",{peer:this._peer},{F:__dxlog_file15,L:125,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("invalid state: peer is initiator, but other peer not in state connecting"))),log$2.debug("creating offer",{peer:this._peer,offer:U},{F:__dxlog_file15,L:129,S:this,C:(G,K)=>G(...K)}),await this._peer.setLocalDescription(U),await this._options.sendSignal({payload:{data:{type:U.type,sdp:U.sdp}}}))}).catch(U=>{this.errors.raise(U)}),this._handleChannel(this._peer.createDataChannel(DATACHANNEL_LABEL)),log$2.debug("created data channel",void 0,{F:__dxlog_file15,L:139,S:this,C:(U,q)=>U(...q)}),this._peer.ondatachannel=()=>{this.errors.raise(new Error("unexpected ondatachannel event for initiator"))}):this._peer.ondatachannel=U=>{log$2.debug("peer.ondatachannel (non-initiator)",{event:U},{F:__dxlog_file15,L:145,S:this,C:(q,G)=>q(...G)}),U.channel.label!==DATACHANNEL_LABEL&&this.errors.raise(new Error(`unexpected channel label ${U.channel.label}`)),this._handleChannel(U.channel)},lr._instanceCount++}async close(){await this._close(),--lr._instanceCount===0&&(await importESM("node-datachannel")).cleanup()}async _close(){var I;if(!this._closed){await this._disconnectStreams();try{(I=this._peer)==null||I.close()}catch(U){this.errors.raise(U)}this._peer=void 0,this._closed=!0,this.closed.emit()}}_handleChannel(I){this._channel=I,this._channel.onopen=()=>{log$2.debug("channel.onopen",void 0,{F:__dxlog_file15,L:190,S:this,C:(q,G)=>q(...G)});const U=new stream.Duplex({read:()=>{},write:async(q,G,K)=>{q.length>MAX_MESSAGE_SIZE&&this.errors.raise(new Error(`message too large: ${q.length} > ${MAX_MESSAGE_SIZE}`));try{I.send(q)}catch(Y){this.errors.raise(Y),await this._close()}this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT?(this._writeCallback!==null&&log$2.error("consumer trying to write before we are ready for more data",void 0,{F:__dxlog_file15,L:207,S:this,C:(Y,J)=>Y(...J)}),this._writeCallback=K):K()}});U.pipe(this._options.stream).pipe(U),this._stream=U,this._connected=!0,this.connected.emit()},this._channel.onclose=async U=>{log$2.info("channel.onclose",{err:U},{F:__dxlog_file15,L:223,S:this,C:(q,G)=>q(...G)}),await this._close()},this._channel.onerror=async U=>{this.errors.raise(new Error("channel error: "+U.toString())),await this._close()},this._channel.onbufferedamountlow=()=>{const U=this._writeCallback;this._writeCallback=null,U==null||U()},this._channel.onmessage=U=>{let q=U.data;q instanceof ArrayBuffer&&(q=export_Buffer.from(q)),this._stream.push(q)}}async onSignal(I){invariant$1(this._peer,"not open",{F:__dxlog_file15,L:249,S:this,A:["this._peer","'not open'"]});try{const U=I.payload.data;switch(U.type){case"offer":{if(this._peer.connectionState!=="new"){log$2.error("received offer but peer not in state new",{peer:this._peer},{F:__dxlog_file15,L:256,S:this,C:(q,G)=>q(...G)}),this.errors.raise(new Error("invalid signalling state: received offer when peer is not in state new"));break}try{await this._peer.setRemoteDescription({type:U.type,sdp:U.sdp});const q=await this._peer.createAnswer();await this._peer.setLocalDescription(q),await this._options.sendSignal({payload:{data:{type:q.type,sdp:q.sdp}}}),this._readyForCandidates.wake()}catch(q){log$2.error("cannot handle offer from signalling server",{err:q},{F:__dxlog_file15,L:268,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("error handling offer"))}break}case"answer":try{await this._peer.setRemoteDescription({type:U.type,sdp:U.sdp}),this._readyForCandidates.wake()}catch(q){log$2.error("cannot handle answer from signalling server",{err:q},{F:__dxlog_file15,L:279,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("error handling answer"))}break;case"candidate":await this._readyForCandidates.wait(),await this._peer.addIceCandidate({candidate:U.candidate.candidate});break;default:log$2.error("unhandled signal type",{type:U.type,signal:I},{F:__dxlog_file15,L:290,S:this,C:(q,G)=>q(...G)}),this.errors.raise(new Error(`unhandled signal type ${U.type}`))}}catch(U){log$2.catch(U,void 0,{F:__dxlog_file15,L:294,S:this,C:(q,G)=>q(...G)})}}async getDetails(){const I=await this._getStats(),U=I==null?void 0:I.remoteCandidate;return U?U.candidateType==="relay"?`${U.ip}:${U.port} relay for ${U.relatedAddress}:${U.relatedPort}`:`${U.ip}:${U.port} ${U.candidateType}`:"unavailable"}async getStats(){const I=await this._getStats();return I?{bytesSent:I.transport.bytesSent,bytesReceived:I.transport.bytesReceived,packetsSent:0,packetsReceived:0,rawStats:I.raw}:{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rawStats:{}}}async _getStats(){invariant$1(this._peer,"not open",{F:__dxlog_file15,L:334,S:this,A:["this._peer","'not open'"]});const I=await this._peer.getStats(),U=Array.from(I.entries()),q=U.filter(J=>J[1].type==="transport")[0][1],G=U.filter(J=>J[0]===q.selectedCandidatePairId);let K,Y;return G.length>0&&(K=G[0][1],Y=U.filter(J=>J[0]===K.remoteCandidateId)[0][1]),{transport:q,selectedCandidatePair:K,remoteCandidate:Y,raw:Object.fromEntries(I)}}async _disconnectStreams(){var I,U,q,G;(G=(q=(U=(I=this._options.stream).unpipe)==null?void 0:U.call(I,this._stream))==null?void 0:q.unpipe)==null||G.call(q,this._options.stream)}},lr._instanceCount=0,lr);_ts_decorate6([synchronized],LibDataChannelTransport.prototype,"_close",null);var importESM=Function("path","return import(path)");const index=Object.freeze(Object.defineProperty({__proto__:null,Connection,ConnectionLimiter,ConnectionLog,get ConnectionState(){return ConnectionState},get EventType(){return EventType},LibDataChannelTransport,MAX_CONCURRENT_INITIATING_CONNECTIONS,MemoryTransport,SimplePeerTransport,SimplePeerTransportService,Swarm,SwarmMapper,SwarmMessenger,SwarmNetworkManager,get TransportKind(){return TransportKind}},Symbol.toStringTag,{value:"Module"}));exports.runShell=runShell,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})});
1001
+ Use Chrome, Firefox or Internet Explorer 11`)}var Buffer$2=requireSafeBuffer().Buffer,crypto$1=commonjsGlobal.crypto||commonjsGlobal.msCrypto;crypto$1&&crypto$1.getRandomValues?browser.exports=randomBytes:browser.exports=oldBrowser;function randomBytes($,I){if($>MAX_UINT32)throw new RangeError("requested too many random bytes");var U=Buffer$2.allocUnsafe($);if($>0)if($>MAX_BYTES)for(var q=0;q<$;q+=MAX_BYTES)crypto$1.getRandomValues(U.slice(q,q+MAX_BYTES));else crypto$1.getRandomValues(U);return typeof I=="function"?process.nextTick(function(){I(null,U)}):U}var browserExports=browser.exports;/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */let promise;var queueMicrotask_1=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:commonjsGlobal):$=>(promise||(promise=Promise.resolve())).then($).catch(I=>setTimeout(()=>{throw I},0));function assign($,I){for(const U in I)Object.defineProperty($,U,{value:I[U],enumerable:!0,configurable:!0});return $}function createError($,I,U){if(!$||typeof $=="string")throw new TypeError("Please pass an Error to err-code");U||(U={}),typeof I=="object"&&(U=I,I=""),I&&(U.code=I);try{return assign($,U)}catch{U.message=$.message,U.stack=$.stack;const G=function(){};return G.prototype=Object.create(Object.getPrototypeOf($)),assign(new G,U)}}var errCode$1=createError;/*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */const debug=browserExports$1("simple-peer"),getBrowserRTC=getBrowserRtc,randombytes=browserExports,stream$1=readableBrowserExports,queueMicrotask$1=queueMicrotask_1,errCode=errCode$1,{Buffer:Buffer$1}=buffer,MAX_BUFFERED_AMOUNT$1=64*1024,ICECOMPLETE_TIMEOUT=5*1e3,CHANNEL_CLOSING_TIMEOUT=5*1e3;function filterTrickle($){return $.replace(/a=ice-options:trickle\s\n/g,"")}function warn($){console.warn($)}let Peer$1=class Fr extends stream$1.Duplex{constructor(I){if(I=Object.assign({allowHalfOpen:!1},I),super(I),this._id=randombytes(4).toString("hex").slice(0,7),this._debug("new peer %o",I),this.channelName=I.initiator?I.channelName||randombytes(20).toString("hex"):null,this.initiator=I.initiator||!1,this.channelConfig=I.channelConfig||Fr.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},Fr.config,I.config),this.offerOptions=I.offerOptions||{},this.answerOptions=I.answerOptions||{},this.sdpTransform=I.sdpTransform||(U=>U),this.streams=I.streams||(I.stream?[I.stream]:[]),this.trickle=I.trickle!==void 0?I.trickle:!0,this.allowHalfTrickle=I.allowHalfTrickle!==void 0?I.allowHalfTrickle:!1,this.iceCompleteTimeout=I.iceCompleteTimeout||ICECOMPLETE_TIMEOUT,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=I.wrtc&&typeof I.wrtc=="object"?I.wrtc:getBrowserRTC(),!this._wrtc)throw errCode(typeof window>"u"?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(U){this.destroy(errCode(U,"ERR_PC_CONSTRUCTOR"));return}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=U=>{this._onIceCandidate(U)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(U=>{this.destroy(errCode(U,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=U=>{this._setupData(U)},this.streams&&this.streams.forEach(U=>{this.addStream(U)}),this._pc.ontrack=U=>{this._onTrack(U)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof I=="string")try{I=JSON.parse(I)}catch{I={}}this._debug("signal()"),I.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),I.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(I.transceiverRequest.kind,I.transceiverRequest.init)),I.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(I.candidate):this._pendingCandidates.push(I.candidate)),I.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(I)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(U=>{this._addIceCandidate(U)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(U=>{this.destroy(errCode(U,"ERR_SET_REMOTE_DESCRIPTION"))}),!I.sdp&&!I.candidate&&!I.renegotiate&&!I.transceiverRequest&&this.destroy(errCode(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(I){const U=new this._wrtc.RTCIceCandidate(I);this._pc.addIceCandidate(U).catch(q=>{!U.address||U.address.endsWith(".local")?warn("Ignoring unsupported ICE candidate."):this.destroy(errCode(q,"ERR_ADD_ICE_CANDIDATE"))})}send(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(I)}}addTransceiver(I,U){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(I,U),this._needsNegotiation()}catch(q){this.destroy(errCode(q,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:I,init:U}})}}addStream(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),I.getTracks().forEach(U=>{this.addTrack(U,I)})}}addTrack(I,U){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");const q=this._senderMap.get(I)||new Map;let G=q.get(U);if(!G)G=this._pc.addTrack(I,U),q.set(U,G),this._senderMap.set(I,q),this._needsNegotiation();else throw G.removed?errCode(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):errCode(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(I,U,q){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");const G=this._senderMap.get(I),K=G?G.get(q):null;if(!K)throw errCode(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");U&&this._senderMap.set(U,G),K.replaceTrack!=null?K.replaceTrack(U):this.destroy(errCode(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(I,U){if(this.destroying)return;if(this.destroyed)throw errCode(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");const q=this._senderMap.get(I),G=q?q.get(U):null;if(!G)throw errCode(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{G.removed=!0,this._pc.removeTrack(G)}catch(K){K.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(G):this.destroy(errCode(K,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(I){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),I.getTracks().forEach(U=>{this.removeTrack(U,I)})}}_needsNegotiation(){this._debug("_needsNegotiation"),!this._batchedNegotiation&&(this._batchedNegotiation=!0,queueMicrotask$1(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this.destroying){if(this.destroyed)throw errCode(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}destroy(I){this._destroy(I,()=>{})}_destroy(I,U){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",I&&(I.message||I)),queueMicrotask$1(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",I&&(I.message||I)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,I&&this.emit("error",I),this.emit("close"),U()}))}_setupData(I){if(!I.channel)return this.destroy(errCode(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=I.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=MAX_BUFFERED_AMOUNT$1),this.channelName=this._channel.label,this._channel.onmessage=q=>{this._onChannelMessage(q)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=q=>{const G=q.error instanceof Error?q.error:new Error(`Datachannel error: ${q.message} ${q.filename}:${q.lineno}:${q.colno}`);this.destroy(errCode(G,"ERR_DATA_CHANNEL"))};let U=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(U&&this._onChannelClose(),U=!0):U=!1},CHANNEL_CLOSING_TIMEOUT)}_read(){}_write(I,U,q){if(this.destroyed)return q(errCode(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(I)}catch(G){return this.destroy(errCode(G,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT$1?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=q):q(null)}else this._debug("write before connect"),this._chunk=I,this._cb=q}_onFinish(){if(this.destroyed)return;const I=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?I():this.once("connect",I)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(I=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(I.sdp=filterTrickle(I.sdp)),I.sdp=this.sdpTransform(I.sdp);const U=()=>{if(this.destroyed)return;const K=this._pc.localDescription||I;this._debug("signal"),this.emit("signal",{type:K.type,sdp:K.sdp})},q=()=>{this._debug("createOffer success"),!this.destroyed&&(this.trickle||this._iceComplete?U():this.once("_iceComplete",U))},G=K=>{this.destroy(errCode(K,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(I).then(q).catch(G)}).catch(I=>{this.destroy(errCode(I,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(I=>{!I.mid&&I.sender.track&&!I.requested&&(I.requested=!0,this.addTransceiver(I.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(I=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(I.sdp=filterTrickle(I.sdp)),I.sdp=this.sdpTransform(I.sdp);const U=()=>{if(this.destroyed)return;const K=this._pc.localDescription||I;this._debug("signal"),this.emit("signal",{type:K.type,sdp:K.sdp}),this.initiator||this._requestMissingTransceivers()},q=()=>{this.destroyed||(this.trickle||this._iceComplete?U():this.once("_iceComplete",U))},G=K=>{this.destroy(errCode(K,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(I).then(q).catch(G)}).catch(I=>{this.destroy(errCode(I,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(errCode(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;const I=this._pc.iceConnectionState,U=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",I,U),this.emit("iceStateChange",I,U),(I==="connected"||I==="completed")&&(this._pcReady=!0,this._maybeReady()),I==="failed"&&this.destroy(errCode(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),I==="closed"&&this.destroy(errCode(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(I){const U=q=>(Object.prototype.toString.call(q.values)==="[object Array]"&&q.values.forEach(G=>{Object.assign(q,G)}),q);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(q=>{const G=[];q.forEach(K=>{G.push(U(K))}),I(null,G)},q=>I(q)):this._pc.getStats.length>0?this._pc.getStats(q=>{if(this.destroyed)return;const G=[];q.result().forEach(K=>{const Y={};K.names().forEach(J=>{Y[J]=K.stat(J)}),Y.id=K.id,Y.type=K.type,Y.timestamp=K.timestamp,G.push(U(Y))}),I(null,G)},q=>I(q)):I(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const I=()=>{this.destroyed||this.getStats((U,q)=>{if(this.destroyed)return;U&&(q=[]);const G={},K={},Y={};let J=!1;q.forEach(Z=>{(Z.type==="remotecandidate"||Z.type==="remote-candidate")&&(G[Z.id]=Z),(Z.type==="localcandidate"||Z.type==="local-candidate")&&(K[Z.id]=Z),(Z.type==="candidatepair"||Z.type==="candidate-pair")&&(Y[Z.id]=Z)});const X=Z=>{J=!0;let Q=K[Z.localCandidateId];Q&&(Q.ip||Q.address)?(this.localAddress=Q.ip||Q.address,this.localPort=Number(Q.port)):Q&&Q.ipAddress?(this.localAddress=Q.ipAddress,this.localPort=Number(Q.portNumber)):typeof Z.googLocalAddress=="string"&&(Q=Z.googLocalAddress.split(":"),this.localAddress=Q[0],this.localPort=Number(Q[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let ee=G[Z.remoteCandidateId];ee&&(ee.ip||ee.address)?(this.remoteAddress=ee.ip||ee.address,this.remotePort=Number(ee.port)):ee&&ee.ipAddress?(this.remoteAddress=ee.ipAddress,this.remotePort=Number(ee.portNumber)):typeof Z.googRemoteAddress=="string"&&(ee=Z.googRemoteAddress.split(":"),this.remoteAddress=ee[0],this.remotePort=Number(ee[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(q.forEach(Z=>{Z.type==="transport"&&Z.selectedCandidatePairId&&X(Y[Z.selectedCandidatePairId]),(Z.type==="googCandidatePair"&&Z.googActiveConnection==="true"||(Z.type==="candidatepair"||Z.type==="candidate-pair")&&Z.selected)&&X(Z)}),!J&&(!Object.keys(Y).length||Object.keys(K).length)){setTimeout(I,100);return}else this._connecting=!1,this._connected=!0;if(this._chunk){try{this.send(this._chunk)}catch(Q){return this.destroy(errCode(Q,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');const Z=this._cb;this._cb=null,Z(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};I()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT$1||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(I=>{this._pc.removeTrack(I),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(I){this.destroyed||(I.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:I.candidate.candidate,sdpMLineIndex:I.candidate.sdpMLineIndex,sdpMid:I.candidate.sdpMid}}):!I.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),I.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(I){if(this.destroyed)return;let U=I.data;U instanceof ArrayBuffer&&(U=Buffer$1.from(U)),this.push(U)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);const I=this._cb;this._cb=null,I(null)}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(I){this.destroyed||I.streams.forEach(U=>{this._debug("on track"),this.emit("track",I.track,U),this._remoteTracks.push({track:I.track,stream:U}),!this._remoteStreams.some(q=>q.id===U.id)&&(this._remoteStreams.push(U),queueMicrotask$1(()=>{this._debug("on stream"),this.emit("stream",U)}))})}_debug(){const I=[].slice.call(arguments);I[0]="["+this._id+"] "+I[0],debug.apply(null,I)}};Peer$1.WEBRTC_SUPPORT=!!getBrowserRTC(),Peer$1.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},Peer$1.channelConfig={};var simplePeer=Peer$1;const SimplePeerConstructor=getDefaultExportFromCjs(simplePeer);var isProduction=process.env.NODE_ENV==="production",prefix="Invariant failed";function invariant($,I){if(!$){if(isProduction)throw new Error(prefix);var U=typeof I=="function"?I():I,q=U?"".concat(prefix,": ").concat(U):prefix;throw new Error(q)}}var ConnectionState$1;(function($){$[$.INVALID=0]="INVALID",$[$.CONNECTING=1]="CONNECTING",$[$.CONNECTED=2]="CONNECTED",$[$.CLOSED=3]="CLOSED"})(ConnectionState$1||(ConnectionState$1={}));var emitterComponent=Emitter$1;function Emitter$1($){if($)return mixin($)}function mixin($){for(var I in Emitter$1.prototype)$[I]=Emitter$1.prototype[I];return $}Emitter$1.prototype.on=Emitter$1.prototype.addEventListener=function($,I){return this._callbacks=this._callbacks||{},(this._callbacks[$]=this._callbacks[$]||[]).push(I),this},Emitter$1.prototype.once=function($,I){var U=this;this._callbacks=this._callbacks||{};function q(){U.off($,q),I.apply(this,arguments)}return q.fn=I,this.on($,q),this},Emitter$1.prototype.off=Emitter$1.prototype.removeListener=Emitter$1.prototype.removeAllListeners=Emitter$1.prototype.removeEventListener=function($,I){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var U=this._callbacks[$];if(!U)return this;if(arguments.length==1)return delete this._callbacks[$],this;for(var q,G=0;G<U.length;G++)if(q=U[G],q===I||q.fn===I){U.splice(G,1);break}return this},Emitter$1.prototype.emit=function($){this._callbacks=this._callbacks||{};var I=[].slice.call(arguments,1),U=this._callbacks[$];if(U){U=U.slice(0);for(var q=0,G=U.length;q<G;++q)U[q].apply(this,I)}return this},Emitter$1.prototype.listeners=function($){return this._callbacks=this._callbacks||{},this._callbacks[$]||[]},Emitter$1.prototype.hasListeners=function($){return!!this.listeners($).length};var Emitter=emitterComponent;function Stream(){Emitter.call(this)}Stream.prototype=new Emitter;var stream=Stream;Stream.Stream=Stream,Stream.prototype.pipe=function($,I){var U=this;function q(Q){$.writable&&$.write(Q)===!1&&U.pause&&U.pause()}U.on("data",q);function G(){U.readable&&U.resume&&U.resume()}$.on("drain",G),!$._isStdio&&(!I||I.end!==!1)&&(U.on("end",Y),U.on("close",J));var K=!1;function Y(){K||(K=!0,$.end())}function J(){K||(K=!0,typeof $.destroy=="function"&&$.destroy())}function X(Q){if(Z(),!this.hasListeners("error"))throw Q}U.on("error",X),$.on("error",X);function Z(){U.off("data",q),$.off("drain",G),U.off("end",Y),U.off("close",J),U.off("error",X),$.off("error",X),U.off("end",Z),U.off("close",Z),$.off("end",Z),$.off("close",Z)}return U.on("end",Z),U.on("close",Z),$.on("end",Z),$.on("close",Z),$.emit("pipe",U),$};var encode_1=encode,MSB$1=128,REST$1=127,MSBALL=~REST$1,INT=Math.pow(2,31);function encode($,I,U){if(Number.MAX_SAFE_INTEGER&&$>Number.MAX_SAFE_INTEGER)throw encode.bytes=0,new RangeError("Could not encode varint");I=I||[],U=U||0;for(var q=U;$>=INT;)I[U++]=$&255|MSB$1,$/=128;for(;$&MSBALL;)I[U++]=$&255|MSB$1,$>>>=7;return I[U]=$|0,encode.bytes=U-q+1,I}var decode=read,MSB=128,REST=127;function read($,q){var U=0,q=q||0,G=0,K=q,Y,J=$.length;do{if(K>=J||G>49)throw read.bytes=0,new RangeError("Could not decode varint");Y=$[K++],U+=G<28?(Y&REST)<<G:(Y&REST)*Math.pow(2,G),G+=7}while(Y>=MSB);return read.bytes=K-q,U}var N1=Math.pow(2,7),N2=Math.pow(2,14),N3=Math.pow(2,21),N4=Math.pow(2,28),N5=Math.pow(2,35),N6=Math.pow(2,42),N7=Math.pow(2,49),N8=Math.pow(2,56),N9=Math.pow(2,63),length=function($){return $<N1?1:$<N2?2:$<N3?3:$<N4?4:$<N5?5:$<N6?6:$<N7?7:$<N8?8:$<N9?9:10},varint={encode:encode_1,decode,encodingLength:length},__dxlog_file$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/control-extension.ts",HEARTBEAT_RTT_WARN_THRESH=1e4,DEBUG_PRINT_HEARTBEAT=!1,ControlExtension=class{constructor($,I,U){this.opts=$,this.localPeerId=I,this.remotePeerId=U,this._ctx=new Context({onError:q=>{this._extensionContext.close(q)}},{F:__dxlog_file$1,L:30}),this.onExtensionRegistered=new Callback}async registerExtension($){await this._rpc.rpc.Control.registerExtension({name:$})}async onOpen($){this._extensionContext=$,this._rpc=createProtoRpcPeer({requested:{Control:protocols.schema.getService("dxos.mesh.teleport.control.ControlService")},exposed:{Control:protocols.schema.getService("dxos.mesh.teleport.control.ControlService")},handlers:{Control:{registerExtension:async I=>{this.onExtensionRegistered.call(I.name)},heartbeat:async I=>({requestTimestamp:I.requestTimestamp})}},port:await $.createPort("rpc",{contentType:'application/x-protobuf; messageType="dxos.rpc.Message"'}),timeout:this.opts.heartbeatTimeout}),await this._rpc.open(),scheduleTaskInterval(this._ctx,async()=>{const I=new Date;try{const U=await asyncTimeout(this._rpc.rpc.Control.heartbeat({requestTimestamp:I}),this.opts.heartbeatTimeout),q=Date.now();U.requestTimestamp instanceof Date&&q-U.requestTimestamp.getTime()>(HEARTBEAT_RTT_WARN_THRESH<this.opts.heartbeatTimeout?HEARTBEAT_RTT_WARN_THRESH:this.opts.heartbeatTimeout/2)&&log$2.warn(`heartbeat RTT for Teleport > ${HEARTBEAT_RTT_WARN_THRESH/1e3}s`,{rtt:q-U.requestTimestamp.getTime(),localPeerId:this.localPeerId.truncate(),remotePeerId:this.remotePeerId.truncate()},{F:__dxlog_file$1,L:106,S:this,C:(G,K)=>G(...K)})}catch(U){const q=Date.now();if(U instanceof protocols.RpcClosedError){log$2("ignoring RpcClosedError in heartbeat",void 0,{F:__dxlog_file$1,L:125,S:this,C:(G,K)=>G(...K)}),this._extensionContext.close(U);return}U instanceof TimeoutError?(log$2("timeout waiting for heartbeat response",{err:U,delay:q-I.getTime()},{F:__dxlog_file$1,L:130,S:this,C:(G,K)=>G(...K)}),this.opts.onTimeout(U)):(log$2.info("other error waiting for heartbeat response",{err:U,delay:q-I.getTime()},{F:__dxlog_file$1,L:133,S:this,C:(G,K)=>G(...K)}),this.opts.onTimeout(U))}},this.opts.heartbeatInterval)}async onClose($){await this._ctx.dispose(),await this._rpc.close()}async onAbort($){await this._ctx.dispose(),await this._rpc.abort()}},__dxlog_file2$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/framer.ts",FRAME_LENGTH_SIZE=2,Framer=class{constructor(){this._messageCb=void 0,this._subscribeCb=void 0,this._buffer=void 0,this._sendCallbacks=[],this._bytesSent=0,this._bytesReceived=0,this._writable=!0,this.drain=new Event$1,this._stream=new readableBrowserExports.Duplex({objectMode:!1,read:()=>{this._processResponseQueue()},write:($,I,U)=>{invariant$1(!this._subscribeCb,"Internal Framer bug. Concurrent writes detected.",{F:__dxlog_file2$1,L:40,S:this,A:["!this._subscribeCb","'Internal Framer bug. Concurrent writes detected.'"]}),this._bytesReceived+=$.length,this._buffer&&this._buffer.length>0?this._buffer=export_Buffer.concat([this._buffer,$]):this._buffer=$,this._messageCb?(this._popFrames(),U()):this._subscribeCb=()=>{this._popFrames(),this._subscribeCb=void 0,U()}}}),this.port={send:$=>new Promise(I=>{const U=encodeFrame($);this._bytesSent+=U.length,this._writable=this._stream.push(U),this._writable?I():this._sendCallbacks.push(I)}),subscribe:$=>{var I;return invariant$1(!this._messageCb,"Rpc port already has a message listener.",{F:__dxlog_file2$1,L:79,S:this,A:["!this._messageCb","'Rpc port already has a message listener.'"]}),this._messageCb=$,(I=this._subscribeCb)==null||I.call(this),()=>{this._messageCb=void 0}}}}get stream(){return this._stream}get bytesSent(){return this._bytesSent}get bytesReceived(){return this._bytesReceived}get writable(){return this._writable}_processResponseQueue(){const $=this._sendCallbacks;this._sendCallbacks=[],this._writable=!0,this.drain.emit(),$.forEach(I=>I())}_popFrames(){let $=0;for(;$<this._buffer.length;){const I=decodeFrame(this._buffer,$);if(!I)break;$+=I.bytesConsumed,this._messageCb(I.payload)}$<this._buffer.length?this._buffer=this._buffer.subarray($):this._buffer=void 0}destroy(){this._stream.readableLength>0&&log$2("framer destroyed while there are still read bytes in the buffer.",void 0,{F:__dxlog_file2$1,L:140,S:this,C:($,I)=>$(...I)}),this._stream.writableLength>0&&log$2.warn("framer destroyed while there are still write bytes in the buffer.",void 0,{F:__dxlog_file2$1,L:143,S:this,C:($,I)=>$(...I)}),this._stream.destroy()}},decodeFrame=($,I)=>{if($.length<I+FRAME_LENGTH_SIZE)return;const U=$.readUInt16BE(I),q=FRAME_LENGTH_SIZE+U;return $.length<I+q?void 0:{payload:$.subarray(I+FRAME_LENGTH_SIZE,I+q),bytesConsumed:q}},encodeFrame=$=>{const I=export_Buffer.allocUnsafe(FRAME_LENGTH_SIZE+$.length);return I.writeUInt16BE($.length,0),I.set($,FRAME_LENGTH_SIZE),I},__dxlog_file3$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/balancer.ts",MAX_CHUNK_SIZE=8192,Balancer=class{constructor($){this._sysChannelId=$,this._lastCallerIndex=0,this._channels=[],this._framer=new Framer,this._sendBuffers=new Map,this._receiveBuffers=new Map,this._sending=!1,this.incomingData=new Event$1,this.stream=this._framer.stream,this._channels.push($),this._framer.port.subscribe(this._processIncomingMessage.bind(this))}get bytesSent(){return this._framer.bytesSent}get bytesReceived(){return this._framer.bytesReceived}get buffersCount(){return this._sendBuffers.size}addChannel($){this._channels.push($)}pushData($,I,U){this._enqueueChunk($,I,U),this._sendChunks().catch(q=>log$2.catch(q,void 0,{F:__dxlog_file3$1,L:75,S:this,C:(G,K)=>G(...K)}))}destroy(){this._sendBuffers.size!==0&&log$2.info("destroying balancer with pending calls",void 0,{F:__dxlog_file3$1,L:80,S:this,C:($,I)=>$(...I)}),this._sendBuffers.clear(),this._framer.destroy()}_processIncomingMessage($){const{channelId:I,dataLength:U,chunk:q}=decodeChunk($,G=>!this._receiveBuffers.has(G));if(!this._receiveBuffers.has(I))q.length<U?this._receiveBuffers.set(I,{buffer:export_Buffer.from(q),msgLength:U}):this.incomingData.emit(q);else{const G=this._receiveBuffers.get(I);if(G.buffer=export_Buffer.concat([G.buffer,q]),G.buffer.length<G.msgLength)return;const K=G.buffer;this._receiveBuffers.delete(I),this.incomingData.emit(K)}}_getNextCallerId(){if(this._sendBuffers.has(this._sysChannelId))return this._sysChannelId;const $=this._lastCallerIndex;return this._lastCallerIndex=(this._lastCallerIndex+1)%this._channels.length,this._channels[$]}_enqueueChunk($,I,U){if(!this._channels.includes(U))throw new Error(`Unknown channel ${U}`);this._sendBuffers.has(U)||this._sendBuffers.set(U,[]);const q=this._sendBuffers.get(U),G=[];for(let K=0;K<$.length;K+=MAX_CHUNK_SIZE)G.push($.subarray(K,K+MAX_CHUNK_SIZE));G.forEach((K,Y)=>{const J=encodeChunk({chunk:K,channelId:U,dataLength:Y===0?$.length:void 0});q.push({msg:J,trigger:Y===G.length-1?I:void 0})})}_getNextChunk(){let $;for(;this._sendBuffers.size>0;){const I=this._getNextCallerId(),U=this._sendBuffers.get(I);if(U&&($=U.shift(),!!$))return U.length===0&&this._sendBuffers.delete(I),$}return null}async _sendChunks(){var I,U;if(this._sending)return;this._sending=!0;let $;for($=this._getNextChunk();$;){this._framer.writable||(log$2("PAUSE for drain",void 0,{F:__dxlog_file3$1,L:179,S:this,C:(q,G)=>q(...G)}),await this._framer.drain.waitForCount(1),log$2("RESUME for drain",void 0,{F:__dxlog_file3$1,L:181,S:this,C:(q,G)=>q(...G)}));try{await this._framer.port.send($.msg),(I=$.trigger)==null||I.wake()}catch(q){log$2("Error sending chunk",{err:q},{F:__dxlog_file3$1,L:187,S:this,C:(G,K)=>G(...K)}),(U=$.trigger)==null||U.throw(q)}$=this._getNextChunk()}invariant$1(this._sendBuffers.size===0,"sendBuffers not empty",{F:__dxlog_file3$1,L:192,S:this,A:["this._sendBuffers.size === 0","'sendBuffers not empty'"]}),this._sending=!1}},encodeChunk=({channelId:$,dataLength:I,chunk:U})=>{const q=varint.encodingLength($),G=I?varint.encodingLength(I):0,K=export_Buffer.allocUnsafe(q+G+U.length);return varint.encode($,K),I&&varint.encode(I,K,q),K.set(U,q+G),K},decodeChunk=($,I)=>{const U=varint.decode($);let q,G=varint.decode.bytes;I(U)&&(q=varint.decode($,G),G+=varint.decode.bytes);const K=$.subarray(G);return{channelId:U,dataLength:q,chunk:K}};function _ts_decorate$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file4$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/muxing/muxer.ts",Command=protocols.schema.getCodecForType("dxos.mesh.muxer.Command"),DEFAULT_SEND_COMMAND_TIMEOUT=6e4,DESTROY_COMMAND_SEND_TIMEOUT=5e3,STATS_INTERVAL=1e3,MAX_SAFE_FRAME_SIZE=1e6,SYSTEM_CHANNEL_ID=0,GRACEFUL_CLOSE_TIMEOUT=3e3,Muxer=class{constructor(){this._balancer=new Balancer(SYSTEM_CHANNEL_ID),this._channelsByLocalId=new Map,this._channelsByTag=new Map,this._ctx=new Context(void 0,{F:__dxlog_file4$1,L:107}),this._nextId=1,this._closing=!1,this._destroying=!1,this._disposed=!1,this._lastStats=void 0,this._lastChannelStats=new Map,this.afterClosed=new Event$1,this.statsUpdated=new Event$1,this.stream=this._balancer.stream,this._balancer.incomingData.on(async $=>{await this._handleCommand(Command.decode($))})}setSessionId($){this._sessionId=$}get sessionIdString(){return this._sessionId?this._sessionId.truncate():"none"}async createStream($,I={}){const U=this._getOrCreateStream({tag:$,contentType:I.contentType});invariant$1(!U.push,`Channel already open: ${$}`,{F:__dxlog_file4$1,L:151,S:this,A:["!channel.push","`Channel already open: ${tag}`"]});const q=new readableBrowserExports.Duplex({write:(G,K,Y)=>{this._sendData(U,G).then(()=>Y()).catch(Y)},read:()=>{}});U.push=G=>{U.stats.bytesReceived+=G.length,q.push(G)},U.destroy=G=>{G&&q.listeners("error").length>0?q.destroy(G):q.destroy()};try{await this._sendCommand({openChannel:{id:U.id,tag:U.tag,contentType:U.contentType}},SYSTEM_CHANNEL_ID)}catch(G){throw this._destroyChannel(U,G),G}return q}async createPort($,I={}){const U=this._getOrCreateStream({tag:$,contentType:I.contentType});invariant$1(!U.push,`Channel already open: ${$}`,{F:__dxlog_file4$1,L:211,S:this,A:["!channel.push","`Channel already open: ${tag}`"]});let q=[],G;U.push=Y=>{U.stats.bytesReceived+=Y.length,G?G(Y):q.push(Y)};const K={send:async(Y,J)=>{await this._sendData(U,Y,J)},subscribe:Y=>{invariant$1(!G,"Only one subscriber is allowed",{F:__dxlog_file4$1,L:233,S:this,A:["!callback","'Only one subscriber is allowed'"]}),G=Y;for(const J of q)Y(J);q=[]}};try{await this._sendCommand({openChannel:{id:U.id,tag:U.tag,contentType:U.contentType}},SYSTEM_CHANNEL_ID)}catch(Y){throw this._destroyChannel(U,Y),Y}return K}async close($){if(this._destroying){log$2("already destroying, ignoring graceful close request",void 0,{F:__dxlog_file4$1,L:266,S:this,C:(I,U)=>I(...U)});return}if(this._closing){log$2("already closing, ignoring graceful close request",void 0,{F:__dxlog_file4$1,L:270,S:this,C:(I,U)=>I(...U)});return}this._closing=!0,await this._sendCommand({close:{error:$==null?void 0:$.message}},SYSTEM_CHANNEL_ID,DESTROY_COMMAND_SEND_TIMEOUT).catch(async I=>{log$2("error sending close command",{err:I},{F:__dxlog_file4$1,L:285,S:this,C:(U,q)=>U(...q)}),await this._dispose(I)}),await asyncTimeout(this._dispose($),GRACEFUL_CLOSE_TIMEOUT,new protocols.TimeoutError("gracefully closing muxer"))}async destroy($){if(this._destroying){log$2("already destroying, ignoring destroy request",void 0,{F:__dxlog_file4$1,L:298,S:this,C:(I,U)=>I(...U)});return}this._destroying=!0,this._ctx.dispose(),this._closing?(log$2("destroy cancelling graceful close",void 0,{F:__dxlog_file4$1,L:304,S:this,C:(I,U)=>I(...U)}),this._closing=!1):await this._sendCommand({close:{error:$==null?void 0:$.message}},SYSTEM_CHANNEL_ID).catch(async I=>{log$2("error sending courtesy close command",{err:I},{F:__dxlog_file4$1,L:317,S:this,C:(U,q)=>U(...q)})}),this._dispose($).catch(I=>{log$2("error disposing after destroy",{err:I},{F:__dxlog_file4$1,L:322,S:this,C:(U,q)=>U(...q)})})}async _dispose($){var I;if(this._disposed){log$2("already destroyed, ignoring dispose request",void 0,{F:__dxlog_file4$1,L:330,S:this,C:(U,q)=>U(...q)});return}this._ctx.dispose(),await this._balancer.destroy();for(const U of this._channelsByTag.values())(I=U.destroy)==null||I.call(U,$);this._disposed=!0,await this._emitStats(),this.afterClosed.emit($),this._channelsByLocalId.clear(),this._channelsByTag.clear()}async _handleCommand($){if(this._disposed){log$2.warn("Received command after disposed",{cmd:$},{F:__dxlog_file4$1,L:353,S:this,C:(I,U)=>I(...U)});return}if($.close){this._closing?log$2("received close from peer, already closing",void 0,{F:__dxlog_file4$1,L:362,S:this,C:(I,U)=>I(...U)}):(log$2("received peer close, initiating my own graceful close",void 0,{F:__dxlog_file4$1,L:359,S:this,C:(I,U)=>I(...U)}),await this.close(new Error("received peer close")));return}if($.openChannel){const I=this._getOrCreateStream({tag:$.openChannel.tag,contentType:$.openChannel.contentType});I.remoteId=$.openChannel.id;for(const U of I.buffer)await this._sendCommand({data:{channelId:I.remoteId,data:U}},I.id);I.buffer=[]}else if($.data){const I=this._channelsByLocalId.get($.data.channelId)??failUndefined();if(!I.push){log$2.warn("Received data for channel before it was opened",{tag:I.tag},{F:__dxlog_file4$1,L:391,S:this,C:(U,q)=>U(...q)});return}I.push($.data.data)}}async _sendCommand($,I=-1,U=DEFAULT_SEND_COMMAND_TIMEOUT){if(!this._disposed)try{const q=new Trigger;this._balancer.pushData(Command.encode($),q,I),await q.wait({timeout:U})}catch(q){await this.destroy(q)}}_getOrCreateStream($){this._channelsByTag.size===0&&scheduleTaskInterval(this._ctx,async()=>this._emitStats(),STATS_INTERVAL);let I=this._channelsByTag.get($.tag);return I||(I={id:this._nextId++,remoteId:null,tag:$.tag,contentType:$.contentType,buffer:[],push:null,destroy:null,stats:{bytesSent:0,bytesReceived:0}},this._channelsByTag.set(I.tag,I),this._channelsByLocalId.set(I.id,I),this._balancer.addChannel(I.id)),I}async _sendData($,I,U){if(I.length>MAX_SAFE_FRAME_SIZE&&log$2.warn("frame size exceeds maximum safe value",{size:I.length,threshold:MAX_SAFE_FRAME_SIZE},{F:__dxlog_file4$1,L:441,S:this,C:(q,G)=>q(...G)}),$.stats.bytesSent+=I.length,$.remoteId===null){$.buffer.push(I);return}await this._sendCommand({data:{channelId:$.remoteId,data:I}},$.id,U)}_destroyChannel($,I){$.destroy&&$.destroy(I),this._channelsByLocalId.delete($.id),this._channelsByTag.delete($.tag)}async _emitStats(){if(this._disposed||this._destroying){if(!this._lastStats)return;const K=this._lastStats;this._lastStats=void 0,K.readBufferSize=0,K.writeBufferSize=0;for(const Y of K.channels)Y.writeBufferSize=0;this.statsUpdated.emit(K),this._lastChannelStats.clear();return}const $=this._balancer.bytesSent,I=this._balancer.bytesReceived,U=Date.now(),q=this._lastStats?(U-this._lastStats.timestamp)/1e3:0,G=(K,Y)=>Y?{bytesSentRate:q?(K.bytesSent-Y.bytesSent)/q:void 0,bytesReceivedRate:q?(K.bytesReceived-Y.bytesReceived)/q:void 0}:{};this._lastStats={timestamp:U,channels:Array.from(this._channelsByTag.values()).map(K=>{const Y={id:K.id,tag:K.tag,contentType:K.contentType,writeBufferSize:K.buffer.length,bytesSent:K.stats.bytesSent,bytesReceived:K.stats.bytesReceived,...G(K.stats,this._lastChannelStats.get(K.id))};return this._lastChannelStats.set(K.id,Y),Y}),bytesSent:$,bytesReceived:I,...G({bytesSent:$,bytesReceived:I},this._lastStats),readBufferSize:this._balancer.stream.readableLength,writeBufferSize:this._balancer.stream.writableLength},this.statsUpdated.emit(this._lastStats)}};_ts_decorate$1([logInfo],Muxer.prototype,"sessionIdString",null);function _ts_decorate2$1($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file5$1="/home/runner/work/dxos/dxos/packages/core/mesh/teleport/src/teleport.ts",CONTROL_HEARTBEAT_INTERVAL=1e4,CONTROL_HEARTBEAT_TIMEOUT=6e4,Teleport=class{constructor({initiator:$,localPeerId:I,remotePeerId:U,...q}){this._ctx=new Context({onError:G=>{this.destroy(G).catch(()=>{log$2.error("Error during destroy",G,{F:__dxlog_file5$1,L:41,S:this,C:(K,Y)=>K(...Y)})})}},{F:__dxlog_file5$1,L:38}),this._muxer=new Muxer,this._extensions=new Map,this._remoteExtensions=new Set,this._open=!1,this._destroying=!1,this._aborting=!1,invariant$1(typeof $=="boolean",void 0,{F:__dxlog_file5$1,L:62,S:this,A:["typeof initiator === 'boolean'",""]}),invariant$1(PublicKey.isPublicKey(I),void 0,{F:__dxlog_file5$1,L:63,S:this,A:["PublicKey.isPublicKey(localPeerId)",""]}),invariant$1(PublicKey.isPublicKey(U),void 0,{F:__dxlog_file5$1,L:64,S:this,A:["PublicKey.isPublicKey(remotePeerId)",""]}),this.initiator=$,this.localPeerId=I,this.remotePeerId=U,this._control=new ControlExtension({heartbeatInterval:q.controlHeartbeatInterval??CONTROL_HEARTBEAT_INTERVAL,heartbeatTimeout:q.controlHeartbeatTimeout??CONTROL_HEARTBEAT_TIMEOUT,onTimeout:()=>{this._destroying||this._aborting||(log$2.info("abort teleport due to onTimeout in ControlExtension",void 0,{F:__dxlog_file5$1,L:77,S:this,C:(G,K)=>G(...K)}),this.abort(new protocols.TimeoutError("control extension")).catch(G=>log$2.catch(G,void 0,{F:__dxlog_file5$1,L:78,S:this,C:(K,Y)=>K(...Y)})))}},this.localPeerId,this.remotePeerId),this._control.onExtensionRegistered.set(async G=>{if(log$2("remote extension",{name:G},{F:__dxlog_file5$1,L:86,S:this,C:(K,Y)=>K(...Y)}),invariant$1(!this._remoteExtensions.has(G),"Remote extension already exists",{F:__dxlog_file5$1,L:87,S:this,A:["!this._remoteExtensions.has(name)","'Remote extension already exists'"]}),this._remoteExtensions.add(G),this._extensions.has(G))try{await this._openExtension(G)}catch(K){await this.destroy(K)}}),this._muxer.stream.on("close",async()=>{if(this._destroying||this._aborting){log$2("destroy teleport due to muxer stream close, skipping due to already destroying/aborting",void 0,{F:__dxlog_file5$1,L:103,S:this,C:(G,K)=>G(...K)});return}await this.destroy()}),this._muxer.stream.on("error",async G=>{await this.destroy(G)}),this._muxer.statsUpdated.on(G=>{log$2.trace("dxos.mesh.teleport.stats",{localPeerId:I,remotePeerId:U,bytesSent:G.bytesSent,bytesSentRate:G.bytesSentRate,bytesReceived:G.bytesReceived,bytesReceivedRate:G.bytesReceivedRate,channels:G.channels},{F:__dxlog_file5$1,L:116,S:this,C:(K,Y)=>K(...Y)})})}get isOpen(){return this._open}get sessionIdString(){return this._sessionId?this._sessionId.truncate():"none"}get stream(){return this._muxer.stream}get stats(){return this._muxer.statsUpdated}async open($=PublicKey.random()){this._sessionId=$,log$2("open",void 0,{F:__dxlog_file5$1,L:150,S:this,C:(I,U)=>I(...U)}),this._setExtension("dxos.mesh.teleport.control",this._control),await this._openExtension("dxos.mesh.teleport.control"),this._open=!0,this._muxer.setSessionId($)}async close($){await this.destroy($)}async abort($){if(!(this._aborting||this._destroying)&&(this._aborting=!0,this._open=!1,!this._ctx.disposed)){await this._ctx.dispose();for(const I of this._extensions.values())try{await I.onAbort($)}catch(U){log$2.catch(U,void 0,{F:__dxlog_file5$1,L:180,S:this,C:(q,G)=>q(...G)})}await this._muxer.destroy($)}}async destroy($){if(!(this._destroying||this._aborting)&&(log$2("destroying teleport...",{extensionsCount:this._extensions.size},{F:__dxlog_file5$1,L:193,S:this,C:(I,U)=>I(...U)}),this._destroying=!0,this._open=!1,!this._ctx.disposed)){await this._ctx.dispose();for(const I of this._extensions.values())try{log$2("destroying extension",{name:I.constructor.name},{F:__dxlog_file5$1,L:205,S:this,C:(U,q)=>U(...q)}),await I.onClose($),log$2("destroyed extension",{name:I.constructor.name},{F:__dxlog_file5$1,L:207,S:this,C:(U,q)=>U(...q)})}catch(U){log$2.catch(U,void 0,{F:__dxlog_file5$1,L:209,S:this,C:(q,G)=>q(...G)})}await this._muxer.close(),log$2("teleport destroyed",void 0,{F:__dxlog_file5$1,L:214,S:this,C:(I,U)=>I(...U)})}}addExtension($,I){if(!this._open)throw new Error("Not open");log$2("addExtension",{name:$},{F:__dxlog_file5$1,L:222,S:this,C:(U,q)=>U(...q)}),this._setExtension($,I),scheduleTask(this._ctx,async()=>{try{await this._control.registerExtension($)}catch(U){if(U instanceof protocols.RpcClosedError)return;throw U}}),this._remoteExtensions.has($)&&scheduleTask(this._ctx,async()=>{await this._openExtension($)})}_setExtension($,I){invariant$1(!$.includes("/"),"Invalid extension name",{F:__dxlog_file5$1,L:246,S:this,A:["!extensionName.includes('/')","'Invalid extension name'"]}),invariant$1(!this._extensions.has($),"Extension already exists",{F:__dxlog_file5$1,L:247,S:this,A:["!this._extensions.has(extensionName)","'Extension already exists'"]}),this._extensions.set($,I)}async _openExtension($){log$2("open extension",{extensionName:$},{F:__dxlog_file5$1,L:252,S:this,C:(q,G)=>q(...G)});const I=this._extensions.get($)??failUndefined(),U={initiator:this.initiator,localPeerId:this.localPeerId,remotePeerId:this.remotePeerId,createPort:async(q,G)=>(invariant$1(!q.includes("/"),"Invalid channel name",{F:__dxlog_file5$1,L:260,S:this,A:["!channelName.includes('/')","'Invalid channel name'"]}),this._muxer.createPort(`${$}/${q}`,G)),createStream:async(q,G)=>(invariant$1(!q.includes("/"),"Invalid channel name",{F:__dxlog_file5$1,L:264,S:this,A:["!channelName.includes('/')","'Invalid channel name'"]}),this._muxer.createStream(`${$}/${q}`,G)),close:q=>{runInContextAsync(this._ctx,async()=>{await this.close(q)})}};await I.onOpen(U),log$2("extension opened",{extensionName:$},{F:__dxlog_file5$1,L:275,S:this,C:(q,G)=>q(...G)})}};_ts_decorate2$1([logInfo],Teleport.prototype,"sessionIdString",null),_ts_decorate2$1([synchronized],Teleport.prototype,"abort",null),_ts_decorate2$1([synchronized],Teleport.prototype,"destroy",null);var __require=($=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(I,U)=>(typeof require<"u"?require:I)[U]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});function _ts_decorate($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection.ts",STARTING_SIGNALLING_DELAY=10,TRANSPORT_CONNECTION_TIMEOUT=1e4,TRANSPORT_STATS_INTERVAL=5e3,MAX_SIGNALLING_DELAY=300,ConnectionState;(function($){$.CREATED="CREATED",$.INITIAL="INITIAL",$.CONNECTING="CONNECTING",$.CONNECTED="CONNECTED",$.CLOSING="CLOSING",$.CLOSED="CLOSED",$.ABORTING="ABORTING",$.ABORTED="ABORTED"})(ConnectionState||(ConnectionState={}));var Connection=class{constructor($,I,U,q,G,K,Y,J,X){this.topic=$,this.ownId=I,this.remoteId=U,this.sessionId=q,this.initiator=G,this._signalMessaging=K,this._protocol=Y,this._transportFactory=J,this._callbacks=X,this._ctx=new Context(void 0,{F:__dxlog_file,L:100}),this.connectedTimeoutContext=new Context(void 0,{F:__dxlog_file,L:101}),this._protocolClosed=new Trigger,this._transportClosed=new Trigger,this._state="CREATED",this._incomingSignalBuffer=[],this._outgoingSignalBuffer=[],this.stateChanged=new Event$1,this.errors=new ErrorStream,this._instanceId=PublicKey.random().toHex(),this.transportStats=new Event$1,this._signalSendTask=new DeferredTask(this._ctx,async()=>{await this._flushSignalBuffer()}),this._signallingDelay=STARTING_SIGNALLING_DELAY,log$2.trace("dxos.mesh.connection.construct",{sessionId:this.sessionId,topic:this.topic,localPeerId:this.ownId,remotePeerId:this.remoteId,initiator:this.initiator},{F:__dxlog_file,L:137,S:this,C:(Z,Q)=>Z(...Q)})}get sessionIdString(){return this.sessionId.truncate()}get state(){return this._state}get transport(){return this._transport}get protocol(){return this._protocol}async openConnection(){invariant$1(this._state==="INITIAL","Invalid state.",{F:__dxlog_file,L:167,S:this,A:["this._state === ConnectionState.INITIAL","'Invalid state.'"]}),log$2.trace("dxos.mesh.connection.open-connection",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file,L:168,S:this,C:($,I)=>$(...I)}),log$2.trace("dxos.mesh.connection.open",{sessionId:this.sessionId,topic:this.topic,localPeerId:this.ownId,remotePeerId:this.remoteId,initiator:this.initiator},{F:__dxlog_file,L:169,S:this,C:($,I)=>$(...I)}),this._changeState("CONNECTING"),this._protocol.open(this.sessionId).catch($=>{this.errors.raise($)}),this._protocol.stream.on("close",()=>{log$2("protocol stream closed",void 0,{F:__dxlog_file,L:186,S:this,C:($,I)=>$(...I)}),this._protocolClosed.wake(),this.close(new protocols.ProtocolError("protocol stream closed")).catch($=>this.errors.raise($))}),scheduleTask(this.connectedTimeoutContext,async()=>{log$2.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT/1e3}s for transport to connect, aborting`,void 0,{F:__dxlog_file,L:194,S:this,C:($,I)=>$(...I)}),await this.abort(new protocols.TimeoutError(`${TRANSPORT_CONNECTION_TIMEOUT/1e3}s for transport to connect`)).catch($=>this.errors.raise($))},TRANSPORT_CONNECTION_TIMEOUT),invariant$1(!this._transport,void 0,{F:__dxlog_file,L:202,S:this,A:["!this._transport",""]}),this._transport=this._transportFactory.createTransport({initiator:this.initiator,stream:this._protocol.stream,sendSignal:async $=>this._sendSignal($),sessionId:this.sessionId}),await this._transport.open(),this._transport.connected.once(async()=>{var $,I;this._changeState("CONNECTED"),await this.connectedTimeoutContext.dispose(),(I=($=this._callbacks)==null?void 0:$.onConnected)==null||I.call($),scheduleTaskInterval(this._ctx,async()=>this._emitTransportStats(),TRANSPORT_STATS_INTERVAL)}),this._transport.closed.once(()=>{this._transport=void 0,this._transportClosed.wake(),log$2("abort triggered by transport close",void 0,{F:__dxlog_file,L:223,S:this,C:($,I)=>$(...I)}),this.abort().catch($=>this.errors.raise($))}),this._transport.errors.handle(async $=>{log$2("transport error:",{err:$},{F:__dxlog_file,L:228,S:this,C:(I,U)=>I(...U)}),this.closeReason||(this.closeReason=$==null?void 0:$.message),$ instanceof protocols.ConnectionResetError?(log$2.info("aborting due to transport ConnectionResetError",void 0,{F:__dxlog_file,L:235,S:this,C:(I,U)=>I(...U)}),this.abort().catch(I=>this.errors.raise(I))):$ instanceof protocols.ConnectivityError?(log$2.info("aborting due to transport ConnectivityError",void 0,{F:__dxlog_file,L:238,S:this,C:(I,U)=>I(...U)}),this.abort().catch(I=>this.errors.raise(I))):$ instanceof protocols.UnknownProtocolError&&log$2.warn("unsure what to do with UnknownProtocolError, will keep on truckin",{err:$},{F:__dxlog_file,L:241,S:this,C:(I,U)=>I(...U)}),this._state!=="CLOSED"&&this._state!=="CLOSING"&&(await this.connectedTimeoutContext.dispose(),this.errors.raise($))});for(const $ of this._incomingSignalBuffer)this._transport.onSignal($);this._incomingSignalBuffer=[],log$2.trace("dxos.mesh.connection.open-connection",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file,L:257,S:this,C:($,I)=>$(...I)})}async abort($){var I,U;if(log$2("aborting...",{err:$},{F:__dxlog_file,L:264,S:this,C:(q,G)=>q(...G)}),this._state==="CLOSED"||this._state==="ABORTED"){log$2(`abort ignored: already ${this._state}`,this.closeReason,{F:__dxlog_file,L:266,S:this,C:(q,G)=>q(...G)});return}await this.connectedTimeoutContext.dispose(),this._changeState("ABORTING"),this.closeReason||(this.closeReason=$==null?void 0:$.message),await this._ctx.dispose();try{await this._closeProtocol({abort:!0})}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:282,S:this,C:(G,K)=>G(...K)})}try{await this._closeTransport()}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:289,S:this,C:(G,K)=>G(...K)})}try{(U=(I=this._callbacks)==null?void 0:I.onClosed)==null||U.call(I,$)}catch(q){log$2.catch(q,void 0,{F:__dxlog_file,L:295,S:this,C:(G,K)=>G(...K)})}this._changeState("ABORTED")}async close($){var q,G;if(this.closeReason?this.closeReason+=`; ${$==null?void 0:$.message}`:this.closeReason=$==null?void 0:$.message,this._state==="CLOSED"||this._state==="ABORTING"||this._state==="ABORTED")return;const I=this._state;this._changeState("CLOSING"),await this.connectedTimeoutContext.dispose(),await this._ctx.dispose(),log$2("closing...",{peerId:this.ownId},{F:__dxlog_file,L:320,S:this,C:(K,Y)=>K(...Y)});let U=!1;I!=="CONNECTED"&&(log$2(`graceful close requested when we were in ${I} state? aborting`,void 0,{F:__dxlog_file,L:324,S:this,C:(K,Y)=>K(...Y)}),U=!0);try{await this._closeProtocol({abort:U})}catch(K){log$2.catch(K,void 0,{F:__dxlog_file,L:330,S:this,C:(Y,J)=>Y(...J)})}try{await this._closeTransport()}catch(K){log$2.catch(K,void 0,{F:__dxlog_file,L:336,S:this,C:(Y,J)=>Y(...J)})}log$2("closed",{peerId:this.ownId},{F:__dxlog_file,L:339,S:this,C:(K,Y)=>K(...Y)}),this._changeState("CLOSED"),(G=(q=this._callbacks)==null?void 0:q.onClosed)==null||G.call(q,$)}async _closeProtocol($){log$2("closing protocol",$,{F:__dxlog_file,L:345,S:this,C:(I,U)=>I(...U)}),await Promise.race([$!=null&&$.abort?this._protocol.abort():this._protocol.close(),this._protocolClosed.wait()]),log$2("protocol closed",$,{F:__dxlog_file,L:347,S:this,C:(I,U)=>I(...U)})}async _closeTransport(){var $;log$2("closing transport",void 0,{F:__dxlog_file,L:351,S:this,C:(I,U)=>I(...U)}),await Promise.race([($=this._transport)==null?void 0:$.close(),this._transportClosed.wait()]),log$2("transport closed",void 0,{F:__dxlog_file,L:353,S:this,C:(I,U)=>I(...U)})}_sendSignal($){this._outgoingSignalBuffer.push($),this._signalSendTask.schedule()}async _flushSignalBuffer(){var $;if(this._outgoingSignalBuffer.length!==0)try{await cancelWithContext(this._ctx,sleep(this._signallingDelay)),this._signallingDelay=Math.min(this._signallingDelay*2,MAX_SIGNALLING_DELAY);const I=[...this._outgoingSignalBuffer];this._outgoingSignalBuffer.length=0,await this._signalMessaging.signal({author:this.ownId,recipient:this.remoteId,sessionId:this.sessionId,topic:this.topic,data:{signalBatch:{signals:I}}})}catch(I){if(I instanceof protocols.CancelledError||I instanceof Error&&(($=I.message)!=null&&$.includes("CANCELLED")))return;log$2.info("signal message failed to deliver",{err:I},{F:__dxlog_file,L:389,S:this,C:(U,q)=>U(...q)}),await this.close(new protocols.ConnectivityError("signal message failed to deliver",I))}}async signal($){var U,q;if(invariant$1($.sessionId,void 0,{F:__dxlog_file,L:398,S:this,A:["msg.sessionId",""]}),!$.sessionId.equals(this.sessionId)){log$2("dropping signal for incorrect session id",void 0,{F:__dxlog_file,L:400,S:this,C:(G,K)=>G(...K)});return}invariant$1($.data.signal||$.data.signalBatch,void 0,{F:__dxlog_file,L:403,S:this,A:["msg.data.signal || msg.data.signalBatch",""]}),invariant$1((U=$.author)==null?void 0:U.equals(this.remoteId),void 0,{F:__dxlog_file,L:404,S:this,A:["msg.author?.equals(this.remoteId)",""]}),invariant$1((q=$.recipient)==null?void 0:q.equals(this.ownId),void 0,{F:__dxlog_file,L:405,S:this,A:["msg.recipient?.equals(this.ownId)",""]});const I=$.data.signalBatch?$.data.signalBatch.signals??[]:[$.data.signal];for(const G of I)G&&(["CREATED","INITIAL"].includes(this.state)?(log$2("buffered signal",{peerId:this.ownId,remoteId:this.remoteId,msg:$.data},{F:__dxlog_file,L:414,S:this,C:(K,Y)=>K(...Y)}),this._incomingSignalBuffer.push(G)):(invariant$1(this._transport,"Connection not ready to accept signals.",{F:__dxlog_file,L:417,S:this,A:["this._transport","'Connection not ready to accept signals.'"]}),log$2("received signal",{peerId:this.ownId,remoteId:this.remoteId,msg:$.data},{F:__dxlog_file,L:418,S:this,C:(K,Y)=>K(...Y)}),await this._transport.onSignal(G)))}initiate(){this._changeState("INITIAL")}_changeState($){log$2("stateChanged",{from:this._state,to:$,peerId:this.ownId},{F:__dxlog_file,L:429,S:this,C:(I,U)=>I(...U)}),invariant$1($!==this._state,"Already in this state.",{F:__dxlog_file,L:430,S:this,A:["state !== this._state","'Already in this state.'"]}),this._state=$,this.stateChanged.emit($)}async _emitTransportStats(){var I;const $=await((I=this.transport)==null?void 0:I.getStats());$&&this.transportStats.emit($)}};_ts_decorate([logInfo],Connection.prototype,"sessionIdString",null),_ts_decorate([synchronized],Connection.prototype,"abort",null),_ts_decorate([synchronized],Connection.prototype,"close",null);var __dxlog_file2="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/signal/swarm-messenger.ts",SwarmMessage=protocols.schema.getCodecForType("dxos.mesh.swarm.SwarmMessage"),SwarmMessenger=class{constructor({sendMessage:$,onSignal:I,onOffer:U,topic:q}){this._ctx=new Context(void 0,{F:__dxlog_file2,L:33}),this._offerRecords=new ComplexMap(G=>G.toHex()),this._sendMessage=$,this._onSignal=I,this._onOffer=U,this._topic=q}async receiveMessage({author:$,recipient:I,payload:U}){var G,K,Y,J;if(U.type_url!=="dxos.mesh.swarm.SwarmMessage")return;const q=SwarmMessage.decode(U.value);this._topic.equals(q.topic)&&(log$2("received",{from:$,to:I,msg:q},{F:__dxlog_file2,L:69,S:this,C:(X,Z)=>X(...Z)}),(G=q.data)!=null&&G.offer?await this._handleOffer({author:$,recipient:I,message:q}):(K=q.data)!=null&&K.answer?await this._resolveAnswers(q):(Y=q.data)!=null&&Y.signal?await this._handleSignal({author:$,recipient:I,message:q}):(J=q.data)!=null&&J.signalBatch?await this._handleSignal({author:$,recipient:I,message:q}):log$2.warn("unknown message",{message:q},{F:__dxlog_file2,L:80,S:this,C:(X,Z)=>X(...Z)}))}async signal($){var I,U;invariant$1(((I=$.data)==null?void 0:I.signal)||((U=$.data)==null?void 0:U.signalBatch),"Invalid message",{F:__dxlog_file2,L:85,S:this,A:["message.data?.signal || message.data?.signalBatch","'Invalid message'"]}),await this._sendReliableMessage({author:$.author,recipient:$.recipient,message:$})}async offer($){const I={...$,messageId:PublicKey.random()};return new Promise((U,q)=>{this._offerRecords.set(I.messageId,{resolve:U}),this._sendReliableMessage({author:$.author,recipient:$.recipient,message:I}).catch(G=>q(G))})}async _sendReliableMessage({author:$,recipient:I,message:U}){const q={...U,messageId:U.messageId??PublicKey.random()};log$2("sending",{from:$,to:I,msg:q},{F:__dxlog_file2,L:123,S:this,C:(G,K)=>G(...K)}),await this._sendMessage({author:$,recipient:I,payload:{type_url:"dxos.mesh.swarm.SwarmMessage",value:SwarmMessage.encode(q)}})}async _resolveAnswers($){var U,q,G;invariant$1((q=(U=$.data)==null?void 0:U.answer)==null?void 0:q.offerMessageId,"No offerMessageId",{F:__dxlog_file2,L:135,S:this,A:["message.data?.answer?.offerMessageId","'No offerMessageId'"]});const I=this._offerRecords.get($.data.answer.offerMessageId);I&&(this._offerRecords.delete($.data.answer.offerMessageId),invariant$1((G=$.data)==null?void 0:G.answer,"No answer",{F:__dxlog_file2,L:139,S:this,A:["message.data?.answer","'No answer'"]}),log$2("resolving",{answer:$.data.answer},{F:__dxlog_file2,L:140,S:this,C:(K,Y)=>K(...Y)}),I.resolve($.data.answer))}async _handleOffer({author:$,recipient:I,message:U}){invariant$1(U.data.offer,"No offer",{F:__dxlog_file2,L:154,S:this,A:["message.data.offer","'No offer'"]});const q={author:$,recipient:I,...U,data:{offer:U.data.offer}},G=await this._onOffer(q);G.offerMessageId=U.messageId;try{await this._sendReliableMessage({author:I,recipient:$,message:{topic:U.topic,sessionId:U.sessionId,data:{answer:G}}})}catch(K){K instanceof protocols.TimeoutError?log$2.info("timeout sending answer to offer",{err:K},{F:__dxlog_file2,L:175,S:this,C:(Y,J)=>Y(...J)}):log$2.info("error sending answer to offer",{err:K},{F:__dxlog_file2,L:177,S:this,C:(Y,J)=>Y(...J)})}}async _handleSignal({author:$,recipient:I,message:U}){invariant$1(U.messageId,void 0,{F:__dxlog_file2,L:191,S:this,A:["message.messageId",""]}),invariant$1(U.data.signal||U.data.signalBatch,"Invalid message",{F:__dxlog_file2,L:192,S:this,A:["message.data.signal || message.data.signalBatch","'Invalid message'"]});const q={author:$,recipient:I,...U,data:{signal:U.data.signal,signalBatch:U.data.signalBatch}};await this._onSignal(q)}};function _ts_decorate2($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file3="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/peer.ts",ConnectionDisplacedError=class extends protocols.SystemError{constructor(){super("Connection displaced by remote initiator.")}},CONNECTION_COUNTS_STABLE_AFTER=5e3,Peer=class{constructor($,I,U,q,G,K,Y,J){this.id=$,this.topic=I,this.localPeerId=U,this._signalMessaging=q,this._protocolProvider=G,this._transportFactory=K,this._connectionLimiter=Y,this._callbacks=J,this._availableAfter=0,this.availableToConnect=!0,this._ctx=new Context(void 0,{F:__dxlog_file3,L:79}),this.advertizing=!1,this.initiating=!1,this.connectionDisplaced=new Event$1}async onOffer($){var U;const I=$.author;if(this.connection&&![ConnectionState.CREATED,ConnectionState.INITIAL,ConnectionState.CONNECTING].includes(this.connection.state))return log$2.info(`received offer when connection already in ${this.connection.state} state`,void 0,{F:__dxlog_file3,L:114,S:this,C:(q,G)=>q(...G)}),{accept:!1};if(this.connection||this.initiating)if(I.toHex()<this.localPeerId.toHex())log$2("close local connection",{localPeerId:this.id,topic:this.topic,remotePeerId:this.localPeerId,sessionId:(U=this.connection)==null?void 0:U.sessionId},{F:__dxlog_file3,L:123,S:this,C:(q,G)=>q(...G)}),this.connection&&await this.closeConnection(new ConnectionDisplacedError);else return{accept:!1};if(await this._callbacks.onOffer(I)&&!this.connection){invariant$1($.sessionId,void 0,{F:__dxlog_file3,L:143,S:this,A:["message.sessionId",""]});const q=this._createConnection(!1,$.sessionId);try{await this._connectionLimiter.connecting($.sessionId),q.initiate(),await q.openConnection()}catch(G){G instanceof protocols.CancelledError||log$2.info("connection error",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,err:G},{F:__dxlog_file3,L:153,S:this,C:(K,Y)=>K(...Y)}),await this.closeConnection(G)}return{accept:!0}}return{accept:!1}}async initiateConnection(){invariant$1(!this.initiating,"Initiation in progress.",{F:__dxlog_file3,L:170,S:this,A:["!this.initiating","'Initiation in progress.'"]}),invariant$1(!this.connection,"Already connected.",{F:__dxlog_file3,L:171,S:this,A:["!this.connection","'Already connected.'"]});const $=PublicKey.random();log$2("initiating...",{ownPeerId:this.localPeerId,topic:this.topic,remotePeerId:this.id,sessionId:$},{F:__dxlog_file3,L:173,S:this,C:(q,G)=>q(...G)});const I=this._createConnection(!0,$);this.initiating=!0;let U;try{if(await this._connectionLimiter.connecting($),I.initiate(),U=await this._signalMessaging.offer({author:this.localPeerId,recipient:this.id,sessionId:$,topic:this.topic,data:{offer:{}}}),log$2("received",{answer:U,topic:this.topic,ownId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:190,S:this,C:(q,G)=>q(...G)}),I.state!==ConnectionState.INITIAL){log$2("ignoring response",void 0,{F:__dxlog_file3,L:192,S:this,C:(q,G)=>q(...G)});return}}catch(q){throw log$2("initiation error: send offer",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:196,S:this,C:(G,K)=>G(...K)}),await I.abort(q),q}finally{this.initiating=!1}try{if(!U.accept){this._callbacks.onRejected();return}}catch(q){throw log$2("initiation error: accept answer",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:209,S:this,C:(G,K)=>G(...K)}),await I.abort(q),q}finally{this.initiating=!1}try{log$2("opening connection as initiator",void 0,{F:__dxlog_file3,L:222,S:this,C:(q,G)=>q(...G)}),await I.openConnection(),this._callbacks.onAccepted()}catch(q){throw log$2("initiation error: open connection",{err:q,topic:this.topic,peerId:this.localPeerId,remoteId:this.id},{F:__dxlog_file3,L:226,S:this,C:(G,K)=>G(...K)}),log$2.warn("closing connection due to unhandled error on openConnection",{err:q},{F:__dxlog_file3,L:233,S:this,C:(G,K)=>G(...K)}),await this.closeConnection(q),q}finally{this.initiating=!1}}_createConnection($,I){var q;log$2("creating connection",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$,sessionId:I},{F:__dxlog_file3,L:247,S:this,C:(G,K)=>G(...K)}),invariant$1(!this.connection,"Already connected.",{F:__dxlog_file3,L:254,S:this,A:["!this.connection","'Already connected.'"]});const U=new Connection(this.topic,this.localPeerId,this.id,I,$,this._signalMessaging,this._protocolProvider({initiator:$,localPeerId:this.localPeerId,remotePeerId:this.id,topic:this.topic}),this._transportFactory,{onConnected:()=>{this.availableToConnect=!0,this._lastConnectionTime=Date.now(),this._callbacks.onConnected(),this._connectionLimiter.doneConnecting(I),log$2.trace("dxos.mesh.connection.connected",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$},{F:__dxlog_file3,L:273,S:this,C:(G,K)=>G(...K)})},onClosed:G=>{log$2("connection closed",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$},{F:__dxlog_file3,L:282,S:this,C:(K,Y)=>K(...Y)}),this._connectionLimiter.doneConnecting(I),invariant$1(this.connection===U,"Connection mismatch (race condition).",{F:__dxlog_file3,L:287,S:this,A:["this.connection === connection","'Connection mismatch (race condition).'"]}),log$2.trace("dxos.mesh.connection.closed",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$},{F:__dxlog_file3,L:289,S:this,C:(K,Y)=>K(...Y)}),G instanceof ConnectionDisplacedError?this.connectionDisplaced.emit(this.connection):(this._lastConnectionTime&&this._lastConnectionTime+CONNECTION_COUNTS_STABLE_AFTER<Date.now()?this._availableAfter=0:(this.availableToConnect=!1,this._availableAfter=increaseInterval(this._availableAfter)),this._callbacks.onDisconnected(),scheduleTask(this._connectionCtx,()=>{this.availableToConnect=!0,this._callbacks.onPeerAvailable()},this._availableAfter)),this.connection=void 0}});return this._callbacks.onInitiated(U),(q=this._connectionCtx)==null||q.dispose(),this._connectionCtx=this._ctx.derive(),U.errors.handle(G=>{log$2.info("connection error, closing",{topic:this.topic,peerId:this.localPeerId,remoteId:this.id,initiator:$,err:G},{F:__dxlog_file3,L:329,S:this,C:(K,Y)=>K(...Y)}),log$2.trace("dxos.mesh.connection.error",{topic:this.topic,localPeerId:this.localPeerId,remotePeerId:this.id,sessionId:I,initiator:$,err:G},{F:__dxlog_file3,L:336,S:this,C:(K,Y)=>K(...Y)}),this.closeConnection(G)}),this.connection=U,U}async closeConnection($){if(!this.connection)return;const I=this.connection;log$2("closing...",{peerId:this.id,sessionId:I.sessionId},{F:__dxlog_file3,L:361,S:this,C:(U,q)=>U(...q)}),await I.close($),log$2("closed",{peerId:this.id,sessionId:I.sessionId},{F:__dxlog_file3,L:367,S:this,C:(U,q)=>U(...q)})}async onSignal($){if(!this.connection){log$2("dropping signal message for non-existent connection",{message:$},{F:__dxlog_file3,L:372,S:this,C:(I,U)=>I(...U)});return}await this.connection.signal($)}async safeDestroy($){var I;await this._ctx.dispose(),log$2("Destroying peer",{peerId:this.id,topic:this.topic},{F:__dxlog_file3,L:382,S:this,C:(U,q)=>U(...q)}),await((I=this==null?void 0:this.connection)==null?void 0:I.close($))}};_ts_decorate2([synchronized],Peer.prototype,"safeDestroy",null);var increaseInterval=$=>$===0?50:$<500?500:$<1e3?1e3:$<5e3?5e3:1e4;function _ts_decorate3($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file4="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm.ts",INITIATION_DELAY=100,getClassName=$=>Object.getPrototypeOf($).constructor.name,Swarm=class{constructor($,I,U,q,G,K,Y,J,X=INITIATION_DELAY){this._topic=$,this._ownPeerId=I,this._topology=U,this._protocolProvider=q,this._messenger=G,this._transportFactory=K,this._label=Y,this._connectionLimiter=J,this._initiationDelay=X,this._ctx=new Context(void 0,{F:__dxlog_file4,L:39}),this._listeningHandle=void 0,this._peers=new ComplexMap(PublicKey.hash),this._instanceId=PublicKey.random().toHex(),this.connectionAdded=new Event$1,this.disconnected=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,log$2.trace("dxos.mesh.swarm.constructor",protocols.trace.begin({id:this._instanceId,data:{topic:this._topic.toHex(),peerId:this._ownPeerId.toHex()}}),{F:__dxlog_file4,L:89,S:this,C:(Z,Q)=>Z(...Q)}),log$2("creating swarm",{peerId:I},{F:__dxlog_file4,L:93,S:this,C:(Z,Q)=>Z(...Q)}),U.init(this._getSwarmController()),this._swarmMessenger=new SwarmMessenger({sendMessage:async Z=>await this._messenger.sendMessage(Z),onSignal:async Z=>await this.onSignal(Z),onOffer:async Z=>await this.onOffer(Z),topic:this._topic}),log$2.trace("dxos.mesh.swarm.constructor",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file4,L:102,S:this,C:(Z,Q)=>Z(...Q)})}get connections(){return Array.from(this._peers.values()).map($=>$.connection).filter(isNotNullOrUndefined)}get ownPeerId(){return this._ownPeerId}get label(){return this._label}get topic(){return this._topic}async open(){invariant$1(!this._listeningHandle,void 0,{F:__dxlog_file4,L:129,S:this,A:["!this._listeningHandle",""]}),this._listeningHandle=await this._messenger.listen({peerId:this._ownPeerId,payloadType:"dxos.mesh.swarm.SwarmMessage",onMessage:async $=>{await this._swarmMessenger.receiveMessage($).catch(I=>log$2.info("Error while receiving message",{err:I},{F:__dxlog_file4,L:137,S:this,C:(U,q)=>U(...q)}))}})}async destroy(){var $;log$2("destroying...",void 0,{F:__dxlog_file4,L:143,S:this,C:(I,U)=>I(...U)}),await(($=this._listeningHandle)==null?void 0:$.unsubscribe()),this._listeningHandle=void 0,await this._ctx.dispose(),await this._topology.destroy(),await Promise.all(Array.from(this._peers.keys()).map(I=>this._destroyPeer(I,"swarm destroyed"))),log$2("destroyed",void 0,{F:__dxlog_file4,L:150,S:this,C:(I,U)=>I(...U)})}async setTopology($){invariant$1(!this._ctx.disposed,"Swarm is offline",{F:__dxlog_file4,L:154,S:this,A:["!this._ctx.disposed","'Swarm is offline'"]}),$!==this._topology&&(log$2("setting topology",{previous:getClassName(this._topology),topology:getClassName($)},{F:__dxlog_file4,L:158,S:this,C:(I,U)=>I(...U)}),await this._topology.destroy(),this._topology=$,this._topology.init(this._getSwarmController()),this._topology.update())}onSwarmEvent($){var I;if(log$2("swarm event",{swarmEvent:$},{F:__dxlog_file4,L:171,S:this,C:(U,q)=>U(...q)}),this._ctx.disposed){log$2("swarm event ignored for disposed swarm",void 0,{F:__dxlog_file4,L:174,S:this,C:(U,q)=>U(...q)});return}if($.peerAvailable){const U=PublicKey.from($.peerAvailable.peer);if(!U.equals(this._ownPeerId)){log$2("new peer",{peerId:U},{F:__dxlog_file4,L:181,S:this,C:(G,K)=>G(...K)});const q=this._getOrCreatePeer(U);q.advertizing=!0}}else if($.peerLeft){const U=this._peers.get(PublicKey.from($.peerLeft.peer));U?(U.advertizing=!1,((I=U.connection)==null?void 0:I.state)!==ConnectionState.CONNECTED&&this._destroyPeer(U.id,"peer left").catch(q=>log$2.catch(q,void 0,{F:__dxlog_file4,L:191,S:this,C:(G,K)=>G(...K)}))):log$2("received peerLeft but no peer found",{peer:$.peerLeft.peer},{F:__dxlog_file4,L:194,S:this,C:(q,G)=>q(...G)})}this._topology.update()}async onOffer($){var q,G;if(log$2("offer",{message:$},{F:__dxlog_file4,L:203,S:this,C:(K,Y)=>K(...Y)}),this._ctx.disposed)return log$2("ignored for disposed swarm",void 0,{F:__dxlog_file4,L:205,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};if(invariant$1($.author,void 0,{F:__dxlog_file4,L:210,S:this,A:["message.author",""]}),!((q=$.recipient)!=null&&q.equals(this._ownPeerId)))return log$2("rejecting offer with incorrect peerId",{message:$},{F:__dxlog_file4,L:212,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};if(!((G=$.topic)!=null&&G.equals(this._topic)))return log$2("rejecting offer with incorrect topic",{message:$},{F:__dxlog_file4,L:216,S:this,C:(K,Y)=>K(...Y)}),{accept:!1};const U=await this._getOrCreatePeer($.author).onOffer($);return this._topology.update(),U}async onSignal($){var U,q;if(log$2("signal",{message:$},{F:__dxlog_file4,L:227,S:this,C:(G,K)=>G(...K)}),this._ctx.disposed){log$2.info("ignored for offline swarm",void 0,{F:__dxlog_file4,L:229,S:this,C:(G,K)=>G(...K)});return}invariant$1((U=$.recipient)==null?void 0:U.equals(this._ownPeerId),`Invalid signal peer id expected=${this.ownPeerId}, actual=${$.recipient}`,{F:__dxlog_file4,L:232,S:this,A:["message.recipient?.equals(this._ownPeerId)","`Invalid signal peer id expected=${this.ownPeerId}, actual=${message.recipient}`"]}),invariant$1((q=$.topic)==null?void 0:q.equals(this._topic),void 0,{F:__dxlog_file4,L:236,S:this,A:["message.topic?.equals(this._topic)",""]}),invariant$1($.author,void 0,{F:__dxlog_file4,L:237,S:this,A:["message.author",""]}),await this._getOrCreatePeer($.author).onSignal($)}async goOffline(){await this._ctx.dispose(),await Promise.all([...this._peers.keys()].map($=>this._destroyPeer($,"goOffline")))}async goOnline(){this._ctx=new Context(void 0,{F:__dxlog_file4,L:253})}_getOrCreatePeer($){let I=this._peers.get($);return I||(I=new Peer($,this._topic,this._ownPeerId,this._swarmMessenger,this._protocolProvider,this._transportFactory,this._connectionLimiter,{onInitiated:U=>{this.connectionAdded.emit(U)},onConnected:()=>{this.connected.emit($)},onDisconnected:async()=>{this._isUnregistered(I)||(I.advertizing||await this._destroyPeer(I.id,"peer disconnected"),this.disconnected.emit($),this._topology.update())},onRejected:()=>{this._isUnregistered(I)||(log$2("peer rejected connection",{peerId:$},{F:__dxlog_file4,L:289,S:this,C:(U,q)=>U(...q)}),this._destroyPeer($,"peer rejected connection"))},onAccepted:()=>{this._topology.update()},onOffer:U=>this._topology.onOffer(U),onPeerAvailable:()=>{this._topology.update()}}),this._peers.set($,I)),I}async _destroyPeer($,I){const U=this._peers.get($);invariant$1(U,void 0,{F:__dxlog_file4,L:312,S:this,A:["peer",""]}),this._peers.delete($),await U.safeDestroy(new Error(I))}_getSwarmController(){return{getState:()=>({ownPeerId:this._ownPeerId,connected:Array.from(this._peers.values()).filter($=>$.connection).map($=>$.id),candidates:Array.from(this._peers.values()).filter($=>!$.connection&&$.advertizing&&$.availableToConnect).map($=>$.id),allPeers:Array.from(this._peers.values()).map($=>$.id)}),connect:$=>{this._ctx.disposed||scheduleTask(this._ctx,async()=>{try{await this._initiateConnection($)}catch(I){log$2("initiation error",I,{F:__dxlog_file4,L:339,S:this,C:(U,q)=>U(...q)})}})},disconnect:async $=>{this._ctx.disposed||scheduleTask(this._ctx,async()=>{await this._closeConnection($),this._topology.update()})}}}async _initiateConnection($){const I=this._ctx,U=this._getOrCreatePeer($);if($.toHex()<this._ownPeerId.toHex()&&(log$2("initiation delay",{remoteId:$},{F:__dxlog_file4,L:367,S:this,C:(q,G)=>q(...G)}),await sleep(this._initiationDelay)),!I.disposed){if(this._isUnregistered(U))throw new Error("Peer left during initiation delay");U.connection||(log$2("initiating connection...",{remoteId:$},{F:__dxlog_file4,L:383,S:this,C:(q,G)=>q(...G)}),await U.initiateConnection(),this._topology.update(),log$2("initiated",{remoteId:$},{F:__dxlog_file4,L:386,S:this,C:(q,G)=>q(...G)}))}}async _closeConnection($){const I=this._peers.get($);I&&await I.closeConnection()}_isUnregistered($){return!$||this._peers.get($.id)!==$}};_ts_decorate3([logInfo],Swarm.prototype,"_instanceId",void 0),_ts_decorate3([logInfo],Swarm.prototype,"ownPeerId",null),_ts_decorate3([logInfo],Swarm.prototype,"topic",null),_ts_decorate3([synchronized],Swarm.prototype,"onSwarmEvent",null),_ts_decorate3([synchronized],Swarm.prototype,"onOffer",null),_ts_decorate3([synchronized],Swarm.prototype,"goOffline",null),_ts_decorate3([synchronized],Swarm.prototype,"goOnline",null);var __dxlog_file5="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts",SwarmMapper=class{get peers(){return Array.from(this._peers.values())}constructor($){this._swarm=$,this._subscriptions=new EventSubscriptions,this._connectionSubscriptions=new ComplexMap(PublicKey.hash),this._peers=new ComplexMap(PublicKey.hash),this.mapUpdated=new Event$1,this._subscriptions.add($.connectionAdded.on(I=>{this._update(),this._connectionSubscriptions.set(I.remoteId,I.stateChanged.on(()=>{this._update()}))})),this._subscriptions.add($.disconnected.on(I=>{var U;(U=this._connectionSubscriptions.get(I))==null||U(),this._connectionSubscriptions.delete(I),this._update()})),this._update()}_update(){log$2("updating swarm",void 0,{F:__dxlog_file5,L:72,S:this,C:($,I)=>$(...I)}),this._peers.clear(),this._peers.set(this._swarm.ownPeerId,{id:this._swarm.ownPeerId,state:"ME",connections:[]});for(const $ of this._swarm.connections)this._peers.set($.remoteId,{id:$.remoteId,state:$.state,connections:[this._swarm.ownPeerId]});log$2("graph changed",{directConnections:this._swarm.connections.length,totalPeersInSwarm:this._peers.size},{F:__dxlog_file5,L:113,S:this,C:($,I)=>$(...I)}),this.mapUpdated.emit(Array.from(this._peers.values()))}destroy(){Array.from(this._connectionSubscriptions.values()).forEach($=>$()),this._subscriptions.clear()}},__dxlog_file6="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection-limiter.ts",MAX_CONCURRENT_INITIATING_CONNECTIONS=50,ConnectionLimiter=class{constructor({maxConcurrentInitConnections:$=MAX_CONCURRENT_INITIATING_CONNECTIONS}={}){this._ctx=new Context(void 0,{F:__dxlog_file6,L:23}),this._waitingPromises=new ComplexMap(PublicKey.hash),this.resolveWaitingPromises=new DeferredTask(this._ctx,async()=>{Array.from(this._waitingPromises.values()).slice(0,this._maxConcurrentInitConnections).forEach(({resolve:I})=>{I()})}),this._maxConcurrentInitConnections=$}async connecting($){invariant$1(!this._waitingPromises.has($),"Peer is already waiting for connection",{F:__dxlog_file6,L:48,S:this,A:["!this._waitingPromises.has(sessionId)","'Peer is already waiting for connection'"]}),log$2("waiting",{sessionId:$},{F:__dxlog_file6,L:49,S:this,C:(I,U)=>I(...U)}),await new Promise((I,U)=>{this._waitingPromises.set($,{resolve:I,reject:U}),this.resolveWaitingPromises.schedule()}),log$2("allow",{sessionId:$},{F:__dxlog_file6,L:57,S:this,C:(I,U)=>I(...U)})}doneConnecting($){log$2("done",{sessionId:$},{F:__dxlog_file6,L:64,S:this,C:(I,U)=>I(...U)}),this._waitingPromises.has($)&&(this._waitingPromises.get($).reject(new protocols.CancelledError),this._waitingPromises.delete($),this.resolveWaitingPromises.schedule())}},CONNECTION_GC_THRESHOLD=1e3*60*15,EventType;(function($){$.CONNECTION_STATE_CHANGED="CONNECTION_STATE_CHANGED",$.PROTOCOL_ERROR="PROTOCOL_ERROR",$.PROTOCOL_EXTENSIONS_INITIALIZED="PROTOCOL_EXTENSIONS_INITIALIZED",$.PROTOCOL_EXTENSIONS_HANDSHAKE="PROTOCOL_EXTENSIONS_HANDSHAKE",$.PROTOCOL_HANDSHAKE="PROTOCOL_HANDSHAKE"})(EventType||(EventType={}));var ConnectionLog=class{constructor(){this._swarms=new ComplexMap(PublicKey.hash),this.update=new Event$1}getSwarmInfo($){return this._swarms.get($)??raise$2(new Error(`Swarm not found: ${$}`))}get swarms(){return Array.from(this._swarms.values())}joinedSwarm($){const I={id:PublicKey.from($._instanceId),topic:$.topic,isActive:!0,label:$.label,connections:[]};this._swarms.set(PublicKey.from($._instanceId),I),this.update.emit(),$.connectionAdded.on(U=>{var G,K,Y;const q={state:ConnectionState.CREATED,closeReason:U.closeReason,remotePeerId:U.remoteId,sessionId:U.sessionId,transport:U.transport&&Object.getPrototypeOf(U.transport).constructor.name,protocolExtensions:[],events:[],lastUpdate:new Date};I.connections.push(q),this.update.emit(),U.stateChanged.on(async J=>{var X;if(q.state=J,q.closeReason=U.closeReason,q.lastUpdate=new Date,q.events.push({type:"CONNECTION_STATE_CHANGED",newState:J}),J===ConnectionState.CONNECTED){const Z=await((X=U.transport)==null?void 0:X.getDetails());q.transportDetails=Z}this.update.emit()}),(K=(G=U.protocol)==null?void 0:G.stats)==null||K.on(J=>{q.readBufferSize=J.readBufferSize,q.writeBufferSize=J.writeBufferSize,q.streams=J.channels,q.lastUpdate=new Date,this.update.emit()}),(Y=U.transportStats)==null||Y.on(J=>{q.transportBytesSent=J.bytesSent,q.transportBytesReceived=J.bytesReceived,q.transportPacketsSent=J.packetsSent,q.transportPacketsReceived=J.packetsReceived}),gcSwarm(I)})}leftSwarm($){this.getSwarmInfo(PublicKey.from($._instanceId)).isActive=!1,this.update.emit()}},gcSwarm=$=>{var I;$.connections=(I=$.connections)==null?void 0:I.filter(U=>U.lastUpdate?Date.now()-U.lastUpdate.getTime()<CONNECTION_GC_THRESHOLD:!0)};function _ts_decorate4($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file7="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/network-manager.ts",SwarmNetworkManager=class{constructor({transportFactory:$,signalManager:I,log:U}){this._swarms=new ComplexMap(PublicKey.hash),this._mappers=new ComplexMap(PublicKey.hash),this._instanceId=PublicKey.random().toHex(),this._connectionState=ConnectionState$2.ONLINE,this.connectionStateChanged=new Event$1,this.topicsUpdated=new Event$1,this._transportFactory=$,this._signalManager=I,this._signalManager.swarmEvent.on(({topic:q,swarmEvent:G})=>{var K;return(K=this._swarms.get(q))==null?void 0:K.onSwarmEvent(G)}),this._messenger=new Messenger({signalManager:this._signalManager}),this._signalConnection={join:q=>this._signalManager.join(q),leave:q=>this._signalManager.leave(q)},this._connectionLimiter=new ConnectionLimiter,U&&(this._connectionLog=new ConnectionLog)}get connectionLog(){return this._connectionLog}get connectionState(){return this._connectionState}get topics(){return Array.from(this._swarms.keys())}getSwarmMap($){return this._mappers.get($)}getSwarm($){return this._swarms.get($)}async open(){log$2.trace("dxos.mesh.network-manager.open",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file7,L:126,S:this,C:($,I)=>$(...I)}),await this._messenger.open(),await this._signalManager.open(),log$2.trace("dxos.mesh.network-manager.open",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file7,L:129,S:this,C:($,I)=>$(...I)})}async close(){for(const $ of this._swarms.keys())await this.leaveSwarm($).catch(I=>{log$2(I,void 0,{F:__dxlog_file7,L:135,S:this,C:(U,q)=>U(...q)})});await this._messenger.close(),await this._signalManager.close()}async joinSwarm({topic:$,peerId:I,topology:U,protocolProvider:q,label:G}){var Y;if(invariant$1(PublicKey.isPublicKey($),void 0,{F:__dxlog_file7,L:154,S:this,A:["PublicKey.isPublicKey(topic)",""]}),invariant$1(PublicKey.isPublicKey(I),void 0,{F:__dxlog_file7,L:155,S:this,A:["PublicKey.isPublicKey(peerId)",""]}),invariant$1(U,void 0,{F:__dxlog_file7,L:156,S:this,A:["topology",""]}),invariant$1(typeof q=="function",void 0,{F:__dxlog_file7,L:157,S:this,A:["typeof protocol === 'function'",""]}),this._swarms.has($))throw new Error(`Already connected to swarm: ${PublicKey.from($)}`);log$2("joining",{topic:PublicKey.from($),peerId:I,topology:U.toString()},{F:__dxlog_file7,L:162,S:this,C:(J,X)=>J(...X)});const K=new Swarm($,I,U,q,this._messenger,this._transportFactory,G,this._connectionLimiter);return K.errors.handle(J=>{log$2("swarm error",{error:J},{F:__dxlog_file7,L:175,S:this,C:(X,Z)=>X(...Z)})}),this._swarms.set($,K),this._mappers.set($,new SwarmMapper(K)),await K.open(),this._signalConnection.join({topic:$,peerId:I}).catch(J=>log$2.catch(J,void 0,{F:__dxlog_file7,L:184,S:this,C:(X,Z)=>X(...Z)})),this.topicsUpdated.emit(),(Y=this._connectionLog)==null||Y.joinedSwarm(K),log$2("joined",{topic:PublicKey.from($),count:this._swarms.size},{F:__dxlog_file7,L:188,S:this,C:(J,X)=>J(...X)}),{close:()=>this.leaveSwarm($)}}async leaveSwarm($){var q;if(!this._swarms.has($))return;log$2("leaving",{topic:PublicKey.from($)},{F:__dxlog_file7,L:205,S:this,C:(G,K)=>G(...K)});const I=this._swarms.get($);await this._signalConnection.leave({topic:$,peerId:I.ownPeerId}),this._mappers.get($).destroy(),this._mappers.delete($),(q=this._connectionLog)==null||q.leftSwarm(I),await I.destroy(),this._swarms.delete($),this.topicsUpdated.emit(),log$2("left",{topic:PublicKey.from($),count:this._swarms.size},{F:__dxlog_file7,L:219,S:this,C:(G,K)=>G(...K)})}async setConnectionState($){if($!==this._connectionState){switch($){case ConnectionState$2.OFFLINE:{this._connectionState=$,await Promise.all([...this._swarms.values()].map(I=>I.goOffline())),await this._messenger.close(),await this._signalManager.close();break}case ConnectionState$2.ONLINE:{this._connectionState=$,this._messenger.open(),await Promise.all([...this._swarms.values()].map(I=>I.goOnline())),await this._signalManager.open();break}}this.connectionStateChanged.emit(this._connectionState)}}};_ts_decorate4([synchronized],SwarmNetworkManager.prototype,"joinSwarm",null),_ts_decorate4([synchronized],SwarmNetworkManager.prototype,"leaveSwarm",null);function _ts_decorate5($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file11="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/memory-transport.ts",MEMORY_TRANSPORT_DELAY=1,createStreamDelay=$=>new readableBrowserExports.Transform({objectMode:!0,transform:(I,U,q)=>{setTimeout(()=>q(null,I),$)}}),MemoryTransport=(Zn=class{constructor(I){this._options=I,this._instanceId=PublicKey.random(),this._remote=new Trigger,this._outgoingDelay=createStreamDelay(MEMORY_TRANSPORT_DELAY),this._incomingDelay=createStreamDelay(MEMORY_TRANSPORT_DELAY),this._closed=!1,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,invariant$1(!Zn._connections.has(this._instanceId),"Duplicate memory connection",{F:__dxlog_file11,L:64,S:this,A:["!MemoryTransport._connections.has(this._instanceId)","'Duplicate memory connection'"]}),Zn._connections.set(this._instanceId,this)}get isOpen(){return!this._closed}async open(){if(log$2("opening...",void 0,{F:__dxlog_file11,L:74,S:this,C:(I,U)=>I(...U)}),this._options.initiator){log$2("sending signal",void 0,{F:__dxlog_file11,L:78,S:this,C:(I,U)=>I(...U)});try{await this._options.sendSignal({payload:{transportId:this._instanceId.toHex()}})}catch(I){this._closed||this.errors.raise(toError(I))}}else this._remote.wait({timeout:this._options.timeout??1e3}).then(I=>{if(!this._closed){if(this._remoteInstanceId=I,this._remoteConnection=Zn._connections.get(this._remoteInstanceId),!this._remoteConnection){this._closed=!0,this.closed.emit();return}invariant$1(!this._remoteConnection._remoteConnection,`Remote already connected: ${this._remoteInstanceId}`,{F:__dxlog_file11,L:104,S:this,A:["!this._remoteConnection._remoteConnection","`Remote already connected: ${this._remoteInstanceId}`"]}),this._remoteConnection._remoteConnection=this,this._remoteConnection._remoteInstanceId=this._instanceId,log$2("connected",void 0,{F:__dxlog_file11,L:108,S:this,C:(U,q)=>U(...q)}),this._options.stream.pipe(this._outgoingDelay).pipe(this._remoteConnection._options.stream).pipe(this._incomingDelay).pipe(this._options.stream),this.connected.emit(),this._remoteConnection.connected.emit()}}).catch(I=>{this._closed||this.errors.raise(I)})}async close(){log$2("closing...",void 0,{F:__dxlog_file11,L:129,S:this,C:(I,U)=>I(...U)}),this._closed=!0,Zn._connections.delete(this._instanceId),this._remoteConnection&&(this._remoteConnection._closed=!0,Zn._connections.delete(this._remoteInstanceId),this._options.stream.unpipe(this._incomingDelay),this._incomingDelay.unpipe(this._remoteConnection._options.stream),this._remoteConnection._options.stream.unpipe(this._outgoingDelay),this._outgoingDelay.unpipe(this._options.stream),this._options.stream.unpipe(this._outgoingDelay),this._remoteConnection.closed.emit(),this._remoteConnection._remoteConnection=void 0,this._remoteConnection=void 0),this.closed.emit(),log$2("closed",void 0,{F:__dxlog_file11,L:157,S:this,C:(I,U)=>I(...U)})}async onSignal({payload:I}){if(log$2("received signal",{payload:I},{F:__dxlog_file11,L:161,S:this,C:(q,G)=>q(...G)}),!(I!=null&&I.transportId))return;const U=I.transportId;if(U){const q=PublicKey.fromHex(U);this._remote.wake(q)}}async getDetails(){return this._instanceId.toHex()}async getStats(){return{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0}}},Zn._connections=new ComplexMap(PublicKey.hash),Zn);_ts_decorate5([logInfo],MemoryTransport.prototype,"_instanceId",void 0),_ts_decorate5([logInfo],MemoryTransport.prototype,"_remoteInstanceId",void 0);var toError=$=>$ instanceof Error?$:new Error(String($)),TransportKind;(function($){$.SIMPLE_PEER="SIMPLE_PEER",$.SIMPLE_PEER_PROXY="SIMPLE_PEER_PROXY",$.LIBDATACHANNEL="LIBDATACHANNEL",$.MEMORY="MEMORY",$.TCP="TCP"})(TransportKind||(TransportKind={}));var wrtc=null;try{wrtc=__require("@koush/wrtc")}catch{}var __dxlog_file12="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts",SimplePeerTransport=class{get isOpen(){return this._piped&&!this._closed}constructor($){this._params=$,this._closed=!1,this._piped=!1,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream,this._instanceId=PublicKey.random().toHex(),log$2.trace("dxos.mesh.webrtc-transport.constructor",protocols.trace.begin({id:this._instanceId}),{F:__dxlog_file12,L:50,S:this,C:(I,U)=>I(...U)}),log$2("created connection",$,{F:__dxlog_file12,L:51,S:this,C:(I,U)=>I(...U)}),this._peer=new SimplePeerConstructor({channelName:"dxos.mesh.transport",initiator:this._params.initiator,wrtc:SimplePeerConstructor.WEBRTC_SUPPORT?void 0:wrtc??raise$2(new Error("wrtc not available")),config:this._params.webrtcConfig}),this._peer.on("signal",async I=>{log$2("signal",I,{F:__dxlog_file12,L:60,S:this,C:(U,q)=>U(...q)}),await this._params.sendSignal({payload:{data:I}})}),this._peer.on("connect",()=>{log$2("connected",void 0,{F:__dxlog_file12,L:65,S:this,C:(I,U)=>I(...U)}),this._params.stream.pipe(this._peer).pipe(this._params.stream),this._piped=!0,this.connected.emit()}),this._peer.on("close",async()=>{log$2("closed",void 0,{F:__dxlog_file12,L:72,S:this,C:(I,U)=>I(...U)}),await this.close()}),this._peer.on("error",async I=>{var U,q;if(typeof RTCError<"u"&&I instanceof RTCError)I.errorDetail==="sctp-failure"?this.errors.raise(new protocols.ConnectionResetError("sctp-failure from RTCError",I)):(log$2.info("unknown RTCError",{err:I},{F:__dxlog_file12,L:83,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new protocols.UnknownProtocolError("unknown RTCError",I)));else if("code"in I)switch(log$2.info("simple-peer error",I,{F:__dxlog_file12,L:88,S:this,C:(G,K)=>G(...K)}),I.code){case"ERR_WEBRTC_SUPPORT":this.errors.raise(new protocols.ProtocolError("WebRTC not supported",I));break;case"ERR_SIGNALING":this.errors.raise(new protocols.ConnectivityError("signaling failure",I));break;case"ERR_ICE_CONNECTION_FAILURE":case"ERR_DATA_CHANNEL":case"ERR_CONNECTION_FAILURE":this.errors.raise(new protocols.ConnectivityError("unknown communication failure",I));break;case"ERR_CREATE_OFFER":case"ERR_CREATE_ANSWER":case"ERR_SET_LOCAL_DESCRIPTION":case"ERR_SET_REMOTE_DESCRIPTION":case"ERR_ADD_ICE_CANDIDATE":this.errors.raise(new protocols.UnknownProtocolError("unknown simple-peer library failure",I));break;default:this.errors.raise(new Error("unknown simple-peer error"));break}else log$2.info("unknown peer connection error",I,{F:__dxlog_file12,L:114,S:this,C:(G,K)=>G(...K)}),this.errors.raise(I);try{typeof((q=(U=this._peer)==null?void 0:U._pc)==null?void 0:q.getStats)=="function"&&this._peer._pc.getStats().then(G=>{log$2.info("report after webrtc error",{config:this._params.webrtcConfig,stats:Object.fromEntries(G.entries())},{F:__dxlog_file12,L:122,S:this,C:(K,Y)=>K(...Y)})})}catch(G){log$2.catch(G,void 0,{F:__dxlog_file12,L:129,S:this,C:(K,Y)=>K(...Y)})}await this.close()}),log$2.trace("dxos.mesh.webrtc-transport.constructor",protocols.trace.end({id:this._instanceId}),{F:__dxlog_file12,L:135,S:this,C:(I,U)=>I(...U)})}async getStats(){const $=await this._getStats();return $?{bytesSent:$.transport.bytesSent,bytesReceived:$.transport.bytesReceived,packetsSent:$.transport.packetsSent,packetsReceived:$.transport.packetsReceived,rawStats:$.raw}:{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rawStats:{}}}async _getStats(){var $,I;return typeof((I=($=this._peer)==null?void 0:$._pc)==null?void 0:I.getStats)!="function"?null:await this._peer._pc.getStats().then(U=>{const q=Array.from(U.entries()),G=q.filter(X=>X[1].type==="transport")[0][1],K=q.filter(X=>X[0]===G.selectedCandidatePairId);let Y,J;return K.length>0&&(Y=K[0][1],J=q.filter(X=>X[0]===Y.remoteCandidateId)[0][1]),{datachannel:q.filter(X=>X[1].type==="data-channel")[0][1],transport:G,selectedCandidatePair:Y,remoteCandidate:J,raw:Object.fromEntries(U.entries())}})}async getDetails(){const $=await this._getStats(),I=$==null?void 0:$.remoteCandidate;return I?I.candidateType==="relay"?`${I.ip}:${I.port}/${I.protocol} relay for ${I.relatedAddress}:${I.relatedPort}`:`${I.ip}:${I.port}/${I.protocol} ${I.candidateType}`:"unavailable"}async open(){}async close(){log$2("closing...",void 0,{F:__dxlog_file12,L:200,S:this,C:($,I)=>$(...I)}),!this._closed&&(this._disconnectStreams(),this._peer.destroy(),this._closed=!0,this.closed.emit(),log$2("closed",void 0,{F:__dxlog_file12,L:208,S:this,C:($,I)=>$(...I)}))}async onSignal($){this._closed||(invariant($.payload.data,"Signal message must contain signal data."),this._peer.signal($.payload.data))}_disconnectStreams(){var $,I,U,q;this._piped&&((q=(U=(I=($=this._params.stream).unpipe)==null?void 0:I.call($,this._peer))==null?void 0:U.unpipe)==null||q.call(U,this._params.stream))}},__dxlog_file13="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport-service.ts",SimplePeerTransportService=class{constructor($){this._webrtcConfig=$,this.transports=new ComplexMap(PublicKey.hash)}open($){return new Stream$1(({ready:U,next:q,close:G})=>{const K=new readableBrowserExports.Duplex({read:()=>{const X=[...J.writeCallbacks];J.writeCallbacks.length=0;for(const Z of X)Z()},write:function(X,Z,Q){q({data:{payload:X}}),Q()}}),Y=new SimplePeerTransport({initiator:$.initiator,stream:K,webrtcConfig:this._webrtcConfig,sendSignal:async X=>{q({signal:{payload:X}})}});Y.open(),q({connection:{state:ConnectionState$1.CONNECTING}}),Y.connected.on(()=>{q({connection:{state:ConnectionState$1.CONNECTED}})}),Y.errors.handle(X=>{q({connection:{state:ConnectionState$1.CLOSED,error:X.toString()}}),G(X)}),Y.closed.on(()=>{q({connection:{state:ConnectionState$1.CLOSED}}),G()});const J={transport:Y,stream:K,writeCallbacks:[],state:"OPEN"};U(),this.transports.set($.proxyId,J)})}async sendSignal({proxyId:$,signal:I}){invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:119,S:this,A:["this.transports.has(proxyId)",""]}),await this.transports.get($).transport.onSignal(I)}async getDetails({proxyId:$}){return invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:124,S:this,A:["this.transports.has(proxyId)",""]}),{details:await this.transports.get($).transport.getDetails()}}async getStats({proxyId:$}){return invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:129,S:this,A:["this.transports.has(proxyId)",""]}),{stats:await this.transports.get($).transport.getStats()}}async sendData({proxyId:$,payload:I}){var G;((G=this.transports.get($))==null?void 0:G.state)!=="OPEN"&&log$2.debug("transport is closed",void 0,{F:__dxlog_file13,L:135,S:this,C:(K,Y)=>K(...Y)}),invariant$1(this.transports.has($),void 0,{F:__dxlog_file13,L:137,S:this,A:["this.transports.has(proxyId)",""]});const U=this.transports.get($);U.stream.push(I)||await new Promise(K=>{U.writeCallbacks.push(K)})}async close({proxyId:$}){var I,U;await((I=this.transports.get($))==null?void 0:I.transport.close()),await((U=this.transports.get($))==null?void 0:U.stream.end()),this.transports.get($)&&(this.transports.get($).state="CLOSED"),log$2("Closed.",void 0,{F:__dxlog_file13,L:153,S:this,C:(q,G)=>q(...G)})}};function _ts_decorate6($,I,U,q){var G=arguments.length,K=G<3?I:q===null?q=Object.getOwnPropertyDescriptor(I,U):q,Y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")K=Reflect.decorate($,I,U,q);else for(var J=$.length-1;J>=0;J--)(Y=$[J])&&(K=(G<3?Y(K):G>3?Y(I,U,K):Y(I,U))||K);return G>3&&K&&Object.defineProperty(I,U,K),K}var __dxlog_file15="/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/libdatachannel-transport.ts",DATACHANNEL_LABEL="dxos.mesh.transport",MAX_BUFFERED_AMOUNT=64*1024,MAX_MESSAGE_SIZE=64*1024,LibDataChannelTransport=(lr=class{constructor(I){this._options=I,this._closed=!1,this._connected=!1,this._writeCallback=null,this._readyForCandidates=new Trigger,this.closed=new Event$1,this.connected=new Event$1,this.errors=new ErrorStream}get isOpen(){return!!this._peer&&!this._closed}async open(){this._closed&&this.errors.raise(new Error("connection already closed"));const{RTCPeerConnection:I}=(await importESM("node-datachannel/polyfill")).default;this._options.webrtcConfig?this._options.webrtcConfig.iceServers=this._options.webrtcConfig.iceServers??[]:this._options.webrtcConfig={iceServers:[]},this._peer=new I(this._options.webrtcConfig),this._peer.onicecandidateerror=U=>{log$2.error("peer.onicecandidateerror",{event:U},{F:__dxlog_file15,L:77,S:this,C:(q,G)=>q(...G)})},this._peer.onconnectionstatechange=U=>{var q;log$2.debug("peer.onconnectionstatechange",{event:U,peerConnectionState:(q=this._peer)==null?void 0:q.connectionState,transportConnectionState:this._connected},{F:__dxlog_file15,L:81,S:this,C:(G,K)=>G(...K)})},this._peer.onicecandidate=async U=>{if(log$2.debug("peer.onicecandidate",{event:U},{F:__dxlog_file15,L:91,S:this,C:(q,G)=>q(...G)}),U.candidate)try{await this._options.sendSignal({payload:{data:{type:"candidate",candidate:{candidate:U.candidate.candidate,sdpMLineIndex:U.candidate.sdpMLineIndex??0,sdpMid:U.candidate.sdpMid??0}}}})}catch(q){log$2.info("signaling error",{err:q},{F:__dxlog_file15,L:108,S:this,C:(G,K)=>G(...K)})}},this._options.initiator?(invariant$1(this._peer,"not open",{F:__dxlog_file15,L:114,S:this,A:["this._peer","'not open'"]}),this._peer.createOffer().then(async U=>{var q;this._closed||(((q=this._peer)==null?void 0:q.connectionState)!=="connecting"&&(log$2.error("peer not connecting",{peer:this._peer},{F:__dxlog_file15,L:125,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("invalid state: peer is initiator, but other peer not in state connecting"))),log$2.debug("creating offer",{peer:this._peer,offer:U},{F:__dxlog_file15,L:129,S:this,C:(G,K)=>G(...K)}),await this._peer.setLocalDescription(U),await this._options.sendSignal({payload:{data:{type:U.type,sdp:U.sdp}}}))}).catch(U=>{this.errors.raise(U)}),this._handleChannel(this._peer.createDataChannel(DATACHANNEL_LABEL)),log$2.debug("created data channel",void 0,{F:__dxlog_file15,L:139,S:this,C:(U,q)=>U(...q)}),this._peer.ondatachannel=()=>{this.errors.raise(new Error("unexpected ondatachannel event for initiator"))}):this._peer.ondatachannel=U=>{log$2.debug("peer.ondatachannel (non-initiator)",{event:U},{F:__dxlog_file15,L:145,S:this,C:(q,G)=>q(...G)}),U.channel.label!==DATACHANNEL_LABEL&&this.errors.raise(new Error(`unexpected channel label ${U.channel.label}`)),this._handleChannel(U.channel)},lr._instanceCount++}async close(){await this._close(),--lr._instanceCount===0&&(await importESM("node-datachannel")).cleanup()}async _close(){var I;if(!this._closed){await this._disconnectStreams();try{(I=this._peer)==null||I.close()}catch(U){this.errors.raise(U)}this._peer=void 0,this._closed=!0,this.closed.emit()}}_handleChannel(I){this._channel=I,this._channel.onopen=()=>{log$2.debug("channel.onopen",void 0,{F:__dxlog_file15,L:190,S:this,C:(q,G)=>q(...G)});const U=new stream.Duplex({read:()=>{},write:async(q,G,K)=>{q.length>MAX_MESSAGE_SIZE&&this.errors.raise(new Error(`message too large: ${q.length} > ${MAX_MESSAGE_SIZE}`));try{I.send(q)}catch(Y){this.errors.raise(Y),await this._close()}this._channel.bufferedAmount>MAX_BUFFERED_AMOUNT?(this._writeCallback!==null&&log$2.error("consumer trying to write before we are ready for more data",void 0,{F:__dxlog_file15,L:207,S:this,C:(Y,J)=>Y(...J)}),this._writeCallback=K):K()}});U.pipe(this._options.stream).pipe(U),this._stream=U,this._connected=!0,this.connected.emit()},this._channel.onclose=async U=>{log$2.info("channel.onclose",{err:U},{F:__dxlog_file15,L:223,S:this,C:(q,G)=>q(...G)}),await this._close()},this._channel.onerror=async U=>{this.errors.raise(new Error("channel error: "+U.toString())),await this._close()},this._channel.onbufferedamountlow=()=>{const U=this._writeCallback;this._writeCallback=null,U==null||U()},this._channel.onmessage=U=>{let q=U.data;q instanceof ArrayBuffer&&(q=export_Buffer.from(q)),this._stream.push(q)}}async onSignal(I){invariant$1(this._peer,"not open",{F:__dxlog_file15,L:249,S:this,A:["this._peer","'not open'"]});try{const U=I.payload.data;switch(U.type){case"offer":{if(this._peer.connectionState!=="new"){log$2.error("received offer but peer not in state new",{peer:this._peer},{F:__dxlog_file15,L:256,S:this,C:(q,G)=>q(...G)}),this.errors.raise(new Error("invalid signalling state: received offer when peer is not in state new"));break}try{await this._peer.setRemoteDescription({type:U.type,sdp:U.sdp});const q=await this._peer.createAnswer();await this._peer.setLocalDescription(q),await this._options.sendSignal({payload:{data:{type:q.type,sdp:q.sdp}}}),this._readyForCandidates.wake()}catch(q){log$2.error("cannot handle offer from signalling server",{err:q},{F:__dxlog_file15,L:268,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("error handling offer"))}break}case"answer":try{await this._peer.setRemoteDescription({type:U.type,sdp:U.sdp}),this._readyForCandidates.wake()}catch(q){log$2.error("cannot handle answer from signalling server",{err:q},{F:__dxlog_file15,L:279,S:this,C:(G,K)=>G(...K)}),this.errors.raise(new Error("error handling answer"))}break;case"candidate":await this._readyForCandidates.wait(),await this._peer.addIceCandidate({candidate:U.candidate.candidate});break;default:log$2.error("unhandled signal type",{type:U.type,signal:I},{F:__dxlog_file15,L:290,S:this,C:(q,G)=>q(...G)}),this.errors.raise(new Error(`unhandled signal type ${U.type}`))}}catch(U){log$2.catch(U,void 0,{F:__dxlog_file15,L:294,S:this,C:(q,G)=>q(...G)})}}async getDetails(){const I=await this._getStats(),U=I==null?void 0:I.remoteCandidate;return U?U.candidateType==="relay"?`${U.ip}:${U.port} relay for ${U.relatedAddress}:${U.relatedPort}`:`${U.ip}:${U.port} ${U.candidateType}`:"unavailable"}async getStats(){const I=await this._getStats();return I?{bytesSent:I.transport.bytesSent,bytesReceived:I.transport.bytesReceived,packetsSent:0,packetsReceived:0,rawStats:I.raw}:{bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rawStats:{}}}async _getStats(){invariant$1(this._peer,"not open",{F:__dxlog_file15,L:334,S:this,A:["this._peer","'not open'"]});const I=await this._peer.getStats(),U=Array.from(I.entries()),q=U.filter(J=>J[1].type==="transport")[0][1],G=U.filter(J=>J[0]===q.selectedCandidatePairId);let K,Y;return G.length>0&&(K=G[0][1],Y=U.filter(J=>J[0]===K.remoteCandidateId)[0][1]),{transport:q,selectedCandidatePair:K,remoteCandidate:Y,raw:Object.fromEntries(I)}}async _disconnectStreams(){var I,U,q,G;(G=(q=(U=(I=this._options.stream).unpipe)==null?void 0:U.call(I,this._stream))==null?void 0:q.unpipe)==null||G.call(q,this._options.stream)}},lr._instanceCount=0,lr);_ts_decorate6([synchronized],LibDataChannelTransport.prototype,"_close",null);var importESM=Function("path","return import(path)");const index=Object.freeze(Object.defineProperty({__proto__:null,Connection,ConnectionLimiter,ConnectionLog,get ConnectionState(){return ConnectionState},get EventType(){return EventType},LibDataChannelTransport,MAX_CONCURRENT_INITIATING_CONNECTIONS,MemoryTransport,SimplePeerTransport,SimplePeerTransportService,Swarm,SwarmMapper,SwarmMessenger,SwarmNetworkManager,get TransportKind(){return TransportKind}},Symbol.toStringTag,{value:"Module"}));exports.runShell=runShell,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})});
1002
1002
  //# sourceMappingURL=shell.umd.js.map