trtc-sdk-v5 5.8.7-beta.7 → 5.8.7-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/trtc.esm.js CHANGED
@@ -1,35 +1,35 @@
1
- var Om=Object.create;var Ss=Object.defineProperty,Mm=Object.defineProperties,Nl=Object.getOwnPropertyDescriptor,km=Object.getOwnPropertyDescriptors,Pm=Object.getOwnPropertyNames,Go=Object.getOwnPropertySymbols,vl=Object.getPrototypeOf,xa=Object.prototype.hasOwnProperty,Dl=Object.prototype.propertyIsEnumerable,Lm=Reflect.get;var Is=Math.pow,La=(s,i,e)=>i in s?Ss(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,v=(s,i)=>{for(var e in i||(i={}))xa.call(i,e)&&La(s,e,i[e]);if(Go)for(var e of Go(i))Dl.call(i,e)&&La(s,e,i[e]);return s},L=(s,i)=>Mm(s,km(i));var Ol=(s,i)=>{var e={};for(var t in s)xa.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&Go)for(var t of Go(s))i.indexOf(t)<0&&Dl.call(s,t)&&(e[t]=s[t]);return e};var ri=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),As=(s,i)=>{for(var e in i)Ss(s,e,{get:i[e],enumerable:!0})},xm=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of Pm(i))!xa.call(s,r)&&r!==e&&Ss(s,r,{get:()=>i[r],enumerable:!(t=Nl(i,r))||t.enumerable});return s};var Se=(s,i,e)=>(e=s!=null?Om(vl(s)):{},xm(i||!s||!s.__esModule?Ss(e,"default",{value:s,enumerable:!0}):e,s));var b=(s,i,e,t)=>{for(var r=t>1?void 0:t?Nl(i,e):i,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&Ss(i,e,r),r};var l=(s,i,e)=>(La(s,typeof i!="symbol"?i+"":i,e),e);var ye=(s,i,e)=>Lm(vl(s),e,i);var f=(s,i,e)=>new Promise((t,r)=>{var o=c=>{try{a(e.next(c))}catch(d){r(d)}},n=c=>{try{a(e.throw(c))}catch(d){r(d)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(o,n);a((e=e.apply(s,i)).next())});var De=ri((eg,wa)=>{"use strict";var wm=Object.prototype.hasOwnProperty,Ve="~";function Cs(){}Object.create&&(Cs.prototype=Object.create(null),new Cs().__proto__||(Ve=!1));function Um(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function Ml(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new Um(e,t||s,r),n=Ve?Ve+i:i;return s._events[n]?s._events[n].fn?s._events[n]=[s._events[n],o]:s._events[n].push(o):(s._events[n]=o,s._eventsCount++),s}function Wo(s,i){--s._eventsCount===0?s._events=new Cs:delete s._events[i]}function ke(){this._events=new Cs,this._eventsCount=0}ke.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)wm.call(e,t)&&i.push(Ve?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};ke.prototype.listeners=function(i){var e=Ve?Ve+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,n=new Array(o);r<o;r++)n[r]=t[r].fn;return n};ke.prototype.listenerCount=function(i){var e=Ve?Ve+i:i,t=this._events[e];return t?t.fn?1:t.length:0};ke.prototype.emit=function(i,e,t,r,o,n){var a=Ve?Ve+i:i;if(!this._events[a])return!1;var c=this._events[a],d=arguments.length,h,u;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,t),!0;case 4:return c.fn.call(c.context,e,t,r),!0;case 5:return c.fn.call(c.context,e,t,r,o),!0;case 6:return c.fn.call(c.context,e,t,r,o,n),!0}for(u=1,h=new Array(d-1);u<d;u++)h[u-1]=arguments[u];c.fn.apply(c.context,h)}else{var p=c.length,_;for(u=0;u<p;u++)switch(c[u].once&&this.removeListener(i,c[u].fn,void 0,!0),d){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,e);break;case 3:c[u].fn.call(c[u].context,e,t);break;case 4:c[u].fn.call(c[u].context,e,t,r);break;default:if(!h)for(_=1,h=new Array(d-1);_<d;_++)h[_-1]=arguments[_];c[u].fn.apply(c[u].context,h)}}return!0};ke.prototype.on=function(i,e,t){return Ml(this,i,e,t,!1)};ke.prototype.once=function(i,e,t){return Ml(this,i,e,t,!0)};ke.prototype.removeListener=function(i,e,t,r){var o=Ve?Ve+i:i;if(!this._events[o])return this;if(!e)return Wo(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&Wo(this,o);else{for(var a=0,c=[],d=n.length;a<d;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&c.push(n[a]);c.length?this._events[o]=c.length===1?c[0]:c:Wo(this,o)}return this};ke.prototype.removeAllListeners=function(i){var e;return i?(e=Ve?Ve+i:i,this._events[e]&&Wo(this,e)):(this._events=new Cs,this._eventsCount=0),this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.addListener=ke.prototype.on;ke.prefixed=Ve;ke.EventEmitter=ke;typeof wa!="undefined"&&(wa.exports=ke)});var bc=ri((IE,ou)=>{var su=ou.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(s){return s.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(s){return s.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(s){return s.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(s){return s.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(s){return"imageattr:%s %s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(s){return"simulcast:%s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(su).forEach(function(s){var i=su[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var cu=ri(_i=>{var Jr=function(s){return String(Number(s))===s?Number(s):s},Jp=function(s,i,e,t){if(t&&!e)i[t]=Jr(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Jr(s[r+1]))},jp=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;Jp(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},nu=bc(),qp=RegExp.prototype.test.bind(/^([a-z])=(.*)/);_i.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(qp).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(nu[o]||[]).length;a+=1){var c=nu[o][a];if(c.reg.test(n))return jp(c,t,n)}}),i.media=e,i};var au=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Jr(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};_i.parseParams=function(s){return s.split(/;\s?/).reduce(au,{})};_i.parseFmtpConfig=_i.parseParams;_i.parsePayloads=function(s){return s.toString().split(" ").map(Number)};_i.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Jr),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};_i.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(au,{})})};_i.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Jr(e):(t=Jr(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var lu=ri((CE,du)=>{var Nc=bc(),Xp=/%[sdv%]/g,Qp=function(s){var i=1,e=arguments,t=e.length;return s.replace(Xp,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},Zs=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return Qp.apply(null,r)},zp=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Yp=["i","c","b","a"];du.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||zp,t=i.innerOrder||Yp,r=[];return e.forEach(function(o){Nc[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Zs(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Zs(o,n,a))})})}),s.media.forEach(function(o){r.push(Zs("m",Nc.m[0],o)),t.forEach(function(n){Nc[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Zs(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(Zs(n,a,c))})})})}),r.join(`\r
1
+ var VE=Object.create;var cd=Object.defineProperty,FE=Object.defineProperties,Of=Object.getOwnPropertyDescriptor,$E=Object.getOwnPropertyDescriptors,BE=Object.getOwnPropertyNames,Mu=Object.getOwnPropertySymbols,Pf=Object.getPrototypeOf,xh=Object.prototype.hasOwnProperty,xf=Object.prototype.propertyIsEnumerable,HE=Reflect.get;var dd=Math.pow,Ph=(n,r,e)=>r in n?cd(n,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[r]=e,oe=(n,r)=>{for(var e in r||(r={}))xh.call(r,e)&&Ph(n,e,r[e]);if(Mu)for(var e of Mu(r))xf.call(r,e)&&Ph(n,e,r[e]);return n},_e=(n,r)=>FE(n,$E(r));var Mf=(n,r)=>{var e={};for(var t in n)xh.call(n,t)&&r.indexOf(t)<0&&(e[t]=n[t]);if(n!=null&&Mu)for(var t of Mu(n))r.indexOf(t)<0&&xf.call(n,t)&&(e[t]=n[t]);return e};var Mn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),ud=(n,r)=>{for(var e in r)cd(n,e,{get:r[e],enumerable:!0})},WE=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of BE(r))!xh.call(n,i)&&i!==e&&cd(n,i,{get:()=>r[i],enumerable:!(t=Of(r,i))||t.enumerable});return n};var $t=(n,r,e)=>(e=n!=null?VE(Pf(n)):{},WE(r||!n||!n.__esModule?cd(e,"default",{value:n,enumerable:!0}):e,n));var j=(n,r,e,t)=>{for(var i=t>1?void 0:t?Of(r,e):r,o=n.length-1,a;o>=0;o--)(a=n[o])&&(i=(t?a(r,e,i):a(i))||i);return t&&i&&cd(r,e,i),i};var E=(n,r,e)=>(Ph(n,typeof r!="symbol"?r+"":r,e),e);var Mt=(n,r,e)=>HE(Pf(n),e,r);var N=(n,r,e)=>new Promise((t,i)=>{var o=p=>{try{d(e.next(p))}catch(_){i(_)}},a=p=>{try{d(e.throw(p))}catch(_){i(_)}},d=p=>p.done?t(p.value):Promise.resolve(p.value).then(o,a);d((e=e.apply(n,r)).next())});var nr=Mn((dy,Mh)=>{"use strict";var GE=Object.prototype.hasOwnProperty,Ir="~";function ld(){}Object.create&&(ld.prototype=Object.create(null),new ld().__proto__||(Ir=!1));function jE(n,r,e){this.fn=n,this.context=r,this.once=e||!1}function Lf(n,r,e,t,i){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new jE(e,t||n,i),a=Ir?Ir+r:r;return n._events[a]?n._events[a].fn?n._events[a]=[n._events[a],o]:n._events[a].push(o):(n._events[a]=o,n._eventsCount++),n}function Lu(n,r){--n._eventsCount===0?n._events=new ld:delete n._events[r]}function dr(){this._events=new ld,this._eventsCount=0}dr.prototype.eventNames=function(){var r=[],e,t;if(this._eventsCount===0)return r;for(t in e=this._events)GE.call(e,t)&&r.push(Ir?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r};dr.prototype.listeners=function(r){var e=Ir?Ir+r:r,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var i=0,o=t.length,a=new Array(o);i<o;i++)a[i]=t[i].fn;return a};dr.prototype.listenerCount=function(r){var e=Ir?Ir+r:r,t=this._events[e];return t?t.fn?1:t.length:0};dr.prototype.emit=function(r,e,t,i,o,a){var d=Ir?Ir+r:r;if(!this._events[d])return!1;var p=this._events[d],_=arguments.length,S,v;if(p.fn){switch(p.once&&this.removeListener(r,p.fn,void 0,!0),_){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,e),!0;case 3:return p.fn.call(p.context,e,t),!0;case 4:return p.fn.call(p.context,e,t,i),!0;case 5:return p.fn.call(p.context,e,t,i,o),!0;case 6:return p.fn.call(p.context,e,t,i,o,a),!0}for(v=1,S=new Array(_-1);v<_;v++)S[v-1]=arguments[v];p.fn.apply(p.context,S)}else{var A=p.length,w;for(v=0;v<A;v++)switch(p[v].once&&this.removeListener(r,p[v].fn,void 0,!0),_){case 1:p[v].fn.call(p[v].context);break;case 2:p[v].fn.call(p[v].context,e);break;case 3:p[v].fn.call(p[v].context,e,t);break;case 4:p[v].fn.call(p[v].context,e,t,i);break;default:if(!S)for(w=1,S=new Array(_-1);w<_;w++)S[w-1]=arguments[w];p[v].fn.apply(p[v].context,S)}}return!0};dr.prototype.on=function(r,e,t){return Lf(this,r,e,t,!1)};dr.prototype.once=function(r,e,t){return Lf(this,r,e,t,!0)};dr.prototype.removeListener=function(r,e,t,i){var o=Ir?Ir+r:r;if(!this._events[o])return this;if(!e)return Lu(this,o),this;var a=this._events[o];if(a.fn)a.fn===e&&(!i||a.once)&&(!t||a.context===t)&&Lu(this,o);else{for(var d=0,p=[],_=a.length;d<_;d++)(a[d].fn!==e||i&&!a[d].once||t&&a[d].context!==t)&&p.push(a[d]);p.length?this._events[o]=p.length===1?p[0]:p:Lu(this,o)}return this};dr.prototype.removeAllListeners=function(r){var e;return r?(e=Ir?Ir+r:r,this._events[e]&&Lu(this,e)):(this._events=new ld,this._eventsCount=0),this};dr.prototype.off=dr.prototype.removeListener;dr.prototype.addListener=dr.prototype.on;dr.prefixed=Ir;dr.EventEmitter=dr;typeof Mh!="undefined"&&(Mh.exports=dr)});var Cm=Mn((wv,u_)=>{var d_=u_.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(n){return n.encoding?"rtpmap:%d %s/%s/%s":n.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(n){return n.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(n){return n.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(n){return"extmap:%d"+(n.direction?"/%s":"%v")+(n["encrypt-uri"]?" %s":"%v")+" %s"+(n.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(n){return n.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(n){var r="candidate:%s %d %s %d %s %d typ %s";return r+=n.raddr!=null?" raddr %s rport %d":"%v%v",r+=n.tcptype!=null?" tcptype %s":"%v",n.generation!=null&&(r+=" generation %d"),r+=n["network-id"]!=null?" network-id %d":"%v",r+=n["network-cost"]!=null?" network-cost %d":"%v",r}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(n){var r="ssrc:%d";return n.attribute!=null&&(r+=" %s",n.value!=null&&(r+=":%s")),r}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(n){return n.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(n){return n.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(n){return"imageattr:%s %s %s"+(n.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(n){return"simulcast:%s %s"+(n.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(n){return"ts-refclk:%s"+(n.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(n){var r="mediaclk:";return r+=n.id!=null?"id=%s %s":"%v%s",r+=n.mediaClockValue!=null?"=%s":"",r+=n.rateNumerator!=null?" rate=%s":"",r+=n.rateDenominator!=null?"/%s":"",r}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(d_).forEach(function(n){var r=d_[n];r.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var m_=Mn(Jn=>{var xa=function(n){return String(Number(n))===n?Number(n):n},ZT=function(n,r,e,t){if(t&&!e)r[t]=xa(n[1]);else for(var i=0;i<e.length;i+=1)n[i+1]!=null&&(r[e[i]]=xa(n[i+1]))},eS=function(n,r,e){var t=n.name&&n.names;n.push&&!r[n.push]?r[n.push]=[]:t&&!r[n.name]&&(r[n.name]={});var i=n.push?{}:t?r[n.name]:r;ZT(e.match(n.reg),i,n.names,n.name),n.push&&r[n.push].push(i)},l_=Cm(),tS=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Jn.parse=function(n){var r={},e=[],t=r;return n.split(/(\r\n|\r|\n)/).filter(tS).forEach(function(i){var o=i[0],a=i.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var d=0;d<(l_[o]||[]).length;d+=1){var p=l_[o][d];if(p.reg.test(a))return eS(p,t,a)}}),r.media=e,r};var h_=function(n,r){var e=r.split(/=(.+)/,2);return e.length===2?n[e[0]]=xa(e[1]):e.length===1&&r.length>1&&(n[e[0]]=void 0),n};Jn.parseParams=function(n){return n.split(/;\s?/).reduce(h_,{})};Jn.parseFmtpConfig=Jn.parseParams;Jn.parsePayloads=function(n){return n.toString().split(" ").map(Number)};Jn.parseRemoteCandidates=function(n){for(var r=[],e=n.split(" ").map(xa),t=0;t<e.length;t+=3)r.push({component:e[t],ip:e[t+1],port:e[t+2]});return r};Jn.parseImageAttributes=function(n){return n.split(" ").map(function(r){return r.substring(1,r.length-1).split(",").reduce(h_,{})})};Jn.parseSimulcastStreamList=function(n){return n.split(";").map(function(r){return r.split(",").map(function(e){var t,i=!1;return e[0]!=="~"?t=xa(e):(t=xa(e.substring(1,e.length)),i=!0),{scid:t,paused:i}})})}});var f_=Mn((Ov,p_)=>{var Rm=Cm(),rS=/%[sdv%]/g,iS=function(n){var r=1,e=arguments,t=e.length;return n.replace(rS,function(i){if(r>=t)return i;var o=e[r];switch(r+=1,i){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},$d=function(n,r,e){var t=r.format instanceof Function?r.format(r.push?e:e[r.name]):r.format,i=[n+"="+t];if(r.names)for(var o=0;o<r.names.length;o+=1){var a=r.names[o];r.name?i.push(e[r.name][a]):i.push(e[r.names[o]])}else i.push(e[r.name]);return iS.apply(null,i)},nS=["v","o","s","i","u","e","p","c","b","t","r","z","a"],oS=["i","c","b","a"];p_.exports=function(n,r){r=r||{},n.version==null&&(n.version=0),n.name==null&&(n.name=" "),n.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=r.outerOrder||nS,t=r.innerOrder||oS,i=[];return e.forEach(function(o){Rm[o].forEach(function(a){a.name in n&&n[a.name]!=null?i.push($d(o,a,n)):a.push in n&&n[a.push]!=null&&n[a.push].forEach(function(d){i.push($d(o,a,d))})})}),n.media.forEach(function(o){i.push($d("m",Rm.m[0],o)),t.forEach(function(a){Rm[a].forEach(function(d){d.name in o&&o[d.name]!=null?i.push($d(a,d,o)):d.push in o&&o[d.push]!=null&&o[d.push].forEach(function(p){i.push($d(a,d,p))})})})}),i.join(`\r
2
2
  `)+`\r
3
- `}});var uu=ri(gi=>{var or=cu(),Kp=lu();gi.write=Kp;gi.parse=or.parse;gi.parseParams=or.parseParams;gi.parseFmtpConfig=or.parseFmtpConfig;gi.parsePayloads=or.parsePayloads;gi.parseRemoteCandidates=or.parseRemoteCandidates;gi.parseImageAttributes=or.parseImageAttributes;gi.parseSimulcastStreamList=or.parseSimulcastStreamList});var cl=ri((ek,Vh)=>{var Uh=Vh.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(s){return s.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(s){return s.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(s){return s.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(s){return s.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(s){return"imageattr:%s %s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(s){return"simulcast:%s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Uh).forEach(function(s){var i=Uh[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Fh=ri(vi=>{var ps=function(s){return String(Number(s))===s?Number(s):s},y_=function(s,i,e,t){if(t&&!e)i[t]=ps(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=ps(s[r+1]))},b_=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;y_(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},Bh=cl(),N_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);vi.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(N_).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Bh[o]||[]).length;a+=1){var c=Bh[o][a];if(c.reg.test(n))return b_(c,t,n)}}),i.media=e,i};var $h=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=ps(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};vi.parseParams=function(s){return s.split(/;\s?/).reduce($h,{})};vi.parseFmtpConfig=vi.parseParams;vi.parsePayloads=function(s){return s.toString().split(" ").map(Number)};vi.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(ps),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};vi.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce($h,{})})};vi.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ps(e):(t=ps(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Gh=ri((ik,Hh)=>{var dl=cl(),v_=/%[sdv%]/g,D_=function(s){var i=1,e=arguments,t=e.length;return s.replace(v_,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},Oo=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return D_.apply(null,r)},O_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],M_=["i","c","b","a"];Hh.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||O_,t=i.innerOrder||M_,r=[];return e.forEach(function(o){dl[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Oo(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Oo(o,n,a))})})}),s.media.forEach(function(o){r.push(Oo("m",dl.m[0],o)),t.forEach(function(n){dl[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Oo(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(Oo(n,a,c))})})})}),r.join(`\r
3
+ `}});var __=Mn(qn=>{var ys=m_(),sS=f_();qn.write=sS;qn.parse=ys.parse;qn.parseParams=ys.parseParams;qn.parseFmtpConfig=ys.parseFmtpConfig;qn.parsePayloads=ys.parsePayloads;qn.parseRemoteCandidates=ys.parseRemoteCandidates;qn.parseImageAttributes=ys.parseImageAttributes;qn.parseSimulcastStreamList=ys.parseSimulcastStreamList});var hf=Mn((HU,Yg)=>{var Qg=Yg.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(n){return n.encoding?"rtpmap:%d %s/%s/%s":n.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(n){return n.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(n){return n.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(n){return"extmap:%d"+(n.direction?"/%s":"%v")+(n["encrypt-uri"]?" %s":"%v")+" %s"+(n.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(n){return n.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(n){var r="candidate:%s %d %s %d %s %d typ %s";return r+=n.raddr!=null?" raddr %s rport %d":"%v%v",r+=n.tcptype!=null?" tcptype %s":"%v",n.generation!=null&&(r+=" generation %d"),r+=n["network-id"]!=null?" network-id %d":"%v",r+=n["network-cost"]!=null?" network-cost %d":"%v",r}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(n){var r="ssrc:%d";return n.attribute!=null&&(r+=" %s",n.value!=null&&(r+=":%s")),r}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(n){return n.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(n){return n.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(n){return"imageattr:%s %s %s"+(n.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(n){return"simulcast:%s %s"+(n.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(n){return"ts-refclk:%s"+(n.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(n){var r="mediaclk:";return r+=n.id!=null?"id=%s %s":"%v%s",r+=n.mediaClockValue!=null?"=%s":"",r+=n.rateNumerator!=null?" rate=%s":"",r+=n.rateDenominator!=null?"/%s":"",r}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Qg).forEach(function(n){var r=Qg[n];r.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var eE=Mn(no=>{var sc=function(n){return String(Number(n))===n?Number(n):n},xI=function(n,r,e,t){if(t&&!e)r[t]=sc(n[1]);else for(var i=0;i<e.length;i+=1)n[i+1]!=null&&(r[e[i]]=sc(n[i+1]))},MI=function(n,r,e){var t=n.name&&n.names;n.push&&!r[n.push]?r[n.push]=[]:t&&!r[n.name]&&(r[n.name]={});var i=n.push?{}:t?r[n.name]:r;xI(e.match(n.reg),i,n.names,n.name),n.push&&r[n.push].push(i)},Kg=hf(),LI=RegExp.prototype.test.bind(/^([a-z])=(.*)/);no.parse=function(n){var r={},e=[],t=r;return n.split(/(\r\n|\r|\n)/).filter(LI).forEach(function(i){var o=i[0],a=i.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var d=0;d<(Kg[o]||[]).length;d+=1){var p=Kg[o][d];if(p.reg.test(a))return MI(p,t,a)}}),r.media=e,r};var Zg=function(n,r){var e=r.split(/=(.+)/,2);return e.length===2?n[e[0]]=sc(e[1]):e.length===1&&r.length>1&&(n[e[0]]=void 0),n};no.parseParams=function(n){return n.split(/;\s?/).reduce(Zg,{})};no.parseFmtpConfig=no.parseParams;no.parsePayloads=function(n){return n.toString().split(" ").map(Number)};no.parseRemoteCandidates=function(n){for(var r=[],e=n.split(" ").map(sc),t=0;t<e.length;t+=3)r.push({component:e[t],ip:e[t+1],port:e[t+2]});return r};no.parseImageAttributes=function(n){return n.split(" ").map(function(r){return r.substring(1,r.length-1).split(",").reduce(Zg,{})})};no.parseSimulcastStreamList=function(n){return n.split(";").map(function(r){return r.split(",").map(function(e){var t,i=!1;return e[0]!=="~"?t=sc(e):(t=sc(e.substring(1,e.length)),i=!0),{scid:t,paused:i}})})}});var rE=Mn((GU,tE)=>{var mf=hf(),UI=/%[sdv%]/g,VI=function(n){var r=1,e=arguments,t=e.length;return n.replace(UI,function(i){if(r>=t)return i;var o=e[r];switch(r+=1,i){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},Iu=function(n,r,e){var t=r.format instanceof Function?r.format(r.push?e:e[r.name]):r.format,i=[n+"="+t];if(r.names)for(var o=0;o<r.names.length;o+=1){var a=r.names[o];r.name?i.push(e[r.name][a]):i.push(e[r.names[o]])}else i.push(e[r.name]);return VI.apply(null,i)},FI=["v","o","s","i","u","e","p","c","b","t","r","z","a"],$I=["i","c","b","a"];tE.exports=function(n,r){r=r||{},n.version==null&&(n.version=0),n.name==null&&(n.name=" "),n.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=r.outerOrder||FI,t=r.innerOrder||$I,i=[];return e.forEach(function(o){mf[o].forEach(function(a){a.name in n&&n[a.name]!=null?i.push(Iu(o,a,n)):a.push in n&&n[a.push]!=null&&n[a.push].forEach(function(d){i.push(Iu(o,a,d))})})}),n.media.forEach(function(o){i.push(Iu("m",mf.m[0],o)),t.forEach(function(a){mf[a].forEach(function(d){d.name in o&&o[d.name]!=null?i.push(Iu(a,d,o)):d.push in o&&o[d.push]!=null&&o[d.push].forEach(function(p){i.push(Iu(a,d,p))})})})}),i.join(`\r
4
4
  `)+`\r
5
- `}});var ll=ri(Di=>{var Tr=Fh(),k_=Gh();Di.write=k_;Di.parse=Tr.parse;Di.parseParams=Tr.parseParams;Di.parseFmtpConfig=Tr.parseFmtpConfig;Di.parsePayloads=Tr.parsePayloads;Di.parseRemoteCandidates=Tr.parseRemoteCandidates;Di.parseImageAttributes=Tr.parseImageAttributes;Di.parseSimulcastStreamList=Tr.parseSimulcastStreamList});import jU from"webrtc-adapter";var Dh=Se(De());var kl=(O=>(O[O.INVALID_PARAMETER=4096]="INVALID_PARAMETER",O[O.INVALID_OPERATION=4097]="INVALID_OPERATION",O[O.NOT_SUPPORTED=4098]="NOT_SUPPORTED",O[O.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",O[O.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",O[O.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",O[O.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",O[O.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",O[O.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",O[O.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",O[O.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",O[O.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",O[O.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",O[O.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",O[O.CLIENT_BANNED=16448]="CLIENT_BANNED",O[O.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",O[O.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",O[O.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",O[O.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",O[O.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",O[O.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",O[O.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",O[O.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",O[O.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",O[O.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",O[O.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",O[O.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",O[O.API_CALL_ABORTED=16461]="API_CALL_ABORTED",O[O.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",O[O.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",O[O.UNKNOWN=65535]="UNKNOWN",O))(kl||{}),S=kl;var Vm=function(s){for(let i in S)if(S[i]===s)return i;return"UNKNOWN"},Ua=class extends Error{constructor({name:e="RtcError",message:t,code:r=S.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${Vm(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);l(this,"code");l(this,"extraCode");l(this,"message");l(this,"originMessage");l(this,"name");l(this,"constraint");this.code=r,this.extraCode=o,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},y=Ua;var Pl=new Date().getTime(),Va=0,Ll=function(s){Pl=s,Va=Pl-new Date().getTime();let i=new Date;i.setTime(s),R.info(`baseTime from server: ${i} offset: ${Va}`)},Rs=function(){return new Date().getTime()+Va},Jo=function(){let s=new Date;return s.setTime(Rs()),s.toLocaleString()};var Be={};As(Be,{bytes2ms:()=>Op,convertObjectNumberToInt:()=>Rn,copyProperties:()=>Dp,deepClone:()=>Hr,deepMerge:()=>fi,delay:()=>$i,fibonacci:()=>Fr,formatedTime:()=>Bp,getAbilityConfigUrl:()=>Yl,getConstructorName:()=>An,getContainerFromElement:()=>Up,getEnv:()=>vp,getInternalVersion:()=>Lp,getLoggerUrl:()=>Vi,getMuteStateFromFlag:()=>Bi,getNetworkType:()=>Zl,getNumNetworkType:()=>Gr,getReconnectionTimeout:()=>Ft,getStringByteLength:()=>Cn,getTurnServer:()=>wp,getUint32Version:()=>Ac,getValueType:()=>Ae,getViewListFromView:()=>zs,glog:()=>ru,ipv4ToUint32:()=>Qs,isArray:()=>_e,isAudioWorkletSupported:()=>Pp,isBoolean:()=>ue,isConstructor:()=>Xs,isEmpty:()=>Tc,isFunction:()=>te,isLangChinese:()=>xt,isMediaStreamTrack:()=>kp,isNumber:()=>K,isObject:()=>Ct,isOverseaSdkAppId:()=>In,isPlainObject:()=>Ze,isPortrait:()=>Ic,isPromise:()=>sr,isRemoteTrack:()=>yt,isString:()=>z,isUndefined:()=>E,loadImage:()=>Ys,ms2bytes:()=>Mp,ms2samples:()=>iu,performanceNow:()=>k,promiseAny:()=>js,samples2ms:()=>tu,setNetworkType:()=>Ec,stringify:()=>Rt,stringifyIncludeValue:()=>Sc,throttlePromise:()=>Cc});var Ka={};As(Ka,{AUDIO_MUTE_BIT:()=>Yo,AUDIO_STAT_BIT:()=>ki,AUX_STAT_BIT:()=>Ki,AUX_STREAM_MSID:()=>Wa,BACKEND_ENV:()=>zo,BASE_DOC_URL:()=>kt,BASE_HOST:()=>xl,CAPABILITIES_KEYS:()=>en,CLASS_NAME:()=>np,CLOUD_CONSOLE_URL:()=>Hm,CROSS_ROOM_BIT:()=>Ga,DATA_FREEZE_TIMING:()=>Zo,DOC_URL:()=>Gm,DTLS_STATE_UNKNOWN:()=>ft,ENV_NAME:()=>si,EXCHANGE_SDP_TIMEOUT:()=>Qa,INTERVAL:()=>tr,IS_WORKER:()=>Rr,IS_WORKLET:()=>bs,KIBANA_EVENT:()=>Ge,LOCAL_STREAM_PUBLISH_STATE:()=>Vl,LOGGER_CMD_TYPE:()=>Oi,LOGGER_DOMAIN:()=>$a,LOGGER_DOMAIN_OVERSEA:()=>Fa,LOG_LEVEL:()=>pt,LOG_LEVEL_NAME:()=>cp,MAIN_STREAM_MSID:()=>Ds,MAX_RTT:()=>ks,MICROPHONE_COMMUNICATIONS:()=>ap,MICROPHONE_DEFAULT:()=>er,MUTE_ALL_BIT:()=>jm,NAME:()=>m,NETWORK_TYPE:()=>jo,NOT_SUPPORTED_H264:()=>Zi,PAUSED_RETRY_COUNT:()=>za,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Os,PEER_CONNECTION_STATE:()=>ne,PEER_LEAVE_REASON:()=>Ya,RAF:()=>vr,RECOVER_CAPTURE_INTERVAL:()=>Nr,REMOTE_STREAM_TYPE_AUX:()=>ja,REMOTE_STREAM_TYPE_MAIN:()=>Ja,RENDER_FREEZE_TIMING:()=>ip,RIC:()=>Li,SCHEDULE_DOMAIN:()=>ni,SCHEDULE_TIMEOUT:()=>op,SDP_SEMANTICS_PLAN_B:()=>yr,SDP_SEMANTICS_UNIFIED_PLAN:()=>Pi,SECOND_HOST:()=>$m,SIGNAL_PING_PONG_INTERVAL:()=>Jm,SIGNAL_PING_TIMEOUT:()=>Wm,SIGNAL_RECONNECTION_COUNT:()=>ep,SMALL_STAT_BIT:()=>vs,SPEAKER_DEFAULT:()=>Ms,STORAGE_EXPIRES_TIME:()=>qo,STREAM_TYPE_BIG:()=>rp,STREAM_TYPE_SMALL:()=>sp,SUBSCRIBE_SMALL_RETRY_COUNT:()=>br,SYNC_USER_LIST_INTERVAL:()=>tp,Scene:()=>Pt,Switch:()=>wl,THIRD_HOST:()=>Fm,TIMEOUT:()=>xi,TRANSPORT_DIRECTION:()=>Q,TRTC_ERROR_ASSISTANCE:()=>Ha,TRTC_QUALITY_BAD:()=>Ym,TRTC_QUALITY_DISCONNECTED:()=>Zm,TRTC_QUALITY_EXCELLENT:()=>Xm,TRTC_QUALITY_GOOD:()=>Qm,TRTC_QUALITY_POOR:()=>zm,TRTC_QUALITY_UNKNOWN:()=>qm,TRTC_QUALITY_VERY_BAD:()=>Km,UPDATE_OFFER_TIMEOUT:()=>Xa,VIDEO_MUTE_BIT:()=>Ko,VIDEO_STAT_BIT:()=>Mi,audioProfileMap:()=>Xo,getRetryCount:()=>oi,getScriptDir:()=>Bm,innerVersion:()=>ys,loggerProxy:()=>Ns,screenProfileMap:()=>Qo,setLoggerProxy:()=>Yi,setRetryCount:()=>qa,setVersion:()=>Ba,version:()=>Ie,videoProfileMap:()=>nt});var ys="4.15.00.1600",Ie="5.0.0";function Ba(s){Ie=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));ys=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Rr=typeof importScripts!="undefined",bs=typeof registerProcessor!="undefined",Bm=()=>{let s=Rr?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},Ns="",Yi=s=>Ns=s,xl="web.sdk.qcloud.com",$m="web.sdk.tencent.cn",Fm="web.sdk.cloud.tencent.cn",Hm="https://console.cloud.tencent.com/trtc",kt=`https://${xl}/trtc/webrtc/v5/doc`,Gm=`${kt}/zh-cn/`,$a="https://yun.tim.qq.com",Fa="https://apisgp.my-imcloud.com",Ha="trtc_error_assistance",Oi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},si={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},pt=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(pt||{}),Wm=18e3,Jm=2e3,jo={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},qo=7*24*3600*1e3,wl=(r=>(r.USEAINS="useAINS",r.ENABLEDEBUG="enableDebug",r.USEV2="useV2",r.USEWT="useWt",r))(wl||{}),Xo={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},nt={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},Qo={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},m={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},Q={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},zo={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Pt=(e=>(e.LIVE="live",e.RTC="rtc",e))(Pt||{}),Mi=1,vs=2,Ki=4,ki=8,Yo=64,Ko=16,jm=112,Ga=128,Ds="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Wa="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Ja=m.MAIN,ja=m.AUXILIARY,qm=0,Xm=1,Qm=2,zm=3,Ym=4,Km=5,Zm=6,ft="unknown",ne={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Ul=1/0;function qa(s){Ul=s}function oi(){return Ul}var ep=30,Ge={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},tp=1e4,Xa=1e4,Qa=1e4,Pi="unified-plan",yr="plan-b",Zi=1028,Vl=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Vl||{}),Zo=500,ip=1e3,rp=m.BIG,sp=m.SMALL,Os=10*1e3,ni={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},op=2e3,np={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},za=5,er="default",Ms=er,ap="communications",cp=Object.keys(pt),Ya=["normal leave","timeout leave","kick","role change"],br=10,Nr=2e3,Li="ric",vr="raf",tr="interval",xi="timeout",en=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],ks=10*1e3;function ai({url:s,body:i,method:e,timeout:t}){let r=new XMLHttpRequest;return new Promise((o,n)=>{r.onreadystatechange=()=>{if(r.readyState===4)if(r.status>=200&&r.status<300)try{let a=JSON.parse(r.response);o({data:a})}catch(a){o({data:r.response})}else n({status:r.status,statusText:r.statusText||"request failed!"})},r.timeout=t||5e3,r.open(e||"POST",s,!0),r.send(i)})}function Za(s){return f(this,null,function*(){let i=k(),e=JSON.stringify(s);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return R.debug(`compressJSON ${e.length} -> ${a.byteLength} ${k()-i}ms`),a}catch(t){return e}})}var _t=1e8;var x={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},be={AVOID_REPEATED_CALL(s){return`previous ${s.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:s,rule:i,fnName:e,value:t}){return`the min value of ${s||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:s,rule:i,fnName:e,value:t}){return`the max value of ${s||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(s){return`${s.commandDesc||s.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(s){return`SignalChannel setup failure: (errorCode: ${s.errorCode}, errorMsg: ${s.errorMsg} }).`},ERROR_MESSAGE(s){let i=`${s.type} failed`;return s.message&&(i=`${i}: ${s.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(s){return`exchange sdp failed ${s.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(s){return`'${s}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(s){return`'${s}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:s,code:i}){return`Failed to join room - ${s} code: ${i}`},REJOIN_ROOM_FAILED(s){return`reJoin room: ${s.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:`no permission to publish() under live/${"audience"}, please call switchRole("${"anchor"}") firstly before publish().`,INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(s){return`duplicate ${s} stream publishing, please unpublish your prev ${s} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:s,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${s}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:`role could only be set to a value as ${"anchor"} or ${"audience"}.`,INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(s){return`switchRole failed, errCode: ${s.code} errMsg: ${s.message}.`},CLIENT_BANNED(s){return`client was banned because of ${s.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(s){return`startPublishCDNStream failed, errMsg: ${s.message}.`},STOP_PUBLISH_CDN_FAILED(s){return`stopPublishCDNStream failed, errMsg: ${s.message}.`},INVALID_STREAM_ID(s){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(s){return`cannot replace ${s.kind} track because stream has not ${s.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(s){return`startMixTranscode failed, errMsg: ${s.message}.`},STOP_MIX_TRANSCODE_FAILED(s){return`stopMixTranscode failed, errMsg: ${s.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(s){return`'${s}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:s,fnName:i})=>`'${s}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:s,fnName:i,type:e})=>`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:s=>`${s.media} play failed\uFF0Cbrowser exception: ${s.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(s){return`${s}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(s){return`${s.signalResponse} failed, response code is ${s.code} , errMsg: ${s.message}.`},CATCH_HANDLER_ERROR({name:s,event:i}){return`an error was caught in ${s}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:s}){return`experimental api ${s} does not exist.`},REPEAT_JOIN:s=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:s}){return`failed to call ${s}() because client was destroyed.`},SEI_NOT_SUPPORT:s=>`not support to sendSEIMessage${s===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:s,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${s?"size":"times"} is over ${s?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(s){return`connection aborted due to: ${s}`},API_CALL_ABORTED(s){let i;return s.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${s.userId} ${s.streamType} stream aborted, reason: remote user ${s.userId} unpublished stream.`:i=`API aborted, reason: ${s.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:s=>`'streamType' is required when 'userId' is not '*', calling ${s}()`};var Br={};As(Br,{ANDROID_VERSION:()=>ic,CHROME_MAJOR_VERSION:()=>At,CHROME_VERSION:()=>En,EDGE_VERSION:()=>rn,EDG_MAJOR_VERSION:()=>sc,EDG_VERSION:()=>sn,FIREFOX_MAJOR_VERSION:()=>rc,FIREFOX_VERSION:()=>tn,HUAWEI_VERSION:()=>pn,IE_VERSION:()=>mp,IOS_MAIN_VERSION:()=>Ke,IOS_VERSION:()=>Ui,IPADQQB_VERSION:()=>hn,IS_ANDROID:()=>fe,IS_ANDROID_WEBVIEW:()=>lc,IS_ANY_SAFARI:()=>Vr,IS_CHROME:()=>Ur,IS_CHROME_OS:()=>oc,IS_CHROMIUM_BASE:()=>It,IS_EDG:()=>Mr,IS_EDGE:()=>Or,IS_ELECTRON:()=>fp,IS_FIREFOX:()=>re,IS_HEADLESS_CHROME:()=>dc,IS_HONOR:()=>cc,IS_HUAWEI:()=>ac,IS_HUAWEIBROWSER:()=>Hs,IS_IE:()=>Hl,IS_IE8:()=>hp,IS_IOS:()=>We,IS_IOS_13_OR_14:()=>hc,IS_IOS_15_1:()=>uc,IS_IPAD:()=>Ps,IS_IPADQQB:()=>Bs,IS_IPAD_PRO:()=>tc,IS_IPHONE:()=>ir,IS_IPOD:()=>Fl,IS_LINUX:()=>$s,IS_LOCAL:()=>li,IS_MAC:()=>St,IS_MACQQB:()=>Vs,IS_MIBROWSER:()=>Fs,IS_MQQB:()=>Lr,IS_NATIVE_ANDROID:()=>up,IS_OLD_ANDROID:()=>lp,IS_OPPOBROWSER:()=>xr,IS_SAFARI:()=>Je,IS_SAFARI_15_1:()=>_p,IS_SAMSUNGBROWSER:()=>Gs,IS_SOGOU:()=>xs,IS_SOGOUM:()=>Ls,IS_TBS:()=>Tt,IS_UCBROWSER:()=>nc,IS_VIVOBROWSER:()=>wr,IS_WECHAT:()=>kr,IS_WIN:()=>ci,IS_WQQB:()=>Us,IS_WX:()=>pp,IS_X5MQQB:()=>Pr,IS_XWEB:()=>ws,MACQQB_VERSION:()=>un,MI_VERSION:()=>mn,MQQB_VERSION:()=>Dr,OPPO_VERSION:()=>_n,SAFARI_VERSION:()=>wi,SAMSUNG_VERSION:()=>fn,SOGOUM_VERSION:()=>on,SOGOU_VERSION:()=>nn,TBS_VERSION:()=>an,UA_DATA_STRING:()=>gt,USER_AGENT:()=>Et,VIVO_VERSION:()=>gn,WECHAT_VERSION:()=>dn,WQQB_VERSION:()=>ln,XWEB_VERSION:()=>cn,browserInfo:()=>Lt,getBrowserInfo:()=>Gl,getChromeMajorVersion:()=>di,getDeviceModel:()=>rr,getOSName:()=>Tn,getOSNumber:()=>Js,getOSString:()=>hi,getOSType:()=>gp,getTerminalType:()=>mc,getUserAgentData:()=>Ws,isLocalStorageEnabled:()=>ui});var Et=typeof navigator=="undefined"?"":navigator.userAgent,j=s=>new RegExp(s,"i").test(Et),Ce=s=>{if(j(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=Et.match(i);if(e&&e[1])return e[1]}return""},ec=s=>{if(j(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=Et.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},Bl=/AppleWebKit\/([\d.]+)/i.exec(Et),dp=Bl?parseFloat(Bl[1]):NaN,Ps=j("iPad"),tc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&j("Macintosh"),ir=j("iPhone")&&!Ps,Fl=j("iPod"),We=ir||Ps||Fl||tc,fe=j("Android"),ic=function(){if(fe){let s=Et.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(s){let i=s[1]&&parseFloat(s[1]),e=s[2]&&parseFloat(s[2]);if(i&&e)return parseFloat(`${s[1]}.${s[2]}`);if(i)return i}}return NaN}(),lp=fe&&j("webkit")&&ic<2.3,up=fe&&ic<5&&dp<537,re=j("Firefox"),tn=Ce("Firefox"),rc=ec("Firefox"),Or=j("Edge"),rn=Ce("Edge"),Mr=j("Edg"),sn=Ce("Edg"),sc=ec("Edg"),Ls=j("SogouMobileBrowser"),on=Ce("SogouMobileBrowser"),xs=j("MetaSr\\s"),nn=Ce("MetaSr\\s"),Tt=j("TBS"),an=Ce("TBS"),ws=j("XWEB"),cn=Ce("XWEB"),hp=j("MSIE\\s8\\.0"),Hl=j("MSIE\\/\\d+"),mp=function(){if(Hl){let s=/MSIE\s(\d+)\.\d/.exec(Et),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(Et)&&/rv:11.0/.test(Et)&&(i=11),i}return NaN}(),kr=j("(micromessenger|webbrowser)"),dn=Ce("MicroMessenger"),Pr=!Tt&&j("MQQBrowser")&&j("COVC"),Lr=!Tt&&j("MQQBrowser")&&!j("COVC"),Dr=Lr||Pr?Ce("MQQBrowser"):"",Us=!Tt&&j(" QQBrowser"),ln=Ce(" QQBrowser"),Vs=!Tt&&j("QQBrowserLite"),un=Ce("QQBrowserLite"),Bs=!Tt&&j("MQBHD"),hn=Ce("MQBHD"),ci=j("Windows"),St=!We&&j("MAC OS X"),$s=!fe&&j("Linux"),oc=j("CrOS"),pp=j("MicroMessenger"),nc=j("UCBrowser"),fp=j("Electron"),Fs=j("MiuiBrowser"),mn=Ce("MiuiBrowser"),Hs=j("HuaweiBrowser"),ac=j("Huawei")||j("HUAWEI"),cc=j("Honor")||j("HONOR"),pn=Ce("HuaweiBrowser"),Gs=j("SamsungBrowser"),fn=Ce("SamsungBrowser"),xr=j("HeyTapBrowser"),_n=Ce("HeyTapBrowser"),wr=j("VivoBrowser"),gn=Ce("VivoBrowser"),di=()=>ec("Chrome"),It=j("Chrome"),Ur=!Or&&!xs&&!Ls&&!Tt&&!ws&&!Mr&&!Us&&!Fs&&!Hs&&!Gs&&!xr&&!wr&&It,dc=j("HeadlessChrome"),At=di(),En=Ce("Chrome"),Je=!It&&!Lr&&!Pr&&!Vs&&!Bs&&j("Safari"),Vr=Je||We,wi=Ce("Version"),lc=/Android.*(wv|.0.0.0)/.test(Et),Ui=(()=>{if(tc)return wi;if(We){let s=Et.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})(),Ke=Number(Ui.split(".")[0]),_p=wi==="15.1",uc=Ui==="15.1",hc=(()=>{let s=Number(Ui.split(".")[0]);return s===14||s===13})(),li=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",ui=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),Lt=Gl();function Gl(){let s=new Map([[re,["Firefox",tn]],[Mr,["Edg",sn]],[Ur,["Chrome",En]],[Je,["Safari",wi]],[Tt,["TBS",an]],[ws,["XWEB",cn]],[kr&&ir,["WeChat",dn]],[Us,["QQ(Win)",ln]],[Lr,["QQ(Mobile)",Dr]],[Pr,["QQ(Mobile X5)",Dr]],[Vs,["QQ(Mac)",un]],[Bs,["QQ(iPad)",hn]],[Fs,["MI",mn]],[Hs,["HW",pn]],[Gs,["Samsung",fn]],[xr,["OPPO",_n]],[wr,["VIVO",gn]],[Or,["EDGE",rn]],[Ls,["SogouMobile",on]],[xs,["Sogou",nn]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var ie=null,gt="";function Ws(){return f(this,null,function*(){if(ie)return ie;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ie=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ie&&!gt&&(gt=`UAData: ${ie.platform}/${ie.platformVersion}`,ie.architecture&&ie.bitness&&(gt+=` ${ie.architecture}/${ie.bitness}`),ie.mobile&&(gt+=" mobile"),ie.model&&(gt+=` model: ${ie.model}`),ie.fullVersionList&&(gt+=` ${ie.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),ie}catch(s){return null}})}function rr(){return(ie==null?void 0:ie.model)||""}var $l=new Map([[fe,"Android"],[We,"iOS"],[ci,"Windows"],[St,"MacOS"],[$s,"Linux"],[oc,"ChromeOS"]]),Tn=function(){return $l.get(!0)?$l.get(!0):ie?ie.platform:"unknown"};function Js(){return ci?1:fe?2:St?3:We?4:$s?5:oc?6:0}var hi=()=>{let s=Tn();return s+=`/${Lt.name}/${Je?Lt.version:Lt.version.split(".")[0]}`,ie!=null&&ie.platformVersion&&(s+=`/${ie.platformVersion}`),ie!=null&&ie.architecture&&(s+=`/${ie.architecture}`),s};function mc(){return fe?4:ir?2:Ps?3:St?12:ci?5:$s?13:1}function gp(){return fe?"Android":ir?"iPhone":Ps?"iPad":St?"Mac":ci?"Windows":$s?"Linux":"unknown"}var Wl=(s,i)=>i?`${kt}/${s}/${i}`:`${kt}/${s}/index.html`;var Ep=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let s=localStorage==null?void 0:localStorage.getItem(Ha);if(s){s=JSON.parse(s);let i=document.createElement("script");i.type="text/javascript",i.text=s.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function w(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";te(be[i])?o=be[i](e):z(be[i])&&(o=be[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:d}=Ep();t?a=`${t.className}.html#${t.fnName}`:d&&d[i]&&(te(d[i])?a=d[i](e):z(d[i])&&(a=d[i]));let h=o;return xt()&&(c&&c[i]&&(te(c[i])?n=c[i](e):z(c[i])&&(n=c[i])),n&&(r?h=`${n}
6
- \u8BF7\u67E5\u770B\u6587\u6863: ${Wl("zh-cn",a)}
5
+ `}});var pf=Mn(oo=>{var $s=eE(),BI=rE();oo.write=BI;oo.parse=$s.parse;oo.parseParams=$s.parseParams;oo.parseFmtpConfig=$s.parseFmtpConfig;oo.parsePayloads=$s.parsePayloads;oo.parseRemoteCandidates=$s.parseRemoteCandidates;oo.parseImageAttributes=$s.parseImageAttributes;oo.parseSimulcastStreamList=$s.parseSimulcastStreamList});import xH from"webrtc-adapter";var Hg=$t(nr());var Uf=(x=>(x[x.INVALID_PARAMETER=4096]="INVALID_PARAMETER",x[x.INVALID_OPERATION=4097]="INVALID_OPERATION",x[x.NOT_SUPPORTED=4098]="NOT_SUPPORTED",x[x.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",x[x.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",x[x.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",x[x.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",x[x.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",x[x.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",x[x.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",x[x.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",x[x.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",x[x.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",x[x.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",x[x.CLIENT_BANNED=16448]="CLIENT_BANNED",x[x.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",x[x.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",x[x.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",x[x.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",x[x.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",x[x.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",x[x.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",x[x.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",x[x.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",x[x.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",x[x.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",x[x.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",x[x.API_CALL_ABORTED=16461]="API_CALL_ABORTED",x[x.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",x[x.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",x[x.UNKNOWN=65535]="UNKNOWN",x))(Uf||{}),H=Uf;var zE=function(n){for(let r in H)if(H[r]===n)return r;return"UNKNOWN"},Lh=class extends Error{constructor({name:e="RtcError",message:t,code:i=H.UNKNOWN,extraCode:o=0,constraint:a}){let d=`<${zE(i)} 0x${i.toString(16)}>`,p=`${t}${a?` constraint: ${a}`:""}${t!=null&&t.includes(d)?"":` ${d}`}`;super(p);E(this,"code");E(this,"extraCode");E(this,"message");E(this,"originMessage");E(this,"name");E(this,"constraint");this.code=i,this.extraCode=o,this.name=e,this.message=p,this.constraint=a,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},Y=Lh;var Vf=new Date().getTime(),Uh=0,Ff=function(n){Vf=n,Uh=Vf-new Date().getTime();let r=new Date;r.setTime(n),J.info(`baseTime from server: ${r} offset: ${Uh}`)},hd=function(){return new Date().getTime()+Uh},Uu=function(){let n=new Date;return n.setTime(hd()),n.toLocaleString()};var yr={};ud(yr,{bytes2ms:()=>VT,convertObjectNumberToInt:()=>fl,copyProperties:()=>UT,deepClone:()=>ka,deepMerge:()=>zn,delay:()=>Ro,fibonacci:()=>wa,formatedTime:()=>JT,getAbilityConfigUrl:()=>r_,getConstructorName:()=>ml,getContainerFromElement:()=>jT,getEnv:()=>LT,getInternalVersion:()=>HT,getLoggerUrl:()=>Ao,getMuteStateFromFlag:()=>Co,getNetworkType:()=>n_,getNumNetworkType:()=>Oa,getReconnectionTimeout:()=>rn,getStringByteLength:()=>pl,getTurnServer:()=>GT,getUint32Version:()=>Im,getValueType:()=>Ht,getViewListFromView:()=>Ud,glog:()=>c_,ipv4ToUint32:()=>Ld,isArray:()=>Dt,isAudioWorkletSupported:()=>BT,isBoolean:()=>St,isConstructor:()=>Md,isEmpty:()=>Em,isFunction:()=>Ze,isLangChinese:()=>Qi,isMediaStreamTrack:()=>$T,isNumber:()=>qe,isObject:()=>Oi,isOverseaSdkAppId:()=>hl,isPlainObject:()=>jr,isPortrait:()=>Sm,isPromise:()=>Is,isRemoteTrack:()=>xi,isString:()=>Je,isUndefined:()=>V,loadImage:()=>Vd,ms2bytes:()=>FT,ms2samples:()=>a_,performanceNow:()=>ge,promiseAny:()=>Pd,samples2ms:()=>s_,setNetworkType:()=>gm,stringify:()=>Pi,stringifyIncludeValue:()=>Tm,throttlePromise:()=>ym});var Yh={};ud(Yh,{AUDIO_MUTE_BIT:()=>Wu,AUDIO_STAT_BIT:()=>go,AUX_STAT_BIT:()=>_s,AUX_STREAM_MSID:()=>Wh,BACKEND_ENV:()=>Hu,BASE_DOC_URL:()=>zi,BASE_HOST:()=>$f,CAPABILITIES_KEYS:()=>zu,CLASS_NAME:()=>pT,CLOUD_CONSOLE_URL:()=>QE,CROSS_ROOM_BIT:()=>Hh,DATA_FREEZE_TIMING:()=>ju,DOC_URL:()=>YE,DTLS_STATE_UNKNOWN:()=>Ai,ENV_NAME:()=>Ln,EXCHANGE_SDP_TIMEOUT:()=>qh,INTERVAL:()=>Ts,IS_WORKER:()=>ha,IS_WORKLET:()=>pd,KIBANA_EVENT:()=>br,LOCAL_STREAM_PUBLISH_STATE:()=>Wf,LOGGER_CMD_TYPE:()=>fo,LOGGER_DOMAIN:()=>Fh,LOGGER_DOMAIN_OVERSEA:()=>$h,LOG_LEVEL:()=>vi,LOG_LEVEL_NAME:()=>_T,MAIN_STREAM_MSID:()=>gd,MAX_RTT:()=>Sd,MICROPHONE_COMMUNICATIONS:()=>fT,MICROPHONE_DEFAULT:()=>Es,MUTE_ALL_BIT:()=>eT,NAME:()=>b,NETWORK_TYPE:()=>Vu,NOT_SUPPORTED_H264:()=>gs,PAUSED_RETRY_COUNT:()=>Xh,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Ed,PEER_CONNECTION_STATE:()=>lt,PEER_LEAVE_REASON:()=>Qh,RAF:()=>_a,RECOVER_CAPTURE_INTERVAL:()=>fa,REMOTE_STREAM_TYPE_AUX:()=>jh,REMOTE_STREAM_TYPE_MAIN:()=>Gh,RENDER_FREEZE_TIMING:()=>uT,RIC:()=>To,SCHEDULE_DOMAIN:()=>Vn,SCHEDULE_TIMEOUT:()=>mT,SDP_SEMANTICS_PLAN_B:()=>ma,SDP_SEMANTICS_UNIFIED_PLAN:()=>Eo,SECOND_HOST:()=>qE,SIGNAL_PING_PONG_INTERVAL:()=>ZE,SIGNAL_PING_TIMEOUT:()=>KE,SIGNAL_RECONNECTION_COUNT:()=>cT,SMALL_STAT_BIT:()=>_d,SPEAKER_DEFAULT:()=>Td,STORAGE_EXPIRES_TIME:()=>Fu,STREAM_TYPE_BIG:()=>lT,STREAM_TYPE_SMALL:()=>hT,SUBSCRIBE_SMALL_RETRY_COUNT:()=>pa,SYNC_USER_LIST_INTERVAL:()=>dT,Scene:()=>Ji,Switch:()=>Bf,THIRD_HOST:()=>XE,TIMEOUT:()=>So,TRANSPORT_DIRECTION:()=>We,TRTC_ERROR_ASSISTANCE:()=>Bh,TRTC_QUALITY_BAD:()=>oT,TRTC_QUALITY_DISCONNECTED:()=>aT,TRTC_QUALITY_EXCELLENT:()=>rT,TRTC_QUALITY_GOOD:()=>iT,TRTC_QUALITY_POOR:()=>nT,TRTC_QUALITY_UNKNOWN:()=>tT,TRTC_QUALITY_VERY_BAD:()=>sT,UPDATE_OFFER_TIMEOUT:()=>Jh,VIDEO_MUTE_BIT:()=>Gu,VIDEO_STAT_BIT:()=>_o,audioProfileMap:()=>$u,getRetryCount:()=>Un,getScriptDir:()=>JE,innerVersion:()=>md,loggerProxy:()=>fd,screenProfileMap:()=>Bu,setLoggerProxy:()=>fs,setRetryCount:()=>zh,setVersion:()=>Vh,version:()=>Bt,videoProfileMap:()=>ni});var md="4.15.00.1600",Bt="5.0.0";function Vh(n){Bt=n;let[r,e,t]=n.split(".").map(i=>parseInt(i,10));md=`${r}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var ha=typeof importScripts!="undefined",pd=typeof registerProcessor!="undefined",JE=()=>{let n=ha?self.location.href:document.currentScript.src;return n.substring(0,n.lastIndexOf("/")+1)},fd="",fs=n=>fd=n,$f="web.sdk.qcloud.com",qE="web.sdk.tencent.cn",XE="web.sdk.cloud.tencent.cn",QE="https://console.cloud.tencent.com/trtc",zi=`https://${$f}/trtc/webrtc/v5/doc`,YE=`${zi}/zh-cn/`,Fh="https://yun.tim.qq.com",$h="https://apisgp.my-imcloud.com",Bh="trtc_error_assistance",fo={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Ln={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},vi=(a=>(a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.NONE=5]="NONE",a))(vi||{}),KE=18e3,ZE=2e3,Vu={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Fu=7*24*3600*1e3,Bf=(i=>(i.USEAINS="useAINS",i.ENABLEDEBUG="enableDebug",i.USEV2="useV2",i.USEWT="useWt",i))(Bf||{}),$u={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},ni={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},Bu={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},b={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},We={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Hu={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Ji=(e=>(e.LIVE="live",e.RTC="rtc",e))(Ji||{}),_o=1,_d=2,_s=4,go=8,Wu=64,Gu=16,eT=112,Hh=128,gd="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Wh="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Gh=b.MAIN,jh=b.AUXILIARY,tT=0,rT=1,iT=2,nT=3,oT=4,sT=5,aT=6,Ai="unknown",lt={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Hf=1/0;function zh(n){Hf=n}function Un(){return Hf}var cT=30,br={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},dT=1e4,Jh=1e4,qh=1e4,Eo="unified-plan",ma="plan-b",gs=1028,Wf=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Wf||{}),ju=500,uT=1e3,lT=b.BIG,hT=b.SMALL,Ed=10*1e3,Vn={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},mT=2e3,pT={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Xh=5,Es="default",Td=Es,fT="communications",_T=Object.keys(vi),Qh=["normal leave","timeout leave","kick","role change"],pa=10,fa=2e3,To="ric",_a="raf",Ts="interval",So="timeout",zu=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Sd=10*1e3;function Fn({url:n,body:r,method:e,timeout:t}){let i=new XMLHttpRequest;return new Promise((o,a)=>{i.onreadystatechange=()=>{if(i.readyState===4)if(i.status>=200&&i.status<300)try{let d=JSON.parse(i.response);o({data:d})}catch(d){o({data:i.response})}else a({status:i.status,statusText:i.statusText||"request failed!"})},i.timeout=t||5e3,i.open(e||"POST",n,!0),i.send(r)})}function Kh(n){return N(this,null,function*(){let r=ge(),e=JSON.stringify(n);try{if(!CompressionStream||e.length<=2800)return e;let i=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),d=yield(yield(yield new Response(i)).blob()).arrayBuffer();return J.debug(`compressJSON ${e.length} -> ${d.byteLength} ${ge()-r}ms`),d}catch(t){return e}})}var Ci=1e8;var Ee={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Yt={AVOID_REPEATED_CALL(n){return`previous ${n.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:n,rule:r,fnName:e,value:t}){let i=`${n||r.name}`,o="";return Array.isArray(r.type)?o=r.type.join("|"):o=r.type,`'${i}' must be type of ${o} when calling ${e}(), received type: ${Ht(t)}.`},INVALID_PARAMETER_EMPTY({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:n,rule:r,fnName:e,value:t}){let i=`${n||r.name}`,o=`${r.instanceOf.name||r.instanceOf}`;return`'${i}' must be instanceof ${o} when calling ${e}(), received type: ${Ht(t)}.`},INVALID_PARAMETER_RANGE({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' must be one of ${r.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:n,rule:r,fnName:e,value:t}){return`the min value of ${n||r.name} is ${r.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:n,rule:r,fnName:e,value:t}){return`the max value of ${n||r.name} is ${r.max}, received: ${t}.`},API_CALL_TIMEOUT(n){return`${n.commandDesc||n.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(n){return`SignalChannel setup failure: (errorCode: ${n.errorCode}, errorMsg: ${n.errorMsg} }).`},ERROR_MESSAGE(n){let r=`${n.type} failed`;return n.message&&(r=`${r}: ${n.message}.`),r},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(n){return`exchange sdp failed ${n.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(n){return`'${n}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(n){return`'${n}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:n,code:r}){return`Failed to join room - ${n} code: ${r}`},REJOIN_ROOM_FAILED(n){return`reJoin room: ${n.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:`no permission to publish() under live/${"audience"}, please call switchRole("${"anchor"}") firstly before publish().`,INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(n){return`duplicate ${n} stream publishing, please unpublish your prev ${n} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:n,userId:r,streamType:e}){return`failed to subscribe ${r} ${e} stream, reason: ${n}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:`role could only be set to a value as ${"anchor"} or ${"audience"}.`,INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(n){return`switchRole failed, errCode: ${n.code} errMsg: ${n.message}.`},CLIENT_BANNED(n){return`client was banned because of ${n.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(n){return`startPublishCDNStream failed, errMsg: ${n.message}.`},STOP_PUBLISH_CDN_FAILED(n){return`stopPublishCDNStream failed, errMsg: ${n.message}.`},INVALID_STREAM_ID(n){return`'${n}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(n){return`cannot replace ${n.kind} track because stream has not ${n.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(n){return`startMixTranscode failed, errMsg: ${n.message}.`},STOP_MIX_TRANSCODE_FAILED(n){return`stopMixTranscode failed, errMsg: ${n.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(n){return`'${n}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:n,fnName:r})=>`'${n}' is not found in the document object when calling ${r}().`,INVALID_ELEMENT_ID_TYPE:({key:n,fnName:r,type:e})=>`the element corresponding to '${n}' must be instanceof HTMLElement when calling ${r}(), received: ${e}.`,PLAY_FAILED:n=>`${n.media} play failed\uFF0Cbrowser exception: ${n.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(n){return`${n}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(n){return`${n.signalResponse} failed, response code is ${n.code} , errMsg: ${n.message}.`},CATCH_HANDLER_ERROR({name:n,event:r}){return`an error was caught in ${n}.on('${r}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:n}){return`experimental api ${n} does not exist.`},REPEAT_JOIN:n=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:n}){return`failed to call ${n}() because client was destroyed.`},SEI_NOT_SUPPORT:n=>`not support to sendSEIMessage${n===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:n,name:r,timesInSecond:e,maxSizeInSecond:t})=>`api ${r} call ${n?"size":"times"} is over ${n?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(n){return`connection aborted due to: ${n}`},API_CALL_ABORTED(n){let r;return n.message.includes("REMOTE_STREAM_NOT_EXIST")?r=`Subscribe ${n.userId} ${n.streamType} stream aborted, reason: remote user ${n.userId} unpublished stream.`:r=`API aborted, reason: ${n.message}`,r},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:n=>`'streamType' is required when 'userId' is not '*', calling ${n}()`};var Na={};ud(Na,{ANDROID_VERSION:()=>tm,CHROME_MAJOR_VERSION:()=>ki,CHROME_VERSION:()=>dl,EDGE_VERSION:()=>qu,EDG_MAJOR_VERSION:()=>im,EDG_VERSION:()=>Xu,FIREFOX_MAJOR_VERSION:()=>rm,FIREFOX_VERSION:()=>Ju,HUAWEI_VERSION:()=>ol,IE_VERSION:()=>IT,IOS_MAIN_VERSION:()=>Gr,IOS_VERSION:()=>yo,IPADQQB_VERSION:()=>il,IS_ANDROID:()=>Nt,IS_ANDROID_WEBVIEW:()=>dm,IS_ANY_SAFARI:()=>Ra,IS_CHROME:()=>Ca,IS_CHROME_OS:()=>nm,IS_CHROMIUM_BASE:()=>wi,IS_EDG:()=>Ta,IS_EDGE:()=>Ea,IS_ELECTRON:()=>vT,IS_FIREFOX:()=>nt,IS_HEADLESS_CHROME:()=>cm,IS_HONOR:()=>am,IS_HUAWEI:()=>sm,IS_HUAWEIBROWSER:()=>wd,IS_IE:()=>Jf,IS_IE8:()=>ST,IS_IOS:()=>Nr,IS_IOS_13_OR_14:()=>lm,IS_IOS_15_1:()=>um,IS_IPAD:()=>Id,IS_IPADQQB:()=>bd,IS_IPAD_PRO:()=>em,IS_IPHONE:()=>Ss,IS_IPOD:()=>zf,IS_LINUX:()=>Nd,IS_LOCAL:()=>Hn,IS_MAC:()=>Di,IS_MACQQB:()=>Rd,IS_MIBROWSER:()=>Dd,IS_MQQB:()=>ya,IS_NATIVE_ANDROID:()=>TT,IS_OLD_ANDROID:()=>ET,IS_OPPOBROWSER:()=>va,IS_SAFARI:()=>Dr,IS_SAFARI_15_1:()=>AT,IS_SAMSUNGBROWSER:()=>kd,IS_SOGOU:()=>vd,IS_SOGOUM:()=>yd,IS_TBS:()=>Ni,IS_UCBROWSER:()=>om,IS_VIVOBROWSER:()=>Aa,IS_WECHAT:()=>Sa,IS_WIN:()=>$n,IS_WQQB:()=>Cd,IS_WX:()=>yT,IS_X5MQQB:()=>Ia,IS_XWEB:()=>Ad,MACQQB_VERSION:()=>rl,MI_VERSION:()=>nl,MQQB_VERSION:()=>ga,OPPO_VERSION:()=>al,SAFARI_VERSION:()=>Io,SAMSUNG_VERSION:()=>sl,SOGOUM_VERSION:()=>Qu,SOGOU_VERSION:()=>Yu,TBS_VERSION:()=>Ku,UA_DATA_STRING:()=>Ri,USER_AGENT:()=>bi,VIVO_VERSION:()=>cl,WECHAT_VERSION:()=>el,WQQB_VERSION:()=>tl,XWEB_VERSION:()=>Zu,browserInfo:()=>qi,getBrowserInfo:()=>qf,getChromeMajorVersion:()=>Bn,getDeviceModel:()=>vo,getOSName:()=>ul,getOSNumber:()=>ba,getOSString:()=>Xi,getOSType:()=>CT,getTerminalType:()=>hm,getUserAgentData:()=>Od,isLocalStorageEnabled:()=>Wn});var bi=typeof navigator=="undefined"?"":navigator.userAgent,xe=n=>new RegExp(n,"i").test(bi),Wt=n=>{if(xe(n)){let r=new RegExp(`${n}\\/([\\d.]+)`),e=bi.match(r);if(e&&e[1])return e[1]}return""},Zh=n=>{if(xe(n)){let r=new RegExp(`${n}\\/(\\d+)`),e=bi.match(r);if(e&&e[1])return parseFloat(e[1])}return NaN},Gf=/AppleWebKit\/([\d.]+)/i.exec(bi),gT=Gf?parseFloat(Gf[1]):NaN,Id=xe("iPad"),em=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&xe("Macintosh"),Ss=xe("iPhone")&&!Id,zf=xe("iPod"),Nr=Ss||Id||zf||em,Nt=xe("Android"),tm=function(){if(Nt){let n=bi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(n){let r=n[1]&&parseFloat(n[1]),e=n[2]&&parseFloat(n[2]);if(r&&e)return parseFloat(`${n[1]}.${n[2]}`);if(r)return r}}return NaN}(),ET=Nt&&xe("webkit")&&tm<2.3,TT=Nt&&tm<5&&gT<537,nt=xe("Firefox"),Ju=Wt("Firefox"),rm=Zh("Firefox"),Ea=xe("Edge"),qu=Wt("Edge"),Ta=xe("Edg"),Xu=Wt("Edg"),im=Zh("Edg"),yd=xe("SogouMobileBrowser"),Qu=Wt("SogouMobileBrowser"),vd=xe("MetaSr\\s"),Yu=Wt("MetaSr\\s"),Ni=xe("TBS"),Ku=Wt("TBS"),Ad=xe("XWEB"),Zu=Wt("XWEB"),ST=xe("MSIE\\s8\\.0"),Jf=xe("MSIE\\/\\d+"),IT=function(){if(Jf){let n=/MSIE\s(\d+)\.\d/.exec(bi),r=n&&parseFloat(n[1]);return!r&&/Trident\/7.0/i.test(bi)&&/rv:11.0/.test(bi)&&(r=11),r}return NaN}(),Sa=xe("(micromessenger|webbrowser)"),el=Wt("MicroMessenger"),Ia=!Ni&&xe("MQQBrowser")&&xe("COVC"),ya=!Ni&&xe("MQQBrowser")&&!xe("COVC"),ga=ya||Ia?Wt("MQQBrowser"):"",Cd=!Ni&&xe(" QQBrowser"),tl=Wt(" QQBrowser"),Rd=!Ni&&xe("QQBrowserLite"),rl=Wt("QQBrowserLite"),bd=!Ni&&xe("MQBHD"),il=Wt("MQBHD"),$n=xe("Windows"),Di=!Nr&&xe("MAC OS X"),Nd=!Nt&&xe("Linux"),nm=xe("CrOS"),yT=xe("MicroMessenger"),om=xe("UCBrowser"),vT=xe("Electron"),Dd=xe("MiuiBrowser"),nl=Wt("MiuiBrowser"),wd=xe("HuaweiBrowser"),sm=xe("Huawei")||xe("HUAWEI"),am=xe("Honor")||xe("HONOR"),ol=Wt("HuaweiBrowser"),kd=xe("SamsungBrowser"),sl=Wt("SamsungBrowser"),va=xe("HeyTapBrowser"),al=Wt("HeyTapBrowser"),Aa=xe("VivoBrowser"),cl=Wt("VivoBrowser"),Bn=()=>Zh("Chrome"),wi=xe("Chrome"),Ca=!Ea&&!vd&&!yd&&!Ni&&!Ad&&!Ta&&!Cd&&!Dd&&!wd&&!kd&&!va&&!Aa&&wi,cm=xe("HeadlessChrome"),ki=Bn(),dl=Wt("Chrome"),Dr=!wi&&!ya&&!Ia&&!Rd&&!bd&&xe("Safari"),Ra=Dr||Nr,Io=Wt("Version"),dm=/Android.*(wv|.0.0.0)/.test(bi),yo=(()=>{if(em)return Io;if(Nr){let n=bi.match(/OS (\d+)_(\d+)/i);if(n&&n[1]){let r=n[1];return n[2]&&(r+=`.${n[2]}`),r}}return""})(),Gr=Number(yo.split(".")[0]),AT=Io==="15.1",um=yo==="15.1",lm=(()=>{let n=Number(yo.split(".")[0]);return n===14||n===13})(),Hn=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Wn=(()=>{let n;return()=>{if(typeof n=="undefined")try{n=!!window.localStorage}catch(r){n=!1}return n}})(),qi=qf();function qf(){let n=new Map([[nt,["Firefox",Ju]],[Ta,["Edg",Xu]],[Ca,["Chrome",dl]],[Dr,["Safari",Io]],[Ni,["TBS",Ku]],[Ad,["XWEB",Zu]],[Sa&&Ss,["WeChat",el]],[Cd,["QQ(Win)",tl]],[ya,["QQ(Mobile)",ga]],[Ia,["QQ(Mobile X5)",ga]],[Rd,["QQ(Mac)",rl]],[bd,["QQ(iPad)",il]],[Dd,["MI",nl]],[wd,["HW",ol]],[kd,["Samsung",sl]],[va,["OPPO",al]],[Aa,["VIVO",cl]],[Ea,["EDGE",qu]],[yd,["SogouMobile",Qu]],[vd,["Sogou",Yu]]]),r="unknown",e="unknown";return n.has(!0)&&([r,e]=n.get(!0)),{name:r,version:e}}var it=null,Ri="";function Od(){return N(this,null,function*(){if(it)return it;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return it=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),it&&!Ri&&(Ri=`UAData: ${it.platform}/${it.platformVersion}`,it.architecture&&it.bitness&&(Ri+=` ${it.architecture}/${it.bitness}`),it.mobile&&(Ri+=" mobile"),it.model&&(Ri+=` model: ${it.model}`),it.fullVersionList&&(Ri+=` ${it.fullVersionList.filter(n=>n.brand!=="Not/A)Brand").map(n=>`${n.brand}/${n.version}`).join(",")}`)),it}catch(n){return null}})}function vo(){return(it==null?void 0:it.model)||""}var jf=new Map([[Nt,"Android"],[Nr,"iOS"],[$n,"Windows"],[Di,"MacOS"],[Nd,"Linux"],[nm,"ChromeOS"]]),ul=function(){return jf.get(!0)?jf.get(!0):it?it.platform:"unknown"};function ba(){return $n?1:Nt?2:Di?3:Nr?4:Nd?5:nm?6:0}var Xi=()=>{let n=ul();return n+=`/${qi.name}/${Dr?qi.version:qi.version.split(".")[0]}`,it!=null&&it.platformVersion&&(n+=`/${it.platformVersion}`),it!=null&&it.architecture&&(n+=`/${it.architecture}`),n};function hm(){return Nt?4:Ss?2:Id?3:Di?12:$n?5:Nd?13:1}function CT(){return Nt?"Android":Ss?"iPhone":Id?"iPad":Di?"Mac":$n?"Windows":Nd?"Linux":"unknown"}var Xf=(n,r)=>r?`${zi}/${n}/${r}`:`${zi}/${n}/index.html`;var RT=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let n=localStorage==null?void 0:localStorage.getItem(Bh);if(n){n=JSON.parse(n);let r=document.createElement("script");r.type="text/javascript",r.text=n.message,document.body.appendChild(r);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(r),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function Te(n){let{key:r,data:e,link:t,addDocLink:i=!0}=n,o="",a="",d="";Ze(Yt[r])?o=Yt[r](e):Je(Yt[r])&&(o=Yt[r]);let{TRTC_ERROR_INFO:p,TRTC_ERROR_LINK:_}=RT();t?d=`${t.className}.html#${t.fnName}`:_&&_[r]&&(Ze(_[r])?d=_[r](e):Je(_[r])&&(d=_[r]));let S=o;return Qi()&&(p&&p[r]&&(Ze(p[r])?a=p[r](e):Je(p[r])&&(a=p[r])),a&&(i?S=`${a}
6
+ \u8BF7\u67E5\u770B\u6587\u6863: ${Xf("zh-cn",d)}
7
7
 
8
- `:h=`${n}
8
+ `:S=`${a}
9
9
 
10
- `,h+=o)),r&&(h+=`
11
- Refer to: ${Wl("en",a)}
12
- `),h}var Tp=Object.prototype.hasOwnProperty;var wt=s=>typeof s=="function",mi=s=>typeof s=="undefined";var Jl=s=>typeof s=="boolean";var Sp=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function jl(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Sp(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(Tp.call(s,i))return!1;return!0}}return!1}var Ip=0,Ap=1,ql=2;function Cp({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:c=5,timeout:d=1e3}=i,h=0,u=-1,p=Ip,_=(I,C)=>f(this,null,function*(){let D=n||this;try{let B=yield s.apply(D,a);h>0&&o&&o.call(this,h),h=0,I(B)}catch(B){let Me=()=>{clearTimeout(u),h=0,p=ql,C(B)},Ho=()=>{p!==ql&&h<(wt(c)?c():c)?(h++,p=Ap,wt(t)&&t.call(this,h,Me),u=window.setTimeout(()=>{u=-1,_(I,C)},wt(d)?d(h):d)):(Me(),wt(r)&&r.call(this,B))};wt(e)?e.call(this,{error:B,retry:Ho,reject:C,retryFuncArgs:a,retriedCount:h}):Ho()}});return new Promise(_)}}var Ut=Cp;var Xl=Se(De(),1),Rp=new Xl.default,T=Rp;var pi=($=>($.ROOM_DESTROY="1",$.JOIN_START="21",$.JOIN_SCHEDULE_SUCCESS="22",$.JOIN_SIGNAL_CONNECTION_START="23",$.JOIN_SIGNAL_CONNECTION_END="24",$.JOIN_SEND_CMD="25",$.JOIN_RECEIVED_CMD_RES="26",$.JOIN_SUCCESS="27",$.JOIN_FAILED="28",$.LEAVE_START="51",$.LEAVE_SEND_CMD="52",$.LEAVE_SUCCESS="53",$.PUBLISH_START="61",$.SEND_FIRST_VIDEO_FRAME="62",$.PUBLISH_FAILED="63",$.SUBSCRIBE_START="81",$.SUBSCRIBE_SUCCESS="82",$.SUBSCRIBE_FAILED="84",$.UNSUBSCRIBE_SUCCESS="83",$.LOCAL_TRACK_CAPTURE_START="101",$.LOCAL_TRACK_CAPTURE_SUCCESS="102",$.LOCAL_TRACK_CAPTURE_FAILED="103",$.LOCAL_TRACK_PUBLISHED="104",$.LOCAL_TRACK_UNPUBLISHED="105",$.LOCAL_TRACK_REPLACED="106",$.SWITCH_DEVICE_SUCCESS="107",$.TRACK_MUTED="108",$.TRACK_UNMUTED="109",$.REMOTE_TRACK_SUBSCRIBED="110",$.REMOTE_TRACK_UNSUBSCRIBED="111",$.LOCAL_TRACK_RECAPTURE="112",$.PLAY_TRACK_START="151",$.PLAYER_STATE_CHANGED="152",$.VIDEO_LOADED_DATA="153",$.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",$.SIGNAL_CONNECTION_STATE_CHANGED="201",$.PEER_CONNECTION_STATE_CHANGED="202",$.SINGLE_CONNECTION_STAT="203",$.SPC_RECONNECTED="204",$.HEARTBEAT_REPORT="251",$.RECEIVED_PUBLISHED_USER_LIST="252",$.REMOTE_PUBLISH_STATE_CHANGED="253",$.AUDIO_LEVEL_INTERVAL="260",$.NETWORK_QUALITY="261",$.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",$.QUALITY_LIMITATION_CHANGED="263",$.LOG="264",$))(pi||{});var pc=class{constructor(){this._roomIdMap=new Map;typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Ie,env:si.QCLOUD,browserVersion:Lt.name+Lt.version,ua:navigator.userAgent})}setConfig({sdkAppId:i,env:e,userId:t,roomId:r}){i!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(i)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(r))}logSuccessEvent(i){li||!R.isAbleToUpload||this._configs.env===si.QCLOUD&&this.uploadEventToKibana(L(v({},i),{result:"success"}))}logFailedEvent(i){if(li||!R.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:o}=i,n={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||S.UNKNOWN};this._configs.env===si.QCLOUD&&this.uploadEventToKibana(L(v({},n),{error:r}))}uploadEventToKibana(i){let e=`stat-${i.eventType}-${i.result}`;(i.eventType==="delta-join"||i.eventType==="delta-leave"||i.eventType==="delta-publish")&&(e=`${i.eventType}:${i.delta}`),this.uploadEvent({log:e,userId:i.userId}),i.result==="failed"&&(e=`stat-${i.eventType}-${i.result}-${i.code}`,this.uploadEvent({log:e,userId:i.userId,error:i.error}))}uploadEvent({log:i,userId:e,error:t}){let r={timestamp:Jo(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Ie,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
13
- ${t.stack}`)),this.sendRequest(Vi(this._configs.sdkAppId,Oi.LOG),r)}sendRequest(i,e){if(!R.isAbleToUpload){setTimeout(()=>{this.sendRequest(i,e)},1e3);return}ai({url:i,body:JSON.stringify(e)}).catch(()=>{})}},Y=new pc;var fc=null,_c=!0;document&&document.head.insertAdjacentHTML("beforeend",Object.values(ni).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
14
- `));function $t(s){ue(s)&&s!==_c&&(_c=s,R.info(`setIsNeedToSchedule ${s}`))}T.on("28",()=>$t(!0));T.on("63",()=>$t(!0));T.on("84",()=>$t(!0));T.on("201",s=>{s.state==="RECONNECTING"&&$t(!0)});T.on("202",s=>{s.state==="RECONNECTING"&&$t(!0)});function yp(s,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),o=$r(s,m.MAIN),n=$r(s,m.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===o||a.name===n)&&a.transferSize>0){let c=a.name===o?m.MAIN:m.BACKUP,d=Math.round(a.duration),h=Math.round(a.domainLookupStart-a.startTime),u=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,p=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,_=Math.round(a.domainLookupEnd-a.domainLookupStart),I=Math.round(a.requestStart-a.secureConnectionStart),C=Math.round(a.secureConnectionStart-a.connectStart),D=Math.round(a.responseStart-a.requestStart),B=Math.round(a.responseEnd-a.responseStart),Me=[_,I,C,D,B];Y.uploadEvent({log:`stat-schedule-net:${d}(${h}(${u}->${p})->${Me.join("->")}) ${c}`,userId:i}),t=L(v({},t),{totalCost:d,local:h,dns:_,tcp:C,tls:I,request:D,response:B});break}}catch(r){R.error("getScheduleDetailCost error",r)}return t}function zl(d){return f(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:c}){if(!_c&&fc)return{isCached:!0,result:fc};let h={delta:0,count:[1,1],msg:[],detail:[]};try{let u=new FormData;u.append("userId",String(s)),u.append("sdkAppId",String(i)),u.append("isStrGroupId",String(e)),u.append("groupId",String(t)),u.append("sdkVersion",o),u.append("userSig",String(r)),a&&u.append("role",String(a)),c&&u.append("latencyLevel",String(c)),n&&u.append("frameWorkType",String(n));let p=k(),_=yield Np(u,h,i);_.config&&(_.config.loggerDomain&&Yi(_.config.loggerDomain),ue(_.config.scheduleCache)&&$t(!_.config.scheduleCache)),h.delta=k()-p;let I=yp(Number(i),s,p);return fc=_,{isCached:!1,result:_,detailCost:I}}catch(u){let p=_e(u)?u[0]:u,_=K(p.code)?p.code:0,I=`schedule failed${p.message?`: ${p.message}`:""}`,C=new y({code:S.SCHEDULE_FAILED,extraCode:_,message:w({key:x.JOIN_ROOM_FAILED,data:{error:I,code:_}})});throw R.error(I,_),C}})}var Vt={main:"",backup:""};function gc(s){_e(s)?(Vt.main=s[0],Vt.backup=s[1]):Vt.main=s}function $r(s,i=m.MAIN,e=!1){return`https://${Vt[i]||Sn(s,i,e)}/api/v1/config`}function Yl(s,i=m.MAIN){return`https://${Vt[i]||Sn(s,i)}/api/v1/trtcAutoConf`}function Sn(s,i=m.MAIN,e=!1){let t;return In(s)?e?t=i===m.MAIN?ni.MAIN_OVERSEA_BACKUP:ni.BACKUP_OVERSEA:t=i===m.MAIN?ni.MAIN_OVERSEA:ni.BACKUP_OVERSEA:t=i===m.MAIN?ni.MAIN:ni.BACKUP,t}function bp(s,i,e){return new Promise((t,r)=>{ai({url:s,body:i,timeout:e.timeout}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var Ql=(s,i)=>Ut({retryFunction:bp,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function Np(s,i,e){return new Promise((t,r)=>{let o=null;js([Ql(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:d})=>{i.msg[0]=n.message,o||(c>=1&&(d[0]=$r(e,m.MAIN,!0)),a())})($r(e,m.MAIN),s,{get timeout(){return Fr(2+i.count[0])*1e3}}),Ql(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:d})=>{i.msg[1]=n.message,o||(c>=2&&(d[0]=$r(e,m.BACKUP,!0)),a())})($r(e,m.BACKUP),s,{get timeout(){return Fr(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var vp=function(){return new URLSearchParams(location.search).get("trtc_env")||""},In=s=>Number(s)<14e8,Vi=function(s,i){let e;Ns?e=Ns:e=In(s)?Fa:$a;let t=Math.floor(Math.random()*Is(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},qs="unknown";function Zl(){if(qs!=="unknown")return qs;let{userAgent:s,connection:i}=navigator,e=(s.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(qs=eu(t,r)),qs}function eu(s,i){if(jo[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Ec(s){qs=eu(s)}function Gr(){return jo[Zl()]}function Dp(s,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(s,e,t)}return s}function Op(s,i=48e3){return tu(s/4,i)}function tu(s,i=48e3){return s*1e3/i}function Mp(s,i=48e3){return iu(s,i)*4}function iu(s,i=48e3){return s*i/1e3}var ru=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},xt=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},Ze=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Fr(s,i=1,e=1){return s<=1?e:Fr(s-1,e,i+e)}function Ft(s){return s>8?30*1e3:Fr(s)*1e3}function Ae(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var te=s=>typeof s=="function",E=s=>typeof s=="undefined",z=s=>typeof s=="string",K=s=>typeof s=="number",ue=s=>typeof s=="boolean",Ct=s=>Ae(s)==="object",_e=s=>Ae(s)==="array",kp=s=>Ae(s)==="MediaStreamTrack".toLowerCase(),yt=s=>s.isRemote,sr=s=>Ae(s)==="promise",Xs=s=>te(s)&&s.prototype.constructor===s,An=s=>Xs(s)?s.prototype.constructor.name:"",Pp=typeof AudioWorkletNode!="undefined";function js(s){return new Promise((i,e)=>{let t=[];s.forEach(r=>{r.then(i).catch(o=>{t.push(o),t.length===s.length&&e(t)})})})}function k(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Kl=s=>+s<10?`0${s}`:s,Lp=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=Kl(e[1])+Kl(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},xp=Object.prototype.hasOwnProperty,{toString:Kg}=Object.prototype;function Tc(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Ze(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(xp.call(s,i))return!1;return!0}}return!1}function Bi(s,i){return{userId:i,hasAudio:!!(s&ki),hasVideo:!!(s&Mi),hasAuxiliary:!!(s&Ki),hasSmall:!!(s&vs),audioMuted:!!(s&Yo),videoMuted:!!(s&Ko),audioAvailable:!!(s&ki)&&!(s&Yo),videoAvailable:!!(s&Mi)&&!(s&Ko)}}function wp(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!E(s.username)&&!E(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",E(s.credentialType)||(i.credentialType=s.credentialType)),i}function Qs(s,i=!0){if(!z(s))return 0;let e=s.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var fi=function(s,i,e,t){if(!(Ct(s)&&Ct(i)))return 0;let r=0,o=Object.keys(i),n;for(let a=0,c=o.length;a<c;a++)if(n=o[a],!(E(i[n])||e&&e.includes(n)))if(Ct(s[n])&&Ct(i[n]))r+=fi(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=Hr(i[n]),r+=1)}return r};function Hr(s){if(_e(s)){let i=[];return s.forEach((e,t)=>{i[t]=Hr(e)}),i}if(Ct(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=Hr(s[e])}),i}return s}var zs=s=>{let i=[];if(_e(s))i=[...s];else if(z(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Up=s=>z(s)?document.getElementById(s):s,Vp=s=>{let i=c=>c<10?`0${c}`:`${c}`,e=s.getFullYear(),t=s.getMonth()+1,r=s.getDate(),o=i(s.getHours()),n=i(s.getMinutes()),a=i(s.getSeconds());return`${e}/${t}/${r} ${o}:${n}:${a}`},Bp=()=>Vp(new Date);function Rt(s,{keysToInclude:i,keysToExclude:e}){try{if(_e(s))return`[${s.map(n=>Rt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Ze(s)||!_e(i)&&!_e(e))return JSON.stringify(s);let t={},r=new Set(i),o=new Set(e);return Object.keys(s).forEach(n=>{(o.size===0&&r.has(n)||r.size===0&&!o.has(n))&&(t[n]=Ze(s[n])||_e(s[n])?JSON.parse(Rt(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function Sc(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),Rt(s,{keysToInclude:e})}function Cn(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Ic=()=>{var s,i,e,t;return(s=window.screen)!=null&&s.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},Ys=s=>f(void 0,null,function*(){return new Promise((i,e)=>{let t;if(z(s))t=new Image,t.crossOrigin="anonymous",t.src=s;else if(t=s,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new y({code:S.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),Ac=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},Rn=s=>(Object.keys(s).forEach(i=>{K(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(Ze(s[i])||_e(s[i]))&&Rn(s[i])}),s);function $i(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}var Cc=(s,i)=>{let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}};var Wr=class{constructor(i){l(this,"userId");l(this,"remoteUserId");l(this,"id");l(this,"sdkAppId");l(this,"type");l(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Jl(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),R.log(i,e,mi(this.userId)||jl(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var g=pi;var $p="%cTRTC%c%s",Fp="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Hp="display: inline",Gp=!(We||fe||dc),Rc=class{constructor(){l(this,"_isEnableUploadLog",!0);l(this,"_localJoinedUser",new Map);l(this,"_queue",[]);l(this,"_timeoutId",-1);l(this,"_logLevel",1);l(this,"_logLevelToUpload",2);!Rr&&!bs&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){T.on(g.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;((e=i==null?void 0:i.config)==null?void 0:e.logLevelToUpload)&&pt[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),T.on(g.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),T.once(g.JOIN_FAILED,()=>{this.startUpload()}),T.on(g.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),2e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:o})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})});else if(z(t.userId)&&K(t.sdkAppId)){let{userId:r,sdkAppId:o}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return f(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let o=0;o<r.length;o++){let{userId:n,sdkAppId:a,logs:c}=r[o];yield this.uploadLogWithRetry(JSON.stringify({timestamp:Jo(),sdkAppId:String(a),userId:n,version:Ie,log:c.map(d=>d.log).join(`
15
- `)}),a),c.forEach(d=>d.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return Ut({retryFunction:()=>ai({url:Vi(e,Oi.LOG),body:i,timeout:5e3}),settings:{retries:3,timeout:1e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;e.setTime(Rs());let t=String(e.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}] <${pt[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){E(pt[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(z(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,o){var c;e.unshift(this.getPrefix(i));let n={log:e.reduce((d,h)=>`${d} ${this.logChunkToString(h)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(T.emit(g.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=pt[i])==null?void 0:c.toLowerCase())||"info";Gp?console[a]($p,Fp,Hp,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new Wr(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;pt[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}},R=new Rc;var Wp=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let i=Math.random()*16|0;return(s=="x"?i:i&3|8).toString(16)})},Ks=Wp;var yc=class{constructor(){l(this,"_prefix","TRTC");l(this,"_queue",new Map);this.checkStorage()}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!ui())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix)){let r=localStorage.getItem(t);if(!r)return!1;let o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(!!ui())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){R.warn(i)}}getItem(i){if(!ui())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){R.warn(e)}}setItem(i,e){if(!!ui())try{let t={expiresIn:Date.now()+qo,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){R.warn(t)}}deleteItem(i){if(!ui())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return R.warn(e),!1}}clear(){if(!!ui())try{localStorage.clear()}catch(i){R.warn(i)}}},yn=new yc;var Wt={};As(Wt,{HTTPS_API:()=>cf,IS_GET_CAPABILITIES_SUPPORTED:()=>Uc,IS_GET_SETTINGS_SUPPORTED:()=>Gt,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>wc,IS_INSERTABLE_STREAM_SUPPORTED:()=>Ti,IS_RTC_RTP_SENDER_SUPPORTED:()=>io,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Pn,IS_SEI_SUPPORTED:()=>so,IS_SPC_SUPPORTED:()=>jr,basis:()=>hf,checkSystemRequirementsInternal:()=>kn,decodeSupportStatus:()=>Mn,encodeSupportStatus:()=>Pc,getBrowserInfo:()=>sf,getDisplayResolution:()=>pu,isAddTransceiverSupported:()=>ct,isBrowserSupported:()=>Lc,isGetReceiversSupported:()=>ar,isGetSendersSupported:()=>Hi,isGetTransceiversSupported:()=>Ht,isGetUserMediaSupported:()=>fu,isMediaDevicesSupported:()=>On,isMediaSessionSupported:()=>Tu,isMediaStreamTrackProcessorSupported:()=>of,isReplaceTrackSupported:()=>xc,isRequestVideoFrameCallbackSupported:()=>cr,isSIMDSupported:()=>uf,isScreenCaptureApiAvailable:()=>eo,isSelectedCandidatePair:()=>Fi,isSetParametersSupported:()=>ro,isSmallStreamAPISupported:()=>gu,isSmallStreamSupported:()=>to,isStopTransceiverSupported:()=>lf,isTRTCSupported:()=>nf,isUnifiedPlanDefault:()=>df,isUsedInHttpProtocol:()=>Ei,isWebAudioSupported:()=>_u,isWebCodecSupported:()=>Eu,isWebCodecsSupported:()=>mu,isWebRTCSupported:()=>Vc,isWebTransportSupported:()=>Su});var kc=Se(uu(),1);var Zp=1,ef=0,bn=class{constructor(i=!0){this.countMap=new Map;this.distributionMap=new Map;this.log=R.createLogger({id:"kv"});i&&(T.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===m.AUDIO?Nn.START_MICROPHONE:vc.START_CAMERA,cost:t})}),T.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===m.AUDIO?Nn.START_MICROPHONE:vc.START_CAMERA,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:Ac(this.version||Ie),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,o])=>({uint32_item_key:r,uint32_item_value:o}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var o;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((o=this.distributionMap)==null?void 0:o.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1}){var a;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let o=((a=this.distributionMap)==null?void 0:a.get(i))||new Map,n=0;if(K(t))n=Math.floor(e/t);else for(let c=t.length-1;c>0;c--)if(e>t[c]){n=c;break}o.set(n,(o.get(n)||0)+1),this.distributionMap.set(i,o)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(!!i&&(this.addEnum({key:i,value:Zp,useUV:!1}),e)){let o=+String(i).slice(-3);o<800&&o>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=S.UNKNOWN;e&&(K(e)?t=e:(!E(e.extraCode)||!E(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:ef,useUV:!1}),this.addEnum({key:i,value:t,useUV:!1})}},vn=(J=>(J[J.enterRoom=500700]="enterRoom",J[J.exitRoom=500701]="exitRoom",J[J.switchRole=500702]="switchRole",J[J.destroy=500703]="destroy",J[J.startLocalAudio=500704]="startLocalAudio",J[J.updateLocalAudio=500705]="updateLocalAudio",J[J.stopLocalAudio=500706]="stopLocalAudio",J[J.startLocalVideo=500707]="startLocalVideo",J[J.updateLocalVideo=500708]="updateLocalVideo",J[J.stopLocalVideo=500709]="stopLocalVideo",J[J.startScreenShare=500710]="startScreenShare",J[J.updateScreenShare=500711]="updateScreenShare",J[J.stopScreenShare=500712]="stopScreenShare",J[J.startRemoteVideo=500713]="startRemoteVideo",J[J.updateRemoteVideo=500714]="updateRemoteVideo",J[J.stopRemoteVideo=500715]="stopRemoteVideo",J[J.muteRemoteAudio=500716]="muteRemoteAudio",J[J.setRemoteAudioVolume=500717]="setRemoteAudioVolume",J[J.use=500718]="use",J[J.sendSEIMessage=5e5]="sendSEIMessage",J[J.sendCustomMessage=500001]="sendCustomMessage",J))(vn||{}),Dc=(d=>(d[d.AudioMixer=550700]="AudioMixer",d[d.AIDenoiser=551700]="AIDenoiser",d[d.VirtualBackground=570700]="VirtualBackground",d[d.Beauty=571700]="Beauty",d[d.Watermark=572700]="Watermark",d[d.BasicBeauty=574700]="BasicBeauty",d[d.CDNStreaming=590700]="CDNStreaming",d[d.DeviceDetector=591700]="DeviceDetector",d[d.Debug=592700]="Debug",d))(Dc||{}),Oc=(d=>(d[d.AudioMixer=550701]="AudioMixer",d[d.AIDenoiser=551701]="AIDenoiser",d[d.VirtualBackground=570701]="VirtualBackground",d[d.Beauty=571701]="Beauty",d[d.Watermark=572701]="Watermark",d[d.BasicBeauty=574701]="BasicBeauty",d[d.CDNStreaming=590701]="CDNStreaming",d[d.DeviceDetector=591701]="DeviceDetector",d[d.Debug=592701]="Debug",d))(Oc||{}),Mc=(d=>(d[d.AudioMixer=550702]="AudioMixer",d[d.AIDenoiser=551702]="AIDenoiser",d[d.VirtualBackground=570702]="VirtualBackground",d[d.Beauty=571702]="Beauty",d[d.Watermark=572702]="Watermark",d[d.BasicBeauty=574702]="BasicBeauty",d[d.CDNStreaming=590702]="CDNStreaming",d[d.DeviceDetector=591702]="DeviceDetector",d[d.Debug=592702]="Debug",d))(Mc||{});var Nn=(t=>(t[t.START_MICROPHONE=501700]="START_MICROPHONE",t[t.MICROPHONE_CAHNNELS=501701]="MICROPHONE_CAHNNELS",t[t.MICROPHONE_SAMPLERATE=501702]="MICROPHONE_SAMPLERATE",t))(Nn||{});var vc=(i=>(i[i.START_CAMERA=511700]="START_CAMERA",i))(vc||{});var tf=new bn(!0),nr=new bn(!1);var N=tf;var Z={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},rf=new Map([[re,["Firefox",tn]],[Mr,["Edg",sn]],[Ur,["Chrome",En]],[Je,["Safari",wi]],[Tt,["TBS",an]],[ws,["XWEB",cn]],[kr&&ir,["WeChat",dn]],[Us,["QQ(Win)",ln]],[Lr,["QQ(Mobile)",Dr]],[Pr,["QQ(Mobile X5)",Dr]],[Vs,["QQ(Mac)",un]],[Bs,["QQ(iPad)",hn]],[Fs,["MI",mn]],[Hs,["HW",pn]],[Gs,["Samsung",fn]],[xr,["OPPO",_n]],[wr,["VIVO",gn]],[Or,["EDGE",rn]],[Ls,["SogouMobile",on]],[xs,["Sogou",nn]]]);function sf(){let s=rf.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var Lc=function(){return!(nc||Or||Mr&&sc<80||re&&rc<56)},mu=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},On=function(){if(!navigator.mediaDevices)return Ei()||R.error(be.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},hu=!1;function Ei(){return location.protocol==="http:"&&!li?(hu||R.error(w({key:x.NOT_SUPPORTED_HTTP})),hu=!0,!0):!1}var of=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Pc=function(){return f(this,null,function*(){if(Z.detail.isH264EncodeSupported&&Z.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Z.detail.isH264EncodeSupported,isVp8EncodeSupported:Z.detail.isVp8EncodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(m.CANVAS);r.getContext("2d");let o=r.captureStream(0);return t.addTrack(o.getVideoTracks()[0],o),s=yield t.createOffer(),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),Z.detail.isH264EncodeSupported=i,Z.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:Z.detail.isH264EncodeSupported,isVp8EncodeSupported:Z.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},Mn=function(){return f(this,null,function*(){if(Z.detail.isH264DecodeSupported&&Z.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Z.detail.isH264DecodeSupported,isVp8DecodeSupported:Z.detail.isVp8DecodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection;return s=yield t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},kn=Cc(()=>f(void 0,null,function*(){if(Z.result&&Z.detail.isH264EncodeSupported&&Z.detail.isVp8EncodeSupported&&Z.detail.isH264DecodeSupported&&Z.detail.isVp8DecodeSupported)return Z;let s=Date.now(),i=Lc(),e=Vc(),t=mu(),r=On(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield Pc(),{isH264DecodeSupported:a,isVp8DecodeSupported:c}=yield Mn();if(!o||!n){let d=yield Pc();R.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(d)}`),o=d.isH264EncodeSupported,n=d.isVp8EncodeSupported}if(o&&a&&(xr||wr||lc)&&!Tt&&di()<79){let{encode:d,decode:h}=yield af();o=d,a=h}return Z.result=i&&e&&r&&(o||n)&&(a||c),Z.detail.isBrowserSupported=i,Z.detail.isWebRTCSupported=e,Z.detail.isWebCodecsSupported=t,Z.detail.isMediaDevicesSupported=r,Z.detail.isScreenShareSupported=eo(),Z.detail.isSmallStreamSupported=to(),Z.detail.isH264EncodeSupported=o,Z.detail.isVp8EncodeSupported=n,Z.detail.isH264DecodeSupported=a,Z.detail.isVp8DecodeSupported=c,Z.result||R.error(`${navigator.userAgent} ${Sc(Z.detail,!1)}`),mf(),N.addNumber({key:523800,value:Date.now()-s}),Z})),nf=function(){return Z.result},eo=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Dn=null;function af(){return f(this,null,function*(){return Dn||(Dn=new Promise(s=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{R.warn("detectH264Supported start");let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let o=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(o),clearTimeout(a),d.close(),h.close(),c.getTracks().forEach(C=>C.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let c=t.captureStream(),d=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});d.addEventListener("icecandidate",C=>h.addIceCandidate(C.candidate)),h.addEventListener("icecandidate",C=>d.addIceCandidate(C.candidate)),d.addTrack(c.getVideoTracks()[0],c);let u=yield d.createOffer();yield d.setLocalDescription(u),yield h.setRemoteDescription(u);let p=yield h.createAnswer(),_=kc.default.parse(p.sdp),I=_.media[0].rtp.findIndex(C=>C.codec==="H264");_.media[0].rtp=[_.media[0].rtp[I]],_.media[0].fmtp=_.media[0].fmtp.filter(C=>C.payload===_.media[0].rtp[0].payload),_.media[0].rtcpFb&&(_.media[0].rtcpFb=_.media[0].rtcpFb.filter(C=>C.payload===_.media[0].rtp[0].payload)),p.sdp=kc.default.write(_),yield h.setLocalDescription(p),yield d.setRemoteDescription(p),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let C=yield d.getSenders()[0].getStats(),D=yield h.getReceivers()[0].getStats();i.encode||C.forEach(B=>{B.type==="outbound-rtp"&&B.mediaType===m.VIDEO&&B.bytesSent>0&&(i.encode=!0)}),i.decode||D.forEach(B=>{B.type==="inbound-rtp"&&B.mediaType===m.VIDEO&&B.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),R.warn(t),s(i)}})).then(s=>((!s.encode||!s.decode)&&R.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${gt}`),s)),Dn)})}var cf=(s,i,e)=>{location.protocol==="http:"&&!li&&(s[i]=()=>{throw new y({code:S.INVALID_OPERATION,message:be.NOT_SUPPORTED_HTTP})})},Fi=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(ue(s.selected)&&!s.selected):!1};function pu(){let s="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";s+=`${i} * ${e}`}return s}function fu(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function _u(){let s={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){s.isSupported=!0;break}return s.isSupported}function gu(){return"captureStream"in HTMLCanvasElement.prototype}function to(){return kr||We||At&&At<63?!1:!!(Lc()&&gu())}var df=function(){if(E(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:Pi}),s.addTransceiver(m.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function ar(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Hi(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Ht(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function ct(){return Ke===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var jr=(()=>!(!ct()||It&&At<86))();function lf(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var io="RTCRtpSender"in window;function xc(){return io&&"replaceTrack"in window.RTCRtpSender.prototype}function ro(){return io&&"setParameters"in window.RTCRtpSender.prototype&&Hi()}var wc="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Gt=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Uc=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Ti=io&&"createEncodedStreams"in window.RTCRtpSender.prototype&&di()>=86,Pn="RTCRtpScriptTransform"in window,so=io&&(Ti||Pn),Vc=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Eu(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return E(window.AudioDecoder)||(s.AudioDecoder=!0),E(window.AudioEncoder)||(s.AudioEncoder=!0),E(window.VideoDecoder)||(s.VideoDecoder=!0),E(window.VideoEncoder)||(s.VideoEncoder=!0),E(window.ImageDecoder)||(s.ImageDecoder=!0),s}function Tu(){return"mediaSession"in navigator&&!E(navigator.mediaSession.setActionHandler)}function Su(){return!E(window.WebTransport)}function uf(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function hf(){let s={browser:`${Lt.name}/${Lt.version}`,os:Tn(),displayResolution:pu(),isScreenShareSupported:eo(),isWebRTCSupported:Vc(),isGetUserMediaSupported:fu(),isWebAudioSupported:_u(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Eu(),isMediaSessionSupported:Tu(),isWebTransportSupported:Su()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var Iu="checkResult";function mf(){yn.setItem(Iu,{ua:navigator.userAgent,checkResult:Z})}(function(){Ei();let i=yn.getItem(Iu);i&&i.ua===navigator.userAgent&&(Z=i.checkResult),kn()})();function cr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var Cu=Se(De(),1);var Au=Symbol("instance"),GE=Symbol("abortCtrl"),Ln=Symbol("cacheResult"),oo=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,co.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},no=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function pf(s){return typeof s=="object"&&s&&"then"in s}var ao=new Map;function he(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let c=ao.get(t)||[];ao.has(t)||ao.set(t,c),c.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...c){let d=this;if(e.context&&(d=F.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),d.state===i)return e.sync?d[Ln]:Promise.resolve(d[Ln]);d.state instanceof oo&&d.state.action==e.abortAction&&d.state.abort(d);let h=null;Array.isArray(s)?s.length==0?d.state instanceof oo&&d.state.abort(d):(typeof d.state!="string"||!s.includes(d.state))&&(h=new no(d._state,`${d.name} ${n} to ${i} failed: current state ${d._state} not from ${s.join("|")}`)):s!==d.state&&(h=new no(d._state,`${d.name} ${n} to ${i} failed: current state ${d._state} not from ${s}`));let u=D=>{if(e.fail&&e.fail.call(this,D),e.sync){if(e.ignoreError)return D;throw D}else return e.ignoreError?Promise.resolve(D):Promise.reject(D)};if(h)return u(h);let p=d.state,_=new oo(p,i,n);co.call(d,_);let I=D=>{var B;return d[Ln]=D,_.aborted||(co.call(d,i),(B=e.success)===null||B===void 0||B.call(this,d[Ln])),D},C=D=>{let B=D instanceof Error?D.message:String(D);return co.call(d,p,D),u(new no(d._state,`action '${n}' failed :${B}`,D instanceof Error?D:new Error(B)))};try{let D=a.apply(this,c);return pf(D)?D.then(I).catch(C):e.sync?I(D):Promise.resolve(I(D))}catch(D){return C(D)}}}}var ff=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function co(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(F.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var F=class extends Cu.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=F.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[Au];r?this.name=r.name+"-"+r.count++:t[Au]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=ao.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);ao.has(a)&&(a.stateDiagram.forEach(d=>t.add(d)),a.allStates.forEach(d=>n.add(d))),e.forEach(({from:d,to:h,action:u})=>{typeof d=="string"?r.push({from:d,to:h,action:u}):d.length?d.forEach(p=>{r.push({from:p,to:h,action:u})}):o.push({to:h,action:u})}),r.forEach(({from:d,to:h,action:u})=>{n.add(d),n.add(h),n.add(u+"ing"),t.add(`${d} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${d} : ${u} \u{1F534}`)}),o.forEach(({to:d,action:h})=>{t.add(`${h}ing --> ${d} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==d&&t.add(`${u} --> ${h}ing : ${h}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=F.instances.get(i),e||F.instances.set(i,e=new F(i,void 0,Object.create(F.prototype)))):(e=F.instances2.get(i),e||F.instances2.set(i,e=new F(i.constructor.name,void 0,Object.create(F.prototype)))),e}static getState(i){var e;return(e=F.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){ff(F.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){co.call(this,i)}};F.STATECHANGED="stateChanged";F.UPDATEAFSM="updateAFSM";F.INIT="[*]";F.ON="on";F.OFF="off";F.instances=new Map;F.instances2=new WeakMap;var Ru=(window==null?void 0:window.requestIdleCallback)||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},_f=(window==null?void 0:window.cancelIdleCallback)||function(s){clearTimeout(s)},gf=(window==null?void 0:window.cancelAnimationFrame)||(window==null?void 0:window.mozCancelAnimationFrame),lo=class{static generateTaskID(){return this.currentTaskID++}static run(i=xi,e,t){i===tr?t=v({delay:2e3,count:0,backgroundTask:!0},t):i===Li?t=v({delay:1e4,count:0},t):i===vr?t=v({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=v({delay:2e3,count:0,backgroundTask:!0},t),Ct(e)&&(t=v(v({},t),e)),te(i)&&(e=i,i=xi);let r=v({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t);return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,this.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){i.delay=(1e3/i.fps).toFixed(2);let e=new Worker(URL.createObjectURL(new Blob([`
10
+ `,S+=o)),i&&(S+=`
11
+ Refer to: ${Xf("en",d)}
12
+ `),S}var bT=Object.prototype.hasOwnProperty;var Yi=n=>typeof n=="function",Gn=n=>typeof n=="undefined";var Qf=n=>typeof n=="boolean";var NT=function(n){if(!n||typeof n!="object"||Object.prototype.toString.call(n)!="[object Object]")return!1;let r=Object.getPrototypeOf(n);if(r===null)return!0;let e=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Yf(n){if(n==null)return!0;if(typeof n=="boolean")return!1;if(typeof n=="number")return n===0;if(typeof n=="string"||typeof n=="function"||Array.isArray(n))return n.length===0;if(n instanceof Error)return n.message==="";if(NT(n))switch(Object.prototype.toString.call(n)){case"[object File]":case"[object Map]":case"[object Set]":return n.size===0;case"[object Object]":{for(let r in n)if(bT.call(n,r))return!1;return!0}}return!1}var DT=0,wT=1,Kf=2;function kT({retryFunction:n,settings:r,onError:e,onRetrying:t,onRetryFailed:i,onRetrySuccess:o,context:a}){return function(...d){let{retries:p=5,timeout:_=1e3}=r,S=0,v=-1,A=DT,w=(M,L)=>N(this,null,function*(){let W=a||this;try{let ie=yield n.apply(W,d);S>0&&o&&o.call(this,S),S=0,M(ie)}catch(ie){let Me=()=>{clearTimeout(v),S=0,A=Kf,L(ie)},pe=()=>{A!==Kf&&S<(Yi(p)?p():p)?(S++,A=wT,Yi(t)&&t.call(this,S,Me),v=window.setTimeout(()=>{v=-1,w(M,L)},Yi(_)?_(S):_)):(Me(),Yi(i)&&i.call(this,ie))};Yi(e)?e.call(this,{error:ie,retry:pe,reject:L,retryFuncArgs:d,retriedCount:S}):pe()}});return new Promise(w)}}var Ki=kT;var Zf=$t(nr(),1),OT=new Zf.default,B=OT;var jn=(de=>(de.ROOM_DESTROY="1",de.JOIN_START="21",de.JOIN_SCHEDULE_SUCCESS="22",de.JOIN_SIGNAL_CONNECTION_START="23",de.JOIN_SIGNAL_CONNECTION_END="24",de.JOIN_SEND_CMD="25",de.JOIN_RECEIVED_CMD_RES="26",de.JOIN_SUCCESS="27",de.JOIN_FAILED="28",de.LEAVE_START="51",de.LEAVE_SEND_CMD="52",de.LEAVE_SUCCESS="53",de.PUBLISH_START="61",de.SEND_FIRST_VIDEO_FRAME="62",de.PUBLISH_FAILED="63",de.SUBSCRIBE_START="81",de.SUBSCRIBE_SUCCESS="82",de.SUBSCRIBE_FAILED="84",de.UNSUBSCRIBE_SUCCESS="83",de.LOCAL_TRACK_CAPTURE_START="101",de.LOCAL_TRACK_CAPTURE_SUCCESS="102",de.LOCAL_TRACK_CAPTURE_FAILED="103",de.LOCAL_TRACK_PUBLISHED="104",de.LOCAL_TRACK_UNPUBLISHED="105",de.LOCAL_TRACK_REPLACED="106",de.SWITCH_DEVICE_SUCCESS="107",de.TRACK_MUTED="108",de.TRACK_UNMUTED="109",de.REMOTE_TRACK_SUBSCRIBED="110",de.REMOTE_TRACK_UNSUBSCRIBED="111",de.LOCAL_TRACK_RECAPTURE="112",de.PLAY_TRACK_START="151",de.PLAYER_STATE_CHANGED="152",de.VIDEO_LOADED_DATA="153",de.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",de.SIGNAL_CONNECTION_STATE_CHANGED="201",de.PEER_CONNECTION_STATE_CHANGED="202",de.SINGLE_CONNECTION_STAT="203",de.SPC_RECONNECTED="204",de.HEARTBEAT_REPORT="251",de.RECEIVED_PUBLISHED_USER_LIST="252",de.REMOTE_PUBLISH_STATE_CHANGED="253",de.AUDIO_LEVEL_INTERVAL="260",de.NETWORK_QUALITY="261",de.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",de.QUALITY_LIMITATION_CHANGED="263",de.LOG="264",de))(jn||{});var mm=class{constructor(){this._roomIdMap=new Map;typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Bt,env:Ln.QCLOUD,browserVersion:qi.name+qi.version,ua:navigator.userAgent})}setConfig({sdkAppId:r,env:e,userId:t,roomId:i}){r!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(r)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(i))}logSuccessEvent(r){Hn||!J.isAbleToUpload||this._configs.env===Ln.QCLOUD&&this.uploadEventToKibana(_e(oe({},r),{result:"success"}))}logFailedEvent(r){if(Hn||!J.isAbleToUpload)return;let{eventType:e,code:t,error:i,userId:o}=r,a={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(i==null?void 0:i.extraCode)||(i==null?void 0:i.code)||H.UNKNOWN};this._configs.env===Ln.QCLOUD&&this.uploadEventToKibana(_e(oe({},a),{error:i}))}uploadEventToKibana(r){let e=`stat-${r.eventType}-${r.result}`;(r.eventType==="delta-join"||r.eventType==="delta-leave"||r.eventType==="delta-publish")&&(e=`${r.eventType}:${r.delta}`),this.uploadEvent({log:e,userId:r.userId}),r.result==="failed"&&(e=`stat-${r.eventType}-${r.result}-${r.code}`,this.uploadEvent({log:e,userId:r.userId,error:r.error}))}uploadEvent({log:r,userId:e,error:t}){let i={timestamp:Uu(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Bt,log:r};t&&(i.errorInfo=t.message,t.stack&&(i.errorInfo+=`
13
+ ${t.stack}`)),this.sendRequest(Ao(this._configs.sdkAppId,fo.LOG),i)}sendRequest(r,e){if(!J.isAbleToUpload){setTimeout(()=>{this.sendRequest(r,e)},1e3);return}Fn({url:r,body:JSON.stringify(e)}).catch(()=>{})}},je=new mm;var pm=null,fm=!0;document&&document.head.insertAdjacentHTML("beforeend",Object.values(Vn).map(n=>`<link rel="dns-prefetch" href="https://${n}">`).join(`\r
14
+ `));function tn(n){St(n)&&n!==fm&&(fm=n,J.info(`setIsNeedToSchedule ${n}`))}B.on("28",()=>tn(!0));B.on("63",()=>tn(!0));B.on("84",()=>tn(!0));B.on("201",n=>{n.state==="RECONNECTING"&&tn(!0)});B.on("202",n=>{n.state==="RECONNECTING"&&tn(!0)});function PT(n,r,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let i=performance.getEntriesByType("resource"),o=Da(n,b.MAIN),a=Da(n,b.BACKUP);for(let d of i)if(d.startTime>=e&&(d.name===o||d.name===a)&&d.transferSize>0){let p=d.name===o?b.MAIN:b.BACKUP,_=Math.round(d.duration),S=Math.round(d.domainLookupStart-d.startTime),v=d.redirectStart>0?Math.round(d.redirectEnd-d.redirectStart):0,A=d.fetchStart>0?Math.round(d.domainLookupStart-d.fetchStart):0,w=Math.round(d.domainLookupEnd-d.domainLookupStart),M=Math.round(d.requestStart-d.secureConnectionStart),L=Math.round(d.secureConnectionStart-d.connectStart),W=Math.round(d.responseStart-d.requestStart),ie=Math.round(d.responseEnd-d.responseStart),Me=[w,M,L,W,ie];je.uploadEvent({log:`stat-schedule-net:${_}(${S}(${v}->${A})->${Me.join("->")}) ${p}`,userId:r}),t=_e(oe({},t),{totalCost:_,local:S,dns:w,tcp:L,tls:M,request:W,response:ie});break}}catch(i){J.error("getScheduleDetailCost error",i)}return t}function t_(_){return N(this,arguments,function*({userId:n,sdkAppId:r,useStringRoomId:e,roomId:t,userSig:i,version:o,frameWorkType:a,role:d,latencyLevel:p}){if(!fm&&pm)return{isCached:!0,result:pm};let S={delta:0,count:[1,1],msg:[],detail:[]};try{let v=new FormData;v.append("userId",String(n)),v.append("sdkAppId",String(r)),v.append("isStrGroupId",String(e)),v.append("groupId",String(t)),v.append("sdkVersion",o),v.append("userSig",String(i)),d&&v.append("role",String(d)),p&&v.append("latencyLevel",String(p)),a&&v.append("frameWorkType",String(a));let A=ge(),w=yield MT(v,S,r);w.config&&(w.config.loggerDomain&&fs(w.config.loggerDomain),St(w.config.scheduleCache)&&tn(!w.config.scheduleCache)),S.delta=ge()-A;let M=PT(Number(r),n,A);return pm=w,{isCached:!1,result:w,detailCost:M}}catch(v){let A=Dt(v)?v[0]:v,w=qe(A.code)?A.code:0,M=`schedule failed${A.message?`: ${A.message}`:""}`,L=new Y({code:H.SCHEDULE_FAILED,extraCode:w,message:Te({key:Ee.JOIN_ROOM_FAILED,data:{error:M,code:w}})});throw J.error(M,w),L}})}var Zi={main:"",backup:""};function _m(n){Dt(n)?(Zi.main=n[0],Zi.backup=n[1]):Zi.main=n}function Da(n,r=b.MAIN,e=!1){return`https://${Zi[r]||ll(n,r,e)}/api/v1/config`}function r_(n,r=b.MAIN){return`https://${Zi[r]||ll(n,r)}/api/v1/trtcAutoConf`}function ll(n,r=b.MAIN,e=!1){let t;return hl(n)?e?t=r===b.MAIN?Vn.MAIN_OVERSEA_BACKUP:Vn.BACKUP_OVERSEA:t=r===b.MAIN?Vn.MAIN_OVERSEA:Vn.BACKUP_OVERSEA:t=r===b.MAIN?Vn.MAIN:Vn.BACKUP,t}function xT(n,r,e){return new Promise((t,i)=>{Fn({url:n,body:r,timeout:e.timeout}).then(o=>{o.data.code===0?t(o.data.data):i({code:o.data.code,message:o.data.msg})}).catch(i)})}var e_=(n,r)=>Ki({retryFunction:xT,settings:{retries:3,timeout:0},onError:r,onRetrying:n});function MT(n,r,e){return new Promise((t,i)=>{let o=null;Pd([e_(a=>r.count[0]=a+1,({error:a,retry:d,retriedCount:p,retryFuncArgs:_})=>{r.msg[0]=a.message,o||(p>=1&&(_[0]=Da(e,b.MAIN,!0)),d())})(Da(e,b.MAIN),n,{get timeout(){return wa(2+r.count[0])*1e3}}),e_(a=>r.count[1]=a+1,({error:a,retry:d,retriedCount:p,retryFuncArgs:_})=>{r.msg[1]=a.message,o||(p>=2&&(_[0]=Da(e,b.BACKUP,!0)),d())})(Da(e,b.BACKUP),n,{get timeout(){return wa(2+r.count[1])*1e3}})]).then(a=>{o=a,t(o)}).catch(i)})}var LT=function(){return new URLSearchParams(location.search).get("trtc_env")||""},hl=n=>Number(n)<14e8,Ao=function(n,r){let e;fd?e=fd:e=hl(n)?$h:Fh;let t=Math.floor(Math.random()*dd(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${n}&cmdtype=${r}`},xd="unknown";function n_(){if(xd!=="unknown")return xd;let{userAgent:n,connection:r}=navigator,e=(n.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=r&&r.type&&r.type.toLowerCase(),i=r&&r.effectiveType&&r.effectiveType.toLowerCase();return i==="slow-2"&&(i="2g"),t&&(xd=o_(t,i)),xd}function o_(n,r){if(Vu[n])return n;switch(n){case"cellular":case"wimax":return r||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function gm(n){xd=o_(n)}function Oa(){return Vu[n_()]}function UT(n,r){for(let e of Reflect.ownKeys(r))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(r,e)||"";Object.defineProperty(n,e,t)}return n}function VT(n,r=48e3){return s_(n/4,r)}function s_(n,r=48e3){return n*1e3/r}function FT(n,r=48e3){return a_(n,r)*4}function a_(n,r=48e3){return n*r/1e3}var c_=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Qi=()=>{let n=navigator.language;return n=n.substring(0,2),n==="zh"},jr=function(n){if(!n||typeof n!="object"||Object.prototype.toString.call(n)!="[object Object]")return!1;let r=Object.getPrototypeOf(n);if(r===null)return!0;let e=Object.prototype.hasOwnProperty.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function wa(n,r=1,e=1){return n<=1?e:wa(n-1,e,r+e)}function rn(n){return n>8?30*1e3:wa(n)*1e3}function Ht(n){return Reflect.apply(Object.prototype.toString,n,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Ze=n=>typeof n=="function",V=n=>typeof n=="undefined",Je=n=>typeof n=="string",qe=n=>typeof n=="number",St=n=>typeof n=="boolean",Oi=n=>Ht(n)==="object",Dt=n=>Ht(n)==="array",$T=n=>Ht(n)==="MediaStreamTrack".toLowerCase(),xi=n=>n.isRemote,Is=n=>Ht(n)==="promise",Md=n=>Ze(n)&&n.prototype.constructor===n,ml=n=>Md(n)?n.prototype.constructor.name:"",BT=typeof AudioWorkletNode!="undefined";function Pd(n){return new Promise((r,e)=>{let t=[];n.forEach(i=>{i.then(r).catch(o=>{t.push(o),t.length===n.length&&e(t)})})})}function ge(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var i_=n=>+n<10?`0${n}`:n,HT=n=>{let r=n.match(/^\d+\.\d+\.\d+/)[0];if(!r)return n;let e=r.split("."),t=i_(e[1])+i_(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},WT=Object.prototype.hasOwnProperty,{toString:av}=Object.prototype;function Em(n){if(n==null)return!0;if(typeof n=="boolean")return!1;if(typeof n=="number")return n===0;if(typeof n=="string"||typeof n=="function"||Array.isArray(n))return n.length===0;if(n instanceof Error)return n.message==="";if(jr(n))switch(Object.prototype.toString.call(n)){case"[object File]":case"[object Map]":case"[object Set]":return n.size===0;case"[object Object]":{for(let r in n)if(WT.call(n,r))return!1;return!0}}return!1}function Co(n,r){return{userId:r,hasAudio:!!(n&go),hasVideo:!!(n&_o),hasAuxiliary:!!(n&_s),hasSmall:!!(n&_d),audioMuted:!!(n&Wu),videoMuted:!!(n&Gu),audioAvailable:!!(n&go)&&!(n&Wu),videoAvailable:!!(n&_o)&&!(n&Gu)}}function GT(n){let r={urls:n.url.startsWith("turn:")||n.url.startsWith("turns:")?n.url:`turn:${n.url}`};return!V(n.username)&&!V(n.credential)&&(r.username=n.username,r.credential=n.credential,r.credentialType="password",V(n.credentialType)||(r.credentialType=n.credentialType)),r}function Ld(n,r=!0){if(!Je(n))return 0;let e=n.split(".");return r?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var zn=function(n,r,e,t){if(!(Oi(n)&&Oi(r)))return 0;let i=0,o=Object.keys(r),a;for(let d=0,p=o.length;d<p;d++)if(a=o[d],!(V(r[a])||e&&e.includes(a)))if(Oi(n[a])&&Oi(r[a]))i+=zn(n[a],r[a],e,t);else{if(t&&t.includes(r[a]))continue;n[a]!==r[a]&&(n[a]=ka(r[a]),i+=1)}return i};function ka(n){if(Dt(n)){let r=[];return n.forEach((e,t)=>{r[t]=ka(e)}),r}if(Oi(n)){let r={};return Object.keys(n).forEach(e=>{r[e]=ka(n[e])}),r}return n}var Ud=n=>{let r=[];if(Dt(n))r=[...n];else if(Je(n)){let e=document.getElementById(n);e&&r.push(e)}else n&&r.push(n);return r},jT=n=>Je(n)?document.getElementById(n):n,zT=n=>{let r=p=>p<10?`0${p}`:`${p}`,e=n.getFullYear(),t=n.getMonth()+1,i=n.getDate(),o=r(n.getHours()),a=r(n.getMinutes()),d=r(n.getSeconds());return`${e}/${t}/${i} ${o}:${a}:${d}`},JT=()=>zT(new Date);function Pi(n,{keysToInclude:r,keysToExclude:e}){try{if(Dt(n))return`[${n.map(a=>Pi(a,{keysToInclude:r,keysToExclude:e})).join(",")}]`;if(!jr(n)||!Dt(r)&&!Dt(e))return JSON.stringify(n);let t={},i=new Set(r),o=new Set(e);return Object.keys(n).forEach(a=>{(o.size===0&&i.has(a)||i.size===0&&!o.has(a))&&(t[a]=jr(n[a])||Dt(n[a])?JSON.parse(Pi(n[a],{keysToExclude:e,keysToInclude:r})):n[a])}),JSON.stringify(t)}catch(t){return"{}"}}function Tm(n,r=!1){let e=[];return Object.keys(n).forEach(t=>{r===n[t]&&e.push(t)}),Pi(n,{keysToInclude:e})}function pl(n){return n.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Sm=()=>{var n,r,e,t;return(n=window.screen)!=null&&n.orientation?!!((t=(e=(r=window.screen)==null?void 0:r.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},Vd=n=>N(void 0,null,function*(){return new Promise((r,e)=>{let t;if(Je(n))t=new Image,t.crossOrigin="anonymous",t.src=n;else if(t=n,t.complete){r(t);return}t.onload=()=>r(t),t.onerror=()=>{e(new Y({code:H.INVALID_PARAMETER,message:`load image failed, url: ${n}`}))}})}),Im=n=>{let r=n.split(".");return+r[0]<<24|+r[1]<<16|+r[2]<<8|+r[3]<<0},fl=n=>(Object.keys(n).forEach(r=>{qe(n[r])&&(r.startsWith("uint")||r.startsWith("int"))?n[r]=Math.floor(n[r]):(jr(n[r])||Dt(n[r]))&&fl(n[r])}),n);function Ro(n,r){return new Promise(e=>{let t=setTimeout(e,n);r&&r(t)})}var ym=(n,r)=>{let e=null;return function(...t){return e||(e=n.apply(r||this,t),e.finally(()=>e=null),e)}};var Pa=class{constructor(r){E(this,"userId");E(this,"remoteUserId");E(this,"id");E(this,"sdkAppId");E(this,"type");E(this,"isLocal");this.id=r.id,this.userId=r.userId,this.sdkAppId=r.sdkAppId,this.remoteUserId=r.remoteUserId,this.isLocal=Qf(r.isLocal)?r.isLocal:!0,this.type=this.isLocal?"":r.type}createChild(r){return Object.setPrototypeOf(r,this)}setUserId(r){this.userId=r}setSdkAppId(r){this.sdkAppId=r}log(r,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),J.log(r,e,Gn(this.userId)||Yf(this.userId),this.userId,this.sdkAppId)}info(...r){this.log(2,r)}debug(...r){this.log(1,r)}warn(...r){this.log(3,r)}error(...r){this.log(4,r)}};var U=jn;var qT="%cTRTC%c%s",XT="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",QT="display: inline",YT=!(Nr||Nt||cm),vm=class{constructor(){E(this,"_isEnableUploadLog",!0);E(this,"_localJoinedUser",new Map);E(this,"_queue",[]);E(this,"_timeoutId",-1);E(this,"_logLevel",1);E(this,"_logLevelToUpload",2);!ha&&!pd&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){B.on(U.JOIN_SCHEDULE_SUCCESS,({schedule:r})=>{var e;((e=r==null?void 0:r.config)==null?void 0:e.logLevelToUpload)&&vi[r.config.logLevelToUpload]&&(this._logLevelToUpload=r.config.logLevelToUpload)}),B.on(U.JOIN_SUCCESS,({room:r})=>{this.addJoinedUser({userId:r.userId,sdkAppId:r.sdkAppId}),this.startUpload()}),B.once(U.JOIN_FAILED,()=>{this.startUpload()}),B.on(U.LEAVE_SUCCESS,({room:r})=>{this.deleteJoinedUser(r.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(r){this._localJoinedUser.set(r.userId,r),this.startUpload()}deleteJoinedUser(r){this._localJoinedUser.delete(r)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),2e3)}getLogsToUpload(){let r={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return r;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:i,sdkAppId:o})=>{r.map.has(i)?r.map.get(i).logs.push(t):r.map.set(i,{userId:i,sdkAppId:o,logs:[t]})});else if(Je(t.userId)&&qe(t.sdkAppId)){let{userId:i,sdkAppId:o}=t;r.map.has(i)?r.map.get(i).logs.push(t):r.map.set(i,{userId:i,sdkAppId:o,logs:[t]})}}return r.map.size>0&&(r.splicedQueue=this._queue.splice(0,e)),r}upload(){return N(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:r,splicedQueue:e}=this.getLogsToUpload();if(r.size===0)return;try{let i=[...r.values()];for(let o=0;o<i.length;o++){let{userId:a,sdkAppId:d,logs:p}=i[o];yield this.uploadLogWithRetry(JSON.stringify({timestamp:Uu(),sdkAppId:String(d),userId:a,version:Bt,log:p.map(_=>_.log).join(`
15
+ `)}),d),p.forEach(_=>_.uploaded=!0)}}catch(i){}let t=e.filter(i=>!i.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(r,e){return Ki({retryFunction:()=>Fn({url:Ao(e,fo.LOG),body:r,timeout:5e3}),settings:{retries:3,timeout:1e3},onError:({retry:t})=>{t()}})()}getPrefix(r){let e=new Date;e.setTime(hd());let t=String(e.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}] <${vi[r]}>`}getLogLevel(){return this._logLevel}setLogLevel(r){V(vi[r])||(this._logLevel!==r&&this.info("setLogLevel",r),this._logLevel=r)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(r){if(Je(r))return r;try{return r instanceof Error?r.toString():JSON.stringify(r)}catch(e){return""}}log(r,e,t=!0,i,o){var p;e.unshift(this.getPrefix(r));let a={log:e.reduce((_,S)=>`${_} ${this.logChunkToString(S)}`.trim(),""),level:r,userId:i,sdkAppId:o,forAllJoinedClients:t};if(B.emit(U.LOG,{log:a}),this._isEnableUploadLog&&r>=this._logLevelToUpload&&this._queue.push(a),r<this._logLevel)return;let d=((p=vi[r])==null?void 0:p.toLowerCase())||"info";YT?console[d](qT,XT,QT,...e):console[d](...e)}debug(...r){this.log(1,r)}info(...r){this.log(2,r)}warn(...r){this.log(3,r)}error(...r){this.log(4,r)}createLogger(r){return new Pa(r)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;vi[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}},J=new vm;var KT=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let r=Math.random()*16|0;return(n=="x"?r:r&3|8).toString(16)})},Fd=KT;var Am=class{constructor(){E(this,"_prefix","TRTC");E(this,"_queue",new Map);this.checkStorage()}getRealKey(r){return`${this._prefix}_${r}`}checkStorage(){if(!Wn())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix)){let i=localStorage.getItem(t);if(!i)return!1;let o=JSON.parse(i);if(o&&o.expiresIn<Date.now())return!0}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(!!Wn())try{for(let[r,e]of this._queue)localStorage.setItem(r,JSON.stringify(e))}catch(r){J.warn(r)}}getItem(r){if(!Wn())return null;try{let e=localStorage.getItem(this.getRealKey(r));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){J.warn(e)}}setItem(r,e){if(!!Wn())try{let t={expiresIn:Date.now()+Fu,value:e};this._queue.set(this.getRealKey(r),t)}catch(t){J.warn(t)}}deleteItem(r){if(!Wn())return!1;try{return r=this.getRealKey(r),this._queue.delete(r),localStorage.removeItem(r),!0}catch(e){return J.warn(e),!1}}clear(){if(!!Wn())try{localStorage.clear()}catch(r){J.warn(r)}}},_l=new Am;var sn={};ud(sn,{HTTPS_API:()=>pS,IS_GET_CAPABILITIES_SUPPORTED:()=>Um,IS_GET_SETTINGS_SUPPORTED:()=>on,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Lm,IS_INSERTABLE_STREAM_SUPPORTED:()=>Qn,IS_RTC_RTP_SENDER_SUPPORTED:()=>Wd,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Al,IS_SEI_SUPPORTED:()=>jd,IS_SPC_SUPPORTED:()=>Ma,basis:()=>gS,checkSystemRequirementsInternal:()=>vl,decodeSupportStatus:()=>yl,encodeSupportStatus:()=>Om,getBrowserInfo:()=>lS,getDisplayResolution:()=>T_,isAddTransceiverSupported:()=>si,isBrowserSupported:()=>Pm,isGetReceiversSupported:()=>As,isGetSendersSupported:()=>No,isGetTransceiversSupported:()=>nn,isGetUserMediaSupported:()=>S_,isMediaDevicesSupported:()=>Il,isMediaSessionSupported:()=>A_,isMediaStreamTrackProcessorSupported:()=>xm,isReplaceTrackSupported:()=>Mm,isRequestVideoFrameCallbackSupported:()=>Cs,isSIMDSupported:()=>Fm,isScreenCaptureApiAvailable:()=>Bd,isSelectedCandidatePair:()=>bo,isSetParametersSupported:()=>Gd,isSmallStreamAPISupported:()=>y_,isSmallStreamSupported:()=>Hd,isStopTransceiverSupported:()=>_S,isTRTCSupported:()=>hS,isUnifiedPlanDefault:()=>fS,isUsedInHttpProtocol:()=>Xn,isWebAudioSupported:()=>I_,isWebCodecSupported:()=>v_,isWebCodecsSupported:()=>E_,isWebRTCSupported:()=>Vm,isWebTransportSupported:()=>C_});var km=$t(__(),1);var aS=1,cS=0,gl=class{constructor(r=!0){this.countMap=new Map;this.distributionMap=new Map;this.log=J.createLogger({id:"kv"});r&&(B.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===b.AUDIO?El.START_MICROPHONE:bm.START_CAMERA,cost:t})}),B.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===b.AUDIO?El.START_MICROPHONE:bm.START_CAMERA,error:t})}))}getReportData(){let r={msg_sdk_basic_info:{uint32_sdk_version:Im(this.version||Bt),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([i,o])=>({uint32_item_key:i,uint32_item_value:o}))}))};return this.countMap.clear(),this.distributionMap.clear(),r}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(r){let e=+String(r).slice(-3);return e>=700&&e<799}isErrorCodeKey(r){let e=+String(r).slice(-3);return e>=600&&e<699}isCountKey(r){let e=+String(r).slice(-3);return e>=0&&e<599}isNumberKey(r){let e=+String(r).slice(-3);return e>=800&&e<899}addCount({key:r,useUV:e=!1}){if(!this.isCountKey(r)){this.log.debug(`${r} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(r)||this.countMap.set(r,(this.countMap.get(r)||0)+1)}addEnum({key:r,value:e,useUV:t=!0}){var o;if(!this.isEnumKey(r))return this.log.debug(`${r} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(r))return;this.countMap.set(r,(this.countMap.get(r)||0)+1);let i=((o=this.distributionMap)==null?void 0:o.get(r))||new Map;i.set(e,(i.get(e)||0)+1),this.distributionMap.set(r,i)}addNumber({key:r,value:e,split:t=100,useUV:i=!1}){var d;if(!this.isNumberKey(r))return this.log.debug(`${r} is not number key, last 3 number should be 800~899`);if(i&&this.countMap.has(r))return;this.countMap.set(r,(this.countMap.get(r)||0)+1);let o=((d=this.distributionMap)==null?void 0:d.get(r))||new Map,a=0;if(qe(t))a=Math.floor(e/t);else for(let p=t.length-1;p>0;p--)if(e>t[p]){a=p;break}o.set(a,(o.get(a)||0)+1),this.distributionMap.set(r,o)}addSuccessEvent({key:r,cost:e,timeKey:t,split:i}){if(!!r&&(this.addEnum({key:r,value:aS,useUV:!1}),e)){let o=+String(r).slice(-3);o<800&&o>=700?this.addNumber({key:t||r+100,value:e,split:i}):t||this.log.debug(`time stat ignored, ${r}`)}}addFailedEvent({key:r,error:e}){if(!r)return;let t=H.UNKNOWN;e&&(qe(e)?t=e:(!V(e.extraCode)||!V(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:r,value:cS,useUV:!1}),this.addEnum({key:r,value:t,useUV:!1})}},Tl=(Ie=>(Ie[Ie.enterRoom=500700]="enterRoom",Ie[Ie.exitRoom=500701]="exitRoom",Ie[Ie.switchRole=500702]="switchRole",Ie[Ie.destroy=500703]="destroy",Ie[Ie.startLocalAudio=500704]="startLocalAudio",Ie[Ie.updateLocalAudio=500705]="updateLocalAudio",Ie[Ie.stopLocalAudio=500706]="stopLocalAudio",Ie[Ie.startLocalVideo=500707]="startLocalVideo",Ie[Ie.updateLocalVideo=500708]="updateLocalVideo",Ie[Ie.stopLocalVideo=500709]="stopLocalVideo",Ie[Ie.startScreenShare=500710]="startScreenShare",Ie[Ie.updateScreenShare=500711]="updateScreenShare",Ie[Ie.stopScreenShare=500712]="stopScreenShare",Ie[Ie.startRemoteVideo=500713]="startRemoteVideo",Ie[Ie.updateRemoteVideo=500714]="updateRemoteVideo",Ie[Ie.stopRemoteVideo=500715]="stopRemoteVideo",Ie[Ie.muteRemoteAudio=500716]="muteRemoteAudio",Ie[Ie.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Ie[Ie.use=500718]="use",Ie[Ie.sendSEIMessage=5e5]="sendSEIMessage",Ie[Ie.sendCustomMessage=500001]="sendCustomMessage",Ie))(Tl||{}),Nm=(_=>(_[_.AudioMixer=550700]="AudioMixer",_[_.AIDenoiser=551700]="AIDenoiser",_[_.VirtualBackground=570700]="VirtualBackground",_[_.Beauty=571700]="Beauty",_[_.Watermark=572700]="Watermark",_[_.BasicBeauty=574700]="BasicBeauty",_[_.CDNStreaming=590700]="CDNStreaming",_[_.DeviceDetector=591700]="DeviceDetector",_[_.Debug=592700]="Debug",_))(Nm||{}),Dm=(_=>(_[_.AudioMixer=550701]="AudioMixer",_[_.AIDenoiser=551701]="AIDenoiser",_[_.VirtualBackground=570701]="VirtualBackground",_[_.Beauty=571701]="Beauty",_[_.Watermark=572701]="Watermark",_[_.BasicBeauty=574701]="BasicBeauty",_[_.CDNStreaming=590701]="CDNStreaming",_[_.DeviceDetector=591701]="DeviceDetector",_[_.Debug=592701]="Debug",_))(Dm||{}),wm=(_=>(_[_.AudioMixer=550702]="AudioMixer",_[_.AIDenoiser=551702]="AIDenoiser",_[_.VirtualBackground=570702]="VirtualBackground",_[_.Beauty=571702]="Beauty",_[_.Watermark=572702]="Watermark",_[_.BasicBeauty=574702]="BasicBeauty",_[_.CDNStreaming=590702]="CDNStreaming",_[_.DeviceDetector=591702]="DeviceDetector",_[_.Debug=592702]="Debug",_))(wm||{});var El=(t=>(t[t.START_MICROPHONE=501700]="START_MICROPHONE",t[t.MICROPHONE_CAHNNELS=501701]="MICROPHONE_CAHNNELS",t[t.MICROPHONE_SAMPLERATE=501702]="MICROPHONE_SAMPLERATE",t))(El||{});var bm=(r=>(r[r.START_CAMERA=511700]="START_CAMERA",r))(bm||{});var dS=new gl(!0),vs=new gl(!1);var Z=dS;var Xe={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},uS=new Map([[nt,["Firefox",Ju]],[Ta,["Edg",Xu]],[Ca,["Chrome",dl]],[Dr,["Safari",Io]],[Ni,["TBS",Ku]],[Ad,["XWEB",Zu]],[Sa&&Ss,["WeChat",el]],[Cd,["QQ(Win)",tl]],[ya,["QQ(Mobile)",ga]],[Ia,["QQ(Mobile X5)",ga]],[Rd,["QQ(Mac)",rl]],[bd,["QQ(iPad)",il]],[Dd,["MI",nl]],[wd,["HW",ol]],[kd,["Samsung",sl]],[va,["OPPO",al]],[Aa,["VIVO",cl]],[Ea,["EDGE",qu]],[yd,["SogouMobile",Qu]],[vd,["Sogou",Yu]]]);function lS(){let n=uS.get(!0),r=n?n[0]:"unknown",e=n?n[1]:"unknown";return{browserName:r,browserVersion:e}}var Pm=function(){return!(om||Ea||Ta&&im<80||nt&&rm<56)},E_=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(r=>r in window)},Il=function(){if(!navigator.mediaDevices)return Xn()||J.error(Yt.NOT_SUPPORTED_MEDIA),!1;let n=["getUserMedia","enumerateDevices"];return n.filter(r=>r in navigator.mediaDevices).length===n.length},g_=!1;function Xn(){return location.protocol==="http:"&&!Hn?(g_||J.error(Te({key:Ee.NOT_SUPPORTED_HTTP})),g_=!0,!0):!1}var xm=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Om=function(){return N(this,null,function*(){if(Xe.detail.isH264EncodeSupported&&Xe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Xe.detail.isH264EncodeSupported,isVp8EncodeSupported:Xe.detail.isVp8EncodeSupported};let n,r=!1,e=!1;try{let t=new RTCPeerConnection,i=document.createElement(b.CANVAS);i.getContext("2d");let o=i.captureStream(0);return t.addTrack(o.getVideoTracks()[0],o),n=yield t.createOffer(),n.sdp.toLowerCase().indexOf("h264")!==-1&&(r=!0),n.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),Xe.detail.isH264EncodeSupported=r,Xe.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:Xe.detail.isH264EncodeSupported,isVp8EncodeSupported:Xe.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},yl=function(){return N(this,null,function*(){if(Xe.detail.isH264DecodeSupported&&Xe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Xe.detail.isH264DecodeSupported,isVp8DecodeSupported:Xe.detail.isVp8DecodeSupported};let n,r=!1,e=!1;try{let t=new RTCPeerConnection;return n=yield t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),n.sdp.toLowerCase().indexOf("h264")!==-1&&(r=!0),n.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:r,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},vl=ym(()=>N(void 0,null,function*(){if(Xe.result&&Xe.detail.isH264EncodeSupported&&Xe.detail.isVp8EncodeSupported&&Xe.detail.isH264DecodeSupported&&Xe.detail.isVp8DecodeSupported)return Xe;let n=Date.now(),r=Pm(),e=Vm(),t=E_(),i=Il(),{isH264EncodeSupported:o,isVp8EncodeSupported:a}=yield Om(),{isH264DecodeSupported:d,isVp8DecodeSupported:p}=yield yl();if(!o||!a){let _=yield Om();J.warn(`detect encode again h264:${o} vp8:${a} result: ${JSON.stringify(_)}`),o=_.isH264EncodeSupported,a=_.isVp8EncodeSupported}if(o&&d&&(va||Aa||dm)&&!Ni&&Bn()<79){let{encode:_,decode:S}=yield mS();o=_,d=S}return Xe.result=r&&e&&i&&(o||a)&&(d||p),Xe.detail.isBrowserSupported=r,Xe.detail.isWebRTCSupported=e,Xe.detail.isWebCodecsSupported=t,Xe.detail.isMediaDevicesSupported=i,Xe.detail.isScreenShareSupported=Bd(),Xe.detail.isSmallStreamSupported=Hd(),Xe.detail.isH264EncodeSupported=o,Xe.detail.isVp8EncodeSupported=a,Xe.detail.isH264DecodeSupported=d,Xe.detail.isVp8DecodeSupported=p,Xe.result||J.error(`${navigator.userAgent} ${Tm(Xe.detail,!1)}`),ES(),Z.addNumber({key:523800,value:Date.now()-n}),Xe})),hS=function(){return Xe.result},Bd=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Sl=null;function mS(){return N(this,null,function*(){return Sl||(Sl=new Promise(n=>N(this,null,function*(){let r={encode:!1,decode:!1},e=()=>{};try{J.warn("detectH264Supported start");let t=document.createElement("canvas"),i=t.getContext("2d");t.width=320,t.height=240;let o=setInterval(()=>{i.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),a=-1,d=-1;e=()=>{clearInterval(a),clearInterval(o),clearTimeout(d),_.close(),S.close(),p.getTracks().forEach(L=>L.stop())},d=setTimeout(()=>{e(),n(r)},2*1e3);let p=t.captureStream(),_=new RTCPeerConnection({}),S=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});_.addEventListener("icecandidate",L=>S.addIceCandidate(L.candidate)),S.addEventListener("icecandidate",L=>_.addIceCandidate(L.candidate)),_.addTrack(p.getVideoTracks()[0],p);let v=yield _.createOffer();yield _.setLocalDescription(v),yield S.setRemoteDescription(v);let A=yield S.createAnswer(),w=km.default.parse(A.sdp),M=w.media[0].rtp.findIndex(L=>L.codec==="H264");w.media[0].rtp=[w.media[0].rtp[M]],w.media[0].fmtp=w.media[0].fmtp.filter(L=>L.payload===w.media[0].rtp[0].payload),w.media[0].rtcpFb&&(w.media[0].rtcpFb=w.media[0].rtcpFb.filter(L=>L.payload===w.media[0].rtp[0].payload)),A.sdp=km.default.write(w),yield S.setLocalDescription(A),yield _.setRemoteDescription(A),a=setInterval(()=>N(this,null,function*(){r.encode&&r.decode&&(e(),n(r));let L=yield _.getSenders()[0].getStats(),W=yield S.getReceivers()[0].getStats();r.encode||L.forEach(ie=>{ie.type==="outbound-rtp"&&ie.mediaType===b.VIDEO&&ie.bytesSent>0&&(r.encode=!0)}),r.decode||W.forEach(ie=>{ie.type==="inbound-rtp"&&ie.mediaType===b.VIDEO&&ie.bytesReceived>0&&(r.decode=!0)})}),100)}catch(t){e(),J.warn(t),n(r)}})).then(n=>((!n.encode||!n.decode)&&J.warn(`detectH264Supported encode: ${n.encode} decode: ${n.decode} ${Ri}`),n)),Sl)})}var pS=(n,r,e)=>{location.protocol==="http:"&&!Hn&&(n[r]=()=>{throw new Y({code:H.INVALID_OPERATION,message:Yt.NOT_SUPPORTED_HTTP})})},bo=function(n){return n.type==="candidate-pair"&&n.nominated&&(n.state==="in-progress"||n.state==="succeeded")?!(St(n.selected)&&!n.selected):!1};function T_(){let n="";if(screen.width){let r=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";n+=`${r} * ${e}`}return n}function S_(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function I_(){let n={isSupported:!1},r=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<r.length;e++)if(r[e]in window){n.isSupported=!0;break}return n.isSupported}function y_(){return"captureStream"in HTMLCanvasElement.prototype}function Hd(){return Sa||Nr||ki&&ki<63?!1:!!(Pm()&&y_())}var fS=function(){if(V(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let n=null,r=!1;try{n=new RTCPeerConnection({sdpSemantics:Eo}),n.addTransceiver(b.AUDIO),r=!0}catch(e){}return n==null||n.close(),r};function As(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function No(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function nn(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function si(){return Gr===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var Ma=(()=>!(!si()||wi&&ki<86))();function _S(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Wd="RTCRtpSender"in window;function Mm(){return Wd&&"replaceTrack"in window.RTCRtpSender.prototype}function Gd(){return Wd&&"setParameters"in window.RTCRtpSender.prototype&&No()}var Lm="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,on=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Um=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Qn=Wd&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Bn()>=86,Al="RTCRtpScriptTransform"in window,jd=Wd&&(Qn||Al),Vm=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(r=>r in window).length>0};function v_(){let n={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return V(window.AudioDecoder)||(n.AudioDecoder=!0),V(window.AudioEncoder)||(n.AudioEncoder=!0),V(window.VideoDecoder)||(n.VideoDecoder=!0),V(window.VideoEncoder)||(n.VideoEncoder=!0),V(window.ImageDecoder)||(n.ImageDecoder=!0),n}function A_(){return"mediaSession"in navigator&&!V(navigator.mediaSession.setActionHandler)}function C_(){return!V(window.WebTransport)}function Fm(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function gS(){let n={browser:`${qi.name}/${qi.version}`,os:ul(),displayResolution:T_(),isScreenShareSupported:Bd(),isWebRTCSupported:Vm(),isGetUserMediaSupported:S_(),isWebAudioSupported:I_(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:v_(),isMediaSessionSupported:A_(),isWebTransportSupported:C_()};return navigator.userAgent.includes("miniProgram")&&(n.browser=`mini/${n.browser}`),n}var R_="checkResult";function ES(){_l.setItem(R_,{ua:navigator.userAgent,checkResult:Xe})}(function(){Xn();let r=_l.getItem(R_);r&&r.ua===navigator.userAgent&&(Xe=r.checkResult),vl()})();function Cs(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var N_=$t(nr(),1);var b_=Symbol("instance"),Kv=Symbol("abortCtrl"),Cl=Symbol("cacheResult"),zd=class{constructor(r,e,t){this.oldState=r,this.newState=e,this.action=t,this.aborted=!1}abort(r){this.aborted=!0,Xd.call(r,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Jd=class extends Error{constructor(r,e,t){super(e),this.state=r,this.message=e,this.cause=t}};function TS(n){return typeof n=="object"&&n&&"then"in n}var qd=new Map;function It(n,r,e={}){return(t,i,o)=>{let a=e.action||i;if(!e.context){let p=qd.get(t)||[];qd.has(t)||qd.set(t,p),p.push({from:n,to:r,action:a})}let d=o.value;o.value=function(...p){let _=this;if(e.context&&(_=De.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),_.state===r)return e.sync?_[Cl]:Promise.resolve(_[Cl]);_.state instanceof zd&&_.state.action==e.abortAction&&_.state.abort(_);let S=null;Array.isArray(n)?n.length==0?_.state instanceof zd&&_.state.abort(_):(typeof _.state!="string"||!n.includes(_.state))&&(S=new Jd(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not from ${n.join("|")}`)):n!==_.state&&(S=new Jd(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not from ${n}`));let v=W=>{if(e.fail&&e.fail.call(this,W),e.sync){if(e.ignoreError)return W;throw W}else return e.ignoreError?Promise.resolve(W):Promise.reject(W)};if(S)return v(S);let A=_.state,w=new zd(A,r,a);Xd.call(_,w);let M=W=>{var ie;return _[Cl]=W,w.aborted||(Xd.call(_,r),(ie=e.success)===null||ie===void 0||ie.call(this,_[Cl])),W},L=W=>{let ie=W instanceof Error?W.message:String(W);return Xd.call(_,A,W),v(new Jd(_._state,`action '${a}' failed :${ie}`,W instanceof Error?W:new Error(ie)))};try{let W=d.apply(this,p);return TS(W)?W.then(M).catch(L):e.sync?M(W):Promise.resolve(M(W))}catch(W){return L(W)}}}}var SS=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function Xd(n,r){let e=this._state;this._state=n;let t=n.toString();n&&this.emit(t,e),this.emit(De.STATECHANGED,n,e,r),this.updateDevTools({value:n,old:e,err:r instanceof Error?r.message:String(r)})}var De=class extends N_.default{constructor(r,e,t){super(),this.name=r,this.groupName=e,this._state=De.INIT,r||(r=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let i=t[b_];i?this.name=i.name+"-"+i.count++:t[b_]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let r=Object.getPrototypeOf(this),e=qd.get(r)||[],t=new Set,i=[],o=[],a=new Set,d=Object.getPrototypeOf(r);qd.has(d)&&(d.stateDiagram.forEach(_=>t.add(_)),d.allStates.forEach(_=>a.add(_))),e.forEach(({from:_,to:S,action:v})=>{typeof _=="string"?i.push({from:_,to:S,action:v}):_.length?_.forEach(A=>{i.push({from:A,to:S,action:v})}):o.push({to:S,action:v})}),i.forEach(({from:_,to:S,action:v})=>{a.add(_),a.add(S),a.add(v+"ing"),t.add(`${_} --> ${v}ing : ${v}`),t.add(`${v}ing --> ${S} : ${v} \u{1F7E2}`),t.add(`${v}ing --> ${_} : ${v} \u{1F534}`)}),o.forEach(({to:_,action:S})=>{t.add(`${S}ing --> ${_} : ${S} \u{1F7E2}`),a.forEach(v=>{v!==_&&t.add(`${v} --> ${S}ing : ${S}`)})});let p=[...t];return Object.defineProperties(r,{stateDiagram:{value:p},allStates:{value:a}}),p}static get(r){let e;return typeof r=="string"?(e=De.instances.get(r),e||De.instances.set(r,e=new De(r,void 0,Object.create(De.prototype)))):(e=De.instances2.get(r),e||De.instances2.set(r,e=new De(r.constructor.name,void 0,Object.create(De.prototype)))),e}static getState(r){var e;return(e=De.get(r))===null||e===void 0?void 0:e.state}updateDevTools(r={}){SS(De.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},r))}get state(){return this._state}set state(r){Xd.call(this,r)}};De.STATECHANGED="stateChanged";De.UPDATEAFSM="updateAFSM";De.INIT="[*]";De.ON="on";De.OFF="off";De.instances=new Map;De.instances2=new WeakMap;var D_=(window==null?void 0:window.requestIdleCallback)||function(n){let r=Date.now();return setTimeout(()=>{n({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-r))}})},1e3)},IS=(window==null?void 0:window.cancelIdleCallback)||function(n){clearTimeout(n)},yS=(window==null?void 0:window.cancelAnimationFrame)||(window==null?void 0:window.mozCancelAnimationFrame),Qd=class{static generateTaskID(){return this.currentTaskID++}static run(r=So,e,t){r===Ts?t=oe({delay:2e3,count:0,backgroundTask:!0},t):r===To?t=oe({delay:1e4,count:0},t):r===_a?t=oe({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=oe({delay:2e3,count:0,backgroundTask:!0},t),Oi(e)&&(t=oe(oe({},t),e)),Ze(r)&&(e=r,r=So);let i=oe({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:r,callback:e},t);return this.taskMap.set(i.taskID,i),this[r](i),i.taskID}static interval(r){let e=()=>{r.callback(),r.loopCount+=1,this.isBreakLoop(r)};return r.intervalID=setInterval(e,r.delay)}static intervalInWorker(r){r.delay=(1e3/r.fps).toFixed(2);let e=new Worker(URL.createObjectURL(new Blob([`
16
16
  let timerID = null;
17
17
  self.onmessage = function (e) {
18
18
  if (e.data === 'start') {
19
19
  timerID = setInterval(() => {
20
20
  self.postMessage('tick');
21
- }, ${i.delay});
21
+ }, ${r.delay});
22
22
  } else if (e.data === 'stop') {
23
23
  clearInterval(timerID);
24
24
  }
25
25
  };
26
- `],{type:"application/javascript"})));e.onmessage=t=>{t.data==="tick"&&(i.callback(),i.loopCount+=1,this.isBreakLoop(i)&&e.postMessage("stop"))},i.worker=e,e.postMessage("start")}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!this.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=k(),t,r=()=>{if(t=k()-e,t>=i.delay&&(e=k()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!this.isBreakLoop(i))return i.ricID=Ru(r,{timeout:i.delay})};return i.ricID=Ru(r,{timeout:i.delay})}static raf(i){i.delay=(1e3/i.fps).toFixed(2);let e=k(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=k()-e,e=k(),i.callback(),i.loopCount+=1,this.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=k()-e,t>=i.delay&&(e=k()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!this.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=k()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",o),i.onVisibilitychange=o,document.hidden&&o()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;let{intervalID:e,timeoutID:t,rafID:r,ricID:o,onVisibilitychange:n,worker:a}=this.taskMap.get(i);return a&&a.terminate(),e&&clearInterval(e),t&&clearTimeout(t),r&&gf(r),o&&_f(o),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.taskMap.has(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};lo.taskMap=new Map,lo.currentTaskID=1;var ee=lo;var QE={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:m.SEI_MESSAGE,ERROR:"error"};var ge={LOADED_DATA:m.LOADEDDATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var Jt={};As(Jt,{create:()=>Pe,remove:()=>Ee});var uo=new WeakMap;function Pe(s,i){uo.has(s)||uo.set(s,[]);let e=uo.get(s),r={add:(o,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,o,n)),i.addEventListener(o,n)):(e.push(i.off.bind(i,o,n)),i.on(o,n)),r)};return r}function Ee(s){let i=uo.get(s);i&&(i.forEach(e=>e()),uo.delete(s))}var jt=new WeakMap;function je({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=Ut({retryFunction:n.value,settings:s,onError({error:c,retry:d,reject:h,retryFuncArgs:u}){var p;i?i.call(this,c,()=>{var _;(_=jt.get(r))!=null&&_.has(o)?d():h(c)},h,u):(p=jt.get(r))!=null&&p.has(o)?d():h(c)},onRetrying(c,d){var h;wt(e)&&e.call(this,c,d),(h=jt.get(r))!=null&&h.has(o)&&(jt.get(r).get(o).stopRetry=d)},onRetryFailed:t});return n.value=function(...c){let d=jt.get(r);return d?d.set(o,{args:c}):jt.set(r,new Map([[o,{args:c}]])),a.apply(this,c).finally(()=>{var h;return(h=jt.get(r))==null?void 0:h.delete(o)})},n}}function ho({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var c,d;if((c=jt.get(t))!=null&&c.has(s)){let{stopRetry:h,args:u}=jt.get(t).get(s),p=!0;if(e){for(let _ of u)if(!a.find(I=>I===_)){p=!1;break}}p&&(i&&i.apply(this,a),h&&h(),(d=jt.get(t))==null||d.delete(s))}return n.apply(this,a)},o}}var qt=class extends F{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;l(this,"id");l(this,"element",null);l(this,"track");l(this,"url");l(this,"attr");l(this,"muted");l(this,"_log");l(this,"_pausedRetryCount");l(this,"_isElementPlayingFired",!1);l(this,"_interval");l(this,"_delayDestroyTimeoutId",0);l(this,"_isReplayByRecreateMediaStreamCalled",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=za,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return f(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield this.element.play()}catch(e){let t=w({key:x.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw new y({code:S.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(m.ENDED),this._interval>0&&ee.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():uc?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Pe(this.element,this.element).add(m.PLAYING,e).add(m.ENDED,e).add(m.PAUSE,e).add(m.ERROR,e).add(m.LOADEDDATA,e)}}bindTrackEvents(){if(this.track){let e=this.handleTrackEvent.bind(this);Jt==null||Jt.create(this.track,this.track).add(m.ENDED,e).add(m.MUTE,e).add(m.UNMUTE,e),this.track.readyState===m.ENDED&&this.handleTrackEvent({type:m.ENDED}),this.track.muted&&this.handleTrackEvent({type:m.MUTE})}}bindAutoPlayEvent(){T.on(g.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(){this.track&&Ee(this.track)}unbindEvents(){this.element&&Ee(this.element),this.unbindTrackEvents(),T.off(g.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case m.PLAYING:this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(m.PLAYING),this._interval&&(ee.clearTask(this._interval),this._interval=-1);break;case m.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(m.ENDED);break;case m.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(m.PAUSE),We&&(this._interval=ee.run(xi,()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case m.ERROR:if(this.element&&this.element.error){this.handlePaused(m.ERROR);let{code:r,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${o} userAgent: ${navigator.userAgent}`),Y.uploadEvent({log:`stat-${this.kind}-${Ge.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),cc||ac?this.emit(ge.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case m.LOADEDDATA:this.kind===m.VIDEO&&this.emit(ge.LOADED_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),Y.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),N.addSuccessEvent({key:this.kind===m.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),Y.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),N.addFailedEvent({key:this.kind===m.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(ge.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{$i(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,n,a;this._log.warn(`element onerror ${(n=(o=this.element)==null?void 0:o.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),$i(5e3).then(()=>{var o,n;(!this.isPlaying||((o=this.element)==null?void 0:o.error))&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case m.ENDED:this.handleStopped(m.ENDED);break;case m.MUTE:this.handlePaused(m.MUTE);break;case m.UNMUTE:this._isElementPlayingFired&&this.handlePlaying(m.UNMUTE);break}}handlePlaying(e){this.emit(ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(ge.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};b([je({settings:{retries:2,timeout:0},onError(s,i,e,t){t[0]=(t[0]||1e3)+1e3,i()}})],qt.prototype,"doReplayByRecreateMediaStream",1),b([he([],"PLAYING",{sync:!0})],qt.prototype,"handlePlaying",1),b([he("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],qt.prototype,"handlePaused",1),b([he([],"STOPPED",{sync:!0})],qt.prototype,"handleStopped",1);var Si="trtc_autoplay",$c=`${Si}_mask`,qr=`${Si}_wrapper`,yu=`${Si}_header`,Fc=`${Si}_content`,xn=`${Si}_action_wrapper`,Hc=`${Si}_question`,Gc=`${Si}_collapse`,wn=`${Si}_action_confirm`,bu=`${Si}_detail`,Nu="#2473E8",Jc="dialog",Ef=`${Jc}-show`,Tf=`${Jc}-1`,Sf=`${Jc}-2`,vu=!1,jc=()=>!!document.querySelector(`.${qr}`),Ou=`${kt}/${xt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Du=`<br><a href='${Ou}' target='_blank'>${xt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,If=`${xt()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${Du}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${Du}`}`,Wc=class{constructor(){l(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");l(this,"_dialogNode",null);l(this,"_bodyPosition","");l(this,"_showDetail",!1);l(this,"_isCollapseClicked",!1);l(this,"_isQuestionClicked",!1);if(xt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!vu){let i=document.createElement("style");i.innerHTML=`.${$c}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${$c} div:not(.${xn}){display:block !important;}.${qr}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${qr} a{color:${Nu};}.${yu}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Fc}{margin:8px 0;}.${xn}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Gc}{margin-right:auto;cursor:pointer}.${Hc}{height:100%;line-height:16px;cursor:pointer;}.${wn}{margin-left:8px;color:#fff;background:${Nu};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${wn}:hover{opacity:0.9;}.${Gc},.${wn},.${Fc},.${Hc}{font-size:14px;}@media screen and (max-width:750px){.${qr}{width:80vw;}}`,document.head.appendChild(i),vu=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${$c}"><div class='${qr}'><div class='${yu}'>${location.host}</div><div class='${Fc}'>${this.content}</div><div class='${bu}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${If}</div><div class='${xn}'></div></div></div>`.trim();let e=document.createElement("button");e.className=wn,e.innerText=xt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Hc,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
26
+ `],{type:"application/javascript"})));e.onmessage=t=>{t.data==="tick"&&(r.callback(),r.loopCount+=1,this.isBreakLoop(r)&&e.postMessage("stop"))},r.worker=e,e.postMessage("start")}static timeout(r){let e=()=>{if(r.callback(),r.loopCount+=1,!this.isBreakLoop(r))return r.timeoutID=setTimeout(e,r.delay)};return r.timeoutID=setTimeout(e,r.delay)}static ric(r){let e=ge(),t,i=()=>{if(t=ge()-e,t>=r.delay&&(e=ge()-Math.floor(t%r.delay),r.callback(),r.loopCount+=1),!this.isBreakLoop(r))return r.ricID=D_(i,{timeout:r.delay})};return r.ricID=D_(i,{timeout:r.delay})}static raf(r){r.delay=(1e3/r.fps).toFixed(2);let e=ge(),t,i=()=>{if(document.hidden&&r.backgroundTask)return t=ge()-e,e=ge(),r.callback(),r.loopCount+=1,this.isBreakLoop(r)?void 0:r.timeoutID=setTimeout(i,r.delay-Math.floor(t%r.delay));if(t=ge()-e,t>=r.delay&&(e=ge()-Math.floor(t%r.delay),r.callback(),r.loopCount+=1),!this.isBreakLoop(r))return r.rafID=requestAnimationFrame(i)};if(r.rafID=requestAnimationFrame(i),r.backgroundTask){let o=()=>{if(document.hidden){let a=ge()-e;a>=r.delay?i():r.timeoutID=setTimeout(i,r.delay-a)}};document.addEventListener("visibilitychange",o),r.onVisibilitychange=o,document.hidden&&o()}return r.taskID}static hasTask(r){return this.taskMap.has(r)}static clearTask(r){if(!this.taskMap.has(r))return!0;let{intervalID:e,timeoutID:t,rafID:i,ricID:o,onVisibilitychange:a,worker:d}=this.taskMap.get(r);return d&&d.terminate(),e&&clearInterval(e),t&&clearTimeout(t),i&&yS(i),o&&IS(o),a&&document.removeEventListener("visibilitychange",a),this.taskMap.delete(r),!0}static isBreakLoop(r){return this.taskMap.has(r.taskID)?r.count!==0&&r.loopCount>=r.count?(this.clearTask(r.taskID),!0):!1:!0}};Qd.taskMap=new Map,Qd.currentTaskID=1;var Qe=Qd;var nA={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:b.SEI_MESSAGE,ERROR:"error"};var wt={LOADED_DATA:b.LOADEDDATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var an={};ud(an,{create:()=>ur,remove:()=>kt});var Yd=new WeakMap;function ur(n,r){Yd.has(n)||Yd.set(n,[]);let e=Yd.get(n),i={add:(o,a)=>("addEventListener"in r?(e.push(r.removeEventListener.bind(r,o,a)),r.addEventListener(o,a)):(e.push(r.off.bind(r,o,a)),r.on(o,a)),i)};return i}function kt(n){let r=Yd.get(n);r&&(r.forEach(e=>e()),Yd.delete(n))}var cn=new WeakMap;function wr({settings:n={retries:5,timeout:2e3},onError:r,onRetrying:e,onRetryFailed:t}){return function(i,o,a){let d=Ki({retryFunction:a.value,settings:n,onError({error:p,retry:_,reject:S,retryFuncArgs:v}){var A;r?r.call(this,p,()=>{var w;(w=cn.get(i))!=null&&w.has(o)?_():S(p)},S,v):(A=cn.get(i))!=null&&A.has(o)?_():S(p)},onRetrying(p,_){var S;Yi(e)&&e.call(this,p,_),(S=cn.get(i))!=null&&S.has(o)&&(cn.get(i).get(o).stopRetry=_)},onRetryFailed:t});return a.value=function(...p){let _=cn.get(i);return _?_.set(o,{args:p}):cn.set(i,new Map([[o,{args:p}]])),d.apply(this,p).finally(()=>{var S;return(S=cn.get(i))==null?void 0:S.delete(o)})},a}}function Kd({fnName:n,callback:r,validateArgs:e=!0}){return function(t,i,o){let a=o.value;return o.value=function(...d){var p,_;if((p=cn.get(t))!=null&&p.has(n)){let{stopRetry:S,args:v}=cn.get(t).get(n),A=!0;if(e){for(let w of v)if(!d.find(M=>M===w)){A=!1;break}}A&&(r&&r.apply(this,d),S&&S(),(_=cn.get(t))==null||_.delete(n))}return a.apply(this,d)},o}}var dn=class extends De{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;E(this,"id");E(this,"element",null);E(this,"track");E(this,"url");E(this,"attr");E(this,"muted");E(this,"_log");E(this,"_pausedRetryCount");E(this,"_isElementPlayingFired",!1);E(this,"_interval");E(this,"_delayDestroyTimeoutId",0);E(this,"_playSuccessResolve");E(this,"_isReplayByRecreateMediaStreamCalled",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Xh,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&(((e=this.element)==null?void 0:e.paused)===!1||this.track&&this.track.readyState==="live"&&!this.track.muted)}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return N(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=Te({key:Ee.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw new Y({code:H.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(b.ENDED),this._interval>0&&Qe.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():um?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return ur(this.element,this.element).add(b.PLAYING,e).add(b.ENDED,e).add(b.PAUSE,e).add(b.ERROR,e).add(b.LOADEDDATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);an==null||an.create(e,e).add(b.ENDED,t).add(b.MUTE,t).add(b.UNMUTE,t),e.readyState===b.ENDED&&this.handleTrackEvent({type:b.ENDED}),e.muted&&this.handleTrackEvent({type:b.MUTE})}}bindAutoPlayEvent(){B.on(U.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&kt(e)}unbindEvents(){this.element&&kt(this.element),this.unbindTrackEvents(),B.off(U.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case b.PLAYING:this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(b.PLAYING),this._interval&&(Qe.clearTask(this._interval),this._interval=-1);break;case b.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(b.ENDED);break;case b.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(b.PAUSE),Nr&&(this._interval=Qe.run(So,()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case b.ERROR:if(this.element&&this.element.error){this.handlePaused(b.ERROR);let{code:i,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${i} message: ${o} userAgent: ${navigator.userAgent}`),je.uploadEvent({log:`stat-${this.kind}-${br.PLAYER_ERROR}-${i}-${navigator.userAgent}`,error:this.element.error}),am||sm?this.emit(wt.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case b.LOADEDDATA:this.kind===b.VIDEO&&this.emit(wt.LOADED_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Z.addSuccessEvent({key:this.kind===b.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Z.addFailedEvent({key:this.kind===b.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(wt.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,i)=>{Ro(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,a,d;this._log.warn(`element onerror ${(a=(o=this.element)==null?void 0:o.error)==null?void 0:a.code} fired after recreated mediaStream`),i((d=this.element)==null?void 0:d.error)}),Ro(5e3).then(()=>{var o,a;(!this.isPlaying||((o=this.element)==null?void 0:o.error))&&i((a=this.element)==null?void 0:a.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case b.ENDED:this.handleStopped(b.ENDED);break;case b.MUTE:this.handlePaused(b.MUTE);break;case b.UNMUTE:this._isElementPlayingFired&&this.handlePlaying(b.UNMUTE);break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(wt.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(wt.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(wt.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};j([wr({settings:{retries:2,timeout:0},onError(n,r,e,t){t[0]=(t[0]||1e3)+1e3,r()}})],dn.prototype,"doReplayByRecreateMediaStream",1),j([It([],"PLAYING",{sync:!0})],dn.prototype,"handlePlaying",1),j([It("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],dn.prototype,"handlePaused",1),j([It([],"STOPPED",{sync:!0})],dn.prototype,"handleStopped",1);var Yn="trtc_autoplay",Bm=`${Yn}_mask`,La=`${Yn}_wrapper`,w_=`${Yn}_header`,Hm=`${Yn}_content`,Rl=`${Yn}_action_wrapper`,Wm=`${Yn}_question`,Gm=`${Yn}_collapse`,bl=`${Yn}_action_confirm`,k_=`${Yn}_detail`,O_="#2473E8",zm="dialog",vS=`${zm}-show`,AS=`${zm}-1`,CS=`${zm}-2`,P_=!1,Jm=()=>!!document.querySelector(`.${La}`),M_=`${zi}/${Qi()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,x_=`<br><a href='${M_}' target='_blank'>${Qi()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,RS=`${Qi()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${x_}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${x_}`}`,jm=class{constructor(){E(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");E(this,"_dialogNode",null);E(this,"_bodyPosition","");E(this,"_showDetail",!1);E(this,"_isCollapseClicked",!1);E(this,"_isQuestionClicked",!1);if(Qi()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!P_){let r=document.createElement("style");r.innerHTML=`.${Bm}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Bm} div:not(.${Rl}){display:block !important;}.${La}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${La} a{color:${O_};}.${w_}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Hm}{margin:8px 0;}.${Rl}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Gm}{margin-right:auto;cursor:pointer}.${Wm}{height:100%;line-height:16px;cursor:pointer;}.${bl}{margin-left:8px;color:#fff;background:${O_};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${bl}:hover{opacity:0.9;}.${Gm},.${bl},.${Hm},.${Wm}{font-size:14px;}@media screen and (max-width:750px){.${La}{width:80vw;}}`,document.head.appendChild(r),P_=!0}this.addDiaLog()}createDiaLog(){let r=document.createElement("template");r.innerHTML=`<div class="${Bm}"><div class='${La}'><div class='${w_}'>${location.host}</div><div class='${Hm}'>${this.content}</div><div class='${k_}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${RS}</div><div class='${Rl}'></div></div></div>`.trim();let e=document.createElement("button");e.className=bl,e.innerText=Qi()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Wm,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
27
27
  <svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
28
28
  <path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
29
29
  <path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
30
30
  <path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
31
31
  </svg>
32
- `,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Gc,r.innerText=`${xt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${xn}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){jc()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${qr}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",R.info("show autoplay dialog"),Y.uploadEvent({log:Ef}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){R.warn("confirm clicked, try resume stream"),T.emit(g.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${bu}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||Y.uploadEvent({log:Tf}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Ou,"_blank"),this._isQuestionClicked||Y.uploadEvent({log:Sf}),this._isQuestionClicked=!0}},Mu=Wc;var et=class extends qt{constructor(e){super(e,m.VIDEO);l(this,"stat",{});l(this,"_calculateTimeout",-1);l(this,"viewMirror",!1);l(this,"objectFit");l(this,"container");l(this,"canvas");this.container=e.container,this.canvas=e.canvas,E(e.viewMirror)||(this.viewMirror=e.viewMirror),E(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var t;let e=document.createElement(m.VIDEO);this.track&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(m.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(m.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){super.handleTrackEvent(e),e.type===m.MUTE&&this.stat.fps&&(this.stat.fps=0)}handleElementEvent(e){var r;super.handleElementEvent(e);let t=e.type;if(t===m.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this._pausedRetryCount>0&&!jc()&&(this._log.info(`${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let o=this.element.style.transform;t===m.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=o.replace("scaleX(-1)",""):t===m.LEAVE_PICTURE_IN_PICTURE&&!o.includes("scaleX")&&(this.element.style.transform=`${o} scaleX(-1)`)}}setCanvas(e){var t,r;this.canvas!==e&&((t=this.canvas)==null||t.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,e&&((r=this.container)==null||r.appendChild(e)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(ge.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(cr()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(o,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function dr(s,i){return f(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),R.info("worklet addModule success")}catch(e){throw R.info(`worklet addModule catch error. ${e.message}`),e}})}var mo;typeof AudioContext!="undefined"?mo=AudioContext:typeof webkitAudioContext!="undefined"?mo=webkitAudioContext:typeof mozAudioContext!="undefined"&&(mo=mozAudioContext);var Ii,ku=-1;Pu();function Pu(){try{if(Ii)return;Ii=new mo({sampleRate:48e3}),Ii.onstatechange=()=>{R.info(`context state: ${Ii.state}`),Xr()},clearTimeout(ku)}catch(s){R.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof mo}`),ku=setTimeout(Pu,1e3)}}var Xr=()=>{Ii.state==="suspended"?(Ii.resume(),document.addEventListener("click",Xr)):Ii.state==="interrupted"?Ii.resume().catch(s=>{R.warn(`resume failed: ${s}`),document.addEventListener("visibilitychange",Xr)}):(document.removeEventListener("visibilitychange",Xr),document.removeEventListener("click",Xr))};document.addEventListener("click",Xr);var qe=s=>Ii;var dt=class{constructor(){this.pre=new Set;this.next=new Set;this.connectedNodes=new Set;this._channelCount=1}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.node&&(this.node.channelCount=i),this.next.forEach(e=>e.channelCount=i)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}setNode(i){var e;if(!this.node)try{(e=this.context)==null||e.addMixWeight(),this.node=i,this.node.channelCountMode="explicit",this.node.channelCount=this._channelCount,this.preNodeReconnect(),this.reconnect(),N.addSuccessEvent({key:502701})}catch(t){R.error(t),N.addFailedEvent({key:502701,error:t})}}deleteNode(){var i;if(!!this.node)try{this._disconnect(),delete this.node,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),N.addSuccessEvent({key:502702})}catch(e){R.error(e),N.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>i._connect(e.node)||e.connectNext(i))}_connect(i){return!this.node||!i?!1:(this.node.connect(i),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...i){return i.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},Un=class extends dt{constructor(e=256){super();this.fftSize=e;this.dataArray=new Uint8Array(0)}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,o=0,n=`M${r},${o}`;for(let a=0;a<e.length;a++)o=e[a]/128*100/2,n+=`L${r},${o}`,r+=t;return n}},po=class{constructor(){this.source=new dt;this.gain=new dt;this.destination=new dt}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.source.node.context.createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.deleteNode(),this.source.setNode(qc(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},Qr=class extends po{constructor(e){super();this.context=e;this.denoiser=new dt;this.source.pipeTo(this.denoiser.pipeTo(this.gain.pipeTo(this.destination)))}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.denoiser.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){!this.context.inputs.has(this)||(this.destination.deleteNode(),this.source.removeContext(),this.denoiser.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Vn=class{constructor(){this.audioContext=qe("audio-mixer");this.destination=this.audioContext.createMediaStreamDestination();this.inputs=new Set;this.mixWeight=0}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Lu=new WeakMap;function qc(s){let i=Lu.get(s);if(i)return i;let e=qe();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return Lu.set(s,i),i}var Xt=class{constructor(i){this._volume=0;this._scriptProcessorNode=null;this._audioWorkletNode=null;this._interval=200;this.ready=this.preload();let{log:e}=i;this._log=e,T.on(g.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Xt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Xt.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,e){t=t[0],e=e[0];if(t||e){if(this.isStop)return!1;var s=e?e[0].length:0,i=this.cache.length,h=(s<i?(e[0].set(this.cache.slice(0,s)),this.cache=this.cache.slice(s)):this.unmute&&e[0].set(t[0]),(s<i?e:t)[0]);if(h){let e=0;for(let t=0;t<h.length;++t)e=Math.max(Math.abs(h[t]),e);this.volume=e,this.tick-=h.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,cacheLen:i,outputLen:s}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Xt.workletReady=dr(Xt.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return Xt.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Xt.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{Xt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),Y.logFailedEvent({userId:this._log.userId,eventType:Ge.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=qe("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{Xt.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,T.off(g.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}},zr=Xt;zr.lastMessageTime=0,zr.audioContext=qe("volume-meter");var Bn=class extends dt{constructor(e){super();this._volumeMeter=new zr(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},Xc=zr;var Vu=Se(De(),1);var wu=s=>i=>i.deviceId===s;var fo=class{constructor(i,e="Input"){l(this,"kind");l(this,"type");l(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Yr(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(wu(r.deviceId))){let o=`${this.kind}${this.type}Added`;R.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(wu(r.deviceId))){let o=`${this.kind}${this.type}Removed`;R.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},Qc=class extends Vu.EventEmitter{constructor(){super();l(this,"audioInputs",new fo(m.AUDIO));l(this,"videoInputs",new fo(m.VIDEO));l(this,"audioOutputs",new fo(m.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||ee.run(tr,()=>{this.update()},{delay:1e4}))}init(){$n().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield $n(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},Re=bs||Rr?null:new Qc;function Yr(s){return s.deviceId===s.groupId&&s.groupId===""}function $n(){return f(this,arguments,function*(s=0){if(Ei()||!On())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Yr(t)&&(t.kind===m.AUDIO_INPUT?e.audio=!0:t.kind===m.VIDEO_INPUT&&(e.video=!0))}),s===2&&(e.audio=!1),s===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e)}catch(r){R.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&zc.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function Xe(s=!1){return Re.update(s?1:0).then(i=>i.audioInputs.devices)}function tt(s=!1){return Re.update(s?2:0).then(i=>i.videoInputs.devices)}var Uu=!1;function Bu(){return f(this,null,function*(){try{Uu||(Uu=!0,R.info(`speakers:${(yield Gi()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function Gi(s=!1){return f(this,null,function*(){return Re.update(s?1:0).then(i=>i.audioOutputs.devices)})}var zc=new Set;function $u(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${m.VIDEO_INPUT}`;return!!zc.has(t)}function Fu(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${m.AUDIO_INPUT}`;return!!zc.has(t)}function Yc(s,i){return f(this,null,function*(){let t=(yield Xe()).find(r=>r.deviceId===er);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function Hu(o){return f(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===m.AUDIO&&s===er?yield Yc(e,t):!0})}var Fn,Kc=class extends po{constructor(e){super();this.log=e;l(this,"volumeMeter");l(this,"volumeDestination");l(this,"analyser",new Un);this.volumeMeter=new Bn({log:this.log}),this.volumeDestination=new dt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Kr=class extends qt{constructor(e){super(e,m.AUDIO);l(this,"_outputDeviceId");l(this,"_volume",1);l(this,"_destination",qe("player").createMediaStreamDestination());l(this,"pipeline");l(this,"volumeMeterMode","worklet");this.pipeline=new Kc(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Ui==="15.2"||Ui==="15.3"||Ui==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=Fn||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,K(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===Fn&&(Fn=void 0),this.bindElementEvents()}play(e){return f(this,null,function*(){if(!!this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(qe("player").createAnalyser()),Bu(),ye(Kr.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){!this.element||(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},Hn=class extends Kr{constructor(i){super(i),this.pipeline.source.pipeTo(this.pipeline.volumeMeter,this.pipeline.destination)}setTrack(i){var e;this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(ge.MEDIA_TRACK_CHANGED,i),i?(this.bindTrackEvents(),this.pipeline.source.channelCount=((e=i.getSettings())==null?void 0:e.channelCount)||1,this.pipeline.replaceSource(i),!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([i]))):this.pipeline.source.deleteNode())}setSourceNode(i){!i||this.pipeline.source.node===i||(this.pipeline.replaceSource(i),i instanceof MediaStreamAudioSourceNode?this.pipeline.destination.setNode(this._destination):this.pipeline.destination.deleteNode(),this.element&&(this.element.srcObject=this.getMediaStream(),this.element.play().catch(()=>{}),this.setVolume(this._volume)))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},Gn=class extends Kr{constructor(e){super(e);l(this,"_sourceElement");l(this,"_output",new dt);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this._output.setNode(qe("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,o;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(ge.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?(this.element?this._log.info(`set element volume: ${e}`):this._log.info("set element volume: no element"),this.element&&(this.element.volume=e)):(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),Ee(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&Vr&&(Fn=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var lr=class extends F{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?Gn:et}){var a;super();l(this,"id",Ks());l(this,"userId","");l(this,"isRemote");l(this,"mediaType");l(this,"room");l(this,"user");l(this,"_log");l(this,"_inputTrack");l(this,"_outputTrack");l(this,"isPlayCalled");l(this,"container",null);l(this,"player");l(this,"subVideoPlayerMap");l(this,"muted",!1);l(this,"abortCtrl");l(this,"objectFit","cover");l(this,"mirror");l(this,"isScreen",!1);l(this,"manager");l(this,"trackSettings");this.userId=e||"",this.mediaType=r,this._log=R.createLogger({id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof it?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof it}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(ge.PLAYER_STATE_CHANGED,c=>{T.emit(g.PLAYER_STATE_CHANGED,v({track:this},c)),this.emit("player-state-changed",c)}),this.kind===m.VIDEO&&(this.player.on(ge.LOADED_DATA,()=>{T.emit(g.VIDEO_LOADED_DATA,{track:this})}),this.player.on(ge.MEDIA_TRACK_CHANGED,c=>{var d;(d=this.subVideoPlayerMap)==null||d.forEach(h=>h.setTrack(c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(ge.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||R}get kind(){return this.mediaType===1?m.AUDIO:m.VIDEO}get strMediaType(){return this.mediaType===4?m.VIDEO:this.mediaType===2?m.SCREEN:m.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return f(this,null,function*(){let r=_e(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!E(t.muted)&&this.setPlayerMute(t.muted),t&&!E(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof et&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),_e(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!E(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===m.VIDEO)&&this.setPlayerMute(!0),t&&!E(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof et&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof et&&this.player.setContainer(r)),T.emit(g.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),_e(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(),this.emit("error",o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==m.VIDEO||E(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(ue(this.mirror)){r.setViewMirror(this.mirror),o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),r.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),r.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===m.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,n)=>{var a;e.find(c=>n===c)||(o.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[o,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(E(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new et({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let o of r)o.setViewMirror(this.player.mirror),yield o.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){!this.isPlayCalled||(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(yt(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(this,null,function*(){var e;!this.isPlayCalled||(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),T.emit(e?g.TRACK_MUTED:g.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Pe(e,e).add(m.MUTE,this.onTrackMuted).add(m.UNMUTE,this.onTrackUnmuted).add(m.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===m.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Ee(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(()=>this.handleAutoPlayFailed()),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(yt(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(){if(this.room&&this.room.enableAutoPlayDialog)new Mu;else{let e=()=>{this.resume().then(()=>{document.removeEventListener("click",e,!0)})};document.addEventListener("click",e,!0)}}getVideoFrame(){return this.player instanceof et?this.player.getVideoFrame():""}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};b([he([],F.INIT,{sync:!0})],lr.prototype,"close",1);var Af=Object.prototype.hasOwnProperty,{toString:BS}=Object.prototype;function Cf(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Ze(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(Af.call(s,i))return!1;return!0}}return!1}var zt=Cf;var Rf=function(s){return f(this,null,function*(){let i=bf(s);R.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId"];i.audio&&(e=yield Xe(),R.info(`microphones: ${Rt(e,{keysToInclude:r})}`)),i.video&&(t=yield tt(),R.info(`cameras: ${Rt(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return Uc&&o.getTracks().forEach(n=>{R.info(`${n.kind} capabilities: ${Rt(n.getCapabilities(),{keysToInclude:en})}`)}),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=w({key:x.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=w({key:x.MICROPHONE_NOT_FOUND}))),new y({code:S.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},yf=Ut({retryFunction:Rf,settings:{retries:3,timeout:500},onError:({error:s,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let o=r+1;s.name==="NotReadableError"||s.name==="OverconstrainedError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!Je||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(s),t[0].microphoneId&&Gu(t[0].microphoneId,!1),t[0].cameraId&&Gu(t[0].cameraId,!0)},onRetrying:s=>{R.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{Y.logFailedEvent({eventType:Ge.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{Y.logSuccessEvent({eventType:Ge.GET_USER_MEDIA_RETRY}),Y.uploadEvent({log:`stat-${Ge.GET_USER_MEDIA_RETRY}-success-${s}`})}});function Gu(s,i){return f(this,null,function*(){let t=(i?yield tt():yield Xe()).find(r=>r.deviceId===s);t&&te(t.getCapabilities)&&R.warn(Rt(t.getCapabilities(),{keysToInclude:en}))})}function bf(s){return{audio:Nf(s),video:vf(s)}}function Nf(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!zt(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(K(s.channelCount)&&(i.channelCount=s.channelCount),ue(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),ue(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),ue(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),zt(i)?!0:i)}function vf(s){if(!s.video)return!1;if(s.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=s,e={};return s.cameraId?e.deviceId=s.useExactDeviceId?{exact:s.cameraId}:s.cameraId:s.facingMode&&(e.facingMode=s.facingMode),s.useDeviceIdOnly&&!zt(e)?e:(s.width&&(e.width={ideal:s.width},i&&!re&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!re&&(e.height.max=s.height)),re&&St&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),zt(e)?!0:e)}var Wu=yf;function Wn(s){return G((i,e)=>function(...t){return f(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function bt(s){return G((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function Ju(s){return G((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function G(s){return function(i,e,t){return t.value=s(t.value,e),t}}var ju=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&R.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{R.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var Df=0,Jn=class{constructor(){this.log=R.createLogger({id:`fq${++Df}`});this.isRunning=!1;this.queue=[]}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var o,n;let t=v({},i),r=new Promise((a,c)=>{t.resolve=a,t.reject=c});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(o=this.lastQueueItem)==null?void 0:o.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:o}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},go=new WeakMap,jn=new WeakMap;function Yt(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=go.get(this)||new Jn;return go.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function qu(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=go.get(this);if(n){let a=n.queue.filter((c,d)=>{if(d===0)return!0;let h=!0;return c.args.forEach(u=>{o.find(p=>p===u)||(h=!1)}),h?(c.reject(new y({code:S.API_CALL_ABORTED,message:s})),!1):!0});n.queue=a}return r.apply(this,o)},t}}function qn(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,c,d;let n=[];return(c=(a=go.get(this))==null?void 0:a.queue)==null||c.forEach(h=>n.push(h)),(d=jn.get(this))==null||d.forEach(h=>h==null?void 0:h.queue.forEach(u=>n.push(u))),n.forEach(h=>{h.reject(new y({code:S.API_CALL_ABORTED,message:s}))}),go.delete(this),jn.delete(this),r.apply(this,o)},t}}function Ai(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=jn.get(this)||new Map,c=a.get(o(n))||new Jn;return a.set(o(n),c),jn.set(this,a),c.push({fn:r,args:n,context:this})},t}}function Qe(s,i){return G((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=k();return sr(n)?n.then(c=>(i?N.addSuccessEvent({key:o,cost:k()-a}):N.addSuccessEvent({key:o}),c)).catch(c=>{throw N.addFailedEvent({key:o,error:c}),c}):(N.addSuccessEvent({key:o}),n)}catch(n){throw N.addFailedEvent({key:o,error:n}),n}})}var Zc=class extends lr{constructor(e,t){super({mediaType:e,PlayerClass:t});l(this,"isRemote",!1);l(this,"deviceId");l(this,"groupId","");l(this,"label","");l(this,"_isRecapturing",!1);l(this,"_lastRecaptureTime",0);l(this,"_onMuteTimeoutId",-1);l(this,"_encodeCheckTimeoutId",-1);l(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){Pe(e,e).add(m.MUTE,this.onTrackMuted).add(m.UNMUTE,this.onTrackUnmuted).add(m.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===m.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Ee(e)}setStateToCapture(){}capture(e){return f(this,null,function*(){var t;try{let r=k();T.emit(g.LOCAL_TRACK_CAPTURE_START,{track:this});let o;e.customSource?(o=new MediaStream,o.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),o=yield Wu(e));let n=o.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),T.emit(g.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:k()-r}),o}catch(r){throw T.emit(g.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setInputMediaStreamTrack(e){return this.state===F.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),T.emit(g.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.mediaTrack&&Gt){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield Hu({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),$n().then(n=>{let a=n.find(c=>c.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===m.AUDIO&&!Fu(this.mediaTrack)||this.kind===m.VIDEO&&!$u(this.mediaTrack)||this._isRecapturing||e&&St&&Je)}onTrackMuted(){if(super.onTrackMuted(),ju(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Nr){setTimeout(()=>this.onTrackMuted(),Nr);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((We||fe)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(ye(Zc.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Nr){setTimeout(()=>this.onTrackEnded(),Nr);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let o;(this.kind==="audio"?yield Xe():yield tt()).find(a=>a.deviceId===e)&&(o=e),t.deviceId=o}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),T.emit(g.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),T.emit(g.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof me;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(Eo.get(t)||0)+1;if(Eo.set(t,r),r>=3){let o=e?(yield tt()).find(n=>!Eo.has(n.deviceId)):(yield Xe()).find(n=>!Eo.has(n.deviceId));o&&(this.log.warn(`${t} capture fail ${r} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}},it=Zc;b([he(F.INIT,"capture",{ignoreError:!0,sync:!0})],it.prototype,"setStateToCapture",1),b([Yt()],it.prototype,"capture",1),b([he("capture","publish",{ignoreError:!0,success(){var i,e;this.room.localTracks.add(this),T.emit(g.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((e=(i=this.room)==null?void 0:i.networkQuality)==null?void 0:e.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var r,o;if(!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let n=this.kind===m.AUDIO,a=this.stat.bytesSent>0;N[a?"addSuccessEvent":"addFailedEvent"]({key:n?503700:513702}),a||(N.addEnum({key:n?503701:513703,value:Js()}),Y.uploadEvent({log:`stat-encode-failed-${this.kind}-${rr()||hi()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(s){let i="error",e=s.cause;e.message.includes("timeout")?i="timeout":e.code===S.API_CALL_ABORTED&&(i="api-call"),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:i,error:e})}}),Qe(521714,!1)],it.prototype,"publish",1),b([G(s=>function(){return f(this,null,function*(){let i=this.state==="publish"?"started":"starting";s.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:i,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),he([],"capture",{sync:!0})],it.prototype,"unpublish",1);var Eo=new Map;T.on(g.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&Eo.delete(s.track.deviceId)});var Le=class extends it{constructor(e){super(1,Hn);l(this,"mediaType",1);l(this,"volume",0);l(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});l(this,"playerMuted",!0);l(this,"pipeline");l(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Qr(e),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};N.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),N.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),N.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield ye(Le.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:o=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:o,customSource:t})}switchDevice(e){return f(this,null,function*(){if(!!this.mediaTrack){if(this.deviceId===e)if(e===er){if(yield Yc(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),T.emit(g.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){Re&&!Re.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Re.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),de(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield Xe();t[0]?this.recapture(t[0].deviceId):Re.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=!1;!E(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,n=!0),!E(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,n=!0),!E(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,n=!0),n&&this.deviceId&&(yield this.recapture(this.deviceId))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&N.addEnum({key:502700,value:2}),this.resetPlayerSource()}enableTrackANS(e){if(!this._inputTrack)return;let t=this._inputTrack.getConstraints();return t.noiseSuppression=e,this._inputTrack.applyConstraints(t).catch(r=>this._log.warn(`${e?"enable":"disable"} ANS failed `,r))}addDenoiser(e){var t;if(At<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}N.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.resetPlayerSource(),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.resetPlayerSource(),this.enableTrackANS(!0))}resetPlayerSource(){this.player.setSourceNode(this.pipeline.gain.node||this.pipeline.denoiser.node||this.pipeline.source.node)}close(){this.pipeline.remove(),Re.off("audioInputAdded",this.handleMicrophoneAdded,this),Re.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield ye(Le.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield Xe()).find(o=>o.deviceId!==e);if(r)yield ye(Le.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduce((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Ri=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let o=6;o<this.dataView.buffer.byteLength;o++){let n=this.dataView.getUint8(o);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let o=0;o<t.byteLength;o++,e++)r.setInt8(o,this.dataView.getInt8(e));return r}};var Xn=class{constructor(){l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new Ri(new DataView(new Uint8Array(o).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let r=this.getNaluCount(i.data),o=9-r;if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((p,_)=>p+_.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),d=new DataView(c),h=new DataView(i.data),u=0;for(let p=0;p<n.length;p++)for(let _=0;_<n[p].dataView.byteLength;_++)d.setInt8(u++,n[p].dataView.getInt8(_));for(let p=0;p<i.data.byteLength;p++)d.setInt8(u++,h.getInt8(p));return i.data=c,n.length}return 0}};var me=class extends it{constructor(e,t=4){super(t,et);l(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});l(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});l(this,"small");l(this,"isNeedToSetBandwidth");l(this,"muteImage");l(this,"manager");l(this,"_seiCodec",new Xn);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(L(v({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!Gt||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(this,null,function*(){var t,r,o;if(z(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,ye(me.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,ye(me.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:o,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:o})}setProfile(e){let t=v({},e),r=t.width>t.height;t.width*t.height<=160*120&&fe&&It&&(this.log.warn(`resolution is ${t.width}*${t.height}, fallback to 240*180`),t.width=r?240:180,t.height=r?180:240,t.bitrate=Math.max(t.bitrate,150)),t.width*t.height>1280*720&&hc&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(L(v({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var r;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(Ke===16?yield this.recapture(this.deviceId):(yield(r=this.mediaTrack)==null?void 0:r.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:m.VIDEO,videoType:m.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return Gt&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Ic()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return f(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),T.emit(g.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}listenDeviceChange(){Re&&!Re.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Re.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),de(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield tt();t[0]?this.recapture(t[0].deviceId):Re.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduce((o,n)=>n?n({frame:o,mediaType:r}):o,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return f(this,null,function*(){return E(this.mirror)&&!this.isScreen&&this.setMirror("view"),ye(me.prototype,this,"play").call(this,e,t)})}close(){Re.off("videoInputAdded",this.handleCameraAdded,this),Re.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield ye(me.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield tt()).find(o=>o.deviceId!==e);if(r)yield ye(me.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}};var Yu=Ks();if(navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:Yu,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var Lf=function(s){return f(this,null,function*(){let i=null,e=Uf(s);R.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(Ur&&At<74||Je||re)&&R.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(s.frameRate)try{yield r.applyConstraints({frameRate:{min:s.frameRate,ideal:s.frameRate},width:s.width,height:s.height})}catch(o){R.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield xf(r,s.captureElement))}if(s.audio){let o=wf(s);R.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function xf(s,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&te(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===Yu))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){R.warn(`cropTo target failed ${t}`)}})}function wf(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return E(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function Uf(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Je?{max:s.width}:{ideal:s.width,max:s.width},height:Je?{max:s.height}:{ideal:s.height,max:s.height},frameRate:s.frameRate,displaySurface:s.preferDisplaySurface||"monitor"};if(i.video=e,s.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:o=!1}=s;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:o,sampleRate:48e3}}return i}var Ku=Lf;var rt=class extends me{constructor(e){super(e,2);l(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});l(this,"objectFit","contain");l(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(h){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:d}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield Ku({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:o,captureElement:c,preferDisplaySurface:d}),yield this.setInputMediaStreamTrack(u.getVideoTracks()[0]),u}catch(u){throw this.log.error(`getDisplayMedia error observed ${u}`),u instanceof y?u:new y({code:S.INITIALIZE_FAILED,name:u.name,message:u.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};var Kt=class extends Le{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var Vf="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",ed;function To(s){return f(this,null,function*(){let i=qe("dump");ed||(ed=dr(i,URL.createObjectURL(new Blob([Vf],{type:"application/javascript"})))),yield ed;let e=new AudioWorkletNode(i,"dumper",{numberOfInputs:s.length,numberOfOutputs:0});return s.forEach((t,r)=>t.connect(e,0,r)),new ReadableStream({start(t){e.port.onmessage=r=>{t.enqueue(r.data)}},cancel(){s.forEach(t=>t.disconnect(e)),e.port.close()}})})}var Qn=class extends Vn{constructor(e){super();this.room=e;l(this,"_localAudioTrack");l(this,"_localScreenAudioTrack");l(this,"log",R.createLogger({id:"am"}));l(this,"denoiser");l(this,"mixChangedDebounce");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var h,u;if(!this._localAudioTrack)return;let t=[],r=[];(h=this._localAudioPipline)!=null&&h.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(u=this._localAudioPipline)!=null&&u.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let o=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),c=()=>{for(let p=0;p<r.length;p++){let _=URL.createObjectURL(new Blob(n[p])),I=document.createElement("a");I.href=_,I.download=`${r[p]}.pcm`,I.style.display="none",document.body.appendChild(I),I.click(),URL.revokeObjectURL(_),I.remove()}clearTimeout(a),o.abort("download")},d=To(t).then(p=>p.pipeTo(new WritableStream({write(_){_.forEach((I,C)=>n[C]=n[C]?n[C].concat(I[0]):[I[0]])}}),o).catch(_=>c));return{then:d.then.bind(d),download:c}}getPCM(e){var n;if(E(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}if(!((n=this._localAudioPipline)!=null&&n.source.node)){this.log.warn("getPCM failed: no local audio track");return}this.log.warn("getPCM");let t=new Float32Array(1920),r=0,o=new AbortController;return To([this._localAudioPipline.source.node]).then(a=>a.pipeTo(new WritableStream({write(c){!c[0][0]||(t.set(c[0][0],r),r+=c[0][0].length,r>=1920&&(r=0,e(t),t=new Float32Array(1920)))}}),o).catch(c=>this.log.warn(`stop getPCM reason:${c}`))),o}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return this._localAudioTrack!==null}changeInput(e){if(e instanceof Kt)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof Le)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof yi)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Kt?delete this._localScreenAudioTrack:e instanceof Le?delete this._localAudioTrack:e instanceof yi}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}destroy(){this.close()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function zn(s=30,i=2){return G((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let c=new y({code:S.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});R.warn(c),i===2?n(c):i===1&&o()},s*1e3);e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a)})})})}var td=class extends lr{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;l(this,"tinyId");l(this,"isRemote",!0);l(this,"jitterBufferDelay",0);l(this,"_decodeCheckTimeoutId",-1);this.tinyId=t.tinyId}setMute(e){this.hasFlag&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.hasFlag&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===td.STATE_SUBSCRIBE}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let r=this.kind===m.AUDIO;N[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(N.addEnum({key:r?504701:514703,value:Js()}),Y.uploadEvent({log:`stat-decode-failed-${this.kind}-${rr()||hi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===m.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.hasFlag||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} hasFlag: ${this.hasFlag} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.updatePlayingState(this.hasFlag)}onTrackMuted(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackMuted()}onTrackUnmuted(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackUnmuted()}onTrackEnded(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackEnded()}},lt=td;l(lt,"STATE_SUBSCRIBE","subscribe"),b([zn(5,1)],lt.prototype,"waitHasMediaTrack",1),b([he(F.INIT,lt.STATE_SUBSCRIBE,{success(){var i,e;this.log.info("subscribed"),T.emit(g.REMOTE_TRACK_SUBSCRIBED,{track:this}),this.updatePlayingState(!0),!((((e=(i=this.room)==null?void 0:i.networkQuality)==null?void 0:e.downlinkNetworkQuality)||0)>3)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var r,o;if(!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let n=this.kind===m.AUDIO,a=this.player.isPlaying||(n?this.getAudioLevel()>0:this.stat.framesDecoded>0);this.reportDecodeResult(a)}},5e3),this.player.once(ge.ERROR,t=>{t.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),Qe(521716,!1)],lt.prototype,"subscribe",1),b([he(lt.STATE_SUBSCRIBE,F.INIT,{sync:!0,success(){this.log.info("unsubscribed"),this.updatePlayingState(!1),T.emit(g.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],lt.prototype,"unsubscribe",1);var yi=class extends lt{constructor(e,t){super(e,t,1);l(this,"volume",0);l(this,"mediaType",1);l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(!!r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get hasFlag(){return this.user.muteState.hasAudio}isFlagChanged(e){let t=e.hasAudio&&!e.audioMuted;return this.hasFlag||(this.volume=0),this.hasFlag!==t}};var Hf=[-1,-1,1,-1,-1,1,1,1],Gf=[0,0,1,0,0,1,1,1];var st=class extends F{constructor(e,t){super();this.context=e;l(this,"name");l(this,"input");l(this,"output");l(this,"texture");l(this,"ctx2d",null);l(this,"fbo");l(this,"width",0);l(this,"height",0);l(this,"x",0);l(this,"y",0);l(this,"program");l(this,"vertexShader");l(this,"fragmentShader");l(this,"totalFrames",0);l(this,"dropFrames",0);l(this,"matchInputSize",!0);l(this,"texCoordBuffer");l(this,"positionBuffer");l(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});l(this,"cost",0);l(this,"_canvas",null);l(this,"_image");l(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof ze){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&Ke!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(Gf),this.positionBuffer=this.createBuffer(Hf),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof Oe&&this.render(e)||this.context instanceof ze&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof Oe){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,o)=>{r&&(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,o,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,r):this.ctx2d.drawImage(e,t,r,o,n),!0):!1}getInfo(){var u;let{totalFrames:e,x:t,y:r,width:o,height:n,name:a,cost:c}=this,d=Date.now(),h=(e-this.lastInfo.totalFrames)/((d-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:d,fps:h,name:a,cost:c},v({parent:(u=this.input)==null?void 0:u.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};b([he(F.INIT,"connected",{sync:!0})],st.prototype,"connect",1),b([he("connected",F.INIT,{ignoreError:!0,sync:!0})],st.prototype,"disconnect",1),b([he([],"closed",{sync:!0})],st.prototype,"close",1);function se(...s){}var Wf=s=>s();function sd(){this.dispose()}var Jf=()=>typeof __FASTRX_DEVTOOLS__!="undefined",jf=1,Zt=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new rd(i,this,this.streamId++);return Te.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Zr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=se,this.error=se,this.next=se,this.dispose=se,this.subscribe=se,this.doDefer()}subscribe(i){return i instanceof Zt?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(Wf),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},H=class extends Zr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},Yn=class extends Zr{constructor(i,e=se,t=se,r=se){if(super(),this._next=e,this._error=t,this._complete=r,this.then=se,i instanceof Zt){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Te.defer(o,0)}),Te.create(o),Te.pipe(o),this.sourceId=o.id,this.subscribe(i),Te.subscribe({id:o.id,end:!0}),e==se?this._next=n=>Te.next(o,0,n):this.next=n=>{Te.next(o,0,n),e(n)},r==se?this._complete=()=>Te.complete(o,0):this.complete=()=>{this.dispose(),Te.complete(o,0),r()},t==se?this._error=n=>Te.complete(o,0,n):this.error=n=>{this.dispose(),Te.complete(o,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function xe(s,...i){return i.reduce((e,t)=>t(e),s)}function Ye(s,i,e){if(Jf()){let t=Object.defineProperties(Object.setPrototypeOf(s,Zt.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Te.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof Zt&&Te.addSource(t,o)}return t}return s}function q(s,i){return function(...e){return t=>{if(t instanceof Zt){let r=Ye(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Te.pipe(r),r}else return r=>t(new s(r,...e))}}}function Ji(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var rd=class extends H{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Te.defer(this.source,this.id)})}next(i){Te.next(this.source,this.id,i),this.sink.next(i)}complete(){Te.complete(this.source,this.id),this.sink.complete()}error(i){Te.complete(this.source,this.id,i),this.sink.error(i)}},Te={addSource(s,i){Ji("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){Ji("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){Ji("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){Ji("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){Ji("defer",{id:s.id,streamId:i})},pipe(s){Ji("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){Ji("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=jf++),Ji("create",{name:s.toString(),id:s.id})}},Kn=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var od=class extends Zr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function es(){return s=>{let i=new od(s);if(s instanceof Zt){let e=Ye(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,Te.pipe(e),e}return Ye(i.add.bind(i),"share",arguments)}}function qf(...s){return Ye(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,d)=>{let h=new H(i);h.next=u=>{--t===0?(h.next=p=>{o[d]=p,i.next(o)},h.next(u)):o[d]=u},h.complete=n,h.subscribe(c)};s.forEach(a)},"combineLatest",arguments)}function Zn(...s){return i=>Ye((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var nd=class extends H{constructor(i,...e){super(i);let t=new H(this.sink);t.next=r=>this.buffer=r,t.complete=se,t.subscribe(qf(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},xC=q(nd,"withLatestFrom"),ad=class extends H{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},wC=q(ad,"bufferCount"),cd=class extends H{constructor(i,e){super(i),this.buffer=[];let t=new H(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=se,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},UC=q(cd,"buffer");function bi(s){let i=arguments,e=es()(Ye(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),s&&t.subscribe(s)},"subject",i));return e.next=se,e.complete=se,e.error=se,e}function Zu(s){return Ye(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function dd(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function Fe(s,i){if("on"in s&&"off"in s)return Ye(dd(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return Ye(dd(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return Ye(dd(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function ea(){return Ye(s=>s.complete(),"empty",arguments)}var ld=class extends H{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},Xf=q(ld,"reduce");var ud=class extends H{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},vd=q(ud,"filter"),hd=class extends H{next(i){}},XC=q(hd,"ignoreElements"),md=class extends H{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},So=q(md,"take"),pd=class extends H{constructor(i,e){super(i);let t=new H(i);t.next=()=>i.complete(),t.complete=sd,t.subscribe(e)}},Nt=q(pd,"takeUntil"),fd=class extends H{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},Qf=q(fd,"takeWhile");var _d=class extends H{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},QC=q(_d,"skip"),gd=class extends H{constructor(i,e){super(i),i.next=se;let t=new H(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=sd,t.subscribe(e)}},zC=q(gd,"skipUntil"),Ed=class extends H{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},eh=q(Ed,"skipWhile"),zf={leading:!0,trailing:!1},Td=class extends H{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Sd=class extends H{constructor(i,e,t=zf){super(i),this.durationSelector=e,this.config=t,this._throttle=new Td(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=se,this._throttle.complete(),super.complete()}},YC=q(Sd,"throttle");var Id=class extends H{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Ad=class extends H{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new Id(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},KC=q(Ad,"debounce");var Cd=class extends H{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},ZC=q(Cd,"elementAt");var Rd=class extends H{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},eR=q(Rd,"findIndex"),yd=class extends H{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},tR=q(yd,"first"),bd=class extends H{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},iR=q(bd,"last"),Nd=class extends H{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},rR=q(Nd,"every");var Dd=class extends H{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},aR=q(Dd,"scan"),Od=class extends H{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},cR=q(Od,"pairwise"),Md=class extends H{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},th=q(Md,"map");var ts=class extends H{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},is=class extends H{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},ta=class extends ts{},ia=class extends is{next(i){this.subInner(i,ta),this.next=e=>{this.currentSink.dispose(),this.subInner(e,ta)}}},Io=q(ia,"switchMap");function na(s){return(i,e)=>s(()=>i,e)}var ih=na(q(ia,"switchMapTo")),kd=class extends ts{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},ra=class extends is{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),kd),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},dR=q(ra,"concatMap"),lR=na(q(ra,"concatMapTo")),Pd=class extends ts{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},sa=class extends is{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Pd),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},uR=q(sa,"mergeMap"),hR=na(q(sa,"mergeMapTo")),Ld=class extends ts{dispose(){this.context.resetNext(),super.dispose()}},oa=class extends is{next(i){this.next=se,this.subInner(i,Ld)}},mR=q(oa,"exhaustMap"),pR=na(q(oa,"exhaustMapTo")),xd=class extends H{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=bi(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},fR=q(xd,"groupBy"),wd=class extends H{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},_R=q(wd,"timeInterval"),Ud=class extends H{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},gR=q(Ud,"bufferTime"),Vd=class extends H{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},ER=q(Vd,"delay"),Bd=class extends H{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},rh=q(Bd,"catchError");var ot=(s=se,i=se,e=se)=>t=>new Yn(t,s,i,e),$d=class extends H{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},IR=q($d,"tap"),Fd=class extends H{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Kn(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},AR=q(Fd,"timeout");var Yf=xe(Zu(250),th(()=>performance.now()),es());var sh=s=>i=>{let e=performance.now();xe(Yf,eh(t=>t-e<s),So(1))(i)};var Zf=[0,1,1,1,0,0,1,0],Ao=class extends st{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));l(this,"_intervalId",0);l(this,"_sequence",0);l(this,"checkGLError",!1);l(this,"checkVisibilityChange");e instanceof ze?this.ctx2d=e.ctx||null:e.available&&(t==null?void 0:t.mirrorUpAndDown)&&this.setTexBuffer(Zf)}start(e){this.log.info(`${this.name} start render ${e} fps`),ee.clearTask(this._intervalId),this._intervalId=ee.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(ee.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof Oe){let r=this.context.ctx.getError();r&&this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e){if(this._intervalId&&(ee.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),ee.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),ee.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},rs=class extends Ao{constructor(e,t){super(e,t);l(this,"_videoTrack");l(this,"_muteOb");l(this,"_closedOb",Fe(this,"closed"));l(this,"_subscription");l(this,"_canvasContainer");Number(wi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Fe(this._videoTrack,"mute"),xe(Fe(this._videoTrack,"ended"),Nt(this._closedOb),ot(()=>{this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=xe(this._muteOb,Nt(this._closedOb),ih(sh(5e3)),ot(()=>{var e;!((e=this._videoTrack)!=null&&e.muted)||this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},aa=class extends rs{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var ca=class extends rs{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,o=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>n?r=o/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=o/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var Co=class extends st{constructor(e,t){super(e,v({name:"imageSource"},t));l(this,"_lastImage");l(this,"_totalFrames",0);l(this,"_autoResize",!1);l(this,"_canvasRendered");l(this,"_videoCallbackId",0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,Ke===16&&(this._canvasRendered=bi(),xe(this._canvasRendered,Zn(this._image),Io(r=>r instanceof HTMLCanvasElement?Fe(r,"rendered"):ea()),Nt(Fe(this,"closed")),ot(()=>{this.update(0)})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),cr()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){let{width:r,height:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(n),{videoWidth:r,videoHeight:o}=n,!r||!o)return!1;n.width=r,n.height=o}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:o}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&o===this.height)return!1}else(n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas)&&({width:r,height:o}=n,this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&this.totalFrames){if(t){this.useTexture();let a=this.context.ctx;a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let a=this.context.ctx;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,n)}this.resize(r,o)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Ro=class extends Co{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",xe(Fe(this._player,ge.PLAYER_STATE_CHANGED),Nt(Fe(this,"closed")),vd(({state:o})=>o==="PLAYING"),ot(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},Ni=class extends Ro{constructor(i,e,t){super(i,new et({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var t_=`
32
+ `,t.onclick=this.onQuestionClick.bind(this);let i=document.createElement("div");i.className=Gm,i.innerText=`${Qi()?"\u8BE6\u60C5 >":"Detail >"}`,i.onclick=this.onCollapseClick.bind(this);let o=r.content.firstChild,a=o.querySelector(`.${Rl}`);return a.appendChild(i),a.appendChild(t),a.appendChild(e),o}addDiaLog(){Jm()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${La}`).onclick=r=>r.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",J.info("show autoplay dialog"),je.uploadEvent({log:vS}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){J.warn("confirm clicked, try resume stream"),B.emit(U.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let r=this._dialogNode.querySelector(`.${k_}`);r.style.visibility=`${this._showDetail?"hidden":"visible"}`,r.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||je.uploadEvent({log:AS}),this._isCollapseClicked=!0}onQuestionClick(){window.open(M_,"_blank"),this._isQuestionClicked||je.uploadEvent({log:CS}),this._isQuestionClicked=!0}},L_=jm;var zr=class extends dn{constructor(e){super(e,b.VIDEO);E(this,"stat",{});E(this,"_calculateTimeout",-1);E(this,"viewMirror",!1);E(this,"objectFit");E(this,"container");E(this,"canvas");E(this,"source");this.source=e.source,this.container=e.container,this.canvas=e.canvas,V(e.viewMirror)||(this.viewMirror=e.viewMirror),V(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var t;let e=document.createElement(b.VIDEO);this.source?e.src=URL.createObjectURL(this.source):this.track&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(b.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(b.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){super.handleTrackEvent(e),e.type===b.MUTE&&this.stat.fps&&(this.stat.fps=0)}handleElementEvent(e){var i;super.handleElementEvent(e);let t=e.type;if(t===b.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(i=this.container)==null?void 0:i.id}`),this._pausedRetryCount>0&&!Jm()&&(this._log.info(`${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let o=this.element.style.transform;t===b.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=o.replace("scaleX(-1)",""):t===b.LEAVE_PICTURE_IN_PICTURE&&!o.includes("scaleX")&&(this.element.style.transform=`${o} scaleX(-1)`)}}setCanvas(e){var t,i,o,a;this.canvas!==e&&((t=this.canvas)==null||t.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,e?((i=this.element)==null||i.remove(),(o=this.container)==null||o.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.canvas?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(wt.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&!this.canvas&&(this.source?this.element.src=URL.createObjectURL(this.source):this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Cs()&&this.element&&this._calculateTimeout<0){let e=0,t=null,i=(o,a)=>{this.stat.width=a.width,this.stat.height=a.height,t&&(this.stat.fps=Math.round((a.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,t=a,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var d;return(d=this.element)==null?void 0:d.requestVideoFrameCallback(i)},2e3))};this.element.requestVideoFrameCallback(i)}}catch(e){this._log.warn("init stat failed",e)}}};function Rs(n,r){return N(this,null,function*(){if(!n.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield n.audioWorklet.addModule(r),J.info("worklet addModule success")}catch(e){throw J.info(`worklet addModule catch error. ${e.message}`),e}})}var Zd;typeof AudioContext!="undefined"?Zd=AudioContext:typeof webkitAudioContext!="undefined"?Zd=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Zd=mozAudioContext);var Kn,U_=-1;V_();function V_(){try{if(Kn)return;Kn=new Zd({sampleRate:48e3}),Kn.onstatechange=()=>{J.info(`context state: ${Kn.state}`),Ua()},clearTimeout(U_)}catch(n){J.error(`initAudioContext failed: ${n} typeof AudioContextClass: ${typeof Zd}`),U_=setTimeout(V_,1e3)}}var Ua=()=>{Kn.state==="suspended"?(Kn.resume(),document.addEventListener("click",Ua)):Kn.state==="interrupted"?Kn.resume().catch(n=>{J.warn(`resume failed: ${n}`),document.addEventListener("visibilitychange",Ua)}):(document.removeEventListener("visibilitychange",Ua),document.removeEventListener("click",Ua))};document.addEventListener("click",Ua);var kr=n=>Kn;var ai=class{constructor(){this.pre=new Set;this.next=new Set;this.connectedNodes=new Set;this._channelCount=1}get channelCount(){return this._channelCount}set channelCount(r){this._channelCount=r,this.node&&(this.node.channelCount=r),this.next.forEach(e=>e.channelCount=r)}setContext(r){this.context=r,this.node&&r.addMixWeight()}removeContext(){var r;this.node&&((r=this.context)==null||r.reduceMixWeight()),delete this.context}setNode(r){var e;if(!this.node)try{(e=this.context)==null||e.addMixWeight(),this.node=r,this.node.channelCountMode="explicit",this.node.channelCount=this._channelCount,this.preNodeReconnect(),this.reconnect(),Z.addSuccessEvent({key:502701})}catch(t){J.error(t),Z.addFailedEvent({key:502701,error:t})}}deleteNode(){var r;if(!!this.node)try{this._disconnect(),delete this.node,(r=this.context)==null||r.reduceMixWeight(),this.preNodeReconnect(),Z.addSuccessEvent({key:502702})}catch(e){J.error(e),Z.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(r=>{r.node?r.reconnect():r.preNodeReconnect()})}connectNext(r){this.next.forEach(e=>r._connect(e.node)||e.connectNext(r))}_connect(r){return!this.node||!r?!1:(this.node.connect(r),this.connectedNodes.add(r),!0)}_disconnect(){this.connectedNodes.forEach(r=>{var e;return(e=this.node)==null?void 0:e.disconnect(r)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...r){return r.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},Nl=class extends ai{constructor(e=256){super();this.fftSize=e;this.dataArray=new Uint8Array(0)}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,i=0,o=0,a=`M${i},${o}`;for(let d=0;d<e.length;d++)o=e[d]/128*100/2,a+=`L${i},${o}`,i+=t;return a}},eu=class{constructor(){this.source=new ai;this.gain=new ai;this.destination=new ai}get volume(){var r;return((r=this.gain.node)==null?void 0:r.gain.value)||1}setVolume(r){if(r===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.source.node.context.createGain()),this.gain.node.gain.value=r}replaceSource(r){this.source.deleteNode(),this.source.setNode(qm(r))}get track(){var r;return(r=this.stream)==null?void 0:r.getAudioTracks()[0]}get stream(){var r;return(r=this.destination.node)==null?void 0:r.stream}},Va=class extends eu{constructor(e){super();this.context=e;this.denoiser=new ai;this.source.pipeTo(this.denoiser.pipeTo(this.gain.pipeTo(this.destination)))}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.denoiser.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){!this.context.inputs.has(this)||(this.destination.deleteNode(),this.source.removeContext(),this.denoiser.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Dl=class{constructor(){this.audioContext=kr("audio-mixer");this.destination=this.audioContext.createMediaStreamDestination();this.inputs=new Set;this.mixWeight=0}addMixWeight(r=1){this.mixWeight+=r,this.mixWeight-1===r+1>>1&&this.mixOnChange()}reduceMixWeight(r=1){this.addMixWeight(-r)}close(){this.inputs.forEach(r=>r.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},F_=new WeakMap;function qm(n){let r=F_.get(n);if(r)return r;let e=kr();if(n instanceof HTMLAudioElement)r=e.createMediaElementSource(n);else if(n instanceof MediaStreamTrack)r=e.createMediaStreamSource(new MediaStream([n]));else return n;return F_.set(n,r),r}var un=class{constructor(r){this._volume=0;this._scriptProcessorNode=null;this._audioWorkletNode=null;this._interval=200;this.ready=this.preload();let{log:e}=r;this._log=e,B.on(U.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-un.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!un.workletReady){let r='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,e){t=t[0],e=e[0];if(t||e){if(this.isStop)return!1;var s=e?e[0].length:0,i=this.cache.length,h=(s<i?(e[0].set(this.cache.slice(0,s)),this.cache=this.cache.slice(s)):this.unmute&&e[0].set(t[0]),(s<i?e:t)[0]);if(h){let e=0;for(let t=0;t<h.length;++t)e=Math.max(Math.abs(h[t]),e);this.volume=e,this.tick-=h.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,cacheLen:i,outputLen:s}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';un.workletReady=Rs(un.audioContext,URL.createObjectURL(new Blob([r],{type:"application/javascript"})))}return un.workletReady.then(()=>this.initAudioWorklet()).catch(r=>(this._log.error(`volumeMeter preload error: ${r}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(un.audioContext,"volume-meter");let r=!1;this._audioWorkletNode.port.onmessage=e=>{un.lastMessageTime=Date.now(),this._volume=e.data.volume||0,!r&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),r=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(r){this._log.error(`volumeMeter init audio worklet error: ${r}`),je.logFailedEvent({userId:this._log.userId,eventType:br.LOAD_WORKLET,error:r}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=kr("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=r=>{un.lastMessageTime=Date.now();let e=r.inputBuffer.getChannelData(0),t=0;for(let i=0;i<e.length;++i)t+=e[i]*e[i];this._volume=Math.sqrt(t/e.length)||0}}catch(r){this._log.error(`volumeMeter init script processor error: ${r}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,B.off(U.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}handleAudioLevelInterval(r){var t;let{interval:e}=r;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}},Fa=un;Fa.lastMessageTime=0,Fa.audioContext=kr("volume-meter");var wl=class extends ai{constructor(e){super();this._volumeMeter=new Fa(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return N(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),i=new Float32Array(t>>2);e.copyTo(i,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:i},[i.buffer]),e.close()}}},Xm=Fa;var W_=$t(nr(),1);var B_=n=>r=>r.deviceId===n;var tu=class{constructor(r,e="Input"){E(this,"kind");E(this,"type");E(this,"devices",[]);this.kind=r,this.type=e}update(r,e){let t=r.filter(i=>i.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&$a(this.devices[0])){this.devices=t;return}e&&(t.forEach(i=>{if(i.deviceId&&!this.devices.find(B_(i.deviceId))){let o=`${this.kind}${this.type}Added`;J.warn(`${o}: ${JSON.stringify(i)}`),e.emit(o,i)}}),this.devices.forEach(i=>{if(i.deviceId&&!t.find(B_(i.deviceId))){let o=`${this.kind}${this.type}Removed`;J.warn(`${o}: ${JSON.stringify(i)}`),e.emit(o,i)}})),this.devices=t}hasDevice(r){return!!this.devices.find(e=>e.deviceId===r)}},Qm=class extends W_.EventEmitter{constructor(){super();E(this,"audioInputs",new tu(b.AUDIO));E(this,"videoInputs",new tu(b.VIDEO));E(this,"audioOutputs",new tu(b.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||Qe.run(Ts,()=>{this.update()},{delay:1e4}))}init(){kl().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return N(this,arguments,function*(e=0){let t=yield kl(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},Gt=pd||ha?null:new Qm;function $a(n){return n.deviceId===n.groupId&&n.groupId===""}function kl(){return N(this,arguments,function*(n=0){if(Xn()||!Il())return[];let r=yield navigator.mediaDevices.enumerateDevices();if(n!==0){let e={audio:!1,video:!1};if(r.forEach(t=>{$a(t)&&(t.kind===b.AUDIO_INPUT?e.audio=!0:t.kind===b.VIDEO_INPUT&&(e.video=!0))}),n===2&&(e.audio=!1),n===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e)}catch(i){J.debug("capture before getDevices failed: ",i)}r=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(i=>i.stop())}}return r.map((e,t)=>{let i={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&Ym.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(i.getCapabilities=()=>e.getCapabilities()),i})})}function Or(n=!1){return Gt.update(n?1:0).then(r=>r.audioInputs.devices)}function Jr(n=!1){return Gt.update(n?2:0).then(r=>r.videoInputs.devices)}var H_=!1;function G_(){return N(this,null,function*(){try{H_||(H_=!0,J.info(`speakers:${(yield Do()).map(n=>` ${n.deviceId.slice(0,8)}: ${n.label}`)}`))}catch(n){}})}function Do(n=!1){return N(this,null,function*(){return Gt.update(n?1:0).then(r=>r.audioOutputs.devices)})}var Ym=new Set;function j_(n){if(n instanceof CanvasCaptureMediaStreamTrack||!(n instanceof MediaStreamTrack))return!1;let r=n.label.toLocaleLowerCase();if(r.includes("camera")||r.includes("webcam"))return!0;let t=`${((n==null?void 0:n.getSettings())||{}).deviceId}_${b.VIDEO_INPUT}`;return!!Ym.has(t)}function z_(n){if(n instanceof CanvasCaptureMediaStreamTrack||!(n instanceof MediaStreamTrack))return!1;let r=n.label.toLocaleLowerCase();if(r.includes("mic")||r.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((n==null?void 0:n.getSettings())||{}).deviceId}_${b.AUDIO_INPUT}`;return!!Ym.has(t)}function Km(n,r){return N(this,null,function*(){let t=(yield Or()).find(i=>i.deviceId===Es);return!r&&(t==null?void 0:t.groupId)===n||(t==null?void 0:t.groupId)===n&&t.label===r})}function J_(o){return N(this,arguments,function*({newDeviceId:n,oldDeviceId:r,oldGroupId:e,oldLabel:t,kind:i}){return n!==r?!1:i===b.AUDIO&&n===Es?yield Km(e,t):!0})}var Ol,Zm=class extends eu{constructor(e){super();this.log=e;E(this,"volumeMeter");E(this,"volumeDestination");E(this,"analyser",new Nl);this.volumeMeter=new wl({log:this.log}),this.volumeDestination=new ai,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Ba=class extends dn{constructor(e){super(e,b.AUDIO);E(this,"_outputDeviceId");E(this,"_volume",1);E(this,"_destination",kr("player").createMediaStreamDestination());E(this,"pipeline");E(this,"volumeMeterMode","worklet");this.pipeline=new Zm(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((yo==="15.2"||yo==="15.3"||yo==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let i=Ol||new Audio;i.setAttribute("autoplay","autoplay"),i.srcObject=this.getMediaStream(),i.muted=this.muted,this.element=i,qe(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),i===Ol&&(Ol=void 0),this.bindElementEvents()}play(e){return N(this,null,function*(){if(!!this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(kr("player").createAnalyser()),G_(),Mt(Ba.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return N(this,null,function*(){var t,i;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(i=(t=this.element).setSinkId)==null?void 0:i.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){!this.element||(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},Pl=class extends Ba{constructor(r){super(r),this.pipeline.source.pipeTo(this.pipeline.volumeMeter,this.pipeline.destination)}setTrack(r){var e;this.track!==r&&(this.unbindTrackEvents(),this.track=r,this.emit(wt.MEDIA_TRACK_CHANGED,r),r?(this.bindTrackEvents(),this.pipeline.source.channelCount=((e=r.getSettings())==null?void 0:e.channelCount)||1,this.pipeline.replaceSource(r),!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([r]))):this.pipeline.source.deleteNode())}setSourceNode(r){!r||this.pipeline.source.node===r||(this.pipeline.replaceSource(r),r instanceof MediaStreamAudioSourceNode?this.pipeline.destination.setNode(this._destination):this.pipeline.destination.deleteNode(),this.element&&(this.element.srcObject=this.getMediaStream(),this.element.play().catch(()=>{}),this.setVolume(this._volume)))}setVolume(r){this._volume=r,this.element&&(this.element.volume=r)}},xl=class extends Ba{constructor(e){super(e);E(this,"_sourceElement");E(this,"_output",new ai);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this._output.setNode(kr("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,i,o;((i=(t=this.element)==null?void 0:t.error)==null?void 0:i.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(wt.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?(this.element?this._log.info(`set element volume: ${e}`):this._log.info("set element volume: no element"),this.element&&(this.element.volume=e)):(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),kt(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&Ra&&(Ol=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var bs=class extends De{constructor({userId:e,sdkAppId:t,mediaType:i,room:o,PlayerClass:a=i===1?xl:zr}){var d;super();E(this,"id",Fd());E(this,"userId","");E(this,"isRemote");E(this,"mediaType");E(this,"room");E(this,"user");E(this,"_log");E(this,"_inputTrack");E(this,"_outputTrack");E(this,"isPlayCalled");E(this,"container",null);E(this,"player");E(this,"subVideoPlayerMap");E(this,"muted",!1);E(this,"abortCtrl");E(this,"objectFit","cover");E(this,"mirror");E(this,"isScreen",!1);E(this,"manager");E(this,"trackSettings");this.userId=e||"",this.mediaType=i,this._log=J.createLogger({id:`${this.kind[0]}t`,userId:(d=o||this.room)==null?void 0:d.userId,remoteUserId:this instanceof qr?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof qr}),this.player=new a({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(wt.PLAYER_STATE_CHANGED,p=>{B.emit(U.PLAYER_STATE_CHANGED,oe({track:this},p)),this.emit("player-state-changed",p)}),this.kind===b.VIDEO&&(this.player.on(wt.LOADED_DATA,()=>{B.emit(U.VIDEO_LOADED_DATA,{track:this})}),this.player.on(wt.MEDIA_TRACK_CHANGED,p=>{var _;(_=this.subVideoPlayerMap)==null||_.forEach(S=>S.setTrack(p))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(wt.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||J}get kind(){return this.mediaType===1?b.AUDIO:b.VIDEO}get strMediaType(){return this.mediaType===4?b.VIDEO:this.mediaType===2?b.SCREEN:b.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return N(this,null,function*(){let i=Dt(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!V(t.muted)&&this.setPlayerMute(t.muted),t&&!V(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof zr&&(this.player.setObjectFit(this.objectFit),this.container!==i&&i&&(this.container=i,this.player.setContainer(i)),Dt(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!V(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===b.VIDEO)&&this.setPlayerMute(!0),t&&!V(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof zr&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,i&&(this.container=i,this.player instanceof zr&&this.player.setContainer(i)),B.emit(U.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),Dt(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(),this.emit("error",o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==b.VIDEO||V(e)||e===this.mirror)return;this.mirror=e;let i=this.player;t&&(i=t);let o=this.manager;if(St(this.mirror)){i.setViewMirror(this.mirror),o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),i.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),i.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),i.setViewMirror(!1)}}playSubContainer(e,t){return N(this,null,function*(){if(!this._outputTrack||this.kind===b.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,a)=>{var d;e.find(p=>a===p)||(o.stop(),(d=this.subVideoPlayerMap)==null||d.delete(a))});for(let[o,a]of e.entries()){let d=this.subVideoPlayerMap.get(a);d?t&&(V(t.objectFit)||d.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(a,new zr({id:this.userId||this.id,track:this.playerMediaTrack,container:a,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let i=[...this.subVideoPlayerMap.values()];for(let o of i)o.setViewMirror(this.player.mirror),yield o.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){!this.isPlayCalled||(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(xi(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return N(this,null,function*(){var e;!this.isPlayCalled||(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),B.emit(e?U.TRACK_MUTED:U.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){ur(e,e).add(b.MUTE,this.onTrackMuted).add(b.UNMUTE,this.onTrackUnmuted).add(b.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===b.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){kt(e)}setInputMediaStreamTrack(e){var i;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(i=e.getSettings)==null?void 0:i.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var i;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(i=e.getSettings)==null?void 0:i.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(()=>this.handleAutoPlayFailed()),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(xi(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(){if(this.room&&this.room.enableAutoPlayDialog)new L_;else{let e=()=>{this.resume().then(()=>{document.removeEventListener("click",e,!0)})};document.addEventListener("click",e,!0)}}getVideoFrame(){return this.player instanceof zr?this.player.getVideoFrame():""}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};j([It([],De.INIT,{sync:!0})],bs.prototype,"close",1);var bS=Object.prototype.hasOwnProperty,{toString:qC}=Object.prototype;function NS(n){if(n==null)return!0;if(typeof n=="boolean")return!1;if(typeof n=="number")return n===0;if(typeof n=="string"||typeof n=="function"||Array.isArray(n))return n.length===0;if(n instanceof Error)return n.message==="";if(jr(n))switch(Object.prototype.toString.call(n)){case"[object File]":case"[object Map]":case"[object Set]":return n.size===0;case"[object Object]":{for(let r in n)if(bS.call(n,r))return!1;return!0}}return!1}var ln=NS;var DS=function(n){return N(this,null,function*(){let r=kS(n);J.info(`getUserMedia with constraints: ${JSON.stringify(r)}`);let e=[],t=[],i=["label","deviceId"];r.audio&&(e=yield Or(),J.info(`microphones: ${Pi(e,{keysToInclude:i})}`)),r.video&&(t=yield Jr(),J.info(`cameras: ${Pi(t,{keysToInclude:i})}`));try{let o=yield navigator.mediaDevices.getUserMedia(r);return Um&&o.getTracks().forEach(a=>{J.info(`${a.kind} capabilities: ${Pi(a.getCapabilities(),{keysToInclude:zu})}`)}),o}catch(o){let{message:a}=o;throw o.name==="NotFoundError"&&(n.video&&t&&t.length===0&&(a=Te({key:Ee.CAMERA_NOT_FOUND})),n.audio&&e&&e.length===0&&(a=Te({key:Ee.MICROPHONE_NOT_FOUND}))),new Y({code:H.INITIALIZE_FAILED,name:o.name,message:a,constraint:o.constraint})}})},wS=Ki({retryFunction:DS,settings:{retries:3,timeout:500},onError:({error:n,retry:r,reject:e,retryFuncArgs:t,retriedCount:i})=>{let o=i+1;n.name==="NotReadableError"||n.name==="OverconstrainedError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!Dr||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),r()):e(n),t[0].microphoneId&&q_(t[0].microphoneId,!1),t[0].cameraId&&q_(t[0].cameraId,!0)},onRetrying:n=>{J.warn(`getUserMedia NotReadableError observed, retrying [${n}/3]`)},onRetryFailed:n=>{je.logFailedEvent({eventType:br.GET_USER_MEDIA_RETRY,error:n})},onRetrySuccess:n=>{je.logSuccessEvent({eventType:br.GET_USER_MEDIA_RETRY}),je.uploadEvent({log:`stat-${br.GET_USER_MEDIA_RETRY}-success-${n}`})}});function q_(n,r){return N(this,null,function*(){let t=(r?yield Jr():yield Or()).find(i=>i.deviceId===n);t&&Ze(t.getCapabilities)&&J.warn(Pi(t.getCapabilities(),{keysToInclude:zu}))})}function kS(n){return{audio:OS(n),video:PS(n)}}function OS(n){if(!n.audio)return!1;if(n.useTrueAsConstraint)return!0;let r={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:n.sampleRate};return!ln(n.microphoneId)&&(r.deviceId=n.useExactDeviceId?{exact:n.microphoneId}:n.microphoneId,n.useDeviceIdOnly)?r:(qe(n.channelCount)&&(r.channelCount=n.channelCount),St(n.echoCancellation)&&!n.echoCancellation&&(r.echoCancellation=!1),St(n.noiseSuppression)&&!n.noiseSuppression&&(r.noiseSuppression=!1),St(n.autoGainControl)&&!n.autoGainControl&&(r.autoGainControl=!1),ln(r)?!0:r)}function PS(n){if(!n.video)return!1;if(n.useTrueAsConstraint)return!0;let{maxResolution:r=!0}=n,e={};return n.cameraId?e.deviceId=n.useExactDeviceId?{exact:n.cameraId}:n.cameraId:n.facingMode&&(e.facingMode=n.facingMode),n.useDeviceIdOnly&&!ln(e)?e:(n.width&&(e.width={ideal:n.width},r&&!nt&&(e.width.max=n.width)),n.height&&(e.height={ideal:n.height},r&&!nt&&(e.height.max=n.height)),nt&&Di&&n.width&&n.height&&n.width*n.height<352*288&&(e.width=n.width,e.height=n.height),n.frameRate&&(e.frameRate=n.frameRate),ln(e)?!0:e)}var X_=wS;function Ml(n){return ke((r,e)=>function(...t){return N(this,null,function*(){return yield n.apply(this,t),r.apply(this,t)})})}function Li(n){return ke((r,e)=>function(...t){return N(this,null,function*(){let i=yield r.apply(this,t);return yield n.call(this,...t),i})})}function Q_(n){return ke((r,e)=>function(...t){return N(this,null,function*(){try{return yield r.apply(this,t)}catch(i){n.call(this,i)}})})}function ke(n){return function(r,e,t){return t.value=n(t.value,e),t}}var Y_=(()=>{let n=!1,r=document.visibilityState;return()=>{document.visibilityState!==r&&J.info(`visibility change: ${document.visibilityState}`),!n&&(document.addEventListener("visibilitychange",()=>{J.info(`visibility change: ${document.visibilityState}`),r=document.visibilityState}),n=!0)}})();var xS=0,Ll=class{constructor(){this.log=J.createLogger({id:`fq${++xS}`});this.isRunning=!1;this.queue=[]}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(r,e=!1){var o,a;let t=oe({},r),i=new Promise((d,p)=>{t.resolve=d,t.reject=p});return t.promise=i,e?this.length<=1?this.queue.push(t):(a=(o=this.lastQueueItem)==null?void 0:o.promise)==null||a.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),i}shift(){let r=this.queue.shift();return this.log.debug(`shift ${this.length}`),r}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:r,args:e,context:t,resolve:i,reject:o}=this.queue[0];this.isRunning=!0,r.apply(t,e).then(i,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},iu=new WeakMap,Ul=new WeakMap;function hn(n=!1){return function(r,e,t){let i=t.value;return t.value=function(...o){let a=iu.get(this)||new Ll;return iu.set(this,a),a.push({fn:i,args:o,context:this},n)},t}}function K_(n){return function(r,e,t){let i=t.value;return t.value=function(...o){let a=iu.get(this);if(a){let d=a.queue.filter((p,_)=>{if(_===0)return!0;let S=!0;return p.args.forEach(v=>{o.find(A=>A===v)||(S=!1)}),S?(p.reject(new Y({code:H.API_CALL_ABORTED,message:n})),!1):!0});a.queue=d}return i.apply(this,o)},t}}function Vl(n){return function(r,e,t){let i=t.value;return t.value=function(...o){var d,p,_;let a=[];return(p=(d=iu.get(this))==null?void 0:d.queue)==null||p.forEach(S=>a.push(S)),(_=Ul.get(this))==null||_.forEach(S=>S==null?void 0:S.queue.forEach(v=>a.push(v))),a.forEach(S=>{S.reject(new Y({code:H.API_CALL_ABORTED,message:n}))}),iu.delete(this),Ul.delete(this),i.apply(this,o)},t}}function Zn(n){return function(r,e,t){let i=t.value,o=a=>n(...a);return t.value=function(...a){let d=Ul.get(this)||new Map,p=d.get(o(a))||new Ll;return d.set(o(a),p),Ul.set(this,d),p.push({fn:i,args:a,context:this})},t}}function Pr(n,r){return ke((e,t)=>function(...i){let o=n;try{let a=e.apply(this,i),d=ge();return Is(a)?a.then(p=>(r?Z.addSuccessEvent({key:o,cost:ge()-d}):Z.addSuccessEvent({key:o}),p)).catch(p=>{throw Z.addFailedEvent({key:o,error:p}),p}):(Z.addSuccessEvent({key:o}),a)}catch(a){throw Z.addFailedEvent({key:o,error:a}),a}})}var ep=class extends bs{constructor(e,t){super({mediaType:e,PlayerClass:t});E(this,"isRemote",!1);E(this,"deviceId");E(this,"groupId","");E(this,"label","");E(this,"_isRecapturing",!1);E(this,"_lastRecaptureTime",0);E(this,"_onMuteTimeoutId",-1);E(this,"_encodeCheckTimeoutId",-1);E(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){ur(e,e).add(b.MUTE,this.onTrackMuted).add(b.UNMUTE,this.onTrackUnmuted).add(b.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===b.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){kt(e)}setStateToCapture(){}capture(e){return N(this,null,function*(){var t;try{let i=ge();B.emit(U.LOCAL_TRACK_CAPTURE_START,{track:this});let o;e.customSource?(o=new MediaStream,o.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),o=yield X_(e));let a=o.getTracks()[0];return yield this.setInputMediaStreamTrack(a),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),B.emit(U.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:ge()-i}),o}catch(i){throw B.emit(U.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:i}),this.log.error(`getUserMedia error observed ${i}`),i}})}setInputMediaStreamTrack(e){return this.state===De.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),B.emit(U.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return N(this,null,function*(){if(this.mediaTrack&&on){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:i}=this.mediaTrack;(yield J_({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=i,t&&(this.groupId=t),kl().then(a=>{let d=a.find(p=>p.deviceId===e);d&&this.emit("2",d)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===b.AUDIO&&!z_(this.mediaTrack)||this.kind===b.VIDEO&&!j_(this.mediaTrack)||this._isRecapturing||e&&Di&&Dr)}onTrackMuted(){if(super.onTrackMuted(),Y_(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<fa){setTimeout(()=>this.onTrackMuted(),fa);return}this._onMuteTimeoutId=setTimeout(()=>N(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Nr||Nt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return N(this,null,function*(){if(Mt(ep.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<fa){setTimeout(()=>this.onTrackEnded(),fa);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return N(this,null,function*(){var i;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(i=this._inputTrack)==null||i.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let o;(this.kind==="audio"?yield Or():yield Jr()).find(d=>d.deviceId===e)&&(o=e),t.deviceId=o}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),B.emit(U.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),B.emit(U.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return N(this,null,function*(){let e=this instanceof yt;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let i=(nu.get(t)||0)+1;if(nu.set(t,i),i>=3){let o=e?(yield Jr()).find(a=>!nu.has(a.deviceId)):(yield Or()).find(a=>!nu.has(a.deviceId));o&&(this.log.warn(`${t} capture fail ${i} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}},qr=ep;j([It(De.INIT,"capture",{ignoreError:!0,sync:!0})],qr.prototype,"setStateToCapture",1),j([hn()],qr.prototype,"capture",1),j([It("capture","publish",{ignoreError:!0,success(){var r,e;this.room.localTracks.add(this),B.emit(U.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((e=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:e.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var i,o;if(!((((o=(i=this.room)==null?void 0:i.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let a=this.kind===b.AUDIO,d=this.stat.bytesSent>0;Z[d?"addSuccessEvent":"addFailedEvent"]({key:a?503700:513702}),d||(Z.addEnum({key:a?503701:513703,value:ba()}),je.uploadEvent({log:`stat-encode-failed-${this.kind}-${vo()||Xi()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(n){let r="error",e=n.cause;e.message.includes("timeout")?r="timeout":e.code===H.API_CALL_ABORTED&&(r="api-call"),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e})}}),Pr(521714,!1)],qr.prototype,"publish",1),j([ke(n=>function(){return N(this,null,function*(){let r=this.state==="publish"?"started":"starting";n.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),It([],"capture",{sync:!0})],qr.prototype,"unpublish",1);var nu=new Map;B.on(U.SWITCH_DEVICE_SUCCESS,n=>{n.track.deviceId&&nu.delete(n.track.deviceId)});var lr=class extends qr{constructor(e){super(1,Pl);E(this,"mediaType",1);E(this,"volume",0);E(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});E(this,"playerMuted",!0);E(this,"pipeline");E(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Va(e),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return N(this,null,function*(){let t=this.trackSettings||{};Z.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),Z.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),Z.addEnum({key:502700,value:0});let{sampleRate:i,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:i,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield Mt(lr.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:i=!0,retryWhenExactFailed:o=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:i,retryWhenExactFailed:o,customSource:t})}switchDevice(e){return N(this,null,function*(){if(!!this.mediaTrack){if(this.deviceId===e)if(e===Es){if(yield Km(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),B.emit(U.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){Gt&&!Gt.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Gt.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return N(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),ft(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield Or();t[0]?this.recapture(t[0].deviceId):Gt.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return N(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:i}){let a=!1;!V(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a=!0),!V(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a=!0),!V(i)&&i!==this.profile.autoGainControl&&(this.profile.autoGainControl=i,a=!0),a&&this.deviceId&&(yield this.recapture(this.deviceId))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&Z.addEnum({key:502700,value:2}),this.resetPlayerSource()}enableTrackANS(e){if(!this._inputTrack)return;let t=this._inputTrack.getConstraints();return t.noiseSuppression=e,this._inputTrack.applyConstraints(t).catch(i=>this._log.warn(`${e?"enable":"disable"} ANS failed `,i))}addDenoiser(e){var t;if(ki<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}Z.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.resetPlayerSource(),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.resetPlayerSource(),this.enableTrackANS(!0))}resetPlayerSource(){this.player.setSourceNode(this.pipeline.gain.node||this.pipeline.denoiser.node||this.pipeline.source.node)}close(){this.pipeline.remove(),Gt.off("audioInputAdded",this.handleMicrophoneAdded,this),Gt.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return N(this,null,function*(){try{yield Mt(lr.prototype,this,"recapture").call(this,e)}catch(t){let i=(yield Or()).find(o=>o.deviceId!==e);if(i)yield Mt(lr.prototype,this,"recapture").call(this,i.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduce((t,i)=>i?i({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var to=class{constructor(r,e=!1){this.dataView=r;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let r=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],i=0;for(let a=r;a<=e;a++){let d=this.dataView.getInt8(a);switch(d){case 0:case 1:case 2:case 3:i===2&&(t.push(3),i=0),d==0?i++:i=0,t.push(d);break;default:i=0,t.push(d);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,r),...t]).buffer);this.dataView=o}removePreventionByte(){let r=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],i=0;for(let a=r;a<=e;a++)switch(this.dataView.getInt8(a)){case 0:i++,t.push(this.dataView.getInt8(a));break;case 3:i!==2&&t.push(this.dataView.getInt8(a)),i=0;break;default:t.push(this.dataView.getInt8(a)),i=0;break}let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,r),...t]).buffer);this.dataView=o}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let r=6;for(let e=6;e<this.dataView.buffer.byteLength&&(r++,this.dataView.getUint8(e)===255);e++);return r}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let r=0,e=6;for(let o=6;o<this.dataView.buffer.byteLength;o++){let a=this.dataView.getUint8(o);if(e++,a===255)r+=255;else{r+=a;break}}let t=new ArrayBuffer(r),i=new DataView(t);for(let o=0;o<t.byteLength;o++,e++)i.setInt8(o,this.dataView.getInt8(e));return i}};var Fl=class{constructor(){E(this,"_seiMessageList",[]);E(this,"_smallSeiMessageList",[]);E(this,"_seiPayloadType",243)}encodeSEINalu(r){let e=r.byteLength,t=parseInt(String(e/255),10),i=e%255,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let d=0;d<t;d++)o.push(255);o.push(i);let a=new DataView(r);return o.push(...new Uint8Array(a.buffer)),o.push(128),new to(new DataView(new Uint8Array(o).buffer),!0)}sendSEI(r,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(r),e!=null&&e.small&&this._smallSeiMessageList.push(r)}getNaluCount(r){let e=0,t=0,i=new DataView(r);for(let o=0;o<r.byteLength;o++)switch(i.getUint8(o)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(r,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&r.data.byteLength>0){let i=this.getNaluCount(r.data),o=9-i;if(o<=0)return 0;let a=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),d=a.reduce((A,w)=>A+w.dataView.byteLength,0),p=new ArrayBuffer(d+r.data.byteLength),_=new DataView(p),S=new DataView(r.data),v=0;for(let A=0;A<a.length;A++)for(let w=0;w<a[A].dataView.byteLength;w++)_.setInt8(v++,a[A].dataView.getInt8(w));for(let A=0;A<r.data.byteLength;A++)_.setInt8(v++,S.getInt8(A));return r.data=p,a.length}return 0}};var yt=class extends qr{constructor(e,t=4){super(t,zr);E(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});E(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});E(this,"small");E(this,"isNeedToSetBandwidth");E(this,"muteImage");E(this,"manager");E(this,"_seiCodec",new Fl);this.manager=e;let i=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(_e(oe({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",i),this.on("publish",i),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!on||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return N(this,null,function*(){var t,i,o;if(Je(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(i=this.manager)==null?void 0:i.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Mt(yt.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,Mt(yt.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:i=!0,customSource:o,retryWhenExactFailed:a=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:i,retryWhenExactFailed:a,customSource:o})}setProfile(e){let t=oe({},e),i=t.width>t.height;t.width*t.height<=160*120&&Nt&&wi&&(this.log.warn(`resolution is ${t.width}*${t.height}, fallback to 240*180`),t.width=i?240:180,t.height=i?180:240,t.bitrate=Math.max(t.bitrate,150)),t.width*t.height>1280*720&&lm&&(t.width=i?1280:720,t.height=i?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(_e(oe({},this.profile),{width:1920,height:1080})))}applyProfile(){return N(this,null,function*(){var i;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(Gr===16?yield this.recapture(this.deviceId):(yield(i=this.mediaTrack)==null?void 0:i.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:b.VIDEO,videoType:b.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return on&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Sm()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return N(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),B.emit(U.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}listenDeviceChange(){Gt&&!Gt.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Gt.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return N(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),ft(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield Jr();t[0]?this.recapture(t[0].deviceId):Gt.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return N(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let i=t?8:this.mediaType;return this.manager.encodePipeline.reduce((o,a)=>a?a({frame:o,mediaType:i}):o,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return N(this,null,function*(){return V(this.mirror)&&!this.isScreen&&this.setMirror("view"),Mt(yt.prototype,this,"play").call(this,e,t)})}close(){Gt.off("videoInputAdded",this.handleCameraAdded,this),Gt.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return N(this,null,function*(){try{yield Mt(yt.prototype,this,"recapture").call(this,e)}catch(t){let i=(yield Jr()).find(o=>o.deviceId!==e);if(i)yield Mt(yt.prototype,this,"recapture").call(this,i.deviceId);else throw t}})}};var rg=Fd();if(navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:rg,exposeOrigin:!0,permittedOrigins:["*"]})}catch(n){}var FS=function(n){return N(this,null,function*(){let r=null,e=HS(n);J.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);n.systemAudio&&t.getAudioTracks().length===0&&(Ca&&ki<74||Dr||nt)&&J.warn("Your browser not support capture system audio");let i=t.getVideoTracks()[0];if(i){if(n.frameRate)try{yield i.applyConstraints({frameRate:{min:n.frameRate,ideal:n.frameRate},width:n.width,height:n.height})}catch(o){J.warn(`screen applyConstraints failed: ${o}`)}n.captureElement&&(yield $S(i,n.captureElement))}if(n.audio){let o=BS(n);J.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),r=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(r.getAudioTracks()[0])}return t})};function $S(n,r){return N(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&Ze(n.cropTo))try{if(!(((e=n.getCaptureHandle())==null?void 0:e.handle)===rg))return;let i=yield CropTarget.fromElement(r);yield n.cropTo(i)}catch(t){J.warn(`cropTo target failed ${t}`)}})}function BS(n){let r={echoCancellation:n.echoCancellation,autoGainControl:n.autoGainControl,noiseSuppression:n.noiseSuppression,sampleRate:n.sampleRate,channelCount:n.channelCount};return V(n.microphoneId)||(r.deviceId=n.microphoneId),{audio:r,video:!1}}function HS(n){let r={preferCurrentTab:n.preferDisplaySurface==="current-tab"||!!n.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Dr?{max:n.width}:{ideal:n.width,max:n.width},height:Dr?{max:n.height}:{ideal:n.height,max:n.height},frameRate:n.frameRate,displaySurface:n.preferDisplaySurface||"monitor"};if(r.video=e,n.systemAudio){let{echoCancellation:t=!0,noiseSuppression:i=!1,autoGainControl:o=!1}=n;r.audio={echoCancellation:t,noiseSuppression:i,autoGainControl:o,sampleRate:48e3}}return r}var ig=FS;var Xr=class extends yt{constructor(e){super(e,2);E(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});E(this,"objectFit","contain");E(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(S){return N(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:i,noiseSuppression:o,audioTrack:a,videoTrack:d,captureElement:p,preferDisplaySurface:_}){try{let v;return d||a?(v=new MediaStream,d&&v.addTrack(d),a&&v.addTrack(a)):v=yield ig({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:i,noiseSuppression:o,captureElement:p,preferDisplaySurface:_}),yield this.setInputMediaStreamTrack(v.getVideoTracks()[0]),v}catch(v){throw this.log.error(`getDisplayMedia error observed ${v}`),v instanceof Y?v:new Y({code:H.INITIALIZE_FAILED,name:v.name,message:v.message})}})}switchDevice(e){return N(this,null,function*(){throw new Error("Method not implemented.")})}};var mn=class extends lr{constructor(r){super(r),this._log.id=`s-${this._log.id}`}};var WS="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",tp;function ou(n){return N(this,null,function*(){let r=kr("dump");tp||(tp=Rs(r,URL.createObjectURL(new Blob([WS],{type:"application/javascript"})))),yield tp;let e=new AudioWorkletNode(r,"dumper",{numberOfInputs:n.length,numberOfOutputs:0});return n.forEach((t,i)=>t.connect(e,0,i)),new ReadableStream({start(t){e.port.onmessage=i=>{t.enqueue(i.data)}},cancel(){n.forEach(t=>t.disconnect(e)),e.port.close()}})})}var $l=class extends Dl{constructor(e){super();this.room=e;E(this,"_localAudioTrack");E(this,"_localScreenAudioTrack");E(this,"log",J.createLogger({id:"am"}));E(this,"denoiser");E(this,"mixChangedDebounce");E(this,"encodePipeline",[]);E(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var S,v;if(!this._localAudioTrack)return;let t=[],i=[];(S=this._localAudioPipline)!=null&&S.source.node&&(t.push(this._localAudioPipline.source.node),i.push("mic")),(v=this._localAudioPipline)!=null&&v.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),i.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),i.push("mix")),this.log.info(`dump audio track ${i}, duration: ${e}`);let o=new AbortController,a=[],d=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),p=()=>{for(let A=0;A<i.length;A++){let w=URL.createObjectURL(new Blob(a[A])),M=document.createElement("a");M.href=w,M.download=`${i[A]}.pcm`,M.style.display="none",document.body.appendChild(M),M.click(),URL.revokeObjectURL(w),M.remove()}clearTimeout(d),o.abort("download")},_=ou(t).then(A=>A.pipeTo(new WritableStream({write(w){w.forEach((M,L)=>a[L]=a[L]?a[L].concat(M[0]):[M[0]])}}),o).catch(w=>p));return{then:_.then.bind(_),download:p}}getPCM(e){var a;if(V(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}if(!((a=this._localAudioPipline)!=null&&a.source.node)){this.log.warn("getPCM failed: no local audio track");return}this.log.warn("getPCM");let t=new Float32Array(1920),i=0,o=new AbortController;return ou([this._localAudioPipline.source.node]).then(d=>d.pipeTo(new WritableStream({write(p){!p[0][0]||(t.set(p[0][0],i),i+=p[0][0].length,i>=1920&&(i=0,e(t),t=new Float32Array(1920)))}}),o).catch(p=>this.log.warn(`stop getPCM reason:${p}`))),o}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return this._localAudioTrack!==null}changeInput(e){if(e instanceof mn)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof lr)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof ro)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof mn?delete this._localScreenAudioTrack:e instanceof lr?delete this._localAudioTrack:e instanceof ro}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}destroy(){this.close()}addEncodeProcessor({processor:e,type:t}){var i;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(i=this.room)==null||i.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var i;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(i=this.room)==null||i.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function Bl(n=30,r=2){return ke((e,t)=>function(...i){return new Promise((o,a)=>{let d=setTimeout(()=>{let p=new Y({code:H.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${n}s`});J.warn(p),r===2?a(p):r===1&&o()},n*1e3);e.apply(this,i).then(o,a).finally(()=>{clearTimeout(d)})})})}var rp=class extends bs{constructor(e,t,i){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:i,room:e});this.room=e;this.user=t;E(this,"tinyId");E(this,"isRemote",!0);E(this,"jitterBufferDelay",0);E(this,"_decodeCheckTimeoutId",-1);this.tinyId=t.tinyId}setMute(e){this.hasFlag&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.hasFlag&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===rp.STATE_SUBSCRIBE}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let i=this.kind===b.AUDIO;Z[e?"addSuccessEvent":"addFailedEvent"]({key:i?504700:514702}),e||(Z.addEnum({key:i?504701:514703,value:ba()}),je.uploadEvent({log:`stat-decode-failed-${this.kind}-${vo()||Xi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===b.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.hasFlag||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} hasFlag: ${this.hasFlag} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.updatePlayingState(this.hasFlag)}onTrackMuted(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackMuted()}onTrackUnmuted(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackUnmuted()}onTrackEnded(){this.hasFlag&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackEnded()}},ci=rp;E(ci,"STATE_SUBSCRIBE","subscribe"),j([Bl(5,1)],ci.prototype,"waitHasMediaTrack",1),j([It(De.INIT,ci.STATE_SUBSCRIBE,{success(){var r,e;this.log.info("subscribed"),B.emit(U.REMOTE_TRACK_SUBSCRIBED,{track:this}),this.updatePlayingState(!0),!((((e=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:e.downlinkNetworkQuality)||0)>3)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var i,o;if(!((((o=(i=this.room)==null?void 0:i.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let a=this.kind===b.AUDIO,d=this.player.isPlaying||(a?this.getAudioLevel()>0:this.stat.framesDecoded>0);Z[d?"addSuccessEvent":"addFailedEvent"]({key:a?504700:514702}),d||(Z.addEnum({key:a?504701:514703,value:ba()}),je.uploadEvent({log:`stat-decode-failed-${this.kind}-${vo()||Xi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===b.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed"))}},5e3),this.player.once(wt.ERROR,t=>{t.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),Pr(521716,!1)],ci.prototype,"subscribe",1),j([It(ci.STATE_SUBSCRIBE,De.INIT,{sync:!0,success(){this.log.info("unsubscribed"),this.updatePlayingState(!1),B.emit(U.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],ci.prototype,"unsubscribe",1);var ro=class extends ci{constructor(e,t){super(e,t,1);E(this,"volume",0);E(this,"mediaType",1);E(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}decodeFrame(e){if(!this.manager)return e;let t=e;for(let i of this.manager.decodePipeline)if(!!i&&(t=i({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get hasFlag(){return this.user.muteState.hasAudio}isFlagChanged(e){let t=e.hasAudio&&!e.audioMuted;return this.hasFlag||(this.volume=0),this.hasFlag!==t}};var zS=[-1,-1,1,-1,-1,1,1,1],JS=[0,0,1,0,0,1,1,1];var Ar=class extends De{constructor(e,t){super();this.context=e;E(this,"name");E(this,"input");E(this,"output");E(this,"texture");E(this,"ctx2d",null);E(this,"fbo");E(this,"width",0);E(this,"height",0);E(this,"x",0);E(this,"y",0);E(this,"program");E(this,"vertexShader");E(this,"fragmentShader");E(this,"totalFrames",0);E(this,"dropFrames",0);E(this,"matchInputSize",!0);E(this,"texCoordBuffer");E(this,"positionBuffer");E(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});E(this,"cost",0);E(this,"_canvas",null);E(this,"_image");E(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof hr){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&Gr!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let i=e.ctx;this.texCoordBuffer=this.createBuffer(JS),this.positionBuffer=this.createBuffer(zS),t.createTexture!==!1&&(this.texture=i.createTexture(),this.useTexture(),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.pixelStorei(i.PACK_ALIGNMENT,1),i.pixelStorei(i.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=i.createFramebuffer(),this.useBufferFrame(),this.useTexture(),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,this.width,this.height,0,i.RGBA,i.UNSIGNED_BYTE,null),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(i.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(i.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(i){this.context.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${i.message||i}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,i=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,i),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),i}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof vt&&this.render(e)||this.context instanceof hr&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof vt){let i=this.context.ctx;i.deleteBuffer(this.texCoordBuffer),i.deleteBuffer(this.positionBuffer),this.fbo&&i.deleteFramebuffer(this.fbo),this.texture&&i.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&i.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&i.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&i.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((i,o)=>{i&&(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,i))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),i}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let i=this.context.ctx;i.bindBuffer(i.ARRAY_BUFFER,e),i.bufferData(i.ARRAY_BUFFER,new Float32Array(t),i.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((i,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,i),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let i=this.context.ctx;i.texImage2D(i.TEXTURE_2D,0,i.RGBA,e,t,0,i.RGBA,i.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let i=this.context.ctx;i.drawArrays(i.TRIANGLE_STRIP,0,4)}draw2d(e,t,i,o,a){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,i):this.ctx2d.drawImage(e,t,i,o,a),!0):!1}getInfo(){var v;let{totalFrames:e,x:t,y:i,width:o,height:a,name:d,cost:p}=this,_=Date.now(),S=(e-this.lastInfo.totalFrames)/((_-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:i,width:o,height:a,timestamp:_,fps:S,name:d,cost:p},oe({parent:(v=this.input)==null?void 0:v.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,i=t.createTexture();return this.useTextures(i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),i}};j([It(De.INIT,"connected",{sync:!0})],Ar.prototype,"connect",1),j([It("connected",De.INIT,{ignoreError:!0,sync:!0})],Ar.prototype,"disconnect",1),j([It([],"closed",{sync:!0})],Ar.prototype,"close",1);function ot(...n){}var qS=n=>n();function op(){this.dispose()}var XS=()=>typeof __FASTRX_DEVTOOLS__!="undefined",QS=1,pn=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(r){let e=new np(r,this,this.streamId++);return Ot.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Ha=class{constructor(){this.defers=new Set,this.disposed=!1}next(r){}complete(){this.dispose()}error(r){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=ot,this.error=ot,this.next=ot,this.dispose=ot,this.subscribe=ot,this.doDefer()}subscribe(r){return r instanceof pn?r.subscribe(this):r(this),this}get bindSubscribe(){return r=>this.subscribe(r)}doDefer(){this.defers.forEach(qS),this.defers.clear()}defer(r){this.defers.add(r)}removeDefer(r){this.defers.delete(r)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},we=class extends Ha{constructor(r){super(),this.sink=r,r.defer(this.bindDispose)}next(r){this.sink.next(r)}complete(){this.sink.complete()}error(r){this.sink.error(r)}},Hl=class extends Ha{constructor(r,e=ot,t=ot,i=ot){if(super(),this._next=e,this._error=t,this._complete=i,this.then=ot,r instanceof pn){let o={toString:()=>"subscribe",id:0,source:r};this.defer(()=>{Ot.defer(o,0)}),Ot.create(o),Ot.pipe(o),this.sourceId=o.id,this.subscribe(r),Ot.subscribe({id:o.id,end:!0}),e==ot?this._next=a=>Ot.next(o,0,a):this.next=a=>{Ot.next(o,0,a),e(a)},i==ot?this._complete=()=>Ot.complete(o,0):this.complete=()=>{this.dispose(),Ot.complete(o,0),i()},t==ot?this._error=a=>Ot.complete(o,0,a):this.error=a=>{this.dispose(),Ot.complete(o,0,a),t()}}else this.subscribe(r)}next(r){this._next(r)}complete(){this.dispose(),this._complete()}error(r){this.dispose(),this._error(r)}};function gt(n,...r){return r.reduce((e,t)=>t(e),n)}function xr(n,r,e){if(XS()){let t=Object.defineProperties(Object.setPrototypeOf(n,pn.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:r,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ot.create(t);for(let i=0;i<e.length;i++){let o=e[i];typeof o=="function"&&o instanceof pn&&Ot.addSource(t,o)}return t}return n}function Le(n,r){return function(...e){return t=>{if(t instanceof pn){let i=xr(o=>{let a=new n(o,...e);a.sourceId=i.id,a.subscribe(t)},r,arguments);return i.source=t,Ot.pipe(i),i}else return i=>t(new n(i,...e))}}}function ko(n,r){window.postMessage({source:"fastrx-devtools-backend",payload:{event:n,payload:r}})}var np=class extends we{constructor(r,e,t){super(r),this.source=e,this.id=t,this.sourceId=r.sourceId,this.defer(()=>{Ot.defer(this.source,this.id)})}next(r){Ot.next(this.source,this.id,r),this.sink.next(r)}complete(){Ot.complete(this.source,this.id),this.sink.complete()}error(r){Ot.complete(this.source,this.id,r),this.sink.error(r)}},Ot={addSource(n,r){ko("addSource",{id:n.id,name:n.toString(),source:{id:r.id,name:r.toString()}})},next(n,r,e){ko("next",{id:n.id,streamId:r,data:e&&e.toString()})},subscribe({id:n,end:r},e){ko("subscribe",{id:n,end:r,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(n,r,e){ko("complete",{id:n.id,streamId:r,err:e?e.toString():null})},defer(n,r){ko("defer",{id:n.id,streamId:r})},pipe(n){ko("pipe",{name:n.toString(),id:n.id,source:{id:n.source.id,name:n.source.toString()}})},update(n){ko("update",{id:n.id,name:n.toString()})},create(n){n.id||(n.id=QS++),ko("create",{name:n.toString(),id:n.id})}},Wl=class extends Error{constructor(r){super(`timeout after ${r}ms`),this.timeout=r}};var sp=class extends Ha{constructor(r){super(),this.source=r,this.sinks=new Set}add(r){r.defer(()=>this.remove(r)),this.sinks.add(r).size===1&&(this.reset(),this.subscribe(this.source))}remove(r){this.sinks.delete(r),this.sinks.size===0&&this.dispose()}next(r){this.sinks.forEach(e=>e.next(r))}complete(){this.sinks.forEach(r=>r.complete()),this.sinks.clear()}error(r){this.sinks.forEach(e=>e.error(r)),this.sinks.clear()}};function Oo(){return n=>{let r=new sp(n);if(n instanceof pn){let e=xr(t=>{r.add(t)},"share",arguments);return r.sourceId=e.id,e.source=n,Ot.pipe(e),e}return xr(r.add.bind(r),"share",arguments)}}function YS(...n){return xr(r=>{let e=n.length,t=e,i=e,o=new Array(e),a=()=>{--i===0&&r.complete()},d=(p,_)=>{let S=new we(r);S.next=v=>{--t===0?(S.next=A=>{o[_]=A,r.next(o)},S.next(v)):o[_]=v},S.complete=a,S.subscribe(p)};n.forEach(d)},"combineLatest",arguments)}function Wa(...n){return r=>xr((e,t=0,i=n.length)=>{for(;t<i&&!e.disposed;)e.next(n[t++]);e.disposed||e.subscribe(r)},"startWith",arguments)}var ap=class extends we{constructor(r,...e){super(r);let t=new we(this.sink);t.next=i=>this.buffer=i,t.complete=ot,t.subscribe(YS(...e))}next(r){this.buffer&&this.sink.next([r,...this.buffer])}},G0=Le(ap,"withLatestFrom"),cp=class extends we{constructor(r,e,t){super(r),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(r){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(r)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(r),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(r=>this.sink.next(r)),super.complete()}},j0=Le(cp,"bufferCount"),dp=class extends we{constructor(r,e){super(r),this.buffer=[];let t=new we(r);t.next=i=>{r.next(this.buffer),this.buffer=[]},t.complete=ot,t.subscribe(e)}next(r){this.buffer.push(r)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},z0=Le(dp,"buffer");function Qr(n){let r=arguments,e=Oo()(xr(t=>{e.next=i=>t.next(i),e.complete=()=>t.complete(),e.error=i=>t.error(i),n&&t.subscribe(n)},"subject",r));return e.next=ot,e.complete=ot,e.error=ot,e}function og(n){return xr(r=>{let e=0,t=setInterval(()=>r.next(e++),n);return r.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function up(n,r){return e=>{let t=i=>e.next(i);e.defer(()=>r(t)),n(t)}}function jt(n,r){if("on"in n&&"off"in n)return xr(up(e=>n.on(r,e),e=>n.off(r,e)),"fromEvent",arguments);if("addListener"in n&&"removeListener"in n)return xr(up(e=>n.addListener(r,e),e=>n.removeListener(r,e)),"fromEvent",arguments);if("addEventListener"in n)return xr(up(e=>n.addEventListener(r,e),e=>n.removeEventListener(r,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Ga(){return xr(n=>n.complete(),"empty",arguments)}var lp=class extends we{constructor(r,e,t){super(r),this.f=e;let i=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=i,this.resetNext()}:(this.acc=t,this.complete=i)}next(r){this.acc=this.f(this.acc,r)}},KS=Le(lp,"reduce");var hp=class extends we{constructor(r,e,t){super(r),this.filter=e,this.thisArg=t}next(r){this.filter.call(this.thisArg,r)&&this.sink.next(r)}},Dp=Le(hp,"filter"),mp=class extends we{next(r){}},iN=Le(mp,"ignoreElements"),pp=class extends we{constructor(r,e){super(r),this.count=e}next(r){this.sink.next(r),--this.count===0&&this.complete()}},Po=Le(pp,"take"),fp=class extends we{constructor(r,e){super(r);let t=new we(r);t.next=()=>r.complete(),t.complete=op,t.subscribe(e)}},mr=Le(fp,"takeUntil"),_p=class extends we{constructor(r,e){super(r),this.f=e}next(r){this.f(r)?this.sink.next(r):this.complete()}},ZS=Le(_p,"takeWhile");var gp=class extends we{constructor(r,e){super(r),this.count=e}next(r){--this.count===0&&(this.next=super.next)}},nN=Le(gp,"skip"),Ep=class extends we{constructor(r,e){super(r),r.next=ot;let t=new we(r);t.next=()=>{t.dispose(),r.resetNext()},t.complete=op,t.subscribe(e)}},oN=Le(Ep,"skipUntil"),Tp=class extends we{constructor(r,e){super(r),this.f=e}next(r){this.f(r)||(this.next=super.next,this.next(r))}},sg=Le(Tp,"skipWhile"),eI={leading:!0,trailing:!1},Sp=class extends we{constructor(r,e,t){super(r),this.durationSelector=e,this.trailing=t}cacheValue(r){this.last=r,this.disposed&&this.throttle(r)}send(r){this.sink.next(r),this.throttle(r)}throttle(r){this.reset(),this.subscribe(this.durationSelector(r))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Ip=class extends we{constructor(r,e,t=eI){super(r),this.durationSelector=e,this.config=t,this._throttle=new Sp(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(r){this._throttle.disposed&&this.config.leading?this._throttle.send(r):this._throttle.cacheValue(r)}complete(){this._throttle.throttle=ot,this._throttle.complete(),super.complete()}},sN=Le(Ip,"throttle");var yp=class extends we{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},vp=class extends we{constructor(r,e){super(r),this.durationSelector=e,this._debounce=new yp(this.sink),this._debounce.dispose()}next(r){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=r,this._debounce.subscribe(this.durationSelector(r))}complete(){this._debounce.complete(),super.complete()}},aN=Le(vp,"debounce");var Ap=class extends we{constructor(r,e,t){super(r),this.count=e,this.defaultValue=t}next(r){this.count--===0&&(this.defaultValue=r,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},cN=Le(Ap,"elementAt");var Cp=class extends we{constructor(r,e){super(r),this.f=e,this.i=0}next(r){this.f(r)?(this.sink.next(this.i++),this.complete()):++this.i}},dN=Le(Cp,"findIndex"),Rp=class extends we{constructor(r,e,t){super(r),this.f=e,this.defaultValue=t,this.index=0}next(r){(!this.f||this.f(r,this.index++))&&(this.defaultValue=r,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},uN=Le(Rp,"first"),bp=class extends we{constructor(r,e,t){super(r),this.f=e,this.defaultValue=t,this.index=0}next(r){(!this.f||this.f(r,this.index++))&&(this.defaultValue=r)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},lN=Le(bp,"last"),Np=class extends we{constructor(r,e){super(r),this.predicate=e,this.index=0}next(r){this.predicate(r,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},hN=Le(Np,"every");var wp=class extends we{constructor(r,e,t){super(r),this.f=e,typeof t=="undefined"?this.next=i=>{this.acc=i,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(r){this.sink.next(this.acc=this.f(this.acc,r))}},ag=Le(wp,"scan"),kp=class extends we{constructor(){super(...arguments),this.hasLast=!1}next(r){this.hasLast?this.sink.next([this.last,r]):this.hasLast=!0,this.last=r}},_N=Le(kp,"pairwise"),Op=class extends we{constructor(r,e,t){super(r),this.mapper=e,this.thisArg=t}next(r){super.next(this.mapper.call(this.thisArg,r))}},cg=Le(Op,"map");var ja=class extends we{constructor(r,e,t){super(r),this.data=e,this.context=t}next(r){let e=this.context.combineResults;e?this.sink.next(e(this.data,r)):this.sink.next(r)}tryComplete(){this.context.resetComplete(),this.dispose()}},za=class extends we{constructor(r,e,t){super(r),this.makeSource=e,this.combineResults=t,this.index=0}subInner(r,e){let t=this.currentSink=new e(this.sink,r,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(r,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Gl=class extends ja{},jl=class extends za{next(r){this.subInner(r,Gl),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Gl)}}},Ns=Le(jl,"switchMap");function Xl(n){return(r,e)=>n(()=>r,e)}var dg=Xl(Le(jl,"switchMapTo")),Pp=class extends ja{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},zl=class extends za{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(r){this.next2(r),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Pp),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},gN=Le(zl,"concatMap"),EN=Xl(Le(zl,"concatMapTo")),xp=class extends ja{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Jl=class extends za{constructor(){super(...arguments),this.inners=new Set}next(r){this.subInner(r,xp),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(r=>r.resetComplete()):this.dispose()}},TN=Le(Jl,"mergeMap"),SN=Xl(Le(Jl,"mergeMapTo")),Mp=class extends ja{dispose(){this.context.resetNext(),super.dispose()}},ql=class extends za{next(r){this.next=ot,this.subInner(r,Mp)}},IN=Le(ql,"exhaustMap"),yN=Xl(Le(ql,"exhaustMapTo")),Lp=class extends we{constructor(r,e){super(r),this.f=e,this.groups=new Map}next(r){let e=this.f(r),t=this.groups.get(e);typeof t=="undefined"&&(t=Qr(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(r)}complete(){this.groups.forEach(r=>r.complete()),super.complete()}error(r){this.groups.forEach(e=>e.error(r)),super.error(r)}},vN=Le(Lp,"groupBy"),Up=class extends we{constructor(){super(...arguments),this.start=new Date}next(r){this.sink.next({value:r,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},AN=Le(Up,"timeInterval"),Vp=class extends we{constructor(r,e){super(r),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(r){this.buffer.push(r)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},CN=Le(Vp,"bufferTime"),Fp=class extends we{constructor(r,e){super(r),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(r){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:i}=e;super.next(i),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},r)}next(r){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:r})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},RN=Le(Fp,"delay"),$p=class extends we{constructor(r,e){super(r),this.selector=e}error(r){this.dispose(),this.selector(r)(this.sink)}},Ql=Le($p,"catchError");var zt=(n=ot,r=ot,e=ot)=>t=>new Hl(t,n,r,e),Bp=class extends we{constructor(r,e){super(r),e instanceof Function?this.next=t=>{e(t),r.next(t)}:(e.next&&(this.next=t=>{e.next(t),r.next(t)}),e.complete&&(this.complete=()=>{e.complete(),r.complete()}),e.error&&(this.error=t=>{e.error(t),r.error(t)}))}},DN=Le(Bp,"tap"),Hp=class extends we{constructor(r,e){super(r),this.timeout=e,this.id=setTimeout(()=>this.error(new Wl(this.timeout)),this.timeout)}next(r){super.next(r),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},wN=Le(Hp,"timeout");var tI=gt(og(250),cg(()=>performance.now()),Oo());var ug=n=>r=>{let e=performance.now();gt(tI,sg(t=>t-e<n),Po(1))(r)};var iI=[0,1,1,1,0,0,1,0],Ds=class extends Ar{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));this._intervalId=0;this._sequence=0;this.checkGLError=!1;e instanceof hr?this.ctx2d=e.ctx||null:e.available&&(t==null?void 0:t.mirrorUpAndDown)&&this.setTexBuffer(iI)}start(e){this.log.info(`${this.name} start render ${e} fps`),Qe.clearTask(this._intervalId),this._intervalId=Qe.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(Qe.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof vt){let i=this.context.ctx.getError();i&&this.context.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${i}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e){if(this._intervalId&&(Qe.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),Qe.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),Qe.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Ja=class extends Ds{constructor(e,t){super(e,t);this._closedOb=jt(this,"closed");Number(Io)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=jt(this._videoTrack,"mute"),gt(jt(this._videoTrack,"ended"),mr(this._closedOb),zt(()=>{this.context.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=gt(this._muteOb,mr(this._closedOb),dg(ug(5e3)),zt(()=>{var e;!((e=this._videoTrack)!=null&&e.muted)||this.context.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},Yl=class extends Ja{render(r){var e;return!!((e=this.input)!=null&&e.requestFrame(r))}};var Kl=class extends Ja{constructor(e,t,i){super(e,{name:"smallDestination",logger:i});this.resolution=t}resize(e,t){let i,o=e*t,a=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>a?i=o/a:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),i=o/(160*120)),super.resize(e/Math.sqrt(i),t/Math.sqrt(i))}};var su=class extends Ar{constructor(e,t){super(e,oe({name:"imageSource"},t));E(this,"_lastImage");E(this,"_totalFrames",0);E(this,"_autoResize",!1);E(this,"_canvasRendered");E(this,"_videoCallbackId",0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,Gr===16&&(this._canvasRendered=Qr(),gt(this._canvasRendered,Wa(this._image),Ns(i=>i instanceof HTMLCanvasElement?jt(i,"rendered"):Ga()),mr(jt(this,"closed")),zt(()=>{this.update(0)})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Cs()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,i)=>{document.hidden||(this._totalFrames=i.presentedFrames,this.update(1))}))}_render(e,t){var d;let{width:i,height:o}=this,{image:a}=this;if(a instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(a),{videoWidth:i,videoHeight:o}=a,!i||!o)return!1;a.width=i,a.height=o}else if(a instanceof HTMLImageElement||a instanceof ImageData||a instanceof ImageBitmap){if({width:i,height:o}=a,a!==this._lastImage)this._lastImage=a;else if(i===this.width&&o===this.height)return!1}else a instanceof HTMLCanvasElement||a instanceof OffscreenCanvas?({width:i,height:o}=a,this._lastImage=a):typeof VideoFrame!="undefined"&&a instanceof VideoFrame&&({displayWidth:i,displayHeight:o}=a,(d=this._lastImage)==null||d.close(),this._lastImage=a);if(!this._autoResize)return!0;if(this.width===i&&this.height===o&&this.totalFrames){if(t){this.useTexture();let p=this.context.ctx;p.texSubImage2D(p.TEXTURE_2D,0,0,0,p.RGBA,p.UNSIGNED_BYTE,a)}}else{if(t){this.useTexture();let p=this.context.ctx;p.texImage2D(p.TEXTURE_2D,0,p.RGBA,p.RGBA,p.UNSIGNED_BYTE,a)}this.resize(i,o)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},au=class extends su{constructor(e,t,i){super(e,i);this._player=t;this.name="videoPlayerSource",gt(jt(this._player,wt.PLAYER_STATE_CHANGED),mr(jt(this,"closed")),Dp(({state:o})=>o==="PLAYING"),zt(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},io=class extends au{constructor(r,e,t){super(r,new zr({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(r){this._player.setTrack(r),this._player.play()}close(){super.close(),this._player.stop()}};var oI=`
33
33
  // \u9876\u70B9\u7740\u8272\u5668
34
34
  attribute vec4 a_position;
35
35
  attribute vec2 a_texCoord;
@@ -39,7 +39,7 @@ void main() {
39
39
  gl_Position = a_position;
40
40
  v_texCoord = a_texCoord;
41
41
  }
42
- `,i_=`
42
+ `,sI=`
43
43
  // \u7247\u5143\u7740\u8272\u5668
44
44
  precision mediump float;
45
45
  varying vec2 v_texCoord;
@@ -47,26 +47,115 @@ uniform sampler2D u_texture;
47
47
 
48
48
  void main() {
49
49
  gl_FragColor = texture2D(u_texture, v_texCoord);
50
- } `;var ur=class extends F{constructor(e){super();l(this,"frameRate");l(this,"_canvas");l(this,"log");l(this,"hasAlpha",!1);l(this,"name");l(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new Ni(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new rs(this,e)}createVideoImageSource(e,t){return new Co(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Ro(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};l(ur,"_ids",0);var r_={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Oe=class extends ur{constructor(){super(...arguments);l(this,"defaultProgam");l(this,"defaultVShader");l(this,"defaultFShader");l(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ur._ids++}`),this.ctx=this._canvas.getContext("webgl2",r_),!this.ctx)throw new y({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,t_),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,i_),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let t="";return e&&(t=e.message,this.error=e,N.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,o=r.createShader(e);return r.shaderSource(o,t),r.compileShader(o),o}createProgram(e,t){let r=this.ctx,o=r.createProgram();return r.attachShader(o,e),r.attachShader(o,t),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(o)),o}};b([he(F.INIT,"created",{sync:!0,fail(s){N.addFailedEvent({key:512700,error:s.cause})},success(){N.addSuccessEvent({key:512700})}})],Oe.prototype,"create",1),b([he("created",F.INIT,{ignoreError:!0,sync:!0,success(s){s&&this.emit("unavailable",s),this.removeAllListeners()}})],Oe.prototype,"destroy",1);var ze=class extends ur{constructor(){super(...arguments);l(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ur._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new y({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let t="";e&&(t=e.message,this.error=e,N.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),N.addSuccessEvent({key:512703})}};b([he(F.INIT,"created",{sync:!0,fail(s){N.addFailedEvent({key:512701,error:s.cause})},success(){N.addSuccessEvent({key:512701})}})],ze.prototype,"create",1),b([he("created",F.INIT,{ignoreError:!0,sync:!0})],ze.prototype,"destroy",1);function s_(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var ei=class extends lt{constructor(e,t,r=4){super(e,t,r);l(this,"mediaType",4);l(this,"source");l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager}play(e,t){return(ue(t==null?void 0:t.canvasRender)?t.canvasRender:Ke===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), ${!!this.player.element}`),!this.player.element)return;let e=new ze({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=e.createVideoPlayerSource(this.player);this.source=t;let r=new Ao(e,{name:"remotePlayer",logger:this.log});t.connect(r),this.player.setCanvas(e._canvas),cr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=s_(t);if(!K(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){return this.manager?this.manager.decodePipeline.reduce((t,r)=>r?r({frame:t,track:this}):t,e):e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get hasFlag(){return this.user.muteState.hasVideo&&!this.user.muteState.videoMuted}isFlagChanged(e){let t=e.hasVideo&&!e.videoMuted;return this.hasFlag!==t}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}},ss=class extends ei{constructor(e,t){super(e,t,2);l(this,"mediaType",2);l(this,"objectFit","contain")}get hasFlag(){return this.user.muteState.hasAuxiliary}isFlagChanged(e){let t=e.hasAuxiliary;return this.hasFlag!==t}};var os=new Map;T.on(g.JOIN_SUCCESS,({room:s})=>{de(s.userId,{eventId:32788})});T.on(g.LEAVE_START,({room:s})=>{de(s.userId,{eventId:32789})});T.on(g.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),de(s.room.userId,{eventId:i})}});T.on(g.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),de(s.room.userId,{eventId:i})}});T.on(g.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?de(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):de(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});T.on(g.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?de(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):de(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});T.on(g.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{!s.room||(s.mediaType===1&&de(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&de(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&de(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});T.on(g.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{!s.room||(s.mediaType===1&&de(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&de(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&de(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});T.on(g.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&de(s.room.userId,{eventId:s.kind===m.VIDEO?32780:32781})});T.on(g.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&de(s.room.userId,{eventId:s.kind===m.VIDEO?32782:32783})});T.on(g.SIGNAL_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&de(s.userId,{eventId:t})});T.on(g.PEER_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,o;switch(e){case"CONNECTED":i==="RECONNECTING"?o=r?32801:32798:o=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(o=r?32802:32799);break;case"RECONNECTING":o=r?32800:32797;break}o&&de(s.userId,{eventId:o,remoteUserId:t})});T.on(g.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({userId:s,remoteUserId:i,codec:e,isHWCodec:t,prevImplementation:r,streamType:o})=>{let n=t?1:0;r||(n=t?3:2);let a=e==="h264"?0:2,c={eventId:4004,param1:n,param2:a,streamType:o||2};i&&(c.remoteUserId=i,c.eventId=4005),de(s,c),N.addEnum({key:i?514701:513701,value:n}),N.addEnum({key:i?514700:513700,value:a})});T.on(g.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===m.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),de(s.userId,e)}});function de(s,i){let e=L(v({},i),{timestamp:Rs()});os.has(s)?os.get(s).push(e):os.set(s,[e])}function oh(s){if(os.has(s)){let i=os.get(s).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return os.delete(s),i}return[]}var nh=Se(De(),1);var da=class extends nh.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;l(this,"userMap",new Map);l(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:o,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let o=`peer leave [${e}]`;E(t)||(o+=`:${Ya[t]}`),this._log.info(o);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){!this.remotePublishedUserMap.has(e)||this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var h;let r=t[this.key];if(r===this.mySelfId)return;let{flag:o,userId:n,tinyId:a}=t,c=Bi(o,n),d=(h=this.remotePublishedUserMap.get(r))==null?void 0:h.muteState;if(d){let u=this.remotePublishedUserMap.get(r);u&&u.flag!==o&&(u.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(u.muteState)}`),this.emit("6",{prevMuteState:d,muteState:c,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(c)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:Bi(0,n),muteState:c,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Hd({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return G((t,r)=>{let o=new WeakMap;return T.on(g.ROOM_DESTROY,({room:n})=>o.delete(n)),function(...n){let a=o.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=s||a.totalSizeInSecond>i))throw new y({code:S.INVALID_OPERATION,message:w({key:x.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=s,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:s,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var ah=!0,ch=function(){var s;ah&&(ah=!1,R.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${kt}/en/index.html`),console.info(`* Changelog: ${kt}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),R.info("TRTC Web SDK Version:",Ie),R.info("UA:",navigator.userAgent),R.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),Ws().then(i=>{i&&R.info(gt)}))};var ut={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear"};var U={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},vt=(A=>(A[A.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",A[A.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",A[A.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",A[A.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",A[A.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",A[A.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",A[A.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",A[A.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",A[A.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",A[A.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",A[A.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",A[A.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",A[A.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",A[A.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",A[A.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",A[A.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",A[A.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",A[A.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",A[A.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",A[A.INVALID_OPERATION=5100]="INVALID_OPERATION",A[A.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",A[A.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",A[A.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",A[A.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",A[A.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",A[A.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",A[A.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",A[A.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",A[A.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",A[A.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",A[A.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",A[A.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",A[A.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",A[A.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",A[A.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",A[A.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",A[A.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",A[A.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",A[A.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",A[A.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",A[A.DEVICE_ERROR=5300]="DEVICE_ERROR",A[A.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",A[A.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",A[A.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",A[A.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",A[A.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",A[A.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",A[A.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",A[A.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",A[A.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",A[A.SERVER_ERROR=5400]="SERVER_ERROR",A[A.NEED_TO_BUY=5401]="NEED_TO_BUY",A[A.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",A[A.OPERATION_FAILED=5500]="OPERATION_FAILED",A[A.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",A[A.REJOIN_FAILED=5502]="REJOIN_FAILED",A[A.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",A[A.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",A[A.OPERATION_ABORT=5998]="OPERATION_ABORT",A[A.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",A))(vt||{});function lh({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=vt[s];try{r=dh[o]}catch(n){r=dh.UNKNOWN_ERROR}return te(r)?t=r(i):z(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var dh=L(v({},be),{INVALID_PARAMETER({fnName:s}){return`the parameters of the '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:s,rule:i,fnName:e}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:s,rule:i,value:e}){return`the min value of ${s||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:s,rule:i,value:e}){return`the max value of ${s||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:s,fnName:i}){return`'${s}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:s,fnName:i,type:e}){return`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:s}){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:s}){return`'${s}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:s}){return`'${s}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:s}){return`'${s}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:s})=>`'streamType' is required when 'userId' is not '*', calling ${s}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:s}){return`the API '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:s}){return`cannot ${s} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:s}){return`you are already ${s}(), cannot repeated call '${s}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:s}){return`cannot call '${s}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:s}){return`cannot call '${s}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:s})=>`the buffer size of paramerter '${s}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>`role: '${"audience"}' cannot call this api.`,INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:s})=>`you need to call ${s}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:s}){return`the current browser does not support the capability of the function '${s}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:s}){return`cannot call ${s} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:s,error:i}){return`'${s}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${s}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:s,deviceType:i=hr(s),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:s}){return`camera recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},MICROPHONE_RECOVER_FAILED({error:s}){return`microphone recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},OPERATION_FAILED({fnName:s,error:i}){return`'${s}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:s}){return`an error was caught on trtc.on('${s}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:s,error:i}){return`video context error ${s} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:s,error:i}){return`'${s}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:s,url:i}){return`You need to buy packages for ${s}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:s})=>`your TRTC account run out of credit, please recharge.${s.sdkAppId?` SDKAppId: ${s.sdkAppId}`:""}`,OPERATION_ABORT({fnName:s}){return`'${s}' abort`},UNKNOWN_ERROR({fnName:s,error:i}){return`'${s}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function hr(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var mr=class extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var d;let c;r?c=r:c=lh({code:e===U.SERVER_ERROR?e:t||e,params:v({fnName:n,error:a},o)});super(c);l(this,"name","RtcError");l(this,"code");l(this,"extraCode");l(this,"functionName");l(this,"message");l(this,"handler");l(this,"originError");this.name=vt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=c,this.extraCode===5302&&((d=this.originError)==null?void 0:d.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},p=document.createElement("a");ci?p.href=`ms-settings:privacy-${u[this.functionName]}`:St&&(p.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),p.href.length>0&&p.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof y){let{stack:n}=e,a={code:U.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case S.INVALID_PARAMETER:a.code=U.INVALID_PARAMETER,a.message=e.message;break;case S.INVALID_OPERATION:a.code=U.INVALID_OPERATION;break;case S.NOT_SUPPORTED:case S.NOT_SUPPORTED_H264:a.code=U.ENV_NOT_SUPPORTED,e.getCode()===S.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(be.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case S.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case S.SERVER_TIMEOUT:case S.SWITCH_ROLE_FAILED:a.code=U.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case S.API_CALL_ABORTED:a.code=U.OPERATION_ABORT;break;case S.DEVICE_NOT_FOUND:case S.DEVICE_AUTO_RECOVER_FAILED:case S.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=o_(e.name));break;case S.UNKNOWN:break;default:a.code=U.OPERATION_FAILED}o=new mr(a),n&&(o.stack+=n.substr(n.indexOf(`
51
- `)))}else{if(e instanceof mr)return e;o=new mr({code:U.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function o_(s){let i;switch(s){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var P=mr;var uh={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},hh={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},ns={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(z(s)&&!document.getElementById(s))throw new P({code:U.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},mh={name:"userId",required:!0,type:"string"},ph={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[ut.AUDIO_PROFILE_STANDARD,ut.AUDIO_PROFILE_STANDARD_STEREO,ut.AUDIO_PROFILE_HIGH,ut.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function No(s,i){if(!s)throw new P({code:U.INVALID_OPERATION,extraCode:5101,fnName:i})}function fh(s,i,e){if(!s)throw new P({code:U.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var mN={type:"number",notLessThanZero:!0},n_={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(s,i,e){if(this._room.isJoined)throw new P({code:U.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(z(s.roomId))throw new P({code:U.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new P({code:U.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:i}})}else if(s.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(s.strRoomId))throw new P({code:U.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new P({code:U.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:ns,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:uh},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Ei())throw new P({code:U.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:L(v({},ns),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:uh}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:ph},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Ei())throw new P({code:U.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:ph}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:ns,publish:{type:"boolean"},option:hh},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)&&Ei())throw new P({code:U.ENV_NOT_SUPPORTED,extraCode:5201});if(!eo())throw new P({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:ns,publish:{type:"boolean"},option:hh}},muteRemoteAudio:[mh,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[mh,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:ns,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){No(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(fh(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new P({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:L(v({},ns),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){No(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(fh(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new P({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(s,i,e){if(s.userId!=="*"&&E(s.streamType))throw new P({code:U.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){No(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(s,i,e,t){if(!so)throw new P({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new P({code:U.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new P({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new P({code:U.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});No(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(s,i,e){if(!s&&!this._room.isMainStreamPublished||s&&!this._room.isAuxStreamPublished)throw new P({code:U.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(s,i,e,t){if(s.byteLength>1e3)throw new P({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new P({code:U.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(No(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new P({code:U.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},Ne={TRTC:n_};var we=class extends Error{};function a_(s,i){let e=Hr(s);for(let t=0;t<i.length;t++)fi(e[t],i[t]);return e}function c_(s){this._resolve=Promise.resolve(s)}function d_(s){this._reject=Promise.reject(s)}var pr=class{constructor(i,e){this.instance=i;this.group=e;this.started=!1;this.ops=[];this.startSame=()=>!0;this.mergeUpdate=a_;let t=pr.instances.get(i);t?t.set(e,this):pr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=pr.instances.get(i);return t&&t.get(e)||new pr(i,e)}static gets(i,e){let t=pr.instances.get(i),r=[];return t&&t.forEach((o,n)=>{e.test(n)&&r.push(o)}),r}action(i,e,t){let r=a=>{var c;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(c=this.currentOp)==null||c.action(),a},o=a=>{var c,d;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new we("start failed")),(d=this.currentOp)==null||d.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:c_,reject:d_};try{switch(this.state){case 1:if(i===0)throw new we("already started");break;case 4:if(i===2)throw new we("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,o)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new we("already start");break;case 3:switch(i.type){case 2:throw new we("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new we("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new we("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new we("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new we("start not allowed after update");case 0:throw new we("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new we("keep start")),new we("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}},ti=pr;ti.instances=new WeakMap;var ha=new WeakMap,ma=(s,i)=>{if(i instanceof we){let{stack:e}=i;i=new P({code:U.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
52
- `)))}throw i};function ji(s,i){return G((e,t)=>function(...r){let o=ti.get(this,typeof s=="string"?s:s.call(this,...r));return o?(i&&(o.startSame=i.bind(this)),o.action(0,e.bind(this),r).catch(ma.bind(null,t))):e.apply(this,r)})}function fr(s,i){let{merge:e,debounce:t}=i||{};return G((r,o)=>function(...n){let a=ti.get(this,typeof s=="string"?s:s.call(this,...n));if(!a)return r.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,n)){let{delay:c,getKey:d}=t;return new Promise((h,u)=>{var I,C;let p=(I=ha.get(this))==null?void 0:I.get(d(...n));if(p){let{timeoutId:D,resolve:B}=p;clearTimeout(D),B()}let _=setTimeout(()=>{if(a.state===3||a.state===4)return h();a.action(2,r.bind(this),n).catch(ma.bind(null,o)).then(h,u)},c);ha.has(this)?(C=ha.get(this))==null||C.set(d(...n),{timeoutId:_,resolve:h}):ha.set(this,new Map([[d(...n),{timeoutId:_,resolve:h}]]))})}return a.action(2,r.bind(this),n).catch(ma.bind(null,o))})}function qi(s){return G((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(ti.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=ti.get(this,r);return o?o.action(3,i.bind(this),t).catch(ma.bind(null,e)):i.apply(this,t)})}var M={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message"},_h=new Set([M.ERROR,M.AUTOPLAY_FAILED,M.KICKED_OUT,M.REMOTE_USER_ENTER,M.REMOTE_USER_EXIT,M.REMOTE_AUDIO_AVAILABLE,M.REMOTE_AUDIO_UNAVAILABLE,M.REMOTE_VIDEO_AVAILABLE,M.REMOTE_VIDEO_UNAVAILABLE,M.CONNECTION_STATE_CHANGED,M.PUBLISH_STATE_CHANGED,M.SCREEN_SHARE_STOPPED,M.DEVICE_CHANGED]);function vo(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function _r(s){return s===ut.QOS_PREFERENCE_CLEAR?"detail":s===ut.QOS_PREFERENCE_SMOOTH?"motion":""}var l_=s=>s.startsWith("data:application/octet-stream;base64,"),u_=s=>s.startsWith("file://"),pa=class{constructor(){l(this,"_log");this._log=R.createLogger({id:"fd"})}download(i,e){return f(this,null,function*(){let{type:t="blob"}=e||{};try{let r=k(),o;if(te(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=k()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),N.addSuccessEvent({key:522700,cost:k()-r}),o.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),N.addFailedEvent({key:522700,error:r}),r}})}downloadWithFetch(i,e){return f(this,null,function*(){this._log.info(`download with fetch: ${i}, return type: ${e}`);try{let t=yield fetch(i);if(!t.ok)throw new Error("network response was not ok");let r;return e==="arraybuffer"?r=yield t.arrayBuffer():r=yield t.blob(),{data:r}}catch(t){throw t}})}downloadWithXHR(i,e){return this._log.info(`download with xhr: ${i}, return type: ${e}`),new Promise((t,r)=>{let o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType=e,o.onload=()=>{o.status===200||o.status===0&&o.response?t({data:o.response}):r(new Error("XHR failed"))},o.onerror=r,o.send(null)})}loadWasm(i,e){return f(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=k(),r=null,o=null;if(te(WebAssembly.instantiateStreaming)&&!l_(i)&&!u_(i)&&te(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){o=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){o=n}if(r){let n=k()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),N.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${o}`),N.addFailedEvent({key:522701,error:o}),o})}};b([je({settings:{timeout:0,retries:3},onRetrying(s){this._log.warn(`download retrying: ${s}`)}})],pa.prototype,"download",1);var gh=new pa;function Eh({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,room:i,assetsPath:t,fileDownloader:gh,innerEmitter:T,constants:Ka,environment:Br,utils:Be,eventLogger:Y,log:this.room.getLogger(),loggerManager:R,errorModule:e,kvStatManager:N,rtcDectection:Wt,trtc:this,clearStarted:(r,o)=>{let n=r.getAlias(),a=ti.instances.get(this);if(!!a)if(o){let c=a.get(n+o);if(!c)return;c.started=!1}else a.forEach((c,d)=>{d.startsWith(n)&&(c.started=!1)})},startGetPCM:To,createAudioNode:qc}}var Th=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=w({key:x.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return R.warn(`${o}
50
+ } `;var ws=class extends De{constructor(e){super();this.hasAlpha=!1;this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new io(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Ja(this,e)}createVideoImageSource(e,t){return new su(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new au(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};ws._ids=0;var aI={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},vt=class extends ws{create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ws._ids++}`),this.ctx=this._canvas.getContext("webgl2",aI),!this.ctx)throw new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,oI),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,sI),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let t="";return e&&(t=e.message,this.error=e,Z.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var i;(i=this.ctx)==null||i.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let i=this.ctx,o=i.createShader(e);return i.shaderSource(o,t),i.compileShader(o),o}createProgram(e,t){let i=this.ctx,o=i.createProgram();return i.attachShader(o,e),i.attachShader(o,t),i.linkProgram(o),i.getProgramParameter(o,i.LINK_STATUS)||this.log.error(i.getProgramInfoLog(o)),o}};vt.UNAVAILABLE="unavailable",j([It(De.INIT,"created",{sync:!0,fail(n){Z.addFailedEvent({key:512700,error:n.cause})},success(){Z.addSuccessEvent({key:512700})}})],vt.prototype,"create",1),j([It("created",De.INIT,{ignoreError:!0,sync:!0,success(n){n&&this.emit(vt.UNAVAILABLE,n),this.removeAllListeners()}})],vt.prototype,"destroy",1);var hr=class extends ws{create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${ws._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let t="";e&&(t=e.message,this.error=e,Z.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Z.addSuccessEvent({key:512703})}};j([It(De.INIT,"created",{sync:!0,fail(n){Z.addFailedEvent({key:512701,error:n.cause})},success(){Z.addSuccessEvent({key:512701})}})],hr.prototype,"create",1),j([It("created",De.INIT,{ignoreError:!0,sync:!0})],hr.prototype,"destroy",1);function cI(n){return[15,30,45,60].reduce((e,t)=>Math.abs(t-n)<Math.abs(e-n)?t:e)}var di=class extends ci{constructor(e,t,i=4){super(e,t,i);E(this,"mediaType",4);E(this,"source");E(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager}play(e,t){return N(this,null,function*(){return(St(t==null?void 0:t.canvasRender)?t.canvasRender:Gr===17)&&!this.source&&this.useCanvasPlayer(),Mt(di.prototype,this,"play").call(this,e,t).then(()=>{this.player.calculateStat()})})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new hr({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new Ds(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Cs()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,i=cI(t);if(!qe(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(i===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${i} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${i}, current: ${e.frameRate}`),e.frameRate=i}get decodeFPS(){var a;let{msg_video_status:e}=((a=this.room.heartbeatReport)==null?void 0:a.msg_down_stream_info.find(d=>d.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let i=e.find(d=>d.uint32_video_stream_type===t);return(i==null?void 0:i.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(!!t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get hasFlag(){return this.user.muteState.hasVideo&&!this.user.muteState.videoMuted}isFlagChanged(e){let t=e.hasVideo&&!e.videoMuted;return this.hasFlag!==t}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}},qa=class extends di{constructor(e,t){super(e,t,2);E(this,"mediaType",2);E(this,"objectFit","contain")}get hasFlag(){return this.user.muteState.hasAuxiliary}isFlagChanged(e){let t=e.hasAuxiliary;return this.hasFlag!==t}};var Xa=new Map;B.on(U.JOIN_SUCCESS,({room:n})=>{ft(n.userId,{eventId:32788})});B.on(U.LEAVE_START,({room:n})=>{ft(n.userId,{eventId:32789})});B.on(U.LOCAL_TRACK_PUBLISHED,({track:n})=>{if(n.room){let r=32769;n.mediaType===4?r=32768:n.mediaType===2&&(r=32805),ft(n.room.userId,{eventId:r})}});B.on(U.LOCAL_TRACK_UNPUBLISHED,({track:n})=>{if(n.room){let r=32771;n.mediaType===4?r=32770:n.mediaType===2&&(r=32806),ft(n.room.userId,{eventId:r})}});B.on(U.TRACK_MUTED,({track:n})=>{n.room&&(n.kind===b.AUDIO?ft(n.room.userId,{eventId:n.isRemote?32785:32772,remoteUserId:n.isRemote?n.userId:void 0}):ft(n.room.userId,{eventId:n.isRemote?32784:32773,remoteUserId:n.isRemote?n.userId:void 0}))});B.on(U.TRACK_UNMUTED,({track:n})=>{n.room&&(n.kind===b.AUDIO?ft(n.room.userId,{eventId:n.isRemote?32787:32774,remoteUserId:n.isRemote?n.userId:void 0}):ft(n.room.userId,{eventId:n.isRemote?32786:32775,remoteUserId:n.isRemote?n.userId:void 0}))});B.on(U.REMOTE_TRACK_SUBSCRIBED,({track:n})=>{!n.room||(n.mediaType===1&&ft(n.room.userId,{eventId:32777,remoteUserId:n.userId}),n.mediaType===4&&ft(n.room.userId,{eventId:32776,remoteUserId:n.userId}),n.mediaType===8&&ft(n.room.userId,{eventId:32803,remoteUserId:n.userId}))});B.on(U.REMOTE_TRACK_UNSUBSCRIBED,({track:n})=>{!n.room||(n.mediaType===1&&ft(n.room.userId,{eventId:32779,remoteUserId:n.userId}),n.mediaType===4&&ft(n.room.userId,{eventId:32778,remoteUserId:n.userId}),n.mediaType===8&&ft(n.room.userId,{eventId:32804,remoteUserId:n.userId}))});B.on(U.SWITCH_DEVICE_SUCCESS,({track:n})=>{n.room&&ft(n.room.userId,{eventId:n.kind===b.VIDEO?32780:32781})});B.on(U.LOCAL_TRACK_REPLACED,({track:n})=>{n.room&&ft(n.room.userId,{eventId:n.kind===b.VIDEO?32782:32783})});B.on(U.SIGNAL_CONNECTION_STATE_CHANGED,({room:n,prevState:r,state:e})=>{let t;switch(e){case"CONNECTED":r==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":r==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&ft(n.userId,{eventId:t})});B.on(U.PEER_CONNECTION_STATE_CHANGED,({room:n,prevState:r,state:e,remoteUserId:t})=>{let i=!!t,o;switch(e){case"CONNECTED":r==="RECONNECTING"?o=i?32801:32798:o=i?32793:32792;break;case"DISCONNECTED":r==="RECONNECTING"&&(o=i?32802:32799);break;case"RECONNECTING":o=i?32800:32797;break}o&&ft(n.userId,{eventId:o,remoteUserId:t})});B.on(U.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:n,userId:r,remoteUserId:e,codec:t,isHWCodec:i,prevImplementation:o,streamType:a})=>{let d=i?1:0;o||(d=i?3:2);let p=t==="h264"?0:2,_={eventId:4004,param1:d,param2:p,streamType:a||2};e&&(_.remoteUserId=e,_.eventId=4005),ft(r,_),Z.addEnum({key:e?514701:513701,value:d}),Z.addEnum({key:e?514700:513700,value:p})});B.on(U.LOCAL_TRACK_RECAPTURE,({track:n,error:r})=>{if(n.userId){let e={eventId:2003,param1:0};n.kind===b.AUDIO?(e.streamType=1,r&&(e.param1=2)):(e.streamType=n.streamType==="auxiliary"?7:2,r&&(e.param1=8)),ft(n.userId,e)}});function ft(n,r){let e=_e(oe({},r),{timestamp:hd()});Xa.has(n)?Xa.get(n).push(e):Xa.set(n,[e])}function lg(n){if(Xa.has(n)){let r=Xa.get(n).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return Xa.delete(n),r}return[]}var hg=$t(nr(),1);var Zl=class extends hg.EventEmitter{constructor(e,t,i="userId"){super();this.mySelfId=e;this._log=t;this.key=i;E(this,"userMap",new Map);E(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:i,tinyId:o,role:a}=e;if(this.userMap.has(t))return;let d={userId:i,tinyId:o,role:a===20?"anchor":"audience"};this.userMap.set(t,d),this.emit("1",d)}deleteUser(e,t){let i=this.userMap.get(e);if(!i)return;let o=`peer leave [${e}]`;V(t)||(o+=`:${Qh[t]}`),this._log.info(o);let a=this.remotePublishedUserMap.get(e);if(a){let d=a.muteState;a.flag=0,this.emit("5",a.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:d,muteState:a.muteState,flag:0})}this.userMap.delete(e),this.emit("2",i.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(i=>i[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){!this.remotePublishedUserMap.has(e)||this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let i=t[this.key];if(e.findIndex(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${i}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(i),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var S;let i=t[this.key];if(i===this.mySelfId)return;let{flag:o,userId:a,tinyId:d}=t,p=Co(o,a),_=(S=this.remotePublishedUserMap.get(i))==null?void 0:S.muteState;if(_){let v=this.remotePublishedUserMap.get(i);v&&v.flag!==o&&(v.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(v.muteState)}`),this.emit("6",{prevMuteState:_,muteState:p,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(p)}`),this.addUser({userId:a,tinyId:d,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:Co(0,a),muteState:p,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Wp({timesInSecond:n,maxSizeInSecond:r,getSize:e}){return ke((t,i)=>{let o=new WeakMap;return B.on(U.ROOM_DESTROY,({room:a})=>o.delete(a)),function(...a){let d=o.get(this);if(d||(d={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.set(this,d)),d.timestamp===0?d.timestamp=Date.now():Date.now()-d.timestamp>1e3&&(d.timestamp=Date.now(),d.callCountInSecond=0,d.totalSizeInSecond=0),e&&(d.totalSizeInSecond+=e(...a)),d.timestamp!==0&&Date.now()-d.timestamp<1e3&&(d.callCountInSecond>=n||d.totalSizeInSecond>r))throw new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.CALL_FREQUENCY_LIMIT,data:{isTimes:d.callCountInSecond>=n,isSize:d.totalSizeInSecond>r,name:i,timesInSecond:n,maxSizeInSecond:r}})});d.callCountInSecond++,t.call(this,...a)}})}var mg=!0,pg=function(){var n;mg&&(mg=!1,J.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${zi}/en/index.html`),console.info(`* Changelog: ${zi}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),J.info("TRTC Web SDK Version:",Bt),J.info("UA:",navigator.userAgent),J.info(`URL: ${location.href}${((n=self.frameElement)==null?void 0:n.tagName)==="IFRAME"?" in iframe":""}`),Od().then(r=>{r&&J.info(Ri)}))};var ui={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear"};var Se={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},li=(G=>(G[G.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",G[G.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",G[G.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",G[G.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",G[G.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",G[G.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",G[G.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",G[G.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",G[G.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",G[G.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",G[G.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",G[G.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",G[G.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",G[G.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",G[G.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",G[G.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",G[G.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",G[G.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",G[G.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",G[G.INVALID_OPERATION=5100]="INVALID_OPERATION",G[G.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",G[G.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",G[G.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",G[G.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",G[G.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",G[G.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",G[G.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",G[G.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",G[G.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",G[G.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",G[G.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",G[G.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",G[G.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",G[G.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",G[G.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",G[G.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",G[G.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",G[G.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",G[G.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",G[G.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",G[G.DEVICE_ERROR=5300]="DEVICE_ERROR",G[G.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",G[G.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",G[G.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",G[G.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",G[G.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",G[G.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",G[G.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",G[G.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",G[G.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",G[G.SERVER_ERROR=5400]="SERVER_ERROR",G[G.NEED_TO_BUY=5401]="NEED_TO_BUY",G[G.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",G[G.OPERATION_FAILED=5500]="OPERATION_FAILED",G[G.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",G[G.REJOIN_FAILED=5502]="REJOIN_FAILED",G[G.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",G[G.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",G[G.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",G[G.OPERATION_ABORT=5998]="OPERATION_ABORT",G[G.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",G))(li||{});function _g({code:n,params:r,enableDocLink:e=!1}){let t="",i,o=li[n];try{i=fg[o]}catch(a){i=fg.UNKNOWN_ERROR}return Ze(i)?t=i(r):Je(i)&&(t=i),r.fnName&&!t.includes(r.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${r.fnName}()`),e&&(t+=" doc:"),t}var fg=_e(oe({},Yt),{INVALID_PARAMETER({fnName:n}){return`the parameters of the '${n}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:n,rule:r,fnName:e,value:t}){let i=`${n||r.name}`,o="";return Array.isArray(r.type)?o=r.type.join("|"):o=r.type,`'${i}' must be type of ${o} when calling ${e}(), received type: ${Ht(t)}.`},INVALID_PARAMETER_EMPTY({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:n,rule:r,fnName:e,value:t}){let i=`${n||r.name}`,o=`${r.instanceOf.name||r.instanceOf}`;return`'${i}' must be instanceof ${o} when calling ${e}(), received type: ${Ht(t)}.`},INVALID_PARAMETER_RANGE({key:n,rule:r,fnName:e,value:t}){return`'${n||r.name}' must be one of ${r.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:n,rule:r,fnName:e}){return`'${n||r.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:n,rule:r,value:e}){return`the min value of ${n||r.name} is ${r.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:n,rule:r,value:e}){return`the max value of ${n||r.name} is ${r.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:n,fnName:r}){return`'${n}' is not found in the document object when calling ${r}().`},INVALID_ELEMENT_ID_TYPE({key:n,fnName:r,type:e}){return`the element corresponding to '${n}' must be instanceof HTMLElement when calling ${r}(), received: ${e}.`},INVALID_STREAM_ID({key:n}){return`'${n}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:n}){return`'${n}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:n}){return`'${n}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:n}){return`'${n}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:n})=>`'streamType' is required when 'userId' is not '*', calling ${n}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:n}){return`the API '${n}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:n}){return`cannot ${n} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:n,value:r}){return`cannot ${n} because remote user(userId: ${r.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:n,value:r}){return`cannot ${n} because remote user(userId: ${r.userId}) does not publishing ${r.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:n}){return`you are already ${n}(), cannot repeated call '${n}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:n}){return`cannot call '${n}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:n}){return`cannot call '${n}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:n})=>`the buffer size of paramerter '${n}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>`role: '${"audience"}' cannot call this api.`,INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:n})=>`you need to call ${n}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:n}){return`the current browser does not support the capability of the function '${n}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:n}){return`cannot call ${n} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:n,error:r}){return`'${n}' got device exception${r?`, error: ${r.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`NotFoundError, no ${r} detected, please check your device and the configuration on '${n}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`NotAllowedError, you have disabled ${r} access, please allow the current application to use the ${r}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`NotReadableError, the ${r} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${r}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${r}, and it is recommended to turn on the ${r} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:n,deviceType:r=ks(n),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:n}){return`camera recover capture failed ${(n==null?void 0:n.name)||""}: ${(n==null?void 0:n.originMessage)||(n==null?void 0:n.message)}`},MICROPHONE_RECOVER_FAILED({error:n}){return`microphone recover capture failed ${(n==null?void 0:n.name)||""}: ${(n==null?void 0:n.originMessage)||(n==null?void 0:n.message)}`},OPERATION_FAILED({fnName:n,error:r}){return`'${n}' failed, reason: ${r==null?void 0:r.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:n}){return`an error was caught on trtc.on('${n}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:n,error:r}){return`video context error ${n} ${(r==null?void 0:r.name)||""} ${(r==null?void 0:r.message)||""}`},SERVER_ERROR({fnName:n,error:r}){return`'${n}' got server error: ${r==null?void 0:r.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:n,url:r}){return`You need to buy packages for ${n}. Refer to: ${r}`},ACCOUNT_NO_MONEY:({fnParams:n})=>`your TRTC account run out of credit, please recharge.${n.sdkAppId?` SDKAppId: ${n.sdkAppId}`:""}`,OPERATION_ABORT({fnName:n}){return`'${n}' abort`},UNKNOWN_ERROR({fnName:n,error:r}){return`'${n}' throw unknown exception${r?`, error: ${r.toString()}.`:"."}`}});function ks(n){if(!n)return"camera";let r=n.toLowerCase();return r.includes("screen")?"screen share":r.includes("audio")?"microphone":"camera"}var Os=class extends Error{constructor({code:e,extraCode:t,message:i="",messageParams:o,fnName:a="",originError:d}){var _;let p;i?p=i:p=_g({code:e===Se.SERVER_ERROR?e:t||e,params:oe({fnName:a,error:d},o)});super(p);E(this,"name","RtcError");E(this,"code");E(this,"extraCode");E(this,"functionName");E(this,"message");E(this,"handler");E(this,"originError");this.name=li[e],this.code=e,this.extraCode=t,this.functionName=a,this.originError=d,this.message=p,this.extraCode===5302&&((_=this.originError)==null?void 0:_.message.includes("system"))&&(this.handler=()=>{let S={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},v={startLocalVideo:"webcam",startLocalAudio:"microphone"},A=document.createElement("a");$n?A.href=`ms-settings:privacy-${v[this.functionName]}`:Di&&(A.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${S[this.functionName]}`),A.href.length>0&&A.click()})}static convertFrom(e,t,i){let o=e;if(e instanceof Y){let{stack:a}=e,d={code:Se.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case H.INVALID_PARAMETER:d.code=Se.INVALID_PARAMETER,d.message=e.message;break;case H.INVALID_OPERATION:d.code=Se.INVALID_OPERATION;break;case H.NOT_SUPPORTED:case H.NOT_SUPPORTED_H264:d.code=Se.ENV_NOT_SUPPORTED,e.getCode()===H.NOT_SUPPORTED_H264&&(d.extraCode=e.message.includes(Yt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case H.JOIN_ROOM_FAILED:d.messageParams={fnParams:i};case H.SERVER_TIMEOUT:case H.SWITCH_ROLE_FAILED:d.code=Se.SERVER_ERROR,d.extraCode=e.getExtraCode();break;case H.API_CALL_ABORTED:d.code=Se.OPERATION_ABORT;break;case H.DEVICE_NOT_FOUND:case H.DEVICE_AUTO_RECOVER_FAILED:case H.INITIALIZE_FAILED:d.code=5300,e.name&&(d.extraCode=dI(e.name));break;case H.UNKNOWN:break;default:d.code=Se.OPERATION_FAILED}o=new Os(d),a&&(o.stack+=a.substr(a.indexOf(`
51
+ `)))}else{if(e instanceof Os)return e;o=new Os({code:Se.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function dI(n){let r;switch(n){case"NotFoundError":r=5301;break;case"NotAllowedError":r=5302;break;case"NotReadableError":r=5303;break;case"OverconstrainedError":r=5304;break;case"InvalidStateError":r=5305;break;case"SecurityError":r=5306;break;case"AbortError":r=5307;break;default:r=5300}return r}var fe=Os;var gg={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},Eg={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Qa={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(n,r,e){if(Je(n)&&!document.getElementById(n))throw new fe({code:Se.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:r}})}},Tg={name:"userId",required:!0,type:"string"},Sg={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[ui.AUDIO_PROFILE_STANDARD,ui.AUDIO_PROFILE_STANDARD_STEREO,ui.AUDIO_PROFILE_HIGH,ui.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function uu(n,r){if(!n)throw new fe({code:Se.INVALID_OPERATION,extraCode:5101,fnName:r})}function Ig(n,r,e){if(!n)throw new fe({code:Se.INVALID_OPERATION,extraCode:5102,fnName:r,messageParams:{value:e}})}var vk={type:"number",notLessThanZero:!0},uI={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(n,r,e){if(this._room.isJoined)throw new fe({code:Se.INVALID_OPERATION,extraCode:5104,fnName:e});if(n.roomId){if(Je(n.roomId))throw new fe({code:Se.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:r}});if(!(/^[1-9]\d*$/.test(String(n.roomId))&&n.roomId<4294967295))throw new fe({code:Se.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:r}})}else if(n.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(n.strRoomId))throw new fe({code:Se.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:r}})}else throw new fe({code:Se.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Qa,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:gg},validate(n){var r;if(!((r=n==null?void 0:n.option)!=null&&r.videoTrack)&&Xn())throw new fe({code:Se.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:_e(oe({},Qa),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:gg}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Sg},validate(n){var r;if(!((r=n==null?void 0:n.option)!=null&&r.audioTrack)&&Xn())throw new fe({code:Se.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Sg}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Qa,publish:{type:"boolean"},option:Eg},validate(n,r,e,t,i){var o;if(!((o=n==null?void 0:n.option)!=null&&o.videoTrack)&&Xn())throw new fe({code:Se.ENV_NOT_SUPPORTED,extraCode:5201});if(!Bd())throw new fe({code:Se.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Qa,publish:{type:"boolean"},option:Eg}},muteRemoteAudio:[Tg,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[Tg,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Qa,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(n,r,e){uu(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(n.userId);if(Ig(!!t,e,n),t&&(n.streamType==="main"&&!t.muteState.videoAvailable||n.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new fe({code:Se.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:n}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:_e(oe({},Qa),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(n,r,e){uu(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(n.userId);if(Ig(!!t,e,n),t&&(n.streamType==="main"&&!t.muteState.videoAvailable||n.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new fe({code:Se.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:n}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(n,r,e){if(n.userId!=="*"&&V(n.streamType))throw new fe({code:Se.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(n,r,e){uu(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(n,r,e,t){if(!jd)throw new fe({code:Se.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new fe({code:Se.INVALID_OPERATION,fnName:e,extraCode:5108});if(n.byteLength>1e3)throw new fe({code:Se.INVALID_PARAMETER,extraCode:5018,fnName:e});if(n.byteLength===0)throw new fe({code:Se.INVALID_PARAMETER,extraCode:5017,messageParams:{key:r},fnName:e});uu(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(n,r,e){if(!n&&!this._room.isMainStreamPublished||n&&!this._room.isAuxStreamPublished)throw new fe({code:Se.INVALID_OPERATION,extraCode:5109,messageParams:{key:r},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(n,r,e,t){if(n.byteLength>1e3)throw new fe({code:Se.INVALID_PARAMETER,extraCode:5018,fnName:e});if(n.byteLength===0)throw new fe({code:Se.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:r}})}}},validate(n,r,e){if(uu(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new fe({code:Se.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:r}})}}},Kt={TRTC:uI};var pr=class extends Error{};function lI(n,r){let e=ka(n);for(let t=0;t<r.length;t++)zn(e[t],r[t]);return e}function hI(n){this._resolve=Promise.resolve(n)}function mI(n){this._reject=Promise.reject(n)}var Ps=class{constructor(r,e){this.instance=r;this.group=e;this.started=!1;this.ops=[];this.startSame=()=>!0;this.mergeUpdate=lI;let t=Ps.instances.get(r);t?t.set(e,this):Ps.instances.set(r,new Map([[e,this]]))}static get(r,e){if(!e)return;let t=Ps.instances.get(r);return t&&t.get(e)||new Ps(r,e)}static gets(r,e){let t=Ps.instances.get(r),i=[];return t&&t.forEach((o,a)=>{e.test(a)&&i.push(o)}),i}action(r,e,t){let i=d=>{var p;return r===0?this.started=!0:r===3&&(this.started=!1),this.ops.shift(),(p=this.currentOp)==null||p.action(),d},o=d=>{var p,_;throw this.ops.shift(),r===0&&((p=this.currentOp)==null?void 0:p.type)===2&&this.ops.shift().reject(new pr("start failed")),(_=this.currentOp)==null||_.action(),d},a={type:r,action:()=>e(...a.args).then(i,o),args:t,resolve:hI,reject:mI};try{switch(this.state){case 1:if(r===0)throw new pr("already started");break;case 4:if(r===2)throw new pr("not started");break;default:return this.cacheOp(a)}}catch(d){return Promise.reject(d)}return this.ops.push(a),a.promise=e(...a.args).then(i,o)}cacheOp(r){if(this.ops.length===1)switch(this.state){case 0:case 2:if(r.type===0)throw new pr("already start");break;case 3:switch(r.type){case 2:throw new pr("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new pr("unknown state")}else switch(r.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new pr("keep stop");if(this.ops.slice(1).forEach(i=>i.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,r.args),this.lastOp.promise;case 3:throw new pr("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new pr("start not allowed after update");case 0:throw new pr("duplicate start");case 3:if(this.startSame(this.currentOp.args,r.args))throw this.ops.pop().reject(new pr("keep start")),new pr("already start")}}r.promise=new Promise((t,i)=>{r._resolve?r._resolve.then(t):r.resolve=t,r._reject?r._reject.catch(i):r.reject=i});let{action:e}=r;return r.action=()=>e().then(r.resolve,r.reject),this.ops.push(r),r.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}},fn=Ps;fn.instances=new WeakMap;var rh=new WeakMap,ih=(n,r)=>{if(r instanceof pr){let{stack:e}=r;r=new fe({code:Se.OPERATION_ABORT,message:`${n} abort: ${r.message}`,fnName:n}),e&&(r.stack+=e.substr(e.indexOf(`
52
+ `)))}throw r};function xo(n,r){return ke((e,t)=>function(...i){let o=fn.get(this,typeof n=="string"?n:n.call(this,...i));return o?(r&&(o.startSame=r.bind(this)),o.action(0,e.bind(this),i).catch(ih.bind(null,t))):e.apply(this,i)})}function xs(n,r){let{merge:e,debounce:t}=r||{};return ke((i,o)=>function(...a){let d=fn.get(this,typeof n=="string"?n:n.call(this,...a));if(!d)return i.apply(this,a);if(e&&(d.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,a)){let{delay:p,getKey:_}=t;return new Promise((S,v)=>{var M,L;let A=(M=rh.get(this))==null?void 0:M.get(_(...a));if(A){let{timeoutId:W,resolve:ie}=A;clearTimeout(W),ie()}let w=setTimeout(()=>{if(d.state===3||d.state===4)return S();d.action(2,i.bind(this),a).catch(ih.bind(null,o)).then(S,v)},p);rh.has(this)?(L=rh.get(this))==null||L.set(_(...a),{timeoutId:w,resolve:S}):rh.set(this,new Map([[_(...a),{timeoutId:w,resolve:S}]]))})}return d.action(2,i.bind(this),a).catch(ih.bind(null,o))})}function Mo(n){return ke((r,e)=>function(...t){let i=typeof n=="function"?n.call(this,...t):n;if(i instanceof RegExp)return Promise.all(fn.gets(this,i).map(a=>a.action(3,()=>Promise.resolve(),t))).then(()=>r.call(this,...t));let o=fn.get(this,i);return o?o.action(3,r.bind(this),t).catch(ih.bind(null,e)):r.apply(this,t)})}var me={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed"},yg=new Set([me.ERROR,me.AUTOPLAY_FAILED,me.KICKED_OUT,me.REMOTE_USER_ENTER,me.REMOTE_USER_EXIT,me.REMOTE_AUDIO_AVAILABLE,me.REMOTE_AUDIO_UNAVAILABLE,me.REMOTE_VIDEO_AVAILABLE,me.REMOTE_VIDEO_UNAVAILABLE,me.CONNECTION_STATE_CHANGED,me.PUBLISH_STATE_CHANGED,me.SCREEN_SHARE_STOPPED,me.DEVICE_CHANGED]);function hu(n){return n==="sub"?"auxiliary":n==="auxiliary"?"sub":"main"}function Ms(n){return n===ui.QOS_PREFERENCE_CLEAR?"detail":n===ui.QOS_PREFERENCE_SMOOTH?"motion":""}var pI=n=>n.startsWith("data:application/octet-stream;base64,"),fI=n=>n.startsWith("file://"),nh=class{constructor(){E(this,"_log");this._log=J.createLogger({id:"fd"})}download(r,e){return N(this,null,function*(){let{type:t="blob"}=e||{};try{let i=ge(),o;if(Ze(fetch)?o=yield this.downloadWithFetch(r,t):o=yield this.downloadWithXHR(r,t),!o||!o.data)throw new Error("data is empty");let a=ge()-i;return this._log.info(`downloaded: ${r}, return type: ${t}, cost: ${a}ms`),Z.addSuccessEvent({key:522700,cost:ge()-i}),o.data}catch(i){throw this._log.error(`failed to download: ${r}, error: ${i}`),Z.addFailedEvent({key:522700,error:i}),i}})}downloadWithFetch(r,e){return N(this,null,function*(){this._log.info(`download with fetch: ${r}, return type: ${e}`);try{let t=yield fetch(r);if(!t.ok)throw new Error("network response was not ok");let i;return e==="arraybuffer"?i=yield t.arrayBuffer():i=yield t.blob(),{data:i}}catch(t){throw t}})}downloadWithXHR(r,e){return this._log.info(`download with xhr: ${r}, return type: ${e}`),new Promise((t,i)=>{let o=new XMLHttpRequest;o.open("GET",r,!0),o.responseType=e,o.onload=()=>{o.status===200||o.status===0&&o.response?t({data:o.response}):i(new Error("XHR failed"))},o.onerror=i,o.send(null)})}loadWasm(r,e){return N(this,null,function*(){this._log.info(`loadWasm ${r}, importObject: ${JSON.stringify(e)}`);let t=ge(),i=null,o=null;if(Ze(WebAssembly.instantiateStreaming)&&!pI(r)&&!fI(r)&&Ze(fetch))try{let a=fetch(r);i=(yield WebAssembly.instantiateStreaming(a,e)).instance}catch(a){o=a}if(!i)try{let a=yield this.download(r,{type:"arraybuffer"});i=(yield WebAssembly.instantiate(a,e)).instance}catch(a){o=a}if(i){let a=ge()-t;return this._log.info(`loadedWasm ${r}, cost: ${a}ms`),Z.addSuccessEvent({key:522701,cost:a}),i}throw this._log.error(`failed to loadWasm ${r}, error: ${o}`),Z.addFailedEvent({key:522701,error:o}),o})}};j([wr({settings:{timeout:0,retries:3},onRetrying(n){this._log.warn(`download retrying: ${n}`)}})],nh.prototype,"download",1);var vg=new nh;function Ag({TRTC:n,room:r,errorModule:e,assetsPath:t}){return{TRTC:n,room:r,assetsPath:t,fileDownloader:vg,innerEmitter:B,constants:Yh,environment:Na,utils:yr,eventLogger:je,log:this.room.getLogger(),loggerManager:J,errorModule:e,kvStatManager:Z,rtcDectection:sn,trtc:this,clearStarted:(i,o)=>{let a=i.getAlias(),d=fn.instances.get(this);if(!!d)if(o){let p=d.get(a+o);if(!p)return;p.started=!1}else d.forEach((p,_)=>{_.startsWith(a)&&(p.started=!1)})},startGetPCM:ou,createAudioNode:qm}}var Cg=(n,r)=>{let{emit:e}=n;return n.emit=(...t)=>{try{return e.apply(n,t)}catch(i){let o=Te({key:Ee.CATCH_HANDLER_ERROR,data:{name:r,event:t[0]},addDocLink:!1});return J.warn(`${o}
53
53
 
54
- ${r.stack}`),!1}},s};var as=new WeakMap;function Sh(s){let i=as.get(s);i&&(i.forEach(e=>clearTimeout(e)),as.delete(s))}function Ih(s,i){return G((e,t)=>function(...r){let o=as.get(this);o||(o=new Map,as.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var d;(d=as.get(this))==null||d.delete(n)},s);o.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var d;e.apply(this,r),(d=as.get(this))==null||d.delete(n)},s);o.set(n,c)}})}var Ah="5.8.7-beta.7";function Ue(...s){return G((i,e)=>function(...t){try{_a.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function Wd(...s){return G((i,e)=>function(...t){try{_a.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function _a(s,i,e,t){if(_e(s))for(let r=0;r<s.length;r++)fa.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else fa.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function fa({rule:s,value:i,key:e,fnName:t,className:r}){function o(c){return{code:U.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(E(i)){if(s.required)throw new P(o(5001));if(E(s.defaultValue)){te(s.validate)&&s.validate.call(this,i,e,t,r,this);return}i=s.defaultValue}if(Array.isArray(s.type)){let c=!1;for(let d=0;d<s.type.length;d++)s.type[d]===null&&i===null&&(c=!0),te(s.type[d])&&i instanceof s.type[d]&&(c=!0),z(s.type[d])&&Ae(i)===s.type[d].toLowerCase()&&(c=!0);if(!c)throw new P({code:U.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(d=>Xs(d)?An(d):z(d)?d:Ae(d))},value:i}})}else if(!E(s.type)&&Ae(i)!==s.type)throw new P(o(5002));if(s.allowEmpty===!1){let c=K(i)&&(i===0||Number.isNaN(i)),d=z(i)&&i.trim()==="";if(c||d)throw new P(o(5003))}if(s.notLessThanZero&&K(i)&&i<0)throw new P(o(5006));if(!E(s.min)&&K(i)&&i<s.min)throw new P(o(5007));if(!E(s.max)&&K(i)&&i>s.max)throw new P(o(5008));if(z(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new P(o(5004))}else if(te(s.instanceOf)&&!(i instanceof s.instanceOf))throw new P(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new P(o(5005));let{properties:n}=s;Ze(n)&&Ct(i)&&Object.keys(n).forEach(c=>{fa.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=s;Ze(a)&&_e(i)&&i.forEach((c,d)=>{fa.call(this,{rule:a,value:c,key:`${e}[${d}]`,fnName:t,className:r})}),te(s.validate)&&s.validate.call(this,i,e,t,r,this)}function ae(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return G((o,n)=>function(...a){var u;function c(p,_,I){if(I&&I.includes(p))return"hided";if(e){let C=e(...a);if(a[C.argIndex]===_)return C.value}if(_===a||p in a)return _;try{return _ instanceof HTMLElement?`id: ${_.id} type:${Ae(_)}`:(JSON.stringify(_),_)}catch(C){return`type:${Ae(_)}`}}let d=this._log||R;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?d.info(`${n}() ${JSON.stringify(a,(p,_)=>c(p,_,["userSig","privateMapKey"]))}`):d.info(`${n}()`);let h=t?t(...a):vn[n];try{let p=o.apply(this,a),_=k();return sr(p)?p.then(I=>(d.info(`${n}() success ${i.call(this,...a)}`),N.addSuccessEvent({key:h,cost:k()-_}),I)).catch(I=>{var B;I=P.convertFrom.call(this,I,n,a.length===1?a[0]:a);let C=I.extraCode||I.code,D=(B=I.message)!=null&&B.includes(C)?"":` code:${C}`;throw d.error(`${n}() failed ${i.call(this,...a)} ${I}${D} params: ${JSON.stringify(a,c)}`),N.addFailedEvent({key:h,error:I}),I}):(N.addSuccessEvent({key:h}),p)}catch(p){p=P.convertFrom.call(this,p,n);let _=p.extraCode||p.code,I=(u=p.message)!=null&&u.includes(_)?"":` code:${_}`;throw d.error(`${n}() failed ${p}${I} params: ${JSON.stringify(a,c)}`),N.addFailedEvent({key:h,error:p}),p}})}var ga=s=>G((i,e)=>function(t,r){return f(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new P({code:U.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(te(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new P({code:U.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return _a.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var Ea=0,Jd=class{constructor(i,e){l(this,"player");l(this,"publisher");l(this,"mixInput");this.mixInput=new Qr(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){!this.player||(E(i.volume)||(this.volume=i.volume),E(i.loop)||(this.loop=i.loop),E(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(!!this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){!this.player||i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i)}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function cs(s,i){if(i&&typeof i!="function")throw new P({code:U.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var ds=class{constructor(i){this.core=i;l(this,"log");l(this,"mixedMusicMap",new Map);l(this,"cacheMusicMap",new Map);Ea=Ea+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ea}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Ea}`),this.core=i}getName(){return ds.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return ds.startValidateRule;case"update":return ds.updateValidateRule;case"stop":return ds.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let o=this.cacheMusicMap.get(t);o?i.url?o.reset():(o.mixInput.replaceSource(i.track),o.mixInput.connect()):(o=new Jd(i,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(i),o.updateSettings(i),yield o.play(),this.mixedMusicMap.set(t,o),this.log.info(`start mix audio track ${t} success.`),N.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:o}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),E(t)||n.setOperation(t),E(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(this,arguments,function*({id:i}){var t;this.mixedMusicMap.has(i)&&(this.log.info(`remove music source, music id: ${i}`),(t=this.mixedMusicMap.get(i))==null||t.stop(),this.mixedMusicMap.delete(i)),i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:o,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:d,onEnded:h}=i;e&&N.addCount({key:502711}),t&&N.addCount({key:502703}),r&&N.addCount({key:502704}),o&&N.addCount({key:502705}),n&&N.addCount({key:502706}),a&&N.addCount({key:502707}),typeof c!="function"&&N.addCount({key:502709}),typeof h!="function"&&N.addCount({key:502710}),typeof d!="function"&&N.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>this.stop({id:e}))}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}},Xi=ds;l(Xi,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],o=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=o.indexOf(n)>=0,c=r.startsWith("blob"),d=r.startsWith("data");if(!(a||c||d))throw new P({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new P({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});cs("onTimeUpdate",i.onTimeUpdate),cs("onEnded",i.onEnded),cs("onDurationChange",i.onDurationChange)}}),l(Xi,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){cs("onTimeUpdate",i.onTimeUpdate),cs("onEnded",i.onEnded),cs("onDurationChange",i.onDurationChange)}}),l(Xi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),l(Xi,"Name","AudioMixer");var Ta=0,jd,ls=class{constructor(i){this.core=i;l(this,"log");l(this,"audioContext",qe("denoiser"));l(this,"workletNode");Ta=Ta+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ta}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Ta}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-wasm.js`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new P({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return jd||(jd=this.doPreload(i)),jd}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield dr(this.audioContext,t)}finally{URL.revokeObjectURL(t)}})}getName(){return ls.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return ls.startValidateRule(this.core);case"update":return ls.updateValidateRule;case"stop":return ls.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let t=String(Date.now()).slice(0,-3),{auth:r,sign:o,status:n,message:a}=yield p_(L(v({},i),{timestamp:t}));if(!r)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${r}. Message: ${a}`),new P({code:U.INVALID_PARAMETER,message:a});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:t,sign:o,status:n}}),this.workletNode.port.onmessage=c=>{let{data:d}=c;d.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${d.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){!this.workletNode||(this.workletNode.port.onmessage=null)}},gr=ls;l(gr,"updateValidateRule",{type:"object"}),l(gr,"stopValidateRule",{type:"object"}),l(gr,"Name","AIDenoiser");function m_(s,i=m.MAIN){return`https://${Vt[i]||Sn(s,i)}/api/v1/audioAiAuth`}function p_(r){return f(this,arguments,function*({sdkAppId:s,userId:i,userSig:e,timestamp:t}){let n=`${m_(s)}?sdkAppId=${s}&userId=${i}&userSig=${e}&timestamp=${t}`,a=yield fetch(n),{data:{errCode:c,errMsg:d,sign:h,status:u}}=yield a.json();if(u==="1")return{auth:!0,sign:h,status:u,message:d};let p="Init RTCAIDenoiser failed.",_="";switch(c){case 1:_="Please check your params.";break;case 2:_="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:_="Server is invalid. Please contact our engineer. ";break;case 4:_="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:_="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:_="Your version is not supported.";break}return{auth:!1,status:u,message:d?`${p} Reason: ${d}. ${_}`:`${p}, ${_}`}})}var Ch=Se(De(),1);var qd=class extends Ch.EventEmitter{constructor(){super();this.state="nominal";this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!fe&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){Y.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&R.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){Y.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},f_=new qd,Xd=f_;function Qd([s,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,s);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new Ri(new DataView(new Uint8Array(o).buffer),!0)}function zd(s){return s.type==="empty"||s.data.byteLength===0}function Yd(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function Kd(s){let i=0,e=0,t=new DataView(s);for(let r=0;r<s.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function Zd({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let e=Kd(s.data),t=9-e;if(t<=0)return s;let r=i.splice(0,t).reverse().map(Qd),o=r.reduce((h,u)=>h+u.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),c=new DataView(s.data),d=0;for(let h=0;h<r.length;h++)for(let u=0;u<r[h].dataView.byteLength;u++)a.setInt8(d++,r[h].dataView.getInt8(u));for(let h=0;h<s.data.byteLength;h++)a.setInt8(d++,c.getInt8(h));return s.data=n,s}function el({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(zd(s)||!Yd(e))return s;let t=[],r=0,o=-1,n=-1;for(let a=0;a<s.data.byteLength;a++){let c=e.getUint8(a);if(c===0)r++;else if(c===1){if(r===2||r===3){let d=a-r;if(o===-1?o=d:n===-1&&(n=d,t.push(new Ri(new DataView(e.buffer.slice(o,n)))),o=d,n=-1),!(e.getUint8(a+1)===6)){s.data=e.buffer.slice(d);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return s}var tl=0,il=class{constructor(i){this.core=i;l(this,"log");l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_subStreamSeiMessageList",[]);tl++,this.log=i.log.createChild({id:`${this.getAlias()}${tl}`}),this.log.info(`[sei] created id=${this.getAlias()}${tl}`),this.core=i,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Zd({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return el({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(M.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Ti?this.encode:Zd,type:1}),this.core.room.videoManager.addDecodeProcessor({processor:Ti?this.decode:el,type:1})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:1}),this.core.room.videoManager.removeDecodeProcessor({type:1})}update({buffer:i,options:e}){var o;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return il.Name}getAlias(){return"sei"}getGroup(){return"sei"}},us=il;l(us,"autoStart",!0),l(us,"Name","SEI");var g_=0,Sa,rl=class{constructor(i){this.core=i;l(this,"_core");l(this,"log");l(this,"dumpLocalVideoMap",{});l(this,"dumpRemoteVideoMap",{});l(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++g_}`}),this.log.info("created")}getName(){return rl.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return f(this,null,function*(){!new URLSearchParams(location.search).has("trtcDebug")||(yield this.openDebugDiaLog(),this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED&&this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){try{if(Sa)yield Sa;else{let i=Date.now();Sa=this.loadScript(`https://web.sdk.qcloud.com/trtc/webrtc/assets/debug/debug-dialog@${Ie}.js`),yield Sa,this.log.info(`download debug dialog script cost: ${Date.now()-i}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(i){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(i))}})}closeDebugDiaLog(){var i;(i=this.dialog)==null||i.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):this.encodeVideoDump,type:2}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):this.decodeVideoDump,type:2})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:2}),this._core.room.videoManager.removeDecodeProcessor({type:2})}encodeVideo({frame:i,mediaType:e}){return this.encodeVideoDump({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return this.decodeVideoDump({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}encodeVideoDump({frame:i,onDump:e}){return e==null||e(),i}decodeVideoDump({frame:i,onDump:e}){return e==null||e(),i}loadScript(i){return new Promise((e,t)=>{this.log.info(`loading debug dialog from ${i}`);let r=document.createElement("script");r.type="text/javascript",r.onload=e,r.onerror=t,r.crossOrigin="anonymous",r.src=i,document.head.append?document.head.append(r):document.getElementsByTagName("head")[0].appendChild(r)})}},Er=rl;l(Er,"Name","Debug"),l(Er,"autoStart",!0),b([je({settings:{timeout:3e3,retries:3},onError(s,i,e){var t;(t=s==null?void 0:s.message)!=null&&t.includes("timeout")?i():e(s)}})],Er.prototype,"loadScript",1);var bh=Se(De(),1);var Rh=Symbol("instance"),dD=Symbol("abortCtrl"),lD=Symbol("cacheResult");var yh=new Map;var E_=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function T_(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(oe.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var oe=class extends bh.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=oe.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[Rh];r?this.name=r.name+"-"+r.count++:t[Rh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=yh.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);yh.has(a)&&(a.stateDiagram.forEach(d=>t.add(d)),a.allStates.forEach(d=>n.add(d))),e.forEach(({from:d,to:h,action:u})=>{typeof d=="string"?r.push({from:d,to:h,action:u}):d.length?d.forEach(p=>{r.push({from:p,to:h,action:u})}):o.push({to:h,action:u})}),r.forEach(({from:d,to:h,action:u})=>{n.add(d),n.add(h),n.add(u+"ing"),t.add(`${d} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${d} : ${u} \u{1F534}`)}),o.forEach(({to:d,action:h})=>{t.add(`${h}ing --> ${d} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==d&&t.add(`${u} --> ${h}ing : ${h}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=oe.instances.get(i),e||oe.instances.set(i,e=new oe(i,void 0,Object.create(oe.prototype)))):(e=oe.instances2.get(i),e||oe.instances2.set(i,e=new oe(i.constructor.name,void 0,Object.create(oe.prototype)))),e}static getState(i){var e;return(e=oe.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){E_(oe.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){T_.call(this,i)}};oe.STATECHANGED="stateChanged";oe.UPDATEAFSM="updateAFSM";oe.INIT="[*]";oe.ON="on";oe.OFF="off";oe.instances=new Map;oe.instances2=new WeakMap;var Nh=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Ia=class{constructor(i,e,t){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"type","auto");l(this,"config");l(this,"decoder");l(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=Fe(e,oe.INIT),this.stopOB=bi(this.trackDoneOB),this.startOB=bi(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=bi(),a=c=>{let d=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),xe(d,Nt(this.stopOB),ot(()=>{},h=>{e.log.error(h),r.addFailedEvent({key:Nh(this.type),error:h}),c>4?this.startOB.error(h):this.startOB.next(c+1)})),xe(d,So(1),rh(ea))};xe(this.startOB,Zn(0),Io(a),Nt(this.stopOB),ot(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:Nh(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return es()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},S_={type:"object"},Aa=class{constructor(i){this.core=i;l(this,"log");l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Aa.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return Aa.Name}getValidateRule(i){return S_}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new Ia(this.core,t,i);return xe(r.trackDoneOB,So(1),ot(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);!e||(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(!!e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new Ia(this.core,i.track,i))}}},hs=Aa;l(hs,"Name","AudioDecoder");var vh=0,Ca=new Set,ve=null;Ba(Ah);var I_={RtcError:P,ErrorCode:U,ErrorCodeDictionary:vt},ht=class extends Dh.EventEmitter{constructor(e,t){super();l(this,"_room");l(this,"_eventListened",new Set);l(this,"_localVideoTrack",null);l(this,"_localAudioTrack",null);l(this,"_localScreenTrack",null);l(this,"_localScreenAudioTrack",null);l(this,"_localVideoConfig",null);l(this,"_localScreenConfig",null);l(this,"_localAudioConfig",null);l(this,"_remoteVideoConfigMap",new Map);l(this,"_remoteAudioConfigMap",new Map);l(this,"_remoteAudioVolumeMap",new Map);l(this,"_remoteAudioMuteMap",new Map);l(this,"_mediaTrackMap",new WeakMap);l(this,"_log",R.createLogger({id:`t${++vh}`}));l(this,"_plugins",new Map);l(this,"_networkQuality",null);l(this,"_speakerId");l(this,"_getPCMAbortCtrl");this._room=new e(v({logger:this._log,frameWorkType:ht.frameWorkType},t)),this._log.debug(`TRTC.create() ${JSON.stringify(t,(r,o)=>r==="plugins"?o.map(n=>n.Name):o)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(Xi,t.assetsPath),this._use(gr,t.assetsPath),this._use(hs,t.assetsPath),this._use(Er),t.enableSEI&&so&&this._use(us),this._room.on("audio-volume",r=>{!r.find(o=>o.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),this.emit(M.AUDIO_VOLUME,{result:r.sort((o,n)=>n.volume-o.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new P({code:U.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Th(this,"trtc")}static create(e){}static _create(e,t){ch();let r=new ht(e,t||{});return Ca.add(r),r}get room(){return this._room}_listenEvents(){Pe(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(M.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(M.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().then(()=>{this.emit(M.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().then(()=>{this.emit(M.ERROR,P.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(M.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=L(v({},e),{uplinkRTT:Math.min(e.uplinkRTT,ks),downlinkRTT:Math.min(e.downlinkRTT,ks)});this.emit(M.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Pe(r,r).add("player-state-changed",o=>{let n=L(v({},o),{userId:e.userId});r.kind===m.VIDEO&&(n.streamType=vo(r.streamType)),this.emit(r.kind===m.AUDIO?M.AUDIO_PLAY_STATE_CHANGED:M.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===S.PLAY_NOT_ALLOWED&&this.emit(M.AUTOPLAY_FAILED,{userId:r.userId})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ee(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,o=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:c}=t;a||this._remoteAudioConfigMap.delete(r),c||this._remoteVideoConfigMap.delete(`${r}_${"main"}`),t.hasAuxiliary||this._remoteVideoConfigMap.delete(`${r}_${"sub"}`),o!==a&&(this.emit(a?M.REMOTE_AUDIO_AVAILABLE:M.REMOTE_AUDIO_UNAVAILABLE,{userId:r}),a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t})),n!==c&&(this.emit(c?M.REMOTE_VIDEO_AVAILABLE:M.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"}),c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"})),e.hasAuxiliary!==t.hasAuxiliary&&(this.emit(t.hasAuxiliary?M.REMOTE_VIDEO_AVAILABLE:M.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}),t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(M.SEI_MESSAGE,L(v({},e),{streamType:vo(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(M.ERROR,new P({code:U.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,c,d,h,u;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,ks),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((d=this._networkQuality)==null?void 0:d.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_level)||0)/_t},video:e.msg_up_stream_info.msg_video_status.filter(p=>t[p.uint32_video_stream_type]).map(p=>({bitrate:(p.uint32_video_codec_bitrate||0)/1e3,width:p.uint32_video_width,height:p.uint32_video_height,frameRate:p.uint32_video_enc_fps,videoType:t[p.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(p=>({userId:p.msg_user_info.str_identifier,audio:{bitrate:(p.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(p.msg_audio_status.uint32_audio_level||0)/_t},video:p.msg_video_status.map(_=>({bitrate:(_.uint32_video_codec_bitrate||0)/1e3,width:_.uint32_video_width,height:_.uint32_video_height,frameRate:_.uint32_video_dec_fps,videoType:t[_.uint32_video_stream_type]}))}))};this.emit(M.STATISTICS,r)}).add("custom-message",e=>{this.emit(M.CUSTOM_MESSAGE,e)}),Pe(this,Re).add("audioInputAdded",e=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),ve&&ve.deviceId===Ms){let t=(yield Gi()).find(r=>r.deviceId===Ms);t&&ve.groupId!==t.groupId&&(ve=t,this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield Gi())[0];if(!t||!ve||ve.groupId===t.groupId)return;let r=ve.deviceId===e.deviceId,o=ve.deviceId===Ms&&ve.deviceId===t.deviceId;(r||o)&&(ve=t,this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r||"https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/")}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Eh.call(this,{TRTC:ht,room:this._room,errorModule:I_,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var c,d;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!z(e.proxy)&&e.proxy.turnServer&&((d=(c=this._room).setTurnServer)==null||d.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,ue(e.preferHW)&&(this._room.preferHW=e.preferHW);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,ht.frameWorkType),this._checkTrackToPublish(),Xd.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return f(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){Ee(this),this.removeAllListeners(),this._room.destroy(),Ca.delete(this),Ca.size===0&&Xd.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)})}startLocalAudio(){return f(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:o}=e,n=new Le(this._room.audioManager),a={},c={muted:!0};o&&(E(o.microphoneId)?E(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&K(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),E(o.profile)||(z(o.profile)?Xo[o.profile]&&n.setProfile(Xo[o.profile]):n.setProfile(o.profile)),K(o.earMonitorVolume)&&(c.muted=!(o.earMonitorVolume>0),c.volume=o.earMonitorVolume),E(o.echoCancellation)||(n.profile.echoCancellation=o.echoCancellation),E(o.noiseSuppression)||(n.profile.noiseSuppression=o.noiseSuppression),E(o.autoGainControl)||(n.profile.autoGainControl=o.autoGainControl)),n.on("5",d=>{this.emit(M.ERROR,new P({code:U.DEVICE_ERROR,extraCode:5309,messageParams:{error:d}}))}),n.on("2",d=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"active",device:d})}),n.on("4",d=>{let h;d.error&&(h=P.convertFrom(d.error)),this.emit(M.PUBLISH_STATE_CHANGED,L(v({},d),{error:h}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),E(r)||n.setMute(r),Pe(n,n).add("player-state-changed",d=>{this.emit(M.AUDIO_PLAY_STATE_CHANGED,L(v({},d),{userId:""}))}),this.listeners(M.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(d=>{this.emit(ht.EVENT.AUDIO_FRAME,{data:d})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(d=>{this.emit(ht.EVENT.AUDIO_FRAME,{data:d})}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=L(v({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:o}=e,n={};o&&(o.microphoneId?yield this._localAudioTrack.switchDevice(o.microphoneId):E(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),E(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),E(o.earMonitorVolume)||(n.muted=!(o.earMonitorVolume>0),n.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!E(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),E(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),fi(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){!this._localAudioTrack||(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),Ee(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,mute:o,option:n}=e,a=new me(this._room.videoManager),c={},d={};if(n&&(n.cameraId?c.deviceId=n.cameraId:E(n.useFrontCamera)?E(n.videoTrack)||(c.customSource=n.videoTrack):c.facingMode=n.useFrontCamera?m.FACING_MODE_USER:m.FACING_MODE_ENVIRONMENT,E(n.profile)||(z(n.profile)?nt[n.profile]&&a.setProfile(nt[n.profile]):a.setProfile(n.profile)),E(n.fillMode)||(d.objectFit=n.fillMode),E(n.mirror)||(d.mirror=n.mirror),E(n.small)||(to()?z(n.small)?a.small=nt[n.small]:n.small===!0?a.small=nt["120p"]:a.small=n.small:this._log.warn("small stream is not supported"))),a.on("5",h=>{this.emit(M.ERROR,new P({code:U.DEVICE_ERROR,extraCode:5308,messageParams:{error:h}}))}),a.on("2",h=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"active",device:h})}),a.on("4",h=>{let u;h.error&&(u=P.convertFrom(h.error)),this.emit(M.PUBLISH_STATE_CHANGED,L(v({},h),{error:u}))}),this._listenOutputTrackChanged(a),yield a.capture(c),E(o)||(yield a.setMute(o)),a.mediaTrack){if(n!=null&&n.qosPreference){let h=_r(n.qosPreference);a.mediaTrack.contentHint=h}else n!=null&&n.videoTrack||(a.mediaTrack.contentHint=_r(ut.QOS_PREFERENCE_SMOOTH));a.outMediaTrack&&(a.outMediaTrack.contentHint=a.mediaTrack.contentHint)}Pe(a,a).add("player-state-changed",h=>{this.emit(M.VIDEO_PLAY_STATE_CHANGED,L(v({},h),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localVideoTrack=a,this._localVideoConfig=L(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:d,track:a})})}updateLocalVideo(e){return f(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:o,option:n}=e,a={};if(n){if(E(n.profile)||(z(n.profile)?nt[n.profile]&&this._localVideoTrack.setProfile(nt[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&E(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):E(n.useFrontCamera)?E(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?m.FACING_MODE_USER:m.FACING_MODE_ENVIRONMENT),E(n.fillMode)||(a.objectFit=n.fillMode),E(n.mirror)||(a.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack){let c=_r(n.qosPreference);this._localVideoTrack.mediaTrack.contentHint=c,this._localVideoTrack.outMediaTrack&&(this._localVideoTrack.outMediaTrack.contentHint=c)}if(n.small){let c=!this._localVideoTrack.small;to()?(n.small===!0?this._localVideoTrack.small=nt["120p"]:z(n.small)?this._localVideoTrack.small=nt[n.small]:this._localVideoTrack.small=n.small,this._room.videoManager.update(),c&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else n.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1))}this._room.isJoined&&!E(r)&&(r&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!r&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),E(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),fi(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){!this._localVideoTrack||(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),Ee(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,option:o}=e,n=new rt(this._room.videoManager);n.on("4",u=>{let p;u.error&&(p=P.convertFrom(u.error)),this.emit(M.PUBLISH_STATE_CHANGED,L(v({},u),{error:p}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,c={},d={};o&&(E(o.profile)||(z(o.profile)?Qo[o.profile]&&n.setProfile(Qo[o.profile]):n.setProfile(o.profile)),o.systemAudio&&(c.systemAudio=!0,c.echoCancellation=o.echoCancellation,c.noiseSuppression=o.noiseSuppression,c.autoGainControl=o.autoGainControl),E(o.fillMode)||(d.objectFit=o.fillMode),o.videoTrack&&(c.videoTrack=o.videoTrack),o.audioTrack&&(c.audioTrack=o.audioTrack),o.captureElement&&(c.captureElement=o.captureElement),o.preferDisplaySurface&&(c.preferDisplaySurface=o.preferDisplaySurface));let h=yield n.capture(c);if(o!=null&&o.qosPreference){let u=_r(o.qosPreference);n.mediaTrack.contentHint=u}else o!=null&&o.videoTrack||(n.mediaTrack.contentHint=_r(ut.QOS_PREFERENCE_CLEAR));if(n.mediaTrack.addEventListener(m.ENDED,()=>{this._stopScreenShare(),this.emit(M.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]&&(a=new Kt(this._room.audioManager),yield a.setInputMediaStreamTrack(h.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),Pe(n,n).add("player-state-changed",u=>{this.emit(M.VIDEO_PLAY_STATE_CHANGED,L(v({},u),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let u=[n];a&&u.push(a),this._room.publish(...u).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=a,this._localScreenConfig=L(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:d,track:n})})}updateScreenShare(e){return f(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:o}=e,n={};if(o&&(E(o.fillMode)||(n.objectFit=o.fillMode),o.qosPreference)){let a=_r(o.qosPreference);this._localScreenTrack.mediaTrack.contentHint=a}this._room.isJoined&&!E(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),fi(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${o}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let d={},h=o==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;this._listenOutputTrackChanged(h),n&&(E(n.fillMode)||(d.objectFit=n.fillMode),E(n.mirror)||(d.mirror=n.mirror),d.canvasRender=n.canvasRender,o==="main"&&!E(n.small)&&(c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._updateVideoPlayOption({view:t,playOption:d,track:h}),this._emitTrackEvent(h),this._remoteVideoConfigMap.set(a,{config:e}),n&&!E(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:h,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var D,B;let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`,c=this._remoteVideoConfigMap.get(a);if(!c||!this._room.remotePublishedUserMap.has(r))return;let d={};n&&(E(n.fillMode)||(d.objectFit=n.fillMode),E(n.mirror)||(d.mirror=n.mirror));let h=null,u=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(u==null?void 0:u.muteState.hasVideo)&&(h=u.remoteVideoTrack),o==="sub"&&(u==null?void 0:u.muteState.hasAuxiliary)&&(h=u.remoteAuxiliaryTrack),!h)return;let{config:p}=c;o==="main"&&n&&!E(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:t,playOption:d,track:h,prevConfig:p}),fi(p,e);let _=E(n==null?void 0:n.receiveWhenViewVisible)?(D=p.option)==null?void 0:D.receiveWhenViewVisible:n.receiveWhenViewVisible,I=E(t)?p.view:t,C=E(n==null?void 0:n.viewRoot)?(B=p.option)==null?void 0:B.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:I,receiveWhenViewVisible:_,viewRoot:C})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:a,remoteVideoTrack:c,remoteAuxiliaryTrack:d}=o;e.streamType==="main"&&(c.stop(),a.hasVideo&&r.push(c)),e.streamType==="sub"&&(d.stop(),a.hasAuxiliary&&r.push(d))}for(let a of r)t&&(yield this._room.unsubscribe(a),this._mediaTrackMap.get(a.outMediaTrack)===a.userId&&this._mediaTrackMap.delete(a.outMediaTrack));let n=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);n&&n.observer&&n.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,t){return f(this,null,function*(){if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}));this._remoteAudioMuteMap.set(e,t)})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){return this.listeners(e).includes(t)?this:(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),e===ht.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(ht.EVENT.AUDIO_FRAME,{data:o})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(ht.EVENT.AUDIO_FRAME,{data:o})}))})),this)}emit(e,...t){try{_h.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){var o,n;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(o=this._getPCMAbortCtrl)==null||o.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,t,r),e===ht.EVENT.AUDIO_FRAME&&((n=this._getPCMAbortCtrl)==null||n.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(z(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(o=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=o==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:o=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?o&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(o==null?void 0:o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o==null?void 0:o.muteState.hasAuxiliary))return o.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield Gi()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),ve=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let o={},n=r.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),c=K(a)?a:100;o.volume=c,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),xe(Fe(n,"decode-failed"),Nt(Fe(n,oe.INIT)),ot(()=>{this.startPlugin(hs.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.get(r.remoteAudioTrack.outMediaTrack)===e.userId&&this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),E(e)&&o&&o.view&&!Tc(t)){let a=zs(o.view);a.length>0&&(yield r.play(a,t))}if(!E(e)){let a=zs(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}E(e.muted)||t.setPlayerMute(e.muted),E(e.volume)||t.setAudioVolume(e.volume/100)})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";!e.outMediaTrack||t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(M.TRACK,{userId:r,streamType:vo(e.streamType),track:e.outMediaTrack}))}_checkTrackToPublish(){var t,r,o;let e=[];if(((t=this._localAudioConfig)==null?void 0:t.publish)&&this._localAudioTrack&&e.push(this._localAudioTrack),((r=this._localVideoConfig)==null?void 0:r.publish)&&this._localVideoTrack&&e.push(this._localVideoTrack),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:o}){if(E(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${vo(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||_e(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let d=n.visibleViewMap||new Map,h=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),d.clear(),a=new IntersectionObserver(p=>{p.forEach(_=>{d.set(_.target,_.isIntersecting)}),clearTimeout(h),h=window.setTimeout(()=>{[...d.values()].find(I=>I)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let u=new Set(zs(t));d.forEach((p,_)=>{u.has(_)||(a.unobserve(_),d.delete(_))}),u.forEach(p=>{d.set(p,!0),a.observe(p)}),a.takeRecords().forEach(p=>{d.set(p.target,p.isIntersecting)}),n.visibleViewMap=d,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),Sh(this),this._room.remotePublishedUserMap.forEach(e=>{Ee(e.remoteAudioTrack),Ee(e.remoteVideoTrack),Ee(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(this,null,function*(){var e;if(!!this._localScreenTrack){if(this._room.isJoined){let t=[this._localScreenTrack];this._localScreenAudioTrack&&t.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...t).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),Ee(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_initActiveSpeaker(){return f(this,null,function*(){if(ve&&!Yr(ve))this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:ve});else{let e=yield Gi();if(e[0]&&!Yr(e[0]))ve=e[0],this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]});else{let t=({track:r})=>{r.kind==="audio"&&(!ve||Yr(ve))&&(this._initActiveSpeaker(),T.off("102",this._initActiveSpeaker))};T.on("102",t)}}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let o=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack;this._room.subscribe(o).then(()=>{this._emitTrackEvent(o)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var o;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:L(v({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),N.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),N.addCount({key:500001,useUV:!0})}static setLogLevel(e,t){R.setLogLevel(e),E(t)||(t?R.enableUploadLog():R.disableUploadLog())}static isSupported(){return kn()}static getCameraList(e=!0){return tt(e)}static getMicrophoneList(e=!0){return Xe(e)}static getSpeakerList(e=!0){return Gi(e)}static setCurrentSpeaker(e){return f(this,null,function*(){(yield Gi()).forEach(r=>{r.deviceId===e&&(Ca.forEach(o=>{o._setCurrentSpeaker(e),o.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),ve=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a}){switch(a&&(nr.version=a),e){case"count":nr.addCount({key:t,useUV:n});break;case"enum":nr.addEnum({key:t,value:r,useUV:n});break;case"number":nr.addNumber({key:t,value:r,split:o});break}}},X=ht;l(X,"_loggerManager",R),l(X,"EVENT",M),l(X,"ERROR_CODE",U),l(X,"TYPE",ut),l(X,"frameWorkType",30),b([ae({replaceArg:s=>({argIndex:0,value:{name:"plugin"in s?s.plugin.Name:s.Name,assetsPath:"assetsPath"in s?s==null?void 0:s.assetsPath:"default"}})})],X.prototype,"use",1),b([Ue(Ne.TRTC.enterRoom),ji("room",([s],[i])=>(s.roomId||s.strRoomId)===(i.roomId||i.strRoomId)&&s.userId===i.userId&&s.sdkAppId===i.sdkAppId),G(s=>function(i){return this._log.setUserId(i.userId),this._log.setSdkAppId(i.sdkAppId),s.call(this,i)}),ae()],X.prototype,"enterRoom",1),b([ae()],X.prototype,"exitRoom",1),b([Ue(Ne.TRTC.switchRole),fr("room",{merge:(s,i)=>i}),ae()],X.prototype,"switchRole",1),b([ae()],X.prototype,"destroy",1),b([Ue(Ne.TRTC.startLocalAudio),ji("audio",([s],[i])=>{var e,t;return((e=s==null?void 0:s.option)==null?void 0:e.microphoneId)===((t=i==null?void 0:i.option)==null?void 0:t.microphoneId)}),ae()],X.prototype,"startLocalAudio",1),b([Ue(Ne.TRTC.updateLocalAudio),fr("audio",{debounce:{delay:200,getKey:()=>`${vh}-localAudio`,isNeedToDebounce:s=>{var i;return!E((i=s.option)==null?void 0:i.captureVolume)}}}),ae()],X.prototype,"updateLocalAudio",1),b([qi("audio"),ae()],X.prototype,"stopLocalAudio",1),b([Ue(Ne.TRTC.startLocalVideo),ji("video",([s],[i])=>{var e,t;return((e=s==null?void 0:s.option)==null?void 0:e.cameraId)===((t=i==null?void 0:i.option)==null?void 0:t.cameraId)}),ae()],X.prototype,"startLocalVideo",1),b([Ue(Ne.TRTC.updateLocalVideo),fr("video"),ae()],X.prototype,"updateLocalVideo",1),b([qi("video"),ae()],X.prototype,"stopLocalVideo",1),b([Ue(Ne.TRTC.startScreenShare),ji("screen",()=>!0),ae()],X.prototype,"startScreenShare",1),b([Ue(Ne.TRTC.updateScreenShare),fr("screen"),ae()],X.prototype,"updateScreenShare",1),b([ae()],X.prototype,"stopScreenShare",1),b([Ue(Ne.TRTC.startRemoteVideo),ji(s=>`v${s.userId}${s.streamType}`,()=>!0),ae({getRemoteId:s=>`${s.userId}_${s.streamType}`})],X.prototype,"startRemoteVideo",1),b([Ue(Ne.TRTC.updateRemoteVideo),fr(s=>`v${s.userId}${s.streamType}`),ae({getRemoteId:s=>`${s.userId}_${s.streamType}`})],X.prototype,"updateRemoteVideo",1),b([Ue(Ne.TRTC.stopRemoteVideo),G(s=>function(i){return f(this,null,function*(){if(i.userId==="*"){let e=[];return this._room.remotePublishedUserMap.forEach(t=>{this._remoteVideoConfigMap.has(`${t.userId}_${"main"}`)&&e.push(this.stopRemoteVideo({streamType:"main",userId:t.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${t.userId}_${"sub"}`)&&e.push(this.stopRemoteVideo({streamType:"sub",userId:t.userId}).catch(()=>{}))}),Promise.all(e)}return s.call(this,i)})}),ae({getRemoteId:s=>`${s.userId}_${s.streamType}`})],X.prototype,"stopRemoteVideo",1),b([qi(s=>`v${s.userId}${s.streamType}`)],X.prototype,"_stopRemoteVideo",1),b([Ue(...Ne.TRTC.muteRemoteAudio),ae({getRemoteId:s=>s})],X.prototype,"muteRemoteAudio",1),b([Wd(...Ne.TRTC.setRemoteAudioVolume),Ih(200,s=>s),ae({getRemoteId:s=>s})],X.prototype,"setRemoteAudioVolume",1),b([ga("start"),bt(s=>{var i;return(i=s.afterStart)==null?void 0:i.call(s)}),ji((s,i)=>s.disableRandomCall?null:s.getAlias()+s.getGroup(i)),ae({replaceArg:s=>({argIndex:0,value:s.getName()}),getKVReportKey:s=>Dc[s.getName()],ignoreLog:s=>s.getName()==="Debug"})],X.prototype,"startPlugin",1),b([ga("update"),fr((s,i)=>s.disableRandomCall?null:s.getAlias()+s.getGroup(i)),ae({replaceArg:s=>({argIndex:0,value:s.getName()}),getKVReportKey:s=>Oc[s.getName()]})],X.prototype,"updatePlugin",1),b([ga("stop"),qi((s,i)=>{if(s.disableRandomCall)return null;let e=s.getGroup(i),t=s.getAlias();return e==="*"?new RegExp(`${t}.*`):t+e}),ae({replaceArg:s=>({argIndex:0,value:s.getName()}),getKVReportKey:s=>Mc[s.getName()]})],X.prototype,"stopPlugin",1),b([Wd(...Ne.TRTC.enableAudioVolumeEvaluation)],X.prototype,"enableAudioVolumeEvaluation",1),b([ae()],X.prototype,"getVideoSnapshot",1),b([ae()],X.prototype,"_setCurrentSpeaker",1),b([ji(s=>`a${s.userId}`,()=>!0)],X.prototype,"_startRemoteAudio",1),b([G(s=>function(i){return f(this,null,function*(){return i.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(e=>this._stopRemoteAudio(L(v({},i),{userId:e.userId})).catch(()=>{}))):s.call(this,i)})}),qi(s=>`a${s.userId}`)],X.prototype,"_stopRemoteAudio",1),b([qi("room")],X.prototype,"_exitRoom",1),b([qi("screen")],X.prototype,"_stopScreenShare",1),b([Ue(...Ne.TRTC.sendSEIMessage),Hd({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...s)=>s[0].byteLength})],X.prototype,"sendSEIMessage",1),b([Ue(Ne.TRTC.sendCustomMessage),Hd({timesInSecond:30,maxSizeInSecond:8e3,getSize:s=>s.data.byteLength})],X.prototype,"sendCustomMessage",1),b([Ue(Ne.TRTC.create)],X,"_create",1);var Do=X;var sl=class{constructor(){this._set=new Set;T.on(g.LEAVE_SUCCESS,this.delete,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}};function A_(){return f(this,null,function*(){let s,i;try{let u=yield Xe();s=u&&u.length}catch(u){}try{let u=yield tt();i=u&&u.length}catch(u){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=Wt.basis(),c={webRTC:a.isWebRTCSupported,getUserMedia:a.isGetUserMediaSupported,webSocket:a.isWebSocketsSupported,screenShare:a.isScreenShareSupported,webAudio:a.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:r,vp8Decode:n},d={browser:a.browser,os:a.os,trtc:c,devices:e},h={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};Y.uploadEvent({log:`trtcstats-${JSON.stringify(d)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(d)}`),Y.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(h)}`,userId:this.userId})})}function Oh(){return G(s=>{let i=new sl;return function(e,t,r){return f(this,null,function*(){let o=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new y({code:S.INVALID_OPERATION,message:w({key:x.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new y({code:S.INVALID_OPERATION,message:w({key:x.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),T.emit(g.JOIN_START,{room:this,roomId:o,params:e});let n=Be.getEnv();n||(n=si.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(zo.OLD_CLOUD_LADDER)?n=si.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(zo.WEBRTC)&&(n=si.WEBRTC))),Y.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),Wt.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,A_.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Be.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=Be.performanceNow(),T.emit(g.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&Y.uploadEvent({log:`stat-conv-${Number(li)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),T.emit(g.JOIN_FAILED,{room:this,error:a}),a}})}})}var Mh=()=>G(s=>function(...i){return f(this,null,function*(){T.emit(g.LEAVE_START,{room:this}),yield s.call(this),T.emit(g.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function kh(){return G(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Lh=Se(De());var pe={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Dt={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140},Ph=[Dt.UPDATE_REMOTE_MUTE_STAT,Dt.UPLINK_NETWORK_STATS,Dt.USER_LIST_RES,Dt.MUTE_RESULT,Dt.SERVER_FIRST_PACKAGE_RECEIVED,Dt.RECEIVE_CUSTOM_MSG],V={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg"},W={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg"};var Ra=new Set;function xh(s){let i=[...Ra.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var ms=class extends Lh.default{constructor(e){var r,o;super();l(this,"room");l(this,"url");l(this,"backupUrl");l(this,"race");l(this,"destroyed",!1);l(this,"_socketInUse");l(this,"_socket");l(this,"_backupSocket");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});l(this,"_currentState","DISCONNECTED");l(this,"_isReconnecting",!1);l(this,"_seq",0);l(this,"_log");l(this,"_lastMessageTime",-1);l(this,"_connnectStartTime",-1);l(this,"_stopConnectRetry");l(this,"bytesSent",0);l(this,"bytesReceived",0);l(this,"keepAlive",!1);l(this,"signalDomainWhenUnifiedProxy");l(this,"stopKeepAliveTimeout");l(this,"rtt",0);this.room=e.room,this.race=E(e.race)?!0:e.race,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy,(((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0)-Ra.size>0&&this.room.enableSPC&&(this.keepAlive=!0,Ra.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=R.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get sdkAppId(){return this.room.sdkAppId}get userId(){return this.room.userId}get userSig(){return this.room.userSig}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}]${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connnectStartTime=k();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield js(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?m.BACKUP:m.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let o=new WebSocket(e);this.bindSocket(o),r?this._socket=o:this._backupSocket=o;let n=-1;return new Promise((a,c)=>{o.onclose=c,o.onerror=c,o.onopen=()=>a(o),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?m.MAIN:m.BACKUP),c(new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===m.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(pe.SETUP_FAILED,new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(m.MAIN),this.unbindAndCloseSocket(m.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(pe.SETUP_FAILED,new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=Cn(e.data);let t=JSON.parse(e.data),{cmd:r,data:o}=t,n=Object.values(Dt),c=Object.keys(Dt)[n.indexOf(r)],d=V[c]||r;switch(Ph.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),d&&this._log.info(`Received event: [ ${d} ]`)),r){case Dt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&Ll(o.svrTime),this._log.info(`ChannelSetup Success ${k()-this._connnectStartTime}`),N.addSuccessEvent({key:521701,cost:k()-this._connnectStartTime}),this._connnectStartTime=-1,this.emit(pe.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let h=new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:w({key:x.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),N.addFailedEvent({key:521701,error:h}),this.emit(pe.SETUP_FAILED,h)}break}case Dt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.relayPort=o.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=o.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(d,{data:t});break}default:this.emit(String(d),{data:t});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;$t(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?m.MAIN:m.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:o,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:W.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:V.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),N.addSuccessEvent({key:521702,cost:k()-this._connnectStartTime}),this._connnectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(N.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},o=JSON.stringify(r);return this._socketInUse.send(o),this.bytesSent+=Cn(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((d,h)=>{let u=setTimeout(()=>{this.off(o,_);let C=new y({code:S.API_CALL_TIMEOUT,message:w({key:x.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(C),h(C)},r),p=Date.now(),_=C=>{C.data.seq===I&&(clearTimeout(u),this.off(o,_),c&&(C.data.receiveTime=Date.now()),d(C))};this.on(o,_);let I=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return Ut({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(pe.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${o}]`)},settings:{retries:o,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),Ra.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(m.MAIN),this.unbindAndCloseSocket(m.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(V.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(V.JOIN_ROOM_RESULT,t))};this.on(V.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(pe.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(pe.CONNECTED):e==="DISCONNECTED"&&this.emit(pe.DISCONNECTED))}};b([je({settings:{retries:1/0,timeout:2e3},onError(s,i){!this.room.isDestroyed&&!this.destroyed&&i()},onRetrying(s,i){this._log.warn(`retrying to connect ${s}`),s>=3&&s%3===0&&this.reGetSignalChannelUrl(),i&&(this._stopConnectRetry=i,(this.room.isDestroyed||this.destroyed)&&i())}})],ms.prototype,"connect",1);var wh=Se(De());var ol=0,nl=!1,ya=new Set,R_=s=>ol>2&&!nl&&ya.size===0&&s,al=!1,He=class{constructor(i){l(this,"userId");l(this,"tinyId");l(this,"_sdpSemantics");l(this,"_isUplink");l(this,"_room");l(this,"_log");l(this,"_signalChannel");l(this,"_isErrorObserved",!1);l(this,"_waitForPeerConnectionConnectedPromise");l(this,"_waitForPeerConnectionConnectedPromiseReject",null);l(this,"_peerConnection",null);l(this,"_emitter",new wh.default);l(this,"_currentState","DISCONNECTED");l(this,"_isReconnecting",!1);l(this,"_reconnectionCount",0);l(this,"_reconnectionTimer",-1);l(this,"_isFirstConnection",!0);l(this,"_prevTime",-1);l(this,"_localAddress");l(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=R.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=k())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,N.addSuccessEvent({key:521705,cost:Math.min(k()-this._prevTime,30*1e3)})):this._isReconnecting&&N.addSuccessEvent({key:521706,cost:k()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,N.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&N.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),ya.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new y({code:S.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return ft;let i=null;if(this._isUplink){if(!Hi()||this._peerConnection.getSenders().length===0)return ft;i=this._peerConnection.getSenders()[0].transport}else{if(!ar()||this._peerConnection.getReceivers().length===0)return ft;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:ft}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===ne.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===ne.FAILED||i.target.connectionState===ne.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new y({message:r,code:S.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===ne.CONNECTED||i.target.connectionState===ne.COMPLETED)&&(this.logSelectedCandidate(),Y.logSuccessEvent({userId:this._room.userId,eventType:Ge.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(ol=0,nl=!1,al=!0,ya.add(this)):ya.delete(this),T.emit(g.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(Fi(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),o(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),o(),e(new y({code:S.API_CALL_ABORTED,message:w({key:x.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{T.off(g.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new y({code:S.API_CALL_TIMEOUT,message:"connection timeout"});ol+=1,R_(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),nl=!0,this._emitter.emit("firewall-restriction")),e(a)},Os);T.on(g.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(pe.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=oi()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new y({code:this._isUplink?S.UPLINK_RECONNECTION_FAILED:S.DOWNLINK_RECONNECTION_FAILED,message:w({key:this._isUplink?x.UPLINK_RECONNECTION_FAILED:x.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(pe.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};b([Qe(521712,!1)],He.prototype,"setOffer",1),b([Qe(521713,!1)],He.prototype,"setAnswer",1);var ul=Se(ll());var le=function(s){return ul.default.parse(s)},mt=function(s){return ul.default.write(s)},Wh=function(s){let i=le(s);return i.media.forEach(e=>{e.type===m.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),mt(i)};function Jh(s){let i=le(s);return i.media.forEach(e=>{var t,r;if(e.type===m.VIDEO){let o=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&o.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let d=c.match(/apt=(\d+)/);d&&d[1]&&o.has(Number(d[1]))&&o.add(a)});let n=({payload:a})=>!o.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!o.has(Number(a))).join(" ")}}),mt(i)}function ba(s){return Object.keys(s).filter(i=>s[i])}var ml=class extends He{constructor(e){super(L(v({},e),{isUplink:!1}));l(this,"_flag",0);l(this,"isRobot",!1);l(this,"role","anchor");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");l(this,"ssrc",{audio:0,video:0,auxiliary:0});l(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new yi(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new ei(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new ss(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return Bi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===m.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,o=t.id===Ds?m.MAIN:m.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=m.AUDIO;r.kind===m.VIDEO&&(n=o===m.MAIN?m.VIDEO:m.AUXILIARY);let a=this.remoteAudioTrack;n===m.VIDEO?a=this.remoteVideoTrack:n===m.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
55
- `),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let o=[...r];for(let n=0;n<o.length;n++){let[a,c]=o[n];t.splice(a+n,0,c)}return t.join(`\r
56
- `)}addSPSDescription(e){let t=le(e);return t.media.forEach(r=>{r.type===m.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),mt(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=le(e);return r.media.forEach(o=>{!o.ext||(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),mt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===ne.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===ne.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new y({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${ba(o)}]`),yield this.sendSubscription(n,o),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=W.UNSUBSCRIBE,n=V.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=W.SUBSCRIBE_CHANGE,n=V.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:w({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,o={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:W.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:V.SUBSCRIBE_RESULT,timeout:Qa});if(!this._peerConnection){let a=new y({code:S.INVALID_OPERATION,message:w({key:x.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};ct()&&this._sdpSemantics===Pi?(this._peerConnection.addTransceiver(m.AUDIO,{direction:Q.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Q.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Q.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield Mn();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=Jh(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=Wh(t.sdp),this._sdpSemantics===Pi&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===Zi)throw new y({code:S.NOT_SUPPORTED_H264,message:w({key:x.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new y({code:t,message:w({key:x.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:o,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{le(e).media.forEach(r=>{if(!!r.ssrcs)if(r.type===m.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(Ds)});o&&(this.ssrc.audio=Number(o.id))}else{let o=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(Ds)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(Wa)});o&&(this.ssrc.video=Number(o.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return f(this,null,function*(){if(!(ye(ml.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=Ft(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}},fs=ml;b([G(s=>function(...i){return new Promise((e,t)=>{let r=o=>{this._emitter.off("closed",r),t(new y({code:S.API_CALL_ABORTED,message:w({key:x.CONNECTION_ABORTED,data:o})}))};this._emitter.on("closed",r),s.apply(this,i).then(e,t).finally(()=>{this._emitter.off("closed",r)})})})],fs.prototype,"subscribe",1),b([Qe(521717,!1)],fs.prototype,"unsubscribe",1),b([bt(He.prototype.afterConnect),Wn(He.prototype.beforeConnect)],fs.prototype,"connect",1);var hl=fs;var qh={voiceActivityDetection:!1},pl=class extends He{constructor(e){super(L(v({},e),{isUplink:!0}));l(this,"localMainAudioTrack",null);l(this,"localMainVideoTrack",null);l(this,"localAuxAudioTrack",null);l(this,"localAuxVideoTrack",null);l(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});l(this,"_isPublishingAux",!1);l(this,"_publishingLocalAudioTrack");l(this,"_publishingLocalVideoTrack");l(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});l(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Ht()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===m.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),o}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),ct()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){this._log.info("publish by transceiver");let a=new MediaStream,c=t==null?void 0:t.outMediaTrack,d=e==null?void 0:e.outMediaTrack;d&&a.addTrack(d),c&&a.addTrack(c);let h=this._peerConnection.getTransceivers();if(h.length===0)this._peerConnection.addTransceiver(d||m.AUDIO,{direction:Q.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?m.VIDEO:c||m.VIDEO,{direction:Q.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||m.VIDEO,{direction:Q.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?c||m.VIDEO:m.VIDEO,{direction:Q.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(d&&(h[0].sender.track||u.push(0),yield h[0].sender.replaceTrack(d),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:m.AUDIO})),c){let p=o?3:1;yield h[p].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:m.VIDEO,videoType:o?m.AUXILIARY:m.BIG}),u.push(p),r&&(yield h[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:m.VIDEO,videoType:m.SMALL}),u.push(2))}yield this.setTransceiverDirection(Q.SENDONLY,u),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let c=new MediaStream;if(a&&c.addTrack(a),n&&c.addTrack(n),a&&this._peerConnection.addTrack(a,c),n&&(this._peerConnection.addTrack(n,c),r)){let d=new MediaStream;d.addTrack(r),this._peerConnection.addTrack(r,d)}yield this.connect()})}enableSmall(e){return f(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(Q.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(Q.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Ht()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=L(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=L(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(Q.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:W.PUBLISH_STATE_CHANGE,data:t,responseCommand:V.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:W.UNPUBLISH,commandDesc:"unpublish",responseCommand:V.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),Gt){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:W.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:V.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?m.AUXILIARY:m.MAIN} stream`),ct()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)==null?void 0:o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Q.INACTIVE&&(yield this.setTransceiverDirection(Q.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Ht()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let o=r.track;this.removeSender(r),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===m.VIDEO&&e instanceof me&&e.small){let o=new MediaStream,{smallTrack:n}=this._room.videoManager;o.addTrack(n),this._peerConnection.addTrack(n,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===yr||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=le(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===m.VIDEO)return!0;return!1}removeSender(e){let t=null;Ht()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&te(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?m.AUXILIARY:m.MAIN} stream`),ct()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(Q.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!re)return;let r=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(d=>{n[d].direction!==e&&(n[d].direction=e,r=!0)}),r){this._log.info("updating offer");let d=yield this._peerConnection.createOffer();yield this.setOffer(d)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
57
- `).map(d=>{if(d.match(new RegExp(`a=(${Q.INACTIVE}|${Q.RECVONLY}|${Q.SENDONLY})`))&&a++,t.includes(a)){if(e===Q.INACTIVE&&d.includes(`a=${Q.RECVONLY}`))return o=!0,`a=${e}`;if(e===Q.SENDONLY&&d.includes(`a=${Q.INACTIVE}`))return o=!0,`a=${Q.RECVONLY}`}return d}).join(`\r
58
- `);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===m.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===m.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===m.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(ct()?r=e.kind===m.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?m.AUXILIARY:m.MAIN} stream`),e.kind===m.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===m.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(qh);re&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let o=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===m.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:W.PUBLISH_CHANGE,data:n,responseCommand:V.UPDATE_OFFER_RESULT,timeout:Xa,commandDesc:"update offer"}),{code:c,message:d}=a.data;c!==0&&this.checkPublishResultCode(c,d),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!ro())return o?t===m.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,c=this._peerConnection.getSenders();if(ct()){let d=0;t===m.VIDEO&&(r===m.SMALL?d=2:r===m.AUXILIARY?d=3:d=1),a=c[d]}else a=c.find(d=>d.track&&d.track.kind===t);if(a){let d=a.getParameters();(!d.encodings||d.encodings.length===0)&&(d.encodings=[{}]),d.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(d),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),o}catch(h){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${h}`),o)return t===m.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";re&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===m.SMALL?n=1:r===m.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${o}:${t}\r
59
- `:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return re&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
54
+ ${i.stack}`),!1}},n};var Ya=new WeakMap;function Rg(n){let r=Ya.get(n);r&&(r.forEach(e=>clearTimeout(e)),Ya.delete(n))}function bg(n,r){return ke((e,t)=>function(...i){let o=Ya.get(this);o||(o=new Map,Ya.set(this,o));let a=r(...i),d=o.get(a);if(!d||d<=0){e.apply(this,i);let p=setTimeout(()=>{var _;(_=Ya.get(this))==null||_.delete(a)},n);o.set(a,p)}else{clearTimeout(d);let p=window.setTimeout(()=>{var _;e.apply(this,i),(_=Ya.get(this))==null||_.delete(a)},n);o.set(a,p)}})}var Ng="5.8.7-beta.9";function fr(...n){return ke((r,e)=>function(...t){try{sh.call(this,n,t,e,this._name)}catch(i){return Promise.reject(i)}return r.apply(this,t)})}function Gp(...n){return ke((r,e)=>function(...t){try{sh.call(this,n,t,e,this._name)}catch(i){throw i}return r.apply(this,t)})}function sh(n,r,e,t){if(Dt(n))for(let i=0;i<n.length;i++)oh.call(this,{rule:n[i],value:r[i],key:n[i].name,fnName:e,className:t});else oh.call(this,{rule:n,value:r[0],key:n.name,fnName:e,className:t})}function oh({rule:n,value:r,key:e,fnName:t,className:i}){function o(p){return{code:Se.INVALID_PARAMETER,extraCode:p,fnName:t,messageParams:{key:e,rule:n,value:r}}}if(V(r)){if(n.required)throw new fe(o(5001));if(V(n.defaultValue)){Ze(n.validate)&&n.validate.call(this,r,e,t,i,this);return}r=n.defaultValue}if(Array.isArray(n.type)){let p=!1;for(let _=0;_<n.type.length;_++)n.type[_]===null&&r===null&&(p=!0),Ze(n.type[_])&&r instanceof n.type[_]&&(p=!0),Je(n.type[_])&&Ht(r)===n.type[_].toLowerCase()&&(p=!0);if(!p)throw new fe({code:Se.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:n.type.map(_=>Md(_)?ml(_):Je(_)?_:Ht(_))},value:r}})}else if(!V(n.type)&&Ht(r)!==n.type)throw new fe(o(5002));if(n.allowEmpty===!1){let p=qe(r)&&(r===0||Number.isNaN(r)),_=Je(r)&&r.trim()==="";if(p||_)throw new fe(o(5003))}if(n.notLessThanZero&&qe(r)&&r<0)throw new fe(o(5006));if(!V(n.min)&&qe(r)&&r<n.min)throw new fe(o(5007));if(!V(n.max)&&qe(r)&&r>n.max)throw new fe(o(5008));if(Je(n.instanceOf)){if(!r||r._name!==n.instanceOf)throw new fe(o(5004))}else if(Ze(n.instanceOf)&&!(r instanceof n.instanceOf))throw new fe(o(5004));if(Array.isArray(n.values)&&!n.values.includes(r))throw new fe(o(5005));let{properties:a}=n;jr(a)&&Oi(r)&&Object.keys(a).forEach(p=>{oh.call(this,{rule:a[p],value:r&&r[p],key:`${p}`,fnName:t,className:i})});let{arrayItem:d}=n;jr(d)&&Dt(r)&&r.forEach((p,_)=>{oh.call(this,{rule:d,value:p,key:`${e}[${_}]`,fnName:t,className:i})}),Ze(n.validate)&&n.validate.call(this,r,e,t,i,this)}function ht(n={}){let{getRemoteId:r=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:i}=n;return ke((o,a)=>function(...d){var v;function p(A,w,M){if(M&&M.includes(A))return"hided";if(e){let L=e(...d);if(d[L.argIndex]===w)return L.value}if(w===d||A in d)return w;try{return w instanceof HTMLElement?`id: ${w.id} type:${Ht(w)}`:(JSON.stringify(w),w)}catch(L){return`type:${Ht(w)}`}}let _=this._log||J;if(i!=null&&i(...d))return o.apply(this,d);d.length>0?_.info(`${a}() ${JSON.stringify(d,(A,w)=>p(A,w,["userSig","privateMapKey"]))}`):_.info(`${a}()`);let S=t?t(...d):Tl[a];try{let A=o.apply(this,d),w=ge();return Is(A)?A.then(M=>(_.info(`${a}() success ${r.call(this,...d)}`),Z.addSuccessEvent({key:S,cost:ge()-w}),M)).catch(M=>{var ie;M=fe.convertFrom.call(this,M,a,d.length===1?d[0]:d);let L=M.extraCode||M.code,W=(ie=M.message)!=null&&ie.includes(L)?"":` code:${L}`;throw _.error(`${a}() failed ${r.call(this,...d)} ${M}${W} params: ${JSON.stringify(d,p)}`),Z.addFailedEvent({key:S,error:M}),M}):(Z.addSuccessEvent({key:S}),A)}catch(A){A=fe.convertFrom.call(this,A,a);let w=A.extraCode||A.code,M=(v=A.message)!=null&&v.includes(w)?"":` code:${w}`;throw _.error(`${a}() failed ${A}${M} params: ${JSON.stringify(d,p)}`),Z.addFailedEvent({key:S,error:A}),A}})}var ah=n=>ke((r,e)=>function(t,i){return N(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new fe({code:Se.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(Ze(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new fe({code:Se.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return sh.call(this,o.getValidateRule(n),[i],e,"TRTC"),r.call(this,o,i)})});var ch=0,jp=class{constructor(r,e){E(this,"player");E(this,"publisher");E(this,"mixInput");this.mixInput=new Va(e),r.url?(this.player=new Audio(r.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(r.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(r.track),this.mixInput.connect()}updateSettings(r){!this.player||(V(r.volume)||(this.volume=r.volume),V(r.loop)||(this.loop=r.loop),V(r.playbackRate)||(this.playbackRate=r.playbackRate))}updateListener(r){if(!!this.player){if(r.onDurationChange){let{onDurationChange:e}=r;this.player.ondurationchange=t=>{e(t.target.duration)}}if(r.onTimeUpdate){let e=r.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}r.onEnded&&(this.player.onended=r.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(r){!this.player||r<0&&r>this.player.duration||(this.player.currentTime=r,this.publisher.currentTime=r)}play(){var r,e;return(r=this.publisher)==null||r.play(),(e=this.player)==null?void 0:e.play()}pause(){var r,e;(r=this.player)==null||r.pause(),(e=this.publisher)==null||e.pause()}stop(){var r;(r=this.player)==null||r.pause(),this.mixInput.disconnect()}setOperation(r){r==="pause"&&this.pause(),r==="resume"&&(this.pause(),this.play()),r==="stop"&&(this.pause(),this.seek(0))}set volume(r){!this.player||!this.publisher||(this.player.volume=r,this.publisher.volume=r)}set loop(r){!this.player||!this.publisher||(this.player.loop=r,this.publisher.loop=r)}set playbackRate(r){!this.player||!this.publisher||(this.player.playbackRate=r,this.publisher.playbackRate=r)}};function Ka(n,r){if(r&&typeof r!="function")throw new fe({code:Se.INVALID_PARAMETER,message:`start audioMixer plugin: param ${n} should be a function.`})}var Za=class{constructor(r){this.core=r;E(this,"log");E(this,"mixedMusicMap",new Map);E(this,"cacheMusicMap",new Map);ch=ch+1,this.log=r.log.createChild({id:`${this.getAlias()}${ch}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${ch}`),this.core=r}getName(){return Za.Name}getAlias(){return"ax"}getGroup(r){return r==null?void 0:r.id}getValidateRule(r){switch(r){case"start":return Za.startValidateRule;case"update":return Za.updateValidateRule;case"stop":return Za.stopValidateRule}}start(r){return N(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${r.id} url: ${r.url}, track: ${r.track}`);let{id:t,url:i}=r;if(this.mixedMusicMap.has(t))return;let o=this.cacheMusicMap.get(t);o?r.url?o.reset():(o.mixInput.replaceSource(r.track),o.mixInput.connect()):(o=new jp(r,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(r),o.updateSettings(r),yield o.play(),this.mixedMusicMap.set(t,o),this.log.info(`start mix audio track ${t} success.`),Z.addEnum({key:502700,value:3}),this.kvUpload(r)})}update(r){return N(this,null,function*(){let{id:e,operation:t,seekFrom:i,playbackRate:o}=r;this.log.info(`update music source, ${JSON.stringify(r)}`);let a=this.mixedMusicMap.get(e);if(!a){this.log.warn(`update music source failed, music id: ${e} not found.`);return}a.updateSettings(r),a.updateListener(r),V(t)||a.setOperation(t),V(i)||a.seek(i),this.kvUpload(r)})}stop(e){return N(this,arguments,function*({id:r}){var t;this.mixedMusicMap.has(r)&&(this.log.info(`remove music source, music id: ${r}`),(t=this.mixedMusicMap.get(r))==null||t.stop(),this.mixedMusicMap.delete(r)),r==="*"&&this.destroyAllMusic()})}kvUpload(r){let{track:e,loop:t,volume:i,playbackRate:o,operation:a,seekFrom:d,onTimeUpdate:p,onDurationChange:_,onEnded:S}=r;e&&Z.addCount({key:502711}),t&&Z.addCount({key:502703}),i&&Z.addCount({key:502704}),o&&Z.addCount({key:502705}),a&&Z.addCount({key:502706}),d&&Z.addCount({key:502707}),typeof p!="function"&&Z.addCount({key:502709}),typeof S!="function"&&Z.addCount({key:502710}),typeof _!="function"&&Z.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((r,e)=>this.stop({id:e}))}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}},Lo=Za;E(Lo,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(r,e,t){if(r.url&&r.url!=="*"){let i=r.url.split("?")[0],o=["mp3","ogg","wav","flac"],a=i.split(".").pop(),d=o.indexOf(a)>=0,p=i.startsWith("blob"),_=i.startsWith("data");if(!(d||p||_))throw new fe({code:Se.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!r.url&&!r.track)throw new fe({code:Se.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});Ka("onTimeUpdate",r.onTimeUpdate),Ka("onEnded",r.onEnded),Ka("onDurationChange",r.onDurationChange)}}),E(Lo,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(r,e,t){Ka("onTimeUpdate",r.onTimeUpdate),Ka("onEnded",r.onEnded),Ka("onDurationChange",r.onDurationChange)}}),E(Lo,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),E(Lo,"Name","AudioMixer");var dh=0,zp,ec=class{constructor(r){this.core=r;E(this,"log");E(this,"audioContext",kr("denoiser"));E(this,"workletNode");dh=dh+1,this.log=r.log.createChild({id:`${this.getAlias()}${dh}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${dh}`),r.assetsPath&&this.preload(`${r.assetsPath}/denoiser-wasm.js`)}static startValidateRule(r){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,i,o){if(!r.room.audioManager.hasAudioTrack)throw new fe({code:Se.INVALID_OPERATION,extraCode:5106,fnName:i})}}}preload(r){return zp||(zp=this.doPreload(r)),zp}doPreload(r){return N(this,null,function*(){let e=yield this.core.fileDownloader.download(r,{type:"blob"}),t=URL.createObjectURL(e);try{yield Rs(this.audioContext,t)}finally{URL.revokeObjectURL(t)}})}getName(){return ec.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(r){switch(r){case"start":return ec.startValidateRule(this.core);case"update":return ec.updateValidateRule;case"stop":return ec.stopValidateRule}}start(r){return N(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${r.assetsPath}/denoiser-wasm.js`),!this.workletNode){let t=String(Date.now()).slice(0,-3),{auth:i,sign:o,status:a,message:d}=yield EI(_e(oe({},r),{timestamp:t}));if(!i)throw this.log.info(`RTCAIDenoiser: ${r.userId} auth result: ${i}. Message: ${d}`),new fe({code:Se.INVALID_PARAMETER,message:d});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(r.sdkAppId),userId:r.userId,timestamp:t,sign:o,status:a}}),this.workletNode.port.onmessage=p=>{let{data:_}=p;_.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${_.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return N(this,null,function*(){})}stop(){return N(this,null,function*(){if(!this.workletNode)return;let{room:r}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield r.audioManager.removeDenoiser(this.workletNode)})}destroy(){!this.workletNode||(this.workletNode.port.onmessage=null)}},Ls=ec;E(Ls,"updateValidateRule",{type:"object"}),E(Ls,"stopValidateRule",{type:"object"}),E(Ls,"Name","AIDenoiser");function gI(n,r=b.MAIN){return`https://${Zi[r]||ll(n,r)}/api/v1/audioAiAuth`}function EI(i){return N(this,arguments,function*({sdkAppId:n,userId:r,userSig:e,timestamp:t}){let a=`${gI(n)}?sdkAppId=${n}&userId=${r}&userSig=${e}&timestamp=${t}`,d=yield fetch(a),{data:{errCode:p,errMsg:_,sign:S,status:v}}=yield d.json();if(v==="1")return{auth:!0,sign:S,status:v,message:_};let A="Init RTCAIDenoiser failed.",w="";switch(p){case 1:w="Please check your params.";break;case 2:w="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:w="Server is invalid. Please contact our engineer. ";break;case 4:w="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:w="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:w="Your version is not supported.";break}return{auth:!1,status:v,message:_?`${A} Reason: ${_}. ${w}`:`${A}, ${w}`}})}var Dg=$t(nr(),1);var Jp=class extends Dg.EventEmitter{constructor(){super();this.state="nominal";this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return N(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!Nt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){je.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,i=e[e.length-1];this.state=i.state,(this.stateNum>3||t>3)&&J.info(`${i.source}: ${i.state}`),this.emit("state-changed",{type:i.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){je.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},TI=new Jp,qp=TI;function Xp([n,r]){let e=r.byteLength,t=parseInt(String(e/255),10),i=e%255,o=[];o.push(0,0,0,1,6,n);for(let d=0;d<t;d++)o.push(255);o.push(i);let a=new DataView(r);return o.push(...new Uint8Array(a.buffer)),o.push(128),new to(new DataView(new Uint8Array(o).buffer),!0)}function Qp(n){return n.type==="empty"||n.data.byteLength===0}function Yp(n){return n.getInt32(0)===1&&n.getInt8(4)===6}function Kp(n){let r=0,e=0,t=new DataView(n);for(let i=0;i<n.byteLength;i++)switch(t.getUint8(i)){case 0:r++;break;case 1:(r===2||r===3)&&e++,r=0;break;default:r=0;break}return e}function Zp({frame:n,seiMessageList:r}){if(!r||r.length===0||n.data.byteLength===0)return n;let e=Kp(n.data),t=9-e;if(t<=0)return n;let i=r.splice(0,t).reverse().map(Xp),o=i.reduce((S,v)=>S+v.dataView.byteLength,0),a=new ArrayBuffer(o+n.data.byteLength),d=new DataView(a),p=new DataView(n.data),_=0;for(let S=0;S<i.length;S++)for(let v=0;v<i[S].dataView.byteLength;v++)d.setInt8(_++,i[S].dataView.getInt8(v));for(let S=0;S<n.data.byteLength;S++)d.setInt8(_++,p.getInt8(S));return n.data=a,n}function ef({frame:n,onSEI:r}){try{let e=new DataView(n.data);if(Qp(n)||!Yp(e))return n;let t=[],i=0,o=-1,a=-1;for(let d=0;d<n.data.byteLength;d++){let p=e.getUint8(d);if(p===0)i++;else if(p===1){if(i===2||i===3){let _=d-i;if(o===-1?o=_:a===-1&&(a=_,t.push(new to(new DataView(e.buffer.slice(o,a)))),o=_,a=-1),!(e.getUint8(d+1)===6)){n.data=e.buffer.slice(_);break}}i=0}else i=0}r==null||r(t.reverse())}catch(e){}return n}var tf=0,rf=class{constructor(r){this.core=r;E(this,"log");E(this,"_seiMessageList",[]);E(this,"_smallSeiMessageList",[]);E(this,"_subStreamSeiMessageList",[]);tf++,this.log=r.log.createChild({id:`${this.getAlias()}${tf}`}),this.log.info(`[sei] created id=${this.getAlias()}${tf}`),this.core=r,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:r,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Zp({frame:r,seiMessageList:t})}catch(t){this.log.warn(t)}return r}decode({frame:r,track:e}){return ef({frame:r,onSEI:t=>{t.forEach(i=>{this.core.trtc.emit(me.SEI_MESSAGE,{seiPayloadType:i.seiPayloadType,data:i.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(r){switch(r){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Qn?this.encode:Zp,type:1}),this.core.room.videoManager.addDecodeProcessor({processor:Qn?this.decode:ef,type:1})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:1}),this.core.room.videoManager.removeDecodeProcessor({type:1})}update({buffer:r,options:e}){var o;let t=[e.seiPayloadType,r],i=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),i&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:i})}getName(){return rf.Name}getAlias(){return"sei"}getGroup(){return"sei"}},tc=rf;E(tc,"autoStart",!0),E(tc,"Name","SEI");var Og=$t(nr(),1);var kg=Symbol("instance"),mP=Symbol("abortCtrl"),uh=Symbol("cacheResult"),mu=class{constructor(r,e,t){this.oldState=r,this.newState=e,this.action=t,this.aborted=!1}abort(r){this.aborted=!0,fu.call(r,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},_u=class extends Error{constructor(r,e,t){super(e),this.state=r,this.message=e,this.cause=t}};function SI(n){return typeof n=="object"&&n&&"then"in n}var pu=new Map;function mt(n,r,e={}){return(t,i,o)=>{let a=e.action||i;if(!e.context){let p=pu.get(t)||[];pu.has(t)||pu.set(t,p),p.push({from:n,to:r,action:a})}let d=o.value;o.value=function(...p){let _=this;if(e.context&&(_=Re.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),_.state===r)return e.sync?_[uh]:Promise.resolve(_[uh]);_.state instanceof mu&&_.state.action==e.abortAction&&_.state.abort(_);let S=null;Array.isArray(n)?n.length==0?_.state instanceof mu&&_.state.abort(_):(typeof _.state!="string"||!n.includes(_.state))&&(S=new _u(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not from ${n.join("|")}`)):n!==_.state&&(S=new _u(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not from ${n}`));let v=W=>{if(e.fail&&e.fail.call(this,W),e.sync){if(e.ignoreError)return W;throw W}else return e.ignoreError?Promise.resolve(W):Promise.reject(W)};if(S)return v(S);let A=_.state,w=new mu(A,r,a);fu.call(_,w);let M=W=>{var ie;return _[uh]=W,w.aborted||(fu.call(_,r),(ie=e.success)===null||ie===void 0||ie.call(this,_[uh])),W},L=W=>(fu.call(_,A,W),v(W));try{let W=d.apply(this,p);return SI(W)?W.then(M).catch(L):e.sync?M(W):Promise.resolve(M(W))}catch(W){return L(W)}}}}function rc(...n){return(r,e,t)=>{let i=t.value,o=e;t.value=function(...a){if(!n.includes(this.state.toString()))throw new _u(this.state,`${this.name} ${o} failed: current state ${this.state} not in ${n}`);return i.apply(this,a)}}}var II=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function fu(n,r){let e=this._state;this._state=n;let t=n.toString();n&&this.emit(t,e),this.emit(Re.STATECHANGED,n,e,r),this.updateDevTools({value:n,old:e,err:r instanceof Error?r.message:String(r)})}var Re=class extends Og.default{constructor(r,e,t){super(),this.name=r,this.groupName=e,this._state=Re.INIT,r||(r=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let i=t[kg];i?this.name=i.name+"-"+i.count++:t[kg]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let r=Object.getPrototypeOf(this),e=pu.get(r)||[],t=new Set,i=[],o=[],a=new Set,d=Object.getPrototypeOf(r);pu.has(d)&&(d.stateDiagram.forEach(_=>t.add(_)),d.allStates.forEach(_=>a.add(_))),e.forEach(({from:_,to:S,action:v})=>{typeof _=="string"?i.push({from:_,to:S,action:v}):_.length?_.forEach(A=>{i.push({from:A,to:S,action:v})}):o.push({to:S,action:v})}),i.forEach(({from:_,to:S,action:v})=>{a.add(_),a.add(S),a.add(v+"ing"),t.add(`${_} --> ${v}ing : ${v}`),t.add(`${v}ing --> ${S} : ${v} \u{1F7E2}`),t.add(`${v}ing --> ${_} : ${v} \u{1F534}`)}),o.forEach(({to:_,action:S})=>{t.add(`${S}ing --> ${_} : ${S} \u{1F7E2}`),a.forEach(v=>{v!==_&&t.add(`${v} --> ${S}ing : ${S}`)})});let p=[...t];return Object.defineProperties(r,{stateDiagram:{value:p},allStates:{value:a}}),p}static get(r){let e;return typeof r=="string"?(e=Re.instances.get(r),e||Re.instances.set(r,e=new Re(r,void 0,Object.create(Re.prototype)))):(e=Re.instances2.get(r),e||Re.instances2.set(r,e=new Re(r.constructor.name,void 0,Object.create(Re.prototype)))),e}static getState(r){var e;return(e=Re.get(r))===null||e===void 0?void 0:e.state}updateDevTools(r={}){II(Re.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},r))}get state(){return this._state}set state(r){fu.call(this,r)}};Re.STATECHANGED="stateChanged";Re.UPDATEAFSM="updateAFSM";Re.INIT="[*]";Re.ON="on";Re.OFF="off";Re.instances=new Map;Re.instances2=new WeakMap;function yI(){var n;self.onmessage=r=>{if(r.data.type==="init"){let{canvas:e,wasmScript:t,wasmBinary:i}=r.data,o=e==null?void 0:e.getContext("2d"),a=0,d=0,p={wasmBinary:i,postRun:()=>{n=new p.VideoDecoder({videoInfo(_,S){a=_,d=S,console.log("video info",_,S)},yuvData(_,S){let v=a*d,A=v>>2,w=p.HEAPU32[_>>2],M=p.HEAPU32[(_>>2)+1],L=p.HEAPU32[(_>>2)+2],W=p.HEAPU8.subarray(w,w+v),ie=p.HEAPU8.subarray(M,M+A),Me=p.HEAPU8.subarray(L,L+A),pe=new Uint8Array(v+A+A);pe.set(W),pe.set(ie,v),pe.set(Me,v+A);let et=new VideoFrame(pe,{codedWidth:a,codedHeight:d,format:"I420",timestamp:S});e?(o==null||o.drawImage(et,0,0,e.width,e.height),o==null||o.commit()):self.postMessage({type:"yuvData",videoFrame:et},[et])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+t)()(p)}else if(r.data.type==="decode"){let{packet:e}=r.data;n==null||n.decode(e.data,e.type=="key",e.timestamp)}else if(r.data.type==="setCodec"){let{codec:e,format:t,description:i}=r.data;n==null||n.setCodec(e,t,i!=null?i:"")}}}var _n=class extends Re{constructor(e,t,i=!1,o,a=!1){super();this.createModule=e;this.wasmBinary=t;this.workerMode=i;this.canvas=o;this.yuvMode=a;this.module={};this.width=0;this.height=0}initialize(e){return N(this,null,function*(){var i;if(this.workerMode){let o=new RegExp("\\{(.+)\\}","s").exec(yI.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([o],{type:"text/javascript"})));let a=(i=this.canvas)==null?void 0:i.transferControlToOffscreen(),d=yield this.wasmBinary;return console.warn("worker mode",d),this.worker.postMessage({type:"init",canvas:a,wasmScript:this.createModule.toString(),wasmBinary:d},a?[a,d]:[d]),new Promise(p=>{this.worker.onmessage=_=>{if(_.data.type==="ready")delete this.wasmBinary,p(),console.warn("worker mode initialize success");else if(_.data.type==="yuvData"){let{videoFrame:S}=_.data;this.emit("videoFrame",S)}}})}let t=this.module;return this.wasmBinary&&(t.wasmBinary=yield this.wasmBinary),t.print=o=>console.log(o),t.printErr=o=>console.log(`[JS] ERROR: ${o}`),t.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(o=>{t.postRun=a=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),o()},e&&Object.assign(t,e),this.createModule(t)})})}configure(e){var t,i,o;this.config=e,(i=this.decoder)==null||i.setCodec(this.config.codec,this.config.description?"avcc":"annexb",(t=this.config.description)!=null?t:""),(o=this.worker)==null||o.postMessage({type:"setCodec",codec:this.config.codec,format:this.config.description?"avcc":"annexb",description:this.config.description})}decode(e){var t,i;(t=this.decoder)==null||t.decode(e.data,e.type=="key",e.timestamp),this.state==="configured"&&((i=this.worker)==null||i.postMessage({type:"decode",packet:e}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(e,t){this.width=e,this.height=t;let i={width:e,height:t};this.emit("videoCodecInfo",i)}yuvData(e,t){if(!this.module)return;let i=this.width*this.height,o=i>>2,a=this.module.HEAPU32[e>>2],d=this.module.HEAPU32[(e>>2)+1],p=this.module.HEAPU32[(e>>2)+2],_=this.module.HEAPU8.subarray(a,a+i),S=this.module.HEAPU8.subarray(d,d+o),v=this.module.HEAPU8.subarray(p,p+o);if(this.yuvMode){this.emit("videoFrame",[_,S,v]);return}let A=new Uint8Array(i+o+o);A.set(_),A.set(S,i),A.set(v,i+o),this.emit("videoFrame",new VideoFrame(A,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(e){let t={errMsg:e};this.emit("error",t)}};j([mt([Re.INIT,"closed"],"initialized")],_n.prototype,"initialize",1),j([mt("initialized","configured")],_n.prototype,"configure",1),j([mt([],Re.INIT)],_n.prototype,"reset",1),j([mt([],"closed")],_n.prototype,"close",1);var vI=(()=>{var n=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(r={}){var e=r,t,i;e.ready=new Promise((u,h)=>{t=u,i=h});var o=Object.assign({},e),a=[],d="./this.program",p=(u,h)=>{throw h},_=typeof window=="object",S=typeof importScripts=="function",v=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A="";function w(u){return e.locateFile?e.locateFile(u,A):A+u}var M,L,W,ie;(_||S)&&(S?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),n&&(A=n),A.indexOf("blob:")!==0?A=A.substr(0,A.replace(/[?#].*/,"").lastIndexOf("/")+1):A="",M=u=>{var h=new XMLHttpRequest;return h.open("GET",u,!1),h.send(null),h.responseText},S&&(W=u=>{var h=new XMLHttpRequest;return h.open("GET",u,!1),h.responseType="arraybuffer",h.send(null),new Uint8Array(h.response)}),L=(u,h,s)=>{var c=new XMLHttpRequest;c.open("GET",u,!0),c.responseType="arraybuffer",c.onload=()=>{if(c.status==200||c.status==0&&c.response){h(c.response);return}s()},c.onerror=s,c.send(null)},ie=u=>document.title=u);var Me=e.print||console.log.bind(console),pe=e.printErr||console.error.bind(console);Object.assign(e,o),o=null,e.arguments&&(a=e.arguments),e.thisProgram&&(d=e.thisProgram),e.quit&&(p=e.quit);var et;e.wasmBinary&&(et=e.wasmBinary);var Ie=e.noExitRuntime||!0;typeof WebAssembly!="object"&&Jt("no native wasm support detected");var _r,Ae,or=!1,Lt;function Ct(u,h){u||Jt(h)}var Ce,Ue,at,Tt,x,ce,Yr,fi;function $i(){var u=_r.buffer;e.HEAP8=Ce=new Int8Array(u),e.HEAP16=at=new Int16Array(u),e.HEAP32=x=new Int32Array(u),e.HEAPU8=Ue=new Uint8Array(u),e.HEAPU16=Tt=new Uint16Array(u),e.HEAPU32=ce=new Uint32Array(u),e.HEAPF32=Yr=new Float32Array(u),e.HEAPF64=fi=new Float64Array(u)}var Kr,Bi=[],ct=[],ut=[],Bo=!1;function hc(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)fc(e.preRun.shift());Sn(Bi)}function mc(){Bo=!0,!e.noFSInit&&!m.init.initialized&&m.init(),m.ignorePermissions=!1,Ut.init(),Sn(ct)}function pc(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)_i(e.postRun.shift());Sn(ut)}function fc(u){Bi.unshift(u)}function _c(u){ct.unshift(u)}function _i(u){ut.unshift(u)}var de=0,Mr=null,Lr=null;function bh(u){return u}function Zr(u){de++,e.monitorRunDependencies&&e.monitorRunDependencies(de)}function gi(u){if(de--,e.monitorRunDependencies&&e.monitorRunDependencies(de),de==0&&(Mr!==null&&(clearInterval(Mr),Mr=null),Lr)){var h=Lr;Lr=null,h()}}function Jt(u){e.onAbort&&e.onAbort(u),u="Aborted("+u+")",pe(u),or=!0,Lt=1,u+=". Build with -sASSERTIONS for more info.";var h=new WebAssembly.RuntimeError(u);throw i(h),h}var Hi="data:application/octet-stream;base64,";function so(u){return u.startsWith(Hi)}var gr;gr="videodec.wasm",so(gr)||(gr=w(gr));function ao(u){if(u==gr&&et)return new Uint8Array(et);if(W)return W(u);throw"both async and sync fetching of the wasm failed"}function gc(u){return!et&&(_||S)&&typeof fetch=="function"?fetch(u,{credentials:"same-origin"}).then(h=>{if(!h.ok)throw"failed to load wasm binary file at '"+u+"'";return h.arrayBuffer()}).catch(()=>ao(u)):Promise.resolve().then(()=>ao(u))}function Ho(u,h,s){return gc(u).then(c=>WebAssembly.instantiate(c,h)).then(c=>c).then(s,c=>{pe("failed to asynchronously prepare wasm: "+c),Jt(c)})}function Wo(u,h,s,c){return!u&&typeof WebAssembly.instantiateStreaming=="function"&&!so(h)&&typeof fetch=="function"?fetch(h,{credentials:"same-origin"}).then(l=>{var f=WebAssembly.instantiateStreaming(l,s);return f.then(c,function(g){return pe("wasm streaming compile failed: "+g),pe("falling back to ArrayBuffer instantiation"),Ho(h,s,c)})}):Ho(h,s,c)}function G(){var u={a:Dh};function h(c,l){var f=c.exports;return Ae=f,_r=Ae.E,$i(),Kr=Ae.H,_c(Ae.F),gi("wasm-instantiate"),f}Zr("wasm-instantiate");function s(c){h(c.instance)}if(e.instantiateWasm)try{return e.instantiateWasm(u,h)}catch(c){pe("Module.instantiateWasm callback failed with error: "+c),i(c)}return Wo(et,gr,u,s).catch(i),{}}var ee,ve,Sn=u=>{for(;u.length>0;)u.shift()(e)};function Ec(u){this.excPtr=u,this.ptr=u-24,this.set_type=function(h){ce[this.ptr+4>>2]=h},this.get_type=function(){return ce[this.ptr+4>>2]},this.set_destructor=function(h){ce[this.ptr+8>>2]=h},this.get_destructor=function(){return ce[this.ptr+8>>2]},this.set_caught=function(h){h=h?1:0,Ce[this.ptr+12>>0]=h},this.get_caught=function(){return Ce[this.ptr+12>>0]!=0},this.set_rethrown=function(h){h=h?1:0,Ce[this.ptr+13>>0]=h},this.get_rethrown=function(){return Ce[this.ptr+13>>0]!=0},this.init=function(h,s){this.set_adjusted_ptr(0),this.set_type(h),this.set_destructor(s)},this.set_adjusted_ptr=function(h){ce[this.ptr+16>>2]=h},this.get_adjusted_ptr=function(){return ce[this.ptr+16>>2]},this.get_exception_ptr=function(){var h=ad(this.get_type());if(h)return ce[this.excPtr>>2];var s=this.get_adjusted_ptr();return s!==0?s:this.excPtr}}var In=0,Tc=0;function js(u,h,s){var c=new Ec(u);throw c.init(h,s),In=u,Tc++,In}var er=u=>(x[od()>>2]=u,u),he={isAbs:u=>u.charAt(0)==="/",splitPath:u=>{var h=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return h.exec(u).slice(1)},normalizeArray:(u,h)=>{for(var s=0,c=u.length-1;c>=0;c--){var l=u[c];l==="."?u.splice(c,1):l===".."?(u.splice(c,1),s++):s&&(u.splice(c,1),s--)}if(h)for(;s;s--)u.unshift("..");return u},normalize:u=>{var h=he.isAbs(u),s=u.substr(-1)==="/";return u=he.normalizeArray(u.split("/").filter(c=>!!c),!h).join("/"),!u&&!h&&(u="."),u&&s&&(u+="/"),(h?"/":"")+u},dirname:u=>{var h=he.splitPath(u),s=h[0],c=h[1];return!s&&!c?".":(c&&(c=c.substr(0,c.length-1)),s+c)},basename:u=>{if(u==="/")return"/";u=he.normalize(u),u=u.replace(/\/$/,"");var h=u.lastIndexOf("/");return h===-1?u:u.substr(h+1)},join:function(){var u=Array.prototype.slice.call(arguments);return he.normalize(u.join("/"))},join2:(u,h)=>he.normalize(u+"/"+h)},Ei=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return u=>crypto.getRandomValues(u);Jt("initRandomDevice")},Wi=u=>(Wi=Ei())(u),dt={resolve:function(){for(var u="",h=!1,s=arguments.length-1;s>=-1&&!h;s--){var c=s>=0?arguments[s]:m.cwd();if(typeof c!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!c)return"";u=c+"/"+u,h=he.isAbs(c)}return u=he.normalizeArray(u.split("/").filter(l=>!!l),!h).join("/"),(h?"/":"")+u||"."},relative:(u,h)=>{u=dt.resolve(u).substr(1),h=dt.resolve(h).substr(1);function s(C){for(var k=0;k<C.length&&C[k]==="";k++);for(var O=C.length-1;O>=0&&C[O]==="";O--);return k>O?[]:C.slice(k,O-k+1)}for(var c=s(u.split("/")),l=s(h.split("/")),f=Math.min(c.length,l.length),g=f,T=0;T<f;T++)if(c[T]!==l[T]){g=T;break}for(var R=[],T=g;T<c.length;T++)R.push("..");return R=R.concat(l.slice(g)),R.join("/")}},Ge=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,sr=(u,h,s)=>{for(var c=h+s,l=h;u[l]&&!(l>=c);)++l;if(l-h>16&&u.buffer&&Ge)return Ge.decode(u.subarray(h,l));for(var f="";h<l;){var g=u[h++];if(!(g&128)){f+=String.fromCharCode(g);continue}var T=u[h++]&63;if((g&224)==192){f+=String.fromCharCode((g&31)<<6|T);continue}var R=u[h++]&63;if((g&240)==224?g=(g&15)<<12|T<<6|R:g=(g&7)<<18|T<<12|R<<6|u[h++]&63,g<65536)f+=String.fromCharCode(g);else{var C=g-65536;f+=String.fromCharCode(55296|C>>10,56320|C&1023)}}return f},ei=[],Ur=u=>{for(var h=0,s=0;s<u.length;++s){var c=u.charCodeAt(s);c<=127?h++:c<=2047?h+=2:c>=55296&&c<=57343?(h+=4,++s):h+=3}return h},yn=(u,h,s,c)=>{if(!(c>0))return 0;for(var l=s,f=s+c-1,g=0;g<u.length;++g){var T=u.charCodeAt(g);if(T>=55296&&T<=57343){var R=u.charCodeAt(++g);T=65536+((T&1023)<<10)|R&1023}if(T<=127){if(s>=f)break;h[s++]=T}else if(T<=2047){if(s+1>=f)break;h[s++]=192|T>>6,h[s++]=128|T&63}else if(T<=65535){if(s+2>=f)break;h[s++]=224|T>>12,h[s++]=128|T>>6&63,h[s++]=128|T&63}else{if(s+3>=f)break;h[s++]=240|T>>18,h[s++]=128|T>>12&63,h[s++]=128|T>>6&63,h[s++]=128|T&63}}return h[s]=0,s-l};function tr(u,h,s){var c=s>0?s:Ur(u)+1,l=new Array(c),f=yn(u,l,0,l.length);return h&&(l.length=f),l}var Sc=()=>{if(!ei.length){var u=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(u=window.prompt("Input: "),u!==null&&(u+=`
55
+ `)):typeof readline=="function"&&(u=readline(),u!==null&&(u+=`
56
+ `)),!u)return null;ei=tr(u,!0)}return ei.shift()},Ut={ttys:[],init:function(){},shutdown:function(){},register:function(u,h){Ut.ttys[u]={input:[],output:[],ops:h},m.registerDevice(u,Ut.stream_ops)},stream_ops:{open:function(u){var h=Ut.ttys[u.node.rdev];if(!h)throw new m.ErrnoError(43);u.tty=h,u.seekable=!1},close:function(u){u.tty.ops.fsync(u.tty)},fsync:function(u){u.tty.ops.fsync(u.tty)},read:function(u,h,s,c,l){if(!u.tty||!u.tty.ops.get_char)throw new m.ErrnoError(60);for(var f=0,g=0;g<c;g++){var T;try{T=u.tty.ops.get_char(u.tty)}catch(R){throw new m.ErrnoError(29)}if(T===void 0&&f===0)throw new m.ErrnoError(6);if(T==null)break;f++,h[s+g]=T}return f&&(u.node.timestamp=Date.now()),f},write:function(u,h,s,c,l){if(!u.tty||!u.tty.ops.put_char)throw new m.ErrnoError(60);try{for(var f=0;f<c;f++)u.tty.ops.put_char(u.tty,h[s+f])}catch(g){throw new m.ErrnoError(29)}return c&&(u.node.timestamp=Date.now()),f}},default_tty_ops:{get_char:function(u){return Sc()},put_char:function(u,h){h===null||h===10?(Me(sr(u.output,0)),u.output=[]):h!=0&&u.output.push(h)},fsync:function(u){u.output&&u.output.length>0&&(Me(sr(u.output,0)),u.output=[])},ioctl_tcgets:function(u){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(u,h,s){return 0},ioctl_tiocgwinsz:function(u){return[24,80]}},default_tty1_ops:{put_char:function(u,h){h===null||h===10?(pe(sr(u.output,0)),u.output=[]):h!=0&&u.output.push(h)},fsync:function(u){u.output&&u.output.length>0&&(pe(sr(u.output,0)),u.output=[])}}},Go=u=>{Jt()},se={ops_table:null,mount(u){return se.createNode(null,"/",16895,0)},createNode(u,h,s,c){if(m.isBlkdev(s)||m.isFIFO(s))throw new m.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:m.chrdev_stream_ops}});var l=m.createNode(u,h,s,c);return m.isDir(l.mode)?(l.node_ops=se.ops_table.dir.node,l.stream_ops=se.ops_table.dir.stream,l.contents={}):m.isFile(l.mode)?(l.node_ops=se.ops_table.file.node,l.stream_ops=se.ops_table.file.stream,l.usedBytes=0,l.contents=null):m.isLink(l.mode)?(l.node_ops=se.ops_table.link.node,l.stream_ops=se.ops_table.link.stream):m.isChrdev(l.mode)&&(l.node_ops=se.ops_table.chrdev.node,l.stream_ops=se.ops_table.chrdev.stream),l.timestamp=Date.now(),u&&(u.contents[h]=l,u.timestamp=l.timestamp),l},getFileDataAsTypedArray(u){return u.contents?u.contents.subarray?u.contents.subarray(0,u.usedBytes):new Uint8Array(u.contents):new Uint8Array(0)},expandFileStorage(u,h){var s=u.contents?u.contents.length:0;if(!(s>=h)){var c=1024*1024;h=Math.max(h,s*(s<c?2:1.125)>>>0),s!=0&&(h=Math.max(h,256));var l=u.contents;u.contents=new Uint8Array(h),u.usedBytes>0&&u.contents.set(l.subarray(0,u.usedBytes),0)}},resizeFileStorage(u,h){if(u.usedBytes!=h)if(h==0)u.contents=null,u.usedBytes=0;else{var s=u.contents;u.contents=new Uint8Array(h),s&&u.contents.set(s.subarray(0,Math.min(h,u.usedBytes))),u.usedBytes=h}},node_ops:{getattr(u){var h={};return h.dev=m.isChrdev(u.mode)?u.id:1,h.ino=u.id,h.mode=u.mode,h.nlink=1,h.uid=0,h.gid=0,h.rdev=u.rdev,m.isDir(u.mode)?h.size=4096:m.isFile(u.mode)?h.size=u.usedBytes:m.isLink(u.mode)?h.size=u.link.length:h.size=0,h.atime=new Date(u.timestamp),h.mtime=new Date(u.timestamp),h.ctime=new Date(u.timestamp),h.blksize=4096,h.blocks=Math.ceil(h.size/h.blksize),h},setattr(u,h){h.mode!==void 0&&(u.mode=h.mode),h.timestamp!==void 0&&(u.timestamp=h.timestamp),h.size!==void 0&&se.resizeFileStorage(u,h.size)},lookup(u,h){throw m.genericErrors[44]},mknod(u,h,s,c){return se.createNode(u,h,s,c)},rename(u,h,s){if(m.isDir(u.mode)){var c;try{c=m.lookupNode(h,s)}catch(f){}if(c)for(var l in c.contents)throw new m.ErrnoError(55)}delete u.parent.contents[u.name],u.parent.timestamp=Date.now(),u.name=s,h.contents[s]=u,h.timestamp=u.parent.timestamp,u.parent=h},unlink(u,h){delete u.contents[h],u.timestamp=Date.now()},rmdir(u,h){var s=m.lookupNode(u,h);for(var c in s.contents)throw new m.ErrnoError(55);delete u.contents[h],u.timestamp=Date.now()},readdir(u){var h=[".",".."];for(var s in u.contents)!u.contents.hasOwnProperty(s)||h.push(s);return h},symlink(u,h,s){var c=se.createNode(u,h,41471,0);return c.link=s,c},readlink(u){if(!m.isLink(u.mode))throw new m.ErrnoError(28);return u.link}},stream_ops:{read(u,h,s,c,l){var f=u.node.contents;if(l>=u.node.usedBytes)return 0;var g=Math.min(u.node.usedBytes-l,c);if(g>8&&f.subarray)h.set(f.subarray(l,l+g),s);else for(var T=0;T<g;T++)h[s+T]=f[l+T];return g},write(u,h,s,c,l,f){if(!c)return 0;var g=u.node;if(g.timestamp=Date.now(),h.subarray&&(!g.contents||g.contents.subarray)){if(f)return g.contents=h.subarray(s,s+c),g.usedBytes=c,c;if(g.usedBytes===0&&l===0)return g.contents=h.slice(s,s+c),g.usedBytes=c,c;if(l+c<=g.usedBytes)return g.contents.set(h.subarray(s,s+c),l),c}if(se.expandFileStorage(g,l+c),g.contents.subarray&&h.subarray)g.contents.set(h.subarray(s,s+c),l);else for(var T=0;T<c;T++)g.contents[l+T]=h[s+T];return g.usedBytes=Math.max(g.usedBytes,l+c),c},llseek(u,h,s){var c=h;if(s===1?c+=u.position:s===2&&m.isFile(u.node.mode)&&(c+=u.node.usedBytes),c<0)throw new m.ErrnoError(28);return c},allocate(u,h,s){se.expandFileStorage(u.node,h+s),u.node.usedBytes=Math.max(u.node.usedBytes,h+s)},mmap(u,h,s,c,l){if(!m.isFile(u.node.mode))throw new m.ErrnoError(43);var f,g,T=u.node.contents;if(!(l&2)&&T.buffer===Ce.buffer)g=!1,f=T.byteOffset;else{if((s>0||s+h<T.length)&&(T.subarray?T=T.subarray(s,s+h):T=Array.prototype.slice.call(T,s,s+h)),g=!0,f=Go(h),!f)throw new m.ErrnoError(48);Ce.set(T,f)}return{ptr:f,allocated:g}},msync(u,h,s,c,l){return se.stream_ops.write(u,h,0,c,s,!1),0}}},jo=(u,h,s,c)=>{var l=c?"":`al ${u}`;L(u,f=>{Ct(f,`Loading data file "${u}" failed (no arrayBuffer).`),h(new Uint8Array(f)),l&&gi(l)},f=>{if(s)s();else throw`Loading data file "${u}" failed.`}),l&&Zr(l)},zs=e.preloadPlugins||[];function Ic(u,h,s,c){typeof Browser!="undefined"&&Browser.init();var l=!1;return zs.forEach(function(f){l||f.canHandle(h)&&(f.handle(u,h,s,c),l=!0)}),l}function Js(u,h,s,c,l,f,g,T,R,C){var k=h?dt.resolve(he.join2(u,h)):u,O=`cp ${k}`;function $(F){function q(K){C&&C(),T||m.createDataFile(u,h,K,c,l,R),f&&f(),gi(O)}Ic(F,k,q,()=>{g&&g(),gi(O)})||q(F)}Zr(O),typeof s=="string"?jo(s,F=>$(F),g):$(s)}function qs(u){var h={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},s=h[u];if(typeof s=="undefined")throw new Error(`Unknown file open mode: ${u}`);return s}function Gi(u,h){var s=0;return u&&(s|=365),h&&(s|=146),s}var m={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(u,h={})=>{if(u=dt.resolve(u),!u)return{path:"",node:null};var s={follow_mount:!0,recurse_count:0};if(h=Object.assign(s,h),h.recurse_count>8)throw new m.ErrnoError(32);for(var c=u.split("/").filter(O=>!!O),l=m.root,f="/",g=0;g<c.length;g++){var T=g===c.length-1;if(T&&h.parent)break;if(l=m.lookupNode(l,c[g]),f=he.join2(f,c[g]),m.isMountpoint(l)&&(!T||T&&h.follow_mount)&&(l=l.mounted.root),!T||h.follow)for(var R=0;m.isLink(l.mode);){var C=m.readlink(f);f=dt.resolve(he.dirname(f),C);var k=m.lookupPath(f,{recurse_count:h.recurse_count+1});if(l=k.node,R++>40)throw new m.ErrnoError(32)}}return{path:f,node:l}},getPath:u=>{for(var h;;){if(m.isRoot(u)){var s=u.mount.mountpoint;return h?s[s.length-1]!=="/"?`${s}/${h}`:s+h:s}h=h?`${u.name}/${h}`:u.name,u=u.parent}},hashName:(u,h)=>{for(var s=0,c=0;c<h.length;c++)s=(s<<5)-s+h.charCodeAt(c)|0;return(u+s>>>0)%m.nameTable.length},hashAddNode:u=>{var h=m.hashName(u.parent.id,u.name);u.name_next=m.nameTable[h],m.nameTable[h]=u},hashRemoveNode:u=>{var h=m.hashName(u.parent.id,u.name);if(m.nameTable[h]===u)m.nameTable[h]=u.name_next;else for(var s=m.nameTable[h];s;){if(s.name_next===u){s.name_next=u.name_next;break}s=s.name_next}},lookupNode:(u,h)=>{var s=m.mayLookup(u);if(s)throw new m.ErrnoError(s,u);for(var c=m.hashName(u.id,h),l=m.nameTable[c];l;l=l.name_next){var f=l.name;if(l.parent.id===u.id&&f===h)return l}return m.lookup(u,h)},createNode:(u,h,s,c)=>{var l=new m.FSNode(u,h,s,c);return m.hashAddNode(l),l},destroyNode:u=>{m.hashRemoveNode(u)},isRoot:u=>u===u.parent,isMountpoint:u=>!!u.mounted,isFile:u=>(u&61440)===32768,isDir:u=>(u&61440)===16384,isLink:u=>(u&61440)===40960,isChrdev:u=>(u&61440)===8192,isBlkdev:u=>(u&61440)===24576,isFIFO:u=>(u&61440)===4096,isSocket:u=>(u&49152)===49152,flagsToPermissionString:u=>{var h=["r","w","rw"][u&3];return u&512&&(h+="w"),h},nodePermissions:(u,h)=>m.ignorePermissions?0:h.includes("r")&&!(u.mode&292)||h.includes("w")&&!(u.mode&146)||h.includes("x")&&!(u.mode&73)?2:0,mayLookup:u=>{var h=m.nodePermissions(u,"x");return h||(u.node_ops.lookup?0:2)},mayCreate:(u,h)=>{try{var s=m.lookupNode(u,h);return 20}catch(c){}return m.nodePermissions(u,"wx")},mayDelete:(u,h,s)=>{var c;try{c=m.lookupNode(u,h)}catch(f){return f.errno}var l=m.nodePermissions(u,"wx");if(l)return l;if(s){if(!m.isDir(c.mode))return 54;if(m.isRoot(c)||m.getPath(c)===m.cwd())return 10}else if(m.isDir(c.mode))return 31;return 0},mayOpen:(u,h)=>u?m.isLink(u.mode)?32:m.isDir(u.mode)&&(m.flagsToPermissionString(h)!=="r"||h&512)?31:m.nodePermissions(u,m.flagsToPermissionString(h)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var u=0;u<=m.MAX_OPEN_FDS;u++)if(!m.streams[u])return u;throw new m.ErrnoError(33)},getStreamChecked:u=>{var h=m.getStream(u);if(!h)throw new m.ErrnoError(8);return h},getStream:u=>m.streams[u],createStream:(u,h=-1)=>(m.FSStream||(m.FSStream=function(){this.shared={}},m.FSStream.prototype={},Object.defineProperties(m.FSStream.prototype,{object:{get(){return this.node},set(s){this.node=s}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(s){this.shared.flags=s}},position:{get(){return this.shared.position},set(s){this.shared.position=s}}})),u=Object.assign(new m.FSStream,u),h==-1&&(h=m.nextfd()),u.fd=h,m.streams[h]=u,u),closeStream:u=>{m.streams[u]=null},chrdev_stream_ops:{open:u=>{var h=m.getDevice(u.node.rdev);u.stream_ops=h.stream_ops,u.stream_ops.open&&u.stream_ops.open(u)},llseek:()=>{throw new m.ErrnoError(70)}},major:u=>u>>8,minor:u=>u&255,makedev:(u,h)=>u<<8|h,registerDevice:(u,h)=>{m.devices[u]={stream_ops:h}},getDevice:u=>m.devices[u],getMounts:u=>{for(var h=[],s=[u];s.length;){var c=s.pop();h.push(c),s.push.apply(s,c.mounts)}return h},syncfs:(u,h)=>{typeof u=="function"&&(h=u,u=!1),m.syncFSRequests++,m.syncFSRequests>1&&pe(`warning: ${m.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var s=m.getMounts(m.root.mount),c=0;function l(g){return m.syncFSRequests--,h(g)}function f(g){if(g)return f.errored?void 0:(f.errored=!0,l(g));++c>=s.length&&l(null)}s.forEach(g=>{if(!g.type.syncfs)return f(null);g.type.syncfs(g,u,f)})},mount:(u,h,s)=>{var c=s==="/",l=!s,f;if(c&&m.root)throw new m.ErrnoError(10);if(!c&&!l){var g=m.lookupPath(s,{follow_mount:!1});if(s=g.path,f=g.node,m.isMountpoint(f))throw new m.ErrnoError(10);if(!m.isDir(f.mode))throw new m.ErrnoError(54)}var T={type:u,opts:h,mountpoint:s,mounts:[]},R=u.mount(T);return R.mount=T,T.root=R,c?m.root=R:f&&(f.mounted=T,f.mount&&f.mount.mounts.push(T)),R},unmount:u=>{var h=m.lookupPath(u,{follow_mount:!1});if(!m.isMountpoint(h.node))throw new m.ErrnoError(28);var s=h.node,c=s.mounted,l=m.getMounts(c);Object.keys(m.nameTable).forEach(g=>{for(var T=m.nameTable[g];T;){var R=T.name_next;l.includes(T.mount)&&m.destroyNode(T),T=R}}),s.mounted=null;var f=s.mount.mounts.indexOf(c);s.mount.mounts.splice(f,1)},lookup:(u,h)=>u.node_ops.lookup(u,h),mknod:(u,h,s)=>{var c=m.lookupPath(u,{parent:!0}),l=c.node,f=he.basename(u);if(!f||f==="."||f==="..")throw new m.ErrnoError(28);var g=m.mayCreate(l,f);if(g)throw new m.ErrnoError(g);if(!l.node_ops.mknod)throw new m.ErrnoError(63);return l.node_ops.mknod(l,f,h,s)},create:(u,h)=>(h=h!==void 0?h:438,h&=4095,h|=32768,m.mknod(u,h,0)),mkdir:(u,h)=>(h=h!==void 0?h:511,h&=1023,h|=16384,m.mknod(u,h,0)),mkdirTree:(u,h)=>{for(var s=u.split("/"),c="",l=0;l<s.length;++l)if(!!s[l]){c+="/"+s[l];try{m.mkdir(c,h)}catch(f){if(f.errno!=20)throw f}}},mkdev:(u,h,s)=>(typeof s=="undefined"&&(s=h,h=438),h|=8192,m.mknod(u,h,s)),symlink:(u,h)=>{if(!dt.resolve(u))throw new m.ErrnoError(44);var s=m.lookupPath(h,{parent:!0}),c=s.node;if(!c)throw new m.ErrnoError(44);var l=he.basename(h),f=m.mayCreate(c,l);if(f)throw new m.ErrnoError(f);if(!c.node_ops.symlink)throw new m.ErrnoError(63);return c.node_ops.symlink(c,l,u)},rename:(u,h)=>{var s=he.dirname(u),c=he.dirname(h),l=he.basename(u),f=he.basename(h),g,T,R;if(g=m.lookupPath(u,{parent:!0}),T=g.node,g=m.lookupPath(h,{parent:!0}),R=g.node,!T||!R)throw new m.ErrnoError(44);if(T.mount!==R.mount)throw new m.ErrnoError(75);var C=m.lookupNode(T,l),k=dt.relative(u,c);if(k.charAt(0)!==".")throw new m.ErrnoError(28);if(k=dt.relative(h,s),k.charAt(0)!==".")throw new m.ErrnoError(55);var O;try{O=m.lookupNode(R,f)}catch(q){}if(C!==O){var $=m.isDir(C.mode),F=m.mayDelete(T,l,$);if(F)throw new m.ErrnoError(F);if(F=O?m.mayDelete(R,f,$):m.mayCreate(R,f),F)throw new m.ErrnoError(F);if(!T.node_ops.rename)throw new m.ErrnoError(63);if(m.isMountpoint(C)||O&&m.isMountpoint(O))throw new m.ErrnoError(10);if(R!==T&&(F=m.nodePermissions(T,"w"),F))throw new m.ErrnoError(F);m.hashRemoveNode(C);try{T.node_ops.rename(C,R,f)}catch(q){throw q}finally{m.hashAddNode(C)}}},rmdir:u=>{var h=m.lookupPath(u,{parent:!0}),s=h.node,c=he.basename(u),l=m.lookupNode(s,c),f=m.mayDelete(s,c,!0);if(f)throw new m.ErrnoError(f);if(!s.node_ops.rmdir)throw new m.ErrnoError(63);if(m.isMountpoint(l))throw new m.ErrnoError(10);s.node_ops.rmdir(s,c),m.destroyNode(l)},readdir:u=>{var h=m.lookupPath(u,{follow:!0}),s=h.node;if(!s.node_ops.readdir)throw new m.ErrnoError(54);return s.node_ops.readdir(s)},unlink:u=>{var h=m.lookupPath(u,{parent:!0}),s=h.node;if(!s)throw new m.ErrnoError(44);var c=he.basename(u),l=m.lookupNode(s,c),f=m.mayDelete(s,c,!1);if(f)throw new m.ErrnoError(f);if(!s.node_ops.unlink)throw new m.ErrnoError(63);if(m.isMountpoint(l))throw new m.ErrnoError(10);s.node_ops.unlink(s,c),m.destroyNode(l)},readlink:u=>{var h=m.lookupPath(u),s=h.node;if(!s)throw new m.ErrnoError(44);if(!s.node_ops.readlink)throw new m.ErrnoError(28);return dt.resolve(m.getPath(s.parent),s.node_ops.readlink(s))},stat:(u,h)=>{var s=m.lookupPath(u,{follow:!h}),c=s.node;if(!c)throw new m.ErrnoError(44);if(!c.node_ops.getattr)throw new m.ErrnoError(63);return c.node_ops.getattr(c)},lstat:u=>m.stat(u,!0),chmod:(u,h,s)=>{var c;if(typeof u=="string"){var l=m.lookupPath(u,{follow:!s});c=l.node}else c=u;if(!c.node_ops.setattr)throw new m.ErrnoError(63);c.node_ops.setattr(c,{mode:h&4095|c.mode&-4096,timestamp:Date.now()})},lchmod:(u,h)=>{m.chmod(u,h,!0)},fchmod:(u,h)=>{var s=m.getStreamChecked(u);m.chmod(s.node,h)},chown:(u,h,s,c)=>{var l;if(typeof u=="string"){var f=m.lookupPath(u,{follow:!c});l=f.node}else l=u;if(!l.node_ops.setattr)throw new m.ErrnoError(63);l.node_ops.setattr(l,{timestamp:Date.now()})},lchown:(u,h,s)=>{m.chown(u,h,s,!0)},fchown:(u,h,s)=>{var c=m.getStreamChecked(u);m.chown(c.node,h,s)},truncate:(u,h)=>{if(h<0)throw new m.ErrnoError(28);var s;if(typeof u=="string"){var c=m.lookupPath(u,{follow:!0});s=c.node}else s=u;if(!s.node_ops.setattr)throw new m.ErrnoError(63);if(m.isDir(s.mode))throw new m.ErrnoError(31);if(!m.isFile(s.mode))throw new m.ErrnoError(28);var l=m.nodePermissions(s,"w");if(l)throw new m.ErrnoError(l);s.node_ops.setattr(s,{size:h,timestamp:Date.now()})},ftruncate:(u,h)=>{var s=m.getStreamChecked(u);if((s.flags&2097155)===0)throw new m.ErrnoError(28);m.truncate(s.node,h)},utime:(u,h,s)=>{var c=m.lookupPath(u,{follow:!0}),l=c.node;l.node_ops.setattr(l,{timestamp:Math.max(h,s)})},open:(u,h,s)=>{if(u==="")throw new m.ErrnoError(44);h=typeof h=="string"?qs(h):h,s=typeof s=="undefined"?438:s,h&64?s=s&4095|32768:s=0;var c;if(typeof u=="object")c=u;else{u=he.normalize(u);try{var l=m.lookupPath(u,{follow:!(h&131072)});c=l.node}catch(R){}}var f=!1;if(h&64)if(c){if(h&128)throw new m.ErrnoError(20)}else c=m.mknod(u,s,0),f=!0;if(!c)throw new m.ErrnoError(44);if(m.isChrdev(c.mode)&&(h&=-513),h&65536&&!m.isDir(c.mode))throw new m.ErrnoError(54);if(!f){var g=m.mayOpen(c,h);if(g)throw new m.ErrnoError(g)}h&512&&!f&&m.truncate(c,0),h&=-131713;var T=m.createStream({node:c,path:m.getPath(c),flags:h,seekable:!0,position:0,stream_ops:c.stream_ops,ungotten:[],error:!1});return T.stream_ops.open&&T.stream_ops.open(T),e.logReadFiles&&!(h&1)&&(m.readFiles||(m.readFiles={}),u in m.readFiles||(m.readFiles[u]=1)),T},close:u=>{if(m.isClosed(u))throw new m.ErrnoError(8);u.getdents&&(u.getdents=null);try{u.stream_ops.close&&u.stream_ops.close(u)}catch(h){throw h}finally{m.closeStream(u.fd)}u.fd=null},isClosed:u=>u.fd===null,llseek:(u,h,s)=>{if(m.isClosed(u))throw new m.ErrnoError(8);if(!u.seekable||!u.stream_ops.llseek)throw new m.ErrnoError(70);if(s!=0&&s!=1&&s!=2)throw new m.ErrnoError(28);return u.position=u.stream_ops.llseek(u,h,s),u.ungotten=[],u.position},read:(u,h,s,c,l)=>{if(c<0||l<0)throw new m.ErrnoError(28);if(m.isClosed(u))throw new m.ErrnoError(8);if((u.flags&2097155)===1)throw new m.ErrnoError(8);if(m.isDir(u.node.mode))throw new m.ErrnoError(31);if(!u.stream_ops.read)throw new m.ErrnoError(28);var f=typeof l!="undefined";if(!f)l=u.position;else if(!u.seekable)throw new m.ErrnoError(70);var g=u.stream_ops.read(u,h,s,c,l);return f||(u.position+=g),g},write:(u,h,s,c,l,f)=>{if(c<0||l<0)throw new m.ErrnoError(28);if(m.isClosed(u))throw new m.ErrnoError(8);if((u.flags&2097155)===0)throw new m.ErrnoError(8);if(m.isDir(u.node.mode))throw new m.ErrnoError(31);if(!u.stream_ops.write)throw new m.ErrnoError(28);u.seekable&&u.flags&1024&&m.llseek(u,0,2);var g=typeof l!="undefined";if(!g)l=u.position;else if(!u.seekable)throw new m.ErrnoError(70);var T=u.stream_ops.write(u,h,s,c,l,f);return g||(u.position+=T),T},allocate:(u,h,s)=>{if(m.isClosed(u))throw new m.ErrnoError(8);if(h<0||s<=0)throw new m.ErrnoError(28);if((u.flags&2097155)===0)throw new m.ErrnoError(8);if(!m.isFile(u.node.mode)&&!m.isDir(u.node.mode))throw new m.ErrnoError(43);if(!u.stream_ops.allocate)throw new m.ErrnoError(138);u.stream_ops.allocate(u,h,s)},mmap:(u,h,s,c,l)=>{if((c&2)!==0&&(l&2)===0&&(u.flags&2097155)!==2)throw new m.ErrnoError(2);if((u.flags&2097155)===1)throw new m.ErrnoError(2);if(!u.stream_ops.mmap)throw new m.ErrnoError(43);return u.stream_ops.mmap(u,h,s,c,l)},msync:(u,h,s,c,l)=>u.stream_ops.msync?u.stream_ops.msync(u,h,s,c,l):0,munmap:u=>0,ioctl:(u,h,s)=>{if(!u.stream_ops.ioctl)throw new m.ErrnoError(59);return u.stream_ops.ioctl(u,h,s)},readFile:(u,h={})=>{if(h.flags=h.flags||0,h.encoding=h.encoding||"binary",h.encoding!=="utf8"&&h.encoding!=="binary")throw new Error(`Invalid encoding type "${h.encoding}"`);var s,c=m.open(u,h.flags),l=m.stat(u),f=l.size,g=new Uint8Array(f);return m.read(c,g,0,f,0),h.encoding==="utf8"?s=sr(g,0):h.encoding==="binary"&&(s=g),m.close(c),s},writeFile:(u,h,s={})=>{s.flags=s.flags||577;var c=m.open(u,s.flags,s.mode);if(typeof h=="string"){var l=new Uint8Array(Ur(h)+1),f=yn(h,l,0,l.length);m.write(c,l,0,f,void 0,s.canOwn)}else if(ArrayBuffer.isView(h))m.write(c,h,0,h.byteLength,void 0,s.canOwn);else throw new Error("Unsupported data type");m.close(c)},cwd:()=>m.currentPath,chdir:u=>{var h=m.lookupPath(u,{follow:!0});if(h.node===null)throw new m.ErrnoError(44);if(!m.isDir(h.node.mode))throw new m.ErrnoError(54);var s=m.nodePermissions(h.node,"x");if(s)throw new m.ErrnoError(s);m.currentPath=h.path},createDefaultDirectories:()=>{m.mkdir("/tmp"),m.mkdir("/home"),m.mkdir("/home/web_user")},createDefaultDevices:()=>{m.mkdir("/dev"),m.registerDevice(m.makedev(1,3),{read:()=>0,write:(c,l,f,g,T)=>g}),m.mkdev("/dev/null",m.makedev(1,3)),Ut.register(m.makedev(5,0),Ut.default_tty_ops),Ut.register(m.makedev(6,0),Ut.default_tty1_ops),m.mkdev("/dev/tty",m.makedev(5,0)),m.mkdev("/dev/tty1",m.makedev(6,0));var u=new Uint8Array(1024),h=0,s=()=>(h===0&&(h=Wi(u).byteLength),u[--h]);m.createDevice("/dev","random",s),m.createDevice("/dev","urandom",s),m.mkdir("/dev/shm"),m.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{m.mkdir("/proc");var u=m.mkdir("/proc/self");m.mkdir("/proc/self/fd"),m.mount({mount:()=>{var h=m.createNode(u,"fd",16895,73);return h.node_ops={lookup:(s,c)=>{var l=+c,f=m.getStreamChecked(l),g={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>f.path}};return g.parent=g,g}},h}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?m.createDevice("/dev","stdin",e.stdin):m.symlink("/dev/tty","/dev/stdin"),e.stdout?m.createDevice("/dev","stdout",null,e.stdout):m.symlink("/dev/tty","/dev/stdout"),e.stderr?m.createDevice("/dev","stderr",null,e.stderr):m.symlink("/dev/tty1","/dev/stderr");var u=m.open("/dev/stdin",0),h=m.open("/dev/stdout",1),s=m.open("/dev/stderr",1)},ensureErrnoError:()=>{m.ErrnoError||(m.ErrnoError=function(h,s){this.name="ErrnoError",this.node=s,this.setErrno=function(c){this.errno=c},this.setErrno(h),this.message="FS error"},m.ErrnoError.prototype=new Error,m.ErrnoError.prototype.constructor=m.ErrnoError,[44].forEach(u=>{m.genericErrors[u]=new m.ErrnoError(u),m.genericErrors[u].stack="<generic error, no stack>"}))},staticInit:()=>{m.ensureErrnoError(),m.nameTable=new Array(4096),m.mount(se,{},"/"),m.createDefaultDirectories(),m.createDefaultDevices(),m.createSpecialDirectories(),m.filesystems={MEMFS:se}},init:(u,h,s)=>{m.init.initialized=!0,m.ensureErrnoError(),e.stdin=u||e.stdin,e.stdout=h||e.stdout,e.stderr=s||e.stderr,m.createStandardStreams()},quit:()=>{m.init.initialized=!1;for(var u=0;u<m.streams.length;u++){var h=m.streams[u];!h||m.close(h)}},findObject:(u,h)=>{var s=m.analyzePath(u,h);return s.exists?s.object:null},analyzePath:(u,h)=>{try{var s=m.lookupPath(u,{follow:!h});u=s.path}catch(l){}var c={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var s=m.lookupPath(u,{parent:!0});c.parentExists=!0,c.parentPath=s.path,c.parentObject=s.node,c.name=he.basename(u),s=m.lookupPath(u,{follow:!h}),c.exists=!0,c.path=s.path,c.object=s.node,c.name=s.node.name,c.isRoot=s.path==="/"}catch(l){c.error=l.errno}return c},createPath:(u,h,s,c)=>{u=typeof u=="string"?u:m.getPath(u);for(var l=h.split("/").reverse();l.length;){var f=l.pop();if(!!f){var g=he.join2(u,f);try{m.mkdir(g)}catch(T){}u=g}}return g},createFile:(u,h,s,c,l)=>{var f=he.join2(typeof u=="string"?u:m.getPath(u),h),g=Gi(c,l);return m.create(f,g)},createDataFile:(u,h,s,c,l,f)=>{var g=h;u&&(u=typeof u=="string"?u:m.getPath(u),g=h?he.join2(u,h):u);var T=Gi(c,l),R=m.create(g,T);if(s){if(typeof s=="string"){for(var C=new Array(s.length),k=0,O=s.length;k<O;++k)C[k]=s.charCodeAt(k);s=C}m.chmod(R,T|146);var $=m.open(R,577);m.write($,s,0,s.length,0,f),m.close($),m.chmod(R,T)}return R},createDevice:(u,h,s,c)=>{var l=he.join2(typeof u=="string"?u:m.getPath(u),h),f=Gi(!!s,!!c);m.createDevice.major||(m.createDevice.major=64);var g=m.makedev(m.createDevice.major++,0);return m.registerDevice(g,{open:T=>{T.seekable=!1},close:T=>{c&&c.buffer&&c.buffer.length&&c(10)},read:(T,R,C,k,O)=>{for(var $=0,F=0;F<k;F++){var q;try{q=s()}catch(K){throw new m.ErrnoError(29)}if(q===void 0&&$===0)throw new m.ErrnoError(6);if(q==null)break;$++,R[C+F]=q}return $&&(T.node.timestamp=Date.now()),$},write:(T,R,C,k,O)=>{for(var $=0;$<k;$++)try{c(R[C+$])}catch(F){throw new m.ErrnoError(29)}return k&&(T.node.timestamp=Date.now()),$}}),m.mkdev(l,f,g)},forceLoadFile:u=>{if(u.isDevice||u.isFolder||u.link||u.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(M)try{u.contents=tr(M(u.url),!0),u.usedBytes=u.contents.length}catch(h){throw new m.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(u,h,s,c,l)=>{function f(){this.lengthKnown=!1,this.chunks=[]}if(f.prototype.get=function(F){if(!(F>this.length-1||F<0)){var q=F%this.chunkSize,K=F/this.chunkSize|0;return this.getter(K)[q]}},f.prototype.setDataGetter=function(F){this.getter=F},f.prototype.cacheLength=function(){var F=new XMLHttpRequest;if(F.open("HEAD",s,!1),F.send(null),!(F.status>=200&&F.status<300||F.status===304))throw new Error("Couldn't load "+s+". Status: "+F.status);var q=Number(F.getResponseHeader("Content-length")),K,ae=(K=F.getResponseHeader("Accept-Ranges"))&&K==="bytes",be=(K=F.getResponseHeader("Content-Encoding"))&&K==="gzip",He=1024*1024;ae||(He=q);var Pe=(ze,ir)=>{if(ze>ir)throw new Error("invalid range ("+ze+", "+ir+") or no bytes requested!");if(ir>q-1)throw new Error("only "+q+" bytes available! programmer error!");var Ye=new XMLHttpRequest;if(Ye.open("GET",s,!1),q!==He&&Ye.setRequestHeader("Range","bytes="+ze+"-"+ir),Ye.responseType="arraybuffer",Ye.overrideMimeType&&Ye.overrideMimeType("text/plain; charset=x-user-defined"),Ye.send(null),!(Ye.status>=200&&Ye.status<300||Ye.status===304))throw new Error("Couldn't load "+s+". Status: "+Ye.status);return Ye.response!==void 0?new Uint8Array(Ye.response||[]):tr(Ye.responseText||"",!0)},_t=this;_t.setDataGetter(ze=>{var ir=ze*He,Ye=(ze+1)*He-1;if(Ye=Math.min(Ye,q-1),typeof _t.chunks[ze]=="undefined"&&(_t.chunks[ze]=Pe(ir,Ye)),typeof _t.chunks[ze]=="undefined")throw new Error("doXHR failed!");return _t.chunks[ze]}),(be||!q)&&(He=q=1,q=this.getter(0).length,He=q,Me("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=q,this._chunkSize=He,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!S)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var g=new f;Object.defineProperties(g,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var T={isDevice:!1,contents:g}}else var T={isDevice:!1,url:s};var R=m.createFile(u,h,T,c,l);T.contents?R.contents=T.contents:T.url&&(R.contents=null,R.url=T.url),Object.defineProperties(R,{usedBytes:{get:function(){return this.contents.length}}});var C={},k=Object.keys(R.stream_ops);k.forEach($=>{var F=R.stream_ops[$];C[$]=function(){return m.forceLoadFile(R),F.apply(null,arguments)}});function O($,F,q,K,ae){var be=$.node.contents;if(ae>=be.length)return 0;var He=Math.min(be.length-ae,K);if(be.slice)for(var Pe=0;Pe<He;Pe++)F[q+Pe]=be[ae+Pe];else for(var Pe=0;Pe<He;Pe++)F[q+Pe]=be.get(ae+Pe);return He}return C.read=($,F,q,K,ae)=>(m.forceLoadFile(R),O($,F,q,K,ae)),C.mmap=($,F,q,K,ae)=>{m.forceLoadFile(R);var be=Go(F);if(!be)throw new m.ErrnoError(48);return O($,Ce,be,F,q),{ptr:be,allocated:!0}},R.stream_ops=C,R}},zo=(u,h)=>u?sr(Ue,u,h):"",Ve={DEFAULT_POLLMASK:5,calculateAt:function(u,h,s){if(he.isAbs(h))return h;var c;if(u===-100)c=m.cwd();else{var l=Ve.getStreamFromFD(u);c=l.path}if(h.length==0){if(!s)throw new m.ErrnoError(44);return c}return he.join2(c,h)},doStat:function(u,h,s){try{var c=u(h)}catch(T){if(T&&T.node&&he.normalize(h)!==he.normalize(m.getPath(T.node)))return-54;throw T}x[s>>2]=c.dev,x[s+4>>2]=c.mode,ce[s+8>>2]=c.nlink,x[s+12>>2]=c.uid,x[s+16>>2]=c.gid,x[s+20>>2]=c.rdev,ve=[c.size>>>0,(ee=c.size,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[s+24>>2]=ve[0],x[s+28>>2]=ve[1],x[s+32>>2]=4096,x[s+36>>2]=c.blocks;var l=c.atime.getTime(),f=c.mtime.getTime(),g=c.ctime.getTime();return ve=[Math.floor(l/1e3)>>>0,(ee=Math.floor(l/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[s+40>>2]=ve[0],x[s+44>>2]=ve[1],ce[s+48>>2]=l%1e3*1e3,ve=[Math.floor(f/1e3)>>>0,(ee=Math.floor(f/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[s+56>>2]=ve[0],x[s+60>>2]=ve[1],ce[s+64>>2]=f%1e3*1e3,ve=[Math.floor(g/1e3)>>>0,(ee=Math.floor(g/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[s+72>>2]=ve[0],x[s+76>>2]=ve[1],ce[s+80>>2]=g%1e3*1e3,ve=[c.ino>>>0,(ee=c.ino,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[s+88>>2]=ve[0],x[s+92>>2]=ve[1],0},doMsync:function(u,h,s,c,l){if(!m.isFile(h.node.mode))throw new m.ErrnoError(43);if(c&2)return 0;var f=Ue.slice(u,u+s);m.msync(h,f,l,s,c)},varargs:void 0,get(){Ve.varargs+=4;var u=x[Ve.varargs-4>>2];return u},getStr(u){var h=zo(u);return h},getStreamFromFD:function(u){var h=m.getStreamChecked(u);return h}};function Jo(u,h,s){Ve.varargs=s;try{var c=Ve.getStreamFromFD(u);switch(h){case 0:{var l=Ve.get();if(l<0)return-28;var f;return f=m.createStream(c,l),f.fd}case 1:case 2:return 0;case 3:return c.flags;case 4:{var l=Ve.get();return c.flags|=l,0}case 5:{var l=Ve.get(),g=0;return at[l+g>>1]=2,0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:return er(28),-1;default:return-28}}catch(T){if(typeof m=="undefined"||T.name!=="ErrnoError")throw T;return-T.errno}}function vn(u,h,s,c){Ve.varargs=c;try{h=Ve.getStr(h),h=Ve.calculateAt(u,h);var l=c?Ve.get():0;return m.open(h,s,l).fd}catch(f){if(typeof m=="undefined"||f.name!=="ErrnoError")throw f;return-f.errno}}function yc(u,h,s,c,l){}function An(u){switch(u){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${u}`)}}function Cn(){for(var u=new Array(256),h=0;h<256;++h)u[h]=String.fromCharCode(h);qo=u}var qo=void 0;function tt(u){for(var h="",s=u;Ue[s];)h+=qo[Ue[s++]];return h}var qt={},rr={},Er={},Tr=void 0;function ue(u){throw new Tr(u)}var Xo=void 0;function Ti(u){throw new Xo(u)}function Vr(u,h,s){u.forEach(function(T){Er[T]=h});function c(T){var R=s(T);R.length!==u.length&&Ti("Mismatched type converter count");for(var C=0;C<u.length;++C)Rt(u[C],R[C])}var l=new Array(h.length),f=[],g=0;h.forEach((T,R)=>{rr.hasOwnProperty(T)?l[R]=rr[T]:(f.push(T),qt.hasOwnProperty(T)||(qt[T]=[]),qt[T].push(()=>{l[R]=rr[T],++g,g===f.length&&c(l)}))}),f.length===0&&c(l)}function ti(u,h,s={}){var c=h.name;if(u||ue(`type "${c}" must have a positive integer typeid pointer`),rr.hasOwnProperty(u)){if(s.ignoreDuplicateRegistrations)return;ue(`Cannot register type '${c}' twice`)}if(rr[u]=h,delete Er[u],qt.hasOwnProperty(u)){var l=qt[u];delete qt[u],l.forEach(f=>f())}}function Rt(u,h,s={}){if(!("argPackAdvance"in h))throw new TypeError("registerType registeredInstance requires argPackAdvance");return ti(u,h,s)}function vc(u,h,s,c,l){var f=An(s);h=tt(h),Rt(u,{name:h,fromWireType:function(g){return!!g},toWireType:function(g,T){return T?c:l},argPackAdvance:8,readValueFromPointer:function(g){var T;if(s===1)T=Ce;else if(s===2)T=at;else if(s===4)T=x;else throw new TypeError("Unknown boolean type size: "+h);return this.fromWireType(T[g>>f])},destructorFunction:null})}function co(u){if(!(this instanceof Pt)||!(u instanceof Pt))return!1;for(var h=this.$$.ptrType.registeredClass,s=this.$$.ptr,c=u.$$.ptrType.registeredClass,l=u.$$.ptr;h.baseClass;)s=h.upcast(s),h=h.baseClass;for(;c.baseClass;)l=c.upcast(l),c=c.baseClass;return h===c&&s===l}function Qo(u){return{count:u.count,deleteScheduled:u.deleteScheduled,preservePointerOnDelete:u.preservePointerOnDelete,ptr:u.ptr,ptrType:u.ptrType,smartPtr:u.smartPtr,smartPtrType:u.smartPtrType}}function ji(u){function h(s){return s.$$.ptrType.registeredClass.name}ue(h(u)+" instance already deleted")}var Rn=!1;function Yo(u){}function Ko(u){u.smartPtr?u.smartPtrType.rawDestructor(u.smartPtr):u.ptrType.registeredClass.rawDestructor(u.ptr)}function Zo(u){u.count.value-=1;var h=u.count.value===0;h&&Ko(u)}function es(u,h,s){if(h===s)return u;if(s.baseClass===void 0)return null;var c=es(u,h,s.baseClass);return c===null?null:s.downcast(c)}var ts={};function uo(){return Object.keys(Hr).length}function Ac(){var u=[];for(var h in Hr)Hr.hasOwnProperty(h)&&u.push(Hr[h]);return u}var Fr=[];function bn(){for(;Fr.length;){var u=Fr.pop();u.$$.deleteScheduled=!1,u.delete()}}var $r=void 0;function Br(u){$r=u,Fr.length&&$r&&$r(bn)}function Cc(){e.getInheritedInstanceCount=uo,e.getLiveInheritedInstances=Ac,e.flushPendingDeletes=bn,e.setDelayFunction=Br}var Hr={};function lo(u,h){for(h===void 0&&ue("ptr should not be undefined");u.baseClass;)h=u.upcast(h),u=u.baseClass;return h}function Xs(u,h){return h=lo(u,h),Hr[h]}function Si(u,h){(!h.ptrType||!h.ptr)&&Ti("makeClassHandle requires ptr and ptrType");var s=!!h.smartPtrType,c=!!h.smartPtr;return s!==c&&Ti("Both smartPtrType and smartPtr must be specified"),h.count={value:1},Xt(Object.create(u,{$$:{value:h}}))}function Rc(u){var h=this.getPointee(u);if(!h)return this.destructor(u),null;var s=Xs(this.registeredClass,h);if(s!==void 0){if(s.$$.count.value===0)return s.$$.ptr=h,s.$$.smartPtr=u,s.clone();var c=s.clone();return this.destructor(u),c}function l(){return this.isSmartPointer?Si(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:h,smartPtrType:this,smartPtr:u}):Si(this.registeredClass.instancePrototype,{ptrType:this,ptr:u})}var f=this.registeredClass.getActualType(h),g=ts[f];if(!g)return l.call(this);var T;this.isConst?T=g.constPointerType:T=g.pointerType;var R=es(h,this.registeredClass,T.registeredClass);return R===null?l.call(this):this.isSmartPointer?Si(T.registeredClass.instancePrototype,{ptrType:T,ptr:R,smartPtrType:this,smartPtr:u}):Si(T.registeredClass.instancePrototype,{ptrType:T,ptr:R})}var Xt=function(u){return typeof FinalizationRegistry=="undefined"?(Xt=h=>h,u):(Rn=new FinalizationRegistry(h=>{Zo(h.$$)}),Xt=h=>{var s=h.$$,c=!!s.smartPtr;if(c){var l={$$:s};Rn.register(h,l,h)}return h},Yo=h=>Rn.unregister(h),Xt(u))};function bc(){if(this.$$.ptr||ji(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var u=Xt(Object.create(Object.getPrototypeOf(this),{$$:{value:Qo(this.$$)}}));return u.$$.count.value+=1,u.$$.deleteScheduled=!1,u}function Qs(){this.$$.ptr||ji(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),Yo(this),Zo(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ys(){return!this.$$.ptr}function rs(){return this.$$.ptr||ji(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),Fr.push(this),Fr.length===1&&$r&&$r(bn),this.$$.deleteScheduled=!0,this}function Nc(){Pt.prototype.isAliasOf=co,Pt.prototype.clone=bc,Pt.prototype.delete=Qs,Pt.prototype.isDeleted=Ys,Pt.prototype.deleteLater=rs}function Pt(){}var Dc=48,Ks=57;function ri(u){if(u===void 0)return"_unknown";u=u.replace(/[^a-zA-Z0-9_]/g,"$");var h=u.charCodeAt(0);return h>=Dc&&h<=Ks?`_${u}`:u}function Nn(u,h){return u=ri(u),{[u]:function(){return h.apply(this,arguments)}}[u]}function is(u,h,s){if(u[h].overloadTable===void 0){var c=u[h];u[h]=function(){return u[h].overloadTable.hasOwnProperty(arguments.length)||ue(`Function '${s}' called with an invalid number of arguments (${arguments.length}) - expects one of (${u[h].overloadTable})!`),u[h].overloadTable[arguments.length].apply(this,arguments)},u[h].overloadTable=[],u[h].overloadTable[c.argCount]=c}}function wc(u,h,s){e.hasOwnProperty(u)?((s===void 0||e[u].overloadTable!==void 0&&e[u].overloadTable[s]!==void 0)&&ue(`Cannot register public name '${u}' twice`),is(e,u,u),e.hasOwnProperty(s)&&ue(`Cannot register multiple overloads of a function with the same number of arguments (${s})!`),e[u].overloadTable[s]=h):(e[u]=h,s!==void 0&&(e[u].numArguments=s))}function Zs(u,h,s,c,l,f,g,T){this.name=u,this.constructor=h,this.instancePrototype=s,this.rawDestructor=c,this.baseClass=l,this.getActualType=f,this.upcast=g,this.downcast=T,this.pureVirtualFunctions=[]}function Vt(u,h,s){for(;h!==s;)h.upcast||ue(`Expected null or instance of ${s.name}, got an instance of ${h.name}`),u=h.upcast(u),h=h.baseClass;return u}function ea(u,h){if(h===null)return this.isReference&&ue(`null is not a valid ${this.name}`),0;h.$$||ue(`Cannot pass "${wn(h)}" as a ${this.name}`),h.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`);var s=h.$$.ptrType.registeredClass,c=Vt(h.$$.ptr,s,this.registeredClass);return c}function kc(u,h){var s;if(h===null)return this.isReference&&ue(`null is not a valid ${this.name}`),this.isSmartPointer?(s=this.rawConstructor(),u!==null&&u.push(this.rawDestructor,s),s):0;h.$$||ue(`Cannot pass "${wn(h)}" as a ${this.name}`),h.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&h.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${h.$$.smartPtrType?h.$$.smartPtrType.name:h.$$.ptrType.name} to parameter type ${this.name}`);var c=h.$$.ptrType.registeredClass;if(s=Vt(h.$$.ptr,c,this.registeredClass),this.isSmartPointer)switch(h.$$.smartPtr===void 0&&ue("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:h.$$.smartPtrType===this?s=h.$$.smartPtr:ue(`Cannot convert argument of type ${h.$$.smartPtrType?h.$$.smartPtrType.name:h.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:s=h.$$.smartPtr;break;case 2:if(h.$$.smartPtrType===this)s=h.$$.smartPtr;else{var l=h.clone();s=this.rawShare(s,yi.toHandle(function(){l.delete()})),u!==null&&u.push(this.rawDestructor,s)}break;default:ue("Unsupporting sharing policy")}return s}function Oc(u,h){if(h===null)return this.isReference&&ue(`null is not a valid ${this.name}`),0;h.$$||ue(`Cannot pass "${wn(h)}" as a ${this.name}`),h.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),h.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${h.$$.ptrType.name} to parameter type ${this.name}`);var s=h.$$.ptrType.registeredClass,c=Vt(h.$$.ptr,s,this.registeredClass);return c}function Rr(u){return this.fromWireType(x[u>>2])}function Pc(u){return this.rawGetPointee&&(u=this.rawGetPointee(u)),u}function ns(u){this.rawDestructor&&this.rawDestructor(u)}function xc(u){u!==null&&u.delete()}function Mc(){bt.prototype.getPointee=Pc,bt.prototype.destructor=ns,bt.prototype.argPackAdvance=8,bt.prototype.readValueFromPointer=Rr,bt.prototype.deleteObject=xc,bt.prototype.fromWireType=Rc}function bt(u,h,s,c,l,f,g,T,R,C,k){this.name=u,this.registeredClass=h,this.isReference=s,this.isConst=c,this.isSmartPointer=l,this.pointeeType=f,this.sharingPolicy=g,this.rawGetPointee=T,this.rawConstructor=R,this.rawShare=C,this.rawDestructor=k,!l&&h.baseClass===void 0?c?(this.toWireType=ea,this.destructorFunction=null):(this.toWireType=Oc,this.destructorFunction=null):this.toWireType=kc}function Lc(u,h,s){e.hasOwnProperty(u)||Ti("Replacing nonexistant public symbol"),e[u].overloadTable!==void 0&&s!==void 0?e[u].overloadTable[s]=h:(e[u]=h,e[u].argCount=s)}var Uc=(u,h,s)=>{var c=e["dynCall_"+u];return s&&s.length?c.apply(null,[h].concat(s)):c.call(null,h)},Ii=[],os=u=>{var h=Ii[u];return h||(u>=Ii.length&&(Ii.length=u+1),Ii[u]=h=Kr.get(u)),h},Vc=(u,h,s)=>{if(u.includes("j"))return Uc(u,h,s);var c=os(h).apply(null,s);return c},ta=(u,h)=>{var s=[];return function(){return s.length=0,Object.assign(s,arguments),Vc(u,h,s)}};function ar(u,h){u=tt(u);function s(){return u.includes("j")?ta(u,h):os(h)}var c=s();return typeof c!="function"&&ue(`unknown function pointer with signature ${u}: ${h}`),c}function ra(u,h){var s=Nn(h,function(c){this.name=h,this.message=c;var l=new Error(c).stack;l!==void 0&&(this.stack=this.toString()+`
57
+ `+l.replace(/^Error(:[^\n]*)?\n/,""))});return s.prototype=Object.create(u.prototype),s.prototype.constructor=s,s.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},s}var ss=void 0;function ho(u){var h=sd(u),s=tt(h);return Ft(h),s}function Dn(u,h){var s=[],c={};function l(f){if(!c[f]&&!rr[f]){if(Er[f]){Er[f].forEach(l);return}s.push(f),c[f]=!0}}throw h.forEach(l),new ss(`${u}: `+s.map(ho).join([", "]))}function Fc(u,h,s,c,l,f,g,T,R,C,k,O,$){k=tt(k),f=ar(l,f),T&&(T=ar(g,T)),C&&(C=ar(R,C)),$=ar(O,$);var F=ri(k);wc(F,function(){Dn(`Cannot construct ${k} due to unbound types`,[c])}),Vr([u,h,s],c?[c]:[],function(q){q=q[0];var K,ae;c?(K=q.registeredClass,ae=K.instancePrototype):ae=Pt.prototype;var be=Nn(F,function(){if(Object.getPrototypeOf(this)!==He)throw new Tr("Use 'new' to construct "+k);if(Pe.constructor_body===void 0)throw new Tr(k+" has no accessible constructor");var Ye=Pe.constructor_body[arguments.length];if(Ye===void 0)throw new Tr(`Tried to invoke ctor of ${k} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Pe.constructor_body).toString()}) parameters instead!`);return Ye.apply(this,arguments)}),He=Object.create(ae,{constructor:{value:be}});be.prototype=He;var Pe=new Zs(k,be,He,$,K,f,T,C);Pe.baseClass&&(Pe.baseClass.__derivedClasses===void 0&&(Pe.baseClass.__derivedClasses=[]),Pe.baseClass.__derivedClasses.push(Pe));var _t=new bt(k,Pe,!0,!1,!1),ze=new bt(k+"*",Pe,!1,!1,!1),ir=new bt(k+" const*",Pe,!1,!0,!1);return ts[u]={pointerType:ze,constPointerType:ir},Lc(F,be),[_t,ze,ir]})}function as(u,h){for(var s=[],c=0;c<u;c++)s.push(ce[h+c*4>>2]);return s}function $c(u){for(;u.length;){var h=u.pop(),s=u.pop();s(h)}}function cs(u,h){if(!(u instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof u} which is not a function`);var s=Nn(u.name||"unknownFunctionName",function(){});s.prototype=u.prototype;var c=new s,l=u.apply(c,h);return l instanceof Object?l:c}function ds(u,h,s,c,l,f){var g=h.length;g<2&&ue("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var T=h[1]!==null&&s!==null,R=!1,C=1;C<h.length;++C)if(h[C]!==null&&h[C].destructorFunction===void 0){R=!0;break}for(var k=h[0].name!=="void",O="",$="",C=0;C<g-2;++C)O+=(C!==0?", ":"")+"arg"+C,$+=(C!==0?", ":"")+"arg"+C+"Wired";var F=`
58
+ return function ${ri(u)}(${O}) {
59
+ if (arguments.length !== ${g-2}) {
60
+ throwBindingError('function ${u} called with ${arguments.length} arguments, expected ${g-2} args!');
61
+ }`;R&&(F+=`var destructors = [];
62
+ `);var q=R?"destructors":"null",K=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],ae=[ue,c,l,$c,h[0],h[1]];T&&(F+="var thisWired = classParam.toWireType("+q+`, this);
63
+ `);for(var C=0;C<g-2;++C)F+="var arg"+C+"Wired = argType"+C+".toWireType("+q+", arg"+C+"); // "+h[C+2].name+`
64
+ `,K.push("argType"+C),ae.push(h[C+2]);if(T&&($="thisWired"+($.length>0?", ":"")+$),F+=(k||f?"var rv = ":"")+"invoker(fn"+($.length>0?", ":"")+$+`);
65
+ `,R)F+=`runDestructors(destructors);
66
+ `;else for(var C=T?1:2;C<h.length;++C){var be=C===1?"thisWired":"arg"+(C-2)+"Wired";h[C].destructorFunction!==null&&(F+=be+"_dtor("+be+"); // "+h[C].name+`
67
+ `,K.push(be+"_dtor"),ae.push(h[C].destructorFunction))}return k&&(F+=`var ret = retType.fromWireType(rv);
68
+ return ret;
69
+ `),F+=`}
70
+ `,K.push(F),cs(Function,K).apply(null,ae)}function Bc(u,h,s,c,l,f){var g=as(h,s);l=ar(c,l),Vr([],[u],function(T){T=T[0];var R=`constructor ${T.name}`;if(T.registeredClass.constructor_body===void 0&&(T.registeredClass.constructor_body=[]),T.registeredClass.constructor_body[h-1]!==void 0)throw new Tr(`Cannot register multiple constructors with identical number of parameters (${h-1}) for class '${T.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return T.registeredClass.constructor_body[h-1]=()=>{Dn(`Cannot construct ${T.name} due to unbound types`,g)},Vr([],g,function(C){return C.splice(1,0,null),T.registeredClass.constructor_body[h-1]=ds(R,C,null,l,f),[]}),[]})}function Hc(u,h,s,c,l,f,g,T,R){var C=as(s,c);h=tt(h),f=ar(l,f),Vr([],[u],function(k){k=k[0];var O=`${k.name}.${h}`;h.startsWith("@@")&&(h=Symbol[h.substring(2)]),T&&k.registeredClass.pureVirtualFunctions.push(h);function $(){Dn(`Cannot call ${O} due to unbound types`,C)}var F=k.registeredClass.instancePrototype,q=F[h];return q===void 0||q.overloadTable===void 0&&q.className!==k.name&&q.argCount===s-2?($.argCount=s-2,$.className=k.name,F[h]=$):(is(F,h,O),F[h].overloadTable[s-2]=$),Vr([],C,function(K){var ae=ds(O,K,k,f,g,R);return F[h].overloadTable===void 0?(ae.argCount=s-2,F[h]=ae):F[h].overloadTable[s-2]=ae,[]}),[]})}function Wc(){Object.assign(us.prototype,{get(u){return this.allocated[u]},has(u){return this.allocated[u]!==void 0},allocate(u){var h=this.freelist.pop()||this.allocated.length;return this.allocated[h]=u,h},free(u){this.allocated[u]=void 0,this.freelist.push(u)}})}function us(){this.allocated=[void 0],this.freelist=[]}var st=new us;function ls(u){u>=st.reserved&&--st.get(u).refcount===0&&st.free(u)}function Gc(){for(var u=0,h=st.reserved;h<st.allocated.length;++h)st.allocated[h]!==void 0&&++u;return u}function jc(){st.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),st.reserved=st.allocated.length,e.count_emval_handles=Gc}var yi={toValue:u=>(u||ue("Cannot use deleted val. handle = "+u),st.get(u).value),toHandle:u=>{switch(u){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return st.allocate({refcount:1,value:u})}}};function ia(u,h){h=tt(h),Rt(u,{name:h,fromWireType:function(s){var c=yi.toValue(s);return ls(s),c},toWireType:function(s,c){return yi.toHandle(c)},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:null})}function wn(u){if(u===null)return"null";var h=typeof u;return h==="object"||h==="array"||h==="function"?u.toString():""+u}function zc(u,h){switch(h){case 2:return function(s){return this.fromWireType(Yr[s>>2])};case 3:return function(s){return this.fromWireType(fi[s>>3])};default:throw new TypeError("Unknown float type: "+u)}}function na(u,h,s){var c=An(s);h=tt(h),Rt(u,{name:h,fromWireType:function(l){return l},toWireType:function(l,f){return f},argPackAdvance:8,readValueFromPointer:zc(h,c),destructorFunction:null})}function Jc(u,h,s){switch(h){case 0:return s?function(l){return Ce[l]}:function(l){return Ue[l]};case 1:return s?function(l){return at[l>>1]}:function(l){return Tt[l>>1]};case 2:return s?function(l){return x[l>>2]}:function(l){return ce[l>>2]};default:throw new TypeError("Unknown integer type: "+u)}}function qc(u,h,s,c,l){h=tt(h),l===-1&&(l=4294967295);var f=An(s),g=O=>O;if(c===0){var T=32-8*s;g=O=>O<<T>>>T}var R=h.includes("unsigned"),C=(O,$)=>{},k;R?k=function(O,$){return C($,this.name),$>>>0}:k=function(O,$){return C($,this.name),$},Rt(u,{name:h,fromWireType:g,toWireType:k,argPackAdvance:8,readValueFromPointer:Jc(h,f,c!==0),destructorFunction:null})}function Xc(u,h,s){var c=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],l=c[h];function f(g){g=g>>2;var T=ce,R=T[g],C=T[g+1];return new l(T.buffer,C,R)}s=tt(s),Rt(u,{name:s,fromWireType:f,argPackAdvance:8,readValueFromPointer:f},{ignoreDuplicateRegistrations:!0})}var Qc=(u,h,s)=>yn(u,Ue,h,s);function Yc(u,h){h=tt(h);var s=h==="std::string";Rt(u,{name:h,fromWireType:function(c){var l=ce[c>>2],f=c+4,g;if(s)for(var T=f,R=0;R<=l;++R){var C=f+R;if(R==l||Ue[C]==0){var k=C-T,O=zo(T,k);g===void 0?g=O:(g+=String.fromCharCode(0),g+=O),T=C+1}}else{for(var $=new Array(l),R=0;R<l;++R)$[R]=String.fromCharCode(Ue[f+R]);g=$.join("")}return Ft(c),g},toWireType:function(c,l){l instanceof ArrayBuffer&&(l=new Uint8Array(l));var f,g=typeof l=="string";g||l instanceof Uint8Array||l instanceof Uint8ClampedArray||l instanceof Int8Array||ue("Cannot pass non-string to std::string"),s&&g?f=Ur(l):f=l.length;var T=ps(4+f+1),R=T+4;if(ce[T>>2]=f,s&&g)Qc(l,R,f+1);else if(g)for(var C=0;C<f;++C){var k=l.charCodeAt(C);k>255&&(Ft(R),ue("String has UTF-16 code units that do not fit in 8 bits")),Ue[R+C]=k}else for(var C=0;C<f;++C)Ue[R+C]=l[C];return c!==null&&c.push(Ft,T),T},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:function(c){Ft(c)}})}var mo=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,Kc=(u,h)=>{for(var s=u,c=s>>1,l=c+h/2;!(c>=l)&&Tt[c];)++c;if(s=c<<1,s-u>32&&mo)return mo.decode(Ue.subarray(u,s));for(var f="",g=0;!(g>=h/2);++g){var T=at[u+g*2>>1];if(T==0)break;f+=String.fromCharCode(T)}return f},Zc=(u,h,s)=>{if(s===void 0&&(s=2147483647),s<2)return 0;s-=2;for(var c=h,l=s<u.length*2?s/2:u.length,f=0;f<l;++f){var g=u.charCodeAt(f);at[h>>1]=g,h+=2}return at[h>>1]=0,h-c},Pu=u=>u.length*2,ed=(u,h)=>{for(var s=0,c="";!(s>=h/4);){var l=x[u+s*4>>2];if(l==0)break;if(++s,l>=65536){var f=l-65536;c+=String.fromCharCode(55296|f>>10,56320|f&1023)}else c+=String.fromCharCode(l)}return c},Wr=(u,h,s)=>{if(s===void 0&&(s=2147483647),s<4)return 0;for(var c=h,l=c+s-4,f=0;f<u.length;++f){var g=u.charCodeAt(f);if(g>=55296&&g<=57343){var T=u.charCodeAt(++f);g=65536+((g&1023)<<10)|T&1023}if(x[h>>2]=g,h+=4,h+4>l)break}return x[h>>2]=0,h-c},hs=u=>{for(var h=0,s=0;s<u.length;++s){var c=u.charCodeAt(s);c>=55296&&c<=57343&&++s,h+=4}return h},oa=function(u,h,s){s=tt(s);var c,l,f,g,T;h===2?(c=Kc,l=Zc,g=Pu,f=()=>Tt,T=1):h===4&&(c=ed,l=Wr,g=hs,f=()=>ce,T=2),Rt(u,{name:s,fromWireType:function(R){for(var C=ce[R>>2],k=f(),O,$=R+4,F=0;F<=C;++F){var q=R+4+F*h;if(F==C||k[q>>T]==0){var K=q-$,ae=c($,K);O===void 0?O=ae:(O+=String.fromCharCode(0),O+=ae),$=q+h}}return Ft(R),O},toWireType:function(R,C){typeof C!="string"&&ue(`Cannot pass non-string to C++ string type ${s}`);var k=g(C),O=ps(4+k+h);return ce[O>>2]=k>>T,l(C,O+4,k+h),R!==null&&R.push(Ft,O),O},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:function(R){Ft(R)}})};function td(u,h){h=tt(h),Rt(u,{isVoid:!0,name:h,argPackAdvance:0,fromWireType:function(){},toWireType:function(s,c){}})}var rd={};function sa(u){var h=rd[u];return h===void 0?tt(u):h}var kn=[];function po(u,h,s,c){u=kn[u],h=yi.toValue(h),s=sa(s),u(h,s,null,c)}function aa(u){var h=kn.length;return kn.push(u),h}function I(u,h){var s=rr[u];return s===void 0&&ue(h+" has unknown type "+ho(u)),s}function y(u,h){for(var s=new Array(u),c=0;c<u;++c)s[c]=I(ce[h+c*4>>2],"parameter "+c);return s}var D=[];function P(u,h){var s=y(u,h),c=s[0],l=c.name+"_$"+s.slice(1).map(function(q){return q.name}).join("_")+"$",f=D[l];if(f!==void 0)return f;for(var g=["retType"],T=[c],R="",C=0;C<u-1;++C)R+=(C!==0?", ":"")+"arg"+C,g.push("argType"+C),T.push(s[1+C]);for(var k=ri("methodCaller_"+l),O="return function "+k+`(handle, name, destructors, args) {
71
+ `,$=0,C=0;C<u-1;++C)O+=" var arg"+C+" = argType"+C+".readValueFromPointer(args"+($?"+"+$:"")+`);
72
+ `,$+=s[C+1].argPackAdvance;O+=" var rv = handle[name]("+R+`);
73
+ `;for(var C=0;C<u-1;++C)s[C+1].deleteObject&&(O+=" argType"+C+".deleteObject(arg"+C+`);
74
+ `);c.isVoid||(O+=` return retType.toWireType(destructors, rv);
75
+ `),O+=`};
76
+ `,g.push(O);var F=cs(Function,g).apply(null,T);return f=aa(F),D[l]=f,f}function z(u,h){return h+2097152>>>0<4194305-!!u?(u>>>0)+h*4294967296:NaN}var te=()=>{Jt("")};function ne(){return Date.now()}var X=()=>Ue.length,le=()=>X(),re=(u,h,s)=>Ue.copyWithin(u,h,h+s),Ne=u=>{Jt("OOM")},Be=u=>{var h=Ue.length;u>>>=0,Ne(u)},Fe={},Ke=()=>d||"./this.program",rt=()=>{if(!rt.strings){var u=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",h={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:u,_:Ke()};for(var s in Fe)Fe[s]===void 0?delete h[s]:h[s]=Fe[s];var c=[];for(var s in h)c.push(`${s}=${h[s]}`);rt.strings=c}return rt.strings},cr=(u,h)=>{for(var s=0;s<u.length;++s)Ce[h++>>0]=u.charCodeAt(s);Ce[h>>0]=0},Qt=(u,h)=>{var s=0;return rt().forEach(function(c,l){var f=h+s;ce[u+l*4>>2]=f,cr(c,f),s+=c.length+1}),0},ii=(u,h)=>{var s=rt();ce[u>>2]=s.length;var c=0;return s.forEach(function(l){c+=l.length+1}),ce[h>>2]=c,0};function ms(u){try{var h=Ve.getStreamFromFD(u);return m.close(h),0}catch(s){if(typeof m=="undefined"||s.name!=="ErrnoError")throw s;return s.errno}}function Sr(u,h){try{var s=0,c=0,l=0,f=Ve.getStreamFromFD(u),g=f.tty?2:m.isDir(f.mode)?3:m.isLink(f.mode)?7:4;return Ce[h>>0]=g,at[h+2>>1]=l,ve=[s>>>0,(ee=s,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[h+8>>2]=ve[0],x[h+12>>2]=ve[1],ve=[c>>>0,(ee=c,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[h+16>>2]=ve[0],x[h+20>>2]=ve[1],0}catch(T){if(typeof m=="undefined"||T.name!=="ErrnoError")throw T;return T.errno}}var id=(u,h,s,c)=>{for(var l=0,f=0;f<s;f++){var g=ce[h>>2],T=ce[h+4>>2];h+=8;var R=m.read(u,Ce,g,T,c);if(R<0)return-1;if(l+=R,R<T)break;typeof c!="undefined"&&(c+=R)}return l};function ca(u,h,s,c){try{var l=Ve.getStreamFromFD(u),f=id(l,h,s);return ce[c>>2]=f,0}catch(g){if(typeof m=="undefined"||g.name!=="ErrnoError")throw g;return g.errno}}function da(u,h,s,c,l){var f=z(h,s);try{if(isNaN(f))return 61;var g=Ve.getStreamFromFD(u);return m.llseek(g,f,c),ve=[g.position>>>0,(ee=g.position,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l>>2]=ve[0],x[l+4>>2]=ve[1],g.getdents&&f===0&&c===0&&(g.getdents=null),0}catch(T){if(typeof m=="undefined"||T.name!=="ErrnoError")throw T;return T.errno}}var ua=(u,h,s,c)=>{for(var l=0,f=0;f<s;f++){var g=ce[h>>2],T=ce[h+4>>2];h+=8;var R=m.write(u,Ce,g,T,c);if(R<0)return-1;l+=R,typeof c!="undefined"&&(c+=R)}return l};function Nh(u,h,s,c){try{var l=Ve.getStreamFromFD(u),f=ua(l,h,s);return ce[c>>2]=f,0}catch(g){if(typeof m=="undefined"||g.name!=="ErrnoError")throw g;return g.errno}}var nd=function(u,h,s,c){u||(u=this),this.parent=u,this.mount=u.mount,this.mounted=null,this.id=m.nextInode++,this.name=h,this.mode=s,this.node_ops={},this.stream_ops={},this.rdev=c},On=365,Pn=146;Object.defineProperties(nd.prototype,{read:{get:function(){return(this.mode&On)===On},set:function(u){u?this.mode|=On:this.mode&=~On}},write:{get:function(){return(this.mode&Pn)===Pn},set:function(u){u?this.mode|=Pn:this.mode&=~Pn}},isFolder:{get:function(){return m.isDir(this.mode)}},isDevice:{get:function(){return m.isChrdev(this.mode)}}}),m.FSNode=nd,m.createPreloadedFile=Js,m.staticInit(),Cn(),Tr=e.BindingError=class extends Error{constructor(h){super(h),this.name="BindingError"}},Xo=e.InternalError=class extends Error{constructor(h){super(h),this.name="InternalError"}},Nc(),Cc(),Mc(),ss=e.UnboundTypeError=ra(Error,"UnboundTypeError"),Wc(),jc();var Dh={p:js,C:Jo,w:vn,t:yc,n:vc,r:Fc,q:Bc,d:Hc,D:ia,k:na,c:qc,b:Xc,j:Yc,f:oa,o:td,g:po,m:ls,l:P,a:te,e:ne,v:le,A:re,u:Be,y:Qt,z:ii,i:ms,x:Sr,B:ca,s:da,h:Nh},UE=G(),wh=()=>(wh=Ae.F)(),ps=u=>(ps=Ae.G)(u),Ft=u=>(Ft=Ae.I)(u),od=()=>(od=Ae.J)(),sd=u=>(sd=Ae.K)(u),kh=e.__embind_initialize_bindings=()=>(kh=e.__embind_initialize_bindings=Ae.L)(),ad=u=>(ad=Ae.M)(u),Oh=e.dynCall_jiji=(u,h,s,c,l)=>(Oh=e.dynCall_jiji=Ae.N)(u,h,s,c,l),kf=e._ff_h264_cabac_tables=67061,la;Lr=function u(){la||xu(),la||(Lr=u)};function xu(){if(de>0||(hc(),de>0))return;function u(){la||(la=!0,e.calledRun=!0,!or&&(mc(),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),pc()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),u()},1)):u()}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return xu(),r.ready}})(),xg=vI;var gu=class extends _n{constructor(r){super(xg,r!=null&&r.wasmPath?fetch(r==null?void 0:r.wasmPath).then(e=>e.arrayBuffer()):void 0,r==null?void 0:r.workerMode,r==null?void 0:r.canvas,r==null?void 0:r.yuvMode)}};var AI=(()=>{var n=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(r={}){var e=r,t,i;e.ready=new Promise((I,y)=>{t=I,i=y});var o=Object.assign({},e),a=[],d="./this.program",p=(I,y)=>{throw y},_=typeof window=="object",S=typeof importScripts=="function",v=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A="";function w(I){return e.locateFile?e.locateFile(I,A):A+I}var M,L,W,ie;(_||S)&&(S?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),n&&(A=n),A.indexOf("blob:")!==0?A=A.substr(0,A.replace(/[?#].*/,"").lastIndexOf("/")+1):A="",M=I=>{var y=new XMLHttpRequest;return y.open("GET",I,!1),y.send(null),y.responseText},S&&(W=I=>{var y=new XMLHttpRequest;return y.open("GET",I,!1),y.responseType="arraybuffer",y.send(null),new Uint8Array(y.response)}),L=(I,y,D)=>{var P=new XMLHttpRequest;P.open("GET",I,!0),P.responseType="arraybuffer",P.onload=()=>{if(P.status==200||P.status==0&&P.response){y(P.response);return}D()},P.onerror=D,P.send(null)},ie=I=>document.title=I);var Me=e.print||console.log.bind(console),pe=e.printErr||console.error.bind(console);Object.assign(e,o),o=null,e.arguments&&(a=e.arguments),e.thisProgram&&(d=e.thisProgram),e.quit&&(p=e.quit);var et;e.wasmBinary&&(et=e.wasmBinary);var Ie=e.noExitRuntime||!0;typeof WebAssembly!="object"&&Zr("no native wasm support detected");var _r,Ae,or=!1,Lt,Ct,Ce,Ue,at,Tt,x,ce,Yr;function fi(){var I=_r.buffer;e.HEAP8=Ct=new Int8Array(I),e.HEAP16=Ue=new Int16Array(I),e.HEAP32=Tt=new Int32Array(I),e.HEAPU8=Ce=new Uint8Array(I),e.HEAPU16=at=new Uint16Array(I),e.HEAPU32=x=new Uint32Array(I),e.HEAPF32=ce=new Float32Array(I),e.HEAPF64=Yr=new Float64Array(I)}var $i,Kr=[],Bi=[],ct=[],ut=!1;function Bo(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)pc(e.preRun.shift());Wo(Kr)}function hc(){ut=!0,Wo(Bi)}function mc(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)_c(e.postRun.shift());Wo(ct)}function pc(I){Kr.unshift(I)}function fc(I){Bi.unshift(I)}function _c(I){ct.unshift(I)}var _i=0,de=null,Mr=null;function Lr(I){_i++,e.monitorRunDependencies&&e.monitorRunDependencies(_i)}function bh(I){if(_i--,e.monitorRunDependencies&&e.monitorRunDependencies(_i),_i==0&&(de!==null&&(clearInterval(de),de=null),Mr)){var y=Mr;Mr=null,y()}}function Zr(I){e.onAbort&&e.onAbort(I),I="Aborted("+I+")",pe(I),or=!0,Lt=1,I+=". Build with -sASSERTIONS for more info.";var y=new WebAssembly.RuntimeError(I);throw i(y),y}var gi="data:application/octet-stream;base64,";function Jt(I){return I.startsWith(gi)}var Hi;Hi="videodec_simd.wasm",Jt(Hi)||(Hi=w(Hi));function so(I){if(I==Hi&&et)return new Uint8Array(et);if(W)return W(I);throw"both async and sync fetching of the wasm failed"}function gr(I){return!et&&(_||S)&&typeof fetch=="function"?fetch(I,{credentials:"same-origin"}).then(y=>{if(!y.ok)throw"failed to load wasm binary file at '"+I+"'";return y.arrayBuffer()}).catch(()=>so(I)):Promise.resolve().then(()=>so(I))}function ao(I,y,D){return gr(I).then(P=>WebAssembly.instantiate(P,y)).then(P=>P).then(D,P=>{pe("failed to asynchronously prepare wasm: "+P),Zr(P)})}function gc(I,y,D,P){return!I&&typeof WebAssembly.instantiateStreaming=="function"&&!Jt(y)&&typeof fetch=="function"?fetch(y,{credentials:"same-origin"}).then(z=>{var te=WebAssembly.instantiateStreaming(z,D);return te.then(P,function(ne){return pe("wasm streaming compile failed: "+ne),pe("falling back to ArrayBuffer instantiation"),ao(y,D,P)})}):ao(y,D,P)}function Ho(){var I={a:Zc};function y(P,z){var te=P.exports;return Ae=te,_r=Ae.v,fi(),$i=Ae.z,fc(Ae.w),bh("wasm-instantiate"),te}Lr("wasm-instantiate");function D(P){y(P.instance)}if(e.instantiateWasm)try{return e.instantiateWasm(I,y)}catch(P){pe("Module.instantiateWasm callback failed with error: "+P),i(P)}return gc(et,Hi,I,D).catch(i),{}}var Wo=I=>{for(;I.length>0;)I.shift()(e)};function G(I){this.excPtr=I,this.ptr=I-24,this.set_type=function(y){x[this.ptr+4>>2]=y},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(y){x[this.ptr+8>>2]=y},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(y){y=y?1:0,Ct[this.ptr+12>>0]=y},this.get_caught=function(){return Ct[this.ptr+12>>0]!=0},this.set_rethrown=function(y){y=y?1:0,Ct[this.ptr+13>>0]=y},this.get_rethrown=function(){return Ct[this.ptr+13>>0]!=0},this.init=function(y,D){this.set_adjusted_ptr(0),this.set_type(y),this.set_destructor(D)},this.set_adjusted_ptr=function(y){x[this.ptr+16>>2]=y},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){var y=sa(this.get_type());if(y)return x[this.excPtr>>2];var D=this.get_adjusted_ptr();return D!==0?D:this.excPtr}}var ee=0,ve=0;function Sn(I,y,D){var P=new G(I);throw P.init(y,D),ee=I,ve++,ee}function Ec(I,y,D,P,z){}function In(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${I}`)}}function Tc(){for(var I=new Array(256),y=0;y<256;++y)I[y]=String.fromCharCode(y);js=I}var js=void 0;function er(I){for(var y="",D=I;Ce[D];)y+=js[Ce[D++]];return y}var he={},Ei={},Wi={},dt=void 0;function Ge(I){throw new dt(I)}var sr=void 0;function ei(I){throw new sr(I)}function Ur(I,y,D){I.forEach(function(X){Wi[X]=y});function P(X){var le=D(X);le.length!==I.length&&ei("Mismatched type converter count");for(var re=0;re<I.length;++re)tr(I[re],le[re])}var z=new Array(y.length),te=[],ne=0;y.forEach((X,le)=>{Ei.hasOwnProperty(X)?z[le]=Ei[X]:(te.push(X),he.hasOwnProperty(X)||(he[X]=[]),he[X].push(()=>{z[le]=Ei[X],++ne,ne===te.length&&P(z)}))}),te.length===0&&P(z)}function yn(I,y,D={}){var P=y.name;if(I||Ge(`type "${P}" must have a positive integer typeid pointer`),Ei.hasOwnProperty(I)){if(D.ignoreDuplicateRegistrations)return;Ge(`Cannot register type '${P}' twice`)}if(Ei[I]=y,delete Wi[I],he.hasOwnProperty(I)){var z=he[I];delete he[I],z.forEach(te=>te())}}function tr(I,y,D={}){if(!("argPackAdvance"in y))throw new TypeError("registerType registeredInstance requires argPackAdvance");return yn(I,y,D)}function Sc(I,y,D,P,z){var te=In(D);y=er(y),tr(I,{name:y,fromWireType:function(ne){return!!ne},toWireType:function(ne,X){return X?P:z},argPackAdvance:8,readValueFromPointer:function(ne){var X;if(D===1)X=Ct;else if(D===2)X=Ue;else if(D===4)X=Tt;else throw new TypeError("Unknown boolean type size: "+y);return this.fromWireType(X[ne>>te])},destructorFunction:null})}function Ut(I){if(!(this instanceof ti)||!(I instanceof ti))return!1;for(var y=this.$$.ptrType.registeredClass,D=this.$$.ptr,P=I.$$.ptrType.registeredClass,z=I.$$.ptr;y.baseClass;)D=y.upcast(D),y=y.baseClass;for(;P.baseClass;)z=P.upcast(z),P=P.baseClass;return y===P&&D===z}function Go(I){return{count:I.count,deleteScheduled:I.deleteScheduled,preservePointerOnDelete:I.preservePointerOnDelete,ptr:I.ptr,ptrType:I.ptrType,smartPtr:I.smartPtr,smartPtrType:I.smartPtrType}}function se(I){function y(D){return D.$$.ptrType.registeredClass.name}Ge(y(I)+" instance already deleted")}var jo=!1;function zs(I){}function Ic(I){I.smartPtr?I.smartPtrType.rawDestructor(I.smartPtr):I.ptrType.registeredClass.rawDestructor(I.ptr)}function Js(I){I.count.value-=1;var y=I.count.value===0;y&&Ic(I)}function qs(I,y,D){if(y===D)return I;if(D.baseClass===void 0)return null;var P=qs(I,y,D.baseClass);return P===null?null:D.downcast(P)}var Gi={};function m(){return Object.keys(Cn).length}function zo(){var I=[];for(var y in Cn)Cn.hasOwnProperty(y)&&I.push(Cn[y]);return I}var Ve=[];function Jo(){for(;Ve.length;){var I=Ve.pop();I.$$.deleteScheduled=!1,I.delete()}}var vn=void 0;function yc(I){vn=I,Ve.length&&vn&&vn(Jo)}function An(){e.getInheritedInstanceCount=m,e.getLiveInheritedInstances=zo,e.flushPendingDeletes=Jo,e.setDelayFunction=yc}var Cn={};function qo(I,y){for(y===void 0&&Ge("ptr should not be undefined");I.baseClass;)y=I.upcast(y),I=I.baseClass;return y}function tt(I,y){return y=qo(I,y),Cn[y]}function qt(I,y){(!y.ptrType||!y.ptr)&&ei("makeClassHandle requires ptr and ptrType");var D=!!y.smartPtrType,P=!!y.smartPtr;return D!==P&&ei("Both smartPtrType and smartPtr must be specified"),y.count={value:1},Er(Object.create(I,{$$:{value:y}}))}function rr(I){var y=this.getPointee(I);if(!y)return this.destructor(I),null;var D=tt(this.registeredClass,y);if(D!==void 0){if(D.$$.count.value===0)return D.$$.ptr=y,D.$$.smartPtr=I,D.clone();var P=D.clone();return this.destructor(I),P}function z(){return this.isSmartPointer?qt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:y,smartPtrType:this,smartPtr:I}):qt(this.registeredClass.instancePrototype,{ptrType:this,ptr:I})}var te=this.registeredClass.getActualType(y),ne=Gi[te];if(!ne)return z.call(this);var X;this.isConst?X=ne.constPointerType:X=ne.pointerType;var le=qs(y,this.registeredClass,X.registeredClass);return le===null?z.call(this):this.isSmartPointer?qt(X.registeredClass.instancePrototype,{ptrType:X,ptr:le,smartPtrType:this,smartPtr:I}):qt(X.registeredClass.instancePrototype,{ptrType:X,ptr:le})}var Er=function(I){return typeof FinalizationRegistry=="undefined"?(Er=y=>y,I):(jo=new FinalizationRegistry(y=>{Js(y.$$)}),Er=y=>{var D=y.$$,P=!!D.smartPtr;if(P){var z={$$:D};jo.register(y,z,y)}return y},zs=y=>jo.unregister(y),Er(I))};function Tr(){if(this.$$.ptr||se(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var I=Er(Object.create(Object.getPrototypeOf(this),{$$:{value:Go(this.$$)}}));return I.$$.count.value+=1,I.$$.deleteScheduled=!1,I}function ue(){this.$$.ptr||se(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ge("Object already scheduled for deletion"),zs(this),Js(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Xo(){return!this.$$.ptr}function Ti(){return this.$$.ptr||se(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ge("Object already scheduled for deletion"),Ve.push(this),Ve.length===1&&vn&&vn(Jo),this.$$.deleteScheduled=!0,this}function Vr(){ti.prototype.isAliasOf=Ut,ti.prototype.clone=Tr,ti.prototype.delete=ue,ti.prototype.isDeleted=Xo,ti.prototype.deleteLater=Ti}function ti(){}var Rt=48,vc=57;function co(I){if(I===void 0)return"_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var y=I.charCodeAt(0);return y>=Rt&&y<=vc?`_${I}`:I}function Qo(I,y){return I=co(I),{[I]:function(){return y.apply(this,arguments)}}[I]}function ji(I,y,D){if(I[y].overloadTable===void 0){var P=I[y];I[y]=function(){return I[y].overloadTable.hasOwnProperty(arguments.length)||Ge(`Function '${D}' called with an invalid number of arguments (${arguments.length}) - expects one of (${I[y].overloadTable})!`),I[y].overloadTable[arguments.length].apply(this,arguments)},I[y].overloadTable=[],I[y].overloadTable[P.argCount]=P}}function Rn(I,y,D){e.hasOwnProperty(I)?((D===void 0||e[I].overloadTable!==void 0&&e[I].overloadTable[D]!==void 0)&&Ge(`Cannot register public name '${I}' twice`),ji(e,I,I),e.hasOwnProperty(D)&&Ge(`Cannot register multiple overloads of a function with the same number of arguments (${D})!`),e[I].overloadTable[D]=y):(e[I]=y,D!==void 0&&(e[I].numArguments=D))}function Yo(I,y,D,P,z,te,ne,X){this.name=I,this.constructor=y,this.instancePrototype=D,this.rawDestructor=P,this.baseClass=z,this.getActualType=te,this.upcast=ne,this.downcast=X,this.pureVirtualFunctions=[]}function Ko(I,y,D){for(;y!==D;)y.upcast||Ge(`Expected null or instance of ${D.name}, got an instance of ${y.name}`),I=y.upcast(I),y=y.baseClass;return I}function Zo(I,y){if(y===null)return this.isReference&&Ge(`null is not a valid ${this.name}`),0;y.$$||Ge(`Cannot pass "${ns(y)}" as a ${this.name}`),y.$$.ptr||Ge(`Cannot pass deleted object as a pointer of type ${this.name}`);var D=y.$$.ptrType.registeredClass,P=Ko(y.$$.ptr,D,this.registeredClass);return P}function es(I,y){var D;if(y===null)return this.isReference&&Ge(`null is not a valid ${this.name}`),this.isSmartPointer?(D=this.rawConstructor(),I!==null&&I.push(this.rawDestructor,D),D):0;y.$$||Ge(`Cannot pass "${ns(y)}" as a ${this.name}`),y.$$.ptr||Ge(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&y.$$.ptrType.isConst&&Ge(`Cannot convert argument of type ${y.$$.smartPtrType?y.$$.smartPtrType.name:y.$$.ptrType.name} to parameter type ${this.name}`);var P=y.$$.ptrType.registeredClass;if(D=Ko(y.$$.ptr,P,this.registeredClass),this.isSmartPointer)switch(y.$$.smartPtr===void 0&&Ge("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:y.$$.smartPtrType===this?D=y.$$.smartPtr:Ge(`Cannot convert argument of type ${y.$$.smartPtrType?y.$$.smartPtrType.name:y.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:D=y.$$.smartPtr;break;case 2:if(y.$$.smartPtrType===this)D=y.$$.smartPtr;else{var z=y.clone();D=this.rawShare(D,Rr.toHandle(function(){z.delete()})),I!==null&&I.push(this.rawDestructor,D)}break;default:Ge("Unsupporting sharing policy")}return D}function ts(I,y){if(y===null)return this.isReference&&Ge(`null is not a valid ${this.name}`),0;y.$$||Ge(`Cannot pass "${ns(y)}" as a ${this.name}`),y.$$.ptr||Ge(`Cannot pass deleted object as a pointer of type ${this.name}`),y.$$.ptrType.isConst&&Ge(`Cannot convert argument of type ${y.$$.ptrType.name} to parameter type ${this.name}`);var D=y.$$.ptrType.registeredClass,P=Ko(y.$$.ptr,D,this.registeredClass);return P}function uo(I){return this.fromWireType(Tt[I>>2])}function Ac(I){return this.rawGetPointee&&(I=this.rawGetPointee(I)),I}function Fr(I){this.rawDestructor&&this.rawDestructor(I)}function bn(I){I!==null&&I.delete()}function $r(){Br.prototype.getPointee=Ac,Br.prototype.destructor=Fr,Br.prototype.argPackAdvance=8,Br.prototype.readValueFromPointer=uo,Br.prototype.deleteObject=bn,Br.prototype.fromWireType=rr}function Br(I,y,D,P,z,te,ne,X,le,re,Ne){this.name=I,this.registeredClass=y,this.isReference=D,this.isConst=P,this.isSmartPointer=z,this.pointeeType=te,this.sharingPolicy=ne,this.rawGetPointee=X,this.rawConstructor=le,this.rawShare=re,this.rawDestructor=Ne,!z&&y.baseClass===void 0?P?(this.toWireType=Zo,this.destructorFunction=null):(this.toWireType=ts,this.destructorFunction=null):this.toWireType=es}function Cc(I,y,D){e.hasOwnProperty(I)||ei("Replacing nonexistant public symbol"),e[I].overloadTable!==void 0&&D!==void 0?e[I].overloadTable[D]=y:(e[I]=y,e[I].argCount=D)}var Hr=(I,y,D)=>{var P=e["dynCall_"+I];return D&&D.length?P.apply(null,[y].concat(D)):P.call(null,y)},lo=[],Xs=I=>{var y=lo[I];return y||(I>=lo.length&&(lo.length=I+1),lo[I]=y=$i.get(I)),y},Si=(I,y,D)=>{if(I.includes("j"))return Hr(I,y,D);var P=Xs(y).apply(null,D);return P},Rc=(I,y)=>{var D=[];return function(){return D.length=0,Object.assign(D,arguments),Si(I,y,D)}};function Xt(I,y){I=er(I);function D(){return I.includes("j")?Rc(I,y):Xs(y)}var P=D();return typeof P!="function"&&Ge(`unknown function pointer with signature ${I}: ${y}`),P}function bc(I,y){var D=Qo(y,function(P){this.name=y,this.message=P;var z=new Error(P).stack;z!==void 0&&(this.stack=this.toString()+`
77
+ `+z.replace(/^Error(:[^\n]*)?\n/,""))});return D.prototype=Object.create(I.prototype),D.prototype.constructor=D,D.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},D}var Qs=void 0;function Ys(I){var y=oa(I),D=er(y);return Wr(y),D}function rs(I,y){var D=[],P={};function z(te){if(!P[te]&&!Ei[te]){if(Wi[te]){Wi[te].forEach(z);return}D.push(te),P[te]=!0}}throw y.forEach(z),new Qs(`${I}: `+D.map(Ys).join([", "]))}function Nc(I,y,D,P,z,te,ne,X,le,re,Ne,Be,Fe){Ne=er(Ne),te=Xt(z,te),X&&(X=Xt(ne,X)),re&&(re=Xt(le,re)),Fe=Xt(Be,Fe);var Ke=co(Ne);Rn(Ke,function(){rs(`Cannot construct ${Ne} due to unbound types`,[P])}),Ur([I,y,D],P?[P]:[],function(rt){rt=rt[0];var cr,Qt;P?(cr=rt.registeredClass,Qt=cr.instancePrototype):Qt=ti.prototype;var ii=Qo(Ke,function(){if(Object.getPrototypeOf(this)!==ms)throw new dt("Use 'new' to construct "+Ne);if(Sr.constructor_body===void 0)throw new dt(Ne+" has no accessible constructor");var ua=Sr.constructor_body[arguments.length];if(ua===void 0)throw new dt(`Tried to invoke ctor of ${Ne} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Sr.constructor_body).toString()}) parameters instead!`);return ua.apply(this,arguments)}),ms=Object.create(Qt,{constructor:{value:ii}});ii.prototype=ms;var Sr=new Yo(Ne,ii,ms,Fe,cr,te,X,re);Sr.baseClass&&(Sr.baseClass.__derivedClasses===void 0&&(Sr.baseClass.__derivedClasses=[]),Sr.baseClass.__derivedClasses.push(Sr));var id=new Br(Ne,Sr,!0,!1,!1),ca=new Br(Ne+"*",Sr,!1,!1,!1),da=new Br(Ne+" const*",Sr,!1,!0,!1);return Gi[I]={pointerType:ca,constPointerType:da},Cc(Ke,ii),[id,ca,da]})}function Pt(I,y){for(var D=[],P=0;P<I;P++)D.push(x[y+P*4>>2]);return D}function Dc(I){for(;I.length;){var y=I.pop(),D=I.pop();D(y)}}function Ks(I,y){if(!(I instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof I} which is not a function`);var D=Qo(I.name||"unknownFunctionName",function(){});D.prototype=I.prototype;var P=new D,z=I.apply(P,y);return z instanceof Object?z:P}function ri(I,y,D,P,z,te){var ne=y.length;ne<2&&Ge("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var X=y[1]!==null&&D!==null,le=!1,re=1;re<y.length;++re)if(y[re]!==null&&y[re].destructorFunction===void 0){le=!0;break}for(var Ne=y[0].name!=="void",Be="",Fe="",re=0;re<ne-2;++re)Be+=(re!==0?", ":"")+"arg"+re,Fe+=(re!==0?", ":"")+"arg"+re+"Wired";var Ke=`
78
+ return function ${co(I)}(${Be}) {
79
+ if (arguments.length !== ${ne-2}) {
80
+ throwBindingError('function ${I} called with ${arguments.length} arguments, expected ${ne-2} args!');
81
+ }`;le&&(Ke+=`var destructors = [];
82
+ `);var rt=le?"destructors":"null",cr=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Qt=[Ge,P,z,Dc,y[0],y[1]];X&&(Ke+="var thisWired = classParam.toWireType("+rt+`, this);
83
+ `);for(var re=0;re<ne-2;++re)Ke+="var arg"+re+"Wired = argType"+re+".toWireType("+rt+", arg"+re+"); // "+y[re+2].name+`
84
+ `,cr.push("argType"+re),Qt.push(y[re+2]);if(X&&(Fe="thisWired"+(Fe.length>0?", ":"")+Fe),Ke+=(Ne||te?"var rv = ":"")+"invoker(fn"+(Fe.length>0?", ":"")+Fe+`);
85
+ `,le)Ke+=`runDestructors(destructors);
86
+ `;else for(var re=X?1:2;re<y.length;++re){var ii=re===1?"thisWired":"arg"+(re-2)+"Wired";y[re].destructorFunction!==null&&(Ke+=ii+"_dtor("+ii+"); // "+y[re].name+`
87
+ `,cr.push(ii+"_dtor"),Qt.push(y[re].destructorFunction))}return Ne&&(Ke+=`var ret = retType.fromWireType(rv);
88
+ return ret;
89
+ `),Ke+=`}
90
+ `,cr.push(Ke),Ks(Function,cr).apply(null,Qt)}function Nn(I,y,D,P,z,te){var ne=Pt(y,D);z=Xt(P,z),Ur([],[I],function(X){X=X[0];var le=`constructor ${X.name}`;if(X.registeredClass.constructor_body===void 0&&(X.registeredClass.constructor_body=[]),X.registeredClass.constructor_body[y-1]!==void 0)throw new dt(`Cannot register multiple constructors with identical number of parameters (${y-1}) for class '${X.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return X.registeredClass.constructor_body[y-1]=()=>{rs(`Cannot construct ${X.name} due to unbound types`,ne)},Ur([],ne,function(re){return re.splice(1,0,null),X.registeredClass.constructor_body[y-1]=ri(le,re,null,z,te),[]}),[]})}function is(I,y,D,P,z,te,ne,X,le){var re=Pt(D,P);y=er(y),te=Xt(z,te),Ur([],[I],function(Ne){Ne=Ne[0];var Be=`${Ne.name}.${y}`;y.startsWith("@@")&&(y=Symbol[y.substring(2)]),X&&Ne.registeredClass.pureVirtualFunctions.push(y);function Fe(){rs(`Cannot call ${Be} due to unbound types`,re)}var Ke=Ne.registeredClass.instancePrototype,rt=Ke[y];return rt===void 0||rt.overloadTable===void 0&&rt.className!==Ne.name&&rt.argCount===D-2?(Fe.argCount=D-2,Fe.className=Ne.name,Ke[y]=Fe):(ji(Ke,y,Be),Ke[y].overloadTable[D-2]=Fe),Ur([],re,function(cr){var Qt=ri(Be,cr,Ne,te,ne,le);return Ke[y].overloadTable===void 0?(Qt.argCount=D-2,Ke[y]=Qt):Ke[y].overloadTable[D-2]=Qt,[]}),[]})}function wc(){Object.assign(Zs.prototype,{get(I){return this.allocated[I]},has(I){return this.allocated[I]!==void 0},allocate(I){var y=this.freelist.pop()||this.allocated.length;return this.allocated[y]=I,y},free(I){this.allocated[I]=void 0,this.freelist.push(I)}})}function Zs(){this.allocated=[void 0],this.freelist=[]}var Vt=new Zs;function ea(I){I>=Vt.reserved&&--Vt.get(I).refcount===0&&Vt.free(I)}function kc(){for(var I=0,y=Vt.reserved;y<Vt.allocated.length;++y)Vt.allocated[y]!==void 0&&++I;return I}function Oc(){Vt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Vt.reserved=Vt.allocated.length,e.count_emval_handles=kc}var Rr={toValue:I=>(I||Ge("Cannot use deleted val. handle = "+I),Vt.get(I).value),toHandle:I=>{switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Vt.allocate({refcount:1,value:I})}}};function Pc(I,y){y=er(y),tr(I,{name:y,fromWireType:function(D){var P=Rr.toValue(D);return ea(D),P},toWireType:function(D,P){return Rr.toHandle(P)},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:null})}function ns(I){if(I===null)return"null";var y=typeof I;return y==="object"||y==="array"||y==="function"?I.toString():""+I}function xc(I,y){switch(y){case 2:return function(D){return this.fromWireType(ce[D>>2])};case 3:return function(D){return this.fromWireType(Yr[D>>3])};default:throw new TypeError("Unknown float type: "+I)}}function Mc(I,y,D){var P=In(D);y=er(y),tr(I,{name:y,fromWireType:function(z){return z},toWireType:function(z,te){return te},argPackAdvance:8,readValueFromPointer:xc(y,P),destructorFunction:null})}function bt(I,y,D){switch(y){case 0:return D?function(z){return Ct[z]}:function(z){return Ce[z]};case 1:return D?function(z){return Ue[z>>1]}:function(z){return at[z>>1]};case 2:return D?function(z){return Tt[z>>2]}:function(z){return x[z>>2]};default:throw new TypeError("Unknown integer type: "+I)}}function Lc(I,y,D,P,z){y=er(y),z===-1&&(z=4294967295);var te=In(D),ne=Be=>Be;if(P===0){var X=32-8*D;ne=Be=>Be<<X>>>X}var le=y.includes("unsigned"),re=(Be,Fe)=>{},Ne;le?Ne=function(Be,Fe){return re(Fe,this.name),Fe>>>0}:Ne=function(Be,Fe){return re(Fe,this.name),Fe},tr(I,{name:y,fromWireType:ne,toWireType:Ne,argPackAdvance:8,readValueFromPointer:bt(y,te,P!==0),destructorFunction:null})}function Uc(I,y,D){var P=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],z=P[y];function te(ne){ne=ne>>2;var X=x,le=X[ne],re=X[ne+1];return new z(X.buffer,re,le)}D=er(D),tr(I,{name:D,fromWireType:te,argPackAdvance:8,readValueFromPointer:te},{ignoreDuplicateRegistrations:!0})}var Ii=(I,y,D,P)=>{if(!(P>0))return 0;for(var z=D,te=D+P-1,ne=0;ne<I.length;++ne){var X=I.charCodeAt(ne);if(X>=55296&&X<=57343){var le=I.charCodeAt(++ne);X=65536+((X&1023)<<10)|le&1023}if(X<=127){if(D>=te)break;y[D++]=X}else if(X<=2047){if(D+1>=te)break;y[D++]=192|X>>6,y[D++]=128|X&63}else if(X<=65535){if(D+2>=te)break;y[D++]=224|X>>12,y[D++]=128|X>>6&63,y[D++]=128|X&63}else{if(D+3>=te)break;y[D++]=240|X>>18,y[D++]=128|X>>12&63,y[D++]=128|X>>6&63,y[D++]=128|X&63}}return y[D]=0,D-z},os=(I,y,D)=>Ii(I,Ce,y,D),Vc=I=>{for(var y=0,D=0;D<I.length;++D){var P=I.charCodeAt(D);P<=127?y++:P<=2047?y+=2:P>=55296&&P<=57343?(y+=4,++D):y+=3}return y},ta=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,ar=(I,y,D)=>{for(var P=y+D,z=y;I[z]&&!(z>=P);)++z;if(z-y>16&&I.buffer&&ta)return ta.decode(I.subarray(y,z));for(var te="";y<z;){var ne=I[y++];if(!(ne&128)){te+=String.fromCharCode(ne);continue}var X=I[y++]&63;if((ne&224)==192){te+=String.fromCharCode((ne&31)<<6|X);continue}var le=I[y++]&63;if((ne&240)==224?ne=(ne&15)<<12|X<<6|le:ne=(ne&7)<<18|X<<12|le<<6|I[y++]&63,ne<65536)te+=String.fromCharCode(ne);else{var re=ne-65536;te+=String.fromCharCode(55296|re>>10,56320|re&1023)}}return te},ra=(I,y)=>I?ar(Ce,I,y):"";function ss(I,y){y=er(y);var D=y==="std::string";tr(I,{name:y,fromWireType:function(P){var z=x[P>>2],te=P+4,ne;if(D)for(var X=te,le=0;le<=z;++le){var re=te+le;if(le==z||Ce[re]==0){var Ne=re-X,Be=ra(X,Ne);ne===void 0?ne=Be:(ne+=String.fromCharCode(0),ne+=Be),X=re+1}}else{for(var Fe=new Array(z),le=0;le<z;++le)Fe[le]=String.fromCharCode(Ce[te+le]);ne=Fe.join("")}return Wr(P),ne},toWireType:function(P,z){z instanceof ArrayBuffer&&(z=new Uint8Array(z));var te,ne=typeof z=="string";ne||z instanceof Uint8Array||z instanceof Uint8ClampedArray||z instanceof Int8Array||Ge("Cannot pass non-string to std::string"),D&&ne?te=Vc(z):te=z.length;var X=hs(4+te+1),le=X+4;if(x[X>>2]=te,D&&ne)os(z,le,te+1);else if(ne)for(var re=0;re<te;++re){var Ne=z.charCodeAt(re);Ne>255&&(Wr(le),Ge("String has UTF-16 code units that do not fit in 8 bits")),Ce[le+re]=Ne}else for(var re=0;re<te;++re)Ce[le+re]=z[re];return P!==null&&P.push(Wr,X),X},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:function(P){Wr(P)}})}var ho=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,Dn=(I,y)=>{for(var D=I,P=D>>1,z=P+y/2;!(P>=z)&&at[P];)++P;if(D=P<<1,D-I>32&&ho)return ho.decode(Ce.subarray(I,D));for(var te="",ne=0;!(ne>=y/2);++ne){var X=Ue[I+ne*2>>1];if(X==0)break;te+=String.fromCharCode(X)}return te},Fc=(I,y,D)=>{if(D===void 0&&(D=2147483647),D<2)return 0;D-=2;for(var P=y,z=D<I.length*2?D/2:I.length,te=0;te<z;++te){var ne=I.charCodeAt(te);Ue[y>>1]=ne,y+=2}return Ue[y>>1]=0,y-P},as=I=>I.length*2,$c=(I,y)=>{for(var D=0,P="";!(D>=y/4);){var z=Tt[I+D*4>>2];if(z==0)break;if(++D,z>=65536){var te=z-65536;P+=String.fromCharCode(55296|te>>10,56320|te&1023)}else P+=String.fromCharCode(z)}return P},cs=(I,y,D)=>{if(D===void 0&&(D=2147483647),D<4)return 0;for(var P=y,z=P+D-4,te=0;te<I.length;++te){var ne=I.charCodeAt(te);if(ne>=55296&&ne<=57343){var X=I.charCodeAt(++te);ne=65536+((ne&1023)<<10)|X&1023}if(Tt[y>>2]=ne,y+=4,y+4>z)break}return Tt[y>>2]=0,y-P},ds=I=>{for(var y=0,D=0;D<I.length;++D){var P=I.charCodeAt(D);P>=55296&&P<=57343&&++D,y+=4}return y},Bc=function(I,y,D){D=er(D);var P,z,te,ne,X;y===2?(P=Dn,z=Fc,ne=as,te=()=>at,X=1):y===4&&(P=$c,z=cs,ne=ds,te=()=>x,X=2),tr(I,{name:D,fromWireType:function(le){for(var re=x[le>>2],Ne=te(),Be,Fe=le+4,Ke=0;Ke<=re;++Ke){var rt=le+4+Ke*y;if(Ke==re||Ne[rt>>X]==0){var cr=rt-Fe,Qt=P(Fe,cr);Be===void 0?Be=Qt:(Be+=String.fromCharCode(0),Be+=Qt),Fe=rt+y}}return Wr(le),Be},toWireType:function(le,re){typeof re!="string"&&Ge(`Cannot pass non-string to C++ string type ${D}`);var Ne=ne(re),Be=hs(4+Ne+y);return x[Be>>2]=Ne>>X,z(re,Be+4,Ne+y),le!==null&&le.push(Wr,Be),Be},argPackAdvance:8,readValueFromPointer:uo,destructorFunction:function(le){Wr(le)}})};function Hc(I,y){y=er(y),tr(I,{isVoid:!0,name:y,argPackAdvance:0,fromWireType:function(){},toWireType:function(D,P){}})}var Wc={};function us(I){var y=Wc[I];return y===void 0?er(I):y}var st=[];function ls(I,y,D,P){I=st[I],y=Rr.toValue(y),D=us(D),I(y,D,null,P)}function Gc(I){var y=st.length;return st.push(I),y}function jc(I,y){var D=Ei[I];return D===void 0&&Ge(y+" has unknown type "+Ys(I)),D}function yi(I,y){for(var D=new Array(I),P=0;P<I;++P)D[P]=jc(x[y+P*4>>2],"parameter "+P);return D}var ia=[];function wn(I,y){var D=yi(I,y),P=D[0],z=P.name+"_$"+D.slice(1).map(function(rt){return rt.name}).join("_")+"$",te=ia[z];if(te!==void 0)return te;for(var ne=["retType"],X=[P],le="",re=0;re<I-1;++re)le+=(re!==0?", ":"")+"arg"+re,ne.push("argType"+re),X.push(D[1+re]);for(var Ne=co("methodCaller_"+z),Be="return function "+Ne+`(handle, name, destructors, args) {
91
+ `,Fe=0,re=0;re<I-1;++re)Be+=" var arg"+re+" = argType"+re+".readValueFromPointer(args"+(Fe?"+"+Fe:"")+`);
92
+ `,Fe+=D[re+1].argPackAdvance;Be+=" var rv = handle[name]("+le+`);
93
+ `;for(var re=0;re<I-1;++re)D[re+1].deleteObject&&(Be+=" argType"+re+".deleteObject(arg"+re+`);
94
+ `);P.isVoid||(Be+=` return retType.toWireType(destructors, rv);
95
+ `),Be+=`};
96
+ `,ne.push(Be);var Ke=Ks(Function,ne).apply(null,X);return te=Gc(Ke),ia[z]=te,te}var zc=()=>{Zr("")},na;na=()=>performance.now();var Jc=(I,y,D)=>Ce.copyWithin(I,y,y+D),qc=I=>{Zr("OOM")},Xc=I=>{var y=Ce.length;I>>>=0,qc(I)},Qc=[null,[],[]],Yc=(I,y)=>{var D=Qc[I];y===0||y===10?((I===1?Me:pe)(ar(D,0)),D.length=0):D.push(y)},mo={varargs:void 0,get(){mo.varargs+=4;var I=Tt[mo.varargs-4>>2];return I},getStr(I){var y=ra(I);return y}},Kc=(I,y,D,P)=>{for(var z=0,te=0;te<D;te++){var ne=x[y>>2],X=x[y+4>>2];y+=8;for(var le=0;le<X;le++)Yc(I,Ce[ne+le]);z+=X}return x[P>>2]=z,0};Tc(),dt=e.BindingError=class extends Error{constructor(y){super(y),this.name="BindingError"}},sr=e.InternalError=class extends Error{constructor(y){super(y),this.name="InternalError"}},Vr(),An(),$r(),Qs=e.UnboundTypeError=bc(Error,"UnboundTypeError"),wc(),Oc();var Zc={o:Sn,r:Ec,m:Sc,q:Nc,p:Nn,d:is,u:Pc,k:Mc,b:Lc,a:Uc,j:ss,g:Bc,n:Hc,e:ls,l:ea,h:wn,f:zc,c:na,t:Jc,s:Xc,i:Kc},Pu=Ho(),ed=()=>(ed=Ae.w)(),Wr=I=>(Wr=Ae.x)(I),hs=I=>(hs=Ae.y)(I),oa=I=>(oa=Ae.A)(I),td=e.__embind_initialize_bindings=()=>(td=e.__embind_initialize_bindings=Ae.B)(),rd=()=>(rd=Ae.__errno_location)(),sa=I=>(sa=Ae.C)(I),kn=e.dynCall_jiji=(I,y,D,P,z)=>(kn=e.dynCall_jiji=Ae.D)(I,y,D,P,z),po;Mr=function I(){po||aa(),po||(Mr=I)};function aa(){if(_i>0||(Bo(),_i>0))return;function I(){po||(po=!0,e.calledRun=!0,!or&&(hc(),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),mc()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),I()},1)):I()}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return aa(),r.ready}})(),Mg=AI;var Eu=class extends _n{constructor(r){super(Mg,r!=null&&r.wasmPath?fetch(r.wasmPath).then(e=>e.arrayBuffer()):void 0,r==null?void 0:r.workerMode,r==null?void 0:r.canvas,r==null?void 0:r.yuvMode)}};var gn=class extends Re{initialize(){return N(this,null,function*(){this.decoder=new VideoDecoder({output:e=>{this.emit("videoFrame",e)},error:e=>{this.close(),this.emit("error",e)}})})}configure(e){this.config=e,this.decoder.configure(_e(oe({},e),{codec:this.getCodec(e)}))}getCodec(e){switch(e.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return e.codec}}decode(e){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(e))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};j([mt([Re.INIT,"closed"],"initialized")],gn.prototype,"initialize",1),j([mt("initialized","configured",{sync:!0})],gn.prototype,"configure",1),j([rc("configured")],gn.prototype,"decode",1),j([mt([],Re.INIT)],gn.prototype,"reset",1),j([mt([],"closed",{ignoreError:!0,sync:!0})],gn.prototype,"close",1);var Q=class{static box(r,...e){let t=8,i=e.length;for(let d=0;d<i;d++)t+=e[d].byteLength;let o=new Uint8Array(t);o[0]=t>>>24&255,o[1]=t>>>16&255,o[2]=t>>>8&255,o[3]=t&255,o.set(r,4);let a=8;for(let d=0;d<i;d++)o.set(e[d],a),a+=e[d].byteLength;return o}static generateInitSegment(r){let e=Q.box(Q.types.ftyp,Q.constants.FTYP),t=Q.moov(r),i=new Uint8Array(e.byteLength+t.byteLength);return i.set(e,0),i.set(t,e.byteLength),i}static moov(r){let e=Q.mvhd(r.timescale,r.duration),t=Q.trak(r),i=Q.mvex(r);return Q.box(Q.types.moov,e,t,i)}static mvhd(r,e){return Q.box(Q.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,r&255,e>>>24&255,e>>>16&255,e>>>8&255,e&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(r){return Q.box(Q.types.trak,Q.tkhd(r),Q.mdia(r))}static tkhd(r){let e=r.id,t=r.duration,i=r.presentWidth,o=r.presentHeight;return Q.box(Q.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>>8&255,i&255,0,0,o>>>8&255,o&255,0,0]))}static mdia(r){return Q.box(Q.types.mdia,Q.mdhd(r),Q.hdlr(r),Q.minf(r))}static mdhd(r){let e=r.timescale,t=r.duration;return Q.box(Q.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,85,196,0,0]))}static hdlr(r){let e=null;return r.type==="audio"?e=Q.constants.HDLR_AUDIO:e=Q.constants.HDLR_VIDEO,Q.box(Q.types.hdlr,e)}static minf(r){let e=null;return r.type==="audio"?e=Q.box(Q.types.smhd,Q.constants.SMHD):e=Q.box(Q.types.vmhd,Q.constants.VMHD),Q.box(Q.types.minf,e,Q.dinf(),Q.stbl(r))}static dinf(){return Q.box(Q.types.dinf,Q.box(Q.types.dref,Q.constants.DREF))}static stbl(r){return Q.box(Q.types.stbl,Q.stsd(r),Q.box(Q.types.stts,Q.constants.STTS),Q.box(Q.types.stsc,Q.constants.STSC),Q.box(Q.types.stsz,Q.constants.STSZ),Q.box(Q.types.stco,Q.constants.STCO))}static stsd(r){return r.type==="audio"?Q.box(Q.types.stsd,Q.constants.STSD_PREFIX,Q.mp4a(r)):r.videoType==="avc"?Q.box(Q.types.stsd,Q.constants.STSD_PREFIX,Q.avc1(r)):Q.box(Q.types.stsd,Q.constants.STSD_PREFIX,Q.hvc1(r))}static mp4a(r){let e=r.channelCount,t=r.audioSampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e,0,16,0,0,0,0,t>>>8&255,t&255,0,0]);return Q.box(Q.types.mp4a,i,Q.esds(r))}static esds(r){let e=r.config||[],t=e.length,i=new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e).concat([6,1,2]));return Q.box(Q.types.esds,i)}static avc1(r){let e=r.avcc,t=r.codecWidth,i=r.codecHeight,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t>>>8&255,t&255,i>>>8&255,i&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Q.box(Q.types.avc1,o,Q.box(Q.types.avcC,e))}static hvc1(r){let e=r.avcc,t=r.codecWidth,i=r.codecHeight,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t>>>8&255,t&255,i>>>8&255,i&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return Q.box(Q.types.hvc1,o,Q.box(Q.types.hvcC,e))}static mvex(r){return Q.box(Q.types.mvex,Q.trex(r))}static trex(r){let e=r.id,t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return Q.box(Q.types.trex,t)}static moof(r,e){return Q.box(Q.types.moof,Q.mfhd(r.sequenceNumber),Q.traf(r,e))}static mfhd(r){let e=new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,r&255]);return Q.box(Q.types.mfhd,e)}static traf(r,e){let t=r.id,i=Q.box(Q.types.tfhd,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255])),o=Q.box(Q.types.tfdt,new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255])),a=Q.sdtp(r),d=Q.trun(r,a.byteLength+16+16+8+16+8+8);return Q.box(Q.types.traf,i,o,d,a)}static sdtp(r){let e=new Uint8Array(5),t=r.flags;return e[4]=t.isLeading<<6|t.dependsOn<<4|t.isDependedOn<<2|t.hasRedundancy,Q.box(Q.types.sdtp,e)}static trun(r,e){let t=28,i=new Uint8Array(t);e+=8+t,i.set([0,0,15,1,0,0,0,1,e>>>24&255,e>>>16&255,e>>>8&255,e&255],0);let o=r.duration,a=r.size,d=r.flags,p=r.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,o&255,a>>>24&255,a>>>16&255,a>>>8&255,a&255,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,p>>>24&255,p>>>16&255,p>>>8&255,p&255],12),Q.box(Q.types.trun,i)}static mdat(r){return Q.box(Q.types.mdat,r)}},hi=Q;hi.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},hi.constants={FTYP:new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),STSD_PREFIX:new Uint8Array([0,0,0,0,0,0,0,1]),STTS:new Uint8Array([0,0,0,0,0,0,0,0]),STSC:new Uint8Array([0,0,0,0,0,0,0,0]),STCO:new Uint8Array([0,0,0,0,0,0,0,0]),STSZ:new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),HDLR_VIDEO:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),HDLR_AUDIO:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),DREF:new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),SMHD:new Uint8Array([0,0,0,0,0,0,0,0]),VMHD:new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])};for(let n in hi.types)hi.types.hasOwnProperty(n)&&(hi.types[n]=[n.charCodeAt(0),n.charCodeAt(1),n.charCodeAt(2),n.charCodeAt(3)]);hi.constants.STSC=hi.constants.STTS;hi.constants.STCO=hi.constants.STTS;var Us=hi;var nf=class{constructor(r){this.TAG="ExpGolomb",this._buffer=r,this._buffer_index=0,this._total_bytes=r.byteLength,this._total_bits=r.byteLength*8,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=new Uint8Array(0)}_fillCurrentWord(){let r=this._total_bytes-this._buffer_index;if(r<=0)throw new Error("ExpGolomb: _fillCurrentWord() but no bytes available");let e=Math.min(4,r),t=new Uint8Array(4);t.set(this._buffer.subarray(this._buffer_index,this._buffer_index+e)),this._current_word=new DataView(t.buffer).getUint32(0,!1),this._buffer_index+=e,this._current_word_bits_left=e*8}readBits(r){if(r>32)throw new Error("ExpGolomb: readBits() bits exceeded max 32bits!");if(r<=this._current_word_bits_left){let a=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,a}let e=this._current_word_bits_left?this._current_word:0;e=e>>>32-this._current_word_bits_left;let t=r-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(t,this._current_word_bits_left),o=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,e=e<<i|o,e}readBool(){return this.readBits(1)===1}readByte(){return this.readBits(8)}_skipLeadingZero(){let r;for(r=0;r<this._current_word_bits_left;r++)if((this._current_word&2147483648>>>r)!==0)return this._current_word<<=r,this._current_word_bits_left-=r,r;return this._fillCurrentWord(),r+this._skipLeadingZero()}readUEG(){let r=this._skipLeadingZero();return this.readBits(r+1)-1}readSEG(){let r=this.readUEG();return r&1?r+1>>>1:-1*(r>>>1)}},Lg=nf;var En=class{static _ebsp2rbsp(r){let e=r,t=e.byteLength,i=new Uint8Array(t),o=0;for(let a=0;a<t;a++)a>=2&&e[a]===3&&e[a-1]===0&&e[a-2]===0||(i[o]=e[a],o++);return new Uint8Array(i.buffer,0,o)}static parseSPS(r){let e=r.subarray(1,4),t="avc1.";for(let ct=0;ct<3;ct++){let ut=e[ct].toString(16);ut.length<2&&(ut="0"+ut),t+=ut}let i=En._ebsp2rbsp(r),o=new Lg(i);o.readByte();let a=o.readByte();o.readByte();let d=o.readByte();o.readUEG();let p=En.getProfileString(a),_=En.getLevelString(d),S=1,v=420,A=[0,420,422,444],w=8,M=8;if((a===100||a===110||a===122||a===244||a===44||a===83||a===86||a===118||a===128||a===138||a===144)&&(S=o.readUEG(),S===3&&o.readBits(1),S<=3&&(v=A[S]),w=o.readUEG()+8,M=o.readUEG()+8,o.readBits(1),o.readBool())){let ct=S!==3?8:12;for(let ut=0;ut<ct;ut++)o.readBool()&&(ut<6?En._skipScalingList(o,16):En._skipScalingList(o,64))}o.readUEG();let L=o.readUEG();if(L===0)o.readUEG();else if(L===1){o.readBits(1),o.readSEG(),o.readSEG();let ct=o.readUEG();for(let ut=0;ut<ct;ut++)o.readSEG()}let W=o.readUEG();o.readBits(1);let ie=o.readUEG(),Me=o.readUEG(),pe=o.readBits(1);pe===0&&o.readBits(1),o.readBits(1);let et=0,Ie=0,_r=0,Ae=0;o.readBool()&&(et=o.readUEG(),Ie=o.readUEG(),_r=o.readUEG(),Ae=o.readUEG());let Lt=1,Ct=1,Ce=0,Ue=!0,at=0,Tt=0;if(o.readBool()){if(o.readBool()){let ct=o.readByte(),ut=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],Bo=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];ct>0&&ct<16?(Lt=ut[ct-1],Ct=Bo[ct-1]):ct===255&&(Lt=o.readByte()<<8|o.readByte(),Ct=o.readByte()<<8|o.readByte())}if(o.readBool()&&o.readBool(),o.readBool()&&(o.readBits(4),o.readBool()&&o.readBits(24)),o.readBool()&&(o.readUEG(),o.readUEG()),o.readBool()){let ct=o.readBits(32),ut=o.readBits(32);Ue=o.readBool(),at=ut,Tt=ct*2,Ce=at/Tt}}let ce=1;(Lt!==1||Ct!==1)&&(ce=Lt/Ct);let Yr=0,fi=0;if(S===0)Yr=1,fi=2-pe;else{let ct=S===3?1:2,ut=S===1?2:1;Yr=ct,fi=ut*(2-pe)}let $i=(ie+1)*16,Kr=(2-pe)*((Me+1)*16);$i-=(et+Ie)*Yr,Kr-=(_r+Ae)*fi;let Bi=Math.ceil($i*ce);return o.destroy(),o=null,{codec_mimetype:t,profile_idc:a,level_idc:d,profile_string:p,level_string:_,chroma_format_idc:S,bit_depth:w,bit_depth_luma:w,bit_depth_chroma:M,ref_frames:W,chroma_format:v,chroma_format_string:En.getChromaFormatString(v),frame_rate:{fixed:Ue,fps:Ce,fps_den:Tt,fps_num:at},sar_ratio:{width:Lt,height:Ct},codec_size:{width:$i,height:Kr},present_size:{width:Bi,height:Kr}}}static _skipScalingList(r,e){let t=8,i=8,o=0;for(let a=0;a<e;a++)i!==0&&(o=r.readSEG(),i=(t+o+256)%256),t=i===0?t:i}static getProfileString(r){switch(r){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}static getLevelString(r){return(r/10).toFixed(1)}static getChromaFormatString(r){switch(r){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}},Tu=En;function Ug({sps:n,pps:r}){let e=8+n.byteLength+1+2+r.byteLength,t=!1,i=Tu.parseSPS(n);n[3]!==66&&n[3]!==77&&n[3]!==88&&(t=!0,e+=4);let o=new Uint8Array(e);o[0]=1,o[1]=n[1],o[2]=n[2],o[3]=n[3],o[4]=255,o[5]=225;let a=n.byteLength;o[6]=a>>>8,o[7]=a&255;let d=8;o.set(n,8),d+=a,o[d]=1;let p=r.byteLength;o[d+1]=p>>>8,o[d+2]=p&255,o.set(r,d+3),d+=3+p,t&&(o[d]=252|i.chroma_format_idc,o[d+1]=248|i.bit_depth_luma-8,o[d+2]=248|i.bit_depth_chroma-8,o[d+3]=0,d+=4);let _=[23,0,0,0,0],S=new Uint8Array(_.length+o.byteLength);return S.set(_,0),S.set(o,_.length),S}var Vs=class extends Re{constructor(){super(...arguments);this.sourceBufferCache=[]}decode(e){var i,o,a,d,p,_;if(!!((i=this.config)!=null&&i.description))try{let S=e.data.byteLength,v=8+S,A=new Uint8Array(v);new DataView(A.buffer,0).setUint32(0,v,!1),A.set(Us.types.mdat,4);let M={id:1,sequenceNumber:++this.sequenceNumber,size:S,dts:e.timestamp,cts:e.timestamp,isKeyframe:e.type==="key",data:e.data,flags:{isLeading:0,dependsOn:2,isDependedOn:1,hasRedundancy:0,isNonSync:0},duration:40},L=Us.moof(M,e.timestamp),W=new Uint8Array(L.byteLength+A.byteLength);W.set(L,0),W.set(A,L.byteLength),(d=this.sourceBuffer)!=null&&d.updating?this.sourceBufferCache.push(W):(p=this.sourceBuffer)==null||p.appendBuffer(W)}catch(S){console.log((_=this.element)==null?void 0:_.error),console.error(S)}else{let S=e.data instanceof ArrayBuffer?new Uint8Array(e.data):e.data,v,A,w=!1,L=(ie=>{let Me=[];for(let pe=0;pe<ie.length-3;pe++)ie[pe]===0&&ie[pe+1]===0&&ie[pe+2]===0&&ie[pe+3]===1?Me.push(pe+4):ie[pe]===0&&ie[pe+1]===0&&ie[pe+2]===1&&Me.push(pe+3);return Me})(S),W=[];for(let ie=0;ie<L.length;ie++){let Me=L[ie],pe=ie<L.length-1?L[ie+1]:S.length;W.push(S.subarray(Me,pe))}if(W.forEach((ie,Me)=>{let pe=ie[0]&31;pe===7?v=ie:pe===8?A=ie:pe===5&&(w=!0)}),v&&A&&!this.sourceBuffer){let ie=Tu.parseSPS(v),Me={id:1,type:"video",timescale:1e3,duration:0,avcc:Ug({sps:v,pps:A}),codecWidth:ie.codec_size.width,codecHeight:ie.codec_size.height,presentWidth:ie.present_size.width,presentHeight:ie.present_size.height,videoType:"avc"};this.sourceBuffer=this.mse.addSourceBuffer(`video/mp4; codecs="${ie.codec_mimetype}"`),this.sourceBuffer.appendBuffer(Us.generateInitSegment(Me)),this.sourceBuffer.addEventListener("updateend",()=>{this.sourceBufferCache.length&&this.sourceBuffer.appendBuffer(this.sourceBufferCache.shift())})}else{let ie=W.reduce((Lt,Ct)=>Lt+Ct.length+4,0),Me=8+ie,pe=new Uint8Array(Me),et=new DataView(pe.buffer,0);et.setUint32(0,Me,!1),pe.set(Us.types.mdat,4);let Ie=8;W.forEach(Lt=>{et.setUint32(Ie,Lt.length,!1),pe.set(Lt,Ie+4),Ie+=Lt.length+4});let _r={id:1,sequenceNumber:++this.sequenceNumber,size:ie,dts:e.timestamp,cts:e.timestamp,isKeyframe:w,data:S,flags:{isLeading:0,dependsOn:2,isDependedOn:1,hasRedundancy:0,isNonSync:0},duration:40},Ae=Us.moof(_r,e.timestamp),or=new Uint8Array(Ae.byteLength+pe.byteLength);or.set(Ae,0),or.set(pe,Ae.byteLength),(o=this.sourceBuffer)!=null&&o.updating?this.sourceBufferCache.push(or):(a=this.sourceBuffer)==null||a.appendBuffer(or)}}}flush(){throw new Error("Method not implemented.")}reset(){throw new Error("Method not implemented.")}close(){this.src&&URL.revokeObjectURL(this.src)}initialize(e){return this.mse=new MediaSource,this.src=URL.createObjectURL(this.mse),this.element=e,e.src=this.src,new Promise(t=>{this.mse.addEventListener("sourceopen",t)})}configure(e){if(this.config=e,e.description){let t=e.description,i=6,o=t[i]<<8|t[i+1],a=t.subarray(i+2,i+2+o),d=Tu.parseSPS(a),p={id:1,type:"video",timescale:1e3,duration:0,avcc:t,codecWidth:d.codec_size.width,codecHeight:d.codec_size.height,presentWidth:d.present_size.width,presentHeight:d.present_size.height,videoType:"avc"};console.log(p),this.sourceBuffer=this.mse.addSourceBuffer(`video/mp4; codecs="${d.codec_mimetype}"`),this.sourceBuffer.appendBuffer(Us.generateInitSegment(p)),this.sourceBuffer.addEventListener("updateend",()=>{this.sourceBufferCache.length&&this.sourceBuffer.appendBuffer(this.sourceBufferCache.shift())})}}};j([mt([],Re.INIT,{sync:!0})],Vs.prototype,"reset",1),j([mt([],"closed",{ignoreError:!0,sync:!0})],Vs.prototype,"close",1),j([mt([Re.INIT,"closed"],"initialized")],Vs.prototype,"initialize",1),j([mt("initialized","configured",{sync:!0})],Vs.prototype,"configure",1);var CI=(()=>{var n=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(r={}){var e=r,t,i;e.ready=new Promise((s,c)=>{t=s,i=c});var o=Object.assign({},e),a=[],d="./this.program",p=(s,c)=>{throw c},_=typeof window=="object",S=typeof importScripts=="function",v=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A="";function w(s){return e.locateFile?e.locateFile(s,A):A+s}var M,L,W,ie;(_||S)&&(S?A=self.location.href:typeof document!="undefined"&&document.currentScript&&(A=document.currentScript.src),n&&(A=n),A.indexOf("blob:")!==0?A=A.substr(0,A.replace(/[?#].*/,"").lastIndexOf("/")+1):A="",M=s=>{var c=new XMLHttpRequest;return c.open("GET",s,!1),c.send(null),c.responseText},S&&(W=s=>{var c=new XMLHttpRequest;return c.open("GET",s,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),L=(s,c,l)=>{var f=new XMLHttpRequest;f.open("GET",s,!0),f.responseType="arraybuffer",f.onload=()=>{if(f.status==200||f.status==0&&f.response){c(f.response);return}l()},f.onerror=l,f.send(null)},ie=s=>document.title=s);var Me=e.print||console.log.bind(console),pe=e.printErr||console.error.bind(console);Object.assign(e,o),o=null,e.arguments&&(a=e.arguments),e.thisProgram&&(d=e.thisProgram),e.quit&&(p=e.quit);var et;e.wasmBinary&&(et=e.wasmBinary);var Ie=e.noExitRuntime||!0;typeof WebAssembly!="object"&&Jt("no native wasm support detected");var _r,Ae,or=!1,Lt;function Ct(s,c){s||Jt(c)}var Ce,Ue,at,Tt,x,ce,Yr,fi;function $i(){var s=_r.buffer;e.HEAP8=Ce=new Int8Array(s),e.HEAP16=at=new Int16Array(s),e.HEAP32=x=new Int32Array(s),e.HEAPU8=Ue=new Uint8Array(s),e.HEAPU16=Tt=new Uint16Array(s),e.HEAPU32=ce=new Uint32Array(s),e.HEAPF32=Yr=new Float32Array(s),e.HEAPF64=fi=new Float64Array(s)}var Kr,Bi=[],ct=[],ut=[],Bo=!1;function hc(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)fc(e.preRun.shift());Sn(Bi)}function mc(){Bo=!0,!e.noFSInit&&!m.init.initialized&&m.init(),m.ignorePermissions=!1,Ut.init(),Sn(ct)}function pc(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)_i(e.postRun.shift());Sn(ut)}function fc(s){Bi.unshift(s)}function _c(s){ct.unshift(s)}function _i(s){ut.unshift(s)}var de=0,Mr=null,Lr=null;function bh(s){return s}function Zr(s){de++,e.monitorRunDependencies&&e.monitorRunDependencies(de)}function gi(s){if(de--,e.monitorRunDependencies&&e.monitorRunDependencies(de),de==0&&(Mr!==null&&(clearInterval(Mr),Mr=null),Lr)){var c=Lr;Lr=null,c()}}function Jt(s){e.onAbort&&e.onAbort(s),s="Aborted("+s+")",pe(s),or=!0,Lt=1,s+=". Build with -sASSERTIONS for more info.";var c=new WebAssembly.RuntimeError(s);throw i(c),c}var Hi="data:application/octet-stream;base64,";function so(s){return s.startsWith(Hi)}var gr;gr="audiodec.wasm",so(gr)||(gr=w(gr));function ao(s){if(s==gr&&et)return new Uint8Array(et);if(W)return W(s);throw"both async and sync fetching of the wasm failed"}function gc(s){return!et&&(_||S)&&typeof fetch=="function"?fetch(s,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+s+"'";return c.arrayBuffer()}).catch(()=>ao(s)):Promise.resolve().then(()=>ao(s))}function Ho(s,c,l){return gc(s).then(f=>WebAssembly.instantiate(f,c)).then(f=>f).then(l,f=>{pe("failed to asynchronously prepare wasm: "+f),Jt(f)})}function Wo(s,c,l,f){return!s&&typeof WebAssembly.instantiateStreaming=="function"&&!so(c)&&typeof fetch=="function"?fetch(c,{credentials:"same-origin"}).then(g=>{var T=WebAssembly.instantiateStreaming(g,l);return T.then(f,function(R){return pe("wasm streaming compile failed: "+R),pe("falling back to ArrayBuffer instantiation"),Ho(c,l,f)})}):Ho(c,l,f)}function G(){var s={a:Dh};function c(f,g){var T=f.exports;return Ae=T,_r=Ae.E,$i(),Kr=Ae.H,_c(Ae.F),gi("wasm-instantiate"),T}Zr("wasm-instantiate");function l(f){c(f.instance)}if(e.instantiateWasm)try{return e.instantiateWasm(s,c)}catch(f){pe("Module.instantiateWasm callback failed with error: "+f),i(f)}return Wo(et,gr,s,l).catch(i),{}}var ee,ve,Sn=s=>{for(;s.length>0;)s.shift()(e)};function Ec(s){this.excPtr=s,this.ptr=s-24,this.set_type=function(c){ce[this.ptr+4>>2]=c},this.get_type=function(){return ce[this.ptr+4>>2]},this.set_destructor=function(c){ce[this.ptr+8>>2]=c},this.get_destructor=function(){return ce[this.ptr+8>>2]},this.set_caught=function(c){c=c?1:0,Ce[this.ptr+12>>0]=c},this.get_caught=function(){return Ce[this.ptr+12>>0]!=0},this.set_rethrown=function(c){c=c?1:0,Ce[this.ptr+13>>0]=c},this.get_rethrown=function(){return Ce[this.ptr+13>>0]!=0},this.init=function(c,l){this.set_adjusted_ptr(0),this.set_type(c),this.set_destructor(l)},this.set_adjusted_ptr=function(c){ce[this.ptr+16>>2]=c},this.get_adjusted_ptr=function(){return ce[this.ptr+16>>2]},this.get_exception_ptr=function(){var c=ad(this.get_type());if(c)return ce[this.excPtr>>2];var l=this.get_adjusted_ptr();return l!==0?l:this.excPtr}}var In=0,Tc=0;function js(s,c,l){var f=new Ec(s);throw f.init(c,l),In=s,Tc++,In}var er=s=>(x[od()>>2]=s,s),he={isAbs:s=>s.charAt(0)==="/",splitPath:s=>{var c=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return c.exec(s).slice(1)},normalizeArray:(s,c)=>{for(var l=0,f=s.length-1;f>=0;f--){var g=s[f];g==="."?s.splice(f,1):g===".."?(s.splice(f,1),l++):l&&(s.splice(f,1),l--)}if(c)for(;l;l--)s.unshift("..");return s},normalize:s=>{var c=he.isAbs(s),l=s.substr(-1)==="/";return s=he.normalizeArray(s.split("/").filter(f=>!!f),!c).join("/"),!s&&!c&&(s="."),s&&l&&(s+="/"),(c?"/":"")+s},dirname:s=>{var c=he.splitPath(s),l=c[0],f=c[1];return!l&&!f?".":(f&&(f=f.substr(0,f.length-1)),l+f)},basename:s=>{if(s==="/")return"/";s=he.normalize(s),s=s.replace(/\/$/,"");var c=s.lastIndexOf("/");return c===-1?s:s.substr(c+1)},join:function(){var s=Array.prototype.slice.call(arguments);return he.normalize(s.join("/"))},join2:(s,c)=>he.normalize(s+"/"+c)},Ei=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return s=>crypto.getRandomValues(s);Jt("initRandomDevice")},Wi=s=>(Wi=Ei())(s),dt={resolve:function(){for(var s="",c=!1,l=arguments.length-1;l>=-1&&!c;l--){var f=l>=0?arguments[l]:m.cwd();if(typeof f!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!f)return"";s=f+"/"+s,c=he.isAbs(f)}return s=he.normalizeArray(s.split("/").filter(g=>!!g),!c).join("/"),(c?"/":"")+s||"."},relative:(s,c)=>{s=dt.resolve(s).substr(1),c=dt.resolve(c).substr(1);function l(O){for(var $=0;$<O.length&&O[$]==="";$++);for(var F=O.length-1;F>=0&&O[F]==="";F--);return $>F?[]:O.slice($,F-$+1)}for(var f=l(s.split("/")),g=l(c.split("/")),T=Math.min(f.length,g.length),R=T,C=0;C<T;C++)if(f[C]!==g[C]){R=C;break}for(var k=[],C=R;C<f.length;C++)k.push("..");return k=k.concat(g.slice(R)),k.join("/")}},Ge=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,sr=(s,c,l)=>{for(var f=c+l,g=c;s[g]&&!(g>=f);)++g;if(g-c>16&&s.buffer&&Ge)return Ge.decode(s.subarray(c,g));for(var T="";c<g;){var R=s[c++];if(!(R&128)){T+=String.fromCharCode(R);continue}var C=s[c++]&63;if((R&224)==192){T+=String.fromCharCode((R&31)<<6|C);continue}var k=s[c++]&63;if((R&240)==224?R=(R&15)<<12|C<<6|k:R=(R&7)<<18|C<<12|k<<6|s[c++]&63,R<65536)T+=String.fromCharCode(R);else{var O=R-65536;T+=String.fromCharCode(55296|O>>10,56320|O&1023)}}return T},ei=[],Ur=s=>{for(var c=0,l=0;l<s.length;++l){var f=s.charCodeAt(l);f<=127?c++:f<=2047?c+=2:f>=55296&&f<=57343?(c+=4,++l):c+=3}return c},yn=(s,c,l,f)=>{if(!(f>0))return 0;for(var g=l,T=l+f-1,R=0;R<s.length;++R){var C=s.charCodeAt(R);if(C>=55296&&C<=57343){var k=s.charCodeAt(++R);C=65536+((C&1023)<<10)|k&1023}if(C<=127){if(l>=T)break;c[l++]=C}else if(C<=2047){if(l+1>=T)break;c[l++]=192|C>>6,c[l++]=128|C&63}else if(C<=65535){if(l+2>=T)break;c[l++]=224|C>>12,c[l++]=128|C>>6&63,c[l++]=128|C&63}else{if(l+3>=T)break;c[l++]=240|C>>18,c[l++]=128|C>>12&63,c[l++]=128|C>>6&63,c[l++]=128|C&63}}return c[l]=0,l-g};function tr(s,c,l){var f=l>0?l:Ur(s)+1,g=new Array(f),T=yn(s,g,0,g.length);return c&&(g.length=T),g}var Sc=()=>{if(!ei.length){var s=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(s=window.prompt("Input: "),s!==null&&(s+=`
97
+ `)):typeof readline=="function"&&(s=readline(),s!==null&&(s+=`
98
+ `)),!s)return null;ei=tr(s,!0)}return ei.shift()},Ut={ttys:[],init:function(){},shutdown:function(){},register:function(s,c){Ut.ttys[s]={input:[],output:[],ops:c},m.registerDevice(s,Ut.stream_ops)},stream_ops:{open:function(s){var c=Ut.ttys[s.node.rdev];if(!c)throw new m.ErrnoError(43);s.tty=c,s.seekable=!1},close:function(s){s.tty.ops.fsync(s.tty)},fsync:function(s){s.tty.ops.fsync(s.tty)},read:function(s,c,l,f,g){if(!s.tty||!s.tty.ops.get_char)throw new m.ErrnoError(60);for(var T=0,R=0;R<f;R++){var C;try{C=s.tty.ops.get_char(s.tty)}catch(k){throw new m.ErrnoError(29)}if(C===void 0&&T===0)throw new m.ErrnoError(6);if(C==null)break;T++,c[l+R]=C}return T&&(s.node.timestamp=Date.now()),T},write:function(s,c,l,f,g){if(!s.tty||!s.tty.ops.put_char)throw new m.ErrnoError(60);try{for(var T=0;T<f;T++)s.tty.ops.put_char(s.tty,c[l+T])}catch(R){throw new m.ErrnoError(29)}return f&&(s.node.timestamp=Date.now()),T}},default_tty_ops:{get_char:function(s){return Sc()},put_char:function(s,c){c===null||c===10?(Me(sr(s.output,0)),s.output=[]):c!=0&&s.output.push(c)},fsync:function(s){s.output&&s.output.length>0&&(Me(sr(s.output,0)),s.output=[])},ioctl_tcgets:function(s){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(s,c,l){return 0},ioctl_tiocgwinsz:function(s){return[24,80]}},default_tty1_ops:{put_char:function(s,c){c===null||c===10?(pe(sr(s.output,0)),s.output=[]):c!=0&&s.output.push(c)},fsync:function(s){s.output&&s.output.length>0&&(pe(sr(s.output,0)),s.output=[])}}},Go=s=>{Jt()},se={ops_table:null,mount(s){return se.createNode(null,"/",16895,0)},createNode(s,c,l,f){if(m.isBlkdev(l)||m.isFIFO(l))throw new m.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:m.chrdev_stream_ops}});var g=m.createNode(s,c,l,f);return m.isDir(g.mode)?(g.node_ops=se.ops_table.dir.node,g.stream_ops=se.ops_table.dir.stream,g.contents={}):m.isFile(g.mode)?(g.node_ops=se.ops_table.file.node,g.stream_ops=se.ops_table.file.stream,g.usedBytes=0,g.contents=null):m.isLink(g.mode)?(g.node_ops=se.ops_table.link.node,g.stream_ops=se.ops_table.link.stream):m.isChrdev(g.mode)&&(g.node_ops=se.ops_table.chrdev.node,g.stream_ops=se.ops_table.chrdev.stream),g.timestamp=Date.now(),s&&(s.contents[c]=g,s.timestamp=g.timestamp),g},getFileDataAsTypedArray(s){return s.contents?s.contents.subarray?s.contents.subarray(0,s.usedBytes):new Uint8Array(s.contents):new Uint8Array(0)},expandFileStorage(s,c){var l=s.contents?s.contents.length:0;if(!(l>=c)){var f=1024*1024;c=Math.max(c,l*(l<f?2:1.125)>>>0),l!=0&&(c=Math.max(c,256));var g=s.contents;s.contents=new Uint8Array(c),s.usedBytes>0&&s.contents.set(g.subarray(0,s.usedBytes),0)}},resizeFileStorage(s,c){if(s.usedBytes!=c)if(c==0)s.contents=null,s.usedBytes=0;else{var l=s.contents;s.contents=new Uint8Array(c),l&&s.contents.set(l.subarray(0,Math.min(c,s.usedBytes))),s.usedBytes=c}},node_ops:{getattr(s){var c={};return c.dev=m.isChrdev(s.mode)?s.id:1,c.ino=s.id,c.mode=s.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=s.rdev,m.isDir(s.mode)?c.size=4096:m.isFile(s.mode)?c.size=s.usedBytes:m.isLink(s.mode)?c.size=s.link.length:c.size=0,c.atime=new Date(s.timestamp),c.mtime=new Date(s.timestamp),c.ctime=new Date(s.timestamp),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},setattr(s,c){c.mode!==void 0&&(s.mode=c.mode),c.timestamp!==void 0&&(s.timestamp=c.timestamp),c.size!==void 0&&se.resizeFileStorage(s,c.size)},lookup(s,c){throw m.genericErrors[44]},mknod(s,c,l,f){return se.createNode(s,c,l,f)},rename(s,c,l){if(m.isDir(s.mode)){var f;try{f=m.lookupNode(c,l)}catch(T){}if(f)for(var g in f.contents)throw new m.ErrnoError(55)}delete s.parent.contents[s.name],s.parent.timestamp=Date.now(),s.name=l,c.contents[l]=s,c.timestamp=s.parent.timestamp,s.parent=c},unlink(s,c){delete s.contents[c],s.timestamp=Date.now()},rmdir(s,c){var l=m.lookupNode(s,c);for(var f in l.contents)throw new m.ErrnoError(55);delete s.contents[c],s.timestamp=Date.now()},readdir(s){var c=[".",".."];for(var l in s.contents)!s.contents.hasOwnProperty(l)||c.push(l);return c},symlink(s,c,l){var f=se.createNode(s,c,41471,0);return f.link=l,f},readlink(s){if(!m.isLink(s.mode))throw new m.ErrnoError(28);return s.link}},stream_ops:{read(s,c,l,f,g){var T=s.node.contents;if(g>=s.node.usedBytes)return 0;var R=Math.min(s.node.usedBytes-g,f);if(R>8&&T.subarray)c.set(T.subarray(g,g+R),l);else for(var C=0;C<R;C++)c[l+C]=T[g+C];return R},write(s,c,l,f,g,T){if(!f)return 0;var R=s.node;if(R.timestamp=Date.now(),c.subarray&&(!R.contents||R.contents.subarray)){if(T)return R.contents=c.subarray(l,l+f),R.usedBytes=f,f;if(R.usedBytes===0&&g===0)return R.contents=c.slice(l,l+f),R.usedBytes=f,f;if(g+f<=R.usedBytes)return R.contents.set(c.subarray(l,l+f),g),f}if(se.expandFileStorage(R,g+f),R.contents.subarray&&c.subarray)R.contents.set(c.subarray(l,l+f),g);else for(var C=0;C<f;C++)R.contents[g+C]=c[l+C];return R.usedBytes=Math.max(R.usedBytes,g+f),f},llseek(s,c,l){var f=c;if(l===1?f+=s.position:l===2&&m.isFile(s.node.mode)&&(f+=s.node.usedBytes),f<0)throw new m.ErrnoError(28);return f},allocate(s,c,l){se.expandFileStorage(s.node,c+l),s.node.usedBytes=Math.max(s.node.usedBytes,c+l)},mmap(s,c,l,f,g){if(!m.isFile(s.node.mode))throw new m.ErrnoError(43);var T,R,C=s.node.contents;if(!(g&2)&&C.buffer===Ce.buffer)R=!1,T=C.byteOffset;else{if((l>0||l+c<C.length)&&(C.subarray?C=C.subarray(l,l+c):C=Array.prototype.slice.call(C,l,l+c)),R=!0,T=Go(c),!T)throw new m.ErrnoError(48);Ce.set(C,T)}return{ptr:T,allocated:R}},msync(s,c,l,f,g){return se.stream_ops.write(s,c,0,f,l,!1),0}}},jo=(s,c,l,f)=>{var g=f?"":`al ${s}`;L(s,T=>{Ct(T,`Loading data file "${s}" failed (no arrayBuffer).`),c(new Uint8Array(T)),g&&gi(g)},T=>{if(l)l();else throw`Loading data file "${s}" failed.`}),g&&Zr(g)},zs=e.preloadPlugins||[];function Ic(s,c,l,f){typeof Browser!="undefined"&&Browser.init();var g=!1;return zs.forEach(function(T){g||T.canHandle(c)&&(T.handle(s,c,l,f),g=!0)}),g}function Js(s,c,l,f,g,T,R,C,k,O){var $=c?dt.resolve(he.join2(s,c)):s,F=`cp ${$}`;function q(K){function ae(be){O&&O(),C||m.createDataFile(s,c,be,f,g,k),T&&T(),gi(F)}Ic(K,$,ae,()=>{R&&R(),gi(F)})||ae(K)}Zr(F),typeof l=="string"?jo(l,K=>q(K),R):q(l)}function qs(s){var c={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},l=c[s];if(typeof l=="undefined")throw new Error(`Unknown file open mode: ${s}`);return l}function Gi(s,c){var l=0;return s&&(l|=365),c&&(l|=146),l}var m={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(s,c={})=>{if(s=dt.resolve(s),!s)return{path:"",node:null};var l={follow_mount:!0,recurse_count:0};if(c=Object.assign(l,c),c.recurse_count>8)throw new m.ErrnoError(32);for(var f=s.split("/").filter(F=>!!F),g=m.root,T="/",R=0;R<f.length;R++){var C=R===f.length-1;if(C&&c.parent)break;if(g=m.lookupNode(g,f[R]),T=he.join2(T,f[R]),m.isMountpoint(g)&&(!C||C&&c.follow_mount)&&(g=g.mounted.root),!C||c.follow)for(var k=0;m.isLink(g.mode);){var O=m.readlink(T);T=dt.resolve(he.dirname(T),O);var $=m.lookupPath(T,{recurse_count:c.recurse_count+1});if(g=$.node,k++>40)throw new m.ErrnoError(32)}}return{path:T,node:g}},getPath:s=>{for(var c;;){if(m.isRoot(s)){var l=s.mount.mountpoint;return c?l[l.length-1]!=="/"?`${l}/${c}`:l+c:l}c=c?`${s.name}/${c}`:s.name,s=s.parent}},hashName:(s,c)=>{for(var l=0,f=0;f<c.length;f++)l=(l<<5)-l+c.charCodeAt(f)|0;return(s+l>>>0)%m.nameTable.length},hashAddNode:s=>{var c=m.hashName(s.parent.id,s.name);s.name_next=m.nameTable[c],m.nameTable[c]=s},hashRemoveNode:s=>{var c=m.hashName(s.parent.id,s.name);if(m.nameTable[c]===s)m.nameTable[c]=s.name_next;else for(var l=m.nameTable[c];l;){if(l.name_next===s){l.name_next=s.name_next;break}l=l.name_next}},lookupNode:(s,c)=>{var l=m.mayLookup(s);if(l)throw new m.ErrnoError(l,s);for(var f=m.hashName(s.id,c),g=m.nameTable[f];g;g=g.name_next){var T=g.name;if(g.parent.id===s.id&&T===c)return g}return m.lookup(s,c)},createNode:(s,c,l,f)=>{var g=new m.FSNode(s,c,l,f);return m.hashAddNode(g),g},destroyNode:s=>{m.hashRemoveNode(s)},isRoot:s=>s===s.parent,isMountpoint:s=>!!s.mounted,isFile:s=>(s&61440)===32768,isDir:s=>(s&61440)===16384,isLink:s=>(s&61440)===40960,isChrdev:s=>(s&61440)===8192,isBlkdev:s=>(s&61440)===24576,isFIFO:s=>(s&61440)===4096,isSocket:s=>(s&49152)===49152,flagsToPermissionString:s=>{var c=["r","w","rw"][s&3];return s&512&&(c+="w"),c},nodePermissions:(s,c)=>m.ignorePermissions?0:c.includes("r")&&!(s.mode&292)||c.includes("w")&&!(s.mode&146)||c.includes("x")&&!(s.mode&73)?2:0,mayLookup:s=>{var c=m.nodePermissions(s,"x");return c||(s.node_ops.lookup?0:2)},mayCreate:(s,c)=>{try{var l=m.lookupNode(s,c);return 20}catch(f){}return m.nodePermissions(s,"wx")},mayDelete:(s,c,l)=>{var f;try{f=m.lookupNode(s,c)}catch(T){return T.errno}var g=m.nodePermissions(s,"wx");if(g)return g;if(l){if(!m.isDir(f.mode))return 54;if(m.isRoot(f)||m.getPath(f)===m.cwd())return 10}else if(m.isDir(f.mode))return 31;return 0},mayOpen:(s,c)=>s?m.isLink(s.mode)?32:m.isDir(s.mode)&&(m.flagsToPermissionString(c)!=="r"||c&512)?31:m.nodePermissions(s,m.flagsToPermissionString(c)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var s=0;s<=m.MAX_OPEN_FDS;s++)if(!m.streams[s])return s;throw new m.ErrnoError(33)},getStreamChecked:s=>{var c=m.getStream(s);if(!c)throw new m.ErrnoError(8);return c},getStream:s=>m.streams[s],createStream:(s,c=-1)=>(m.FSStream||(m.FSStream=function(){this.shared={}},m.FSStream.prototype={},Object.defineProperties(m.FSStream.prototype,{object:{get(){return this.node},set(l){this.node=l}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(l){this.shared.flags=l}},position:{get(){return this.shared.position},set(l){this.shared.position=l}}})),s=Object.assign(new m.FSStream,s),c==-1&&(c=m.nextfd()),s.fd=c,m.streams[c]=s,s),closeStream:s=>{m.streams[s]=null},chrdev_stream_ops:{open:s=>{var c=m.getDevice(s.node.rdev);s.stream_ops=c.stream_ops,s.stream_ops.open&&s.stream_ops.open(s)},llseek:()=>{throw new m.ErrnoError(70)}},major:s=>s>>8,minor:s=>s&255,makedev:(s,c)=>s<<8|c,registerDevice:(s,c)=>{m.devices[s]={stream_ops:c}},getDevice:s=>m.devices[s],getMounts:s=>{for(var c=[],l=[s];l.length;){var f=l.pop();c.push(f),l.push.apply(l,f.mounts)}return c},syncfs:(s,c)=>{typeof s=="function"&&(c=s,s=!1),m.syncFSRequests++,m.syncFSRequests>1&&pe(`warning: ${m.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var l=m.getMounts(m.root.mount),f=0;function g(R){return m.syncFSRequests--,c(R)}function T(R){if(R)return T.errored?void 0:(T.errored=!0,g(R));++f>=l.length&&g(null)}l.forEach(R=>{if(!R.type.syncfs)return T(null);R.type.syncfs(R,s,T)})},mount:(s,c,l)=>{var f=l==="/",g=!l,T;if(f&&m.root)throw new m.ErrnoError(10);if(!f&&!g){var R=m.lookupPath(l,{follow_mount:!1});if(l=R.path,T=R.node,m.isMountpoint(T))throw new m.ErrnoError(10);if(!m.isDir(T.mode))throw new m.ErrnoError(54)}var C={type:s,opts:c,mountpoint:l,mounts:[]},k=s.mount(C);return k.mount=C,C.root=k,f?m.root=k:T&&(T.mounted=C,T.mount&&T.mount.mounts.push(C)),k},unmount:s=>{var c=m.lookupPath(s,{follow_mount:!1});if(!m.isMountpoint(c.node))throw new m.ErrnoError(28);var l=c.node,f=l.mounted,g=m.getMounts(f);Object.keys(m.nameTable).forEach(R=>{for(var C=m.nameTable[R];C;){var k=C.name_next;g.includes(C.mount)&&m.destroyNode(C),C=k}}),l.mounted=null;var T=l.mount.mounts.indexOf(f);l.mount.mounts.splice(T,1)},lookup:(s,c)=>s.node_ops.lookup(s,c),mknod:(s,c,l)=>{var f=m.lookupPath(s,{parent:!0}),g=f.node,T=he.basename(s);if(!T||T==="."||T==="..")throw new m.ErrnoError(28);var R=m.mayCreate(g,T);if(R)throw new m.ErrnoError(R);if(!g.node_ops.mknod)throw new m.ErrnoError(63);return g.node_ops.mknod(g,T,c,l)},create:(s,c)=>(c=c!==void 0?c:438,c&=4095,c|=32768,m.mknod(s,c,0)),mkdir:(s,c)=>(c=c!==void 0?c:511,c&=1023,c|=16384,m.mknod(s,c,0)),mkdirTree:(s,c)=>{for(var l=s.split("/"),f="",g=0;g<l.length;++g)if(!!l[g]){f+="/"+l[g];try{m.mkdir(f,c)}catch(T){if(T.errno!=20)throw T}}},mkdev:(s,c,l)=>(typeof l=="undefined"&&(l=c,c=438),c|=8192,m.mknod(s,c,l)),symlink:(s,c)=>{if(!dt.resolve(s))throw new m.ErrnoError(44);var l=m.lookupPath(c,{parent:!0}),f=l.node;if(!f)throw new m.ErrnoError(44);var g=he.basename(c),T=m.mayCreate(f,g);if(T)throw new m.ErrnoError(T);if(!f.node_ops.symlink)throw new m.ErrnoError(63);return f.node_ops.symlink(f,g,s)},rename:(s,c)=>{var l=he.dirname(s),f=he.dirname(c),g=he.basename(s),T=he.basename(c),R,C,k;if(R=m.lookupPath(s,{parent:!0}),C=R.node,R=m.lookupPath(c,{parent:!0}),k=R.node,!C||!k)throw new m.ErrnoError(44);if(C.mount!==k.mount)throw new m.ErrnoError(75);var O=m.lookupNode(C,g),$=dt.relative(s,f);if($.charAt(0)!==".")throw new m.ErrnoError(28);if($=dt.relative(c,l),$.charAt(0)!==".")throw new m.ErrnoError(55);var F;try{F=m.lookupNode(k,T)}catch(ae){}if(O!==F){var q=m.isDir(O.mode),K=m.mayDelete(C,g,q);if(K)throw new m.ErrnoError(K);if(K=F?m.mayDelete(k,T,q):m.mayCreate(k,T),K)throw new m.ErrnoError(K);if(!C.node_ops.rename)throw new m.ErrnoError(63);if(m.isMountpoint(O)||F&&m.isMountpoint(F))throw new m.ErrnoError(10);if(k!==C&&(K=m.nodePermissions(C,"w"),K))throw new m.ErrnoError(K);m.hashRemoveNode(O);try{C.node_ops.rename(O,k,T)}catch(ae){throw ae}finally{m.hashAddNode(O)}}},rmdir:s=>{var c=m.lookupPath(s,{parent:!0}),l=c.node,f=he.basename(s),g=m.lookupNode(l,f),T=m.mayDelete(l,f,!0);if(T)throw new m.ErrnoError(T);if(!l.node_ops.rmdir)throw new m.ErrnoError(63);if(m.isMountpoint(g))throw new m.ErrnoError(10);l.node_ops.rmdir(l,f),m.destroyNode(g)},readdir:s=>{var c=m.lookupPath(s,{follow:!0}),l=c.node;if(!l.node_ops.readdir)throw new m.ErrnoError(54);return l.node_ops.readdir(l)},unlink:s=>{var c=m.lookupPath(s,{parent:!0}),l=c.node;if(!l)throw new m.ErrnoError(44);var f=he.basename(s),g=m.lookupNode(l,f),T=m.mayDelete(l,f,!1);if(T)throw new m.ErrnoError(T);if(!l.node_ops.unlink)throw new m.ErrnoError(63);if(m.isMountpoint(g))throw new m.ErrnoError(10);l.node_ops.unlink(l,f),m.destroyNode(g)},readlink:s=>{var c=m.lookupPath(s),l=c.node;if(!l)throw new m.ErrnoError(44);if(!l.node_ops.readlink)throw new m.ErrnoError(28);return dt.resolve(m.getPath(l.parent),l.node_ops.readlink(l))},stat:(s,c)=>{var l=m.lookupPath(s,{follow:!c}),f=l.node;if(!f)throw new m.ErrnoError(44);if(!f.node_ops.getattr)throw new m.ErrnoError(63);return f.node_ops.getattr(f)},lstat:s=>m.stat(s,!0),chmod:(s,c,l)=>{var f;if(typeof s=="string"){var g=m.lookupPath(s,{follow:!l});f=g.node}else f=s;if(!f.node_ops.setattr)throw new m.ErrnoError(63);f.node_ops.setattr(f,{mode:c&4095|f.mode&-4096,timestamp:Date.now()})},lchmod:(s,c)=>{m.chmod(s,c,!0)},fchmod:(s,c)=>{var l=m.getStreamChecked(s);m.chmod(l.node,c)},chown:(s,c,l,f)=>{var g;if(typeof s=="string"){var T=m.lookupPath(s,{follow:!f});g=T.node}else g=s;if(!g.node_ops.setattr)throw new m.ErrnoError(63);g.node_ops.setattr(g,{timestamp:Date.now()})},lchown:(s,c,l)=>{m.chown(s,c,l,!0)},fchown:(s,c,l)=>{var f=m.getStreamChecked(s);m.chown(f.node,c,l)},truncate:(s,c)=>{if(c<0)throw new m.ErrnoError(28);var l;if(typeof s=="string"){var f=m.lookupPath(s,{follow:!0});l=f.node}else l=s;if(!l.node_ops.setattr)throw new m.ErrnoError(63);if(m.isDir(l.mode))throw new m.ErrnoError(31);if(!m.isFile(l.mode))throw new m.ErrnoError(28);var g=m.nodePermissions(l,"w");if(g)throw new m.ErrnoError(g);l.node_ops.setattr(l,{size:c,timestamp:Date.now()})},ftruncate:(s,c)=>{var l=m.getStreamChecked(s);if((l.flags&2097155)===0)throw new m.ErrnoError(28);m.truncate(l.node,c)},utime:(s,c,l)=>{var f=m.lookupPath(s,{follow:!0}),g=f.node;g.node_ops.setattr(g,{timestamp:Math.max(c,l)})},open:(s,c,l)=>{if(s==="")throw new m.ErrnoError(44);c=typeof c=="string"?qs(c):c,l=typeof l=="undefined"?438:l,c&64?l=l&4095|32768:l=0;var f;if(typeof s=="object")f=s;else{s=he.normalize(s);try{var g=m.lookupPath(s,{follow:!(c&131072)});f=g.node}catch(k){}}var T=!1;if(c&64)if(f){if(c&128)throw new m.ErrnoError(20)}else f=m.mknod(s,l,0),T=!0;if(!f)throw new m.ErrnoError(44);if(m.isChrdev(f.mode)&&(c&=-513),c&65536&&!m.isDir(f.mode))throw new m.ErrnoError(54);if(!T){var R=m.mayOpen(f,c);if(R)throw new m.ErrnoError(R)}c&512&&!T&&m.truncate(f,0),c&=-131713;var C=m.createStream({node:f,path:m.getPath(f),flags:c,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return C.stream_ops.open&&C.stream_ops.open(C),e.logReadFiles&&!(c&1)&&(m.readFiles||(m.readFiles={}),s in m.readFiles||(m.readFiles[s]=1)),C},close:s=>{if(m.isClosed(s))throw new m.ErrnoError(8);s.getdents&&(s.getdents=null);try{s.stream_ops.close&&s.stream_ops.close(s)}catch(c){throw c}finally{m.closeStream(s.fd)}s.fd=null},isClosed:s=>s.fd===null,llseek:(s,c,l)=>{if(m.isClosed(s))throw new m.ErrnoError(8);if(!s.seekable||!s.stream_ops.llseek)throw new m.ErrnoError(70);if(l!=0&&l!=1&&l!=2)throw new m.ErrnoError(28);return s.position=s.stream_ops.llseek(s,c,l),s.ungotten=[],s.position},read:(s,c,l,f,g)=>{if(f<0||g<0)throw new m.ErrnoError(28);if(m.isClosed(s))throw new m.ErrnoError(8);if((s.flags&2097155)===1)throw new m.ErrnoError(8);if(m.isDir(s.node.mode))throw new m.ErrnoError(31);if(!s.stream_ops.read)throw new m.ErrnoError(28);var T=typeof g!="undefined";if(!T)g=s.position;else if(!s.seekable)throw new m.ErrnoError(70);var R=s.stream_ops.read(s,c,l,f,g);return T||(s.position+=R),R},write:(s,c,l,f,g,T)=>{if(f<0||g<0)throw new m.ErrnoError(28);if(m.isClosed(s))throw new m.ErrnoError(8);if((s.flags&2097155)===0)throw new m.ErrnoError(8);if(m.isDir(s.node.mode))throw new m.ErrnoError(31);if(!s.stream_ops.write)throw new m.ErrnoError(28);s.seekable&&s.flags&1024&&m.llseek(s,0,2);var R=typeof g!="undefined";if(!R)g=s.position;else if(!s.seekable)throw new m.ErrnoError(70);var C=s.stream_ops.write(s,c,l,f,g,T);return R||(s.position+=C),C},allocate:(s,c,l)=>{if(m.isClosed(s))throw new m.ErrnoError(8);if(c<0||l<=0)throw new m.ErrnoError(28);if((s.flags&2097155)===0)throw new m.ErrnoError(8);if(!m.isFile(s.node.mode)&&!m.isDir(s.node.mode))throw new m.ErrnoError(43);if(!s.stream_ops.allocate)throw new m.ErrnoError(138);s.stream_ops.allocate(s,c,l)},mmap:(s,c,l,f,g)=>{if((f&2)!==0&&(g&2)===0&&(s.flags&2097155)!==2)throw new m.ErrnoError(2);if((s.flags&2097155)===1)throw new m.ErrnoError(2);if(!s.stream_ops.mmap)throw new m.ErrnoError(43);return s.stream_ops.mmap(s,c,l,f,g)},msync:(s,c,l,f,g)=>s.stream_ops.msync?s.stream_ops.msync(s,c,l,f,g):0,munmap:s=>0,ioctl:(s,c,l)=>{if(!s.stream_ops.ioctl)throw new m.ErrnoError(59);return s.stream_ops.ioctl(s,c,l)},readFile:(s,c={})=>{if(c.flags=c.flags||0,c.encoding=c.encoding||"binary",c.encoding!=="utf8"&&c.encoding!=="binary")throw new Error(`Invalid encoding type "${c.encoding}"`);var l,f=m.open(s,c.flags),g=m.stat(s),T=g.size,R=new Uint8Array(T);return m.read(f,R,0,T,0),c.encoding==="utf8"?l=sr(R,0):c.encoding==="binary"&&(l=R),m.close(f),l},writeFile:(s,c,l={})=>{l.flags=l.flags||577;var f=m.open(s,l.flags,l.mode);if(typeof c=="string"){var g=new Uint8Array(Ur(c)+1),T=yn(c,g,0,g.length);m.write(f,g,0,T,void 0,l.canOwn)}else if(ArrayBuffer.isView(c))m.write(f,c,0,c.byteLength,void 0,l.canOwn);else throw new Error("Unsupported data type");m.close(f)},cwd:()=>m.currentPath,chdir:s=>{var c=m.lookupPath(s,{follow:!0});if(c.node===null)throw new m.ErrnoError(44);if(!m.isDir(c.node.mode))throw new m.ErrnoError(54);var l=m.nodePermissions(c.node,"x");if(l)throw new m.ErrnoError(l);m.currentPath=c.path},createDefaultDirectories:()=>{m.mkdir("/tmp"),m.mkdir("/home"),m.mkdir("/home/web_user")},createDefaultDevices:()=>{m.mkdir("/dev"),m.registerDevice(m.makedev(1,3),{read:()=>0,write:(f,g,T,R,C)=>R}),m.mkdev("/dev/null",m.makedev(1,3)),Ut.register(m.makedev(5,0),Ut.default_tty_ops),Ut.register(m.makedev(6,0),Ut.default_tty1_ops),m.mkdev("/dev/tty",m.makedev(5,0)),m.mkdev("/dev/tty1",m.makedev(6,0));var s=new Uint8Array(1024),c=0,l=()=>(c===0&&(c=Wi(s).byteLength),s[--c]);m.createDevice("/dev","random",l),m.createDevice("/dev","urandom",l),m.mkdir("/dev/shm"),m.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{m.mkdir("/proc");var s=m.mkdir("/proc/self");m.mkdir("/proc/self/fd"),m.mount({mount:()=>{var c=m.createNode(s,"fd",16895,73);return c.node_ops={lookup:(l,f)=>{var g=+f,T=m.getStreamChecked(g),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>T.path}};return R.parent=R,R}},c}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?m.createDevice("/dev","stdin",e.stdin):m.symlink("/dev/tty","/dev/stdin"),e.stdout?m.createDevice("/dev","stdout",null,e.stdout):m.symlink("/dev/tty","/dev/stdout"),e.stderr?m.createDevice("/dev","stderr",null,e.stderr):m.symlink("/dev/tty1","/dev/stderr");var s=m.open("/dev/stdin",0),c=m.open("/dev/stdout",1),l=m.open("/dev/stderr",1)},ensureErrnoError:()=>{m.ErrnoError||(m.ErrnoError=function(c,l){this.name="ErrnoError",this.node=l,this.setErrno=function(f){this.errno=f},this.setErrno(c),this.message="FS error"},m.ErrnoError.prototype=new Error,m.ErrnoError.prototype.constructor=m.ErrnoError,[44].forEach(s=>{m.genericErrors[s]=new m.ErrnoError(s),m.genericErrors[s].stack="<generic error, no stack>"}))},staticInit:()=>{m.ensureErrnoError(),m.nameTable=new Array(4096),m.mount(se,{},"/"),m.createDefaultDirectories(),m.createDefaultDevices(),m.createSpecialDirectories(),m.filesystems={MEMFS:se}},init:(s,c,l)=>{m.init.initialized=!0,m.ensureErrnoError(),e.stdin=s||e.stdin,e.stdout=c||e.stdout,e.stderr=l||e.stderr,m.createStandardStreams()},quit:()=>{m.init.initialized=!1;for(var s=0;s<m.streams.length;s++){var c=m.streams[s];!c||m.close(c)}},findObject:(s,c)=>{var l=m.analyzePath(s,c);return l.exists?l.object:null},analyzePath:(s,c)=>{try{var l=m.lookupPath(s,{follow:!c});s=l.path}catch(g){}var f={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var l=m.lookupPath(s,{parent:!0});f.parentExists=!0,f.parentPath=l.path,f.parentObject=l.node,f.name=he.basename(s),l=m.lookupPath(s,{follow:!c}),f.exists=!0,f.path=l.path,f.object=l.node,f.name=l.node.name,f.isRoot=l.path==="/"}catch(g){f.error=g.errno}return f},createPath:(s,c,l,f)=>{s=typeof s=="string"?s:m.getPath(s);for(var g=c.split("/").reverse();g.length;){var T=g.pop();if(!!T){var R=he.join2(s,T);try{m.mkdir(R)}catch(C){}s=R}}return R},createFile:(s,c,l,f,g)=>{var T=he.join2(typeof s=="string"?s:m.getPath(s),c),R=Gi(f,g);return m.create(T,R)},createDataFile:(s,c,l,f,g,T)=>{var R=c;s&&(s=typeof s=="string"?s:m.getPath(s),R=c?he.join2(s,c):s);var C=Gi(f,g),k=m.create(R,C);if(l){if(typeof l=="string"){for(var O=new Array(l.length),$=0,F=l.length;$<F;++$)O[$]=l.charCodeAt($);l=O}m.chmod(k,C|146);var q=m.open(k,577);m.write(q,l,0,l.length,0,T),m.close(q),m.chmod(k,C)}return k},createDevice:(s,c,l,f)=>{var g=he.join2(typeof s=="string"?s:m.getPath(s),c),T=Gi(!!l,!!f);m.createDevice.major||(m.createDevice.major=64);var R=m.makedev(m.createDevice.major++,0);return m.registerDevice(R,{open:C=>{C.seekable=!1},close:C=>{f&&f.buffer&&f.buffer.length&&f(10)},read:(C,k,O,$,F)=>{for(var q=0,K=0;K<$;K++){var ae;try{ae=l()}catch(be){throw new m.ErrnoError(29)}if(ae===void 0&&q===0)throw new m.ErrnoError(6);if(ae==null)break;q++,k[O+K]=ae}return q&&(C.node.timestamp=Date.now()),q},write:(C,k,O,$,F)=>{for(var q=0;q<$;q++)try{f(k[O+q])}catch(K){throw new m.ErrnoError(29)}return $&&(C.node.timestamp=Date.now()),q}}),m.mkdev(g,T,R)},forceLoadFile:s=>{if(s.isDevice||s.isFolder||s.link||s.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(M)try{s.contents=tr(M(s.url),!0),s.usedBytes=s.contents.length}catch(c){throw new m.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(s,c,l,f,g)=>{function T(){this.lengthKnown=!1,this.chunks=[]}if(T.prototype.get=function(K){if(!(K>this.length-1||K<0)){var ae=K%this.chunkSize,be=K/this.chunkSize|0;return this.getter(be)[ae]}},T.prototype.setDataGetter=function(K){this.getter=K},T.prototype.cacheLength=function(){var K=new XMLHttpRequest;if(K.open("HEAD",l,!1),K.send(null),!(K.status>=200&&K.status<300||K.status===304))throw new Error("Couldn't load "+l+". Status: "+K.status);var ae=Number(K.getResponseHeader("Content-length")),be,He=(be=K.getResponseHeader("Accept-Ranges"))&&be==="bytes",Pe=(be=K.getResponseHeader("Content-Encoding"))&&be==="gzip",_t=1024*1024;He||(_t=ae);var ze=(Ye,xn)=>{if(Ye>xn)throw new Error("invalid range ("+Ye+", "+xn+") or no bytes requested!");if(xn>ae-1)throw new Error("only "+ae+" bytes available! programmer error!");var xt=new XMLHttpRequest;if(xt.open("GET",l,!1),ae!==_t&&xt.setRequestHeader("Range","bytes="+Ye+"-"+xn),xt.responseType="arraybuffer",xt.overrideMimeType&&xt.overrideMimeType("text/plain; charset=x-user-defined"),xt.send(null),!(xt.status>=200&&xt.status<300||xt.status===304))throw new Error("Couldn't load "+l+". Status: "+xt.status);return xt.response!==void 0?new Uint8Array(xt.response||[]):tr(xt.responseText||"",!0)},ir=this;ir.setDataGetter(Ye=>{var xn=Ye*_t,xt=(Ye+1)*_t-1;if(xt=Math.min(xt,ae-1),typeof ir.chunks[Ye]=="undefined"&&(ir.chunks[Ye]=ze(xn,xt)),typeof ir.chunks[Ye]=="undefined")throw new Error("doXHR failed!");return ir.chunks[Ye]}),(Pe||!ae)&&(_t=ae=1,ae=this.getter(0).length,_t=ae,Me("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=ae,this._chunkSize=_t,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!S)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var R=new T;Object.defineProperties(R,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var C={isDevice:!1,contents:R}}else var C={isDevice:!1,url:l};var k=m.createFile(s,c,C,f,g);C.contents?k.contents=C.contents:C.url&&(k.contents=null,k.url=C.url),Object.defineProperties(k,{usedBytes:{get:function(){return this.contents.length}}});var O={},$=Object.keys(k.stream_ops);$.forEach(q=>{var K=k.stream_ops[q];O[q]=function(){return m.forceLoadFile(k),K.apply(null,arguments)}});function F(q,K,ae,be,He){var Pe=q.node.contents;if(He>=Pe.length)return 0;var _t=Math.min(Pe.length-He,be);if(Pe.slice)for(var ze=0;ze<_t;ze++)K[ae+ze]=Pe[He+ze];else for(var ze=0;ze<_t;ze++)K[ae+ze]=Pe.get(He+ze);return _t}return O.read=(q,K,ae,be,He)=>(m.forceLoadFile(k),F(q,K,ae,be,He)),O.mmap=(q,K,ae,be,He)=>{m.forceLoadFile(k);var Pe=Go(K);if(!Pe)throw new m.ErrnoError(48);return F(q,Ce,Pe,K,ae),{ptr:Pe,allocated:!0}},k.stream_ops=O,k}},zo=(s,c)=>s?sr(Ue,s,c):"",Ve={DEFAULT_POLLMASK:5,calculateAt:function(s,c,l){if(he.isAbs(c))return c;var f;if(s===-100)f=m.cwd();else{var g=Ve.getStreamFromFD(s);f=g.path}if(c.length==0){if(!l)throw new m.ErrnoError(44);return f}return he.join2(f,c)},doStat:function(s,c,l){try{var f=s(c)}catch(C){if(C&&C.node&&he.normalize(c)!==he.normalize(m.getPath(C.node)))return-54;throw C}x[l>>2]=f.dev,x[l+4>>2]=f.mode,ce[l+8>>2]=f.nlink,x[l+12>>2]=f.uid,x[l+16>>2]=f.gid,x[l+20>>2]=f.rdev,ve=[f.size>>>0,(ee=f.size,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l+24>>2]=ve[0],x[l+28>>2]=ve[1],x[l+32>>2]=4096,x[l+36>>2]=f.blocks;var g=f.atime.getTime(),T=f.mtime.getTime(),R=f.ctime.getTime();return ve=[Math.floor(g/1e3)>>>0,(ee=Math.floor(g/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l+40>>2]=ve[0],x[l+44>>2]=ve[1],ce[l+48>>2]=g%1e3*1e3,ve=[Math.floor(T/1e3)>>>0,(ee=Math.floor(T/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l+56>>2]=ve[0],x[l+60>>2]=ve[1],ce[l+64>>2]=T%1e3*1e3,ve=[Math.floor(R/1e3)>>>0,(ee=Math.floor(R/1e3),+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l+72>>2]=ve[0],x[l+76>>2]=ve[1],ce[l+80>>2]=R%1e3*1e3,ve=[f.ino>>>0,(ee=f.ino,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[l+88>>2]=ve[0],x[l+92>>2]=ve[1],0},doMsync:function(s,c,l,f,g){if(!m.isFile(c.node.mode))throw new m.ErrnoError(43);if(f&2)return 0;var T=Ue.slice(s,s+l);m.msync(c,T,g,l,f)},varargs:void 0,get(){Ve.varargs+=4;var s=x[Ve.varargs-4>>2];return s},getStr(s){var c=zo(s);return c},getStreamFromFD:function(s){var c=m.getStreamChecked(s);return c}};function Jo(s,c,l){Ve.varargs=l;try{var f=Ve.getStreamFromFD(s);switch(c){case 0:{var g=Ve.get();if(g<0)return-28;var T;return T=m.createStream(f,g),T.fd}case 1:case 2:return 0;case 3:return f.flags;case 4:{var g=Ve.get();return f.flags|=g,0}case 5:{var g=Ve.get(),R=0;return at[g+R>>1]=2,0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:return er(28),-1;default:return-28}}catch(C){if(typeof m=="undefined"||C.name!=="ErrnoError")throw C;return-C.errno}}function vn(s,c,l,f){Ve.varargs=f;try{c=Ve.getStr(c),c=Ve.calculateAt(s,c);var g=f?Ve.get():0;return m.open(c,l,g).fd}catch(T){if(typeof m=="undefined"||T.name!=="ErrnoError")throw T;return-T.errno}}function yc(s,c,l,f,g){}function An(s){switch(s){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${s}`)}}function Cn(){for(var s=new Array(256),c=0;c<256;++c)s[c]=String.fromCharCode(c);qo=s}var qo=void 0;function tt(s){for(var c="",l=s;Ue[l];)c+=qo[Ue[l++]];return c}var qt={},rr={},Er={},Tr=void 0;function ue(s){throw new Tr(s)}var Xo=void 0;function Ti(s){throw new Xo(s)}function Vr(s,c,l){s.forEach(function(C){Er[C]=c});function f(C){var k=l(C);k.length!==s.length&&Ti("Mismatched type converter count");for(var O=0;O<s.length;++O)Rt(s[O],k[O])}var g=new Array(c.length),T=[],R=0;c.forEach((C,k)=>{rr.hasOwnProperty(C)?g[k]=rr[C]:(T.push(C),qt.hasOwnProperty(C)||(qt[C]=[]),qt[C].push(()=>{g[k]=rr[C],++R,R===T.length&&f(g)}))}),T.length===0&&f(g)}function ti(s,c,l={}){var f=c.name;if(s||ue(`type "${f}" must have a positive integer typeid pointer`),rr.hasOwnProperty(s)){if(l.ignoreDuplicateRegistrations)return;ue(`Cannot register type '${f}' twice`)}if(rr[s]=c,delete Er[s],qt.hasOwnProperty(s)){var g=qt[s];delete qt[s],g.forEach(T=>T())}}function Rt(s,c,l={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");return ti(s,c,l)}function vc(s,c,l,f,g){var T=An(l);c=tt(c),Rt(s,{name:c,fromWireType:function(R){return!!R},toWireType:function(R,C){return C?f:g},argPackAdvance:8,readValueFromPointer:function(R){var C;if(l===1)C=Ce;else if(l===2)C=at;else if(l===4)C=x;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(C[R>>T])},destructorFunction:null})}function co(s){if(!(this instanceof Pt)||!(s instanceof Pt))return!1;for(var c=this.$$.ptrType.registeredClass,l=this.$$.ptr,f=s.$$.ptrType.registeredClass,g=s.$$.ptr;c.baseClass;)l=c.upcast(l),c=c.baseClass;for(;f.baseClass;)g=f.upcast(g),f=f.baseClass;return c===f&&l===g}function Qo(s){return{count:s.count,deleteScheduled:s.deleteScheduled,preservePointerOnDelete:s.preservePointerOnDelete,ptr:s.ptr,ptrType:s.ptrType,smartPtr:s.smartPtr,smartPtrType:s.smartPtrType}}function ji(s){function c(l){return l.$$.ptrType.registeredClass.name}ue(c(s)+" instance already deleted")}var Rn=!1;function Yo(s){}function Ko(s){s.smartPtr?s.smartPtrType.rawDestructor(s.smartPtr):s.ptrType.registeredClass.rawDestructor(s.ptr)}function Zo(s){s.count.value-=1;var c=s.count.value===0;c&&Ko(s)}function es(s,c,l){if(c===l)return s;if(l.baseClass===void 0)return null;var f=es(s,c,l.baseClass);return f===null?null:l.downcast(f)}var ts={};function uo(){return Object.keys(Hr).length}function Ac(){var s=[];for(var c in Hr)Hr.hasOwnProperty(c)&&s.push(Hr[c]);return s}var Fr=[];function bn(){for(;Fr.length;){var s=Fr.pop();s.$$.deleteScheduled=!1,s.delete()}}var $r=void 0;function Br(s){$r=s,Fr.length&&$r&&$r(bn)}function Cc(){e.getInheritedInstanceCount=uo,e.getLiveInheritedInstances=Ac,e.flushPendingDeletes=bn,e.setDelayFunction=Br}var Hr={};function lo(s,c){for(c===void 0&&ue("ptr should not be undefined");s.baseClass;)c=s.upcast(c),s=s.baseClass;return c}function Xs(s,c){return c=lo(s,c),Hr[c]}function Si(s,c){(!c.ptrType||!c.ptr)&&Ti("makeClassHandle requires ptr and ptrType");var l=!!c.smartPtrType,f=!!c.smartPtr;return l!==f&&Ti("Both smartPtrType and smartPtr must be specified"),c.count={value:1},Xt(Object.create(s,{$$:{value:c}}))}function Rc(s){var c=this.getPointee(s);if(!c)return this.destructor(s),null;var l=Xs(this.registeredClass,c);if(l!==void 0){if(l.$$.count.value===0)return l.$$.ptr=c,l.$$.smartPtr=s,l.clone();var f=l.clone();return this.destructor(s),f}function g(){return this.isSmartPointer?Si(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:c,smartPtrType:this,smartPtr:s}):Si(this.registeredClass.instancePrototype,{ptrType:this,ptr:s})}var T=this.registeredClass.getActualType(c),R=ts[T];if(!R)return g.call(this);var C;this.isConst?C=R.constPointerType:C=R.pointerType;var k=es(c,this.registeredClass,C.registeredClass);return k===null?g.call(this):this.isSmartPointer?Si(C.registeredClass.instancePrototype,{ptrType:C,ptr:k,smartPtrType:this,smartPtr:s}):Si(C.registeredClass.instancePrototype,{ptrType:C,ptr:k})}var Xt=function(s){return typeof FinalizationRegistry=="undefined"?(Xt=c=>c,s):(Rn=new FinalizationRegistry(c=>{Zo(c.$$)}),Xt=c=>{var l=c.$$,f=!!l.smartPtr;if(f){var g={$$:l};Rn.register(c,g,c)}return c},Yo=c=>Rn.unregister(c),Xt(s))};function bc(){if(this.$$.ptr||ji(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var s=Xt(Object.create(Object.getPrototypeOf(this),{$$:{value:Qo(this.$$)}}));return s.$$.count.value+=1,s.$$.deleteScheduled=!1,s}function Qs(){this.$$.ptr||ji(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),Yo(this),Zo(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ys(){return!this.$$.ptr}function rs(){return this.$$.ptr||ji(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ue("Object already scheduled for deletion"),Fr.push(this),Fr.length===1&&$r&&$r(bn),this.$$.deleteScheduled=!0,this}function Nc(){Pt.prototype.isAliasOf=co,Pt.prototype.clone=bc,Pt.prototype.delete=Qs,Pt.prototype.isDeleted=Ys,Pt.prototype.deleteLater=rs}function Pt(){}var Dc=48,Ks=57;function ri(s){if(s===void 0)return"_unknown";s=s.replace(/[^a-zA-Z0-9_]/g,"$");var c=s.charCodeAt(0);return c>=Dc&&c<=Ks?`_${s}`:s}function Nn(s,c){return s=ri(s),{[s]:function(){return c.apply(this,arguments)}}[s]}function is(s,c,l){if(s[c].overloadTable===void 0){var f=s[c];s[c]=function(){return s[c].overloadTable.hasOwnProperty(arguments.length)||ue(`Function '${l}' called with an invalid number of arguments (${arguments.length}) - expects one of (${s[c].overloadTable})!`),s[c].overloadTable[arguments.length].apply(this,arguments)},s[c].overloadTable=[],s[c].overloadTable[f.argCount]=f}}function wc(s,c,l){e.hasOwnProperty(s)?((l===void 0||e[s].overloadTable!==void 0&&e[s].overloadTable[l]!==void 0)&&ue(`Cannot register public name '${s}' twice`),is(e,s,s),e.hasOwnProperty(l)&&ue(`Cannot register multiple overloads of a function with the same number of arguments (${l})!`),e[s].overloadTable[l]=c):(e[s]=c,l!==void 0&&(e[s].numArguments=l))}function Zs(s,c,l,f,g,T,R,C){this.name=s,this.constructor=c,this.instancePrototype=l,this.rawDestructor=f,this.baseClass=g,this.getActualType=T,this.upcast=R,this.downcast=C,this.pureVirtualFunctions=[]}function Vt(s,c,l){for(;c!==l;)c.upcast||ue(`Expected null or instance of ${l.name}, got an instance of ${c.name}`),s=c.upcast(s),c=c.baseClass;return s}function ea(s,c){if(c===null)return this.isReference&&ue(`null is not a valid ${this.name}`),0;c.$$||ue(`Cannot pass "${wn(c)}" as a ${this.name}`),c.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`);var l=c.$$.ptrType.registeredClass,f=Vt(c.$$.ptr,l,this.registeredClass);return f}function kc(s,c){var l;if(c===null)return this.isReference&&ue(`null is not a valid ${this.name}`),this.isSmartPointer?(l=this.rawConstructor(),s!==null&&s.push(this.rawDestructor,l),l):0;c.$$||ue(`Cannot pass "${wn(c)}" as a ${this.name}`),c.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&c.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);var f=c.$$.ptrType.registeredClass;if(l=Vt(c.$$.ptr,f,this.registeredClass),this.isSmartPointer)switch(c.$$.smartPtr===void 0&&ue("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:c.$$.smartPtrType===this?l=c.$$.smartPtr:ue(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:l=c.$$.smartPtr;break;case 2:if(c.$$.smartPtrType===this)l=c.$$.smartPtr;else{var g=c.clone();l=this.rawShare(l,yi.toHandle(function(){g.delete()})),s!==null&&s.push(this.rawDestructor,l)}break;default:ue("Unsupporting sharing policy")}return l}function Oc(s,c){if(c===null)return this.isReference&&ue(`null is not a valid ${this.name}`),0;c.$$||ue(`Cannot pass "${wn(c)}" as a ${this.name}`),c.$$.ptr||ue(`Cannot pass deleted object as a pointer of type ${this.name}`),c.$$.ptrType.isConst&&ue(`Cannot convert argument of type ${c.$$.ptrType.name} to parameter type ${this.name}`);var l=c.$$.ptrType.registeredClass,f=Vt(c.$$.ptr,l,this.registeredClass);return f}function Rr(s){return this.fromWireType(x[s>>2])}function Pc(s){return this.rawGetPointee&&(s=this.rawGetPointee(s)),s}function ns(s){this.rawDestructor&&this.rawDestructor(s)}function xc(s){s!==null&&s.delete()}function Mc(){bt.prototype.getPointee=Pc,bt.prototype.destructor=ns,bt.prototype.argPackAdvance=8,bt.prototype.readValueFromPointer=Rr,bt.prototype.deleteObject=xc,bt.prototype.fromWireType=Rc}function bt(s,c,l,f,g,T,R,C,k,O,$){this.name=s,this.registeredClass=c,this.isReference=l,this.isConst=f,this.isSmartPointer=g,this.pointeeType=T,this.sharingPolicy=R,this.rawGetPointee=C,this.rawConstructor=k,this.rawShare=O,this.rawDestructor=$,!g&&c.baseClass===void 0?f?(this.toWireType=ea,this.destructorFunction=null):(this.toWireType=Oc,this.destructorFunction=null):this.toWireType=kc}function Lc(s,c,l){e.hasOwnProperty(s)||Ti("Replacing nonexistant public symbol"),e[s].overloadTable!==void 0&&l!==void 0?e[s].overloadTable[l]=c:(e[s]=c,e[s].argCount=l)}var Uc=(s,c,l)=>{var f=e["dynCall_"+s];return l&&l.length?f.apply(null,[c].concat(l)):f.call(null,c)},Ii=[],os=s=>{var c=Ii[s];return c||(s>=Ii.length&&(Ii.length=s+1),Ii[s]=c=Kr.get(s)),c},Vc=(s,c,l)=>{if(s.includes("j"))return Uc(s,c,l);var f=os(c).apply(null,l);return f},ta=(s,c)=>{var l=[];return function(){return l.length=0,Object.assign(l,arguments),Vc(s,c,l)}};function ar(s,c){s=tt(s);function l(){return s.includes("j")?ta(s,c):os(c)}var f=l();return typeof f!="function"&&ue(`unknown function pointer with signature ${s}: ${c}`),f}function ra(s,c){var l=Nn(c,function(f){this.name=c,this.message=f;var g=new Error(f).stack;g!==void 0&&(this.stack=this.toString()+`
99
+ `+g.replace(/^Error(:[^\n]*)?\n/,""))});return l.prototype=Object.create(s.prototype),l.prototype.constructor=l,l.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},l}var ss=void 0;function ho(s){var c=sd(s),l=tt(c);return Ft(c),l}function Dn(s,c){var l=[],f={};function g(T){if(!f[T]&&!rr[T]){if(Er[T]){Er[T].forEach(g);return}l.push(T),f[T]=!0}}throw c.forEach(g),new ss(`${s}: `+l.map(ho).join([", "]))}function Fc(s,c,l,f,g,T,R,C,k,O,$,F,q){$=tt($),T=ar(g,T),C&&(C=ar(R,C)),O&&(O=ar(k,O)),q=ar(F,q);var K=ri($);wc(K,function(){Dn(`Cannot construct ${$} due to unbound types`,[f])}),Vr([s,c,l],f?[f]:[],function(ae){ae=ae[0];var be,He;f?(be=ae.registeredClass,He=be.instancePrototype):He=Pt.prototype;var Pe=Nn(K,function(){if(Object.getPrototypeOf(this)!==_t)throw new Tr("Use 'new' to construct "+$);if(ze.constructor_body===void 0)throw new Tr($+" has no accessible constructor");var xt=ze.constructor_body[arguments.length];if(xt===void 0)throw new Tr(`Tried to invoke ctor of ${$} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(ze.constructor_body).toString()}) parameters instead!`);return xt.apply(this,arguments)}),_t=Object.create(He,{constructor:{value:Pe}});Pe.prototype=_t;var ze=new Zs($,Pe,_t,q,be,T,C,O);ze.baseClass&&(ze.baseClass.__derivedClasses===void 0&&(ze.baseClass.__derivedClasses=[]),ze.baseClass.__derivedClasses.push(ze));var ir=new bt($,ze,!0,!1,!1),Ye=new bt($+"*",ze,!1,!1,!1),xn=new bt($+" const*",ze,!1,!0,!1);return ts[s]={pointerType:Ye,constPointerType:xn},Lc(K,Pe),[ir,Ye,xn]})}function as(s,c){for(var l=[],f=0;f<s;f++)l.push(ce[c+f*4>>2]);return l}function $c(s){for(;s.length;){var c=s.pop(),l=s.pop();l(c)}}function cs(s,c){if(!(s instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof s} which is not a function`);var l=Nn(s.name||"unknownFunctionName",function(){});l.prototype=s.prototype;var f=new l,g=s.apply(f,c);return g instanceof Object?g:f}function ds(s,c,l,f,g,T){var R=c.length;R<2&&ue("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var C=c[1]!==null&&l!==null,k=!1,O=1;O<c.length;++O)if(c[O]!==null&&c[O].destructorFunction===void 0){k=!0;break}for(var $=c[0].name!=="void",F="",q="",O=0;O<R-2;++O)F+=(O!==0?", ":"")+"arg"+O,q+=(O!==0?", ":"")+"arg"+O+"Wired";var K=`
100
+ return function ${ri(s)}(${F}) {
101
+ if (arguments.length !== ${R-2}) {
102
+ throwBindingError('function ${s} called with ${arguments.length} arguments, expected ${R-2} args!');
103
+ }`;k&&(K+=`var destructors = [];
104
+ `);var ae=k?"destructors":"null",be=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],He=[ue,f,g,$c,c[0],c[1]];C&&(K+="var thisWired = classParam.toWireType("+ae+`, this);
105
+ `);for(var O=0;O<R-2;++O)K+="var arg"+O+"Wired = argType"+O+".toWireType("+ae+", arg"+O+"); // "+c[O+2].name+`
106
+ `,be.push("argType"+O),He.push(c[O+2]);if(C&&(q="thisWired"+(q.length>0?", ":"")+q),K+=($||T?"var rv = ":"")+"invoker(fn"+(q.length>0?", ":"")+q+`);
107
+ `,k)K+=`runDestructors(destructors);
108
+ `;else for(var O=C?1:2;O<c.length;++O){var Pe=O===1?"thisWired":"arg"+(O-2)+"Wired";c[O].destructorFunction!==null&&(K+=Pe+"_dtor("+Pe+"); // "+c[O].name+`
109
+ `,be.push(Pe+"_dtor"),He.push(c[O].destructorFunction))}return $&&(K+=`var ret = retType.fromWireType(rv);
110
+ return ret;
111
+ `),K+=`}
112
+ `,be.push(K),cs(Function,be).apply(null,He)}function Bc(s,c,l,f,g,T){var R=as(c,l);g=ar(f,g),Vr([],[s],function(C){C=C[0];var k=`constructor ${C.name}`;if(C.registeredClass.constructor_body===void 0&&(C.registeredClass.constructor_body=[]),C.registeredClass.constructor_body[c-1]!==void 0)throw new Tr(`Cannot register multiple constructors with identical number of parameters (${c-1}) for class '${C.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return C.registeredClass.constructor_body[c-1]=()=>{Dn(`Cannot construct ${C.name} due to unbound types`,R)},Vr([],R,function(O){return O.splice(1,0,null),C.registeredClass.constructor_body[c-1]=ds(k,O,null,g,T),[]}),[]})}function Hc(s,c,l,f,g,T,R,C,k){var O=as(l,f);c=tt(c),T=ar(g,T),Vr([],[s],function($){$=$[0];var F=`${$.name}.${c}`;c.startsWith("@@")&&(c=Symbol[c.substring(2)]),C&&$.registeredClass.pureVirtualFunctions.push(c);function q(){Dn(`Cannot call ${F} due to unbound types`,O)}var K=$.registeredClass.instancePrototype,ae=K[c];return ae===void 0||ae.overloadTable===void 0&&ae.className!==$.name&&ae.argCount===l-2?(q.argCount=l-2,q.className=$.name,K[c]=q):(is(K,c,F),K[c].overloadTable[l-2]=q),Vr([],O,function(be){var He=ds(F,be,$,T,R,k);return K[c].overloadTable===void 0?(He.argCount=l-2,K[c]=He):K[c].overloadTable[l-2]=He,[]}),[]})}function Wc(){Object.assign(us.prototype,{get(s){return this.allocated[s]},has(s){return this.allocated[s]!==void 0},allocate(s){var c=this.freelist.pop()||this.allocated.length;return this.allocated[c]=s,c},free(s){this.allocated[s]=void 0,this.freelist.push(s)}})}function us(){this.allocated=[void 0],this.freelist=[]}var st=new us;function ls(s){s>=st.reserved&&--st.get(s).refcount===0&&st.free(s)}function Gc(){for(var s=0,c=st.reserved;c<st.allocated.length;++c)st.allocated[c]!==void 0&&++s;return s}function jc(){st.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),st.reserved=st.allocated.length,e.count_emval_handles=Gc}var yi={toValue:s=>(s||ue("Cannot use deleted val. handle = "+s),st.get(s).value),toHandle:s=>{switch(s){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return st.allocate({refcount:1,value:s})}}};function ia(s,c){c=tt(c),Rt(s,{name:c,fromWireType:function(l){var f=yi.toValue(l);return ls(l),f},toWireType:function(l,f){return yi.toHandle(f)},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:null})}function wn(s){if(s===null)return"null";var c=typeof s;return c==="object"||c==="array"||c==="function"?s.toString():""+s}function zc(s,c){switch(c){case 2:return function(l){return this.fromWireType(Yr[l>>2])};case 3:return function(l){return this.fromWireType(fi[l>>3])};default:throw new TypeError("Unknown float type: "+s)}}function na(s,c,l){var f=An(l);c=tt(c),Rt(s,{name:c,fromWireType:function(g){return g},toWireType:function(g,T){return T},argPackAdvance:8,readValueFromPointer:zc(c,f),destructorFunction:null})}function Jc(s,c,l){switch(c){case 0:return l?function(g){return Ce[g]}:function(g){return Ue[g]};case 1:return l?function(g){return at[g>>1]}:function(g){return Tt[g>>1]};case 2:return l?function(g){return x[g>>2]}:function(g){return ce[g>>2]};default:throw new TypeError("Unknown integer type: "+s)}}function qc(s,c,l,f,g){c=tt(c),g===-1&&(g=4294967295);var T=An(l),R=F=>F;if(f===0){var C=32-8*l;R=F=>F<<C>>>C}var k=c.includes("unsigned"),O=(F,q)=>{},$;k?$=function(F,q){return O(q,this.name),q>>>0}:$=function(F,q){return O(q,this.name),q},Rt(s,{name:c,fromWireType:R,toWireType:$,argPackAdvance:8,readValueFromPointer:Jc(c,T,f!==0),destructorFunction:null})}function Xc(s,c,l){var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],g=f[c];function T(R){R=R>>2;var C=ce,k=C[R],O=C[R+1];return new g(C.buffer,O,k)}l=tt(l),Rt(s,{name:l,fromWireType:T,argPackAdvance:8,readValueFromPointer:T},{ignoreDuplicateRegistrations:!0})}var Qc=(s,c,l)=>yn(s,Ue,c,l);function Yc(s,c){c=tt(c);var l=c==="std::string";Rt(s,{name:c,fromWireType:function(f){var g=ce[f>>2],T=f+4,R;if(l)for(var C=T,k=0;k<=g;++k){var O=T+k;if(k==g||Ue[O]==0){var $=O-C,F=zo(C,$);R===void 0?R=F:(R+=String.fromCharCode(0),R+=F),C=O+1}}else{for(var q=new Array(g),k=0;k<g;++k)q[k]=String.fromCharCode(Ue[T+k]);R=q.join("")}return Ft(f),R},toWireType:function(f,g){g instanceof ArrayBuffer&&(g=new Uint8Array(g));var T,R=typeof g=="string";R||g instanceof Uint8Array||g instanceof Uint8ClampedArray||g instanceof Int8Array||ue("Cannot pass non-string to std::string"),l&&R?T=Ur(g):T=g.length;var C=ps(4+T+1),k=C+4;if(ce[C>>2]=T,l&&R)Qc(g,k,T+1);else if(R)for(var O=0;O<T;++O){var $=g.charCodeAt(O);$>255&&(Ft(k),ue("String has UTF-16 code units that do not fit in 8 bits")),Ue[k+O]=$}else for(var O=0;O<T;++O)Ue[k+O]=g[O];return f!==null&&f.push(Ft,C),C},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:function(f){Ft(f)}})}var mo=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,Kc=(s,c)=>{for(var l=s,f=l>>1,g=f+c/2;!(f>=g)&&Tt[f];)++f;if(l=f<<1,l-s>32&&mo)return mo.decode(Ue.subarray(s,l));for(var T="",R=0;!(R>=c/2);++R){var C=at[s+R*2>>1];if(C==0)break;T+=String.fromCharCode(C)}return T},Zc=(s,c,l)=>{if(l===void 0&&(l=2147483647),l<2)return 0;l-=2;for(var f=c,g=l<s.length*2?l/2:s.length,T=0;T<g;++T){var R=s.charCodeAt(T);at[c>>1]=R,c+=2}return at[c>>1]=0,c-f},Pu=s=>s.length*2,ed=(s,c)=>{for(var l=0,f="";!(l>=c/4);){var g=x[s+l*4>>2];if(g==0)break;if(++l,g>=65536){var T=g-65536;f+=String.fromCharCode(55296|T>>10,56320|T&1023)}else f+=String.fromCharCode(g)}return f},Wr=(s,c,l)=>{if(l===void 0&&(l=2147483647),l<4)return 0;for(var f=c,g=f+l-4,T=0;T<s.length;++T){var R=s.charCodeAt(T);if(R>=55296&&R<=57343){var C=s.charCodeAt(++T);R=65536+((R&1023)<<10)|C&1023}if(x[c>>2]=R,c+=4,c+4>g)break}return x[c>>2]=0,c-f},hs=s=>{for(var c=0,l=0;l<s.length;++l){var f=s.charCodeAt(l);f>=55296&&f<=57343&&++l,c+=4}return c},oa=function(s,c,l){l=tt(l);var f,g,T,R,C;c===2?(f=Kc,g=Zc,R=Pu,T=()=>Tt,C=1):c===4&&(f=ed,g=Wr,R=hs,T=()=>ce,C=2),Rt(s,{name:l,fromWireType:function(k){for(var O=ce[k>>2],$=T(),F,q=k+4,K=0;K<=O;++K){var ae=k+4+K*c;if(K==O||$[ae>>C]==0){var be=ae-q,He=f(q,be);F===void 0?F=He:(F+=String.fromCharCode(0),F+=He),q=ae+c}}return Ft(k),F},toWireType:function(k,O){typeof O!="string"&&ue(`Cannot pass non-string to C++ string type ${l}`);var $=R(O),F=ps(4+$+c);return ce[F>>2]=$>>C,g(O,F+4,$+c),k!==null&&k.push(Ft,F),F},argPackAdvance:8,readValueFromPointer:Rr,destructorFunction:function(k){Ft(k)}})};function td(s,c){c=tt(c),Rt(s,{isVoid:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(l,f){}})}var rd={};function sa(s){var c=rd[s];return c===void 0?tt(s):c}var kn=[];function po(s,c,l,f){s=kn[s],c=yi.toValue(c),l=sa(l),s(c,l,null,f)}function aa(s){var c=kn.length;return kn.push(s),c}function I(s,c){var l=rr[s];return l===void 0&&ue(c+" has unknown type "+ho(s)),l}function y(s,c){for(var l=new Array(s),f=0;f<s;++f)l[f]=I(ce[c+f*4>>2],"parameter "+f);return l}var D=[];function P(s,c){var l=y(s,c),f=l[0],g=f.name+"_$"+l.slice(1).map(function(ae){return ae.name}).join("_")+"$",T=D[g];if(T!==void 0)return T;for(var R=["retType"],C=[f],k="",O=0;O<s-1;++O)k+=(O!==0?", ":"")+"arg"+O,R.push("argType"+O),C.push(l[1+O]);for(var $=ri("methodCaller_"+g),F="return function "+$+`(handle, name, destructors, args) {
113
+ `,q=0,O=0;O<s-1;++O)F+=" var arg"+O+" = argType"+O+".readValueFromPointer(args"+(q?"+"+q:"")+`);
114
+ `,q+=l[O+1].argPackAdvance;F+=" var rv = handle[name]("+k+`);
115
+ `;for(var O=0;O<s-1;++O)l[O+1].deleteObject&&(F+=" argType"+O+".deleteObject(arg"+O+`);
116
+ `);f.isVoid||(F+=` return retType.toWireType(destructors, rv);
117
+ `),F+=`};
118
+ `,R.push(F);var K=cs(Function,R).apply(null,C);return T=aa(K),D[g]=T,T}function z(s,c){return c+2097152>>>0<4194305-!!s?(s>>>0)+c*4294967296:NaN}var te=()=>{Jt("")};function ne(){return Date.now()}var X=()=>Ue.length,le=()=>X(),re=(s,c,l)=>Ue.copyWithin(s,c,c+l),Ne=s=>{Jt("OOM")},Be=s=>{var c=Ue.length;s>>>=0,Ne(s)},Fe={},Ke=()=>d||"./this.program",rt=()=>{if(!rt.strings){var s=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",c={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:s,_:Ke()};for(var l in Fe)Fe[l]===void 0?delete c[l]:c[l]=Fe[l];var f=[];for(var l in c)f.push(`${l}=${c[l]}`);rt.strings=f}return rt.strings},cr=(s,c)=>{for(var l=0;l<s.length;++l)Ce[c++>>0]=s.charCodeAt(l);Ce[c>>0]=0},Qt=(s,c)=>{var l=0;return rt().forEach(function(f,g){var T=c+l;ce[s+g*4>>2]=T,cr(f,T),l+=f.length+1}),0},ii=(s,c)=>{var l=rt();ce[s>>2]=l.length;var f=0;return l.forEach(function(g){f+=g.length+1}),ce[c>>2]=f,0};function ms(s){try{var c=Ve.getStreamFromFD(s);return m.close(c),0}catch(l){if(typeof m=="undefined"||l.name!=="ErrnoError")throw l;return l.errno}}function Sr(s,c){try{var l=0,f=0,g=0,T=Ve.getStreamFromFD(s),R=T.tty?2:m.isDir(T.mode)?3:m.isLink(T.mode)?7:4;return Ce[c>>0]=R,at[c+2>>1]=g,ve=[l>>>0,(ee=l,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[c+8>>2]=ve[0],x[c+12>>2]=ve[1],ve=[f>>>0,(ee=f,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[c+16>>2]=ve[0],x[c+20>>2]=ve[1],0}catch(C){if(typeof m=="undefined"||C.name!=="ErrnoError")throw C;return C.errno}}var id=(s,c,l,f)=>{for(var g=0,T=0;T<l;T++){var R=ce[c>>2],C=ce[c+4>>2];c+=8;var k=m.read(s,Ce,R,C,f);if(k<0)return-1;if(g+=k,k<C)break;typeof f!="undefined"&&(f+=k)}return g};function ca(s,c,l,f){try{var g=Ve.getStreamFromFD(s),T=id(g,c,l);return ce[f>>2]=T,0}catch(R){if(typeof m=="undefined"||R.name!=="ErrnoError")throw R;return R.errno}}function da(s,c,l,f,g){var T=z(c,l);try{if(isNaN(T))return 61;var R=Ve.getStreamFromFD(s);return m.llseek(R,T,f),ve=[R.position>>>0,(ee=R.position,+Math.abs(ee)>=1?ee>0?+Math.floor(ee/4294967296)>>>0:~~+Math.ceil((ee-+(~~ee>>>0))/4294967296)>>>0:0)],x[g>>2]=ve[0],x[g+4>>2]=ve[1],R.getdents&&T===0&&f===0&&(R.getdents=null),0}catch(C){if(typeof m=="undefined"||C.name!=="ErrnoError")throw C;return C.errno}}var ua=(s,c,l,f)=>{for(var g=0,T=0;T<l;T++){var R=ce[c>>2],C=ce[c+4>>2];c+=8;var k=m.write(s,Ce,R,C,f);if(k<0)return-1;g+=k,typeof f!="undefined"&&(f+=k)}return g};function Nh(s,c,l,f){try{var g=Ve.getStreamFromFD(s),T=ua(g,c,l);return ce[f>>2]=T,0}catch(R){if(typeof m=="undefined"||R.name!=="ErrnoError")throw R;return R.errno}}var nd=function(s,c,l,f){s||(s=this),this.parent=s,this.mount=s.mount,this.mounted=null,this.id=m.nextInode++,this.name=c,this.mode=l,this.node_ops={},this.stream_ops={},this.rdev=f},On=365,Pn=146;Object.defineProperties(nd.prototype,{read:{get:function(){return(this.mode&On)===On},set:function(s){s?this.mode|=On:this.mode&=~On}},write:{get:function(){return(this.mode&Pn)===Pn},set:function(s){s?this.mode|=Pn:this.mode&=~Pn}},isFolder:{get:function(){return m.isDir(this.mode)}},isDevice:{get:function(){return m.isChrdev(this.mode)}}}),m.FSNode=nd,m.createPreloadedFile=Js,m.staticInit(),Cn(),Tr=e.BindingError=class extends Error{constructor(c){super(c),this.name="BindingError"}},Xo=e.InternalError=class extends Error{constructor(c){super(c),this.name="InternalError"}},Nc(),Cc(),Mc(),ss=e.UnboundTypeError=ra(Error,"UnboundTypeError"),Wc(),jc();var Dh={p:js,C:Jo,w:vn,t:yc,n:vc,r:Fc,q:Bc,d:Hc,D:ia,k:na,c:qc,b:Xc,j:Yc,f:oa,o:td,g:po,m:ls,l:P,a:te,e:ne,v:le,A:re,u:Be,y:Qt,z:ii,i:ms,x:Sr,B:ca,s:da,h:Nh},UE=G(),wh=()=>(wh=Ae.F)(),ps=s=>(ps=Ae.G)(s),Ft=s=>(Ft=Ae.I)(s),od=()=>(od=Ae.J)(),sd=s=>(sd=Ae.K)(s),kh=e.__embind_initialize_bindings=()=>(kh=e.__embind_initialize_bindings=Ae.L)(),ad=s=>(ad=Ae.M)(s),Oh=e.dynCall_viiijj=(s,c,l,f,g,T,R,C)=>(Oh=e.dynCall_viiijj=Ae.N)(s,c,l,f,g,T,R,C),kf=e.dynCall_jij=(s,c,l,f)=>(kf=e.dynCall_jij=Ae.O)(s,c,l,f),la=e.dynCall_jii=(s,c,l)=>(la=e.dynCall_jii=Ae.P)(s,c,l),xu=e.dynCall_jiji=(s,c,l,f,g)=>(xu=e.dynCall_jiji=Ae.Q)(s,c,l,f,g),u;Lr=function s(){u||h(),u||(Lr=s)};function h(){if(de>0||(hc(),de>0))return;function s(){u||(u=!0,e.calledRun=!0,!or&&(mc(),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),pc()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),s()},1)):s()}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return h(),r.ready}})(),Vg=CI;var Uo=class extends Re{constructor(){super(...arguments);this.sampleRate=0;this.channels=0}initialize(){return new Promise(e=>{let t={};t.print=i=>console.log(i),t.printErr=i=>console.log(`[JS] ERROR: ${i}`),t.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),t.postRun=i=>{this.module=i,this.decoder=new this.module.AudioDecoder(this),e()},console.log("audio soft decoder initialize call"),Vg(t)})}configure(e){var t;this.config=e,this.decoder.setCodec(this.config.codec,(t=this.config.description)!=null?t:"")}decode(e){this.decoder.decode(e.data,e.timestamp)}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}audioInfo(e,t){this.sampleRate=e,this.channels=t;let i={sampleRate:e,channels:t,depth:16};this.emit("audioCodecInfo",i)}pcmData(e,t,i){if(!this.module)return;let o=[],a=0,d=0;for(let _=0;_<this.channels;_++){let S=this.module.HEAPU32[(e>>2)+_]>>2,v=this.module.HEAPF32.subarray(S,S+t);o.push(v),a+=v.length}let p=new Float32Array(a);this.emit("audioFrame",new AudioData({format:"f32-planar",sampleRate:this.sampleRate,numberOfChannels:this.channels,timestamp:i,numberOfFrames:t,data:o.reduce((_,S)=>(_.subarray(d).set(S),d+=S.length,_),p)}))}errorInfo(e){let t={errMsg:e};this.emit("error",t)}};j([mt(Re.INIT,"initialized")],Uo.prototype,"initialize",1),j([mt("initialized","configured",{sync:!0})],Uo.prototype,"configure",1),j([rc("configured")],Uo.prototype,"decode",1),j([mt("configured","initialized",{sync:!0})],Uo.prototype,"reset",1),j([mt([],"closed",{sync:!0})],Uo.prototype,"close",1);var Vo=class extends Re{initialize(){return N(this,null,function*(){this.decoder=new AudioDecoder({output:e=>{this.emit("audioFrame",e)},error:e=>{this.emit("error",e),this.close()}})})}configure(e){this.config=e,this.decoder.configure(e)}decode(e){this.decoder.state==="configured"&&this.decoder.decode(new EncodedAudioChunk(e))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.close()}};j([mt([Re.INIT,"closed"],"initialized")],Vo.prototype,"initialize",1),j([mt("initialized","configured",{sync:!0})],Vo.prototype,"configure",1),j([rc("configured")],Vo.prototype,"decode",1),j([mt([],Re.INIT,{sync:!0})],Vo.prototype,"reset",1),j([mt([],"closed",{ignoreError:!0,sync:!0})],Vo.prototype,"close",1);var lh=class extends Ar{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
119
+ precision highp float;
120
+ uniform sampler2D ySampler;
121
+ uniform sampler2D uSampler;
122
+ uniform sampler2D vSampler;
123
+ varying highp vec2 textureCoord;
124
+ const mat4 YUV2RGB = mat4(
125
+ 1.1643828125, 0, 1.59602734375, -.87078515625,
126
+ 1.1643828125, -.39176171875, -.81296875, .52959375,
127
+ 1.1643828125, 2.017234375, 0, -1.081390625,
128
+ 0, 0, 0, 1);
129
+ void main() {
130
+ vec3 yuv;
131
+ yuv.r = texture2D(ySampler, textureCoord).r;
132
+ yuv.g = texture2D(uSampler, textureCoord).r;
133
+ yuv.b = texture2D(vSampler, textureCoord).r;
134
+ gl_FragColor = vec4(yuv,1) * YUV2RGB;
135
+ }
136
+ `,vertexShaderSource:`
137
+ attribute vec4 vertexPos;
138
+ attribute vec2 texturePos;
139
+ varying vec2 textureCoord;
140
+ void main() {
141
+ gl_Position = vertexPos;
142
+ textureCoord = texturePos;
143
+ }`});this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let i=this.context.ctx,o=i.createTexture();return i.bindTexture(i.TEXTURE_2D,o),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.bindTexture(i.TEXTURE_2D,null),i.uniform1i(i.getUniformLocation(this.program,e),t),o}render(e){let t=this.context.ctx,i=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,i,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,i,o,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,i/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,i/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let i=this.context.ctx;i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.yTextureRef),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e,t,0,i.LUMINANCE,i.UNSIGNED_BYTE,null),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,this.uTextureRef),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e/2,t/2,0,i.LUMINANCE,i.UNSIGNED_BYTE,null),i.activeTexture(i.TEXTURE2),i.bindTexture(i.TEXTURE_2D,this.vTextureRef),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e/2,t/2,0,i.LUMINANCE,i.UNSIGNED_BYTE,null)}};var of=[n=>{n.codec="avc1.420028"},n=>{delete n.hardwareAcceleration}],Fg=(n,r)=>{switch(n){case"webCodecs":return r==="videoFrame"?514705:514706;case"wasm":return r==="webgl"?514707:r==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};var hh=class{constructor(r,e,t){E(this,"trackDoneOB");E(this,"startOB");E(this,"stopOB");E(this,"decoder");E(this,"videoContext");E(this,"gop",0);E(this,"gop_helper",0);E(this,"waitFirstKeyFrame",!0);E(this,"startTimestamp",0);E(this,"startTime",0);E(this,"inputFrameCount",0);E(this,"decodedFrameCount",0);E(this,"downgradeLevel",0);E(this,"config");E(this,"videoElement");E(this,"type","wasm");E(this,"renderer","2d");E(this,"wasmOption",{yuvMode:!0});E(this,"_decodeSink");let{kvStatManager:i,trtc:o}=r;if(this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.type=t.type,this.renderer=t.renderer,this.trackDoneOB=jt(e,Re.INIT),this.stopOB=Qr(this.trackDoneOB),t.type==="auto"){switch(t.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}this.startOB=Qr();let a=Qr(),d;gt(a,ag((_,S)=>(_!==S&&o.emit(me.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,{userId:e.userId,streamType:e.streamType==="main"?"main":"sub",type:this.type,renderer:this.renderer,reason:d,prevState:_,state:S}),S),"INITIALIZED"),mr(this.stopOB),zt());let p=_=>{let S=this.pipe(e);return a.next("STARTING"),e.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`),gt(S,mr(this.stopOB),zt(()=>{e.stat.framesDecoded++},v=>{if(e.log.error(v),i.addFailedEvent({key:Fg(this.type,this.renderer),error:v}),_>4)this.startOB.error(v);else{switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.startOB.next(_+1)}})),gt(S,Po(1),Ql(Ga))};gt(this.startOB,Wa(0),Ns(p),mr(this.stopOB),zt(()=>{e.player.handlePlaying("canvas"),a.next("STARTED")},_=>{d=_,a.next("FAILED"),o.emit(me.ERROR,new fe({code:Se.OPERATION_FAILED,extraCode:5505}))},()=>{i.addSuccessEvent({key:Fg(this.type,this.renderer)}),i.addSuccessEvent({key:514704})}))}mock(r){this._decodeSink?this._decodeSink.error(r):this.startOB.next(0)}close(r){this.stopOB.next(r)}changeRenderer(r){this.renderer=r,this.renderer==="videoFrame"&&!xm()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(r){var i;if(this.inputFrameCount++,((i=this.decoder)==null?void 0:i.state)!=="configured")return r;let e=r.type==="key",{timestamp:t}=r;if(e?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder&&this.decoder.state==="configured"){if(this.waitFirstKeyFrame)if(e)this.waitFirstKeyFrame=!1,this.startTimestamp=t,this.startTime=Date.now();else return;let o=(t-this.startTimestamp)/90,d=Date.now()-this.startTime-o,p=d<500?0:d/1e3>>0;switch(e&&(p>0?this.downgradeLevel++:this.downgradeLevel>3&&this.downgradeLevel--),this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}this.decoder.decode(r);return}return r}pipe(r){return Oo()(e=>N(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o,a;(o=this.decoder)==null||o.close(),(a=this.videoContext)==null||a.destroy()});let{renderer:t,type:i}=this;try{switch(i){case"wasm":this.decoder=Fm()?new Eu(this.wasmOption):new gu(this.wasmOption);break;case"webCodecs":for(let o=0;o<=of.length;o++){let{supported:a}=yield VideoDecoder.isConfigSupported(this.config);if(a)break;if(o===of.length){e.error(3);return}of[o](this.config)}this.decoder=new gn;break;case"mse":throw new Error("not supported yet")}if(this.decoder.on("videoFrame",o=>{this.decodedFrameCount++,e.next(o)}),this.decoder.on("error",o=>{r.log.error(o),e.error(i==="webCodecs"?4:8)}),yield this.decoder.initialize(this.videoElement),this.decoder.configure(this.config),i==="wasm"&&t==="webgl"){this.videoContext=new vt({frameRate:15,logger:r.log,name:r.userId}),this.videoContext.create(),this.videoContext.on(vt.UNAVAILABLE,a=>{r.log.error(a),e.error(7)});let o=new lh(this.videoContext);this.decoder.on("videoCodecInfo",a=>o.resize(a.width,a.height)),this.decoder.on("videoFrame",a=>{[o.Y,o.U,o.V]=a,this.downgradeLevel===1?this.decodedFrameCount%2===0&&o.render(this.decodedFrameCount):o.render(this.decodedFrameCount)}),r.source=o,r.player.setCanvas(this.videoContext._canvas)}else if(t==="videoFrame"){r.player.setCanvas();let o=new MediaStreamTrackGenerator({kind:"video"}),a=o.writable.getWriter();r.setInputMediaStreamTrack(o),this.decoder.on("videoFrame",d=>{a.write(d)}),o.onmute=()=>{e.error(i==="webCodecs"?5:9)}}else{this.videoContext=new hr({frameRate:15,logger:r.log,name:r.userId}),this.videoContext.create({alpha:!1});let o=this.videoContext.createVideoImageSource();this.decoder.on("videoFrame",d=>{o.image=d,o.update()});let a=new Ds(this.videoContext,{name:"remotePlayer",logger:r.log});o.connect(a),r.source=o,r.player.setCanvas(this.videoContext._canvas)}}catch(o){r.log.error(o),e.error(i==="webCodecs"?2:6)}}))}},bI={type:"object"},sf=class{constructor(r){this.core=r;E(this,"log");E(this,"contextMap",new Map);E(this,"decodeProcessorMap",new WeakMap);this.log=r.log.createChild({id:`${this.getAlias()}`})}getAlias(){return"videoDecoder"}getGroup(r){return`${r.track.userId}${r.track.streamType}`}getName(){return sf.Name}getValidateRule(r){return bI}start(r){this.decodeProcessorMap.set(r.track,this.decode(r)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:t})=>{var i;return((i=this.decodeProcessorMap.get(t))==null?void 0:i({frame:e,track:t}))||e},type:3})}decode(r){return({frame:e,track:t})=>{if(t!==r.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decode(e);let i=new hh(this.core,t,r);return gt(i.trackDoneOB,Po(1),zt(()=>{this.core.clearStarted(this,this.getGroup(r)),this.stop({track:t})})),this.contextMap.set(t,i),i.decode(e)}}stop(r){let e=this.contextMap.get(r.track);e&&(e.close("stop"),this.contextMap.delete(r.track)),this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}update(r){let e=this.contextMap.get(r.track);if(!!e){if(r.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(r.track,new hh(this.core,r.track,r))}}},ic=sf;E(ic,"Name","VideoDecoder");var NI=0,mh,af=class{constructor(r){this.core=r;E(this,"_core");E(this,"log");E(this,"dumpLocalVideoMap",{});E(this,"dumpRemoteVideoMap",{});E(this,"dialog");this._core=r,this.log=r.log.createChild({id:`${this.getAlias()}${++NI}`}),this.log.info("created")}getName(){return af.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(r){switch(r){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return N(this,null,function*(){!new URLSearchParams(location.search).has("trtcDebug")||(yield this.openDebugDiaLog(),this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED&&this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return N(this,null,function*(){try{if(mh)yield mh;else{let r=Date.now();mh=this.loadScript(`https://web.sdk.qcloud.com/trtc/webrtc/assets/debug/debug-dialog@${Bt}.js`),yield mh,this.log.info(`download debug dialog script cost: ${Date.now()-r}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(r){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(r))}})}closeDebugDiaLog(){var r;(r=this.dialog)==null||r.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):this.encodeVideoDump,type:2}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):this.decodeVideoDump,type:2})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:2}),this._core.room.videoManager.removeDecodeProcessor({type:2})}encodeVideo({frame:r,mediaType:e}){return this.encodeVideoDump({frame:r,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",i=this.dumpLocalVideoMap[t];i&&(i.data.push(r.data),i.duration>0&&Date.now()-i.startTimestamp>i.duration*1e3&&i.onDumpEnd())}})}decodeVideo({frame:r,track:e}){return this.decodeVideoDump({frame:r,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(r.data),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}encodeVideoDump({frame:r,onDump:e}){return e==null||e(),r}decodeVideoDump({frame:r,onDump:e}){return e==null||e(),r}loadScript(r){return new Promise((e,t)=>{this.log.info(`loading debug dialog from ${r}`);let i=document.createElement("script");i.type="text/javascript",i.onload=e,i.onerror=t,i.crossOrigin="anonymous",i.src=r,document.head.append?document.head.append(i):document.getElementsByTagName("head")[0].appendChild(i)})}},Fs=af;E(Fs,"Name","Debug"),E(Fs,"autoStart",!0),j([wr({settings:{timeout:3e3,retries:3},onError(n,r,e){var t;(t=n==null?void 0:n.message)!=null&&t.includes("timeout")?r():e(n)}})],Fs.prototype,"loadScript",1);var $g=n=>{switch(n){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},ph=class{constructor(r,e,t){E(this,"trackDoneOB");E(this,"startOB");E(this,"stopOB");E(this,"inputFrameCount",0);E(this,"decodedFrameCount",0);E(this,"type","auto");E(this,"config");E(this,"decoder");E(this,"_decodeSink");let{kvStatManager:i,trtc:o}=r;this.config=t.config,this.trackDoneOB=jt(e,Re.INIT),this.stopOB=Qr(this.trackDoneOB),this.startOB=Qr(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let a=Qr(),d=p=>{let _=this.pipe(e);return a.next("STARTING"),e.log.info(`decoder type: ${this.type}`),gt(_,mr(this.stopOB),zt(()=>{},S=>{e.log.error(S),i.addFailedEvent({key:$g(this.type),error:S}),p>4?this.startOB.error(S):this.startOB.next(p+1)})),gt(_,Po(1),Ql(Ga))};gt(this.startOB,Wa(0),Ns(d),mr(this.stopOB),zt(()=>{e.player.setOutput(),a.next("STARTED")},p=>{a.next("FAILED")},()=>{i.addSuccessEvent({key:$g(this.type)}),i.addSuccessEvent({key:504702})}))}mock(r){this._decodeSink?this._decodeSink.error(r):this.startOB.next(0)}close(r){this.stopOB.next(r)}pipe(r){return Oo()(e=>N(this,null,function*(){this._decodeSink=e,e.defer(()=>{var i;(i=this.decoder)==null||i.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:i=>{r.log.error(i),e.error(4)},output:i=>{this.decodedFrameCount++,e.next(i),r.player.write(i)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(i){r.log.error(i),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(r){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:r.data,timestamp:r.timestamp,type:"key"}))}},DI={type:"object"},fh=class{constructor(r){this.core=r;E(this,"log");E(this,"contextMap",new Map);E(this,"decodeProcessorMap",new WeakMap);this.log=r.log.createChild({id:`${this.getAlias()}`})}getAlias(){return fh.Name}getGroup(r){return r.track.userId+r.track.streamType}getName(){return fh.Name}getValidateRule(r){return DI}start(r){let{track:e}=r;this.decodeProcessorMap.set(e,this.decode(r)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:i})=>this.decodeProcessorMap.has(i)?this.decodeProcessorMap.get(i)({frame:t,track:i}):t,type:3})}decode(r){return({frame:e,track:t})=>{if(t!==r.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let i=new ph(this.core,t,r);return gt(i.trackDoneOB,Po(1),zt(()=>{this.core.clearStarted(this,this.getGroup(r)),this.stop({track:t})})),this.contextMap.set(t,i),i.decodeFrame(e)}}stop({track:r}){let e=this.contextMap.get(r);!e||(e.close("stop"),this.contextMap.delete(r),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(r){let e=this.contextMap.get(r.track);if(!!e){if(r.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(r.track,new ph(this.core,r.track,r))}}},nc=fh;E(nc,"Name","AudioDecoder");var Bg=0,_h=new Set,Zt=null;Vh(Ng);var wI={RtcError:fe,ErrorCode:Se,ErrorCodeDictionary:li},mi=class extends Hg.EventEmitter{constructor(e,t){super();E(this,"_room");E(this,"_eventListened",new Set);E(this,"_localVideoTrack",null);E(this,"_localAudioTrack",null);E(this,"_localScreenTrack",null);E(this,"_localScreenAudioTrack",null);E(this,"_localVideoConfig",null);E(this,"_localScreenConfig",null);E(this,"_localAudioConfig",null);E(this,"_remoteVideoConfigMap",new Map);E(this,"_remoteAudioConfigMap",new Map);E(this,"_remoteAudioVolumeMap",new Map);E(this,"_remoteAudioMuteMap",new Map);E(this,"_mediaTrackMap",new WeakMap);E(this,"_log",J.createLogger({id:`t${++Bg}`}));E(this,"_plugins",new Map);E(this,"_networkQuality",null);E(this,"_speakerId");E(this,"_getPCMAbortCtrl");this._room=new e(oe({logger:this._log,frameWorkType:mi.frameWorkType},t)),this._log.debug(`TRTC.create() ${JSON.stringify(t,(i,o)=>i==="plugins"?o.map(a=>a.Name):o)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(i){return this._room.audioManager.dump(i)}}}),t.plugins&&t.plugins.forEach(i=>{this._use(i,t.assetsPath)}),this._use(Lo,t.assetsPath),this._use(Ls,t.assetsPath),this._use(nc,t.assetsPath),this._use(ic,t.assetsPath),this._use(Fs),t.enableSEI&&jd&&this._use(tc),this._room.on("audio-volume",i=>{!i.find(o=>o.userId==="")&&this._localAudioTrack&&i.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),this.emit(me.AUDIO_VOLUME,{result:i.sort((o,a)=>a.volume-o.volume)})}),this._room.videoManager.on("error",i=>{this._log.error(new fe({code:Se.OPERATION_FAILED,extraCode:5504,message:i.message,originError:i}))}),this._listenEvents(),this._initActiveSpeaker(),Cg(this,"trtc")}static create(e){}static _create(e,t){pg();let i=new mi(e,t||{});return _h.add(i),i}get room(){return this._room}_listenEvents(){ur(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(me.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(me.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().then(()=>{this.emit(me.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().then(()=>{this.emit(me.ERROR,fe.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(me.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=_e(oe({},e),{uplinkRTT:Math.min(e.uplinkRTT,Sd),downlinkRTT:Math.min(e.downlinkRTT,Sd)});this.emit(me.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(i=>{ur(i,i).add("player-state-changed",o=>{let a=_e(oe({},o),{userId:e.userId});i.kind===b.VIDEO&&(a.streamType=hu(i.streamType)),this.emit(i.kind===b.AUDIO?me.AUDIO_PLAY_STATE_CHANGED:me.VIDEO_PLAY_STATE_CHANGED,a)}).add("error",o=>{o.getCode()===H.PLAY_NOT_ALLOWED&&this.emit(me.AUTOPLAY_FAILED,{userId:i.userId})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(i=>{kt(i)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:i}=t,o=e.audioAvailable,a=e.videoAvailable,{audioAvailable:d,videoAvailable:p}=t;d||this._remoteAudioConfigMap.delete(i),p||this._remoteVideoConfigMap.delete(`${i}_${"main"}`),t.hasAuxiliary||this._remoteVideoConfigMap.delete(`${i}_${"sub"}`),o!==d&&(this.emit(d?me.REMOTE_AUDIO_AVAILABLE:me.REMOTE_AUDIO_UNAVAILABLE,{userId:i}),d?this._onAudioAvailable({userId:i}):this._onAudioUnavailable({userId:i,muteState:t})),a!==p&&(this.emit(p?me.REMOTE_VIDEO_AVAILABLE:me.REMOTE_VIDEO_UNAVAILABLE,{userId:i,streamType:"main"}),p?this._onVideoAvailable({userId:i,streamType:"main"}):this._onVideoUnavailable({userId:i,streamType:"main"})),e.hasAuxiliary!==t.hasAuxiliary&&(this.emit(t.hasAuxiliary?me.REMOTE_VIDEO_AVAILABLE:me.REMOTE_VIDEO_UNAVAILABLE,{userId:i,streamType:"sub"}),t.hasAuxiliary?this._onVideoAvailable({userId:i,streamType:"sub"}):this._onVideoUnavailable({userId:i,streamType:"sub"}))}).add("sei-message",e=>{this.emit(me.SEI_MESSAGE,_e(oe({},e),{streamType:hu(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(me.ERROR,new fe({code:Se.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,a,d,p,_,S,v;let t={2:"big",3:"small",7:"sub"},i={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((a=this._networkQuality)==null?void 0:a.uplinkRTT)||((d=this._networkQuality)==null?void 0:d.downlinkRTT)||0,Sd),upLoss:((p=this._networkQuality)==null?void 0:p.uplinkLoss)||0,downLoss:((_=this._networkQuality)==null?void 0:_.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((S=e.msg_up_stream_info.msg_audio_status)==null?void 0:S.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((v=e.msg_up_stream_info.msg_audio_status)==null?void 0:v.uint32_audio_level)||0)/Ci},video:e.msg_up_stream_info.msg_video_status.filter(A=>t[A.uint32_video_stream_type]).map(A=>({bitrate:(A.uint32_video_codec_bitrate||0)/1e3,width:A.uint32_video_width,height:A.uint32_video_height,frameRate:A.uint32_video_enc_fps,videoType:t[A.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(A=>({userId:A.msg_user_info.str_identifier,audio:{bitrate:(A.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(A.msg_audio_status.uint32_audio_level||0)/Ci},video:A.msg_video_status.map(w=>({bitrate:(w.uint32_video_codec_bitrate||0)/1e3,width:w.uint32_video_width,height:w.uint32_video_height,frameRate:w.uint32_video_dec_fps,videoType:t[w.uint32_video_stream_type]}))}))};this.emit(me.STATISTICS,i)}).add("custom-message",e=>{this.emit(me.CUSTOM_MESSAGE,e)}),ur(this,Gt).add("audioInputAdded",e=>{this.emit(me.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(me.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(me.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(me.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>N(this,null,function*(){if(this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Zt&&Zt.deviceId===Td){let t=(yield Do()).find(i=>i.deviceId===Td);t&&Zt.groupId!==t.groupId&&(Zt=t,this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>N(this,null,function*(){this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield Do())[0];if(!t||!Zt||Zt.groupId===t.groupId)return;let i=Zt.deviceId===e.deviceId,o=Zt.deviceId===Td&&Zt.deviceId===t.deviceId;(i||o)&&(Zt=t,this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,i;"plugin"in e?(t=e.plugin,i=e.assetsPath):t=e,this._use(t,i||"https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/")}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Ag.call(this,{TRTC:mi,room:this._room,errorModule:wI,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return N(this,null,function*(){var p,_;let{scene:t="rtc",enableAutoPlayDialog:i=!0,autoReceiveAudio:o=!0,autoReceiveVideo:a=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Je(e.proxy)&&e.proxy.turnServer&&((_=(p=this._room).setTurnServer)==null||_.call(p,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=i,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=a,St(e.preferHW)&&(this._room.preferHW=e.preferHW);let d={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(d,t,mi.frameWorkType),this._checkTrackToPublish(),qp.start()})}exitRoom(){return N(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return N(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){kt(this),this.removeAllListeners(),this._room.destroy(),_h.delete(this),_h.size===0&&qp.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)})}startLocalAudio(){return N(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:i,option:o}=e,a=new lr(this._room.audioManager),d={},p={muted:!0};o&&(V(o.microphoneId)?V(o.audioTrack)||(d.customSource=o.audioTrack):d.deviceId=o.microphoneId,o&&qe(o.captureVolume)&&a.setCaptureVolume(o.captureVolume),V(o.profile)||(Je(o.profile)?$u[o.profile]&&a.setProfile($u[o.profile]):a.setProfile(o.profile)),qe(o.earMonitorVolume)&&(p.muted=!(o.earMonitorVolume>0),p.volume=o.earMonitorVolume),V(o.echoCancellation)||(a.profile.echoCancellation=o.echoCancellation),V(o.noiseSuppression)||(a.profile.noiseSuppression=o.noiseSuppression),V(o.autoGainControl)||(a.profile.autoGainControl=o.autoGainControl)),a.on("5",_=>{this.emit(me.ERROR,new fe({code:Se.DEVICE_ERROR,extraCode:5309,messageParams:{error:_}}))}),a.on("2",_=>{this.emit(me.DEVICE_CHANGED,{type:"microphone",action:"active",device:_})}),a.on("4",_=>{let S;_.error&&(S=fe.convertFrom(_.error)),this.emit(me.PUBLISH_STATE_CHANGED,_e(oe({},_),{error:S}))}),this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId),yield a.capture(d),V(i)||a.setMute(i),ur(a,a).add("player-state-changed",_=>{this.emit(me.AUDIO_PLAY_STATE_CHANGED,_e(oe({},_),{userId:""}))}),this.listeners(me.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(_=>{this.emit(mi.EVENT.AUDIO_FRAME,{data:_})})),this._getPCMAbortCtrl&&a.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(_=>{this.emit(mi.EVENT.AUDIO_FRAME,{data:_})}))}),t&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localAudioTrack=a,this._localAudioConfig=_e(oe({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:p,track:a})})}updateLocalAudio(e){return N(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:i,option:o}=e,a={};o&&(o.microphoneId?yield this._localAudioTrack.switchDevice(o.microphoneId):V(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),V(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),V(o.earMonitorVolume)||(a.muted=!(o.earMonitorVolume>0),a.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!V(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),V(i)||this._localAudioTrack.setMute(i),yield this._updateAudioPlayOption({playOption:a,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),zn(this._localAudioConfig,e)})}stopLocalAudio(){return N(this,null,function*(){!this._localAudioTrack||(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),kt(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return N(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:i=!0,mute:o,option:a}=e,d=new yt(this._room.videoManager),p={},_={};if(a&&(a.cameraId?p.deviceId=a.cameraId:V(a.useFrontCamera)?V(a.videoTrack)||(p.customSource=a.videoTrack):p.facingMode=a.useFrontCamera?b.FACING_MODE_USER:b.FACING_MODE_ENVIRONMENT,V(a.profile)||(Je(a.profile)?ni[a.profile]&&d.setProfile(ni[a.profile]):d.setProfile(a.profile)),V(a.fillMode)||(_.objectFit=a.fillMode),V(a.mirror)||(_.mirror=a.mirror),V(a.small)||(Hd()?Je(a.small)?d.small=ni[a.small]:a.small===!0?d.small=ni["120p"]:d.small=a.small:this._log.warn("small stream is not supported"))),d.on("5",S=>{this.emit(me.ERROR,new fe({code:Se.DEVICE_ERROR,extraCode:5308,messageParams:{error:S}}))}),d.on("2",S=>{this.emit(me.DEVICE_CHANGED,{type:"camera",action:"active",device:S})}),d.on("4",S=>{let v;S.error&&(v=fe.convertFrom(S.error)),this.emit(me.PUBLISH_STATE_CHANGED,_e(oe({},S),{error:v}))}),this._listenOutputTrackChanged(d),yield d.capture(p),V(o)||(yield d.setMute(o)),d.mediaTrack){if(a!=null&&a.qosPreference){let S=Ms(a.qosPreference);d.mediaTrack.contentHint=S}else a!=null&&a.videoTrack||(d.mediaTrack.contentHint=Ms(ui.QOS_PREFERENCE_SMOOTH));d.outMediaTrack&&(d.outMediaTrack.contentHint=d.mediaTrack.contentHint)}ur(d,d).add("player-state-changed",S=>{this.emit(me.VIDEO_PLAY_STATE_CHANGED,_e(oe({},S),{userId:"",streamType:"main"}))}),i&&this._room.isJoined&&this._room.publish(d).catch(()=>{}),this._localVideoTrack=d,this._localVideoConfig=_e(oe({},e),{view:t,publish:i}),yield this._updateVideoPlayOption({view:t,playOption:_,track:d})})}updateLocalVideo(e){return N(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:i,mute:o,option:a}=e,d={};if(a){if(V(a.profile)||(Je(a.profile)?ni[a.profile]&&this._localVideoTrack.setProfile(ni[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&V(a.useFrontCamera)&&this._localVideoTrack.applyProfile()),a.cameraId?yield this._localVideoTrack.switchDevice(a.cameraId):V(a.useFrontCamera)?V(a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a.videoTrack)):yield this._localVideoTrack.switchDevice(a.useFrontCamera?b.FACING_MODE_USER:b.FACING_MODE_ENVIRONMENT),V(a.fillMode)||(d.objectFit=a.fillMode),V(a.mirror)||(d.mirror=a.mirror),a.qosPreference&&this._localVideoTrack.mediaTrack){let p=Ms(a.qosPreference);this._localVideoTrack.mediaTrack.contentHint=p,this._localVideoTrack.outMediaTrack&&(this._localVideoTrack.outMediaTrack.contentHint=p)}if(a.small){let p=!this._localVideoTrack.small;Hd()?(a.small===!0?this._localVideoTrack.small=ni["120p"]:Je(a.small)?this._localVideoTrack.small=ni[a.small]:this._localVideoTrack.small=a.small,this._room.videoManager.update(),p&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else a.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1))}this._room.isJoined&&!V(i)&&(i&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!i&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),V(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:d,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),zn(this._localVideoConfig,e)})}stopLocalVideo(){return N(this,null,function*(){!this._localVideoTrack||(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),kt(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return N(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:i=!0,option:o}=e,a=new Xr(this._room.videoManager);a.on("4",v=>{let A;v.error&&(A=fe.convertFrom(v.error)),this.emit(me.PUBLISH_STATE_CHANGED,_e(oe({},v),{error:A}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let d=null,p={},_={};o&&(V(o.profile)||(Je(o.profile)?Bu[o.profile]&&a.setProfile(Bu[o.profile]):a.setProfile(o.profile)),o.systemAudio&&(p.systemAudio=!0,p.echoCancellation=o.echoCancellation,p.noiseSuppression=o.noiseSuppression,p.autoGainControl=o.autoGainControl),V(o.fillMode)||(_.objectFit=o.fillMode),o.videoTrack&&(p.videoTrack=o.videoTrack),o.audioTrack&&(p.audioTrack=o.audioTrack),o.captureElement&&(p.captureElement=o.captureElement),o.preferDisplaySurface&&(p.preferDisplaySurface=o.preferDisplaySurface));let S=yield a.capture(p);if(o!=null&&o.qosPreference){let v=Ms(o.qosPreference);a.mediaTrack.contentHint=v}else o!=null&&o.videoTrack||(a.mediaTrack.contentHint=Ms(ui.QOS_PREFERENCE_CLEAR));if(a.mediaTrack.addEventListener(b.ENDED,()=>{this._stopScreenShare(),this.emit(me.SCREEN_SHARE_STOPPED)}),S.getAudioTracks()[0]&&(d=new mn(this._room.audioManager),yield d.setInputMediaStreamTrack(S.getAudioTracks()[0]),this._speakerId&&d.setAudioOutput(this._speakerId)),ur(a,a).add("player-state-changed",v=>{this.emit(me.VIDEO_PLAY_STATE_CHANGED,_e(oe({},v),{userId:"",streamType:"sub"}))}),i&&this._room.isJoined){let v=[a];d&&v.push(d),this._room.publish(...v).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=d,this._localScreenConfig=_e(oe({},e),{view:t,publish:i}),yield this._updateVideoPlayOption({view:t,playOption:_,track:a})})}updateScreenShare(e){return N(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:i,option:o}=e,a={};if(o&&(V(o.fillMode)||(a.objectFit=o.fillMode),o.qosPreference)){let d=Ms(o.qosPreference);this._localScreenTrack.mediaTrack.contentHint=d}this._room.isJoined&&!V(i)&&(i&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!i&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),zn(this._localScreenConfig,e)})}stopScreenShare(){return N(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return N(this,null,function*(){let{view:t,userId:i,streamType:o,option:a}=e,d=`${i}_${o}`;if(this._remoteVideoConfigMap.has(d)){this._log.warn(`remote video has already started. userId:${i}, streamType:${o}`);return}let p=this._room.remotePublishedUserMap.get(i);if(!p)return;let _={},S=o==="main"?p.remoteVideoTrack:p.remoteAuxiliaryTrack;this._listenOutputTrackChanged(S),a&&(V(a.fillMode)||(_.objectFit=a.fillMode),V(a.mirror)||(_.mirror=a.mirror),_.canvasRender=a.canvasRender,o==="main"&&!V(a.small)&&(p.remoteVideoTrack.setMediaType(a.small?8:4),this._room.changeType(a.small,S.user)));let v="wasm";v&&(this._log.info("remote video will fall back when decode failed"),gt(jt(S,"decode-failed"),mr(jt(S,Re.INIT)),zt(()=>{this.startPlugin(ic.Name,{type:"auto",renderer:"videoFrame",track:S,config:{codec:"avc1.420028"},fallback:v})},A=>{this._log.error("fallback",A)},()=>this._log.info("fallback complete")))),yield this._room.subscribe(S),yield this._updateVideoPlayOption({view:t,playOption:_,track:S}),this._emitTrackEvent(S),this._remoteVideoConfigMap.set(d,{config:e}),a&&!V(a.receiveWhenViewVisible)&&this._observeView({remoteTrack:S,view:t,receiveWhenViewVisible:a.receiveWhenViewVisible,viewRoot:a==null?void 0:a.viewRoot})})}updateRemoteVideo(e){return N(this,null,function*(){var W,ie;let{view:t,userId:i,streamType:o,option:a}=e,d=`${i}_${o}`,p=this._remoteVideoConfigMap.get(d);if(!p||!this._room.remotePublishedUserMap.has(i))return;let _={};a&&(V(a.fillMode)||(_.objectFit=a.fillMode),V(a.mirror)||(_.mirror=a.mirror));let S=null,v=this._room.remotePublishedUserMap.get(i);if(o==="main"&&(v==null?void 0:v.muteState.hasVideo)&&(S=v.remoteVideoTrack),o==="sub"&&(v==null?void 0:v.muteState.hasAuxiliary)&&(S=v.remoteAuxiliaryTrack),!S)return;let{config:A}=p;o==="main"&&a&&!V(a.small)&&this._room.changeType(a.small,S.user),yield this._updateVideoPlayOption({view:t,playOption:_,track:S,prevConfig:A}),zn(A,e);let w=V(a==null?void 0:a.receiveWhenViewVisible)?(W=A.option)==null?void 0:W.receiveWhenViewVisible:a.receiveWhenViewVisible,M=V(t)?A.view:t,L=V(a==null?void 0:a.viewRoot)?(ie=A.option)==null?void 0:ie.viewRoot:a.viewRoot;this._observeView({remoteTrack:S,view:M,receiveWhenViewVisible:w,viewRoot:L})})}stopRemoteVideo(e){return N(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return N(this,null,function*(){let i=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:d,remoteVideoTrack:p,remoteAuxiliaryTrack:_}=o;e.streamType==="main"&&(p.stop(),d.hasVideo&&i.push(p)),e.streamType==="sub"&&(_.stop(),d.hasAuxiliary&&i.push(_))}for(let d of i)t&&(yield this._room.unsubscribe(d),this._mediaTrackMap.get(d.outMediaTrack)===d.userId&&this._mediaTrackMap.delete(d.outMediaTrack));let a=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);a&&a.observer&&a.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,t){return N(this,null,function*(){if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let i=[...this._room.remotePublishedUserMap.values()];for(let o of i)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}));this._remoteAudioMuteMap.set(e,t)})}setRemoteAudioVolume(e,t){if(e==="*"){let i=[...this._room.remotePublishedUserMap.values()];for(let o of i)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.remoteAudioTrack})}else if(e){let i=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),i&&i.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:i.remoteAudioTrack})}}startPlugin(e,t){return N(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return N(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return N(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,i){return this.listeners(e).includes(t)?this:(this._log.debug("on",e),super.on(e,t,i),this._eventListened.add(e),e===mi.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(mi.EVENT.AUDIO_FRAME,{data:o})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(mi.EVENT.AUDIO_FRAME,{data:o})}))})),this)}emit(e,...t){try{yg.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(i){}return super.emit(e,...t)}off(e,t,i){var o,a;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(o=this._getPCMAbortCtrl)==null||o.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,t,i),e===mi.EVENT.AUDIO_FRAME&&((a=this._getPCMAbortCtrl)==null||a.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let t,i=null,o="main",a=!1;if(Je(e)?t=e:(t=e.userId,a=e.processed===!0,e.streamType&&(o=e.streamType)),t){let d=this._room.remotePublishedUserMap.get(t);d&&(i=d.remoteAudioTrack)}else i=o==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return i?a&&i.outMediaTrack&&i.outMediaTrack!==i.mediaTrack?i.outMediaTrack.clone():i.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:i="main",processed:o=!1}=e,a=null;if(t==="")i==="main"&&this._localVideoTrack&&(a=this._localVideoTrack),i==="sub"&&this._localScreenTrack&&(a=this._localScreenTrack);else{let d=this._room.remotePublishedUserMap.get(t);d&&(a=i==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack)}return a?o&&a.outMediaTrack&&a.outMediaTrack!==a.mediaTrack?a.outMediaTrack.clone():a.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:i="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(i==="main"&&(o==null?void 0:o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(i==="sub"&&(o==null?void 0:o.muteState.hasAuxiliary))return o.remoteAuxiliaryTrack.getVideoFrame()}else{if(i==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(i==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,i;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(i=this._localScreenAudioTrack)==null||i.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return N(this,null,function*(){(yield Do()).forEach(i=>{i.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:i}),Zt=i)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return N(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let i=this._room.remotePublishedUserMap.get(t);if(!i)return;let o={},a=i.remoteAudioTrack;this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId);try{let d=this._remoteAudioVolumeMap.get(t),p=qe(d)?d:100;o.volume=p,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(a),gt(jt(a,"decode-failed"),mr(jt(a,Re.INIT)),zt(()=>{this.startPlugin(nc.Name,{track:a,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:a})}catch(d){throw this._remoteAudioConfigMap.delete(t),d}this._emitTrackEvent(a)})}_stopRemoteAudio(e,t=!0){return N(this,null,function*(){let i=this._room.remotePublishedUserMap.get(e.userId);i&&(i.remoteAudioTrack.stop(),i.muteState.hasAudio&&t&&(yield this._room.unsubscribe(i.remoteAudioTrack)),this._mediaTrackMap.get(i.remoteAudioTrack.outMediaTrack)===e.userId&&this._mediaTrackMap.delete(i.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_updateVideoPlayOption(a){return N(this,arguments,function*({view:e,playOption:t,track:i,prevConfig:o}){if(i.setMirror(t.mirror),V(e)&&o&&o.view&&!Em(t)){let d=Ud(o.view);d.length>0&&(yield i.play(d,t))}if(!V(e)){let d=Ud(e);d.length>0?yield i.play(d,t):i.stop()}})}_updateAudioPlayOption(o){return N(this,arguments,function*({playOption:e={},track:t,prevConfig:i}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(a){}V(e.muted)||t.setPlayerMute(e.muted),V(e.volume)||t.setAudioVolume(e.volume/100)})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let i=e.isRemote?e.userId:"";!e.outMediaTrack||t&&this._mediaTrackMap.get(e.outMediaTrack)===i||(this._mediaTrackMap.set(e.outMediaTrack,i),this.emit(me.TRACK,{userId:i,streamType:hu(e.streamType),track:e.outMediaTrack}))}_checkTrackToPublish(){var t,i,o;let e=[];if(((t=this._localAudioConfig)==null?void 0:t.publish)&&this._localAudioTrack&&e.push(this._localAudioTrack),((i=this._localVideoConfig)==null?void 0:i.publish)&&this._localVideoTrack&&e.push(this._localVideoTrack),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:i=!1,viewRoot:o}){if(V(t))return;let a=this._remoteVideoConfigMap.get(`${e.userId}_${hu(e.streamType)}`);if(!a)return;let d=a.observer||void 0;if(t===null||Dt(t)&&t.length===0||!i){d==null||d.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let _=a.visibleViewMap||new Map,S=-1;(!d||d.root!==o)&&(d==null||d.disconnect(),_.clear(),d=new IntersectionObserver(A=>{A.forEach(w=>{_.set(w.target,w.isIntersecting)}),clearTimeout(S),S=window.setTimeout(()=>{[..._.values()].find(M=>M)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let v=new Set(Ud(t));_.forEach((A,w)=>{v.has(w)||(d.unobserve(w),_.delete(w))}),v.forEach(A=>{_.set(A,!0),d.observe(A)}),d.takeRecords().forEach(A=>{_.set(A.target,A.isIntersecting)}),a.visibleViewMap=_,a.observer=d}_exitRoom(){return N(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",i=e.split(`_${t}`)[0];i&&this._stopRemoteVideo({userId:i,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),Rg(this),this._room.remotePublishedUserMap.forEach(e=>{kt(e.remoteAudioTrack),kt(e.remoteVideoTrack),kt(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return N(this,null,function*(){var e;if(!!this._localScreenTrack){if(this._room.isJoined){let t=[this._localScreenTrack];this._localScreenAudioTrack&&t.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...t).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),kt(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_initActiveSpeaker(){return N(this,null,function*(){if(Zt&&!$a(Zt))this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:Zt});else{let e=yield Do();if(e[0]&&!$a(e[0]))Zt=e[0],this.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]});else{let t=({track:i})=>{i.kind==="audio"&&(!Zt||$a(Zt))&&(this._initActiveSpeaker(),B.off("102",this._initActiveSpeaker))};B.on("102",t)}}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let i=this._room.remotePublishedUserMap.get(e);if(i){let o=t==="main"?i.remoteVideoTrack:i.remoteAuxiliaryTrack;this._room.subscribe(o).then(()=>{this._emitTrackEvent(o)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var o;let i=this._plugins.get("SEI");i&&(i.update({buffer:e,options:_e(oe({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),Z.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,i;(i=(t=this._room).sendCustomMessage)==null||i.call(t,e),Z.addCount({key:500001,useUV:!0})}static setLogLevel(e,t){J.setLogLevel(e),V(t)||(t?J.enableUploadLog():J.disableUploadLog())}static isSupported(){return vl()}static getCameraList(e=!0){return Jr(e)}static getMicrophoneList(e=!0){return Or(e)}static getSpeakerList(e=!0){return Do(e)}static setCurrentSpeaker(e){return N(this,null,function*(){(yield Do()).forEach(i=>{i.deviceId===e&&(_h.forEach(o=>{o._setCurrentSpeaker(e),o.emit(me.DEVICE_CHANGED,{type:"speaker",action:"active",device:i})}),Zt=i)})})}static _addKVStat({type:e,key:t,value:i,base:o,useUV:a,version:d}){switch(d&&(vs.version=d),e){case"count":vs.addCount({key:t,useUV:a});break;case"enum":vs.addEnum({key:t,value:i,useUV:a});break;case"number":vs.addNumber({key:t,value:i,split:o});break}}},$e=mi;E($e,"_loggerManager",J),E($e,"EVENT",me),E($e,"ERROR_CODE",Se),E($e,"TYPE",ui),E($e,"frameWorkType",30),j([ht({replaceArg:n=>({argIndex:0,value:{name:"plugin"in n?n.plugin.Name:n.Name,assetsPath:"assetsPath"in n?n==null?void 0:n.assetsPath:"default"}})})],$e.prototype,"use",1),j([fr(Kt.TRTC.enterRoom),xo("room",([n],[r])=>(n.roomId||n.strRoomId)===(r.roomId||r.strRoomId)&&n.userId===r.userId&&n.sdkAppId===r.sdkAppId),ke(n=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),n.call(this,r)}),ht()],$e.prototype,"enterRoom",1),j([ht()],$e.prototype,"exitRoom",1),j([fr(Kt.TRTC.switchRole),xs("room",{merge:(n,r)=>r}),ht()],$e.prototype,"switchRole",1),j([ht()],$e.prototype,"destroy",1),j([fr(Kt.TRTC.startLocalAudio),xo("audio",([n],[r])=>{var e,t;return((e=n==null?void 0:n.option)==null?void 0:e.microphoneId)===((t=r==null?void 0:r.option)==null?void 0:t.microphoneId)}),ht()],$e.prototype,"startLocalAudio",1),j([fr(Kt.TRTC.updateLocalAudio),xs("audio",{debounce:{delay:200,getKey:()=>`${Bg}-localAudio`,isNeedToDebounce:n=>{var r;return!V((r=n.option)==null?void 0:r.captureVolume)}}}),ht()],$e.prototype,"updateLocalAudio",1),j([Mo("audio"),ht()],$e.prototype,"stopLocalAudio",1),j([fr(Kt.TRTC.startLocalVideo),xo("video",([n],[r])=>{var e,t;return((e=n==null?void 0:n.option)==null?void 0:e.cameraId)===((t=r==null?void 0:r.option)==null?void 0:t.cameraId)}),ht()],$e.prototype,"startLocalVideo",1),j([fr(Kt.TRTC.updateLocalVideo),xs("video"),ht()],$e.prototype,"updateLocalVideo",1),j([Mo("video"),ht()],$e.prototype,"stopLocalVideo",1),j([fr(Kt.TRTC.startScreenShare),xo("screen",()=>!0),ht()],$e.prototype,"startScreenShare",1),j([fr(Kt.TRTC.updateScreenShare),xs("screen"),ht()],$e.prototype,"updateScreenShare",1),j([ht()],$e.prototype,"stopScreenShare",1),j([fr(Kt.TRTC.startRemoteVideo),xo(n=>`v${n.userId}${n.streamType}`,()=>!0),ht({getRemoteId:n=>`${n.userId}_${n.streamType}`})],$e.prototype,"startRemoteVideo",1),j([fr(Kt.TRTC.updateRemoteVideo),xs(n=>`v${n.userId}${n.streamType}`),ht({getRemoteId:n=>`${n.userId}_${n.streamType}`})],$e.prototype,"updateRemoteVideo",1),j([fr(Kt.TRTC.stopRemoteVideo),ke(n=>function(r){return N(this,null,function*(){if(r.userId==="*"){let e=[];return this._room.remotePublishedUserMap.forEach(t=>{this._remoteVideoConfigMap.has(`${t.userId}_${"main"}`)&&e.push(this.stopRemoteVideo({streamType:"main",userId:t.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${t.userId}_${"sub"}`)&&e.push(this.stopRemoteVideo({streamType:"sub",userId:t.userId}).catch(()=>{}))}),Promise.all(e)}return n.call(this,r)})}),ht({getRemoteId:n=>`${n.userId}_${n.streamType}`})],$e.prototype,"stopRemoteVideo",1),j([Mo(n=>`v${n.userId}${n.streamType}`)],$e.prototype,"_stopRemoteVideo",1),j([fr(...Kt.TRTC.muteRemoteAudio),ht({getRemoteId:n=>n})],$e.prototype,"muteRemoteAudio",1),j([Gp(...Kt.TRTC.setRemoteAudioVolume),bg(200,n=>n),ht({getRemoteId:n=>n})],$e.prototype,"setRemoteAudioVolume",1),j([ah("start"),Li(n=>{var r;return(r=n.afterStart)==null?void 0:r.call(n)}),xo((n,r)=>n.disableRandomCall?null:n.getAlias()+n.getGroup(r)),ht({replaceArg:n=>({argIndex:0,value:n.getName()}),getKVReportKey:n=>Nm[n.getName()],ignoreLog:n=>n.getName()==="Debug"})],$e.prototype,"startPlugin",1),j([ah("update"),xs((n,r)=>n.disableRandomCall?null:n.getAlias()+n.getGroup(r)),ht({replaceArg:n=>({argIndex:0,value:n.getName()}),getKVReportKey:n=>Dm[n.getName()]})],$e.prototype,"updatePlugin",1),j([ah("stop"),Mo((n,r)=>{if(n.disableRandomCall)return null;let e=n.getGroup(r),t=n.getAlias();return e==="*"?new RegExp(`${t}.*`):t+e}),ht({replaceArg:n=>({argIndex:0,value:n.getName()}),getKVReportKey:n=>wm[n.getName()]})],$e.prototype,"stopPlugin",1),j([Gp(...Kt.TRTC.enableAudioVolumeEvaluation)],$e.prototype,"enableAudioVolumeEvaluation",1),j([ht()],$e.prototype,"getVideoSnapshot",1),j([ht()],$e.prototype,"_setCurrentSpeaker",1),j([xo(n=>`a${n.userId}`,()=>!0)],$e.prototype,"_startRemoteAudio",1),j([ke(n=>function(r){return N(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(e=>this._stopRemoteAudio(_e(oe({},r),{userId:e.userId})).catch(()=>{}))):n.call(this,r)})}),Mo(n=>`a${n.userId}`)],$e.prototype,"_stopRemoteAudio",1),j([Mo("room")],$e.prototype,"_exitRoom",1),j([Mo("screen")],$e.prototype,"_stopScreenShare",1),j([fr(...Kt.TRTC.sendSEIMessage),Wp({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...n)=>n[0].byteLength})],$e.prototype,"sendSEIMessage",1),j([fr(Kt.TRTC.sendCustomMessage),Wp({timesInSecond:30,maxSizeInSecond:8e3,getSize:n=>n.data.byteLength})],$e.prototype,"sendCustomMessage",1),j([fr(Kt.TRTC.create)],$e,"_create",1);var Su=$e;var cf=class{constructor(){this._set=new Set;B.on(U.LEAVE_SUCCESS,this.delete,this)}add({room:r,roomId:e}){if(r.scene==="rtc")return;let t=this.getKey(r.userId,e||r.roomId,r.sdkAppId,r.useStringRoomId);this._set.add(t)}delete({room:r,roomId:e}){if(r.scene==="rtc")return;let t=this.getKey(r.userId,r.roomId||e,r.sdkAppId,r.useStringRoomId);this._set.delete(t)}getKey(r,e,t,i){return`${t}_${e}_${r}_${i}`}isJoined({userId:r,roomId:e,sdkAppId:t,room:i}){return i.scene==="rtc"?!1:this._set.has(this.getKey(r,e,t,i.useStringRoomId))}};function kI(){return N(this,null,function*(){let n,r;try{let v=yield Or();n=v&&v.length}catch(v){}try{let v=yield Jr();r=v&&v.length}catch(v){}let e={microphone:n,camera:r},{isH264EncodeSupported:t,isVp8EncodeSupported:i,isH264DecodeSupported:o,isVp8DecodeSupported:a}=this.checkSystemResult.detail,d=sn.basis(),p={webRTC:d.isWebRTCSupported,getUserMedia:d.isGetUserMediaSupported,webSocket:d.isWebSocketsSupported,screenShare:d.isScreenShareSupported,webAudio:d.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:i,vp8Decode:a},_={browser:d.browser,os:d.os,trtc:p,devices:e},S={isWebCodecSupported:d.isWebCodecSupported,isMediaSessionSupported:d.isMediaSessionSupported,isWebTransportSupported:d.isWebTransportSupported};je.uploadEvent({log:`trtcstats-${JSON.stringify(_)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(_)}`),je.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(S)}`,userId:this.userId})})}function Wg(){return ke(n=>{let r=new cf;return function(e,t,i){return N(this,null,function*(){let o=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.INVALID_JOIN})});if(this.checkDestroy(),r.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.REPEAT_JOIN,data:this.userId})});r.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),B.emit(U.JOIN_START,{room:this,roomId:o,params:e});let a=yr.getEnv();a||(a=Ln.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Hu.OLD_CLOUD_LADDER)?a=Ln.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Hu.WEBRTC)&&(a=Ln.WEBRTC))),je.setConfig({env:a,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),sn.checkSystemRequirementsInternal().then(d=>{this.checkSystemResult=d,kI.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!yr.getEnv()&&(yield this.schedule(e,i));let d=yield n.call(this,e,t,i);return this.roomId=o,this._joinedTimestamp=yr.performanceNow(),B.emit(U.JOIN_SUCCESS,{room:this}),i===30&&!e.component&&je.uploadEvent({log:`stat-conv-${Number(Hn)}-${location.hostname}`,userId:this.userId}),d}catch(d){throw r.delete({room:this,roomId:o}),B.emit(U.JOIN_FAILED,{room:this,error:d}),d}})}})}var Gg=()=>ke(n=>function(...r){return N(this,null,function*(){B.emit(U.LEAVE_START,{room:this}),yield n.call(this),B.emit(U.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function jg(){return ke(n=>function(...r){let e=n.apply(this,r);return r.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Jg=$t(nr());var At={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Ui={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140},zg=[Ui.UPDATE_REMOTE_MUTE_STAT,Ui.UPLINK_NETWORK_STATS,Ui.USER_LIST_RES,Ui.MUTE_RESULT,Ui.SERVER_FIRST_PACKAGE_RECEIVED,Ui.RECEIVE_CUSTOM_MSG],ye={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg"},Oe={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg"};var gh=new Set;function qg(n){let r=[...gh.values()].find(e=>e.room.userId===n&&!e.room.isJoined);return r||null}var oc=class extends Jg.default{constructor(e){var i,o;super();E(this,"room");E(this,"url");E(this,"backupUrl");E(this,"race");E(this,"destroyed",!1);E(this,"_socketInUse");E(this,"_socket");E(this,"_backupSocket");E(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});E(this,"_currentState","DISCONNECTED");E(this,"_isReconnecting",!1);E(this,"_seq",0);E(this,"_log");E(this,"_lastMessageTime",-1);E(this,"_connnectStartTime",-1);E(this,"_stopConnectRetry");E(this,"bytesSent",0);E(this,"bytesReceived",0);E(this,"keepAlive",!1);E(this,"signalDomainWhenUnifiedProxy");E(this,"stopKeepAliveTimeout");E(this,"rtt",0);this.room=e.room,this.race=V(e.race)?!0:e.race,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy,(((o=(i=this.room.scheduleResult)==null?void 0:i.config)==null?void 0:o.keepAliveClient)||0)-gh.size>0&&this.room.enableSPC&&(this.keepAlive=!0,gh.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=J.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get sdkAppId(){return this.room.sdkAppId}get userId(){return this.room.userId}get userSig(){return this.room.userSig}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return N(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}]${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connnectStartTime=ge();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield Pd(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?b.BACKUP:b.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:i}){let o=new WebSocket(e);this.bindSocket(o),i?this._socket=o:this._backupSocket=o;let a=-1;return new Promise((d,p)=>{o.onclose=p,o.onerror=p,o.onopen=()=>d(o),t&&(a=setTimeout(()=>{this.unbindAndCloseSocket(i?b.MAIN:b.BACKUP),p(new Y({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.onopen=null,clearTimeout(a)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===b.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(At.SETUP_FAILED,new Y({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(b.MAIN),this.unbindAndCloseSocket(b.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(At.SETUP_FAILED,new Y({code:H.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=pl(e.data);let t=JSON.parse(e.data),{cmd:i,data:o}=t,a=Object.values(Ui),p=Object.keys(Ui)[a.indexOf(i)],_=ye[p]||i;switch(zg.includes(i)||(this._log.debug(`received ${i} msg: ${e.data}`),_&&this._log.info(`Received event: [ ${_} ]`)),i){case Ui.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&Ff(o.svrTime),this._log.info(`ChannelSetup Success ${ge()-this._connnectStartTime}`),Z.addSuccessEvent({key:521701,cost:ge()-this._connnectStartTime}),this._connnectStartTime=-1,this.emit(At.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let S=new Y({code:H.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:Te({key:Ee.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),Z.addFailedEvent({key:521701,error:S}),this.emit(At.SETUP_FAILED,S)}break}case Ui.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.relayPort=o.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=o.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(_,{data:t});break}default:this.emit(String(_),{data:t});break}}reGetSignalChannelUrl(){return N(this,null,function*(){try{if(!this.room.joinParams)return;tn(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?b.MAIN:b.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return N(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:i,relayInnerIp:o,relayPort:a}=this._signalInfo,{data:d}=yield this.sendWaitForResponse({command:Oe.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:i,relayPort:a},responseCommand:ye.CHANNEL_RECONNECT_RESULT});d.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),Z.addSuccessEvent({key:521702,cost:ge()-this._connnectStartTime}),this._connnectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(Z.addFailedEvent({key:521702,error:d.code}),this._log.warn(`reconnect failed, ${d.code} ${d.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let i={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},o=JSON.stringify(i);return this._socketInUse.send(o),this.bytesSent+=pl(o),i.seq}}sendWaitForResponse({command:e,data:t,timeout:i=5e3,responseCommand:o,commandDesc:a,enableLog:d=!0,addReceiveTime:p=!1}){return new Promise((_,S)=>{let v=setTimeout(()=>{this.off(o,w);let L=new Y({code:H.API_CALL_TIMEOUT,message:Te({key:Ee.API_CALL_TIMEOUT,data:{commandDesc:a,command:e}})});d&&this._log.warn(L),S(L)},i),A=Date.now(),w=L=>{L.data.seq===M&&(clearTimeout(v),this.off(o,w),p&&(L.data.receiveTime=Date.now()),_(L))};this.on(o,w);let M=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:i,retries:o=0,retryTimeout:a=0}=e;return Ki({retryFunction:this.sendWaitForResponse,onError:({retry:d})=>{this.isOnline?d():(this._log.warn(`retry ${i} when connected`),this.once(At.CONNECTED,d))},onRetrying:d=>{this._log.warn(`${t||i} timeout observed, retrying [${d}/${o}]`)},settings:{retries:o,timeout:a},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),gh.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(b.MAIN),this.unbindAndCloseSocket(b.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(ye.JOIN_ROOM_RESULT,t)},e*1e3);let t=i=>{i.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(ye.JOIN_ROOM_RESULT,t))};this.on(ye.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(At.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(At.CONNECTED):e==="DISCONNECTED"&&this.emit(At.DISCONNECTED))}};j([wr({settings:{retries:1/0,timeout:2e3},onError(n,r){!this.room.isDestroyed&&!this.destroyed&&r()},onRetrying(n,r){this._log.warn(`retrying to connect ${n}`),n>=3&&n%3===0&&this.reGetSignalChannelUrl(),r&&(this._stopConnectRetry=r,(this.room.isDestroyed||this.destroyed)&&r())}})],oc.prototype,"connect",1);var Xg=$t(nr());var df=0,uf=!1,Eh=new Set,PI=n=>df>2&&!uf&&Eh.size===0&&n,lf=!1,Cr=class{constructor(r){E(this,"userId");E(this,"tinyId");E(this,"_sdpSemantics");E(this,"_isUplink");E(this,"_room");E(this,"_log");E(this,"_signalChannel");E(this,"_isErrorObserved",!1);E(this,"_waitForPeerConnectionConnectedPromise");E(this,"_waitForPeerConnectionConnectedPromiseReject",null);E(this,"_peerConnection",null);E(this,"_emitter",new Xg.default);E(this,"_currentState","DISCONNECTED");E(this,"_isReconnecting",!1);E(this,"_reconnectionCount",0);E(this,"_reconnectionTimer",-1);E(this,"_isFirstConnection",!0);E(this,"_prevTime",-1);E(this,"_localAddress");E(this,"_remoteAddress");this.userId=r.userId,this.tinyId=r.tinyId,this._room=r.room,this._sdpSemantics=r.room.sdpSemantics,this._isUplink=r.isUplink,this._log=J.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=r.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=ge())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,Z.addSuccessEvent({key:521705,cost:Math.min(ge()-this._prevTime,30*1e3)})):this._isReconnecting&&Z.addSuccessEvent({key:521706,cost:ge()-this._prevTime}),this._prevTime=-1}catch(r){throw this._isFirstConnection?(this._isFirstConnection=!1,Z.addFailedEvent({key:521705,error:r})):this._isReconnecting&&this._reconnectionCount>=3&&Z.addFailedEvent({key:521706,error:r}),r}}initialize(){let r={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(r),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(r){this._log.info("close connection"),this._emitter.emit("closed",r),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Eh.delete(this)}closePeerConnection(r=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,r&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new Y({code:H.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Ai;let r=null;if(this._isUplink){if(!No()||this._peerConnection.getSenders().length===0)return Ai;r=this._peerConnection.getSenders()[0].transport}else{if(!As()||this._peerConnection.getReceivers().length===0)return Ai;r=this._peerConnection.getReceivers()[0].transport}return r?r.state:Ai}onConnectionStateChange(r){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${r.target.connectionState}, ICE: ${e}, DTLS: ${t}`),r.target.connectionState===lt.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),r.target.connectionState===lt.FAILED||r.target.connectionState===lt.CLOSED){let i=`connection ${r.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new Y({message:i,code:H.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(r.target.connectionState===lt.CONNECTED||r.target.connectionState===lt.COMPLETED)&&(this.logSelectedCandidate(),je.logSuccessEvent({userId:this._room.userId,eventType:br.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(r){return r===this._currentState?!1:(r==="CONNECTED"?(df=0,uf=!1,lf=!0,Eh.add(this)):Eh.delete(this),B.emit(U.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:r,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:r}),this._currentState=r,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return N(this,null,function*(){if(!this._peerConnection)return;let r=yield this._peerConnection.getStats();for(let[,e]of r)if(bo(e)){let t=r.get(e.localCandidateId),i=r.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),i&&(this._log.info(`remote candidate: ${i.candidateType} ${i.protocol}:${i.ip||i.address}:${i.port}`),this._remoteAddress=`${i.protocol}:${i.ip||i.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((r,e)=>{if(this._currentState==="CONNECTED")return r();this._waitForPeerConnectionConnectedPromiseReject=e;let t=d=>{d.state==="CONNECTED"&&(clearTimeout(a),o(),r())},i=({room:d})=>{d===this._room&&(clearTimeout(a),o(),e(new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{B.off(U.LEAVE_SUCCESS,i,this),this._emitter.off("connection-state-changed",t,this)},a=setTimeout(()=>{o();let d=new Y({code:H.API_CALL_TIMEOUT,message:"connection timeout"});df+=1,PI(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),uf=!0,this._emitter.emit("firewall-restriction")),e(d)},Ed);B.on(U.LEAVE_SUCCESS,i,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(At.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Un()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let r=new Y({code:this._isUplink?H.UPLINK_RECONNECTION_FAILED:H.DOWNLINK_RECONNECTION_FAILED,message:Te({key:this._isUplink?Ee.UPLINK_RECONNECTION_FAILED:Ee.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",r),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(At.CONNECTED,this.reconnect,this),-1)}on(r,e,t){this._emitter.on(r,e,t)}off(r,e,t){this._emitter.off(r,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var r,e;return!!((e=(r=this._peerConnection)==null?void 0:r.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(r){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(r)}setAnswer(r){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(r)}};j([Pr(521712,!1)],Cr.prototype,"setOffer",1),j([Pr(521713,!1)],Cr.prototype,"setAnswer",1);var ff=$t(pf());var Et=function(n){return ff.default.parse(n)},pi=function(n){return ff.default.write(n)},iE=function(n){let r=Et(n);return r.media.forEach(e=>{e.type===b.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),pi(r)};function nE(n){let r=Et(n);return r.media.forEach(e=>{var t,i;if(e.type===b.VIDEO){let o=new Set;e.rtp.forEach(({payload:d,codec:p})=>p==="H264"&&o.add(d)),e.fmtp.forEach(({payload:d,config:p})=>{let _=p.match(/apt=(\d+)/);_&&_[1]&&o.has(Number(_[1]))&&o.add(d)});let a=({payload:d})=>!o.has(d);e.rtp=e.rtp.filter(a),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(a),e.fmtp=e.fmtp.filter(a),e.payloads=(i=e.payloads)==null?void 0:i.split(" ").filter(d=>!o.has(Number(d))).join(" ")}}),pi(r)}function Th(n){return Object.keys(n).filter(r=>n[r])}var gf=class extends Cr{constructor(e){super(_e(oe({},e),{isUplink:!1}));E(this,"_flag",0);E(this,"isRobot",!1);E(this,"role","anchor");E(this,"remoteAudioTrack");E(this,"remoteVideoTrack");E(this,"remoteAuxiliaryTrack");E(this,"ssrc",{audio:0,video:0,auxiliary:0});E(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new ro(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new di(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new qa(this._room,this)}get videoCodec(){var t,i;let e=(i=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:i.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return Co(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,i,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(i=this.remoteVideoTrack)==null||i.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===b.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,a;let t=this._currentState,i=super.emitConnectionStateChangedEvent(e);return i&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(a=this.remoteAuxiliaryTrack)==null||a.emit("connection-state-changed",{prevState:t,state:e})),i}onTrack(e){let t=e.streams[0],{track:i}=e,o=t.id===gd?b.MAIN:b.AUXILIARY;this._log.debug(`ontrack ${o} ${i.kind}`);let a=b.AUDIO;i.kind===b.VIDEO&&(a=o===b.MAIN?b.VIDEO:b.AUXILIARY);let d=this.remoteAudioTrack;a===b.VIDEO?d=this.remoteVideoTrack:a===b.AUXILIARY&&(d=this.remoteAuxiliaryTrack),d.setInputMediaStreamTrack(i)}addRRTRLine(e){let t=e.split(`\r
144
+ `),i=new Map;t.forEach((a,d)=>{/^a=rtcp-fb:/.test(a)&&t[d+1]&&!/^a=rtcp-fb:/.test(t[d+1])&&i.set(d+1,`${a.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let o=[...i];for(let a=0;a<o.length;a++){let[d,p]=o[a];t.splice(d+a,0,p)}return t.join(`\r
145
+ `)}addSPSDescription(e){let t=Et(e);return t.media.forEach(i=>{i.type===b.VIDEO&&i.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),pi(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],i=Et(e);return i.media.forEach(o=>{!o.ext||(o.ext=o.ext.filter(a=>!t.includes(a.uri)))}),pi(i)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return N(this,null,function*(){var i,o;try{if((((i=this._peerConnection)==null?void 0:i.connectionState)===lt.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===lt.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let a="subscribe_change";Object.values(e).find(d=>d===!0)||(a="unsubscribe"),yield this.sendSubscription(a,e)}else this.initialize(),yield this.connect(e)}catch(a){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${a.message} ${JSON.stringify(this.muteState)}`),new Y({code:H.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):a}})}unsubscribe(i){return N(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let o=oe({},this.subscribeState);e.forEach(d=>{switch(d.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let a="subscribe_change";Object.values(o).find(d=>d===!0)||(a="unsubscribe"),this._log.info(`${a==="unsubscribe"?a:"subscribe"} ${t} [${Th(o)}]`),yield this.sendSubscription(a,o),a==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let i={srcTinyId:this.tinyId,srcUserId:this.userId},o=Oe.UNSUBSCRIBE,a=ye.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(i={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Oe.SUBSCRIBE_CHANGE,a=ye.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:i,responseCommand:a,timeout:1e4}).then(({data:d})=>{if(d.code!==0){let p=new Y({code:d.code,message:Te({key:Ee.ERROR_MESSAGE,data:{type:e,message:d.message}})});throw this._log.error(p),p}})}connect(){return N(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return N(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:i}=this._peerConnection.localDescription,o={type:t,sdp:i,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},a=yield this._signalChannel.sendWaitForResponse({command:Oe.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:ye.SUBSCRIBE_RESULT,timeout:qh});if(!this._peerConnection){let d=new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.CONNECTION_CLOSED})});throw this._log.warn(d),d}yield this.onSubscribeResult(a),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return N(this,null,function*(){let e={voiceActivityDetection:!1};si()&&this._sdpSemantics===Eo?(this._peerConnection.addTransceiver(b.AUDIO,{direction:We.RECVONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:We.RECVONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:We.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:i}=yield yl();i||(this._log.warn("remove h264 desc from sdp"),t.sdp=nE(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=iE(t.sdp),this._sdpSemantics===Eo&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return N(this,null,function*(){let{code:t,message:i=""}=e&&e.data||{},{type:o,sdp:a}=e&&e.data&&e.data.data||{};if(t===gs)throw new Y({code:H.NOT_SUPPORTED_H264,message:Te({key:Ee.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new Y({code:t,message:Te({key:Ee.EXCHANGE_SDP_FAILED,data:{errMsg:i}})});this._log.debug(`accept remote answer: ${a}`),yield this.setAnswer({type:o,sdp:a}),this.updateSSRC(a)}catch(d){throw this._log.error(d),d}})}updateSSRC(e){try{Et(e).media.forEach(i=>{if(!!i.ssrcs)if(i.type===b.AUDIO){let o=i.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(gd)});o&&(this.ssrc.audio=Number(o.id))}else{let o=i.ssrcs.find(d=>{var p;return(p=d.value)==null?void 0:p.includes(gd)}),a=i.ssrcs.find(d=>{var p;return(p=d.value)==null?void 0:p.includes(Wh)});o&&(this.ssrc.video=Number(o.id)),a&&(this.ssrc.auxiliary=Number(a.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return N(this,null,function*(){if(!(Mt(gf.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let i=rn(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${i/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},i)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}},ac=gf;j([ke(n=>function(...r){return new Promise((e,t)=>{let i=o=>{this._emitter.off("closed",i),t(new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.CONNECTION_ABORTED,data:o})}))};this._emitter.on("closed",i),n.apply(this,r).then(e,t).finally(()=>{this._emitter.off("closed",i)})})})],ac.prototype,"subscribe",1),j([Pr(521717,!1)],ac.prototype,"unsubscribe",1),j([Li(Cr.prototype.afterConnect),Ml(Cr.prototype.beforeConnect)],ac.prototype,"connect",1);var _f=ac;var sE={voiceActivityDetection:!1},Ef=class extends Cr{constructor(e){super(_e(oe({},e),{isUplink:!0}));E(this,"localMainAudioTrack",null);E(this,"localMainVideoTrack",null);E(this,"localAuxAudioTrack",null);E(this,"localAuxVideoTrack",null);E(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});E(this,"_isPublishingAux",!1);E(this,"_publishingLocalAudioTrack");E(this,"_publishingLocalVideoTrack");E(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});E(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,i,o,a;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let d=this._peerConnection.getSenders();d&&(nn()?(e.audio=!!((t=d[0])!=null&&t.track),e.bigVideo=!!((i=d[1])!=null&&i.track),e.smallVideo=!!((o=d[2])!=null&&o.track),e.auxVideo=!!((a=d[3])!=null&&a.track)):d.forEach(p=>{p.track&&(p.track.kind===b.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var a,d,p;let i=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&i!==e&&(t?t.emit("connection-state-changed",{prevState:i,state:e}):((a=this.localMainVideoTrack)==null||a.emit("connection-state-changed",{prevState:i,state:e}),(d=this.localAuxVideoTrack)==null||d.emit("connection-state-changed",{prevState:i,state:e}),(p=this._publishingLocalVideoTrack)==null||p.emit("connection-state-changed",{prevState:i,state:e}))),o}publish(o){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:i}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=i;let a;t&&!i&&t.small&&(a=this._room.videoManager.smallTrack),this.sendMediaSettings(),si()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:a,isAuxiliary:i}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:a}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,i?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(a){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:i,isAuxiliary:o}){this._log.info("publish by transceiver");let d=new MediaStream,p=t==null?void 0:t.outMediaTrack,_=e==null?void 0:e.outMediaTrack;_&&d.addTrack(_),p&&d.addTrack(p);let S=this._peerConnection.getTransceivers();if(S.length===0)this._peerConnection.addTransceiver(_||b.AUDIO,{direction:We.SENDONLY,streams:[d]}),this._peerConnection.addTransceiver(o?b.VIDEO:p||b.VIDEO,{direction:We.SENDONLY,streams:[d]}),this._peerConnection.addTransceiver(i||b.VIDEO,{direction:We.SENDONLY,streams:[d]}),this._peerConnection.addTransceiver(o?p||b.VIDEO:b.VIDEO,{direction:We.SENDONLY,streams:[d]}),yield this.connect();else{let v=[];if(_&&(S[0].sender.track||v.push(0),yield S[0].sender.replaceTrack(_),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:b.AUDIO})),p){let A=o?3:1;yield S[A].sender.replaceTrack(p),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:b.VIDEO,videoType:o?b.AUXILIARY:b.BIG}),v.push(A),i&&(yield S[2].sender.replaceTrack(i),yield this.setBandwidth({bandwidth:t.small.bitrate,type:b.VIDEO,videoType:b.SMALL}),v.push(2))}yield this.setTransceiverDirection(We.SENDONLY,v),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(o){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:i}){this._log.info("publish by addtrack");let a=t==null?void 0:t.outMediaTrack,d=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&d&&(yield this.addTrack(e)),a&&(yield this.addTrack(t));return}let p=new MediaStream;if(d&&p.addTrack(d),a&&p.addTrack(a),d&&this._peerConnection.addTrack(d,p),a&&(this._peerConnection.addTrack(a,p),i)){let _=new MediaStream;_.addTrack(i),this._peerConnection.addTrack(i,_)}yield this.connect()})}enableSmall(e){return N(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(We.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(We.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(i){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!nn()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let o=t&&t===this.localAuxVideoTrack,a=t==null?void 0:t.outMediaTrack,d=this._peerConnection.getSenders(),p=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield d[0].replaceTrack(null),p.push(0))),a&&(o?(yield d[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=_e(oe({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),p.push(3)):(yield d[1].replaceTrack(null),yield d[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=_e(oe({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),p.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(We.INACTIVE,p),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return N(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},i=yield this._signalChannel.sendWaitForResponse({command:Oe.PUBLISH_STATE_CHANGE,data:t,responseCommand:ye.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(i.data.code,i.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Oe.UNPUBLISH,commandDesc:"unpublish",responseCommand:ye.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===H.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let i=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:a}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?a=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),on){if(i&&i.outMediaTrack){let d=i.outMediaTrack.getSettings();this._mediaSettings.audioChannel=d.channelCount||1,this._mediaSettings.audioBps=i.profile.bitrate*1e3,this._mediaSettings.audioFs=d.sampleRate||0}if(o&&o.outMediaTrack){let d=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=d.width||0,this._mediaSettings.videoHeight=d.height||0,this._mediaSettings.videoFps=d.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(a&&a.outMediaTrack){let d=a.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=d.width||0,this._mediaSettings.auxVideoHeight=d.height||0,this._mediaSettings.auxVideoFps=d.frameRate||0,this._mediaSettings.auxVideoBps=a.profile.bitrate*1e3}}else i&&i.outMediaTrack&&(this._mediaSettings.audioChannel=i.profile.channelCount,this._mediaSettings.audioBps=i.profile.bitrate*1e3,this._mediaSettings.audioFs=i.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Oe.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:ye.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return N(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?b.AUXILIARY:b.MAIN} stream`),si()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return N(this,null,function*(){var o;if(!e.mediaTrack)return;let i=this._peerConnection.getTransceivers();if(e.kind===b.AUDIO)yield i[0].sender.replaceTrack(e.outMediaTrack);else{let a=t?3:1;yield i[a].sender.replaceTrack(e.outMediaTrack),a===1&&((o=this.localMainVideoTrack)==null?void 0:o.small)&&(yield i[2].sender.replaceTrack(this._room.videoManager.smallTrack)),i[a].direction===We.INACTIVE&&(yield this.setTransceiverDirection(We.SENDONLY,[a]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return N(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;nn()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let i=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(i&&i.track){this._log.warn("sender already exists, remove sender first");let o=i.track;this.removeSender(i),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===b.VIDEO&&e instanceof yt&&e.small){let o=new MediaStream,{smallTrack:a}=this._room.videoManager;o.addTrack(a),this._peerConnection.addTrack(a,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===ma||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=Et(e);for(let i=0;i<t.media.length;i++)if(Number(t.media[i].mid)===0&&t.media[i].type===b.VIDEO)return!0;return!1}removeSender(e){let t=null;nn()&&(t=this._peerConnection.getTransceivers().find(i=>i.sender&&i.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&Ze(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return N(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?b.AUXILIARY:b.MAIN} stream`),si()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return N(this,null,function*(){if(!e.outMediaTrack)return;let i=this._peerConnection.getTransceivers();if(e.kind===b.AUDIO)yield i[0].sender.replaceTrack(null);else{let o=t?3:1;yield i[o].sender.replaceTrack(null),o===1&&e.small&&(yield i[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(We.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return N(this,null,function*(){if(!nt)return;let i=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let a=this._peerConnection.getTransceivers();if(t.forEach(_=>{a[_].direction!==e&&(a[_].direction=e,i=!0)}),i){this._log.info("updating offer");let _=yield this._peerConnection.createOffer();yield this.setOffer(_)}let d=-1,p=this._peerConnection.remoteDescription.sdp.split(`\r
146
+ `).map(_=>{if(_.match(new RegExp(`a=(${We.INACTIVE}|${We.RECVONLY}|${We.SENDONLY})`))&&d++,t.includes(d)){if(e===We.INACTIVE&&_.includes(`a=${We.RECVONLY}`))return o=!0,`a=${e}`;if(e===We.SENDONLY&&_.includes(`a=${We.INACTIVE}`))return o=!0,`a=${We.RECVONLY}`}return _}).join(`\r
147
+ `);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:p}))})}removeTrackBySender(e){return N(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===b.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(i=>i.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===b.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(i=>{i.track&&i.track.kind===b.VIDEO&&this.removeSender(i)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return N(this,null,function*(){var a;let t=(a=this._peerConnection)==null?void 0:a.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let i;if(si()?i=e.kind===b.AUDIO?t[0]:t[1]:i=t.find(d=>d.track&&d.track.kind===e.kind),!i)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?b.AUXILIARY:b.MAIN} stream`),e.kind===b.AUDIO?yield i.replaceTrack(e.outMediaTrack):e.kind===b.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield i.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return N(this,null,function*(){try{let i=yield this._peerConnection.createOffer(sE);nt&&i.sdp&&(i.sdp=this.setSDPDirection(i.sdp,"sendrecv")),yield this.setOffer(i);let o=this.updateMediaSettings(),a={action:e,trackId:t.id,kind:t.kind===b.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${a.sdp}`);let d=yield this._signalChannel.sendWaitForResponse({command:Oe.PUBLISH_CHANGE,data:a,responseCommand:ye.UPDATE_OFFER_RESULT,timeout:Jh,commandDesc:"update offer"}),{code:p,message:_}=d.data;p!==0&&this.checkPublishResultCode(p,_),yield this.acceptAnswer(d.data.data),i.sdp&&this.updateSSRC(i.sdp)}catch(i){throw this._log.error(i),i}})}setBandwidth(a){return N(this,arguments,function*({bandwidth:e,type:t,videoType:i,sdp:o}){if(!Gd())return o?t===b.VIDEO?this.updateVideoBandwidthRestriction(o,e,i):this.updateAudioBandwidthRestriction(o,e):void 0;let d,p=this._peerConnection.getSenders();if(si()){let _=0;t===b.VIDEO&&(i===b.SMALL?_=2:i===b.AUXILIARY?_=3:_=1),d=p[_]}else d=p.find(_=>_.track&&_.track.kind===t);if(d){let _=d.getParameters();(!_.encodings||_.encodings.length===0)&&(_.encodings=[{}]),_.encodings[0].maxBitrate=e*1e3;try{return yield d.setParameters(_),this._log.info(`${i||""}${t} bandwidth ${e} kbps`),o}catch(S){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${S}`),o)return t===b.VIDEO?this.updateVideoBandwidthRestriction(o,e,i):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,i){let o="AS";nt&&(o="TIAS",t=t*1e3);let a=0,d=-1;return i===b.SMALL?a=1:i===b.AUXILIARY&&(a=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,p=>(d+=1,d===a?`${p}b=${o}:${t}\r
148
+ `:p)),e}updateAudioBandwidthRestriction(e,t){let i="AS";return nt&&(i="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
60
149
  c=IN $2\r
61
- b=${r}:${t}\r
62
- `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(qh);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:W.PUBLISH,responseCommand:V.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof rt||this.localAuxVideoTrack instanceof rt,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:o,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,o)})}setSDPDirection(e,t,r="all"){let o=le(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),mt(o)}acceptAnswer(e){return f(this,null,function*(){var t,r,o,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let u=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),p=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let _=this._isPublishingAux?m.AUXILIARY:m.BIG;c=yield this.setBandwidth({bandwidth:u,type:m.VIDEO,sdp:c,videoType:_})}p&&(c=yield this.setBandwidth({bandwidth:p,type:m.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:u}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||u.bitrate,type:m.VIDEO,videoType:m.SMALL,sdp:c})}let h={type:e.type,sdp:c};yield this.setAnswer(h),this._log.debug(`accepted answer: ${c}`)}catch(c){throw this._log.error(`failed to accept remote answer ${c}`),c}})}sendMutedFlag(e){var o,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((o=this.localMainAudioTrack)!=null&&o.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(W.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(ye(pl.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:W.UNPUBLISH,responseCommand:V.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=Ft(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&T.emit(g.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{le(e).media.forEach((r,o)=>{if(r.type===m.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===yr&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let d=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=d:c===1&&(this.ssrc.small=d)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(o){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=m.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===m.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===m.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===m.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===m.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Zi?(this._log.error(be.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:w({key:x.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:w({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:V.PUBLISH_RESULT,code:e,message:t}})})}},_s=pl;b([G(s=>function(...i){return new Promise((e,t)=>{let r=o=>{this._emitter.off("closed",r),t(new y({code:S.API_CALL_ABORTED,message:w({key:x.CONNECTION_ABORTED,data:o})}))};this._emitter.on("closed",r),s.apply(this,i).then(e,t).finally(()=>{this._emitter.off("closed",r)})})})],_s.prototype,"publish",1),b([Qe(521715,!1)],_s.prototype,"unpublish",1),b([bt(He.prototype.afterConnect),Wn(He.prototype.beforeConnect)],_s.prototype,"connect",1);var Mo=_s;var ko=class{constructor(i,e){this.room=i;l(this,"_log");l(this,"_prevReportTime",0);l(this,"_prevReport",{});l(this,"_prevStats",null);l(this,"_prevEncoderImplementation","");l(this,"_prevAuxEncoderImpl","");l(this,"_prevQualityLimitationReason","");l(this,"_prevAuxQualityLimitationReason","");l(this,"_prevDecoderImplementationMap",new Map);l(this,"totalBytesSent",0);l(this,"totalBytesReceived",0);l(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(this,null,function*(){var o;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var h,u,p;let c,d;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===m.VIDEO){if(a.ssrc===r.video?(c=m.VIDEO,d=i.localMainVideoTrack):a.ssrc===r.small?c=m.SMALL:a.ssrc===r.auxiliary&&(d=i.localAuxVideoTrack,c=m.AUXILIARY),!c)return;if(e[c].bytesSent=a.bytesSent,e[c].packetsSent=a.packetsSent,e[c].framesEncoded=a.framesEncoded,E(a.keyFramesEncoded)||(e[c].keyFramesEncoded=a.keyFramesEncoded),E(a.nackCount)||(e[c].nackCount=a.nackCount),E(a.pliCount)||(e[c].pliCount=a.pliCount),E(a.retransmittedPacketsSent)||(e[c].retransmittedPacketsSent=a.retransmittedPacketsSent),E(a.totalEncodeTime)||(e[c].totalEncodeTime=a.totalEncodeTime),E(a.totalPacketSendDelay)||(e[c].totalPacketSendDelay=a.totalPacketSendDelay),!E(a.encoderImplementation)&&(c===m.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||c===m.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let I=2,C=this._prevEncoderImplementation;c===m.AUXILIARY&&(I=7,C=this._prevAuxEncoderImpl),T.emit("262",{userId:i.userId,streamType:I,prevImplementation:C,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[c===m.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${c===m.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!E(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),T.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(h=i.localMainVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!E(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),T.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(u=i.localAuxVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?Fi(a)&&(this.totalBytesSent=a.bytesSent,K(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===m.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===m.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(m.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(m.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!E(a.audioLevel)&&((p=i.localMainAudioTrack)==null?void 0:p.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!E(a.frameWidth)){let _=m.SMALL;a.trackIdentifier===i.getVideoTrackId(m.VIDEO)||a.ssrc===r.video?_=m.VIDEO:(a.trackIdentifier===i.getVideoTrackId(m.AUXILIARY)||a.ssrc===r.auxiliary)&&(_=m.AUXILIARY),e[_].frameWidth=a.frameWidth,e[_].frameHeight=a.frameHeight,e[_].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===m.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===m.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===m.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((o=this.room.networkQuality)==null?void 0:o.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,o,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:c,subscribeState:d}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let p=(u.mediaType||u.kind)===m.AUDIO;if(p){if(u.ssrc!==a.audio||!c.hasAudio)return;e.audio.packetsReceived=u.packetsReceived,e.audio.bytesReceived=u.bytesReceived,e.audio.packetsLost=u.packetsLost,u.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=u.insertedSamplesForDeceleration),u.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=u.removedSamplesForAcceleration),u.totalSamplesDuration&&(e.audio.totalSamplesDuration=u.totalSamplesDuration),u.totalSamplesReceived&&(e.audio.totalSamplesReceived=u.totalSamplesReceived),u.concealedSamples&&(e.audio.concealedSamples=u.concealedSamples);let{remoteAudioTrack:_}=i;_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(re&&u.bytesReceived===0)return;let _;u.ssrc===a.video&&c.hasVideo&&(e.video.packetsReceived=u.packetsReceived,e.video.bytesReceived=u.bytesReceived,e.video.packetsLost=u.packetsLost,e.video.framesReceived=u.framesReceived,e.video.framesDecoded=u.framesDecoded,e.video.fpsDecoded=u.framesPerSecond,e.hasVideo=!0,_=i.remoteVideoTrack,c.hasSmall&&d.smallVideo&&(e.isSmallSubscribed=!0),u.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==u.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${u.decoderImplementation} HWDecoder: ${u.powerEfficientDecoder}`),T.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:u.decoderImplementation,codec:i.videoCodec,isHWCodec:u.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,u.decoderImplementation))),u.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.packetsReceived=u.packetsReceived,e.auxiliary.bytesReceived=u.bytesReceived,e.auxiliary.packetsLost=u.packetsLost,e.auxiliary.framesReceived=u.framesReceived,e.auxiliary.framesDecoded=u.framesDecoded,e.auxiliary.fpsDecoded=u.framesPerSecond,_=i.remoteAuxiliaryTrack,e.hasAuxiliary=!0),_&&(_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,_.stat.framesReceived=u.framesReceived,_.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)))}u.jitterBufferDelay&&(p?(e.audio.totalJitter=u.jitterBufferDelay,e.audio.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=u.jitterBufferDelay,e.video.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=u.jitterBufferDelay,e.auxiliary.totalJitterCount=u.jitterBufferEmittedCount))}else u.type==="candidate-pair"&&Fi(u)&&(this.totalBytesReceived=u.bytesReceived,K(u.currentRoundTripTime)&&(e.rtt=Math.floor(u.currentRoundTripTime*1e3)));E(u.frameWidth)||((u.trackIdentifier===i.getMainStreamVideoTrackId()||u.ssrc===a.video)&&(e.video.frameWidth=u.frameWidth,e.video.frameHeight=u.frameHeight,i.remoteVideoTrack.stat.frameWidth=u.frameWidth,i.remoteVideoTrack.stat.frameHeight=u.frameHeight),(u.trackIdentifier===i.getAuxStreamVideoTrackId()||u.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=u.frameWidth,e.auxiliary.frameHeight=u.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=u.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=u.frameHeight)),!E(u.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&u.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=u.audioLevel||0,e.audio.totalAudioEnergy=u.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),E((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),E((o=i.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return f(this,null,function*(){let t={},r=[];if(this.room.singlePC){let o=this.room.singlePC.getPeerConnection();if(!o)return{senderStats:t,receiverStats:r};let n=k(),a=yield o.getStats(),c=k();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let d=[],h=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>h.has(u.type)&&d.push(u)),this._spcStats=d}i&&(t=yield this.getSenderStats(i));for(let[o,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(zt(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var u;if(!zt(i.senderStats)){let p={uint32_audio_level:i.senderStats.audio.audioLevel*_t,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(p.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*_t),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let _=[];if(i.senderStats.video.bytesSent){let C={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};_.push(C)}if(i.senderStats.small.bytesSent){let C={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};_.push(C)}if(i.senderStats.auxiliary.bytesSent){let C={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};_.push(C)}let I={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:p,msg_video_status:_,msg_network_status:I}}let{statInterval:r}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(p=>{let _={msg_user_info:{str_identifier:p.userId,uint64_tinyid:p.tinyId},msg_network_status:{uint32_rtt:p.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(p.hasAudio){let I={uint32_audio_p2p_delay:p.audio.p2pDelay,uint32_audio_cache_ms:p.audio.totalJitter,uint32_audio_cache_ms_count:p.audio.totalJitterCount,uint32_audio_codec_bitrate:p.audio.bytesReceived,uint32_audio_total_bitrate:p.audio.bytesReceived,uint32_audio_level:p.audio.audioLevel*1e8,uint32_audio_energy:p.audio.totalAudioEnergy*1e6,uint32_audio_receive:p.audio.packetsReceived,uint32_audio_origin_lost:p.audio.packetsLost};_.msg_audio_status=I}if(p.hasVideo){let I=t.get(`${p.userId}_${Ja}`),C=I?I.duration:0,D={uint32_video_stream_type:p.isSmallSubscribed?3:2,uint32_video_receive_fps:p.video.framesReceived,uint32_video_width:p.video.frameWidth,uint32_video_height:p.video.frameHeight,uint32_video_codec_bitrate:p.video.bytesReceived,uint32_video_receive:p.video.packetsReceived,uint32_video_origin_lost:p.video.packetsLost,uint32_video_block_time:C,uint32_video_dec_fps:p.video.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.video.totalJitter,uint32_video_cache_ms_count:p.video.totalJitterCount};_.msg_video_status.push(D)}if(p.hasAuxiliary){let I=t.get(`${p.userId}_${ja}`),C=I?I.duration:0,D={uint32_video_stream_type:7,uint32_video_receive_fps:p.auxiliary.framesReceived,uint32_video_width:p.auxiliary.frameWidth,uint32_video_height:p.auxiliary.frameHeight,uint32_video_codec_bitrate:p.auxiliary.bytesReceived,uint32_video_receive:p.auxiliary.packetsReceived+p.auxiliary.packetsLost,uint32_video_origin_lost:p.auxiliary.packetsLost,uint32_video_block_time:C,uint32_video_dec_fps:p.auxiliary.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.auxiliary.totalJitter,uint32_video_cache_ms_count:p.auxiliary.totalJitterCount};_.msg_video_status.push(D)}e.msg_down_stream_info.push(_)});let o=this._prevReport,n=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&o.msg_up_stream_info.msg_audio_status){let p=o.msg_up_stream_info.msg_audio_status,_=e.msg_up_stream_info.msg_audio_status;if(p.uint32_audio_codec_bitrate===0)_.uint32_audio_codec_bitrate=0;else{let I=this.getDifferenceValue(p.uint32_audio_codec_bitrate,_.uint32_audio_codec_bitrate);_.uint32_audio_codec_bitrate=Math.round(I*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_audio_codec_bitrate}(u=o.msg_device_info)!=null&&u.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(o.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/r):delete e.msg_device_info.uint32_audio_capture_cost}let a=o.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(p=>{let _=a.find(Me=>Me.uint32_video_stream_type===p.uint32_video_stream_type);if(!_||_.uint32_video_codec_bitrate===0){p.uint32_video_codec_bitrate=0,p.uint32_video_enc_fps=0,p.uint32_video_codec_fps=0;return}let I=0,C=0,D=0;_&&p.uint32_video_codec_bitrate>=_.uint32_video_codec_bitrate&&(I=_.uint32_video_codec_bitrate,C=_.uint32_video_enc_fps,D=_.uint32_video_codec_fps);let B=this.getDifferenceValue(I,p.uint32_video_codec_bitrate);p.uint32_video_codec_bitrate=Math.round(B*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=p.uint32_video_codec_bitrate,p.uint32_video_enc_fps=Math.round(this.getDifferenceValue(C,p.uint32_video_enc_fps)/r),p.uint32_video_codec_fps=Math.round(this.getDifferenceValue(D,p.uint32_video_codec_fps)/r),ci&&di()===115&&_.uint32_video_width===0&&_.uint32_video_height===0&&_.uint32_video_codec_fps===0&&(p.uint32_video_codec_fps=p.uint32_video_enc_fps),E(_.uint32_key_frame_count)||(p.uint32_key_frame_count=Math.round(this.getDifferenceValue(_.uint32_key_frame_count,p.uint32_key_frame_count))),E(_.uint32_nack_count)||(p.uint32_nack_count=Math.round(this.getDifferenceValue(_.uint32_nack_count,p.uint32_nack_count))),E(_.uint32_pli_count)||(p.uint32_pli_count=Math.round(this.getDifferenceValue(_.uint32_pli_count,p.uint32_pli_count))),E(_.uint32_video_arq_packets)||(p.uint32_video_arq_packets=Math.round(this.getDifferenceValue(_.uint32_video_arq_packets,p.uint32_video_arq_packets))),E(_.uint32_encode_cost)||(p.uint32_encode_cost=Math.round(this.getDifferenceValue(_.uint32_encode_cost,p.uint32_encode_cost)/r)),E(_.uint32_send_packet_cost)||(p.uint32_send_packet_cost=Math.round(this.getDifferenceValue(_.uint32_send_packet_cost,p.uint32_send_packet_cost)/r))});let d=o.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(p=>d.find(_=>_.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid));let h=e.msg_down_stream_info;return h.forEach(p=>{let _=d.find(I=>I.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid);if(!zt(p.msg_audio_status)&&!zt(_.msg_audio_status)){let I=p.msg_audio_status,C=_.msg_audio_status,D=this.getDifferenceValue(C.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms_count);delete I.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(C.uint32_audio_cache_ms,I.uint32_audio_cache_ms)/D)||0;let B=this.room.remotePublishedUserMap.get(p.msg_user_info.str_identifier);B&&(B.remoteAudioTrack.stat.jitterBufferDelay=I.uint32_audio_cache_ms),I.uint32_audio_origin_lost=this.getDifferenceValue(C.uint32_audio_origin_lost,I.uint32_audio_origin_lost),I.uint32_audio_receive=this.getDifferenceValue(C.uint32_audio_receive,I.uint32_audio_receive),I.uint32_audio_receive+=I.uint32_audio_origin_lost;let Me=this.getDifferenceValue(C.uint32_audio_codec_bitrate,I.uint32_audio_codec_bitrate);I.uint32_audio_codec_bitrate=Math.round(Me*8/r),I.uint32_audio_total_bitrate=Math.round(Me*8/r)}else p.msg_audio_status={};if(p.msg_video_status&&_.msg_video_status){let I=_.msg_video_status;p.msg_video_status=p.msg_video_status.filter(D=>I.find(B=>B.uint32_video_stream_type===D.uint32_video_stream_type)),p.msg_video_status.forEach(D=>{let B=I.find(Dm=>Dm.uint32_video_stream_type===D.uint32_video_stream_type),Me=B.uint32_video_receive,Ho=B.uint32_video_origin_lost,Rm=B.uint32_video_codec_bitrate,J=B.uint32_video_receive_fps,ym=B.uint32_video_dec_fps;D.uint32_video_origin_lost=this.getDifferenceValue(Ho,D.uint32_video_origin_lost),D.uint32_video_receive=this.getDifferenceValue(Me,D.uint32_video_receive)+D.uint32_video_origin_lost;let bm=this.getDifferenceValue(Rm,D.uint32_video_codec_bitrate);D.uint32_video_codec_bitrate=Math.round(bm*8/r);let Nm=this.getDifferenceValue(J,D.uint32_video_receive_fps);D.uint32_video_receive_fps=Math.round(Nm/r),D.uint32_video_dec_fps=Math.round(this.getDifferenceValue(ym,D.uint32_video_dec_fps)/r);let vm=this.getDifferenceValue(B.uint32_video_cache_ms_count,D.uint32_video_cache_ms_count);delete D.uint32_video_cache_ms_count,D.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(B.uint32_video_cache_ms,D.uint32_video_cache_ms)/vm)||0})}}),n&&i.receiverStats.forEach(p=>{if(p.audio.concealedSamples&&p.audio.totalSamplesReceived){let _=n.receiverStats.find(I=>I.userId===p.userId);if(_&&_.audio.concealedSamples&&_.audio.totalSamplesReceived){let I=p.audio.concealedSamples-_.audio.concealedSamples,C=p.audio.totalSamplesReceived-_.audio.totalSamplesReceived,D=Math.floor(I/C*1e3*r);if(D>r*1e3/5){let B=h.find(Me=>Me.msg_user_info.str_identifier===p.userId);B&&(B.msg_audio_status.uint32_audio_block_time=D)}}}}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let o={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(o))),this.prepareReport({stats:n,report:o,freezeMap:t}),this._prevReportTime=Date.now(),o})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var zh=Se(De());function Xh(s){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===s){let r=Math.round(t.duration),o=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,c=Math.round(t.domainLookupEnd-t.domainLookupStart),d=Math.round(t.requestStart-t.secureConnectionStart),h=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),p=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=L(v({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:c,tcp:h,tls:d,request:u,response:p});break}}catch(e){}return i}function Qh(s){return new Promise(i=>f(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${s}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let o=Xh(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var L_=700,Po=class extends zh.default{constructor({signalChannel:e,room:t}){super();l(this,"_room");l(this,"_signalChannel");l(this,"_log");l(this,"uplinkRTT",0);l(this,"uplinkLoss",0);l(this,"downlinkRTT",0);l(this,"downlinkLoss",0);l(this,"pingResults",{});l(this,"_downlinkPrevStatMap",new Map);l(this,"_downlinkLossAndRTTMap",new Map);l(this,"_interval",-1);l(this,"_uplinkNetworkQuality",0);l(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=R.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(V.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(pe.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,d;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(d=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:d.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let o=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=o-n;o===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/o*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return f(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var c;return((c=a.getPeerConnection())==null?void 0:c.connectionState)===ne.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let c=t[a].getPeerConnection();if(!c)return;let{rtt:d,totalPacketsLost:h,totalPacketsReceived:u}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u});continue}let p=0,_=this._downlinkPrevStatMap.get(c),I=h-_.totalPacketsLost,C=u-_.totalPacketsReceived;I<=0||C<0?p=0:p=Math.round(I/(I+C)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(c,{rtt:d,loss:p,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:o,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,o)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!ar())return t;let r=e.getReceivers();try{for(let o=0;o<r.length;o++)(yield r[o].getStats()).forEach(c=>{c.type==="candidate-pair"&&K(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===m.AUDIO||c.mediaType===m.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===ne.DISCONNECTED||e.connectionState===ne.FAILED||e.connectionState===ne.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=ee.run(Li,()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];T.emit(g.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=L(v({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Po.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-Po.lastPingTime>t.interval*1e3){Po.lastPingTime=Date.now();let a=t.domain.map(c=>Qh(c).then(d=>({domain:c,cost:d.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(d=>d.cost>L_),this.pingResults.timestamp=o,this.pingResults.data=c,c.forEach(d=>{kvStatManager.addSuccessEvent({key:KV_REPORT_KEY_NETWORK.PING,cost:d.cost})}),this._log.warn(`All ping results: ${JSON.stringify(c)}`)}).catch(c=>{this._log.warn(`Error during pinging domains: ${c}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(ee.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:o,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:o,audioDelay:n})}})}},zi=Po;l(zi,"EVENT_NETWORK_QUALITY","0"),l(zi,"lastPingTime",0);function x_({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return sr(t)?t.catch(r=>R.error(`${s.name}() error observed ${r}`)):t}catch(t){R.error(`${s.name}() error observed ${t}`)}}}var Na=class{constructor(i){this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0};this._eventMap=new Map;this._captureCostSum=0;this._captureCostCount=0;this.isDestroyed=!1;this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=R.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&te(this[e])&&(this[e]=x_({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Ie,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Ws().then(i=>{this._basicInfo.string_os_version=hi(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),T.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(g.JOIN_START,this.handleJoinStart).addEvent(g.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(g.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(g.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(g.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(g.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(g.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(g.JOIN_FAILED,this.handleJoinFailed).addEvent(g.LEAVE_START,this.handleLeaveStart).addEvent(g.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(g.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(g.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(g.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(g.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(g.PUBLISH_START,this.handlePublishStart).addEvent(g.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(g.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(g.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(g.PLAY_TRACK_START,this.handlePlayStart).addEvent(g.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(g.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!yt(i)||!this.hitTest(i.room)||e==="PLAYING"&&(t===m.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(g.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(g.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(g.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(g.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(g.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("unload",this.handleUnload),this._eventMap.forEach((i,e)=>T.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),ee.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(E(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),E(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),E(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:o,tcp:n,tls:a,request:c,response:d}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=o,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=c,this._pathJoinRoom.int32_schedule_response=d}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof y?Number(e.getExtraCode()||e.getCode()):S.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){!this.hitTest(i)||this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:L(v({},w_),{msg_user_info:new Lo({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:o,tinyId:n,role:a}=e,c=new Lo({userId:o,tinyId:n,role:a==="anchor"?20:21}),d=Date.now(),h=`${o}_${t}`,u=this._remoteStreamStatMap.get(h);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=d),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(h)&&this._pathMainVideoMap.set(h,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:o,sendSubscribeCMDTime:d}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(h)&&this._pathMainAudioMap.set(h,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:o,sendSubscribeCMDTime:d})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:d})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,o=this._remoteStreamStatMap.get(r);o&&o.subscribedTime===0&&(o.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!yt(i)||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!yt(i)||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),o=this._remoteStreamStatMap.get(e);if(r&&(r.statsToReport.uint64_render_first_frame_time===0&&(r.statsToReport.uint64_render_first_frame_time=t),o)){let{statsToReport:a,playStreamTime:c,subscribedTime:d}=o;a.uint32_video_render_first===0&&c-d<=100&&(a.uint32_video_render_first=t-r.sendSubscribeCMDTime)}let n=this._pathAuxiliaryMap.get(e);if(n&&o){let{statsToReport:a,playStreamTime:c,subscribedTime:d}=o;a.uint32_video_render_first===0&&c-d<=100&&(a.uint32_video_render_first=t-n.sendSubscribeCMDTime)}}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:o,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,o&&(a.totalVideoDelay=(a.totalVideoDelay||0)+o,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let c,d,h,u;o&&(d=o,h=1),n&&(c=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:d,audioDelayCount:u,videoDelayCount:h})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:o,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:c}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=o,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=c,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:o}=t.msg_audio_status;Math.floor(o/_t*100)>0&&(this._localStreamStat.totalAudioLevel+=o/_t,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=o,d=n.str_identifier,h=this._room.remotePublishedUserMap.get(d);if(c.forEach(u=>{let p=u.uint32_video_stream_type===2,_=u.uint32_video_stream_type===7,I=`${d}_${p?"main":"auxiliary"}`,C=this._remoteStreamStatMap.get(I);if(!!C&&(p&&(h==null?void 0:h.remoteVideoTrack.isSubscribed)||_&&(h==null?void 0:h.remoteAuxiliaryTrack))){C.totalVideoFPS+=u.uint32_video_receive_fps,C.totalVideoBitrate+=u.uint32_video_codec_bitrate,C.videoCount++,C.statsToReport.uint32_video_width===0&&(C.statsToReport.uint32_video_width=u.uint32_video_width),C.statsToReport.uint32_video_height===0&&(C.statsToReport.uint32_video_height=u.uint32_video_height);let D=p?h.remoteVideoTrack:h.remoteAuxiliaryTrack;D.stat.jitterBufferDelay&&(C.videoJitterBufferDelay=D.stat.jitterBufferDelay),D.stat.framesReceived&&(C.statsToReport.uint32_video_consume_render_rate=Math.floor(D.stat.framesDecoded/D.stat.framesReceived*Is(10,6)))}}),a){let u=`${d}_${"main"}`,p=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&p&&(h==null?void 0:h.remoteAudioTrack.isSubscribed)&&(p.totalAudioBitrate+=a.uint32_audio_codec_bitrate,p.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(p.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/_t*100)>0&&(p.totalAudioLevel+=a.uint32_audio_level/_t,p.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof y?e.getExtraCode()||e.getCode():S.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Mi)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&ki)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Ki)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:h,count:u,audioDelayCount:p,videoDelayCount:_,totalAudioDelay:I,totalVideoDelay:C}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(h/u),p&&I&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(I/p),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),_&&C&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(C/_))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:o}=this._room;o&&(i.statsToReport.uint32_audio_play_time=o.getDuration(e,m.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,m.VIDEO)),i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,Sr);let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:d}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=c,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(d,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0,(i.subscribeStartTime===0||i.subscribeStartTime-i.streamAddedTime>100||i.playStreamTime===0)&&(this._pathMainAudioMap.delete(e),this._pathMainVideoMap.delete(e),i.statsToReport.uint32_video_render_first=0)}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>Sr&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+Sr)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>Sr&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+Sr)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Sr&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Sr)}getReportData(){this._basicInfo.uint32_networkType=Gr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Lo({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Qs(this._signalInfo.relayIp),uint32_client_ip:Qs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Is(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Qs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Rn(i),i}report(){return f(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return f(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Za(i),r=t instanceof ArrayBuffer,o=`${Vi(e,Oi.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(N),this.uploadKVStat(nr)];n||a.push(ai({url:o,body:t})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=L(v({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield Za(e),r=`${Vi(+this._room.sdkAppId,Oi.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||ai({url:r,body:t})})}};b([je({settings:{timeout:500,retries:3}})],Na.prototype,"upload",1);var Sr=5e3,w_={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_render_first:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Lo=class{constructor(i){this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},Yh=Na;var fl=class{constructor(){l(this,"_startTime");l(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=k())}stop(){this._endTime===0&&(this._endTime=k())}getDuration(){return this._endTime===0?k()-this._startTime:this._endTime-this._startTime}get endTime(){return this._endTime}},gs=fl;var _l=class{constructor(i){l(this,"_room",null);l(this,"_durationMap");l(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(g.SUBSCRIBE_SUCCESS,this.handleSubscribed).set(g.UNSUBSCRIBE_SUCCESS,this.handleStreamStopped).set(g.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_${"main"}`,m.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_${"main"}`,m.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_${"auxiliary"}`,m.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);!o||(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,m.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,m.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,m.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>T.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>T.off(e,i,this)),this._eventMap.clear()}handleSubscribed({room:i,streamType:e,remotePublishedUser:t}){if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;if(t.muteState.hasAudio&&e==="main")if(t.remoteAudioTrack.isSubscribed){let n=new gs,a=this._durationMap.get(o);a?this.isRecording(a.audio)||a.audio.push(n):this._durationMap.set(o,{userId:r,type:e,audio:[n],video:[]})}else this.stopDurationItem(o,m.AUDIO);if(t.muteState.hasVideo||t.muteState.hasAuxiliary)if(t.remoteVideoTrack.isSubscribed||t.remoteAuxiliaryTrack.isSubscribed){let n=new gs,a=this._durationMap.get(o);a?this.isRecording(a.video)||a.video.push(n):this._durationMap.set(o,{userId:r,type:e,audio:[],video:[n]})}else this.stopDurationItem(o,m.VIDEO)}handleStreamStopped({room:i,streamType:e,remotePublishedUser:t}){if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDurationItem(o,m.AUDIO),this.stopDurationItem(o,m.VIDEO)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,o=new gs,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===m.AUDIO?[o]:[],video:e===m.AUDIO?[]:[o]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(o=>o.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,o)=>r+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},Kh=_l;var gl=class{constructor(i){l(this,"_room");l(this,"_renderFreezeMap",new Map);l(this,"_isVideoPlayingEventFiredMap",new Map);l(this,"_dataFreezeMap",new Map);l(this,"_monitorFreezeData",new Map);l(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}installEvents(){this._eventMap.set(g.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(g.PLAY_TRACK_START,this.onPlayTrackStart).set(g.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDataFreeze({key:o,userId:r,type:e})}).set(g.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let o="main",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}}).set(g.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!yt(i)||!this.hitTest(i.room)||r!==m.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===m.MUTE?this.onVideoTrackMuted(i):t===m.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(g.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>T.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>T.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,o=this._dataFreezeMap.get(r),n=new gs;o?o.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){!this.hitTest(i)||e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:o,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let o=r.durationItemList[r.durationItemList.length-1];o.stop();let n=o.getDuration();n>Zo?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return f(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=k();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(o,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=k();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!yt(i)||!this.hitTest(i.room)||i.kind!==m.VIDEO||i.hasFlag)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<Zo&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let o=k(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=o-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},Zh=gl;var em=Se(De(),1);var U_=[1,0,0,0,1,1,0,1],va=class extends st{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof Oe)try{this.setTexBuffer(U_)}catch(t){i.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${t.message||t}`}))}}draw2d(i,e,t,r,o){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(i,e,t,r,o);return this.ctx2d.restore(),n}return!1}render(i){var e;return(e=this.input)!=null&&e.requestFrame(i)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var El=class{constructor(i,e){this.node=i;this.layout=e;l(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},Da=class extends st{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});l(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new El(e,t);this.inputs[t.zIndex]=r}resize(e,t){let r=this.inputs.reduce((o,n)=>n?Object.assign(o,{width:Math.max(o.width,n.right),height:Math.max(o.height,n.bottom)}):o,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof Oe&&this.inputs.forEach(o=>{if(o){let n=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,n):o.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),!this.inputs.reduce((o,n)=>(!n||!n.node.requestFrame(e))&&o,!0)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let n=this.inputs[o];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((r,o)=>(!o||!o.node.requestFrame(e))&&r,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];o&&this.draw2d(o.node.image,o.x,o.y,o.width,o.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:r,width:o,height:n,name:a}=this,c=Date.now(),d=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:c,fps:d,name:a},v({parent:this.inputs.filter(h=>h).map(h=>h.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,r;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof Oe))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var V_=`#version 300 es
150
+ b=${i}:${t}\r
151
+ `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return N(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return N(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return N(this,null,function*(){try{let e=yield this._peerConnection.createOffer(sE);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Oe.PUBLISH,responseCommand:ye.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof Xr||this.localAuxVideoTrack instanceof Xr,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:i,message:o,data:a}=t.data;return i===0?this.acceptAnswer(a):this.checkPublishResultCode(i,o)})}setSDPDirection(e,t,i="all"){let o=Et(e);return o.media.forEach(a=>{(i==="all"||a.type===i)&&(a.direction=t)}),pi(o)}acceptAnswer(e){return N(this,null,function*(){var t,i,o,a,d;try{let p;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let v=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((i=this.localMainVideoTrack)==null?void 0:i.profile.bitrate),A=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((a=this.localMainAudioTrack)==null?void 0:a.profile.bitrate);if(v){let w=this._isPublishingAux?b.AUXILIARY:b.BIG;p=yield this.setBandwidth({bandwidth:v,type:b.VIDEO,sdp:p,videoType:w})}A&&(p=yield this.setBandwidth({bandwidth:A,type:b.AUDIO,sdp:p}))}if(p=this.removeVideoOrientation(e.sdp),(d=this._publishingLocalVideoTrack)!=null&&d.small){let{smallStreamConfig:v}=this._room;p=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||v.bitrate,type:b.VIDEO,videoType:b.SMALL,sdp:p})}let S={type:e.type,sdp:p};yield this.setAnswer(S),this._log.debug(`accepted answer: ${p}`)}catch(p){throw this._log.error(`failed to accept remote answer ${p}`),p}})}sendMutedFlag(e){var o,a,d;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let i={audio:!!((o=this.localMainAudioTrack)!=null&&o.muted),bigVideo:!!((a=this.localMainVideoTrack)!=null&&a.muted),auxVideo:!!((d=this.localAuxVideoTrack)!=null&&d.muted)};this._log.info(`send muted state: ${JSON.stringify(i)}`),this._signalChannel.send(Oe.UPDATE_MUTE_STAT,i)}getIsReconnecting(){return this._isReconnecting}reconnect(){return N(this,null,function*(){if(!(Mt(Ef.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Oe.UNPUBLISH,responseCommand:ye.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let i=rn(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${i/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},i)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&B.emit(U.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{Et(e).media.forEach((i,o)=>{if(i.type===b.AUDIO){let a=i.ssrcs&&i.ssrcs[0];a&&(this.ssrc.audio=Number(a.id))}else{if(this._sdpSemantics===ma&&i.ssrcGroups){i.ssrcGroups.forEach((d,p)=>{let _=Number(d.ssrcs.split(" ")[0]);p===0?this.ssrc.video=_:p===1&&(this.ssrc.small=_)});return}let a=i.ssrcs&&i.ssrcs[0];if(!a)return;switch(o){case 1:this.ssrc.video=Number(a.id);break;case 2:this.ssrc.small=Number(a.id);break;case 3:this.ssrc.auxiliary=Number(a.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=b.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===b.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===b.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===b.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===b.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===gs?(this._log.error(Yt.NOT_SUPPORTED_H264ENCODE),new Y({code:H.NOT_SUPPORTED_H264,message:Te({key:Ee.NOT_SUPPORTED_H264ENCODE})})):new Y({code:H.UNKNOWN,message:Te({key:Ee.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ye.PUBLISH_RESULT,code:e,message:t}})})}},cc=Ef;j([ke(n=>function(...r){return new Promise((e,t)=>{let i=o=>{this._emitter.off("closed",i),t(new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.CONNECTION_ABORTED,data:o})}))};this._emitter.on("closed",i),n.apply(this,r).then(e,t).finally(()=>{this._emitter.off("closed",i)})})})],cc.prototype,"publish",1),j([Pr(521715,!1)],cc.prototype,"unpublish",1),j([Li(Cr.prototype.afterConnect),Ml(Cr.prototype.beforeConnect)],cc.prototype,"connect",1);var yu=cc;var vu=class{constructor(r,e){this.room=r;E(this,"_log");E(this,"_prevReportTime",0);E(this,"_prevReport",{});E(this,"_prevStats",null);E(this,"_prevEncoderImplementation","");E(this,"_prevAuxEncoderImpl","");E(this,"_prevQualityLimitationReason","");E(this,"_prevAuxQualityLimitationReason","");E(this,"_prevDecoderImplementationMap",new Map);E(this,"totalBytesSent",0);E(this,"totalBytesReceived",0);E(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(r){return N(this,null,function*(){var o;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=r.getPeerConnection(),i=r.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(d=>{var S,v,A;let p,_;if(d.type==="outbound-rtp")if((d.mediaType||d.kind)===b.VIDEO){if(d.ssrc===i.video?(p=b.VIDEO,_=r.localMainVideoTrack):d.ssrc===i.small?p=b.SMALL:d.ssrc===i.auxiliary&&(_=r.localAuxVideoTrack,p=b.AUXILIARY),!p)return;if(e[p].bytesSent=d.bytesSent,e[p].packetsSent=d.packetsSent,e[p].framesEncoded=d.framesEncoded,V(d.keyFramesEncoded)||(e[p].keyFramesEncoded=d.keyFramesEncoded),V(d.nackCount)||(e[p].nackCount=d.nackCount),V(d.pliCount)||(e[p].pliCount=d.pliCount),V(d.retransmittedPacketsSent)||(e[p].retransmittedPacketsSent=d.retransmittedPacketsSent),V(d.totalEncodeTime)||(e[p].totalEncodeTime=d.totalEncodeTime),V(d.totalPacketSendDelay)||(e[p].totalPacketSendDelay=d.totalPacketSendDelay),!V(d.encoderImplementation)&&(p===b.VIDEO&&this._prevEncoderImplementation!==d.encoderImplementation||p===b.AUXILIARY&&this._prevAuxEncoderImpl!==d.encoderImplementation)){let M=2,L=this._prevEncoderImplementation;p===b.AUXILIARY&&(M=7,L=this._prevAuxEncoderImpl),B.emit("262",{userId:r.userId,streamType:M,prevImplementation:L,implementation:d.encoderImplementation,codec:r.videoCodec,isHWCodec:d.powerEfficientEncoder}),this[p===b.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=d.encoderImplementation,this._log.info(`${p===b.AUXILIARY?"aux ":""}encoderImplementation change to ${d.encoderImplementation}(${r.videoCodec}) HWEncoder: ${d.powerEfficientEncoder}`)}d.ssrc===i.video?!V(d.qualityLimitationReason)&&d.bytesSent!==0&&this._prevQualityLimitationReason!==d.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${d.qualityLimitationReason}`),B.emit("263",{userId:r.userId,reason:d.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(S=r.localMainVideoTrack)==null?void 0:S.isQosClearFirst}),this._prevQualityLimitationReason=d.qualityLimitationReason):d.ssrc===i.auxiliary&&!V(d.qualityLimitationReason)&&d.bytesSent!==0&&this._prevAuxQualityLimitationReason!==d.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${d.qualityLimitationReason}`),B.emit("263",{userId:r.userId,reason:d.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(v=r.localAuxVideoTrack)==null?void 0:v.isQosClearFirst}),this._prevAuxQualityLimitationReason=d.qualityLimitationReason)}else e.audio.bytesSent=d.bytesSent,e.audio.packetsSent=d.packetsSent;else d.type==="candidate-pair"?bo(d)&&(this.totalBytesSent=d.bytesSent,qe(d.currentRoundTripTime)&&(e.rtt=Math.floor(d.currentRoundTripTime*1e3))):d.type==="media-source"&&(d.kind===b.AUDIO?(e.audio.audioLevel=d.audioLevel||0,e.audio.totalAudioEnergy=d.totalAudioEnergy||0,d.echoReturnLoss,d.totalSamplesDuration&&(e.audio.totalSamplesDuration=d.totalSamplesDuration)):d.kind===b.VIDEO&&(d.trackIdentifier===r.getVideoTrackId(b.VIDEO)?e.video.fpsCapture=d.framesPerSecond:d.trackIdentifier===r.getVideoTrackId(b.AUXILIARY)?e.auxiliary.fpsCapture=d.framesPerSecond:e.small.fpsCapture=d.framesPerSecond));if(!V(d.audioLevel)&&((A=r.localMainAudioTrack)==null?void 0:A.mediaTrack)&&d.trackIdentifier===r.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=d.audioLevel||0),!V(d.frameWidth)){let w=b.SMALL;d.trackIdentifier===r.getVideoTrackId(b.VIDEO)||d.ssrc===i.video?w=b.VIDEO:(d.trackIdentifier===r.getVideoTrackId(b.AUXILIARY)||d.ssrc===i.auxiliary)&&(w=b.AUXILIARY),e[w].frameWidth=d.frameWidth,e[w].frameHeight=d.frameHeight,e[w].framesSent=d.framesSent}}),r.localMainAudioTrack){let d=r.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=d,e.audio.audioLevel===0&&(e.audio.audioLevel=d)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(d=>{d===b.AUDIO?(r.localMainAudioTrack&&(r.localMainAudioTrack.stat=e[d]),r.localAuxAudioTrack&&(r.localAuxAudioTrack.stat=e[d])):d===b.VIDEO?r.localMainVideoTrack&&(r.localMainVideoTrack.stat=e[d]):d===b.AUXILIARY&&r.localAuxVideoTrack&&(r.localAuxVideoTrack.stat=e[d])})}catch(a){this._log.warn(`failed to getStats on sender connection ${a}`)}return e.rtt===0&&(e.rtt=((o=this.room.networkQuality)==null?void 0:o.uplinkRTT)||0),e})}getReceiverStats(r){return N(this,null,function*(){var i,o,a;let e={tinyId:r.tinyId,userId:r.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0}},t=r.getPeerConnection();if(t)try{let{ssrc:d}=r,{muteState:p,subscribeState:_}=r;(this._spcStats||(yield t.getStats())).forEach(v=>{if(v.type==="inbound-rtp"){let A=(v.mediaType||v.kind)===b.AUDIO;if(A){if(v.ssrc!==d.audio||!p.hasAudio)return;e.audio.packetsReceived=v.packetsReceived,e.audio.bytesReceived=v.bytesReceived,e.audio.packetsLost=v.packetsLost,v.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=v.insertedSamplesForDeceleration),v.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=v.removedSamplesForAcceleration),v.totalSamplesDuration&&(e.audio.totalSamplesDuration=v.totalSamplesDuration),v.totalSamplesReceived&&(e.audio.totalSamplesReceived=v.totalSamplesReceived),v.concealedSamples&&(e.audio.concealedSamples=v.concealedSamples);let{remoteAudioTrack:w}=r;w.stat.packetsReceived=v.packetsReceived,w.stat.bytesReceived=v.bytesReceived,w.stat.packetsLost=v.packetsLost,e.audio.p2pDelay=w.stat.end2EndDelay,e.hasAudio=!0}else{if(nt&&v.bytesReceived===0)return;let w;v.ssrc===d.video&&p.hasVideo&&(e.video.packetsReceived=v.packetsReceived,e.video.bytesReceived=v.bytesReceived,e.video.packetsLost=v.packetsLost,e.video.framesReceived=v.framesReceived,e.video.framesDecoded=v.framesDecoded,e.video.fpsDecoded=v.framesPerSecond,e.hasVideo=!0,w=r.remoteVideoTrack,p.hasSmall&&_.smallVideo&&(e.isSmallSubscribed=!0),v.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==v.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${v.decoderImplementation} HWDecoder: ${v.powerEfficientDecoder}`),B.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:v.decoderImplementation,codec:r.videoCodec,isHWCodec:v.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,v.decoderImplementation))),v.ssrc===d.auxiliary&&p.hasAuxiliary&&(e.auxiliary.packetsReceived=v.packetsReceived,e.auxiliary.bytesReceived=v.bytesReceived,e.auxiliary.packetsLost=v.packetsLost,e.auxiliary.framesReceived=v.framesReceived,e.auxiliary.framesDecoded=v.framesDecoded,e.auxiliary.fpsDecoded=v.framesPerSecond,w=r.remoteAuxiliaryTrack,e.hasAuxiliary=!0),w&&(w.stat.packetsReceived=v.packetsReceived,w.stat.bytesReceived=v.bytesReceived,w.stat.packetsLost=v.packetsLost,w.stat.framesReceived=v.framesReceived,w.stat.framesDecoded=v.framesDecoded,v.jitterBufferDelay&&(w.stat.jitterBufferDelay=Math.floor(v.jitterBufferDelay/v.jitterBufferEmittedCount*1e3)))}v.jitterBufferDelay&&(A?(e.audio.totalJitter=v.jitterBufferDelay,e.audio.totalJitterCount=v.jitterBufferEmittedCount):v.ssrc===d.video&&p.hasVideo?(e.video.totalJitter=v.jitterBufferDelay,e.video.totalJitterCount=v.jitterBufferEmittedCount):v.ssrc===d.auxiliary&&p.hasAuxiliary&&(e.auxiliary.totalJitter=v.jitterBufferDelay,e.auxiliary.totalJitterCount=v.jitterBufferEmittedCount))}else v.type==="candidate-pair"&&bo(v)&&(this.totalBytesReceived=v.bytesReceived,qe(v.currentRoundTripTime)&&(e.rtt=Math.floor(v.currentRoundTripTime*1e3)));V(v.frameWidth)||((v.trackIdentifier===r.getMainStreamVideoTrackId()||v.ssrc===d.video)&&(e.video.frameWidth=v.frameWidth,e.video.frameHeight=v.frameHeight,r.remoteVideoTrack.stat.frameWidth=v.frameWidth,r.remoteVideoTrack.stat.frameHeight=v.frameHeight),(v.trackIdentifier===r.getAuxStreamVideoTrackId()||v.ssrc===d.auxiliary)&&(e.auxiliary.frameWidth=v.frameWidth,e.auxiliary.frameHeight=v.frameHeight,r.remoteAuxiliaryTrack.stat.frameWidth=v.frameWidth,r.remoteAuxiliaryTrack.stat.frameHeight=v.frameHeight)),!V(v.audioLevel)&&r.muteState.audioAvailable&&r.remoteAudioTrack.mediaTrack&&v.trackIdentifier===r.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=v.audioLevel||0,e.audio.totalAudioEnergy=v.totalAudioEnergy||0)}),e.audio.audioLevel===0&&r.muteState.audioAvailable&&(e.audio.audioLevel=r.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),V((i=r.remoteVideoTrack.player.stat)==null?void 0:i.fps)||(e.video.fpsRender=r.remoteVideoTrack.player.stat.fps),V((o=r.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=r.remoteAuxiliaryTrack.player.stat.fps)}catch(d){this._log.warn(`failed to getStats on receiver connection ${d}`)}return e.rtt===0&&(e.rtt=((a=this.room.networkQuality)==null?void 0:a.uplinkRTT)||0),e})}getStats(r,e){return N(this,null,function*(){let t={},i=[];if(this.room.singlePC){let o=this.room.singlePC.getPeerConnection();if(!o)return{senderStats:t,receiverStats:i};let a=ge(),d=yield o.getStats(),p=ge();p-a>2e3&&this._log.warn(`getStats cost ${p-a}ms`);let _=[],S=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);d.forEach(v=>S.has(v.type)&&_.push(v)),this._spcStats=_}r&&(t=yield this.getSenderStats(r));for(let[o,a]of e){let d=yield this.getReceiverStats(a);i.push(d)}return{senderStats:t,receiverStats:i}})}getDifferenceValue(r,e){if(ln(r))return e;let t=e-r;return t<0?0:t}prepareReport({stats:r,report:e,freezeMap:t}){var v;if(!ln(r.senderStats)){let A={uint32_audio_level:r.senderStats.audio.audioLevel*Ci,uint32_audio_energy:(r.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:r.senderStats.audio.bytesSent};r.senderStats.audio.micAudioLevel&&(A.uint32_mic_audio_level=r.senderStats.audio.micAudioLevel*Ci),r.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=r.senderStats.audio.totalSamplesDuration);let w=[];if(r.senderStats.video.bytesSent){let L={uint32_video_stream_type:2,uint32_video_codec_fps:r.senderStats.video.framesSent,uint32_video_capture_fps:r.senderStats.video.fpsCapture,uint32_video_width:r.senderStats.video.frameWidth,uint32_video_height:r.senderStats.video.frameHeight,uint32_video_codec_bitrate:r.senderStats.video.bytesSent,uint32_video_enc_fps:r.senderStats.video.framesEncoded,uint32_key_frame_count:r.senderStats.video.keyFramesEncoded,uint32_nack_count:r.senderStats.video.nackCount,uint32_pli_count:r.senderStats.video.pliCount,uint32_encode_cost:(r.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(r.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:r.senderStats.video.retransmittedPacketsSent};w.push(L)}if(r.senderStats.small.bytesSent){let L={uint32_video_stream_type:3,uint32_video_codec_fps:r.senderStats.small.framesSent||0,uint32_video_capture_fps:r.senderStats.small.fpsCapture||0,uint32_video_width:r.senderStats.small.frameWidth||0,uint32_video_height:r.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:r.senderStats.small.bytesSent,uint32_video_enc_fps:r.senderStats.small.framesEncoded||0,uint32_key_frame_count:r.senderStats.small.keyFramesEncoded,uint32_nack_count:r.senderStats.small.nackCount,uint32_pli_count:r.senderStats.small.pliCount,uint32_encode_cost:(r.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(r.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:r.senderStats.small.retransmittedPacketsSent};w.push(L)}if(r.senderStats.auxiliary.bytesSent){let L={uint32_video_stream_type:7,uint32_video_codec_fps:r.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:r.senderStats.auxiliary.fpsCapture||0,uint32_video_width:r.senderStats.auxiliary.frameWidth||0,uint32_video_height:r.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:r.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:r.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:r.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:r.senderStats.auxiliary.nackCount,uint32_pli_count:r.senderStats.auxiliary.pliCount,uint32_encode_cost:(r.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(r.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:r.senderStats.auxiliary.retransmittedPacketsSent};w.push(L)}let M={uint32_bitrate:0,uint32_lost:0,uint32_rtt:r.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:A,msg_video_status:w,msg_network_status:M}}let{statInterval:i}=this;e.msg_down_stream_info=[],r.receiverStats.forEach(A=>{let w={msg_user_info:{str_identifier:A.userId,uint64_tinyid:A.tinyId},msg_network_status:{uint32_rtt:A.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(A.hasAudio){let M={uint32_audio_p2p_delay:A.audio.p2pDelay,uint32_audio_cache_ms:A.audio.totalJitter,uint32_audio_cache_ms_count:A.audio.totalJitterCount,uint32_audio_codec_bitrate:A.audio.bytesReceived,uint32_audio_total_bitrate:A.audio.bytesReceived,uint32_audio_level:A.audio.audioLevel*1e8,uint32_audio_energy:A.audio.totalAudioEnergy*1e6,uint32_audio_receive:A.audio.packetsReceived,uint32_audio_origin_lost:A.audio.packetsLost};w.msg_audio_status=M}if(A.hasVideo){let M=t.get(`${A.userId}_${Gh}`),L=M?M.duration:0,W={uint32_video_stream_type:A.isSmallSubscribed?3:2,uint32_video_receive_fps:A.video.framesReceived,uint32_video_width:A.video.frameWidth,uint32_video_height:A.video.frameHeight,uint32_video_codec_bitrate:A.video.bytesReceived,uint32_video_receive:A.video.packetsReceived,uint32_video_origin_lost:A.video.packetsLost,uint32_video_block_time:L,uint32_video_dec_fps:A.video.framesDecoded,uint32_video_codec_fps:A.video.fpsRender,uint32_video_cache_ms:A.video.totalJitter,uint32_video_cache_ms_count:A.video.totalJitterCount};w.msg_video_status.push(W)}if(A.hasAuxiliary){let M=t.get(`${A.userId}_${jh}`),L=M?M.duration:0,W={uint32_video_stream_type:7,uint32_video_receive_fps:A.auxiliary.framesReceived,uint32_video_width:A.auxiliary.frameWidth,uint32_video_height:A.auxiliary.frameHeight,uint32_video_codec_bitrate:A.auxiliary.bytesReceived,uint32_video_receive:A.auxiliary.packetsReceived+A.auxiliary.packetsLost,uint32_video_origin_lost:A.auxiliary.packetsLost,uint32_video_block_time:L,uint32_video_dec_fps:A.auxiliary.framesDecoded,uint32_video_codec_fps:A.video.fpsRender,uint32_video_cache_ms:A.auxiliary.totalJitter,uint32_video_cache_ms_count:A.auxiliary.totalJitterCount};w.msg_video_status.push(W)}e.msg_down_stream_info.push(w)});let o=this._prevReport,a=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(r)),e.msg_up_stream_info.msg_audio_status&&o.msg_up_stream_info.msg_audio_status){let A=o.msg_up_stream_info.msg_audio_status,w=e.msg_up_stream_info.msg_audio_status;if(A.uint32_audio_codec_bitrate===0)w.uint32_audio_codec_bitrate=0;else{let M=this.getDifferenceValue(A.uint32_audio_codec_bitrate,w.uint32_audio_codec_bitrate);w.uint32_audio_codec_bitrate=Math.round(M*8/i),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=w.uint32_audio_codec_bitrate}(v=o.msg_device_info)!=null&&v.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(o.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/i):delete e.msg_device_info.uint32_audio_capture_cost}let d=o.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(A=>{let w=d.find(Me=>Me.uint32_video_stream_type===A.uint32_video_stream_type);if(!w||w.uint32_video_codec_bitrate===0){A.uint32_video_codec_bitrate=0,A.uint32_video_enc_fps=0,A.uint32_video_codec_fps=0;return}let M=0,L=0,W=0;w&&A.uint32_video_codec_bitrate>=w.uint32_video_codec_bitrate&&(M=w.uint32_video_codec_bitrate,L=w.uint32_video_enc_fps,W=w.uint32_video_codec_fps);let ie=this.getDifferenceValue(M,A.uint32_video_codec_bitrate);A.uint32_video_codec_bitrate=Math.round(ie*8/i),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=A.uint32_video_codec_bitrate,A.uint32_video_enc_fps=Math.round(this.getDifferenceValue(L,A.uint32_video_enc_fps)/i),A.uint32_video_codec_fps=Math.round(this.getDifferenceValue(W,A.uint32_video_codec_fps)/i),$n&&Bn()===115&&w.uint32_video_width===0&&w.uint32_video_height===0&&w.uint32_video_codec_fps===0&&(A.uint32_video_codec_fps=A.uint32_video_enc_fps),V(w.uint32_key_frame_count)||(A.uint32_key_frame_count=Math.round(this.getDifferenceValue(w.uint32_key_frame_count,A.uint32_key_frame_count))),V(w.uint32_nack_count)||(A.uint32_nack_count=Math.round(this.getDifferenceValue(w.uint32_nack_count,A.uint32_nack_count))),V(w.uint32_pli_count)||(A.uint32_pli_count=Math.round(this.getDifferenceValue(w.uint32_pli_count,A.uint32_pli_count))),V(w.uint32_video_arq_packets)||(A.uint32_video_arq_packets=Math.round(this.getDifferenceValue(w.uint32_video_arq_packets,A.uint32_video_arq_packets))),V(w.uint32_encode_cost)||(A.uint32_encode_cost=Math.round(this.getDifferenceValue(w.uint32_encode_cost,A.uint32_encode_cost)/i)),V(w.uint32_send_packet_cost)||(A.uint32_send_packet_cost=Math.round(this.getDifferenceValue(w.uint32_send_packet_cost,A.uint32_send_packet_cost)/i))});let _=o.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(A=>_.find(w=>w.msg_user_info.uint64_tinyid===A.msg_user_info.uint64_tinyid));let S=e.msg_down_stream_info;return S.forEach(A=>{let w=_.find(M=>M.msg_user_info.uint64_tinyid===A.msg_user_info.uint64_tinyid);if(!ln(A.msg_audio_status)&&!ln(w.msg_audio_status)){let M=A.msg_audio_status,L=w.msg_audio_status,W=this.getDifferenceValue(L.uint32_audio_cache_ms_count,M.uint32_audio_cache_ms_count);delete M.uint32_audio_cache_ms_count,M.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(L.uint32_audio_cache_ms,M.uint32_audio_cache_ms)/W)||0;let ie=this.room.remotePublishedUserMap.get(A.msg_user_info.str_identifier);ie&&(ie.remoteAudioTrack.stat.jitterBufferDelay=M.uint32_audio_cache_ms),M.uint32_audio_origin_lost=this.getDifferenceValue(L.uint32_audio_origin_lost,M.uint32_audio_origin_lost),M.uint32_audio_receive=this.getDifferenceValue(L.uint32_audio_receive,M.uint32_audio_receive),M.uint32_audio_receive+=M.uint32_audio_origin_lost;let Me=this.getDifferenceValue(L.uint32_audio_codec_bitrate,M.uint32_audio_codec_bitrate);M.uint32_audio_codec_bitrate=Math.round(Me*8/i),M.uint32_audio_total_bitrate=Math.round(Me*8/i)}else A.msg_audio_status={};if(A.msg_video_status&&w.msg_video_status){let M=w.msg_video_status;A.msg_video_status=A.msg_video_status.filter(W=>M.find(ie=>ie.uint32_video_stream_type===W.uint32_video_stream_type)),A.msg_video_status.forEach(W=>{let ie=M.find(Ct=>Ct.uint32_video_stream_type===W.uint32_video_stream_type),Me=ie.uint32_video_receive,pe=ie.uint32_video_origin_lost,et=ie.uint32_video_codec_bitrate,Ie=ie.uint32_video_receive_fps,_r=ie.uint32_video_dec_fps;W.uint32_video_origin_lost=this.getDifferenceValue(pe,W.uint32_video_origin_lost),W.uint32_video_receive=this.getDifferenceValue(Me,W.uint32_video_receive)+W.uint32_video_origin_lost;let Ae=this.getDifferenceValue(et,W.uint32_video_codec_bitrate);W.uint32_video_codec_bitrate=Math.round(Ae*8/i);let or=this.getDifferenceValue(Ie,W.uint32_video_receive_fps);W.uint32_video_receive_fps=Math.round(or/i),W.uint32_video_dec_fps=Math.round(this.getDifferenceValue(_r,W.uint32_video_dec_fps)/i);let Lt=this.getDifferenceValue(ie.uint32_video_cache_ms_count,W.uint32_video_cache_ms_count);delete W.uint32_video_cache_ms_count,W.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(ie.uint32_video_cache_ms,W.uint32_video_cache_ms)/Lt)||0})}}),a&&r.receiverStats.forEach(A=>{if(A.audio.concealedSamples&&A.audio.totalSamplesReceived){let w=a.receiverStats.find(M=>M.userId===A.userId);if(w&&w.audio.concealedSamples&&w.audio.totalSamplesReceived){let M=A.audio.concealedSamples-w.audio.concealedSamples,L=A.audio.totalSamplesReceived-w.audio.totalSamplesReceived,W=Math.floor(M/L*1e3*i);if(W>i*1e3/5){let ie=S.find(Me=>Me.msg_user_info.str_identifier===A.userId);ie&&(ie.msg_audio_status.uint32_audio_block_time=W)}}}}),e}getStatsReport(i){return N(this,arguments,function*({uplinkConnection:r,downlinkConnections:e,freezeMap:t}){let o={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},a=yield this.getStats(r,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(o))),this.prepareReport({stats:a,report:o,freezeMap:t}),this._prevReportTime=Date.now(),o})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var dE=$t(nr());function aE(n){let r={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===n){let i=Math.round(t.duration),o=Math.max(Math.round(t.domainLookupStart-t.startTime),0),a=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,d=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,p=Math.round(t.domainLookupEnd-t.domainLookupStart),_=Math.round(t.requestStart-t.secureConnectionStart),S=Math.round(t.secureConnectionStart-t.connectStart),v=Math.round(t.responseStart-t.requestStart),A=Math.round(t.responseEnd-(t.responseStart||t.startTime));r=_e(oe({},r),{totalCost:i,local:o,redirect:a,httpCache:d,dns:p,tcp:S,tls:_,request:v,response:A});break}}catch(e){}return r}function cE(n){return new Promise(r=>N(this,null,function*(){let e=setTimeout(()=>{r({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),i=`https://${n}/?t=${t}`;try{yield fetch(i)}catch(a){}clearTimeout(e);let o=aE(i);o.totalCost===0&&(o.totalCost=Date.now()-t),r(o)}))}var WI=700,Au=class extends dE.default{constructor({signalChannel:e,room:t}){super();E(this,"_room");E(this,"_signalChannel");E(this,"_log");E(this,"uplinkRTT",0);E(this,"uplinkLoss",0);E(this,"downlinkRTT",0);E(this,"downlinkLoss",0);E(this,"pingResults",{});E(this,"_downlinkPrevStatMap",new Map);E(this,"_downlinkLossAndRTTMap",new Map);E(this,"_interval",-1);E(this,"_uplinkNetworkQuality",0);E(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=J.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:i}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${i} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(ye.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(At.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var p,_;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let i=(_=(p=this._room)==null?void 0:p.uplinkConnection)==null?void 0:_.getPeerConnection();if(i&&this.isPeerConnectionDisconnected(i)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let o=t.expectAudPkg+t.expectVidPkg,a=t.recvAudPkg+t.recvVidPkg,d=o-a;o===0&&a===0||(d<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(d/o*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return N(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(d=>{var p;return((p=d.getPeerConnection())==null?void 0:p.connectionState)===lt.CONNECTED});if(e.filter(d=>this.isPeerConnectionDisconnected(d.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let d=0;d<t.length;d++){let p=t[d].getPeerConnection();if(!p)return;let{rtt:_,totalPacketsLost:S,totalPacketsReceived:v}=yield this.getStat(p);if(!this._downlinkPrevStatMap.has(p)){this._downlinkPrevStatMap.set(p,{totalPacketsLost:S,totalPacketsReceived:v});continue}let A=0,w=this._downlinkPrevStatMap.get(p),M=S-w.totalPacketsLost,L=v-w.totalPacketsReceived;M<=0||L<0?A=0:A=Math.round(M/(M+L)*100),this._downlinkPrevStatMap.set(p,{totalPacketsLost:S,totalPacketsReceived:v}),this._downlinkLossAndRTTMap.set(p,{rtt:_,loss:A,userId:t[d].getUserId(),audioDelay:t[d].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[d].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(d=>{this.isPeerConnectionDisconnected(d)&&(this._downlinkPrevStatMap.delete(d),this._downlinkLossAndRTTMap.delete(d))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:o,loss:a}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=a,this.downlinkNetworkQuality=this.getNetworkQuality(a,o)})}getStat(e){return N(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!As())return t;let i=e.getReceivers();try{for(let o=0;o<i.length;o++)(yield i[o].getStats()).forEach(p=>{p.type==="candidate-pair"&&qe(p.currentRoundTripTime)&&(t.rtt=Math.round(p.currentRoundTripTime*1e3)),p.type==="inbound-rtp"&&(p.mediaType===b.AUDIO||p.mediaType===b.VIDEO)&&(t.totalPacketsLost+=p.packetsLost,t.totalPacketsReceived+=p.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(i=>{t.rtt+=i.rtt,t.loss+=i.loss}),Object.keys(t).forEach(i=>{t[i]=Math.round(t[i]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===lt.DISCONNECTED||e.connectionState===lt.FAILED||e.connectionState===lt.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=Qe.run(To,()=>{var a;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];B.emit(U.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(a=this._room.scheduleResult.config)==null?void 0:a.pingDomainInfo,i={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(i=_e(oe({},i),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Au.EVENT_NETWORK_QUALITY,i);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-Au.lastPingTime>t.interval*1e3){Au.lastPingTime=Date.now();let d=t.domain.map(p=>cE(p).then(_=>({domain:p,cost:_.totalCost})));Promise.all(d).then(p=>{this.pingResults.isPoorNetwork=p.some(_=>_.cost>WI),this.pingResults.timestamp=o,this.pingResults.data=p,p.forEach(_=>{kvStatManager.addSuccessEvent({key:KV_REPORT_KEY_NETWORK.PING,cost:_.cost})}),this._log.warn(`All ping results: ${JSON.stringify(p)}`)}).catch(p=>{this._log.warn(`Error during pinging domains: ${p}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(Qe.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:i,videoDelay:o,audioDelay:a})=>{let d=t.get(i);if(d){let p=this._room.remotePublishedUserMap.get(d);p==null||p.setDelay({videoDelay:o,audioDelay:a})}})}},$o=Au;E($o,"EVENT_NETWORK_QUALITY","0"),E($o,"lastPingTime",0);function GI({fn:n,context:r}){return function(...e){try{let t=n.apply(r,e);return Is(t)?t.catch(i=>J.error(`${n.name}() error observed ${i}`)):t}catch(t){J.error(`${n.name}() error observed ${t}`)}}}var Sh=class{constructor(r){this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0};this._eventMap=new Map;this._captureCostSum=0;this._captureCostCount=0;this.isDestroyed=!1;this._frameWorkType=r.frameWorkType||30,this._component=r.component||0,this.connectionType=r.connectionType||1,this._language=r.language||0,this._room=r.room,this._keyPrefix="key_point",this._log=J.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Ze(this[e])&&(this[e]=GI({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Bt,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Od().then(r=>{this._basicInfo.string_os_version=Xi(),r?this._basicInfo.string_device_name=r.mobile?r.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(r,e){return this._eventMap.set(r,e),B.on(r,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(U.JOIN_START,this.handleJoinStart).addEvent(U.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(U.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(U.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(U.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(U.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(U.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(U.JOIN_FAILED,this.handleJoinFailed).addEvent(U.LEAVE_START,this.handleLeaveStart).addEvent(U.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(U.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(U.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(U.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(U.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(U.PUBLISH_START,this.handlePublishStart).addEvent(U.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(U.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(U.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(U.PLAY_TRACK_START,this.handlePlayStart).addEvent(U.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(U.PLAYER_STATE_CHANGED,({track:r,state:e,type:t})=>{!xi(r)||!this.hitTest(r.room)||e==="PLAYING"&&(t===b.AUDIO?this.handleAudioPlaying(r):this.handleVideoPlaying(r))}).addEvent(U.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(U.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(U.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(U.REMOTE_PUBLISH_STATE_CHANGED,({room:r,prevMuteState:e,muteState:t})=>{if(!this.hitTest(r))return;let i=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,a=t.hasAudio||t.hasVideo||t.hasSmall,d=t.hasAuxiliary;!i&&a&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&d&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(U.SINGLE_CONNECTION_STAT,({room:r,stat:e})=>{this.hitTest(r)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("unload",this.handleUnload),this._eventMap.forEach((r,e)=>B.off(e,r)),this._eventMap.clear()}destroy(){this.uninstallEvents(),Qe.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(r){this.hitTest(r.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),r.params&&(V(r.params.frameWorkType)||(this._frameWorkType=r.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),V(r.params.component)||(this._component=r.params.component,this._basicInfo.uint32_component=this._component),V(r.params.language)||(this._language=r.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:r,detailCost:e}){if(this.hitTest(r)&&e){let{totalCost:t,local:i,dns:o,tcp:a,tls:d,request:p,response:_}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=i,this._pathJoinRoom.int32_schedule_dns=o,this._pathJoinRoom.int32_schedule_tcp=a,this._pathJoinRoom.int32_schedule_tls=d,this._pathJoinRoom.int32_schedule_request=p,this._pathJoinRoom.int32_schedule_response=_}}handleSignalConnectionStart({room:r}){this.hitTest(r)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:r,error:e}){this.hitTest(r)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof Y?Number(e.getExtraCode()||e.getCode()):H.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(r){this.hitTest(r.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(r){this.hitTest(r.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=r.code,r.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(r){this.hitTest(r.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=r.room.getSignalInfo())}handleJoinFailed({room:r,error:e}){this.hitTest(r)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(r){this.hitTest(r.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=r.publishedUserList||[])}handleSendFirstVideoFrame({room:r}){!this.hitTest(r)||this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(r){this.hitTest(r.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(r){this.hitTest(r.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(r){this.hitTest(r.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(r,e){var i;let t=`${r}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={userId:r,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:_e(oe({},jI),{msg_user_info:new Cu({userId:r,tinyId:(i=this._room.remotePublishedUserMap.get(r))==null?void 0:i.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:r,remotePublishedUser:e,streamType:t,subscribeState:i}){if(!this.hitTest(r))return;let{userId:o,tinyId:a,role:d}=e,p=new Cu({userId:o,tinyId:a,role:d==="anchor"?20:21}),_=Date.now(),S=`${o}_${t}`,v=this._remoteStreamStatMap.get(S);v&&v.subscribeStartTime===0&&(v.subscribeStartTime=_),t==="main"?(e.muteState.hasVideo&&(i.video||i.smallVideo)&&!this._pathMainVideoMap.has(S)&&this._pathMainVideoMap.set(S,{statsToReport:{msg_user_info:p,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:o,sendSubscribeCMDTime:_}),e.muteState.hasAudio&&i.audio&&!this._pathMainAudioMap.has(S)&&this._pathMainAudioMap.set(S,{statsToReport:{msg_user_info:p,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:o,sendSubscribeCMDTime:_})):e.muteState.hasAuxiliary&&i.auxiliary&&!this._pathAuxiliaryMap.has(S)&&this._pathAuxiliaryMap.set(S,{sendSubscribeCMDTime:_})}handleSubscribed({room:r,remotePublishedUser:e,streamType:t}){if(this.hitTest(r)){let i=`${e.userId}_${t}`,o=this._remoteStreamStatMap.get(i);o&&o.subscribedTime===0&&(o.subscribedTime=Date.now())}}handlePlayStart({track:r}){if(!xi(r)||!this.hitTest(r.room))return;let e=`${r.userId}_${r.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:r}){if(!xi(r)||!this.hitTest(r.room))return;let e=`${r.userId}_${r.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(r){let e=`${r.userId}_${r.streamType}`,t=Date.now(),i=this._pathMainVideoMap.get(e),o=this._remoteStreamStatMap.get(e);if(i&&(i.statsToReport.uint64_render_first_frame_time===0&&(i.statsToReport.uint64_render_first_frame_time=t),o)){let{statsToReport:d,playStreamTime:p,subscribedTime:_}=o;d.uint32_video_render_first===0&&p-_<=100&&(d.uint32_video_render_first=t-i.sendSubscribeCMDTime)}let a=this._pathAuxiliaryMap.get(e);if(a&&o){let{statsToReport:d,playStreamTime:p,subscribedTime:_}=o;d.uint32_video_render_first===0&&p-_<=100&&(d.uint32_video_render_first=t-a.sendSubscribeCMDTime)}}handleAudioPlaying(r){let e=`${r.userId}_${r.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(r){this.hitTest(r.room)&&(this._networkQuality.totalUplinkLoss+=r.uplink.loss,this._networkQuality.totalUplinkRTT+=r.uplink.rtt,this._networkQuality.count++,r.downlinks.forEach(({rtt:e,loss:t,userId:i,videoDelay:o,audioDelay:a})=>{let d=this._networkQuality.totalDownlinkRTTAndLossMap.get(i);if(d)d.totalRTT+=e,d.totalLoss+=t,o&&(d.totalVideoDelay=(d.totalVideoDelay||0)+o,d.videoDelayCount=(d.videoDelayCount||0)+1),a&&(d.totalAudioDelay=(d.totalAudioDelay||0)+a,d.audioDelayCount=(d.audioDelayCount||0)+1),d.count++;else{let p,_,S,v;o&&(_=o,S=1),a&&(p=a,v=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(i,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:p,totalVideoDelay:_,audioDelayCount:v,videoDelayCount:S})}}))}handleHeartbeatStats(r){if(this.hitTest(r.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:i}=r.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:o,uint32_video_enc_fps:a,uint32_video_width:d,uint32_video_height:p}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=o,this._localStreamStat.totalVideoFPS+=a,this._localStreamStat.totalVideoWidth+=d,this._localStreamStat.totalVideoHeight+=p,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:o}=t.msg_audio_status;Math.floor(o/Ci*100)>0&&(this._localStreamStat.totalAudioLevel+=o/Ci,this._localStreamStat.audioLevelCount++)}i.forEach(o=>{let{msg_user_info:a,msg_audio_status:d,msg_video_status:p}=o,_=a.str_identifier,S=this._room.remotePublishedUserMap.get(_);if(p.forEach(v=>{let A=v.uint32_video_stream_type===2,w=v.uint32_video_stream_type===7,M=`${_}_${A?"main":"auxiliary"}`,L=this._remoteStreamStatMap.get(M);if(!!L&&(A&&(S==null?void 0:S.remoteVideoTrack.isSubscribed)||w&&(S==null?void 0:S.remoteAuxiliaryTrack))){L.totalVideoFPS+=v.uint32_video_receive_fps,L.totalVideoBitrate+=v.uint32_video_codec_bitrate,L.videoCount++,L.statsToReport.uint32_video_width===0&&(L.statsToReport.uint32_video_width=v.uint32_video_width),L.statsToReport.uint32_video_height===0&&(L.statsToReport.uint32_video_height=v.uint32_video_height);let W=A?S.remoteVideoTrack:S.remoteAuxiliaryTrack;W.stat.jitterBufferDelay&&(L.videoJitterBufferDelay=W.stat.jitterBufferDelay),W.stat.framesReceived&&(L.statsToReport.uint32_video_consume_render_rate=Math.floor(W.stat.framesDecoded/W.stat.framesReceived*dd(10,6)))}}),d){let v=`${_}_${"main"}`,A=this._remoteStreamStatMap.get(v);this._remoteStreamStatMap.has(v)&&A&&(S==null?void 0:S.remoteAudioTrack.isSubscribed)&&(A.totalAudioBitrate+=d.uint32_audio_codec_bitrate,A.audioCount++,S.remoteAudioTrack.stat.jitterBufferDelay&&(A.audioJitterBufferDelay=S.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(d.uint32_audio_level/Ci*100)>0&&(A.totalAudioLevel+=d.uint32_audio_level/Ci,A.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:r}){this.hitTest(r)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:r}){r.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),r.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:r}){r.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),r.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:r,error:e}){let i={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof Y?e.getExtraCode()||e.getCode():H.UNKNOWN);r.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=i,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),r.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=i,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(r){return this._firstPublishedUserList.findIndex(e=>e.userId===r&&e.flag&_o)>=0}hasAudioFlag(r){return this._firstPublishedUserList.findIndex(e=>e.userId===r&&e.flag&go)>=0}hasAuxFlag(r){return this._firstPublishedUserList.findIndex(e=>e.userId===r&&e.flag&_s)>=0}hitTest(r){return r===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let r=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=r<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((r,e)=>{let{userId:t}=r,i=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(i){let{totalLoss:S,count:v,audioDelayCount:A,videoDelayCount:w,totalAudioDelay:M,totalVideoDelay:L}=i;r.statsToReport.uint32_avg_down_loss=Math.floor(S/v),A&&M&&(r.statsToReport.uint32_audio_network_p2p_delay=Math.floor(M/A),r.audioJitterBufferDelay&&(r.statsToReport.uint32_p2p_delay=Math.floor(r.statsToReport.uint32_audio_network_p2p_delay+r.audioJitterBufferDelay))),w&&L&&(r.statsToReport.uint32_video_network_p2p_delay=Math.floor(L/w))}r.videoCount>0&&(r.statsToReport.uint32_video_avg_fps=Math.floor(r.totalVideoFPS/r.videoCount),r.statsToReport.uint32_video_avg_bitrate=Math.floor(r.totalVideoBitrate/r.videoCount)),r.audioCount>0&&(r.statsToReport.uint32_audio_recv_bitrate=r.statsToReport.uint32_audio_bitrate=Math.floor(r.totalAudioBitrate/r.audioCount)),r.audioLevelCount>0&&(r.statsToReport.uint32_audio_play_db=Math.floor(r.totalAudioLevel/r.audioLevelCount*100));let{callDurationCalculator:o}=this._room;o&&(r.statsToReport.uint32_audio_play_time=o.getDuration(e,b.AUDIO),r.statsToReport.uint32_video_play_time=o.getDuration(e,b.VIDEO)),r.statsToReport.uint32_video_render_first=Math.min(r.statsToReport.uint32_video_render_first,Bs);let{badCaseDetector:a}=this._room,{dataFreeze:d,count:p}=a.getDataFreezeDuration(e),{renderFreeze:_}=a.getRenderFreezeDuration(e);r.statsToReport.uint32_video_block_count=p,r.statsToReport.uint32_video_block_time=Math.min(d,r.statsToReport.uint32_video_play_time),r.statsToReport.uint32_video_external_block_time=Math.min(_,r.statsToReport.uint32_video_play_time),a.isBlackStream(e)&&r.statsToReport.uint32_video_avg_fps===0?r.statsToReport.uint32_video_black_screen_subjective=1:r.statsToReport.uint32_video_black_screen_subjective=0,(r.subscribeStartTime===0||r.subscribeStartTime-r.streamAddedTime>100||r.playStreamTime===0)&&(this._pathMainAudioMap.delete(e),this._pathMainVideoMap.delete(e),r.statsToReport.uint32_video_render_first=0)}),this._pathMainAudioMap.forEach((r,e)=>{if(!this.hasAudioFlag(r.userId)){this._pathMainAudioMap.delete(e);return}r.statsToReport.uint64_play_first_frame_time-r.statsToReport.uint64_start_enter_time>Bs&&(r.statsToReport.uint64_play_first_frame_time=r.statsToReport.uint64_start_enter_time+Bs)}),this._pathMainVideoMap.forEach((r,e)=>{if(!this.hasVideoFlag(r.userId)){this._pathMainVideoMap.delete(e);return}r.statsToReport.uint64_render_first_frame_time-r.statsToReport.uint64_start_enter_time>Bs&&(r.statsToReport.uint64_render_first_frame_time=r.statsToReport.uint64_start_enter_time+Bs)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Bs&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Bs)}getReportData(){this._basicInfo.uint32_networkType=Oa();let r={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Cu({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Ld(this._signalInfo.relayIp),uint32_client_ip:Ld(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*dd(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Ld(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return fl(r),r}report(){return N(this,null,function*(){try{this.prepareReport();let r=this.getReportData();yield this.upload(r),this.initData()}catch(r){this._log.warn(r)}finally{this.isDestroyed&&(this._room=null)}})}upload(r){return N(this,null,function*(){if(r.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Kh(r),i=t instanceof ArrayBuffer,o=`${Ao(e,fo.KEY_POINT)}&gzip=${+i}`,a=!1;navigator.sendBeacon&&(a=navigator.sendBeacon(o,t));let d=[this.uploadKVStat(Z),this.uploadKVStat(vs)];a||d.push(Fn({url:o,body:t})),yield Promise.all(d)})}setConnectionType(r){this.connectionType=r,this._basicInfo.uint32_connection_type=r}uploadKVStat(r){return N(this,null,function*(){let e=r.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=_e(oe({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield Kh(e),i=`${Ao(+this._room.sdkAppId,fo.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(i,t)),o||Fn({url:i,body:t})})}};j([wr({settings:{timeout:500,retries:3}})],Sh.prototype,"upload",1);var Bs=5e3,jI={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_render_first:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Cu=class{constructor(r){this.str_identifier=String(r.userId),this.str_tinyid=String(r.tinyId||0),this.uint32_role=r.role}},uE=Sh;var Tf=class{constructor(){E(this,"_startTime");E(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=ge())}stop(){this._endTime===0&&(this._endTime=ge())}getDuration(){return this._endTime===0?ge()-this._startTime:this._endTime-this._startTime}get endTime(){return this._endTime}},dc=Tf;var Sf=class{constructor(r){E(this,"_room",null);E(this,"_durationMap");E(this,"_eventMap",new Map);this._room=r.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(U.SUBSCRIBE_SUCCESS,this.handleSubscribed).set(U.UNSUBSCRIBE_SUCCESS,this.handleStreamStopped).set(U.REMOTE_PUBLISH_STATE_CHANGED,({room:r,prevMuteState:e,muteState:t})=>{var a;let{userId:i}=t;if(!this.hitTest(r))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${i}_${"main"}`,b.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${i}_${"main"}`,b.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${i}_${"auxiliary"}`,b.VIDEO);let o=(a=this._room)==null?void 0:a.remotePublishedUserMap.get(i);!o||(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(i,b.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(i,b.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(i,b.VIDEO,"auxiliary"))}),this._eventMap.forEach((r,e)=>B.on(e,r,this))}uninstallEvents(){this._eventMap.forEach((r,e)=>B.off(e,r,this)),this._eventMap.clear()}handleSubscribed({room:r,streamType:e,remotePublishedUser:t}){if(!this.hitTest(r))return;let{userId:i}=t,o=`${i}_${e}`;if(t.muteState.hasAudio&&e==="main")if(t.remoteAudioTrack.isSubscribed){let a=new dc,d=this._durationMap.get(o);d?this.isRecording(d.audio)||d.audio.push(a):this._durationMap.set(o,{userId:i,type:e,audio:[a],video:[]})}else this.stopDurationItem(o,b.AUDIO);if(t.muteState.hasVideo||t.muteState.hasAuxiliary)if(t.remoteVideoTrack.isSubscribed||t.remoteAuxiliaryTrack.isSubscribed){let a=new dc,d=this._durationMap.get(o);d?this.isRecording(d.video)||d.video.push(a):this._durationMap.set(o,{userId:i,type:e,audio:[],video:[a]})}else this.stopDurationItem(o,b.VIDEO)}handleStreamStopped({room:r,streamType:e,remotePublishedUser:t}){if(!this.hitTest(r))return;let{userId:i}=t,o=`${i}_${e}`;this.stopDurationItem(o,b.AUDIO),this.stopDurationItem(o,b.VIDEO)}isRecording(r){return r.findIndex(e=>e.endTime===0)>=0}addDuractionItem(r,e,t){let i=`${r}_${t}`,o=new dc,a=this._durationMap.get(i);a?this.isRecording(a[e])||a[e].push(o):this._durationMap.set(i,{userId:r,type:t,audio:e===b.AUDIO?[o]:[],video:e===b.AUDIO?[]:[o]})}stopDurationItem(r,e){if(this._durationMap.has(r)){let i=this._durationMap.get(r)[e].find(o=>o.endTime===0);i&&i.stop()}}hitTest(r){return this._room===r}getDuration(r,e){return this._durationMap.has(r)?this._durationMap.get(r)[e].reduce((i,o)=>i+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},lE=Sf;var If=class{constructor(r){E(this,"_room");E(this,"_renderFreezeMap",new Map);E(this,"_isVideoPlayingEventFiredMap",new Map);E(this,"_dataFreezeMap",new Map);E(this,"_monitorFreezeData",new Map);E(this,"_eventMap",new Map);this._room=r.room,this.installEvents()}installEvents(){this._eventMap.set(U.LEAVE_SUCCESS,({room:r})=>{this.hitTest(r)&&this.stop()}).set(U.PLAY_TRACK_START,this.onPlayTrackStart).set(U.UNSUBSCRIBE_SUCCESS,({room:r,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(r))return;let{userId:i}=t,o=`${i}_${e}`;this.stopDataFreeze({key:o,userId:i,type:e})}).set(U.REMOTE_PUBLISH_STATE_CHANGED,({room:r,prevMuteState:e,muteState:t})=>{if(!this.hitTest(r))return;let{userId:i}=t;if(e.hasVideo&&!t.hasVideo){let o="main",a=`${t.userId}_${o}`;this.stopDataFreeze({key:a,userId:i,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",a=`${t.userId}_${o}`;this.stopDataFreeze({key:a,userId:i,type:o})}}).set(U.PLAYER_STATE_CHANGED,({track:r,state:e,reason:t,type:i})=>{if(!(!xi(r)||!this.hitTest(r.room)||i!==b.VIDEO)){if(e==="PLAYING"){let o=`${r.userId}_${r.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===b.MUTE?this.onVideoTrackMuted(r):t===b.UNMUTE&&this.onVideoTrackUnmuted(r)}}).set(U.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((r,e)=>B.on(e,r,this))}uninstallEvents(){this._eventMap.forEach((r,e)=>B.off(e,r,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(r){if(!r.isSubscribed)return;let{userId:e,streamType:t}=r,i=`${e}_${t}`,o=this._dataFreezeMap.get(i),a=new dc;o?o.durationItemList.push(a):this._dataFreezeMap.set(i,{userId:e,type:t,durationItemList:[a],isFreezing(){let d=this.durationItemList[this.durationItemList.length-1];return d&&d.endTime===0}})}onVideoTrackUnmuted(r){if(!r.isSubscribed)return;let{userId:e,streamType:t}=r,i=`${e}_${t}`;this.stopDataFreeze({key:i,userId:e,type:t})}onHearBeatReport({room:r,report:e}){!this.hitTest(r)||e.msg_down_stream_info.forEach(t=>{let i=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!i)return;let{userId:o,muteState:a}=i;t.msg_video_status.forEach(d=>{d.uint32_video_stream_type===2&&a.hasVideo&&!a.videoMuted&&i.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:d.uint32_video_dec_fps,type:"main"}),d.uint32_video_stream_type===7&&a.hasAuxiliary&&i.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:d.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:r,userId:e,type:t}){let i=this._dataFreezeMap.get(r);if(!i||!i.isFreezing())return;let o=i.durationItemList[i.durationItemList.length-1];o.stop();let a=o.getDuration();a>ju?this._monitorFreezeData.set(r,{userId:e,type:t,duration:a}):i.durationItemList.pop()}getTotalDuration(r){return r.reduce((e,t)=>{let i=t.getDuration();return e+Math.min(i,5e3)},0)}handleRenderFreeze(i){return N(this,arguments,function*({userId:r,fps:e,type:t}){let o=`${r}_${t}`,a=this._renderFreezeMap.get(o);if(e<=2){let d=ge();a&&!a.isFreeze&&(a.freezeTimeline.push({startTime:d,endTime:0}),a.isFreeze=!0),a||this._renderFreezeMap.set(o,{userId:r,type:t,isFreeze:!0,freezeTimeline:[{startTime:d,endTime:0}],renderFreezeTotal:0})}else if(a&&a.isFreeze){a.isFreeze=!1;let d=a.freezeTimeline.pop();if(d){d.endTime=ge();let p=d.endTime-d.startTime;a.freezeTimeline.push(d),a.renderFreezeTotal+=Math.min(5e3,p)}}})}onPlayTrackStart({track:r}){if(!xi(r)||!this.hitTest(r.room)||r.kind!==b.VIDEO||r.hasFlag)return;let e=`${r.userId}_${r.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(r){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(r);if(t){if(t.isFreezing()){let i=t.durationItemList[t.durationItemList.length-1];i.stop(),i.getDuration()<ju&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(r){let e=this._renderFreezeMap.get(r),t=0,i=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let o=ge(),a=e.freezeTimeline[e.freezeTimeline.length-1],d=o-a.startTime;t=e.renderFreezeTotal+Math.min(d,5e3),i=e.freezeTimeline.length}return{renderFreeze:t,count:i}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(r){return this._isVideoPlayingEventFiredMap.has(r)?!this._isVideoPlayingEventFiredMap.get(r):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(r){return r===this._room}destroy(){this.uninstallEvents()}},hE=If;var mE=$t(nr(),1);var zI=[1,0,0,0,1,1,0,1],Ih=class extends Ar{constructor(r,e){if(super(r,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),r instanceof vt)try{this.setTexBuffer(zI)}catch(t){r.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${t.message||t}`}))}}draw2d(r,e,t,i,o){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let a=super.draw2d(r,e,t,i,o);return this.ctx2d.restore(),a}return!1}render(r){var e;return(e=this.input)!=null&&e.requestFrame(r)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var yf=class{constructor(r,e){this.node=r;this.layout=e;E(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},yh=class extends Ar{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});E(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let i=new yf(e,t);this.inputs[t.zIndex]=i}resize(e,t){let i=this.inputs.reduce((o,a)=>a?Object.assign(o,{width:Math.max(o.width,a.right),height:Math.max(o.height,a.bottom)}):o,{width:0,height:0});super.resize(i.width,i.height),this.context instanceof vt&&this.inputs.forEach(o=>{if(o){let a=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,a):o.positionBuffer=this.createBuffer(a)}})}connect(e,...t){return super.connect(e,...t),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),!this.inputs.reduce((o,a)=>(!a||!a.node.requestFrame(e))&&o,!0)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let a=this.inputs[o];a&&(a.node.useTexture(),this.draw(a.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((i,o)=>(!o||!o.node.requestFrame(e))&&i,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let i=0;i<this.inputs.length;i++){let o=this.inputs[i];o&&this.draw2d(o.node.image,o.x,o.y,o.width,o.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:i,width:o,height:a,name:d}=this,p=Date.now(),_=(e-this.lastInfo.totalFrames)/((p-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:i,width:o,height:a,timestamp:p,fps:_,name:d},oe({parent:this.inputs.filter(S=>S).map(S=>S.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,i;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof vt))try{(i=this.context.ctx)==null||i.deleteBuffer(e.positionBuffer)}catch(o){}})}};var JI=`#version 300 es
63
152
  in vec2 a_position;
64
153
  in vec2 a_texCoord;
65
154
  out vec2 v_texCoord;
66
155
  void main() {
67
156
  gl_Position = vec4(a_position.x, a_position.y, 0, 1);
68
157
  v_texCoord = a_texCoord;
69
- }`,B_=`#version 300 es
158
+ }`,qI=`#version 300 es
70
159
  precision highp float;
71
160
  uniform sampler2D u_texture;
72
161
  uniform sampler2D mask;
@@ -75,13 +164,13 @@ in vec2 v_texCoord;
75
164
  out vec4 outColor;
76
165
  void main() {
77
166
  outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
78
- }`,Oa=class extends Ni{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,logger:e.log});l(this,"_bgTexture");l(this,"_waterMarkTexture");l(this,"_lastMaskTexture");l(this,"_lastMaskFbo");l(this,"_textureValid",!1);l(this,"_selfieTextureValid",!1);l(this,"_selfieSegmentation");l(this,"wasm");l(this,"_prePrograme");l(this,"_segmentationMask");l(this,"_weixin",!1);t.selfieSegmentation&&(this._selfieSegmentation=t.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(t)}catch(r){e.log.error(r),e.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`}))}}init(e){var o,n;let t=e.Wasm,r=this.context.ctx;if(this.wasm=new t.AllIn1(r),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,e.waterMark){let{x:a,y:c,width:d,height:h}=e.waterMark;this.wasm.setWaterMark(a,c,d,h)}if(e.beautyParams){let{beauty:a,brightness:c,ruddy:d}=e.beautyParams;this.wasm.setBeauty(a,c,d,(o=this.context._canvas)==null?void 0:o.width,(n=this.context._canvas)==null?void 0:n.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(r.uniform1i(r.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(r.uniform1i(r.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let a=this.context.createShader(r.FRAGMENT_SHADER,B_),c=this.context.createShader(r.VERTEX_SHADER,V_);this._prePrograme=this.context.createProgram(c,a),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var r;let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),t.activeTexture(t.TEXTURE1),(r=this._selfieSegmentation)==null||r.bindTexture2d(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),t.drawArrays(t.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}render(e){var c,d,h,u;let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback(r);let{videoWidth:o,videoHeight:n}=r;r.width=o,r.height=n;let a=!1;if(this.totalFrames)this._weixin?this.useTexture():(c=this._selfieSegmentation)==null||c.bindTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}return this.width!==o||this.height!==n||!a?(this.resize(o,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,r),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(t.activeTexture(t.TEXTURE1),(d=this._selfieSegmentation)==null||d.bindTexture2d(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),(h=this._selfieSegmentation)==null||h.bindTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,o,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,n,0)),(u=this._selfieSegmentation)==null||u.send(o,n),this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),!1}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var Ma=class extends em.EventEmitter{constructor(e){super();this.room=e;l(this,"videoContext");l(this,"_glVideoContext");l(this,"_2dVideoContext");l(this,"destination");l(this,"smallVideoContext");l(this,"smallDestination");l(this,"smallTrackSource");l(this,"smallImageSource");l(this,"_isMirror",!1);l(this,"cameraTrack");l(this,"cameraNode");l(this,"mirrorNode");l(this,"mixNode");l(this,"screenTrack");l(this,"screenNode");l(this,"selfModel",!1);l(this,"blurRadius",3);l(this,"arTrack");l(this,"Wasm");l(this,"waterMarkNode");l(this,"_waterMarkOption");l(this,"watermarkImageList",[]);l(this,"_beautyParams");l(this,"isUsingArTrack",!1);l(this,"_isMixScreen",!1);l(this,"_virtualBackground");l(this,"_virtualBackgroundAbortCallback");l(this,"virtualBackgroundInstance");l(this,"_bgAssetPath");l(this,"log",R.createLogger({id:"vm"}));l(this,"_checkId",0);l(this,"_use2d",!1);l(this,"_autoSwitchRenderMode",!0);l(this,"_selfieSegmentation");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new ze({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new ze({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new Oe({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on("unavailable",e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update()})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=ee.run(tr,()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),ee.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Vr||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?N.addFailedEvent({key:r,error:t}):N.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new Oe({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e){return this._selfieSegmentation=e,this._selfieSegmentation.changeModel()}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,settings:n,player:a}=r;o?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new ca(this.smallVideoContext,o,this.log)),this.smallVideoContext.frameRate=o.frameRate,this.smallDestination.resolution=o,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=n.width,this.smallTrackSource.height=n.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),Vr&&a.setCanvas(e);let c=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),c=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${c?c.label:"no output track"}`),r.setOutputMediaStreamTrack(c)}catch(r){this.log.error("set main output failed",r)}}update(){return f(this,null,function*(){var r,o;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:t}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Ke===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Ni?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Ni?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new aa(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new Oa(this.videoContext,{input:this.cameraTrack.mediaTrack,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=t.frameRate,this._use2d){let n=this.cameraNode;n.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new va(this.videoContext,this.log)),n=n.connect(this.mirrorNode),n.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new Da(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption&&(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y),(r=this.waterMarkNode)==null||r.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(o=this.screenNode)==null||o.connect(this.mixNode,{zIndex:0}),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,r,o,n;if(e instanceof rt)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof me)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof ei){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let a=e.mediaTrack;return e.setOutputMediaStreamTrack(a)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var t;e instanceof rt?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof me?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof ei&&e.source&&e.source.context.destroy()}setCameraTrack(e){return f(this,null,function*(){this.cameraTrack=e,this.update()})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,t){return f(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let o=r.getContext("2d");if(!o)throw new y({code:S.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:c,width:d,height:h})=>{o.drawImage(n,a,c,d,h)}),Ys(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return f(this,null,function*(){var u,p;let t;try{t=yield Ys((e==null?void 0:e.imageElement)||e.imageUrl)}catch(_){throw new y({code:S.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:o=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:d=2}=e;this.watermarkImageList.some(_=>_.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(_=>_.type!==c),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:d,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((u=this.cameraTrack)==null?void 0:u.settings.width,(p=this.cameraTrack)==null?void 0:p.settings.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:d,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(_,I)=>_==="imageUrl"?void 0:I))})}deleteWatermark(e="watermark"){return f(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return f(this,null,function*(){var t,r,o;(t=this.waterMarkNode)==null||t.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((r=this.cameraTrack)==null?void 0:r.settings.width,(o=this.cameraTrack)==null?void 0:o.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return f(this,null,function*(){if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield Ys(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type)}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new y({code:S.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((t=this.mirrorNode)==null||t.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return f(this,null,function*(){var e;!((e=this.cameraTrack)!=null&&e.mediaTrack)||(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};var $_=0;var ka=class extends F{constructor(e){super("room");this.seq=++$_;this.role="anchor";this.joinParams=null;this.localTracks=new Set;this.enableAutoPlayDialog=!0;this.autoReceiveAudio=!0;this.autoReceiveVideo=!0;this.checkSystemResult={result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}};this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null};this._isUsingCachedSchedule=!1;this._log=R.createLogger({id:`r${this.seq}`});this._joinedTimestamp=0;this.isDestroyed=!1;this.useStringRoomId=!!e.useStringRoomId,ue(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),ue(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),ue(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Yh({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Kh({room:this}),this.badCaseDetector=new Zh({room:this}),this.audioManager=new Qn(this),this.videoManager=new Ma(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(z(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Ze(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:o,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(gc([a,a]),Yi(`https://${a}`)):(o&&Yi(o),n&&gc(n))}T.once(g.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Vt.main,sched_back_domain:Vt.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return f(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let o=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new y({code:S.INVALID_OPERATION,message:w({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(be.INVALID_DESTROY),new y({code:S.INVALID_OPERATION,message:w({key:x.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,T.emit(g.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var o,n;let r=k();try{let{isCached:a,result:c,detailCost:d}=yield zl({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Ie,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=a,this._log.info(`schedule cache:${+a} ${Rt(c,{keysToExclude:["username","credential"]})}`),a&&T.once(g.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=v(v({},this.scheduleResult),c),K((o=c.config)==null?void 0:o.retryCount)&&qa(c.config.retryCount),z((n=c.config)==null?void 0:n.loggerDomain)&&Yi(c.config.loggerDomain),T.emit(g.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:d}),N.addSuccessEvent({key:521700,cost:k()-r,split:50})}catch(a){throw N.addFailedEvent({key:521700,error:a}),a}})}};var im=Se(De(),1);var tm=Symbol("instance"),Lx=Symbol("abortCtrl"),Tl=Symbol("cacheResult"),xo=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Vo.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},wo=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function F_(s){return typeof s=="object"&&s&&"then"in s}var Uo=new Map;function Sl(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let c=Uo.get(t)||[];Uo.has(t)||Uo.set(t,c),c.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...c){let d=this;if(e.context&&(d=ce.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),d.state===i)return d[Tl];d.state instanceof xo&&d.state.action==e.abortAction&&d.state.abort(d);let h=null;if(Array.isArray(s)?s.length==0?d.state instanceof xo&&d.state.abort(d):(typeof d.state!="string"||!s.includes(d.state))&&(h=new wo(d._state,`${d.name} ${n} to ${i} failed: current state ${d._state} not in from config`)):s!==d.state&&(h=new wo(d._state,`${d.name} ${n} to ${i} failed: current state ${d._state} not from ${s}`)),h)if(e.fail)e.fail.call(this,h);else{if(e.ignoreError)return h;throw h}let u=d.state,p=new xo(u,i,n);Vo.call(d,p);let _=C=>{var D;return d[Tl]=C,p.aborted||(Vo.call(d,i),(D=e.success)===null||D===void 0||D.call(this,d[Tl])),C},I=C=>{let D=C instanceof Error?C.message:String(C);if(Vo.call(d,u,C),e.fail)e.fail.call(this,new wo(d._state,`action '${n}' failed :${D}`,C instanceof Error?C:new Error(D)));else{if(e.ignoreError)return C;throw C}};try{let C=a.apply(this,c);return F_(C)?C.then(_).catch(I):_(C)}catch(C){I(C)}}}}var H_=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function Vo(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(ce.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var ce=class extends im.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=ce.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[tm];r?this.name=r.name+"-"+r.count++:t[tm]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=Uo.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);Uo.has(a)&&(a.stateDiagram.forEach(d=>t.add(d)),a.allStates.forEach(d=>n.add(d))),e.forEach(({from:d,to:h,action:u})=>{typeof d=="string"?r.push({from:d,to:h,action:u}):d.length?d.forEach(p=>{r.push({from:p,to:h,action:u})}):o.push({to:h,action:u})}),r.forEach(({from:d,to:h,action:u})=>{n.add(d),n.add(h),n.add(u+"ing"),t.add(`${d} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${d} : ${u} \u{1F534}`)}),o.forEach(({to:d,action:h})=>{t.add(`${h}ing --> ${d} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==d&&t.add(`${u} --> ${h}ing : ${h}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=ce.instances.get(i),e||ce.instances.set(i,e=new ce(i,void 0,Object.create(ce.prototype)))):(e=ce.instances2.get(i),e||ce.instances2.set(i,e=new ce(i.constructor.name,void 0,Object.create(ce.prototype)))),e}static getState(i){var e;return(e=ce.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){H_(ce.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Vo.call(this,i)}};ce.STATECHANGED="stateChanged";ce.UPDATEAFSM="updateAFSM";ce.INIT="[*]";ce.ON="on";ce.OFF="off";ce.instances=new Map;ce.instances2=new WeakMap;var pm=Se(De());var Il=Se(ll());var rm=s=>{let i=le(s),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var o;if(t.ssrcs&&!E(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((o=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:o.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function sm(s){var e;let i=[];for(let t=0;t<s.rtp.length;t++){if(["rtx","red","ulpfec"].includes(s.rtp[t].codec))continue;let r=s.fmtp.filter(o=>o.payload===s.rtp[t].payload)[0];i.push({payload:s.rtp[t].payload,codec:s.rtp[t].codec,fmtp:r?r.config:"",rate:s.rtp[t].rate,rtx:((e=s.rtp[t+1])==null?void 0:e.codec)==="rtx"?s.rtp[t+1].payload:0,rtcpFb:((s==null?void 0:s.rtcpFb)||[]).filter(o=>o.payload===s.rtp[t].payload).map(({type:o,subtype:n})=>({id:o,params:n?[n]:[]}))})}return i}function G_(){return f(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=le(i.sdp),t=sm(e.media[0]);return s.close(),t})}var om=(s,i)=>f(void 0,null,function*(){var c;let e=le(s),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let r=e.media[0],o=e.media[1];r.ext&&(t.audio.extensions=r.ext.map(d=>({id:d.value,uri:d.uri}))),o.ext&&(t.video.extensions=o.ext.map(d=>({id:d.value,uri:d.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channel:r.rtp[0].encoding,rtcpFb:[],rtx:0};(c=r.rtcpFb)==null||c.forEach(({payload:d,type:h,subtype:u})=>{if(d===n.payload){let p={id:h,params:[]};u&&p.params.push(u),n.rtcpFb.push(p)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...sm(o)].filter(d=>a.includes(d.codec.toLocaleLowerCase())),t.video.decoders=(yield G_()).filter(d=>["h264","vp8"].includes(d.codec.toLocaleLowerCase())),t}),nm=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=le(e),o={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:s.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:m.TRANSCEIVER_DIRECTION_RECVONLY,ext:s.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:s.dtls.hash,hash:s.dtls.fingerprint},fmtp:[{payload:s.audio.codecs[0].payload,config:s.audio.codecs[0].fmtp}],icePwd:s.ice.password,iceUfrag:s.ice.ufrag,mid:"0",payloads:String(s.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:m.AUDIO,setup:s.dtls.setup,rtcpFb:s.audio.codecs[0].rtcpfb.map(a=>({payload:s.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:s.audio.codecs[0].payload,codec:s.audio.codecs[0].codec,rate:s.audio.codecs[0].rate,encoding:s.audio.codecs[0].channels}]};return o.media.push(n),[1,2,3].forEach(a=>{o.media.push(Al({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),mt(o)},Al=({mid:s,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let o={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:m.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(s),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:m.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r)(i.video.decoders||i.video.codecs).forEach(n=>{Ir(o,n)});else{let n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Ir(o,a)}return o},Ir=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.rtcpFb||[],...(i.rtcpfb||i.rtcpFb).map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],s.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(s.payloads=`${s.payloads} ${i.rtx}`,s.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),s.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function W_(s){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);s.ext&&(s.ext=s.ext.filter(e=>!i.has(e.uri)))}function J_(s){if(!s.rtcpFb)return;let i=[];s.rtcpFb.forEach((e,t)=>{var r;i.push(e),s.rtcpFb&&((r=s.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),s.rtcpFb=i}function j_(s){s.type===m.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function q_(s){s.type===m.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var am=(s,i,e)=>{let t=Il.default.parse(s);return t.media.forEach((r,o)=>{var n;(r.type===m.AUDIO||r.type===m.VIDEO)&&(J_(r),j_(r),q_(r),W_(r),r.type===m.VIDEO&&(o<4?(r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Ir(r,a))):e&&(r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],(e.video.decoders||e.video.codecs).forEach(a=>Ir(r,a))))),((n=r.payloads)==null?void 0:n.includes("datachannel"))&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),Il.default.write(t)};var cm=Se(De());var Pa=class extends cm.EventEmitter{constructor(e){super();this.room=e;l(this,"mainFpsHealth",1);l(this,"mainBitrateHealth",1);l(this,"badMainBitrateHealthCount",0);l(this,"lastEmitBadHealthTime",0);l(this,"log");!fe&&It&&T.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:o}){if(!(e||t===7||o!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){T.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};l(Pa,"EVENT_BAD_HEALTH","bad_health");var dm=Pa;function lm({seiMessageList:s,isAudio:i}){return new TransformStream({transform(e,t){let r=e;i?audioEncodePipeline.forEach(o=>{r=o({frame:r})}):videoEncodePipeline.forEach(o=>{r=o({frame:r,seiMessageList:s})}),t.enqueue(r)}})}function um(s,i){return new TransformStream({transform(e,t){let r=e;videoDecodePipeline.forEach(o=>{r=o({frame:r,onSEI:n=>{n.forEach(a=>{self.postMessage({type:"sei",seiPayloadType:a.seiPayloadType,data:a.seiPayload.buffer,userId:s,streamType:i})})}})}),t.enqueue(r)}})}function hm(s){let i=[Ri],e=[Kd,zd,Yd,Qd,lm,um],t=()=>{let d=[],h=[],u=[];self.onmessage=p=>{p.data.type==="sei"&&(p.data.isMain?(d.push(p.data.data),p.data.small&&u.push(p.data.data)):h.push(p.data.data))},self.onrtctransform=p=>{let{options:_}=p.transformer,I=_.isReceiver?um(_.userId,_.streamType):lm({seiMessageList:_.isMain?_.small?u:d:h});p.transformer.readable.pipeThrough(I).pipeTo(p.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
79
- const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
80
- const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
81
- const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(d=>`const ${d.name}=(()=>${d.toString()})()`).join(`
167
+ }`,vh=class extends io{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,logger:e.log});E(this,"_bgTexture");E(this,"_waterMarkTexture");E(this,"_lastMaskTexture");E(this,"_lastMaskFbo");E(this,"_textureValid",!1);E(this,"_selfieTextureValid",!1);E(this,"_selfieSegmentation");E(this,"wasm");E(this,"_prePrograme");E(this,"_segmentationMask");E(this,"_weixin",!1);t.selfieSegmentation&&(this._selfieSegmentation=t.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(t)}catch(i){e.log.error(i),e.destroy(new Y({code:H.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${i.message||i}`}))}}init(e){var o,a;let t=e.Wasm,i=this.context.ctx;if(this.wasm=new t.AllIn1(i),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,e.waterMark){let{x:d,y:p,width:_,height:S}=e.waterMark;this.wasm.setWaterMark(d,p,_,S)}if(e.beautyParams){let{beauty:d,brightness:p,ruddy:_}=e.beautyParams;this.wasm.setBeauty(d,p,_,(o=this.context._canvas)==null?void 0:o.width,(a=this.context._canvas)==null?void 0:a.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),i.uniform1i(i.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(i.uniform1i(i.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(i.uniform1i(i.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),i.uniform1i(i.getUniformLocation(this.program,"lastMask"),4),this._weixin){let d=this.context.createShader(i.FRAGMENT_SHADER,qI),p=this.context.createShader(i.VERTEX_SHADER,JI);this._prePrograme=this.context.createProgram(p,d),i.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),i.uniform1i(i.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var i;let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),t.activeTexture(t.TEXTURE1),(i=this._selfieSegmentation)==null||i.bindTexture2d(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),t.drawArrays(t.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}render(e){var p,_,S,v;let t=this.context.ctx,{image:i}=this;this.tryVideoFrameCallback(i);let{videoWidth:o,videoHeight:a}=i;i.width=o,i.height=a;let d=!1;if(this.totalFrames)this._weixin?this.useTexture():(p=this._selfieSegmentation)==null||p.bindTexture(),d=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;d=this._textureValid,this._textureValid=!0}return this.width!==o||this.height!==a||!d?(this.resize(o,a),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,i)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,i),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(t.activeTexture(t.TEXTURE1),(_=this._selfieSegmentation)==null||_.bindTexture2d(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),(S=this._selfieSegmentation)==null||S.bindTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,o,a):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,a,0)),(v=this._selfieSegmentation)==null||v.send(o,a),this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),!1}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var Ah=class extends mE.EventEmitter{constructor(e){super();this.room=e;E(this,"videoContext");E(this,"_glVideoContext");E(this,"_2dVideoContext");E(this,"destination");E(this,"smallVideoContext");E(this,"smallDestination");E(this,"smallTrackSource");E(this,"smallImageSource");E(this,"_isMirror",!1);E(this,"cameraTrack");E(this,"cameraNode");E(this,"mirrorNode");E(this,"mixNode");E(this,"screenTrack");E(this,"screenNode");E(this,"selfModel",!1);E(this,"blurRadius",3);E(this,"arTrack");E(this,"Wasm");E(this,"waterMarkNode");E(this,"_waterMarkOption");E(this,"watermarkImageList",[]);E(this,"_beautyParams");E(this,"isUsingArTrack",!1);E(this,"_isMixScreen",!1);E(this,"_virtualBackground");E(this,"_virtualBackgroundAbortCallback");E(this,"virtualBackgroundInstance");E(this,"_bgAssetPath");E(this,"log",J.createLogger({id:"vm"}));E(this,"_checkId",0);E(this,"_use2d",!1);E(this,"_autoSwitchRenderMode",!0);E(this,"_selfieSegmentation");E(this,"encodePipeline",[]);E(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new hr({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new hr({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new vt({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on("unavailable",e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update()})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=Qe.run(Ts,()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),Qe.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Ra||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let i=e==="videoCtxGl"?512700:512701;t?Z.addFailedEvent({key:i,error:t}):Z.addSuccessEvent({key:i})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new vt({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e){return this._selfieSegmentation=e,this._selfieSegmentation.changeModel()}_setMainOutput(e){var t;try{let i=this.cameraTrack,{small:o,settings:a,player:d}=i;o?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new Kl(this.smallVideoContext,o,this.log)),this.smallVideoContext.frameRate=o.frameRate,this.smallDestination.resolution=o,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=a.width,this.smallTrackSource.height=a.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),Ra&&d.setCanvas(e);let p=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),p=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${p?p.label:"no output track"}`),i.setOutputMediaStreamTrack(p)}catch(i){this.log.error("set main output failed",i)}}update(){return N(this,null,function*(){var i,o;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:t}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Gr===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof io?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof io?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Yl(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new vh(this.videoContext,{input:this.cameraTrack.mediaTrack,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=t.frameRate,this._use2d){let a=this.cameraNode;a.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new Ih(this.videoContext,this.log)),a=a.connect(this.mirrorNode),a.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new yh(this.videoContext,this.log),a.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption&&(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y),(i=this.waterMarkNode)==null||i.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(o=this.screenNode)==null||o.connect(this.mixNode,{zIndex:0}),a=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),a.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,i,o,a;if(e instanceof Xr)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof yt)return this.log.info("change video input",(i=e.mediaTrack)==null?void 0:i.label),this.setCameraTrack(e);if(e instanceof di){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let d=e.mediaTrack;return e.setOutputMediaStreamTrack(d)}this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var t;e instanceof Xr?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof yt?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof di&&e.source&&e.source.context.destroy()}setCameraTrack(e){return N(this,null,function*(){this.cameraTrack=e,this.update()})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,t){return N(this,null,function*(){let i=document.createElement("canvas");t&&e&&(i.height=t,i.width=e);let o=i.getContext("2d");if(!o)throw new Y({code:H.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((a,d)=>a.zIndex-d.zIndex),this.watermarkImageList.forEach(({image:a,x:d,y:p,width:_,height:S})=>{o.drawImage(a,d,p,_,S)}),Vd(i.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return N(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return N(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return N(this,null,function*(){var v,A;let t;try{t=yield Vd((e==null?void 0:e.imageElement)||e.imageUrl)}catch(w){throw new Y({code:H.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:i=0,y:o=0,width:a=t.width,height:d=t.height,type:p="watermark",zIndex:_=2}=e;this.watermarkImageList.some(w=>w.type===p)?(this.watermarkImageList=this.watermarkImageList.filter(w=>w.type!==p),this.pushWaterMarkImageList({x:i,y:o,width:a,height:d,image:t,zIndex:_,type:p,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((v=this.cameraTrack)==null?void 0:v.settings.width,(A=this.cameraTrack)==null?void 0:A.settings.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:i,y:o,width:a,height:d,image:t,zIndex:_,type:p,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(w,M)=>w==="imageUrl"?void 0:M))})}deleteWatermark(e="watermark"){return N(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,i)=>t==="imageUrl"?void 0:i)),yield this.freshWatermark()})}freshWatermark(){return N(this,null,function*(){var t,i,o;(t=this.waterMarkNode)==null||t.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((i=this.cameraTrack)==null?void 0:i.settings.width,(o=this.cameraTrack)==null?void 0:o.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return N(this,null,function*(){if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield Vd(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type)}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new Y({code:H.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((t=this.mirrorNode)==null||t.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return N(this,null,function*(){var e;!((e=this.cameraTrack)!=null&&e.mediaTrack)||(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var i;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(i=this.room)==null||i.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var i;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(i=this.room)==null||i.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};var XI=0;var Ch=class extends De{constructor(e){super("room");this.seq=++XI;this.role="anchor";this.joinParams=null;this.localTracks=new Set;this.enableAutoPlayDialog=!0;this.autoReceiveAudio=!0;this.autoReceiveVideo=!0;this.checkSystemResult={result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}};this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null};this._isUsingCachedSchedule=!1;this._log=J.createLogger({id:`r${this.seq}`});this._joinedTimestamp=0;this.isDestroyed=!1;this.useStringRoomId=!!e.useStringRoomId,St(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),St(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),St(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new uE({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new lE({room:this}),this.badCaseDetector=new hE({room:this}),this.audioManager=new $l(this),this.videoManager=new Ah(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return N(this,null,function*(){return this.publish(e)})}removeTrack(e){return N(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return N(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(Je(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(jr(e)){let{websocketProxy:t,webtransportProxy:i,loggerProxy:o,scheduleProxy:a,unifiedProxy:d}=e;this.proxy_ws=t,this.proxy_wt=i,this.proxy_unified=d,d?(_m([d,d]),fs(`https://${d}`)):(o&&fs(o),a&&_m(a))}B.once(U.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Zi.main,sched_back_domain:Zi.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return N(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return N(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let i of this.quality.downlinkInfo)e.downlinksRTT[i.userId]=i.rtt;return e})}getRemoteVideoStats(){return N(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(i=>{let o=e==="auxiliary"?i.remoteAuxiliaryTrack:i.remoteVideoTrack;t[i.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Yt.INVALID_DESTROY),new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,B.emit(U.ROOM_DESTROY,{room:this})}schedule(e,t){return N(this,null,function*(){var o,a;let i=ge();try{let{isCached:d,result:p,detailCost:_}=yield t_({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Bt,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=d,this._log.info(`schedule cache:${+d} ${Pi(p,{keysToExclude:["username","credential"]})}`),d&&B.once(U.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=oe(oe({},this.scheduleResult),p),qe((o=p.config)==null?void 0:o.retryCount)&&zh(p.config.retryCount),Je((a=p.config)==null?void 0:a.loggerDomain)&&fs(p.config.loggerDomain),B.emit(U.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:_}),Z.addSuccessEvent({key:521700,cost:ge()-i,split:50})}catch(d){throw Z.addFailedEvent({key:521700,error:d}),d}})}};var fE=$t(nr(),1);var pE=Symbol("instance"),yF=Symbol("abortCtrl"),vf=Symbol("cacheResult"),Ru=class{constructor(r,e,t){this.oldState=r,this.newState=e,this.action=t,this.aborted=!1}abort(r){this.aborted=!0,Du.call(r,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},bu=class extends Error{constructor(r,e,t){super(e),this.state=r,this.message=e,this.cause=t}};function QI(n){return typeof n=="object"&&n&&"then"in n}var Nu=new Map;function Af(n,r,e={}){return(t,i,o)=>{let a=e.action||i;if(!e.context){let p=Nu.get(t)||[];Nu.has(t)||Nu.set(t,p),p.push({from:n,to:r,action:a})}let d=o.value;o.value=function(...p){let _=this;if(e.context&&(_=pt.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),_.state===r)return _[vf];_.state instanceof Ru&&_.state.action==e.abortAction&&_.state.abort(_);let S=null;if(Array.isArray(n)?n.length==0?_.state instanceof Ru&&_.state.abort(_):(typeof _.state!="string"||!n.includes(_.state))&&(S=new bu(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not in from config`)):n!==_.state&&(S=new bu(_._state,`${_.name} ${a} to ${r} failed: current state ${_._state} not from ${n}`)),S)if(e.fail)e.fail.call(this,S);else{if(e.ignoreError)return S;throw S}let v=_.state,A=new Ru(v,r,a);Du.call(_,A);let w=L=>{var W;return _[vf]=L,A.aborted||(Du.call(_,r),(W=e.success)===null||W===void 0||W.call(this,_[vf])),L},M=L=>{let W=L instanceof Error?L.message:String(L);if(Du.call(_,v,L),e.fail)e.fail.call(this,new bu(_._state,`action '${a}' failed :${W}`,L instanceof Error?L:new Error(W)));else{if(e.ignoreError)return L;throw L}};try{let L=d.apply(this,p);return QI(L)?L.then(w).catch(M):w(L)}catch(L){M(L)}}}}var YI=(()=>typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{})();function Du(n,r){let e=this._state;this._state=n;let t=n.toString();n&&this.emit(t,e),this.emit(pt.STATECHANGED,n,e,r),this.updateDevTools({value:n,old:e,err:r instanceof Error?r.message:String(r)})}var pt=class extends fE.default{constructor(r,e,t){super(),this.name=r,this.groupName=e,this._state=pt.INIT,r||(r=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let i=t[pE];i?this.name=i.name+"-"+i.count++:t[pE]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let r=Object.getPrototypeOf(this),e=Nu.get(r)||[],t=new Set,i=[],o=[],a=new Set,d=Object.getPrototypeOf(r);Nu.has(d)&&(d.stateDiagram.forEach(_=>t.add(_)),d.allStates.forEach(_=>a.add(_))),e.forEach(({from:_,to:S,action:v})=>{typeof _=="string"?i.push({from:_,to:S,action:v}):_.length?_.forEach(A=>{i.push({from:A,to:S,action:v})}):o.push({to:S,action:v})}),i.forEach(({from:_,to:S,action:v})=>{a.add(_),a.add(S),a.add(v+"ing"),t.add(`${_} --> ${v}ing : ${v}`),t.add(`${v}ing --> ${S} : ${v} \u{1F7E2}`),t.add(`${v}ing --> ${_} : ${v} \u{1F534}`)}),o.forEach(({to:_,action:S})=>{t.add(`${S}ing --> ${_} : ${S} \u{1F7E2}`),a.forEach(v=>{v!==_&&t.add(`${v} --> ${S}ing : ${S}`)})});let p=[...t];return Object.defineProperties(r,{stateDiagram:{value:p},allStates:{value:a}}),p}static get(r){let e;return typeof r=="string"?(e=pt.instances.get(r),e||pt.instances.set(r,e=new pt(r,void 0,Object.create(pt.prototype)))):(e=pt.instances2.get(r),e||pt.instances2.set(r,e=new pt(r.constructor.name,void 0,Object.create(pt.prototype)))),e}static getState(r){var e;return(e=pt.get(r))===null||e===void 0?void 0:e.state}updateDevTools(r={}){YI(pt.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},r))}get state(){return this._state}set state(r){Du.call(this,r)}};pt.STATECHANGED="stateChanged";pt.UPDATEAFSM="updateAFSM";pt.INIT="[*]";pt.ON="on";pt.OFF="off";pt.instances=new Map;pt.instances2=new WeakMap;var bE=$t(nr());var Cf=$t(pf());var _E=n=>{let r=Et(n),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return r.media.forEach((t,i)=>{var o;if(t.ssrcs&&!V(t.ssrcs[0].id)){let a=Number(t.ssrcs[0].id),d=Number((o=t.ssrcs.filter(p=>p.attribute==="cname")[1])==null?void 0:o.id);switch(i){case 0:e.audioSsrc=a;break;case 1:e.bigVideoSsrc=a,e.bigVideoRtxSsrc=d;break;case 2:e.smallVideoSsrc=a,e.smallVideoRtxSsrc=d;break;case 3:e.auxVideoSsrc=a,e.auxVideoRtxSsrc=d;break}}}),e};function gE(n){var e;let r=[];for(let t=0;t<n.rtp.length;t++){if(["rtx","red","ulpfec"].includes(n.rtp[t].codec))continue;let i=n.fmtp.filter(o=>o.payload===n.rtp[t].payload)[0];r.push({payload:n.rtp[t].payload,codec:n.rtp[t].codec,fmtp:i?i.config:"",rate:n.rtp[t].rate,rtx:((e=n.rtp[t+1])==null?void 0:e.codec)==="rtx"?n.rtp[t+1].payload:0,rtcpFb:((n==null?void 0:n.rtcpFb)||[]).filter(o=>o.payload===n.rtp[t].payload).map(({type:o,subtype:a})=>({id:o,params:a?[a]:[]}))})}return r}function KI(){return N(this,null,function*(){let n=new RTCPeerConnection;n.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_RECVONLY});let r=yield n.createOffer();if(!r.sdp)return[];let e=Et(r.sdp),t=gE(e.media[0]);return n.close(),t})}var EE=(n,r)=>N(void 0,null,function*(){var p;let e=Et(n),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let i=e.media[0],o=e.media[1];i.ext&&(t.audio.extensions=i.ext.map(_=>({id:_.value,uri:_.uri}))),o.ext&&(t.video.extensions=o.ext.map(_=>({id:_.value,uri:_.uri})));let a={codec:i.rtp[0].codec,fmtp:i.fmtp[0].config,payload:i.fmtp[0].payload,rate:i.rtp[0].rate,channel:i.rtp[0].encoding,rtcpFb:[],rtx:0};(p=i.rtcpFb)==null||p.forEach(({payload:_,type:S,subtype:v})=>{if(_===a.payload){let A={id:S,params:[]};v&&A.params.push(v),a.rtcpFb.push(A)}}),t.audio.codecs.push(a);let d=["h264","vp8"];return r&&d.shift(),t.video.codecs=[...gE(o)].filter(_=>d.includes(_.codec.toLocaleLowerCase())),t.video.decoders=(yield KI()).filter(_=>["h264","vp8"].includes(_.codec.toLocaleLowerCase())),t}),TE=({serverAbility:n,clientAbility:r,offerSDP:e,enableCustomMessage:t})=>{let i=Et(e),o={extmapAllowMixed:"extmap-allow-mixed",groups:i.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},a={candidates:n.candidates.map(d=>({component:1,foundation:"1",generation:0,ip:d.ip,port:d.port,priority:d.priority,transport:d.foundation,type:d.type})),connection:{version:4,ip:"0.0.0.0"},direction:b.TRANSCEIVER_DIRECTION_RECVONLY,ext:n.audio.extensions.map(d=>({value:d.id,uri:d.uri})),fingerprint:{type:n.dtls.hash,hash:n.dtls.fingerprint},fmtp:[{payload:n.audio.codecs[0].payload,config:n.audio.codecs[0].fmtp}],icePwd:n.ice.password,iceUfrag:n.ice.ufrag,mid:"0",payloads:String(n.audio.codecs[0].payload),port:i.media[0].port,protocol:i.media[0].protocol,type:b.AUDIO,setup:n.dtls.setup,rtcpFb:n.audio.codecs[0].rtcpfb.map(d=>({payload:n.audio.codecs[0].payload,type:d.id,subtype:d.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:n.audio.codecs[0].payload,codec:n.audio.codecs[0].codec,rate:n.audio.codecs[0].rate,encoding:n.audio.codecs[0].channels}]};return o.media.push(a),[1,2,3].forEach(d=>{o.media.push(Rf({mid:d,serverAbility:n,clientAbility:r,parsedOffer:i}))}),t&&o.media.push(i.media.find(d=>d.mid==="dc")),pi(o)},Rf=({mid:n,serverAbility:r,clientAbility:e,parsedOffer:t,isDownlink:i=!1})=>{let o={candidates:r.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:b.TRANSCEIVER_DIRECTION_RECVONLY,ext:r.video.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:r.dtls.hash,hash:r.dtls.fingerprint},fmtp:[],icePwd:r.ice.password,iceUfrag:r.ice.ufrag,mid:String(n),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:b.VIDEO,setup:r.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(i)(r.video.decoders||r.video.codecs).forEach(a=>{Hs(o,a)});else{let a=r.video.codecs.findIndex(p=>p.codec.toLowerCase()===(r.useVp8?"vp8":"h264")),d=r.video.codecs[a]||e.video.codecs[0];Hs(o,d)}return o},Hs=(n,r)=>{n.payloads=`${n.payloads} ${r.payload}`.trim(),n.fmtp.push({payload:r.payload,config:r.fmtp}),n.rtcpFb=[...n.rtcpFb||[],...(r.rtcpfb||r.rtcpFb).map(e=>({payload:r.payload,type:e.id,subtype:e.params[0]}))],n.rtp.push({payload:r.payload,codec:r.codec.toUpperCase(),rate:r.rate}),r.rtx&&(n.payloads=`${n.payloads} ${r.rtx}`,n.fmtp.push({payload:r.rtx,config:`apt=${r.payload}`}),n.rtp.push({payload:r.rtx,codec:"rtx",rate:r.rate}))};function ZI(n){let r=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);n.ext&&(n.ext=n.ext.filter(e=>!r.has(e.uri)))}function ey(n){if(!n.rtcpFb)return;let r=[];n.rtcpFb.forEach((e,t)=>{var i;r.push(e),n.rtcpFb&&((i=n.rtcpFb[t+1])==null?void 0:i.payload)!==e.payload&&e.type!=="rrtr"&&r.push({payload:e.payload,type:"rrtr"})}),n.rtcpFb=r}function ty(n){n.type===b.VIDEO&&n.fmtp&&n.fmtp.forEach(r=>{r.config.includes("apt")||(r.config+=";sps-pps-idr-in-keyframe=1")})}function ry(n){n.type===b.AUDIO&&n.fmtp&&n.fmtp.forEach(r=>{r.config+=";sprop-stereo=1;stereo=1"})}var SE=(n,r,e)=>{let t=Cf.default.parse(n);return t.media.forEach((i,o)=>{var a;(i.type===b.AUDIO||i.type===b.VIDEO)&&(ey(i),ty(i),ry(i),ZI(i),i.type===b.VIDEO&&(o<4?(i.payloads="",i.fmtp=[],i.rtp=[],i.rtcpFb=[],r.video.codecs.forEach(d=>Hs(i,d))):e&&(i.payloads="",i.fmtp=[],i.rtp=[],i.rtcpFb=[],(e.video.decoders||e.video.codecs).forEach(d=>Hs(i,d))))),((a=i.payloads)==null?void 0:a.includes("datachannel"))&&t.groups&&i.mid&&(t.groups[0].mids=t.groups[0].mids.replace(i.mid,"dc"),i.mid="dc")}),Cf.default.write(t)};var IE=$t(nr());var Rh=class extends IE.EventEmitter{constructor(e){super();this.room=e;E(this,"mainFpsHealth",1);E(this,"mainBitrateHealth",1);E(this,"badMainBitrateHealthCount",0);E(this,"lastEmitBadHealthTime",0);E(this,"log");!Nt&&wi&&B.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:i,codec:o}){if(!(e||t===7||o!=="h264")){if(!i){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let i=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=i)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:i}=this.room;i&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/i.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){B.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};E(Rh,"EVENT_BAD_HEALTH","bad_health");var yE=Rh;function vE({seiMessageList:n,isAudio:r}){return new TransformStream({transform(e,t){let i=e;r?audioEncodePipeline.forEach(o=>{i=o({frame:i})}):videoEncodePipeline.forEach(o=>{i=o({frame:i,seiMessageList:n})}),t.enqueue(i)}})}function AE(n,r){return new TransformStream({transform(e,t){let i=e;videoDecodePipeline.forEach(o=>{i=o({frame:i,onSEI:a=>{a.forEach(d=>{self.postMessage({type:"sei",seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:n,streamType:r})})}})}),t.enqueue(i)}})}function CE(n){let r=[to],e=[Kp,Qp,Yp,Xp,vE,AE],t=()=>{let _=[],S=[],v=[];self.onmessage=A=>{A.data.type==="sei"&&(A.data.isMain?(_.push(A.data.data),A.data.small&&v.push(A.data.data)):S.push(A.data.data))},self.onrtctransform=A=>{let{options:w}=A.transformer,M=w.isReceiver?AE(w.userId,w.streamType):vE({seiMessageList:w.isMain?w.small?v:_:S});A.transformer.readable.pipeThrough(M).pipeTo(A.transformer.writable)}},i=`const videoEncodePipeline=[${n.videoEncodePipeline.toString()}];
168
+ const videoDecodePipeline=[${n.videoDecodePipeline.toString()}];
169
+ const audioEncodePipeline = [${n.audioEncodePipeline.toString()}];
170
+ const audioDecodePipeline = [${n.audioDecodePipeline.toString()}];`,o=`(()=>{${r.map(_=>`const ${_.name}=(()=>${_.toString()})()`).join(`
82
171
  `)}
83
- ${e.map(d=>d.toString()).join(`
84
- `)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var ii=(c=>(c.TRACK="track",c.DATA_CHANNEL_MESSAGE="data_channel_msg",c[c.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",c[c.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",c.RECONNECTED="spc-reconnected",c.RECONNECT_FAILED="spc-reconnect-failed",c.ERROR="error",c.SEI_MESSAGE="sei-message",c))(ii||{}),fm=0,_m=!1,X_=new Set,Q_=s=>fm>2&&!_m&&X_.size===0&&s,z_=1,Ot=class extends pm.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();l(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});l(this,"currentState","DISCONNECTED");l(this,"_room");l(this,"_signalChannel");l(this,"_peerConnection",null);l(this,"_datachannel",null);l(this,"_enableCustomMessage");l(this,"_log");l(this,"_downlinkMIDMap",new Map);l(this,"_downlinkMIDUserIDMap",new Map);l(this,"_reconnectionTimer",-1);l(this,"reconnectionCount",0);l(this,"clientAbility");l(this,"_serverAbility",null);l(this,"addDownlinkQueue",new Set);l(this,"removeDownlinkQueue",new Set);l(this,"_parsedAnswer",null);l(this,"_updateSDPPromise",null);l(this,"_waitForPCConnectedPromise");l(this,"clearConnectTimeout");l(this,"_isSDPLogged",!1);l(this,"enableInsertableStreams",!1);l(this,"insertableStreamsAbortMap",new Map);l(this,"scriptTransformWorker");l(this,"_isRelayTried",!1);l(this,"_rttOverCount",0);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=R.createLogger({id:`spc${z_++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Ti?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,r;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(o=>["h264","vp8"].includes(o.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?rm(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Pn&&(this.scriptTransformWorker=hm({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}initialize(){return f(this,null,function*(){var t;let e;try{return this._peerConnection=new RTCPeerConnection({encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"}),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let r=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${r}`),r==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():r==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),N.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):r==="failed"&&N.addFailedEvent({key:521711})},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=r=>this.emit("track",r),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=r=>{let o=new Rl(r.data);this.emit("data_channel_msg",{data:o})},this._datachannel.onerror=r=>{this._log.warn("datachannel error",r)}),this._peerConnection.addTransceiver(m.AUDIO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_SENDONLY}),e=yield this._peerConnection.createOffer(),this.clientAbility=yield om(e.sdp,((t=this._room.scheduleResult.config)==null?void 0:t.remove264FromSDP)||!1),yield this.setOffer(e),this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:r}=this;!r||(this._log.debug(`dtls state: ${r.state}`),r.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():r.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),N.addSuccessEvent({key:521707}),this.clientAbility}catch(r){throw N.addFailedEvent({key:521707,error:r}),this._log.error(`initialize failed ${r}
85
- offer: ${e==null?void 0:e.sdp}`),r}})}setPriority(e="high"){if(!!this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let o=r.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,r.setParameters(o).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return f(this,null,function*(){var r,o;try{if(this.currentState==="CONNECTED")return;let n=k(),a={type:"answer",sdp:nm({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(a),yield this.waitForPeerConnectionConnected();let c=((r=this._room.scheduleResult.config)==null?void 0:r.priority)||((o=this._room.joinParams)==null?void 0:o.priority)||new URLSearchParams(location.search).get("priority");c&&this.setPriority(c),t||N.addSuccessEvent({key:521703,cost:k()-n})}catch(n){let a=n instanceof y&&n.code===S.API_CALL_ABORTED;throw a||this._log.error(`connect failed: ${n}`,e),this.reset(),!a&&!this.isReconnecting&&(N.addFailedEvent({key:521703,error:n}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),n}})}reconnect(){return f(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(pe.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount++,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=yield this.initialize(),t=yield this._signalChannel.sendWaitForResponse({command:W.REBUILD_PEER_CONNECTION,responseCommand:V.REBUILD_PEER_CONNECTION_RES,data:{ability:e},enableLog:!1});if(t.data.code!==0)throw new y({code:t.data.code,message:t.data.message});yield this.connect(t.data.data.ability,!0),N.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),T.emit(g.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=Ft(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield $i(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),N.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=oi()&&this._log.warn(`SDK has tried reconnect for ${oi()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(pe.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===ne.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){let t=this._peerConnection.iceConnectionState,r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===ne.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===ne.FAILED||e.target.connectionState===ne.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===ne.CONNECTED||e.target.connectionState===ne.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),T.emit(g.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return ft;let e=null;return!Hi()||this._peerConnection.getSenders().length===0?ft:(e=this._peerConnection.getSenders()[0].transport,!ar()||this._peerConnection.getReceivers().length===0?ft:e?e.state:ft)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(ii.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(Fi(r)){let o=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.candidateType==="relay"?`relayProtocol:${o.relayProtocol}`:""}`),o.networkType&&Ec(o.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=c=>{c.state==="CONNECTED"&&(clearTimeout(a),n(),e())},o=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new y({code:S.API_CALL_ABORTED,message:w({key:x.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{T.off(g.LEAVE_SUCCESS,o,this),this.off(ii.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new y({code:S.API_CALL_TIMEOUT,message:"connection timeout"});fm+=1,Q_(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),_m=!0,this.emit(ii.FIREWALL_RESTRICTION)),t(c)},Os);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},T.on(g.LEAVE_SUCCESS,o,this),this.on(ii.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return f(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let o=this._peerConnection.getTransceivers().slice(4).filter(p=>p.direction==="inactive").slice(0,3).map(p=>(p.direction=m.TRANSCEIVER_DIRECTION_RECVONLY,Number(p.mid)));this._parsedAnswer||(this._parsedAnswer=le(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(p=>{var _;return(_=p.ssrcs)==null?void 0:_.find(I=>{var C;return(C=I.value)==null?void 0:C.includes(r)})}),a,c,d;if(n.length===3)a=n[0],c=n[1],d=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[0])),c=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[1])),d=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(m.AUDIO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:m.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let p=Al({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:le(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(p)),d=JSON.parse(JSON.stringify(p)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d)}a.direction=m.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${h}`},{id:e.audio,attribute:"msid",value:`${h}-${m.MAIN} ${h}-audio`}],c.direction=m.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${h}`},{id:e.video,attribute:"msid",value:`${h}-${m.MAIN} ${h}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${h}`},{id:e.videoRtx,attribute:"msid",value:`${h}-${m.MAIN} ${h}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],d.direction=m.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${h}-aux`;d.ssrcs=[{id:e.auxiliary,attribute:"cname",value:u},{id:e.auxiliary,attribute:"msid",value:`${u} ${h}-aux${m.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${u} ${h}-aux${m.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${u} ${h}-aux${m.VIDEO}`}],d.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(p=>p.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,d.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(d.mid,t)}removeDownlink(e){return f(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=le(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(ro()){let a=this._peerConnection.getSenders().slice(0,4);for(let d=0;d<a.length;d++){let h=a[d],u;d===0&&t?u=t:d===1&&r?u=r:d===2&&o?u=o:d===3&&n&&(u=n),u&&(yield this.setSenderMaxBitrate(h,u))}let c=!1;r&&a[1].track&&(c=this.setStartBitrate(1,r)),n&&a[3].track&&(c=this.setStartBitrate(3,n)||c),c&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,o;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=le(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=le(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=le(this._peerConnection.remoteDescription.sdp));let a=re?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:re?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:re?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:re?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:re?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:re?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:re?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:re?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:re?o*1e3:o}]);let c={type:"offer",sdp:mt(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let n=o.encodings[0].scaleResolutionDownBy;if(E(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=mt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>f(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(c){this._log.error(c),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
86
- next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
87
- next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:d,currentDirection:h,direction:u,stopped:p})=>({mid:d,currentDirection:h,direction:u,stopped:p})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!re||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(o=>{r[o].direction!==e&&(r[o].direction=e)});for(let o of t){let n=this._parsedAnswer.media[o].direction;e===Q.INACTIVE&&n===Q.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===Q.SENDONLY&&n===Q.INACTIVE&&(this._parsedAnswer.media[o].direction=Q.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return le(e).media.map(r=>r.direction)}setOffer(e){return this._log.info("setting offer"),this._log.debug(e.sdp),this._peerConnection.setLocalDescription({type:"offer",sdp:am(e.sdp,this.clientAbility,this._serverAbility)})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===m.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((o=r.payloads)!=null&&o.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Ir(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];E(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(n=>{var a;if(n.type===m.VIDEO){let c;e&&this.is42001fSupported?c=this.clientAbility.video.codecs.find(d=>d.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(d=>d.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),c&&!((a=n.payloads)!=null&&a.includes(String(c.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],Ir(n,c),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){var e;(e=this._peerConnection)==null||e.close(),this._waitForPCConnectedPromise=null,this._parsedAnswer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>wt(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var h;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,o=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((h=this._room.scheduleResult.config)==null?void 0:h.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let c=Math.floor(o/r),d=(this._isRelayTried||c>n)&&o>a;if(!d){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${c} over-count: ${this._rttOverCount} isOver: ${d} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return f(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",o=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),N.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),N.addFailedEvent({key:o,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let o=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(o))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};b([qn("reconnect")],Ot.prototype,"startReconnection",1),b([Ai(s=>s.userId)],Ot.prototype,"addDownlink",1),b([Ai(s=>s)],Ot.prototype,"removeDownlink",1),b([Yt(!0)],Ot.prototype,"updateSDP",1),b([Qe(521712,!1)],Ot.prototype,"setOffer",1),b([Qe(521713,!1)],Ot.prototype,"setAnswer",1);var Cl=class{constructor(i){l(this,"tag");l(this,"len");l(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,2+2+this.len).buffer}},Rl=class{constructor(i){l(this,"tinyId");l(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new Cl(new Uint8Array(i).slice(t,t+2+2+o).buffer);r.push(n),t+=2+2+o}r.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},mm=new Set;function Ar(){let s=Math.floor(Math.random()*4294967296);return mm.has(s)?Ar():(mm.add(s),s)}var gm=Se(De());var Cr=class extends gm.default{constructor(e){super();l(this,"userId");l(this,"tinyId");l(this,"_sdpSemantics");l(this,"_isUplink");l(this,"_room");l(this,"_log");l(this,"_currentState","DISCONNECTED");l(this,"_prevTime",-1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=R.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(T.emit(g.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var Bo=class extends Cr{constructor(e){super(L(v({},e),{isUplink:!0}));l(this,"localMainAudioTrack",null);l(this,"localMainVideoTrack",null);l(this,"localAuxAudioTrack",null);l(this,"localAuxVideoTrack",null);l(this,"_isPublishingAux",!1);l(this,"_publishingLocalAudioTrack");l(this,"_publishingLocalVideoTrack");l(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});l(this,"_flag",0);l(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:o,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:o||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:c||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,o=Object.keys(t).find(n=>t[n]!==r[n]);if(o)if(e)this._log.warn(`publish state not matched, ${o} local:${t[o]} server:${r[o]} ${hi()} ${rr()}`),N.addCount({key:521e3});else{this._checkPublishStateTimeoutId=ee.run(xi,()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}ee.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Ht()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===m.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get serverPublishState(){return{audio:!!(this.flag&ki),bigVideo:!!(this.flag&Mi),smallVideo:!!(this.flag&vs),auxVideo:!!(this.flag&Ki)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let o of t)o.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),o}onVideoEncodeFailed(e){var t,r;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),(r=this.singlePC)==null||r.switchVideoEncoder("vp8")))}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var d,h,u,p,_,I,C;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new y({code:S.NOT_SUPPORTED_H264,message:w({key:x.NOT_SUPPORTED_H264ENCODE})});fe&&di()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(nt["480p_2"]),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let c;if(t&&!r&&t.small&&(c=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:W.SPC_PUBLISH,responseCommand:V.SPC_PUBLISH_RESULT,data:L(v({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:c,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t;let{scaleResolutionDownBy:D}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],D,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((d=this.localMainAudioTrack)==null?void 0:d.profile.bitrate)||((h=this.localAuxAudioTrack)==null?void 0:h.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(_=(p=this.localMainVideoTrack)==null?void 0:p.small)==null?void 0:_.bitrate,auxVideo:(I=this.localAuxVideoTrack)==null?void 0:I.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),!r&&(this._room.preferHW||((C=this._room.scheduleResult.config)==null?void 0:C.preferHW))&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!ct())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,c=this._peerConnection.getTransceivers(),d=[],h=[],u=(_,I,C)=>{var B,Me;let D=c[I].sender.replaceTrack(C);h.push(I),(B=this.singlePC)!=null&&B.enableInsertableStreams&&D.then(()=>this.createEncodedStreams(c[I].sender,_)),(Me=this.singlePC)!=null&&Me.scriptTransformWorker&&this.initSenderTransfrom(c[I].sender,_),d.push(D)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,o?3:1,n),r&&u(8,2,r);let p=this.singlePC.setTransceiverDirection(Q.SENDONLY,h);return d.push(p),Promise.all(d)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),o=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,o),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(d,h)=>{var p;let u=this.getTrackByMediaType(t);h.enqueue(((p=this.singlePC)==null?void 0:p.isUsingH264)&&u?u.encodeFrame(d,t===8):d)}}),o):r.readable).pipeTo(r.writable,o).catch(d=>{this._log.debug("encoded stream error",d),d!=="destory"&&this._log.warn(d)})}initSenderTransfrom(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker)return;let r=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:o}))}enableSmall(e){return f(this,null,function*(){if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(Q.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(Q.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=L(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=L(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(Q.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:W.PUBLISH_STATE_CHANGE,data:t,responseCommand:V.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:W.UNPUBLISH,commandDesc:"unpublish",responseCommand:V.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),Gt){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:W.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:V.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?m.AUXILIARY:m.MAIN} stream`),Ht()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)==null?void 0:o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Q.INACTIVE&&(yield this.singlePC.setTransceiverDirection(Q.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?m.AUXILIARY:m.MAIN} stream`),Ht()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===m.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(Q.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${o?m.AUXILIARY:m.MAIN} stream`),r.kind===m.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===m.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===m.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:W.UPDATE_MUTE_STAT,responseCommand:V.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&T.emit(g.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=m.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===m.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===m.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===m.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===m.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Zi?(this._log.error(be.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:w({key:x.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:w({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:V.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};b([bt(function({localVideoTrack:s}){s==null||s.once("6",this.onVideoEncodeFailed,this)})],Bo.prototype,"publish",1),b([bt(function({localVideoTrack:s}){s==null||s.off("6",this.onVideoEncodeFailed,this)})],Bo.prototype,"unpublish",1);var yl=Bo;function Em(s){return Object.keys(s).filter(i=>s[i])}var Es=class extends Cr{constructor(e){super(L(v({},e),{isUplink:!1}));l(this,"_flag",0);l(this,"isRobot",!1);l(this,"role","anchor");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");l(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});l(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new yi(this._room,this),this.remoteVideoTrack=new ei(this._room,this),this.remoteAuxiliaryTrack=new ss(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return Bi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===m.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){!this.singlePC||(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){!this.singlePC||(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var h;let t=e.streams[0],{track:r,receiver:o}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let c=m.AUDIO;r.kind===m.VIDEO&&(c=a===m.MAIN?m.VIDEO:m.AUXILIARY);let d=this.remoteAudioTrack;c===m.VIDEO?d=this.remoteVideoTrack:c===m.AUXILIARY&&(d=this.remoteAuxiliaryTrack),(h=this.singlePC)!=null&&h.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===m.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(d,o),d.setInputMediaStreamTrack(r)}createEncodedStreams(e,t){if(!this.singlePC.insertableStreamsAbortMap.has(t)){let r=t.createEncodedStreams(),o=new AbortController,n={abortController:o,enqueue:a=>{var c;return(c=this.singlePC)!=null&&c.isUsingH264?e.decodeFrame(a):a}};r.readable.pipeThrough(new TransformStream({transform:(a,c)=>{let d=n.enqueue(a);d&&c.enqueue(d)}})).pipeTo(r.writable,o).catch(a=>{a!=="destory"&&this._log.warn(a)}),this.singlePC.addAbortController(t,o)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return f(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${Em(e)}`),this.hasSSRC){let r="subscribe_change";Object.values(e).find(o=>o===!0)||(r="unsubscribe"),yield this.sendSubscription(r,e)}else yield this.doSubscribe(e),this.checkTrackEnded(e)}catch(r){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${r.message} ${JSON.stringify(this.muteState)}`),new y({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):r}})}checkTrackEnded(e){var t,r,o;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),It&&At<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Em(o)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,o),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=W.UNSUBSCRIBE,n=V.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=W.SUBSCRIBE_CHANGE,n=V.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:w({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),this.doSubscribe(this.subscribeState))}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(this,arguments,function*(e=this.subscribeState,t=!0){if(!!this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:Ar(),bigVideoSsrc:Ar(),bigVideoRtxSsrc:Ar(),auxVideoSsrc:Ar(),auxVideoRtxSsrc:Ar()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:d}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:d},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let h=yield this._signalChannel.sendWaitForResponseWithRetry({command:W.SPC_SUBSCRIBE,responseCommand:V.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(h.data.code!==0)throw new y({code:h.data.code,message:h.data.message})}catch(h){throw yield this.removeDownlink(),h}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{let r=this._room.scheduleResult.config;((r==null?void 0:r.jitterDelay)||(r==null?void 0:r.jitterDelayAux))&&this.setJitterBufferDelay({mainDelay:r.jitterDelay,auxDelay:r.jitterDelayAux})}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;((e==null?void 0:e.jitterDelay)||(e==null?void 0:e.jitterDelayAux))&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!this.singlePC||!this._peerConnection||mi(e)&&mi(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return K(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),K(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,mi(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),o();if(r.forEach(a=>{var u;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||mi(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&mi(t)||!c&&mi(e))return;let d=c?t||0:e,h=(a.jitterBufferTarget||0)+100;h>d||(a.jitterBufferTarget=h,this._log.debug(`set ${c?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${h} -> ${d}`))}),!r.find(a=>{let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<c}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),o()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};b([Yt(),G(s=>function(...i){return new Promise((e,t)=>{let r=o=>{this.off("closed",r),t(new y({code:S.API_CALL_ABORTED,message:w({key:x.CONNECTION_ABORTED,data:o})}))};this.on("closed",r),s.apply(this,i).then(e,t).finally(()=>{this.off("closed",r)})})})],Es.prototype,"subscribe",1),b([Yt()],Es.prototype,"unsubscribe",1),b([Ai(()=>"jitter")],Es.prototype,"setJitterBufferDelay",1);var Tm=Es;function Sm(){return G(s=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="capture"),!i.length))return;T.emit("61",{room:this});let e=s.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function Im(){return G(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var Am=Se(De());function Y_(){return Math.floor(Math.random()*16383)}var bl=class extends Am.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;l(this,"log");l(this,"cmdIdSeqMap",new Map);l(this,"messageMap",new Map);this.log=R.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(V.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||Y_(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(W.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let o={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${o.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(o,!0),100)),a.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(a.lastSeq-o.seq)>bl.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>a.lastSeq){if(o.seq===a.lastSeq+1)this.emitMessage(o);else if(!a.cachedMessageMap.has(o.seq)){let c=setTimeout(()=>this.emitMessage(o,!0),5e3);a.cachedMessageMap.set(o.seq,{message:o,timeoutId:c})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),$i(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((d,h)=>d.message.seq-h.message.seq);c[0]&&(o=c[0].message)}r.lastSeq!==0&&o.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${r.lastSeq} -> ${o.seq}`),r.lastSeq=o.seq,clearTimeout((a=r.cachedMessageMap.get(o.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let n=r==null?void 0:r.cachedMessageMap.get(o.seq+1);n&&this.emitMessage(n.message)}},$o=bl;l($o,"SEQ_INTERVAL",300);var{isString:Cm,isUndefined:Ts,getNetworkType:K_,isEmpty:Fo}=Be,Mt=class extends ka{constructor(e){super(e);this._heartbeat=-1;this._lastHeartBeatTime=-1;this._joinTimeout=-1;this._firstPublishedList=null;this._joinReject=null;this._isRelayChanged=!1;this.signalChannel=null;this.uplinkConnection=null;this.singlePC=null;this.enableSPC=jr;this._changeBigSmallRecords=new Map;this.forceRelay=!1;this._turnServers=[];this._syncUserListInterval=-1;this._smallStreamConfig={bitrate:100,frameRate:15,height:120,width:160};this.enableSEI=!1;this._enableAudioVolumeEvaluation=!1;this._audioVolumeIntervalId=0;this._enableMultiAuxStream=!1;this._pureAudioPushMode=!1;this.preferHW=!1;this._updateAudioLevelTaskId=-1;this._stats=new ko(this,this._log),this.userManager=new da(this.userId,this._log),this._version=Ie,this.sdpSemantics=yr,Ts(e.sdpSemantics)?Wt.isUnifiedPlanDefault()&&(this.sdpSemantics=Pi):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${K_()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Ts(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&jr,!Ts(e.enableSPC)&&jr&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new dm(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,r){return f(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",o=>{this.emit("peer-join",o)}),this.userManager.on("2",o=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",o)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var o=Ol(n,[]);T.emit(g.REMOTE_PUBLISH_STATE_CHANGED,v({room:this},o)),this.emit("remote-publish-state-changed",v({},o))}),this.joinParams=e,new Promise((o,n)=>f(this,null,function*(){var a,c;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(h){if(h instanceof y&&h.code===S.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(h)}let d=k();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),N.addSuccessEvent({key:521708,cost:k()-d}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(d){N.addFailedEvent({key:521708,error:d}),n(d)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Ot({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new y({code:S.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>f(this,null,function*(){var c,d,h;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(pe.SETUP_FAILED,u=>{this.clearJoinTimeout(),T.emit(g.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),o(u)}),ue((d=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:d.singlePC)&&jr&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:mc(),netType:Gr(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;((h=this.scheduleResult.config)==null?void 0:h.enterRoomTimeout)&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new y({code:S.JOIN_ROOM_FAILED,message:w({key:x.JOIN_ROOM_TIMEOUT})}))},a),T.emit(g.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?W.SPC_JOIN_ROOM:W.JOIN_ROOM,n),this.signalChannel.once(V.JOIN_ROOM_RESULT,u=>{this.clearJoinTimeout();let{code:p,message:_,data:I,tinyId:C}=u.data;T.emit(g.JOIN_RECEIVED_CMD_RES,{room:this,code:p}),p===0?(this._log.info("Join room success, start heartbeat"),C&&(this.tinyId=C),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=I.publishers,this.singlePC&&this.singlePC.connect(L(v({},I.ability),{useVp8:I.ability.useVp8||!!e.useVp8})).catch(()=>{}),r()):(this._log.error(`Join room failed result: ${p} error: ${_}`),o(new y({code:S.JOIN_ROOM_FAILED,extraCode:p,message:w({key:x.JOIN_ROOM_FAILED,data:{error:_,code:p}})})))})}))}reJoin(e=!0){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let t,r=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,r.push(this.initSinglePC().then(o=>(t=o,o)))),this.signalChannel&&(this.signalChannel.race=e,this.signalChannel.close(),r.push(this.signalChannel.connect())),yield Promise.all(r),yield this.doJoin(L(v({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),t),this._log.warn("reJoin success"),Y.logSuccessEvent({userId:this.userId,eventType:Ge.REJOIN}),this.singlePC){let o=n=>{var a;n.state==="CONNECTED"&&((a=this.singlePC)==null||a.off(ii.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof yl&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(c=>{c.installEvents(),c.onSinglePCReconnected()}))};this.singlePC.on(ii.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Mo&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(t){this._log.warn(`reJoin fail ${t}`),this.reset(),Y.logFailedEvent({userId:this.userId,eventType:Ge.REJOIN,error:t}),this.emit("error",new y({code:S.JOIN_ROOM_FAILED,message:w({key:x.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||xh(this.userId),o=!!(r&&r.isConnected&&r.keepAlive),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${o?"reuse":"setup"} signal channel`),o?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(this.signalChannel=new ms({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,race:this.enableSPC&&!this.proxy_ws,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new $o(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new zi({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(zi.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),Pe(this,this.signalChannel).add(pe.CONNECTION_STATE_CHANGED,a=>{T.emit(g.SIGNAL_CONNECTION_STATE_CHANGED,v({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(pe.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(V.PEER_JOIN,a=>{let{srcTinyId:c,userId:d,role:h}=a.data.data;this.userManager.addUser({userId:d,tinyId:c,role:h})}).add(V.PEER_LEAVE,a=>{let{userId:c,reason:d=0}=a.data.data;this.userManager.deleteUser(c,d)}).add(V.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(V.CLIENT_BANNED,a=>{let c=a.data.data,{reason:d}=c;if(Y.uploadEvent({log:`stat-banned:${d}`,userId:this.userId}),d==="user_time_out"){this._log.warn(`${d} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[d==="kick"?"error":"info"](`user was banned because of [${d}]`),this.reset(),this.emit("banned",{reason:d})}),this.signalChannel.once(pe.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,T.emit(g.JOIN_SIGNAL_CONNECTION_END,{room:this})}),T.emit(g.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&T.emit(g.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||Ee(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),T.emit(g.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(W.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=ee.run(Li,this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),ee.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?oh(this.userId):[],o=L(v({str_sdk_version:ys,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:v({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Gr()},t.msg_device_info)});if(this.heartbeatReport=o,T.emit(g.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(W.ON_QUALITY_REPORT,o);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",L(v({},o),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==Ga).map(({userId:r,srcTinyId:o,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:o,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:o,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:o,flag:n,isRobot:!0,mixUserList:a})}),T.emit(g.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof Mo&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:o}){let n=new(this.singlePC?Tm:hl)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:o});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let o=r.getCode();o!==S.ICE_TRANSPORT_ERROR&&(o===S.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",L(v({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=ee.run(Li,this.syncUserList.bind(this)))}stopSyncUserListInterval(){ee.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:W.GET_USER_LIST,responseCommand:V.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:o}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:d})=>({userId:a,tinyId:c,role:d}));throw w({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:V.USER_LIST_RES,code:r,message:o}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!al)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===ne.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof He&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===ne.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),Y.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin(!1)),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Mo({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new hl({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new y({code:S.INVALID_OPERATION,message:w({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),ee.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:W.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:V.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:o,message:n}=r.data;if(o!==0)throw new y({code:S.SWITCH_ROLE_FAILED,message:w({key:x.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof y&&r.getCode()===S.API_CALL_TIMEOUT&&(r=new y({code:S.SWITCH_ROLE_FAILED,message:w({key:x.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof Le&&(c instanceof Kt?r.audio=c:t.audio=c),c instanceof me&&(c instanceof rt&&c.mediaType===2?r.video=c:t.video=c)});let o=Fo(t),n=Fo(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new yl({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Mo({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",c=>{this.emit("media-connection-state-changed",L(v({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let d=c.getCode();d!==S.ICE_TRANSPORT_ERROR&&(d===S.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",c))}));let a=e.map(c=>c.kind).join(",");o||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(o=>{!o.mediaTrack||!o.isPublished||(o instanceof Le&&(o instanceof Kt?r.audio=o:t.audio=o),o instanceof me&&(o instanceof rt&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");Fo(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),Fo(r)||(this._log.info(`unpublish() => aux ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(o){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!xc()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&T.emit(g.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){!this.uplinkConnection||(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:m.VIDEO,videoType:m.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=v({},r.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),T.emit(g.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${ba(n)}] prev: [${ba(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());T.emit(g.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof y?n.getCode():S.UNKNOWN,c=n;throw n instanceof y?a===S.REMOTE_STREAM_NOT_EXIST&&(c=new y({code:S.API_CALL_ABORTED,message:w({key:x.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(c)):(c=new y({code:a,message:w({key:x.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(c)),c}})}unsubscribe(...e){return f(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o}`);try{yield r.unsubscribe({remoteTracks:e,streamType:o})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),T.emit(g.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,ee.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),T.emit(g.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&ee.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=ee.run(vr,()=>{var o;Xc.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!Xc.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a})}}),this.emit("audio-volume",r)},{fps:1e3/e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return f(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=ee.run(vr,()=>f(this,null,function*(){let a=yield r.getStats();this._updateAudioLevelTaskId<0||a.forEach(c=>{c.type==="media-source"&&c.audioLevel&&(this.uplinkConnection.localMainAudioTrack.volume=c.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),ee.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!wc||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;r?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&K(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return f(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return f(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return f(this,null,function*(){let t={};for(let[r,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[r]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[r]=o.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return f(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(o=>r.push(Be.getTurnServer(o))):Be.isPlainObject(e)&&r.push(Be.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:W.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:V.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:W.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:V.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?W.START_PUBLISH_TENCENT_CDN:W.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?V.START_PUBLISH_TENCENT_CDN_RES:V.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?W.STOP_PUBLISH_TENCENT_CDN:W.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?V.STOP_PUBLISH_TENCENT_CDN_RES:V.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:W.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:V.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:W.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:V.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:W.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:V.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:W.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:V.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(){return this._turnServers.length===0&&this.scheduleResult.iceServers?this.scheduleResult.iceServers:this._turnServers}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=Be.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return f(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:o,hasVideo:n}}=e;if(!o&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:c,reSubscribeCount:d}=a;if(c.video&&t.video||c.smallVideo&&t.smallVideo&&o)return;let h={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo};try{if(!o&&h.smallVideo&&(h.video=!0,h.smallVideo=!1),h.smallVideo===t.smallVideo&&h.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=d-1,yield e.subscribe(h,"main"),e.remoteVideoTrack.setMediaType(h.smallVideo?8:4),this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video successfully. count ${br-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=br}catch(u){this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video failed. count ${br-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:br};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(Cm(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Ts(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new y({code:S.INVALID_PARAMETER,message:w({key:x.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!Ts(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new y({code:S.INVALID_PARAMETER,message:w({key:x.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Ts(e.userDefinePushArgs))if(Cm(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new y({code:S.INVALID_PARAMETER,message:w({key:x.INVALID_USER_DEFINE_PUSH_ARGS})});Fo(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Ti)return this.singlePC.enableInsertableStreams=!0,this.singlePC.startReconnection()}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new y({code:S.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}};b([Sl(["left",ce.INIT],"joined"),je({settings:{retries:1,timeout:0},onRetrying(s){this._log.warn(`join retry ${s}`)},onRetryFailed(s){this._log.error("join failed",s)},onError(s,i){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),$t(!0),this.reset(),i()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),i()):(this.reset(),i())}}),Oh()],Mt.prototype,"join",1),b([Sl("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Mh(),qn("leave room"),ho({fnName:"publish",validateArgs:!1}),ho({fnName:"unsubscribe",validateArgs:!1})],Mt.prototype,"leave",1),b([Yt(),Sm(),je({settings:{retries:oi,timeout:s=>Ft(s)},onError(s,i,e){var t;(t=s.message)!=null&&t.includes("timeout")?(this._log.warn("publish timeout"),i()):(this._log.error(`publish failed: ${s}`),e(s),T.emit(g.PUBLISH_FAILED,{room:this}))}})],Mt.prototype,"publish",1),b([ho({fnName:"publish"}),qu("api-call"),Yt(),Im(),bt(function(){var s,i;this.localTracks.size===0&&Hi()&&((i=(s=this.singlePC)==null?void 0:s.getPeerConnection())==null||i.getSenders().forEach(e=>e.track&&e.replaceTrack(null)))})],Mt.prototype,"unpublish",1),b([Ju(s=>{if(s.code!==S.API_CALL_ABORTED)throw s}),Ai(s=>s.userId)],Mt.prototype,"replaceTrack",1),b([Ai((...s)=>s[0].userId),zn(),kh(),je({settings:{retries:oi,timeout:s=>Ft(s)},onError(s,i,e,t){s.message.includes("timeout")?(this._log.warn("subscribe timeout"),i()):(this._log.error(`subscribe failed: ${s}`),e(s),T.emit(g.SUBSCRIBE_FAILED,{room:this,remoteTracks:t}))}})],Mt.prototype,"subscribe",1),b([ho({fnName:"subscribe",callback(...s){this.singlePC||s.forEach(i=>{let e=this.remotePublishedUserMap.get(i.userId);e&&!e.isMainStreamSubscribed&&!e.isAuxStreamSubscribed&&e.close("you unsubscribed")})}}),Ai((...s)=>s[0].userId)],Mt.prototype,"unsubscribe",1);Do.create=Do._create.bind(Do,Mt);var QU=Do;export{QU as default};
172
+ ${e.map(_=>_.toString()).join(`
173
+ `)};(${t})();${i}})()`,a=new Blob([o],{type:"text/javascript"}),d=URL.createObjectURL(a),p=new Worker(d);return URL.revokeObjectURL(d),p}var Tn=(p=>(p.TRACK="track",p.DATA_CHANNEL_MESSAGE="data_channel_msg",p[p.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",p[p.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",p.RECONNECTED="spc-reconnected",p.RECONNECT_FAILED="spc-reconnect-failed",p.ERROR="error",p.SEI_MESSAGE="sei-message",p))(Tn||{}),NE=0,DE=!1,iy=new Set,ny=n=>NE>2&&!DE&&iy.size===0&&n,oy=1,Vi=class extends bE.default{constructor({signalChannel:e,room:t,enableCustomMessage:i}){super();E(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});E(this,"currentState","DISCONNECTED");E(this,"_room");E(this,"_signalChannel");E(this,"_peerConnection",null);E(this,"_datachannel",null);E(this,"_enableCustomMessage");E(this,"_log");E(this,"_downlinkMIDMap",new Map);E(this,"_downlinkMIDUserIDMap",new Map);E(this,"_reconnectionTimer",-1);E(this,"reconnectionCount",0);E(this,"clientAbility");E(this,"_serverAbility",null);E(this,"addDownlinkQueue",new Set);E(this,"removeDownlinkQueue",new Set);E(this,"_parsedAnswer",null);E(this,"_updateSDPPromise",null);E(this,"_waitForPCConnectedPromise");E(this,"clearConnectTimeout");E(this,"_isSDPLogged",!1);E(this,"enableInsertableStreams",!1);E(this,"insertableStreamsAbortMap",new Map);E(this,"scriptTransformWorker");E(this,"_isRelayTried",!1);E(this,"_rttOverCount",0);this._room=t,this._enableCustomMessage=i,this._signalChannel=e,this._log=J.createLogger({id:`spc${oy++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Qn?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var i;(i=this.insertableStreamsAbortMap.get(e))==null||i.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,i;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(o=>["h264","vp8"].includes(o.codec.toLowerCase()));return e?e.codec.toLowerCase():(i=this._serverAbility)!=null&&i.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?_E(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Al&&(this.scriptTransformWorker=CE({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}initialize(){return N(this,null,function*(){var t;let e;try{return this._peerConnection=new RTCPeerConnection({encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"}),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let i=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${i}`),i==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():i==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),Z.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):i==="failed"&&Z.addFailedEvent({key:521711})},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=i=>this.emit("track",i),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=i=>{let o=new Nf(i.data);this.emit("data_channel_msg",{data:o})},this._datachannel.onerror=i=>{this._log.warn("datachannel error",i)}),this._peerConnection.addTransceiver(b.AUDIO,{direction:b.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_SENDONLY}),e=yield this._peerConnection.createOffer(),this.clientAbility=yield EE(e.sdp,((t=this._room.scheduleResult.config)==null?void 0:t.remove264FromSDP)||!1),yield this.setOffer(e),this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:i}=this;!i||(this._log.debug(`dtls state: ${i.state}`),i.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():i.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),Z.addSuccessEvent({key:521707}),this.clientAbility}catch(i){throw Z.addFailedEvent({key:521707,error:i}),this._log.error(`initialize failed ${i}
174
+ offer: ${e==null?void 0:e.sdp}`),i}})}setPriority(e="high"){if(!!this._peerConnection)try{this._peerConnection.getSenders().forEach(i=>{let o=i.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,i.setParameters(o).catch(a=>{this._log.warn("setPriority error ",a)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return N(this,null,function*(){var i,o;try{if(this.currentState==="CONNECTED")return;let a=ge(),d={type:"answer",sdp:TE({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(d),yield this.waitForPeerConnectionConnected();let p=((i=this._room.scheduleResult.config)==null?void 0:i.priority)||((o=this._room.joinParams)==null?void 0:o.priority)||new URLSearchParams(location.search).get("priority");p&&this.setPriority(p),t||Z.addSuccessEvent({key:521703,cost:ge()-a})}catch(a){let d=a instanceof Y&&a.code===H.API_CALL_ABORTED;throw d||this._log.error(`connect failed: ${a}`,e),this.reset(),!d&&!this.isReconnecting&&(Z.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return N(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(At.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount++,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=yield this.initialize(),t=yield this._signalChannel.sendWaitForResponse({command:Oe.REBUILD_PEER_CONNECTION,responseCommand:ye.REBUILD_PEER_CONNECTION_RES,data:{ability:e},enableLog:!1});if(t.data.code!==0)throw new Y({code:t.data.code,message:t.data.message});yield this.connect(t.data.data.ability,!0),Z.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),B.emit(U.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=rn(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Ro(t,i=>{this._reconnectionTimer=i}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),Z.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=Un()&&this._log.warn(`SDK has tried reconnect for ${Un()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return N(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(At.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===lt.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){let t=this._peerConnection.iceConnectionState,i=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${i}`),e.target.connectionState===lt.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===lt.FAILED||e.target.connectionState===lt.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===lt.CONNECTED||e.target.connectionState===lt.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),B.emit(U.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return Ai;let e=null;return!No()||this._peerConnection.getSenders().length===0?Ai:(e=this._peerConnection.getSenders()[0].transport,!As()||this._peerConnection.getReceivers().length===0?Ai:e?e.state:Ai)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(Tn.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return N(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,i]of e)if(bo(i)){let o=e.get(i.localCandidateId),a=e.get(i.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.candidateType==="relay"?`relayProtocol:${o.relayProtocol}`:""}`),o.networkType&&gm(o.networkType)),a&&this._log.info(`remote candidate: ${a.candidateType} ${a.protocol}:${a.ip||a.address}:${a.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let i=p=>{p.state==="CONNECTED"&&(clearTimeout(d),a(),e())},o=({room:p})=>{p===this._room&&(clearTimeout(d),a(),t(new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.CONNECTION_ABORTED,data:"leave room"})})))},a=()=>{B.off(U.LEAVE_SUCCESS,o,this),this.off(Tn.CONNECTION_STATE_CHANGED,i,this)},d=setTimeout(()=>{a();let p=new Y({code:H.API_CALL_TIMEOUT,message:"connection timeout"});NE+=1,ny(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),DE=!0,this.emit(Tn.FIREWALL_RESTRICTION)),t(p)},Ed);this.clearConnectTimeout=()=>{a(),clearTimeout(d),delete this.clearConnectTimeout},B.on(U.LEAVE_SUCCESS,o,this),this.on(Tn.CONNECTION_STATE_CHANGED,i,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return N(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:i}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let o=this._peerConnection.getTransceivers().slice(4).filter(A=>A.direction==="inactive").slice(0,3).map(A=>(A.direction=b.TRANSCEIVER_DIRECTION_RECVONLY,Number(A.mid)));this._parsedAnswer||(this._parsedAnswer=Et(this._peerConnection.remoteDescription.sdp));let a=this._parsedAnswer.media.filter(A=>{var w;return(w=A.ssrcs)==null?void 0:w.find(M=>{var L;return(L=M.value)==null?void 0:L.includes(i)})}),d,p,_;if(a.length===3)d=a[0],p=a[1],_=a[2];else if(o.length===3)d=this._parsedAnswer.media.find(A=>Number(A.mid)===Number(o[0])),p=this._parsedAnswer.media.find(A=>Number(A.mid)===Number(o[1])),_=this._parsedAnswer.media.find(A=>Number(A.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(b.AUDIO,{direction:b.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(b.VIDEO,{direction:b.TRANSCEIVER_DIRECTION_RECVONLY}),d=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let A=Rf({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:Et(this._peerConnection.localDescription.sdp),isDownlink:!0});p=JSON.parse(JSON.stringify(A)),_=JSON.parse(JSON.stringify(A)),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),p.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(p),_.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(_)}d.direction=b.TRANSCEIVER_DIRECTION_SENDONLY;let S=`${i}-${e.audio}`;d.ssrcs=[{id:e.audio,attribute:"cname",value:`${S}`},{id:e.audio,attribute:"msid",value:`${S}-${b.MAIN} ${S}-audio`}],p.direction=b.TRANSCEIVER_DIRECTION_SENDONLY,p.ssrcs=[{id:e.video,attribute:"cname",value:`${S}`},{id:e.video,attribute:"msid",value:`${S}-${b.MAIN} ${S}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${S}`},{id:e.videoRtx,attribute:"msid",value:`${S}-${b.MAIN} ${S}-bigvideo`}],p.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],_.direction=b.TRANSCEIVER_DIRECTION_SENDONLY;let v=`${S}-aux`;_.ssrcs=[{id:e.auxiliary,attribute:"cname",value:v},{id:e.auxiliary,attribute:"msid",value:`${v} ${S}-aux${b.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${v} ${S}-aux${b.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${v} ${S}-aux${b.VIDEO}`}],_.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(A=>A.mid).join(" ")),this._downlinkMIDMap.set(t,[d.mid,p.mid,_.mid]),this._downlinkMIDUserIDMap.set(d.mid,t),this._downlinkMIDUserIDMap.set(p.mid,t),this._downlinkMIDUserIDMap.set(_.mid,t)}removeDownlink(e){return N(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),i=!1;this._peerConnection.getTransceivers().forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(i=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=Et(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(i=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&i&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return N(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:i,smallVideo:o,auxVideo:a}=e;try{if(Gd()){let d=this._peerConnection.getSenders().slice(0,4);for(let _=0;_<d.length;_++){let S=d[_],v;_===0&&t?v=t:_===1&&i?v=i:_===2&&o?v=o:_===3&&a&&(v=a),v&&(yield this.setSenderMaxBitrate(S,v))}let p=!1;i&&d[1].track&&(p=this.setStartBitrate(1,i)),a&&d[3].track&&(p=this.setStartBitrate(3,a)||p),p&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(d){this._log.error(`failed to set bandwidth: ${d}`)}})}setStartBitrate(e,t){var i,o;return(i=this._peerConnection)!=null&&i.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=Et(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let i=e.getParameters();return(!i.encodings||i.encodings.length===0)&&(i.encodings=[{}]),t==="unlimited"?delete i.encodings[0].maxBitrate:i.encodings[0].maxBitrate=t*1e3,e.setParameters(i)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:i,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let a=Et(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=Et(this._peerConnection.remoteDescription.sdp));let d=nt?"TIAS":"AS";e&&(a.media[0].bandwidth=[{type:d,limit:nt?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:d,limit:nt?e*1e3:e}]),t&&(a.media[1].bandwidth=[{type:d,limit:nt?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:d,limit:nt?t*1e3:t}]),i&&(a.media[2].bandwidth=[{type:d,limit:nt?i*1e3:i}],this._parsedAnswer.media[2].bandwidth=[{type:d,limit:nt?i*1e3:i}]),o&&(a.media[3].bandwidth=[{type:d,limit:nt?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:d,limit:nt?o*1e3:o}]);let p={type:"offer",sdp:pi(a)};return this.updateSDP({localDescription:p})}setScaleResolutionDownBy(e,t,i){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let a=o.encodings[0].scaleResolutionDownBy;if(V(a)?t===1:t===a)return;let d=`setScaleResolutionDownBy ${i} ${t}`;return a&&(d+=` prevScale: ${a}`),this._log.warn(d),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=pi(this._parsedAnswer);return this._updateSDPPromise=new Promise((i,o)=>N(this,null,function*(){var a,d;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,i()}catch(p){this._log.error(p),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((a=this._peerConnection.localDescription)==null?void 0:a.sdp)}
175
+ next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((d=this._peerConnection.remoteDescription)==null?void 0:d.sdp)}
176
+ next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:_,currentDirection:S,direction:v,stopped:A})=>({mid:_,currentDirection:S,direction:v,stopped:A})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(p)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return N(this,null,function*(){if(!nt||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let i=this._peerConnection.getTransceivers();t.forEach(o=>{i[o].direction!==e&&(i[o].direction=e)});for(let o of t){let a=this._parsedAnswer.media[o].direction;e===We.INACTIVE&&a===We.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===We.SENDONLY&&a===We.INACTIVE&&(this._parsedAnswer.media[o].direction=We.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return Et(e).media.map(i=>i.direction)}setOffer(e){return this._log.info("setting offer"),this._log.debug(e.sdp),this._peerConnection.setLocalDescription({type:"offer",sdp:SE(e.sdp,this.clientAbility,this._serverAbility)})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return N(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(i=>{var o;if(i.type===b.VIDEO){let a=this._serverAbility.video.codecs.find(d=>d.codec.toLowerCase()===e);a&&!((o=i.payloads)!=null&&o.includes(String(a.payload)))&&(i.fmtp=[],i.payloads="",i.rtp=[],i.rtcpFb=[],Hs(i,a),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return N(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let i=!1,o=[];V(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(a=>{var d;if(a.type===b.VIDEO){let p;e&&this.is42001fSupported?p=this.clientAbility.video.codecs.find(_=>_.fmtp.includes("42001f")):e||(p=this._serverAbility.video.codecs.find(_=>_.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),p&&!((d=a.payloads)!=null&&d.includes(String(p.payload)))&&(a.fmtp=[],a.payloads="",a.rtp=[],a.rtcpFb=[],Hs(a,p),i=!0)}}),i&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){var e;(e=this._peerConnection)==null||e.close(),this._waitForPCConnectedPromise=null,this._parsedAnswer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Yi(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(i=>t[i])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var S;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let i=this._signalChannel.rtt,o=Math.max(e,t),{rttRatioThreshold:a,rttThreshold:d}=((S=this._room.scheduleResult.config)==null?void 0:S.useTurnTcpInfo)||{};if(!a||!d||!i||!o)return;let p=Math.floor(o/i),_=(this._isRelayTried||p>a)&&o>d;if(!_){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${i} upRTT: ${e} downRTT: ${t} ratio: ${p} over-count: ${this._rttOverCount} isOver: ${_} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return N(this,null,function*(){if(this.isUsingRelay===e)return;let i=e?"relay":"udp",o=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${i}`);let a=Date.now();yield this.doSwitchRelay(i),this._log.warn(`switchRelay ${i} success`),Z.addSuccessEvent({key:o,cost:Date.now()-a})}catch(a){this._log.warn(`switchRelay ${i} failed`,a),Z.addFailedEvent({key:o,error:a}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,i)=>{let o=setTimeout(()=>{this.stopReconnection(),i(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,i).finally(()=>clearTimeout(o))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};j([Vl("reconnect")],Vi.prototype,"startReconnection",1),j([Zn(n=>n.userId)],Vi.prototype,"addDownlink",1),j([Zn(n=>n)],Vi.prototype,"removeDownlink",1),j([hn(!0)],Vi.prototype,"updateSDP",1),j([Pr(521712,!1)],Vi.prototype,"setOffer",1),j([Pr(521713,!1)],Vi.prototype,"setAnswer",1);var bf=class{constructor(r){E(this,"tag");E(this,"len");E(this,"data");let e=new DataView(r);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(r).slice(4,2+2+this.len).buffer}},Nf=class{constructor(r){E(this,"tinyId");E(this,"data");let e=new DataView(r),t=0,i=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),a=new bf(new Uint8Array(r).slice(t,t+2+2+o).buffer);i.push(a),t+=2+2+o}i.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},RE=new Set;function Ws(){let n=Math.floor(Math.random()*4294967296);return RE.has(n)?Ws():(RE.add(n),n)}var wE=$t(nr());var Gs=class extends wE.default{constructor(e){super();E(this,"userId");E(this,"tinyId");E(this,"_sdpSemantics");E(this,"_isUplink");E(this,"_room");E(this,"_log");E(this,"_currentState","DISCONNECTED");E(this,"_prevTime",-1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=J.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(B.emit(U.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var wu=class extends Gs{constructor(e){super(_e(oe({},e),{isUplink:!0}));E(this,"localMainAudioTrack",null);E(this,"localMainVideoTrack",null);E(this,"localAuxAudioTrack",null);E(this,"localAuxVideoTrack",null);E(this,"_isPublishingAux",!1);E(this,"_publishingLocalAudioTrack");E(this,"_publishingLocalVideoTrack");E(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});E(this,"_flag",0);E(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:i,smallVideoSsrc:o,smallVideoRtxSsrc:a,auxVideoSsrc:d,auxVideoRtxSsrc:p}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:i||0,small:o||0,smallRtx:a||0,auxiliary:d||0,auxiliaryRtx:p||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:i}=this,o=Object.keys(t).find(a=>t[a]!==i[a]);if(o)if(e)this._log.warn(`publish state not matched, ${o} local:${t[o]} server:${i[o]} ${Xi()} ${vo()}`),Z.addCount({key:521e3});else{this._checkPublishStateTimeoutId=Qe.run(So,()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}Qe.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,i,o,a;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let d=this._peerConnection.getSenders();d&&(nn()?(e.audio=!!((t=d[0])!=null&&t.track),e.bigVideo=!!((i=d[1])!=null&&i.track),e.smallVideo=!!((o=d[2])!=null&&o.track),e.auxVideo=!!((a=d[3])!=null&&a.track)):d.forEach(p=>{p.track&&(p.track.kind===b.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get serverPublishState(){return{audio:!!(this.flag&go),bigVideo:!!(this.flag&_o),smallVideo:!!(this.flag&_d),auxVideo:!!(this.flag&_s)}}get muteState(){var e,t,i;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((i=this.localAuxVideoTrack)!=null&&i.muted)}}initialize(){this.installEvents()}close(e){var i;let t=((i=this._peerConnection)==null?void 0:i.getSenders())||[];for(let o of t)o.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var a,d,p;let i=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&i!==e&&(t?t.emit("connection-state-changed",{prevState:i,state:e}):((a=this.localMainVideoTrack)==null||a.emit("connection-state-changed",{prevState:i,state:e}),(d=this.localAuxVideoTrack)==null||d.emit("connection-state-changed",{prevState:i,state:e}),(p=this._publishingLocalVideoTrack)==null||p.emit("connection-state-changed",{prevState:i,state:e}))),o}onVideoEncodeFailed(e){var t,i;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),(i=this.singlePC)==null||i.switchVideoEncoder("vp8")))}publish(o){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:i}){var _,S,v,A,w,M,L;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:a,muteState:d}=this;if(e&&(this._publishingLocalAudioTrack=e,a.audio=!0,d.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new Y({code:H.NOT_SUPPORTED_H264,message:Te({key:Ee.NOT_SUPPORTED_H264ENCODE})});Nt&&Bn()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(ni["480p_2"]),yield t.applyProfile()),this._publishingLocalVideoTrack=t,i?(a.auxVideo=!0,d.auxVideo=t.muted):(a.bigVideo=!0,d.bigVideo=t.muted)}this._isPublishingAux=i;let p;if(t&&!i&&t.small&&(p=this._room.videoManager.smallTrack,a.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:Oe.SPC_PUBLISH,responseCommand:ye.SPC_PUBLISH_RESULT,data:_e(oe({},this.singlePC.uplinkSSRC),{state:a,muteState:d}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:p,isAuxiliary:i}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[i?"localAuxVideoTrack":"localMainVideoTrack"]=t;let{scaleResolutionDownBy:W}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[i?3:1],W,t.streamType)}e&&(this[i?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((_=this.localMainAudioTrack)==null?void 0:_.profile.bitrate)||((S=this.localAuxAudioTrack)==null?void 0:S.profile.bitrate),bigVideo:(v=this.localMainVideoTrack)==null?void 0:v.profile.bitrate,smallVideo:(w=(A=this.localMainVideoTrack)==null?void 0:A.small)==null?void 0:w.bitrate,auxVideo:(M=this.localAuxVideoTrack)==null?void 0:M.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),!i&&(this._room.preferHW||((L=this._room.scheduleResult.config)==null?void 0:L.preferHW))&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:i,isAuxiliary:o}){if(!si())return;this._log.info("publish by transceiver");let a=t==null?void 0:t.outMediaTrack,d=e==null?void 0:e.outMediaTrack,p=this._peerConnection.getTransceivers(),_=[],S=[],v=(w,M,L)=>{var ie,Me;let W=p[M].sender.replaceTrack(L);S.push(M),(ie=this.singlePC)!=null&&ie.enableInsertableStreams&&W.then(()=>this.createEncodedStreams(p[M].sender,w)),(Me=this.singlePC)!=null&&Me.scriptTransformWorker&&this.initSenderTransfrom(p[M].sender,w),_.push(W)};d&&v(e.mediaType,0,d),a&&v(t.mediaType,o?3:1,a),i&&v(8,2,i);let A=this.singlePC.setTransceiverDirection(We.SENDONLY,S);return _.push(A),Promise.all(_)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var d,p;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let i=e.createEncodedStreams(),o=new AbortController;(d=this.singlePC)==null||d.addAbortController(e,o),((p=this.getTrackByMediaType(t))!=null&&p.enableEncodeFrame?i.readable.pipeThrough(new TransformStream({transform:(_,S)=>{var A;let v=this.getTrackByMediaType(t);S.enqueue(((A=this.singlePC)==null?void 0:A.isUsingH264)&&v?v.encodeFrame(_,t===8):_)}}),o):i.readable).pipeTo(i.writable,o).catch(_=>{this._log.debug("encoded stream error",_),_!=="destory"&&this._log.warn(_)})}initSenderTransfrom(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker)return;let i=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:i,isSmall:o}))}enableSmall(e){return N(this,null,function*(){if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(We.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(We.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(i){return N(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){let o=t&&t===this.localAuxVideoTrack,a=t==null?void 0:t.outMediaTrack,d=this._peerConnection.getSenders(),p=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield d[0].replaceTrack(null),p.push(0))),a&&(o?(yield d[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=_e(oe({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),p.push(3)):(yield d[1].replaceTrack(null),yield d[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=_e(oe({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),p.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(We.INACTIVE,p),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return N(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},i=yield this._signalChannel.sendWaitForResponseWithRetry({command:Oe.PUBLISH_STATE_CHANGE,data:t,responseCommand:ye.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(i.data.code,i.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Oe.UNPUBLISH,commandDesc:"unpublish",responseCommand:ye.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===H.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let i=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:a}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?a=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),on){if(i&&i.outMediaTrack){let d=i.outMediaTrack.getSettings();this._mediaSettings.audioChannel=d.channelCount||1,this._mediaSettings.audioBps=i.profile.bitrate*1e3,this._mediaSettings.audioFs=d.sampleRate||0}if(o&&o.outMediaTrack){let d=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=d.width||0,this._mediaSettings.videoHeight=d.height||0,this._mediaSettings.videoFps=d.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(a&&a.outMediaTrack){let d=a.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=d.width||0,this._mediaSettings.auxVideoHeight=d.height||0,this._mediaSettings.auxVideoFps=d.frameRate||0,this._mediaSettings.auxVideoBps=a.profile.bitrate*1e3}}else i&&i.outMediaTrack&&(this._mediaSettings.audioChannel=i.profile.channelCount,this._mediaSettings.audioBps=i.profile.bitrate*1e3,this._mediaSettings.audioFs=i.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Oe.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:ye.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return N(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?b.AUXILIARY:b.MAIN} stream`),nn()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return N(this,null,function*(){var o;if(!e.mediaTrack)return;let i=this._peerConnection.getTransceivers();if(e.kind===b.AUDIO)yield i[0].sender.replaceTrack(e.outMediaTrack);else{let a=t?3:1;yield i[a].sender.replaceTrack(e.outMediaTrack),a===1&&((o=this.localMainVideoTrack)==null?void 0:o.small)&&(yield i[2].sender.replaceTrack(this._room.videoManager.smallTrack)),i[a].direction===We.INACTIVE&&(yield this.singlePC.setTransceiverDirection(We.SENDONLY,[a]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return N(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?b.AUXILIARY:b.MAIN} stream`),nn()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return N(this,null,function*(){if(!e.mediaTrack)return;let i=this._peerConnection.getTransceivers();if(e.kind===b.AUDIO)yield i[0].sender.replaceTrack(null);else{let o=t?3:1;yield i[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield i[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(We.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return N(this,null,function*(){var a;let t=(a=this._peerConnection)==null?void 0:a.getSenders(),i=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!i||t.find(d=>d.track===i))return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${i.kind} track ${i.id} ${i.label} on ${o?b.AUXILIARY:b.MAIN} stream`),i.kind===b.AUDIO&&t[0]&&(yield t[0].replaceTrack(i)),i.kind===b.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(i)),o&&t[3]&&(yield t[3].replaceTrack(i))),!0})}setBandwidth(o){return N(this,arguments,function*({bandwidth:e,type:t,videoType:i}){if(this.singlePC){let a={};t===b.AUDIO?a.audio=e:i==="big"?a.bigVideo=e:i==="small"?a.smallVideo=e:a.auxVideo=e,yield this.singlePC.setBandwidth(a)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Oe.UPDATE_MUTE_STAT,responseCommand:ye.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&B.emit(U.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=b.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===b.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===b.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===b.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===b.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===gs?(this._log.error(Yt.NOT_SUPPORTED_H264ENCODE),new Y({code:H.NOT_SUPPORTED_H264,message:Te({key:Ee.NOT_SUPPORTED_H264ENCODE})})):new Y({code:H.UNKNOWN,message:Te({key:Ee.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ye.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return N(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};j([Li(function({localVideoTrack:n}){n==null||n.once("6",this.onVideoEncodeFailed,this)})],wu.prototype,"publish",1),j([Li(function({localVideoTrack:n}){n==null||n.off("6",this.onVideoEncodeFailed,this)})],wu.prototype,"unpublish",1);var Df=wu;function kE(n){return Object.keys(n).filter(r=>n[r])}var uc=class extends Gs{constructor(e){super(_e(oe({},e),{isUplink:!1}));E(this,"_flag",0);E(this,"isRobot",!1);E(this,"role","anchor");E(this,"remoteAudioTrack");E(this,"remoteVideoTrack");E(this,"remoteAuxiliaryTrack");E(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});E(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new ro(this._room,this),this.remoteVideoTrack=new di(this._room,this),this.remoteAuxiliaryTrack=new qa(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return Co(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,i,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(i=this.remoteVideoTrack)==null||i.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===b.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){!this.singlePC||(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){!this.singlePC||(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var o,a;let t=this._currentState,i=super.emitConnectionStateChangedEvent(e);return i&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(a=this.remoteAuxiliaryTrack)==null||a.emit("connection-state-changed",{prevState:t,state:e})),i}onTrack(e){var S;let t=e.streams[0],{track:i,receiver:o}=e;if(!t.id.includes(this.tinyId))return;let d=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${d} ${i.kind}`);let p=b.AUDIO;i.kind===b.VIDEO&&(p=d===b.MAIN?b.VIDEO:b.AUXILIARY);let _=this.remoteAudioTrack;p===b.VIDEO?_=this.remoteVideoTrack:p===b.AUXILIARY&&(_=this.remoteAuxiliaryTrack),(S=this.singlePC)!=null&&S.scriptTransformWorker&&this.initReceiverTransform(o,d,i.kind===b.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(_,o),_.setInputMediaStreamTrack(i)}createEncodedStreams(e,t){if(!this.singlePC.insertableStreamsAbortMap.has(t)){let i=t.createEncodedStreams(),o=new AbortController,a={abortController:o,enqueue:d=>{var p;return(p=this.singlePC)!=null&&p.isUsingH264?e.decodeFrame(d):d}};i.readable.pipeThrough(new TransformStream({transform:(d,p)=>{let _=a.enqueue(d);_&&p.enqueue(_)}})).pipeTo(i.writable,o).catch(d=>{d!=="destory"&&this._log.warn(d)}),this.singlePC.addAbortController(t,o)}}initReceiverTransform(e,t,i){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:i,userId:this.userId,streamType:t}))}subscribe(e,t){return N(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${kE(e)}`),this.hasSSRC){let i="subscribe_change";Object.values(e).find(o=>o===!0)||(i="unsubscribe"),yield this.sendSubscription(i,e)}else yield this.doSubscribe(e),this.checkTrackEnded(e)}catch(i){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${i.message} ${JSON.stringify(this.muteState)}`),new Y({code:H.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):i}})}checkTrackEnded(e){var t,i,o;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((i=this.remoteVideoTrack.mediaTrack)==null?void 0:i.readyState)==="ended"||e.auxiliary&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),wi&&ki<92)return;this.singlePC.startReconnection()}}unsubscribe(i){return N(this,arguments,function*({remoteTracks:e,streamType:t}){var d;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let o=oe({},this.subscribeState);e.forEach(p=>{switch(p.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let a="subscribe_change";Object.values(o).find(p=>p===!0)||(a="unsubscribe"),this._log.info(`${a==="unsubscribe"?a:"subscribe"} ${t} [${kE(o)}]`),a==="unsubscribe"&&((d=this.singlePC)==null||d.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(a,o),a==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let i={srcTinyId:this.tinyId,srcUserId:this.userId},o=Oe.UNSUBSCRIBE,a=ye.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(i={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Oe.SUBSCRIBE_CHANGE,a=ye.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:i,responseCommand:a,timeout:1e4,retries:3}).then(({data:d})=>{if(d.code!==0){let p=new Y({code:d.code,message:Te({key:Ee.ERROR_MESSAGE,data:{type:e,message:d.message}})});throw this._log.error(p),p}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),this.doSubscribe(this.subscribeState))}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return N(this,arguments,function*(e=this.subscribeState,t=!0){if(!!this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let i={audioSsrc:Ws(),bigVideoSsrc:Ws(),bigVideoRtxSsrc:Ws(),auxVideoSsrc:Ws(),auxVideoRtxSsrc:Ws()},{audioSsrc:o,bigVideoSsrc:a,bigVideoRtxSsrc:d,auxVideoSsrc:p,auxVideoRtxSsrc:_}=i;this.ssrc={audio:o,video:a,videoRtx:d,auxiliary:p,auxiliaryRtx:_},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let S=yield this._signalChannel.sendWaitForResponseWithRetry({command:Oe.SPC_SUBSCRIBE,responseCommand:ye.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:i},retries:3,retryTimeout:0});if(S.data.code!==0)throw new Y({code:S.data.code,message:S.data.message})}catch(S){throw yield this.removeDownlink(),S}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{let i=this._room.scheduleResult.config;((i==null?void 0:i.jitterDelay)||(i==null?void 0:i.jitterDelayAux))&&this.setJitterBufferDelay({mainDelay:i.jitterDelay,auxDelay:i.jitterDelayAux})}}})}removeDownlink(){return N(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;((e==null?void 0:e.jitterDelay)||(e==null?void 0:e.jitterDelayAux))&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!this.singlePC||!this._peerConnection||Gn(e)&&Gn(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let i=this.singlePC.getReceiversByUserId(this.userId);return qe(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),qe(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Gn(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:i,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:i,resolve:o}){try{if(e===0&&t===0)return i.forEach(d=>d.jitterBufferTarget=0),o();if(i.forEach(d=>{var v;let p=d.track===this.remoteAuxiliaryTrack.outMediaTrack||Gn(e)&&d.track===this.remoteAudioTrack.outMediaTrack;if(p&&Gn(t)||!p&&Gn(e))return;let _=p?t||0:e,S=(d.jitterBufferTarget||0)+100;S>_||(d.jitterBufferTarget=S,this._log.debug(`set ${p?"aux ":""}${(v=d==null?void 0:d.track)==null?void 0:v.kind} jitterBuffer delay ${S} -> ${_}`))}),!i.find(d=>{let p=d.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return d.jitterBufferTarget<p}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:i,resolve:o})},1e3)}catch(a){this._log.warn(`set jitterBuffer delay error: ${a}`),clearTimeout(this.jitterBufferTimeoutId),o()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};j([hn(),ke(n=>function(...r){return new Promise((e,t)=>{let i=o=>{this.off("closed",i),t(new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.CONNECTION_ABORTED,data:o})}))};this.on("closed",i),n.apply(this,r).then(e,t).finally(()=>{this.off("closed",i)})})})],uc.prototype,"subscribe",1),j([hn()],uc.prototype,"unsubscribe",1),j([Zn(()=>"jitter")],uc.prototype,"setJitterBufferDelay",1);var OE=uc;function PE(){return ke(n=>function(...r){return N(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(r=r.filter(t=>t.outMediaTrack&&t.state==="capture"),!r.length))return;B.emit("61",{room:this});let e=n.apply(this,r);return r.forEach(t=>t.publish(this,e)),e})})}function xE(){return ke(n=>function(...r){let e=n.apply(this,r);return r.forEach(t=>t.unpublish()),e})}var ME=$t(nr());function sy(){return Math.floor(Math.random()*16383)}var wf=class extends ME.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;E(this,"log");E(this,"cmdIdSeqMap",new Map);E(this,"messageMap",new Map);this.log=J.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(ye.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",i=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===i&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let i=this.cmdIdSeqMap.get(e)||sy(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:i};this.cmdIdSeqMap.set(e,i+1),this.signalChannel.send(Oe.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,i=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(i){let o={userId:i,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),a=>a.charCodeAt(0)).buffer};if(t.ordered){let a=`${i}_${o.cmdId}`,d=this.messageMap.get(a);if(!d||d.lastSeq===0)d||(d={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(a,d),setTimeout(()=>this.emitMessage(o,!0),100)),d.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(d.lastSeq-o.seq)>wf.SEQ_INTERVAL)this.messageMap.set(a,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>d.lastSeq){if(o.seq===d.lastSeq+1)this.emitMessage(o);else if(!d.cachedMessageMap.has(o.seq)){let p=setTimeout(()=>this.emitMessage(o,!0),5e3);d.cachedMessageMap.set(o.seq,{message:o,timeoutId:p})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=a=>{a.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),Ro(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var d;let i=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(i){if(t){let p=[...i.cachedMessageMap.values()].sort((_,S)=>_.message.seq-S.message.seq);p[0]&&(o=p[0].message)}i.lastSeq!==0&&o.seq-i.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${i.lastSeq} -> ${o.seq}`),i.lastSeq=o.seq,clearTimeout((d=i.cachedMessageMap.get(o.seq))==null?void 0:d.timeoutId),i.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let a=i==null?void 0:i.cachedMessageMap.get(o.seq+1);a&&this.emitMessage(a.message)}},ku=wf;E(ku,"SEQ_INTERVAL",300);var{isString:LE,isUndefined:lc,getNetworkType:ay,isEmpty:Ou}=yr,Fi=class extends Ch{constructor(e){super(e);this._heartbeat=-1;this._lastHeartBeatTime=-1;this._joinTimeout=-1;this._firstPublishedList=null;this._joinReject=null;this._isRelayChanged=!1;this.signalChannel=null;this.uplinkConnection=null;this.singlePC=null;this.enableSPC=Ma;this._changeBigSmallRecords=new Map;this.forceRelay=!1;this._turnServers=[];this._syncUserListInterval=-1;this._smallStreamConfig={bitrate:100,frameRate:15,height:120,width:160};this.enableSEI=!1;this._enableAudioVolumeEvaluation=!1;this._audioVolumeIntervalId=0;this._enableMultiAuxStream=!1;this._pureAudioPushMode=!1;this.preferHW=!1;this._updateAudioLevelTaskId=-1;this._stats=new vu(this,this._log),this.userManager=new Zl(this.userId,this._log),this._version=Bt,this.sdpSemantics=ma,lc(e.sdpSemantics)?sn.isUnifiedPlanDefault()&&(this.sdpSemantics=Eo):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${ay()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=lc(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&Ma,!lc(e.enableSPC)&&Ma&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new yE(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,i){return N(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",o=>{this.emit("peer-join",o)}),this.userManager.on("2",o=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",o)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",a=>{var o=Mf(a,[]);B.emit(U.REMOTE_PUBLISH_STATE_CHANGED,oe({room:this},o)),this.emit("remote-publish-state-changed",oe({},o))}),this.joinParams=e,new Promise((o,a)=>N(this,null,function*(){var d,p;this._joinReject=a;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(S){if(S instanceof Y&&S.code===H.SPC_INITIALIZED_FAILED)(d=this.signalChannel)==null||d.destroy(),yield this.initialize();else return a(S)}let _=ge();yield this.doJoin(e,(p=this.singlePC)==null?void 0:p.clientAbility),Z.addSuccessEvent({key:521708,cost:ge()-_}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(_){Z.addFailedEvent({key:521708,error:_}),a(_)}this._joinReject=null}))})}initSinglePC(){return N(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Vi({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new Y({code:H.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((i,o)=>N(this,null,function*(){var p,_,S;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(At.SETUP_FAILED,v=>{this.clearJoinTimeout(),B.emit(U.JOIN_SIGNAL_CONNECTION_END,{room:this,error:v}),o(v)}),St((_=(p=this.scheduleResult)==null?void 0:p.config)==null?void 0:_.singlePC)&&Ma&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2);let a={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:hm(),netType:Oa(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(a)}`);let d=5e3;((S=this.scheduleResult.config)==null?void 0:S.enterRoomTimeout)&&this.scheduleResult.config.enterRoomTimeout>=1&&(d=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new Y({code:H.JOIN_ROOM_FAILED,message:Te({key:Ee.JOIN_ROOM_TIMEOUT})}))},d),B.emit(U.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Oe.SPC_JOIN_ROOM:Oe.JOIN_ROOM,a),this.signalChannel.once(ye.JOIN_ROOM_RESULT,v=>{this.clearJoinTimeout();let{code:A,message:w,data:M,tinyId:L}=v.data;B.emit(U.JOIN_RECEIVED_CMD_RES,{room:this,code:A}),A===0?(this._log.info("Join room success, start heartbeat"),L&&(this.tinyId=L),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=M.publishers,this.singlePC&&this.singlePC.connect(_e(oe({},M.ability),{useVp8:M.ability.useVp8||!!e.useVp8})).catch(()=>{}),i()):(this._log.error(`Join room failed result: ${A} error: ${w}`),o(new Y({code:H.JOIN_ROOM_FAILED,extraCode:A,message:Te({key:Ee.JOIN_ROOM_FAILED,data:{error:w,code:A}})})))})}))}reJoin(e=!0){return N(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let t,i=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,i.push(this.initSinglePC().then(o=>(t=o,o)))),this.signalChannel&&(this.signalChannel.race=e,this.signalChannel.close(),i.push(this.signalChannel.connect())),yield Promise.all(i),yield this.doJoin(_e(oe({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),t),this._log.warn("reJoin success"),je.logSuccessEvent({userId:this.userId,eventType:br.REJOIN}),this.singlePC){let o=a=>{var d;a.state==="CONNECTED"&&((d=this.singlePC)==null||d.off(Tn.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof Df&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(p=>{p.installEvents(),p.onSinglePCReconnected()}))};this.singlePC.on(Tn.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof yu&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(t){this._log.warn(`reJoin fail ${t}`),this.reset(),je.logFailedEvent({userId:this.userId,eventType:br.REJOIN,error:t}),this.emit("error",new Y({code:H.JOIN_ROOM_FAILED,message:Te({key:Ee.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return N(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),i=this.signalChannel||qg(this.userId),o=!!(i&&i.isConnected&&i.keepAlive),a;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(a=this.scheduleResult.domains[0]),this._log.info(`${o?"reuse":"setup"} signal channel`),o?(i.url=e,i.backupUrl=t,i.room=this,this.signalChannel=i):(this.signalChannel=new oc({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,race:this.enableSPC&&!this.proxy_ws,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?a:void 0}),this._customMessageManager=new ku(this,this.signalChannel),this._customMessageManager.on("message",d=>{this.emit("custom-message",d)})),this.networkQuality||(this.networkQuality=new $o({signalChannel:this.signalChannel,room:this}),this.networkQuality.on($o.EVENT_NETWORK_QUALITY,d=>{var p;this.emit("network-quality",d),(p=this.singlePC)==null||p.detectTCPAndUDP(d)})),ur(this,this.signalChannel).add(At.CONNECTION_STATE_CHANGED,d=>{B.emit(U.SIGNAL_CONNECTION_STATE_CHANGED,oe({room:this},d)),this.emit("signal-connection-state-changed",d)}).add(At.RECONNECT_FAILED,d=>{this.reset(),this.emit("error",d)}).add(ye.PEER_JOIN,d=>{let{srcTinyId:p,userId:_,role:S}=d.data.data;this.userManager.addUser({userId:_,tinyId:p,role:S})}).add(ye.PEER_LEAVE,d=>{let{userId:p,reason:_=0}=d.data.data;this.userManager.deleteUser(p,_)}).add(ye.UPDATE_REMOTE_MUTE_STAT,d=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(d.data)}).add(ye.CLIENT_BANNED,d=>{let p=d.data.data,{reason:_}=p;if(je.uploadEvent({log:`stat-banned:${_}`,userId:this.userId}),_==="user_time_out"){this._log.warn(`${_} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[_==="kick"?"error":"info"](`user was banned because of [${_}]`),this.reset(),this.emit("banned",{reason:_})}),this.signalChannel.once(At.SETUP_SUCCESS,d=>{this.tinyId=d.signalInfo.tinyId,B.emit(U.JOIN_SIGNAL_CONNECTION_END,{room:this})}),B.emit(U.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&B.emit(U.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||kt(this)}leave(){return N(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),B.emit(U.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Oe.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=Qe.run(To,this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),Qe.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return N(this,null,function*(){var a;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let i=(a=this.signalChannel)!=null&&a.isConnected?lg(this.userId):[],o=_e(oe({str_sdk_version:md,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:i,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:oe({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Oa()},t.msg_device_info)});if(this.heartbeatReport=o,B.emit(U.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Oe.ON_QUALITY_REPORT,o);let d=Date.now();this._lastHeartBeatTime>0&&d-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${d-this._lastHeartBeatTime}`),this._lastHeartBeatTime=d,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",_e(oe({},o),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(i=>i.flag!==Hh).map(({userId:i,srcTinyId:o,flag:a})=>{i===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=a);let d=this.remotePublishedUserMap.get(i);return d&&this.checkSubscribeBigSmallVideo(d),{userId:i,tinyId:o,flag:a}});e.data.mixRobotList.forEach(({userId:i,srcTinyId:o,flag:a,mixUserList:d})=>{t.unshift({userId:i,tinyId:o,flag:a,isRobot:!0,mixUserList:d})}),B.emit(U.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof yu&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:i,isRobot:o}){let a=new(this.singlePC?OE:_f)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:i,isRobot:o});this.userManager.addRemotePublishedUser(a),this.installDownlinkEvents(a,e),this.emit("remote-published",a)}closeDownLinkConnection(e,t="remote user unpublished"){let i=this.remotePublishedUserMap.get(e);i&&(i.close(t),this.emit("remote-unpublished",i))}installDownlinkEvents(e,t){e.on("error",i=>{let o=i.getCode();o!==H.ICE_TRANSPORT_ERROR&&(o===H.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",i))}),e.on("connection-state-changed",i=>{this.emit("media-connection-state-changed",_e(oe({},i),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=Qe.run(To,this.syncUserList.bind(this)))}stopSyncUserListInterval(){Qe.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:Oe.GET_USER_LIST,responseCommand:ye.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:i,message:o}=t;if(i===0)return(t.data&&t.data.userList||[]).map(({userId:d,srcTinyId:p,role:_})=>({userId:d,tinyId:p,role:_}));throw Te({key:Ee.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ye.USER_LIST_RES,code:i,message:o}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!lf)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===lt.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(i=>{if(i instanceof Cr&&!i.getIsReconnecting()){let o=i.getPeerConnection();o&&o.connectionState===lt.CLOSED&&(this._log.warn(`[${i.getUserId()}] pc is closed but not reconnect`),i.startReconnection())}})}fallbackToMPC(){return N(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),je.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin(!1)),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new yu({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let i=new _f({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(i,t.userId),this.remotePublishedUserMap.set(t.userId,i),t.isMainStreamSubscribed&&(yield i.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield i.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new Y({code:H.INVALID_OPERATION,message:Te({key:Ee.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),Qe.clearTask(this._audioVolumeIntervalId))}switchRole(e){return N(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:Oe.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:ye.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(i=>{let{code:o,message:a}=i.data;if(o!==0)throw new Y({code:H.SWITCH_ROLE_FAILED,message:Te({key:Ee.SWITCH_ROLE_FAILED,data:{message:a,code:o}})});this.role=e}).catch(i=>{throw i instanceof Y&&i.getCode()===H.API_CALL_TIMEOUT&&(i=new Y({code:H.SWITCH_ROLE_FAILED,message:Te({key:Ee.SWITCH_ROLE_TIMEOUT})})),this._log.error(i),i})}publish(...e){return N(this,null,function*(){let t={},i={};e.forEach(p=>{p instanceof lr&&(p instanceof mn?i.audio=p:t.audio=p),p instanceof yt&&(p instanceof Xr&&p.mediaType===2?i.video=p:t.video=p)});let o=Ou(t),a=Ou(i);(!o||!a)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new Df({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new yu({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",p=>{this.emit("media-connection-state-changed",_e(oe({},p),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",p=>{let _=p.getCode();_!==H.ICE_TRANSPORT_ERROR&&(_===H.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",p))}));let d=e.map(p=>p.kind).join(",");o||(this._log.info(`publish() => main ${d}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),a||(this._log.info(`publish() => aux ${d}`),yield this.uplinkConnection.publish({localAudioTrack:i.audio,localVideoTrack:i.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return N(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},i={};e.forEach(o=>{!o.mediaTrack||!o.isPublished||(o instanceof lr&&(o instanceof mn?i.audio=o:t.audio=o),o instanceof yt&&(o instanceof Xr&&o.mediaType===2?i.video=o:t.video=o))});try{let o=e.map(a=>a.kind).join(",");Ou(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),Ou(i)||(this._log.info(`unpublish() => aux ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:i.audio,localVideoTrack:i.video}))}catch(o){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!Mm()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&B.emit(U.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return N(this,null,function*(){!this.uplinkConnection||(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return N(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:b.VIDEO,videoType:b.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return N(this,null,function*(){if(e=e.filter(a=>!a.isSubscribed),e.length===0)return;let{userId:t}=e[0],i=this.remotePublishedUserMap.get(t);if(!i)return;let o=e.find(a=>a.mediaType===2)?"auxiliary":"main";try{let a=oe({},i.subscribeState);e.forEach(p=>{switch(p.mediaType){case 1:a.audio=!0;break;case 4:a.video=!0;break;case 8:a.smallVideo=!0;break;case 2:a.auxiliary=!0;break}});let d=this._changeBigSmallRecords.get(t);d&&d.options.smallVideo&&i.muteState.hasSmall&&a.video&&(a.video=!1,a.smallVideo=!0),B.emit(U.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:i,subscribeState:a}),this._log.info(`subscribe() => ${t} ${o} [${Th(a)}] prev: [${Th(i.subscribeState)}]`),yield i.subscribe(a,o),this._log.info(`subscribe ${t} ${o} done`);for(let p of e)p.mediaTrack||(yield p.waitHasMediaTrack());B.emit(U.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:i})}catch(a){let d=a instanceof Y?a.getCode():H.UNKNOWN,p=a;throw a instanceof Y?d===H.REMOTE_STREAM_NOT_EXIST&&(p=new Y({code:H.API_CALL_ABORTED,message:Te({key:Ee.API_CALL_ABORTED,data:{message:a.message,userId:t,streamType:o}})}),this._log.warn(p)):(p=new Y({code:d,message:Te({key:Ee.SUBSCRIBE_FAILED,data:{message:a.message,userId:t,streamType:o}})}),this._log.error(p)),p}})}unsubscribe(...e){return N(this,null,function*(){let{userId:t}=e[0],i=this.remotePublishedUserMap.get(t);if(!i)return;let o=e.find(a=>a.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o}`);try{yield i.unsubscribe({remoteTracks:e,streamType:o})}catch(a){this._log.warn(`unsubscribe() => failed ${a}`)}e.forEach(a=>{a.unsubscribe(),a.mediaType===8&&a.setMediaType(4)}),B.emit(U.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:i})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,Qe.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),B.emit(U.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&Qe.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=Qe.run(_a,()=>{var o;Xm.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let i=[];(o=this.remotePublishedUserMap)==null||o.forEach(a=>{if(a.muteState.hasAudio){!Xm.isRunning&&a.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(a):a.remoteAudioTrack.volume=0;let d=Math.floor(a.remoteAudioTrack.getAudioLevel()*100);i.push({userId:a.userId,volume:d})}}),this.emit("audio-volume",i)},{fps:1e3/e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return N(this,null,function*(){var a;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let i=(a=this.uplinkConnection.getPeerConnection())==null?void 0:a.getSenders()[0];if(!i)return;let o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=Qe.run(_a,()=>N(this,null,function*(){let d=yield i.getStats();this._updateAudioLevelTaskId<0||d.forEach(p=>{p.type==="media-source"&&p.audioLevel&&(this.uplinkConnection.localMainAudioTrack.volume=p.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),Qe.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!Lm||!t)return;let i=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;i&&(e.remoteAudioTrack.volume=Math.min(i*2,1))}getLocalAudioStats(){return N(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return N(this,null,function*(){var t,i;let e={};return e[this.userId]=((i=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:i.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return N(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let i=yield this._stats.getReceiverStats(t);e.downlinksRTT[i.userId]=i.rtt}return e})}getRemoteVideoStats(e){return N(this,null,function*(){let t={};for(let[i,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[i]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[i]=o.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return N(this,null,function*(){let e={};for(let[t,i]of this.remotePublishedUserMap)i.muteState.hasAudio&&(e[t]=i.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let i=[];Array.isArray(e)?e.forEach(o=>i.push(yr.getTurnServer(o))):yr.isPlainObject(e)&&i.push(yr.getTurnServer(e)),this._turnServers=i,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Oe.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:ye.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Oe.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:ye.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Oe.START_PUBLISH_TENCENT_CDN:Oe.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?ye.START_PUBLISH_TENCENT_CDN_RES:ye.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Oe.STOP_PUBLISH_TENCENT_CDN:Oe.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?ye.STOP_PUBLISH_TENCENT_CDN_RES:ye.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Oe.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ye.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Oe.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ye.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Oe.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:ye.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Oe.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:ye.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(i=>{})}getIceServers(){return this._turnServers.length===0&&this.scheduleResult.iceServers?this.scheduleResult.iceServers:this._turnServers}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=yr.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return N(this,null,function*(){let{subscribeState:t,userId:i,muteState:{hasSmall:o,hasVideo:a}}=e;if(!o&&!a||!t.video&&!t.smallVideo)return;let d=this._changeBigSmallRecords.get(i);if(!d||d.isSubscribing||d.reSubscribeCount<=0)return;let{options:p,reSubscribeCount:_}=d;if(p.video&&t.video||p.smallVideo&&t.smallVideo&&o)return;let S={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:p.video,smallVideo:p.smallVideo};try{if(!o&&S.smallVideo&&(S.video=!0,S.smallVideo=!1),S.smallVideo===t.smallVideo&&S.video===t.video)return;d.isSubscribing=!0,d.reSubscribeCount=_-1,yield e.subscribe(S,"main"),e.remoteVideoTrack.setMediaType(S.smallVideo?8:4),this._log.info(`change [${i}] to ${S.smallVideo?"small":"big"} video successfully. count ${pa-d.reSubscribeCount}.`),d.isSubscribing=!1,d.reSubscribeCount=pa}catch(v){this._log.info(`change [${i}] to ${S.smallVideo?"small":"big"} video failed. count ${pa-d.reSubscribeCount}.`),d.isSubscribing=!1,d.reSubscribeCount===0&&this._changeBigSmallRecords.delete(i)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:pa};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(LE(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!lc(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new Y({code:H.INVALID_PARAMETER,message:Te({key:Ee.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!lc(e.userDefineRecordId)){let i=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(i)===null)throw new Y({code:H.INVALID_PARAMETER,message:Te({key:Ee.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!lc(e.userDefinePushArgs))if(LE(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new Y({code:H.INVALID_PARAMETER,message:Te({key:Ee.INVALID_USER_DEFINE_PUSH_ARGS})});Ou(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Qn)return this.singlePC.enableInsertableStreams=!0,this.singlePC.startReconnection()}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new Y({code:H.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}};j([Af(["left",pt.INIT],"joined"),wr({settings:{retries:1,timeout:0},onRetrying(n){this._log.warn(`join retry ${n}`)},onRetryFailed(n){this._log.error("join failed",n)},onError(n,r){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),tn(!0),this.reset(),r()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),r()):(this.reset(),r())}}),Wg()],Fi.prototype,"join",1),j([Af("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Gg(),Vl("leave room"),Kd({fnName:"publish",validateArgs:!1}),Kd({fnName:"unsubscribe",validateArgs:!1})],Fi.prototype,"leave",1),j([hn(),PE(),wr({settings:{retries:Un,timeout:n=>rn(n)},onError(n,r,e){var t;(t=n.message)!=null&&t.includes("timeout")?(this._log.warn("publish timeout"),r()):(this._log.error(`publish failed: ${n}`),e(n),B.emit(U.PUBLISH_FAILED,{room:this}))}})],Fi.prototype,"publish",1),j([Kd({fnName:"publish"}),K_("api-call"),hn(),xE(),Li(function(){var n,r;this.localTracks.size===0&&No()&&((r=(n=this.singlePC)==null?void 0:n.getPeerConnection())==null||r.getSenders().forEach(e=>e.track&&e.replaceTrack(null)))})],Fi.prototype,"unpublish",1),j([Q_(n=>{if(n.code!==H.API_CALL_ABORTED)throw n}),Zn(n=>n.userId)],Fi.prototype,"replaceTrack",1),j([Zn((...n)=>n[0].userId),Bl(),jg(),wr({settings:{retries:Un,timeout:n=>rn(n)},onError(n,r,e,t){n.message.includes("timeout")?(this._log.warn("subscribe timeout"),r()):(this._log.error(`subscribe failed: ${n}`),e(n),B.emit(U.SUBSCRIBE_FAILED,{room:this,remoteTracks:t}))}})],Fi.prototype,"subscribe",1),j([Kd({fnName:"subscribe",callback(...n){this.singlePC||n.forEach(r=>{let e=this.remotePublishedUserMap.get(r.userId);e&&!e.isMainStreamSubscribed&&!e.isAuxStreamSubscribed&&e.close("you unsubscribed")})}}),Zn((...n)=>n[0].userId)],Fi.prototype,"unsubscribe",1);Su.create=Su._create.bind(Su,Fi);var UH=Su;export{UH as default};