trtc-sdk-v5 5.10.1-wasm.5 → 5.10.2-beta.1
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/assets/debug-dialog.js +17 -1
- package/index.d.ts +16 -1
- package/package.json +6 -4
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/cross-room/package.json +1 -1
- package/plugins/custom-encryption/custom-encryption.esm.js +1 -1
- package/plugins/custom-encryption/custom-encryption.umd.js +1 -1
- package/plugins/custom-encryption/package.json +1 -1
- package/plugins/device-detector/device-detector.esm.js +8 -8
- package/plugins/device-detector/device-detector.umd.js +2 -2
- package/plugins/device-detector/package.json +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-decoder/video-decoder.esm.js +1 -1
- package/plugins/video-decoder/video-decoder.umd.js +1 -1
- package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +1 -1
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/beauty.esm.js +1 -1
- package/plugins/video-effect/beauty/beauty.umd.js +1 -1
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/voice-changer/package.json +1 -1
- package/trtc.esm.js +41 -63
- package/trtc.js +1 -1
- package/assets/av_processing.wasm +0 -0
- package/assets/worker.js +0 -17
package/trtc.esm.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
var Pg=Object.create;var _n=Object.defineProperty,kg=Object.defineProperties,vp=Object.getOwnPropertyDescriptor,Lg=Object.getOwnPropertyDescriptors,Ug=Object.getOwnPropertyNames,Rp=Object.getOwnPropertySymbols,Cp=Object.getPrototypeOf,Dp=Object.prototype.hasOwnProperty,Vg=Object.prototype.propertyIsEnumerable,Fg=Reflect.get;var Tn=Math.pow,Ou=(i,t,e)=>t in i?_n(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,ee=(i,t)=>{for(var e in t||(t={}))Dp.call(t,e)&&Ou(i,e,t[e]);if(Rp)for(var e of Rp(t))Vg.call(t,e)&&Ou(i,e,t[e]);return i},Ee=(i,t)=>kg(i,Lg(t));var In=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Jr=(i,t)=>{for(var e in t)_n(i,e,{get:t[e],enumerable:!0})},$g=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ug(t))!Dp.call(i,o)&&o!==e&&_n(i,o,{get:()=>t[o],enumerable:!(r=vp(t,o))||r.enumerable});return i};var Oi=(i,t,e)=>(e=i!=null?Pg(Cp(i)):{},$g(t||!i||!i.__esModule?_n(e,"default",{value:i,enumerable:!0}):e,i));var X=(i,t,e,r)=>{for(var o=r>1?void 0:r?vp(t,e):t,s=i.length-1,n;s>=0;s--)(n=i[s])&&(o=(r?n(t,e,o):n(o))||o);return r&&o&&_n(t,e,o),o};var u=(i,t,e)=>Ou(i,typeof t!="symbol"?t+"":t,e);var Ft=(i,t,e)=>Fg(Cp(i),e,t);var A=(i,t,e)=>new Promise((r,o)=>{var s=p=>{try{d(e.next(p))}catch(m){o(m)}},n=p=>{try{d(e.throw(p))}catch(m){o(m)}},d=p=>p.done?r(p.value):Promise.resolve(p.value).then(s,n);d((e=e.apply(i,t)).next())});var Bi=In((KS,ul)=>{"use strict";var jE=Object.prototype.hasOwnProperty,$t="~";function Qn(){}Object.create&&(Qn.prototype=Object.create(null),new Qn().__proto__||($t=!1));function qE(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function oh(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new qE(e,r||i,o),n=$t?$t+t:t;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function Hc(i,t){--i._eventsCount===0?i._events=new Qn:delete i._events[t]}function Ot(){this._events=new Qn,this._eventsCount=0}Ot.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)jE.call(e,r)&&t.push($t?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Ot.prototype.listeners=function(t){var e=$t?$t+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};Ot.prototype.listenerCount=function(t){var e=$t?$t+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Ot.prototype.emit=function(t,e,r,o,s,n){var d=$t?$t+t:t;if(!this._events[d])return!1;var p=this._events[d],m=arguments.length,g,I;if(p.fn){switch(p.once&&this.removeListener(t,p.fn,void 0,!0),m){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,r),!0;case 4:return p.fn.call(p.context,e,r,o),!0;case 5:return p.fn.call(p.context,e,r,o,s),!0;case 6:return p.fn.call(p.context,e,r,o,s,n),!0}for(I=1,g=new Array(m-1);I<m;I++)g[I-1]=arguments[I];p.fn.apply(p.context,g)}else{var S=p.length,N;for(I=0;I<S;I++)switch(p[I].once&&this.removeListener(t,p[I].fn,void 0,!0),m){case 1:p[I].fn.call(p[I].context);break;case 2:p[I].fn.call(p[I].context,e);break;case 3:p[I].fn.call(p[I].context,e,r);break;case 4:p[I].fn.call(p[I].context,e,r,o);break;default:if(!g)for(N=1,g=new Array(m-1);N<m;N++)g[N-1]=arguments[N];p[I].fn.apply(p[I].context,g)}}return!0};Ot.prototype.on=function(t,e,r){return oh(this,t,e,r,!1)};Ot.prototype.once=function(t,e,r){return oh(this,t,e,r,!0)};Ot.prototype.removeListener=function(t,e,r,o){var s=$t?$t+t:t;if(!this._events[s])return this;if(!e)return Hc(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&Hc(this,s);else{for(var d=0,p=[],m=n.length;d<m;d++)(n[d].fn!==e||o&&!n[d].once||r&&n[d].context!==r)&&p.push(n[d]);p.length?this._events[s]=p.length===1?p[0]:p:Hc(this,s)}return this};Ot.prototype.removeAllListeners=function(t){var e;return t?(e=$t?$t+t:t,this._events[e]&&Hc(this,e)):(this._events=new Qn,this._eventsCount=0),this};Ot.prototype.off=Ot.prototype.removeListener;Ot.prototype.addListener=Ot.prototype.on;Ot.prefixed=$t;Ot.EventEmitter=Ot;typeof ul!="undefined"&&(ul.exports=Ot)});var Rl=In((My,Eh)=>{"use strict";var gh=Eh.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(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.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(i){return i.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(i){return i.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(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.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(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(i){return i.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(i){return i.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(i){return"imageattr:%s %s %s"+(i.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(i){return"simulcast:%s %s"+(i.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(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(gh).forEach(function(i){var t=gh[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Ih=In(si=>{"use strict";var Us=function(i){return String(Number(i))===i?Number(i):i},e_=function(i,t,e,r){if(r&&!e)t[r]=Us(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=Us(i[o+1]))},t_=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;e_(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},_h=Rl(),r_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);si.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(r_).forEach(function(o){var s=o[0],n=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var d=0;d<(_h[s]||[]).length;d+=1){var p=_h[s][d];if(p.reg.test(n))return t_(p,r,n)}}),t.media=e,t};var Th=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=Us(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};si.parseParams=function(i){return i.split(/;\s?/).reduce(Th,{})};si.parseFmtpConfig=si.parseParams;si.parsePayloads=function(i){return i.toString().split(" ").map(Number)};si.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(Us),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};si.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(Th,{})})};si.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=Us(e):(r=Us(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var yh=In((xy,Sh)=>{"use strict";var vl=Rl(),i_=/%[sdv%]/g,o_=function(i){var t=1,e=arguments,r=e.length;return i.replace(i_,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},ia=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?o.push(e[t.name][n]):o.push(e[t.names[s]])}else o.push(e[t.name]);return o_.apply(null,o)},s_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],n_=["i","c","b","a"];Sh.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||s_,r=t.innerOrder||n_,o=[];return e.forEach(function(s){vl[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(ia(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(d){o.push(ia(s,n,d))})})}),i.media.forEach(function(s){o.push(ia("m",vl.m[0],s)),r.forEach(function(n){vl[n].forEach(function(d){d.name in s&&s[d.name]!=null?o.push(ia(n,d,s)):d.push in s&&s[d.push]!=null&&s[d.push].forEach(function(p){o.push(ia(n,d,p))})})})}),o.join(`\r
|
|
1
|
+
var Yp=Object.create;var Fs=Object.defineProperty,Kp=Object.defineProperties,vu=Object.getOwnPropertyDescriptor,Zp=Object.getOwnPropertyDescriptors,ef=Object.getOwnPropertyNames,nn=Object.getOwnPropertySymbols,Du=Object.getPrototypeOf,Ic=Object.prototype.hasOwnProperty,Ou=Object.prototype.propertyIsEnumerable,tf=Reflect.get;var $s=Math.pow,Sc=(s,i,e)=>i in s?Fs(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,v=(s,i)=>{for(var e in i||(i={}))Ic.call(i,e)&&Sc(s,e,i[e]);if(nn)for(var e of nn(i))Ou.call(i,e)&&Sc(s,e,i[e]);return s},w=(s,i)=>Kp(s,Zp(i));var Mu=(s,i)=>{var e={};for(var t in s)Ic.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&nn)for(var t of nn(s))i.indexOf(t)<0&&Ou.call(s,t)&&(e[t]=s[t]);return e};var pi=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),fi=(s,i)=>{for(var e in i)Fs(s,e,{get:i[e],enumerable:!0})},rf=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of ef(i))!Ic.call(s,r)&&r!==e&&Fs(s,r,{get:()=>i[r],enumerable:!(t=vu(i,r))||t.enumerable});return s};var Be=(s,i,e)=>(e=s!=null?Yp(Du(s)):{},rf(i||!s||!s.__esModule?Fs(e,"default",{value:s,enumerable:!0}):e,s));var b=(s,i,e,t)=>{for(var r=t>1?void 0:t?vu(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&&Fs(i,e,r),r};var d=(s,i,e)=>Sc(s,typeof i!="symbol"?i+"":i,e);var Fe=(s,i,e)=>tf(Du(s),e,i);var p=(s,i,e)=>new Promise((t,r)=>{var o=c=>{try{a(e.next(c))}catch(l){r(l)}},n=c=>{try{a(e.throw(c))}catch(l){r(l)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(o,n);a((e=e.apply(s,i)).next())});var Qe=pi((nE,Ac)=>{"use strict";var sf=Object.prototype.hasOwnProperty,ze="~";function Hs(){}Object.create&&(Hs.prototype=Object.create(null),new Hs().__proto__||(ze=!1));function of(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function ku(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new of(e,t||s,r),n=ze?ze+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 an(s,i){--s._eventsCount===0?s._events=new Hs:delete s._events[i]}function $e(){this._events=new Hs,this._eventsCount=0}$e.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)sf.call(e,t)&&i.push(ze?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};$e.prototype.listeners=function(i){var e=ze?ze+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};$e.prototype.listenerCount=function(i){var e=ze?ze+i:i,t=this._events[e];return t?t.fn?1:t.length:0};$e.prototype.emit=function(i,e,t,r,o,n){var a=ze?ze+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,h,u;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),l){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(l-1);u<l;u++)h[u-1]=arguments[u];c.fn.apply(c.context,h)}else{var f=c.length,g;for(u=0;u<f;u++)switch(c[u].once&&this.removeListener(i,c[u].fn,void 0,!0),l){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(g=1,h=new Array(l-1);g<l;g++)h[g-1]=arguments[g];c[u].fn.apply(c[u].context,h)}}return!0};$e.prototype.on=function(i,e,t){return ku(this,i,e,t,!1)};$e.prototype.once=function(i,e,t){return ku(this,i,e,t,!0)};$e.prototype.removeListener=function(i,e,t,r){var o=ze?ze+i:i;if(!this._events[o])return this;if(!e)return an(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&an(this,o);else{for(var a=0,c=[],l=n.length;a<l;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:an(this,o)}return this};$e.prototype.removeAllListeners=function(i){var e;return i?(e=ze?ze+i:i,this._events[e]&&an(this,e)):(this._events=new Hs,this._eventsCount=0),this};$e.prototype.off=$e.prototype.removeListener;$e.prototype.addListener=$e.prototype.on;$e.prefixed=ze;$e.EventEmitter=$e;typeof Ac!="undefined"&&(Ac.exports=$e)});var Yn=pi((dS,Th)=>{"use strict";var gh=Th.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(gh).forEach(function(s){var i=gh[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Ih=pi(vi=>{"use strict";var ps=function(s){return String(Number(s))===s?Number(s):s},i_=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]))},r_=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;i_(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},Eh=Yn(),s_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);vi.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(s_).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<(Eh[o]||[]).length;a+=1){var c=Eh[o][a];if(c.reg.test(n))return r_(c,t,n)}}),i.media=e,i};var Sh=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(Sh,{})};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(Sh,{})})};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 Rh=pi((uS,Ah)=>{"use strict";var Ad=Yn(),o_=/%[sdv%]/g,n_=function(s){var i=1,e=arguments,t=e.length;return s.replace(o_,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""}})},Io=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 n_.apply(null,r)},a_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],c_=["i","c","b","a"];Ah.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||a_,t=i.innerOrder||c_,r=[];return e.forEach(function(o){Ad[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Io(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Io(o,n,a))})})}),s.media.forEach(function(o){r.push(Io("m",Ad.m[0],o)),t.forEach(function(n){Ad[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Io(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(Io(n,a,c))})})})}),r.join(`\r
|
|
2
2
|
`)+`\r
|
|
3
|
-
`}});var Ah=In(ni=>{"use strict";var xo=Ih(),a_=yh();ni.write=a_;ni.parse=xo.parse;ni.parseParams=xo.parseParams;ni.parseFmtpConfig=xo.parseFmtpConfig;ni.parsePayloads=xo.parsePayloads;ni.parseRemoteCandidates=xo.parseRemoteCandidates;ni.parseImageAttributes=xo.parseImageAttributes;ni.parseSimulcastStreamList=xo.parseSimulcastStreamList});var Np=(K=>(K[K.INVALID_PARAMETER=4096]="INVALID_PARAMETER",K[K.INVALID_OPERATION=4097]="INVALID_OPERATION",K[K.NOT_SUPPORTED=4098]="NOT_SUPPORTED",K[K.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",K[K.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",K[K.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",K[K.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",K[K.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",K[K.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",K[K.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",K[K.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",K[K.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",K[K.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",K[K.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",K[K.CLIENT_BANNED=16448]="CLIENT_BANNED",K[K.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",K[K.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",K[K.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",K[K.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",K[K.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",K[K.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",K[K.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",K[K.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",K[K.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",K[K.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",K[K.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",K[K.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",K[K.API_CALL_ABORTED=16461]="API_CALL_ABORTED",K[K.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",K[K.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",K[K.UNKNOWN=65535]="UNKNOWN",K))(Np||{}),te=Np;var Bg=function(i){for(let t in te)if(te[t]===i)return t;return"UNKNOWN"},xu=class extends Error{constructor({name:e="RtcError",message:r,code:o=te.UNKNOWN,extraCode:s=0,constraint:n}){let d=`<${Bg(o)} 0x${o.toString(16)}>`,p=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(d)?"":` ${d}`}`;super(p);u(this,"code");u(this,"extraCode");u(this,"message");u(this,"originMessage");u(this,"name");u(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=p,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},he=xu;var OS=new Date().getTime(),Hg=0;var Sn=function(){return new Date().getTime()+Hg},ac=function(){let i=new Date;return i.setTime(Sn()),i.toLocaleString()},cc=function(i){let t=String(i.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`${i.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}`};var Lr={};Jr(Lr,{bytes2ms:()=>Fp,convertObjectNumberToInt:()=>Pn,copyProperties:()=>Vp,deepClone:()=>Ao,deepMerge:()=>kr,delay:()=>kn,fibonacci:()=>bo,formatedTime:()=>Tc,getConstructorName:()=>Mn,getContainerFromElement:()=>Jp,getEnv:()=>kp,getInternalVersion:()=>jp,getLoggerUrl:()=>Yr,getMuteStateFromFlag:()=>xn,getNetworkType:()=>Nn,getNumNetworkType:()=>_c,getReconnectionTimeout:()=>Bp,getStringByteLength:()=>zp,getTurnServer:()=>qp,getUint32Version:()=>yc,getValueType:()=>ht,getViewListFromView:()=>Is,glog:()=>wn,ipv4ToUint32:()=>Ts,isArray:()=>st,isAudioWorkletSupported:()=>Gp,isBoolean:()=>nt,isConstructor:()=>Es,isEmpty:()=>_s,isFunction:()=>Xe,isLangChinese:()=>fr,isMediaStreamTrack:()=>Hp,isNumber:()=>je,isObject:()=>Pr,isOverseaSdkAppId:()=>Dn,isPlainObject:()=>Gt,isPortrait:()=>Sc,isPromise:()=>Pi,isRemoteTrack:()=>Wp,isString:()=>we,isUndefined:()=>V,loadImage:()=>Ss,ms2bytes:()=>$p,ms2samples:()=>ju,normalizeUrl:()=>Ro,performanceNow:()=>_e,promiseAny:()=>On,samples2ms:()=>Gu,setNetworkType:()=>Up,stringify:()=>ir,stringifyIncludeValue:()=>Ic,throttlePromise:()=>Ac});var Wu={};Jr(Wu,{AUDIO_MUTE_BIT:()=>hc,AUDIO_STAT_BIT:()=>fs,AUX_STAT_BIT:()=>bn,AUX_STREAM_MSID:()=>eE,BACKEND_ENV:()=>pc,BASE_DOC_URL:()=>Mr,BASE_HOST:()=>wp,CAPABILITIES_KEYS:()=>Ec,CLASS_NAME:()=>bE,CLOUD_CONSOLE_URL:()=>qg,CROSS_ROOM_BIT:()=>Zg,DATA_FREEZE_TIMING:()=>gc,DEFAULT_ASSETS_URL:()=>dc,DOC_URL:()=>Jg,DTLS_STATE_UNKNOWN:()=>uE,ENV_NAME:()=>zr,EXCHANGE_SDP_TIMEOUT:()=>gE,IS_WORKER:()=>ps,IS_WORKLET:()=>yn,KIBANA_EVENT:()=>Xr,LOCAL_STREAM_PUBLISH_STATE:()=>Op,LOGGER_CMD_TYPE:()=>xi,LOGGER_DOMAIN:()=>Lu,LOGGER_DOMAIN_OVERSEA:()=>Uu,LOG_LEVEL:()=>hr,LOG_LEVEL_NAME:()=>vE,MAIN_STREAM_MSID:()=>Kg,MAX_RTT:()=>vn,MICROPHONE_COMMUNICATIONS:()=>RE,MICROPHONE_DEFAULT:()=>yo,MUTE_ALL_BIT:()=>Yg,NAME:()=>D,NETWORK_TYPE:()=>So,NOT_SUPPORTED_H264:()=>_E,PAUSED_RETRY_COUNT:()=>Hu,PEERCONNECTION_CONNECTING_TIMEOUT:()=>yE,PEER_CONNECTION_STATE:()=>lE,PEER_LEAVE_REASON:()=>xp,RECOVER_CAPTURE_INTERVAL:()=>gs,REMOTE_STREAM_TYPE_AUX:()=>rE,REMOTE_STREAM_TYPE_MAIN:()=>tE,RENDER_FREEZE_TIMING:()=>TE,SCHEDULE_DOMAIN:()=>Qr,SCHEDULE_TIMEOUT:()=>AE,SDP_SEMANTICS_PLAN_B:()=>EE,SDP_SEMANTICS_UNIFIED_PLAN:()=>Bu,SECOND_HOST:()=>Gg,SIGNAL_PING_PONG_INTERVAL:()=>Xg,SIGNAL_PING_TIMEOUT:()=>zg,SIGNAL_RECONNECTION_COUNT:()=>pE,SMALL_STAT_BIT:()=>Fu,SPEAKER_DEFAULT:()=>Rn,STORAGE_EXPIRES_TIME:()=>uc,STREAM_TYPE_BIG:()=>IE,STREAM_TYPE_SMALL:()=>SE,SUBSCRIBE_SMALL_RETRY_COUNT:()=>CE,SYNC_USER_LIST_INTERVAL:()=>hE,Scene:()=>xr,THIRD_HOST:()=>jg,TRANSPORT_DIRECTION:()=>Qg,TRTC_ERROR_ASSISTANCE:()=>Vu,TRTC_QUALITY_BAD:()=>aE,TRTC_QUALITY_DISCONNECTED:()=>dE,TRTC_QUALITY_EXCELLENT:()=>oE,TRTC_QUALITY_GOOD:()=>sE,TRTC_QUALITY_POOR:()=>nE,TRTC_QUALITY_UNKNOWN:()=>iE,TRTC_QUALITY_VERY_BAD:()=>cE,UPDATE_OFFER_TIMEOUT:()=>fE,VIDEO_MUTE_BIT:()=>fc,VIDEO_STAT_BIT:()=>hs,audioProfileMap:()=>lc,getRetryCount:()=>mE,getScriptDir:()=>Wg,innerVersion:()=>Pu,loggerProxy:()=>An,screenProfileMap:()=>mc,setLoggerProxy:()=>Io,setRetryCount:()=>$u,setVersion:()=>ku,version:()=>rt,videoProfileMap:()=>Or});var Pu="4.15.00.1600",rt="5.0.0";function ku(i){rt=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));Pu=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var ps=typeof importScripts!="undefined",yn=typeof registerProcessor!="undefined",Wg=()=>{let i=ps?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},An="",Io=i=>An=i,wp="web.sdk.qcloud.com",Gg="web.sdk.tencent.cn",jg="web.sdk.cloud.tencent.cn",qg="https://console.cloud.tencent.com/trtc",Mr=`https://${wp}/trtc/webrtc/v5/doc`,dc="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",Jg=`${Mr}/zh-cn/`,Lu="https://yun.tim.qq.com",Uu="https://apisgp.my-imcloud.com",Vu="trtc_error_assistance",xi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},zr={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},hr=(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))(hr||{}),zg=18e3,Xg=2e3,So={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},uc=7*24*3600*1e3,lc={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}},Or={"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}},mc={"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}},D={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",LOADEDMETADATA:"loadedmetadata",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"},Qg={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},pc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},xr=(e=>(e.LIVE="live",e.RTC="rtc",e))(xr||{}),hs=1,Fu=2,bn=4,fs=8,hc=64,fc=16,Yg=112,Zg=128,Kg="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",eE="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",tE=D.MAIN,rE=D.AUXILIARY,iE=0,oE=1,sE=2,nE=3,aE=4,cE=5,dE=6,uE="unknown",lE={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Mp=1/0;function $u(i){Mp=i}function mE(){return Mp}var pE=30,Xr={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"},hE=1e4,fE=1e4,gE=1e4,Bu="unified-plan",EE="plan-b",_E=1028,Op=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(Op||{}),gc=500,TE=1e3,IE=D.BIG,SE=D.SMALL,yE=10*1e3,Qr={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"},AE=2e3,bE={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Hu=5,yo="default",Rn=yo,RE="communications",vE=Object.keys(hr),xp=["normal leave","timeout leave","kick","role change"],CE=10,gs=2e3,Ec=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],vn=10*1e3;var kp=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Dn=i=>Number(i)<14e8,Yr=function(i,t){let e;An?e=An:e=Dn(i)?Uu:Lu;let r=Math.floor(Math.random()*Tn(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},Cn="unknown";function Nn(){if(Cn!=="unknown")return Cn;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(Cn=Lp(r,o)),Cn}function Lp(i,t){if(So[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Up(i){Cn=Lp(i)}function _c(){return So[Nn()]}function Vp(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function Fp(i,t=48e3){return Gu(i/4,t)}function Gu(i,t=48e3){return i*1e3/t}function $p(i,t=48e3){return ju(i,t)*4}function ju(i,t=48e3){return i*t/1e3}var wn=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},fr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Gt=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function bo(i,t=1,e=1){return i<=1?e:bo(i-1,e,t+e)}function Bp(i){return i>8?30*1e3:bo(i)*1e3}function ht(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Xe=i=>typeof i=="function",V=i=>typeof i=="undefined",we=i=>typeof i=="string",je=i=>typeof i=="number",nt=i=>typeof i=="boolean",Pr=i=>ht(i)==="object",st=i=>ht(i)==="array",Hp=i=>ht(i)==="MediaStreamTrack".toLowerCase(),Wp=i=>i.isRemote,Pi=i=>ht(i)==="promise",Es=i=>Xe(i)&&i.prototype.constructor===i,Mn=i=>Es(i)?i.prototype.constructor.name:"",Gp=typeof AudioWorkletNode!="undefined";function On(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function _e(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Pp=i=>+i<10?`0${i}`:i,jp=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Pp(e[1])+Pp(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},DE=Object.prototype.hasOwnProperty,{toString:US}=Object.prototype;function _s(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Gt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(DE.call(i,t))return!1;return!0}}return!1}function xn(i,t){return{userId:t,hasAudio:!!(i&fs),hasVideo:!!(i&hs),hasAuxiliary:!!(i&bn),hasSmall:!!(i&Fu),audioMuted:!!(i&hc),videoMuted:!!(i&fc),audioAvailable:!!(i&fs)&&!(i&hc),videoAvailable:!!(i&hs)&&!(i&fc)}}function qp(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!V(i.username)&&!V(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",V(i.credentialType)||(t.credentialType=i.credentialType)),t}function Ts(i,t=!0){if(!we(i))return 0;let e=i.split(".");return t?(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 kr=function(i,t,e,r){if(!(Pr(i)&&Pr(t)))return 0;let o=0,s=Object.keys(t),n;for(let d=0,p=s.length;d<p;d++)if(n=s[d],!(V(t[n])||e&&e.includes(n)))if(Pr(i[n])&&Pr(t[n]))o+=kr(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=Ao(t[n]),o+=1)}return o};function Ao(i){if(st(i)){let t=[];return i.forEach((e,r)=>{t[r]=Ao(e)}),t}if(Pr(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=Ao(i[e])}),t}return i}var Is=i=>{let t=[];if(st(i))t=[...i];else if(we(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},Jp=i=>we(i)?document.getElementById(i):i,NE=i=>{let t=p=>p<10?`0${p}`:`${p}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),n=t(i.getMinutes()),d=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${n}:${d}`},Tc=()=>NE(new Date);function ir(i,{keysToInclude:t,keysToExclude:e}){try{if(st(i))return`[${i.map(n=>ir(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Gt(i)||!st(t)&&!st(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(n=>{(s.size===0&&o.has(n)||o.size===0&&!s.has(n))&&(r[n]=Gt(i[n])||st(i[n])?JSON.parse(ir(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function Ic(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),ir(i,{keysToInclude:e})}function zp(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Sc=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},Ss=i=>A(void 0,null,function*(){return new Promise((t,e)=>{let r;if(we(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new he({code:te.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),yc=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},Pn=i=>(Object.keys(i).forEach(t=>{je(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Gt(i[t])||st(i[t]))&&Pn(i[t])}),i);function kn(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function Ac(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function Ro(i){return i.replace(/(^|[^:])\/{2,}/g,"$1/")}function Zr({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,n)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(p=>p.text()).then(p=>{try{s({data:JSON.parse(p)})}catch(m){s({data:p})}},n);let d=new XMLHttpRequest;d.onreadystatechange=()=>{if(d.readyState===4)if(d.status>=200&&d.status<300)try{let p=JSON.parse(d.response);s({data:p})}catch(p){s({data:d.response})}else n({status:d.status,statusText:d.statusText||"request failed!"})},d.timeout=r||5e3,d.open(e,i,!0),d.send(t)})}function qu(i){return A(this,null,function*(){let t=_e(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),d=yield(yield(yield new Response(o)).blob()).arrayBuffer();return $.debug(`compressJSON ${e.length} -> ${d.byteLength} ${_e()-t}ms`),d}catch(r){return e}})}var wE=Object.prototype.hasOwnProperty;var ki=i=>typeof i=="function",Xp=i=>typeof i=="undefined";var Qp=i=>typeof i=="boolean";var Ju=i=>i.isRemote;var ME=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Yp(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(ME(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(wE.call(i,t))return!1;return!0}}return!1}var OE=0,xE=1,Zp=2;function PE({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...d){let{retries:p=5,timeout:m=1e3}=t,g=0,I=-1,S=OE,N=(k,P)=>A(this,null,function*(){let x=n||this;try{let J=yield i.apply(x,d);g>0&&s&&s.call(this,g),g=0,k(J)}catch(J){let Q=()=>{clearTimeout(I),g=0,S=Zp,P(J)},De=()=>{S!==Zp&&g<(ki(p)?p():p)?(g++,S=xE,ki(r)&&r.call(this,g,Q),I=window.setTimeout(()=>{I=-1,N(k,P)},ki(m)?m(g):m)):(Q(),ki(o)&&o.call(this,J))};ki(e)?e.call(this,{error:J,retry:De,reject:P,retryFuncArgs:d,retriedCount:g}):De()}});return new Promise(N)}}var Li=PE;var ys=class{constructor(t){u(this,"userId");u(this,"remoteUserId");u(this,"id");u(this,"sdkAppId");u(this,"type");u(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=Qp(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),$.log(t,e,Xp(this.userId)||Yp(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var xs={};Jr(xs,{ANDROID_VERSION:()=>Qu,CHROME_MAJOR_VERSION:()=>ei,CHROME_VERSION:()=>Bc,EDGE_VERSION:()=>Rc,EDG_MAJOR_VERSION:()=>Zu,EDG_VERSION:()=>vc,FIREFOX_MAJOR_VERSION:()=>Yu,FIREFOX_VERSION:()=>bc,HUAWEI_VERSION:()=>Lc,IE_VERSION:()=>FE,IOS_MAIN_VERSION:()=>Yt,IOS_VERSION:()=>$i,IPADQQB_VERSION:()=>Pc,IS_ANDROID:()=>at,IS_ANDROID_WEBVIEW:()=>WE,IS_ANY_SAFARI:()=>Vi,IS_CHROME:()=>Ms,IS_CHROME_OS:()=>Ku,IS_CHROMIUM_BASE:()=>Kr,IS_EDG:()=>vs,IS_EDGE:()=>Rs,IS_ELECTRON:()=>BE,IS_FIREFOX:()=>Qt,IS_HEADLESS_CHROME:()=>ol,IS_HONOR:()=>rl,IS_HUAWEI:()=>tl,IS_HUAWEIBROWSER:()=>Wn,IS_IE:()=>rh,IS_IE8:()=>VE,IS_IOS:()=>lt,IS_IOS_13_OR_14:()=>nl,IS_IOS_15_1:()=>sl,IS_IPAD:()=>bs,IS_IPADQQB:()=>$n,IS_IPAD_PRO:()=>Xu,IS_IPHONE:()=>Ui,IS_IPOD:()=>th,IS_LINUX:()=>Bn,IS_LOCAL:()=>Tr,IS_MAC:()=>_r,IS_MACQQB:()=>Fn,IS_MIBROWSER:()=>Hn,IS_MQQB:()=>ws,IS_NATIVE_ANDROID:()=>UE,IS_OLD_ANDROID:()=>LE,IS_OPENHARMONY:()=>il,IS_OPPOBROWSER:()=>jn,IS_SAFARI:()=>Mt,IS_SAFARI_15_1:()=>GE,IS_SAMSUNGBROWSER:()=>Gn,IS_SOGOU:()=>Un,IS_SOGOUM:()=>Ln,IS_TBS:()=>Er,IS_UCBROWSER:()=>el,IS_VIVOBROWSER:()=>qn,IS_WECHAT:()=>Ds,IS_WIN:()=>vo,IS_WQQB:()=>Vn,IS_WX:()=>$E,IS_X5MQQB:()=>Ns,IS_XWEB:()=>Cs,MACQQB_VERSION:()=>xc,MI_VERSION:()=>kc,MQQB_VERSION:()=>As,OPENHARMONY_VERSION:()=>HE,OPPO_VERSION:()=>Vc,SAFARI_VERSION:()=>Fi,SAMSUNG_VERSION:()=>Uc,SOGOUM_VERSION:()=>Cc,SOGOU_VERSION:()=>Dc,TBS_VERSION:()=>Nc,UA_DATA_STRING:()=>gr,USER_AGENT:()=>Xt,VIVO_VERSION:()=>Fc,WECHAT_VERSION:()=>Mc,WQQB_VERSION:()=>Oc,XWEB_VERSION:()=>wc,browserInfo:()=>Ur,getBrowserInfo:()=>ih,getChromeMajorVersion:()=>$c,getDeviceModel:()=>zn,getOSName:()=>Os,getOSNumber:()=>Xn,getOSString:()=>Co,getOSType:()=>dl,getTerminalType:()=>cl,getUserAgentData:()=>Jn,isLocalStorageEnabled:()=>ti,isMobile:()=>al});var Xt=typeof navigator=="undefined"?"":navigator.userAgent,Ie=i=>new RegExp(i,"i").test(Xt),ft=i=>{if(Ie(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=Xt.match(t);if(e&&e[1])return e[1]}return""},zu=i=>{if(Ie(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=Xt.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},Kp=/AppleWebKit\/([\d.]+)/i.exec(Xt),kE=Kp?parseFloat(Kp[1]):NaN,bs=Ie("iPad"),Xu=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ie("Macintosh"),Ui=Ie("iPhone")&&!bs,th=Ie("iPod"),lt=Ui||bs||th||Xu,at=Ie("Android"),Qu=function(){if(at){let i=Xt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),LE=at&&Ie("webkit")&&Qu<2.3,UE=at&&Qu<5&&kE<537,Qt=Ie("Firefox"),bc=ft("Firefox"),Yu=zu("Firefox"),Rs=Ie("Edge"),Rc=ft("Edge"),vs=Ie("Edg"),vc=ft("Edg"),Zu=zu("Edg"),Ln=Ie("SogouMobileBrowser"),Cc=ft("SogouMobileBrowser"),Un=Ie("MetaSr\\s"),Dc=ft("MetaSr\\s"),Er=Ie("TBS"),Nc=ft("TBS"),Cs=Ie("XWEB"),wc=ft("XWEB"),VE=Ie("MSIE\\s8\\.0"),rh=Ie("MSIE\\/\\d+"),FE=function(){if(rh){let i=/MSIE\s(\d+)\.\d/.exec(Xt),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(Xt)&&/rv:11.0/.test(Xt)&&(t=11),t}return NaN}(),Ds=Ie("(micromessenger|webbrowser)"),Mc=ft("MicroMessenger"),Ns=!Er&&Ie("MQQBrowser")&&Ie("COVC"),ws=!Er&&Ie("MQQBrowser")&&!Ie("COVC"),As=ws||Ns?ft("MQQBrowser"):"",Vn=!Er&&Ie(" QQBrowser"),Oc=ft(" QQBrowser"),Fn=!Er&&Ie("QQBrowserLite"),xc=ft("QQBrowserLite"),$n=!Er&&Ie("MQBHD"),Pc=ft("MQBHD"),vo=Ie("Windows"),_r=!lt&&Ie("MAC OS X"),Bn=!at&&Ie("Linux"),Ku=Ie("CrOS"),$E=Ie("MicroMessenger"),el=Ie("UCBrowser"),BE=Ie("Electron"),Hn=Ie("MiuiBrowser"),kc=ft("MiuiBrowser"),Wn=Ie("HuaweiBrowser"),tl=Ie("Huawei")||Ie("HUAWEI"),rl=Ie("Honor")||Ie("HONOR"),Lc=ft("HuaweiBrowser"),Gn=Ie("SamsungBrowser"),Uc=ft("SamsungBrowser"),jn=Ie("HeyTapBrowser"),Vc=ft("HeyTapBrowser"),qn=Ie("VivoBrowser"),Fc=ft("VivoBrowser"),il=Ie("OpenHarmony"),HE=ft("OpenHarmony"),$c=()=>zu("Chrome"),Kr=Ie("Chrome"),Ms=!Rs&&!Un&&!Ln&&!Er&&!Cs&&!vs&&!Vn&&!Hn&&!Wn&&!Gn&&!jn&&!qn&&Kr,ol=Ie("HeadlessChrome"),ei=$c(),Bc=ft("Chrome"),Mt=!Kr&&!ws&&!Ns&&!Fn&&!$n&&Ie("Safari"),Vi=Mt||lt,Fi=ft("Version"),WE=/Android.*(wv|.0.0.0)/.test(Xt),$i=(()=>{if(Xu)return Fi;if(lt){let i=Xt.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})(),Yt=Number($i.split(".")[0]),GE=Fi==="15.1",sl=$i==="15.1",nl=(()=>{let i=Number($i.split(".")[0]);return i===14||i===13})(),Tr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",ti=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),Ur=ih();function ih(){let i=new Map([[Qt,["Firefox",bc]],[vs,["Edg",vc]],[Ms,["Chrome",Bc]],[Mt,["Safari",Fi]],[Er,["TBS",Nc]],[Cs,["XWEB",wc]],[Ds&&Ui,["WeChat",Mc]],[Vn,["QQ(Win)",Oc]],[ws,["QQ(Mobile)",As]],[Ns,["QQ(Mobile X5)",As]],[Fn,["QQ(Mac)",xc]],[$n,["QQ(iPad)",Pc]],[Hn,["MI",kc]],[Wn,["HW",Lc]],[Gn,["Samsung",Uc]],[jn,["OPPO",Vc]],[qn,["VIVO",Fc]],[Rs,["EDGE",Rc]],[Ln,["SogouMobile",Cc]],[Un,["Sogou",Dc]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var $e=null;function al(){return $e&&typeof $e.mobile=="boolean"?$e.mobile:at||lt||Ui||bs||il}var gr="";function Jn(){return A(this,null,function*(){if($e)return $e;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return $e=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),$e&&!gr&&(gr=`UAData: ${$e.platform}/${$e.platformVersion}`,$e.architecture&&$e.bitness&&(gr+=` ${$e.architecture}/${$e.bitness}`),$e.mobile&&(gr+=" mobile"),$e.model&&(gr+=` model: ${$e.model}`),$e.fullVersionList&&(gr+=` ${$e.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),$e}catch(i){return null}})}function zn(){return($e==null?void 0:$e.model)||""}var eh=new Map([[at,"Android"],[lt,"iOS"],[vo,"Windows"],[_r,"MacOS"],[Bn,"Linux"],[Ku,"ChromeOS"]]),Os=function(){return eh.get(!0)?eh.get(!0):$e?$e.platform:"unknown"};function Xn(){return vo?1:at?2:_r?3:lt?4:Bn?5:Ku?6:0}var Co=()=>{let i=Os();return i+=`/${Ur.name}/${Mt?Ur.version:Ur.version.split(".")[0]}`,$e!=null&&$e.platformVersion&&(i+=`/${$e.platformVersion}`),$e!=null&&$e.architecture&&(i+=`/${$e.architecture}`),i};function cl(){return at?4:Ui?2:bs?3:_r?12:vo?5:Bn?13:il?22:1}function dl(){return at?"Android":Ui?"iPhone":bs?"iPad":_r?"Mac":vo?"Windows":Bn?"Linux":"unknown"}var sh=Oi(Bi(),1),JE=new sh.default,H=JE;var Do=(F=>(F.ROOM_DESTROY="1",F.JOIN_START="21",F.JOIN_SCHEDULE_SUCCESS="22",F.JOIN_SIGNAL_CONNECTION_START="23",F.JOIN_SIGNAL_CONNECTION_END="24",F.JOIN_SEND_CMD="25",F.JOIN_RECEIVED_CMD_RES="26",F.JOIN_SUCCESS="27",F.JOIN_FAILED="28",F.LEAVE_START="51",F.LEAVE_SEND_CMD="52",F.LEAVE_SUCCESS="53",F.PUBLISH_START="61",F.SEND_FIRST_VIDEO_FRAME="62",F.PUBLISH_FAILED="63",F.SUBSCRIBE_START="81",F.SUBSCRIBE_SUCCESS="82",F.SUBSCRIBE_FAILED="84",F.UNSUBSCRIBE_SUCCESS="83",F.LOCAL_TRACK_CAPTURE_START="101",F.LOCAL_TRACK_CAPTURE_SUCCESS="102",F.LOCAL_TRACK_CAPTURE_FAILED="103",F.LOCAL_TRACK_PUBLISHED="104",F.LOCAL_TRACK_UNPUBLISHED="105",F.LOCAL_TRACK_REPLACED="106",F.SWITCH_DEVICE_SUCCESS="107",F.TRACK_MUTED="108",F.TRACK_UNMUTED="109",F.REMOTE_TRACK_SUBSCRIBED="110",F.REMOTE_TRACK_UNSUBSCRIBED="111",F.LOCAL_TRACK_RECAPTURE="112",F.PLAY_TRACK_START="151",F.PLAYER_STATE_CHANGED="152",F.VIDEO_LOADED_DATA="153",F.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",F.SIGNAL_CONNECTION_STATE_CHANGED="201",F.PEER_CONNECTION_STATE_CHANGED="202",F.SINGLE_CONNECTION_STAT="203",F.SPC_RECONNECTED="204",F.HEARTBEAT_REPORT="251",F.RECEIVED_PUBLISHED_USER_LIST="252",F.REMOTE_PUBLISH_STATE_CHANGED="253",F.AUDIO_LEVEL_INTERVAL="260",F.NETWORK_QUALITY="261",F.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",F.QUALITY_LIMITATION_CHANGED="263",F.LOG="264",F))(Do||{});var L=Do;var zE="%cTRTC%c%s",XE="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",QE="display: inline",Wc=class Wc{constructor(){u(this,"_isEnableUploadLog",!0);u(this,"_localJoinedUser",new Map);u(this,"_queue",[]);u(this,"_timeoutId",-1);u(this,"_logLevel",1);u(this,"_logLevelToUpload",2);!ps&&!yn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){H.on(L.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&hr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),H.on(L.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),H.once(L.JOIN_FAILED,()=>{this.startUpload()}),H.on(L.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(we(r.userId)&&je(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return A(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:n,sdkAppId:d,logs:p}=o[s];yield this.uploadLogWithRetry(JSON.stringify({timestamp:ac(),sdkAppId:String(d),userId:n,version:rt,log:p.map(m=>m.log).join(`
|
|
4
|
-
`)}),d),p.forEach(m=>m.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e){return Li({retryFunction:()=>Zr({url:Yr(e,xi.LOG),body:t,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:r})=>{r()}})()}getPrefix(t){let e=new Date;return e.setTime(Sn()),`[${cc(e)}] <${hr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){V(hr[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(we(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var p;e.unshift(this.getPrefix(t));let n={log:e.reduce((m,g)=>`${m} ${this.logChunkToString(g)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(H.emit(L.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n),t<this._logLevel)return;let d=((p=hr[t])==null?void 0:p.toLowerCase())||"info";Wc.PRINT_LOG_TAG?console[d](zE,XE,QE,...e):console[d](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new ys(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;hr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};u(Wc,"PRINT_LOG_TAG",!(lt||at||ol));var ll=Wc,$=new ll;var YE=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},Yn=YE;var ml=class{constructor(){u(this,"_prefix","TRTC");u(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!ti())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(ti())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){$.warn(t)}}getItem(t){if(!ti())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){$.warn(e)}}setItem(t,e){if(ti())try{let r={expiresIn:Date.now()+uc,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){$.warn(r)}}deleteItem(t){if(!ti())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return $.warn(e),!1}}clear(){if(ti())try{localStorage.clear()}catch(t){$.warn(t)}}},Ps=new ml;var Hi={};Jr(Hi,{HTTPS_API:()=>h_,IS_GET_CAPABILITIES_SUPPORTED:()=>Pl,IS_GET_SETTINGS_SUPPORTED:()=>Vs,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>A_,IS_INSERTABLE_STREAM_SUPPORTED:()=>aa,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>C_,IS_RTC_RTP_SENDER_SUPPORTED:()=>na,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>xh,IS_SEI_SUPPORTED:()=>ca,IS_SPC_SUPPORTED:()=>T_,basis:()=>R_,capabilityCheck:()=>Ll,checkSystemRequirementsInternal:()=>ed,decodeSupportStatus:()=>vh,encodeSupportStatus:()=>Ml,getBrowserInfo:()=>Zc,getDisplayResolution:()=>Ch,isAddTransceiverSupported:()=>Oh,isBrowserSupported:()=>Ol,isGetReceiversSupported:()=>E_,isGetSendersSupported:()=>Mh,isGetTransceiversSupported:()=>__,isGetUserMediaSupported:()=>Dh,isMediaDevicesSupported:()=>Kc,isMediaSessionSupported:()=>kh,isMediaStreamTrackProcessorSupported:()=>xl,isReplaceTrackSupported:()=>S_,isRequestVideoFrameCallbackSupported:()=>ci,isSIMDSupported:()=>b_,isScreenCaptureApiAvailable:()=>oa,isSelectedCandidatePair:()=>f_,isSetParametersSupported:()=>y_,isSmallStreamAPISupported:()=>wh,isSmallStreamSupported:()=>sa,isStopTransceiverSupported:()=>I_,isTRTCSupported:()=>m_,isUnifiedPlanDefault:()=>g_,isUsedInHttpProtocol:()=>ai,isWebAudioSupported:()=>Nh,isWebCodecSupported:()=>Ph,isWebCodecsSupported:()=>Rh,isWebRTCSupported:()=>kl,isWebTransportSupported:()=>Lh});var bl={};Jr(bl,{AUDIO_LEVEL_SCALE:()=>oi,AudioCodecPipelineType:()=>zc,AudioDecoderDowngradeState:()=>fl,AudioPlayerMode:()=>Tl,AudioType:()=>El,BASIC_TYPE:()=>Mo,BannedReason:()=>Il,CONNECTION_CLOSED_REASON:()=>ah,ClientEvent:()=>pl,CodecType:()=>hh,ConnectionEvent:()=>nh,ConnectionState:()=>jc,DECODE_FAILED_ERROR_CODE:()=>Al,FacingMode:()=>qc,LeaveReason:()=>Sl,LocalTrackEvent:()=>Gc,MULTI_VIDEO_DATA_TYPE:()=>ii,MediaType:()=>Ct,MediaTypeLabel:()=>ZE,MonitorEventId:()=>ea,MutedFlag:()=>dh,NetworkQualityValue:()=>mh,PlayerState:()=>ks,ReceiveMode:()=>ph,RemoteStreamType:()=>Vr,RemoteTrackEvent:()=>Ls,RoomEvent:()=>No,SceneNumber:()=>hl,StreamEvent:()=>ch,StreamType:()=>lh,SubscribeMediaType:()=>Zn,TIMER_TYPE:()=>Oo,TRACK_ACTION:()=>uh,TRACK_KIND:()=>gl,TrackEvent:()=>ri,UserRole:()=>jt,UserRoleNumber:()=>wo,VideoCodec:()=>yl,VideoCodecPipelineType:()=>ta,VideoContentHint:()=>ra,VideoDecoderDowngradeState:()=>Kn,VideoPlayerMode:()=>Jc,VideoType:()=>_l});var nh=(P=>(P.TRACK_ADDED="track-added",P.TRACK_UPDATED="track-updated",P.TRACK_SUBSCRIBED="track-subscribed",P.STREAM_ADDED="stream-added",P.STREAM_REMOVED="stream-removed",P.STREAM_UPDATED="stream-updated",P.STREAM_PUBLISHED="stream-published",P.STREAM_SUBSCRIBED="stream-subscribed",P.STREAM_UNSUBSCRIBED="stream-unsubscribed",P.STATE_CHANGED="state-changed",P.ERROR="error",P.CONNECTION_STATE_CHANGED="connection-state-changed",P.FIREWALL_RESTRICTION="firewall-restriction",P.SEI_MESSAGE="sei-message",P.CLOSED="closed",P))(nh||{}),ah=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(ah||{}),pl=(x=>(x.STREAM_ADDED="stream-added",x.STREAM_REMOVED="stream-removed",x.STREAM_UPDATED="stream-updated",x.STREAM_SUBSCRIBED="stream-subscribed",x.CONNECTION_STATE_CHANGED="connection-state-changed",x.PEER_JOIN="peer-join",x.PEER_LEAVE="peer-leave",x.MUTE_AUDIO="mute-audio",x.MUTE_VIDEO="mute-video",x.UNMUTE_AUDIO="unmute-audio",x.UNMUTE_VIDEO="unmute-video",x.CLIENT_BANNED="client-banned",x.NETWORK_QUALITY="network-quality",x.AUDIO_VOLUME="audio-volume",x.SEI_MESSAGE="sei-message",x.ERROR="error",x))(pl||{}),ch=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(ch||{}),Gc=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(Gc||{}),ks=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(ks||{}),No=(Q=>(Q.PEER_JOIN="peer-join",Q.PEER_LEAVE="peer-leave",Q.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Q.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Q.BANNED="banned",Q.NETWORK_QUALITY="network-quality",Q.AUDIO_VOLUME="audio-volume",Q.SEI_MESSAGE="sei-message",Q.ERROR="error",Q.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Q.REMOTE_PUBLISHED="remote-published",Q.REMOTE_UNPUBLISHED="remote-unpublished",Q.FIREWALL_RESTRICTION="firewall-restriction",Q.HEARTBEAT_REPORT="heartbeat-report",Q.CUSTOM_MESSAGE="custom-message",Q.LAYER_DATA="layerData",Q.FIRST_VIDEO_FRAME="first-video-frame",Q.DUMP="dump",Q))(No||{}),ri=(d=>(d.PLAYER_STATE_CHANGED="player-state-changed",d.MUTE="mute",d.UNMUTE="unmute",d.ERROR="error",d.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",d.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",d.FIRST_VIDEO_FRAME="first-video-frame",d))(ri||{}),Ls=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Ls||{}),dh=(d=>(d[d.VIDEO=1]="VIDEO",d[d.SMALL=2]="SMALL",d[d.AUX=4]="AUX",d[d.AUDIO=8]="AUDIO",d[d.VIDEO_MUTE=16]="VIDEO_MUTE",d[d.AUX_MUTE=32]="AUX_MUTE",d[d.AUDIO_MUTE=64]="AUDIO_MUTE",d))(dh||{}),hl=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(hl||{}),wo=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(wo||{}),jt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(jt||{}),jc=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(jc||{}),fl=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(fl||{}),Kn=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(Kn||{}),gl=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(gl||{}),uh=(e=>(e.ADD="add",e.REMOVE="remove",e))(uh||{}),Ct=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(Ct||{}),ZE={1:"audio",2:"auxVideo",4:"video"},El=(t=>(t[t.opus=111]="opus",t))(El||{}),_l=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(_l||{}),lh=(e=>(e.Big="big",e.Small="small",e))(lh||{}),Vr=(e=>(e.Main="main",e.Aux="auxiliary",e))(Vr||{}),ii=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(ii||{}),ea=(G=>(G[G.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",G[G.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",G[G.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",G[G.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",G[G.MUTE_AUDIO=32772]="MUTE_AUDIO",G[G.MUTE_VIDEO=32773]="MUTE_VIDEO",G[G.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",G[G.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",G[G.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",G[G.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",G[G.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",G[G.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",G[G.SWITCH_CAMERA=32780]="SWITCH_CAMERA",G[G.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",G[G.REPLACE_VIDEO=32782]="REPLACE_VIDEO",G[G.REPLACE_AUDIO=32783]="REPLACE_AUDIO",G[G.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",G[G.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",G[G.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",G[G.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",G[G.JOIN=32788]="JOIN",G[G.LEAVE=32789]="LEAVE",G[G.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",G[G.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",G[G.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",G[G.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",G[G.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",G[G.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",G[G.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",G[G.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",G[G.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",G[G.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",G[G.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",G[G.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",G[G.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",G[G.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",G[G.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",G[G.PUBLISH_AUX=32805]="PUBLISH_AUX",G[G.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",G[G.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",G[G.VIDEO_ENCODER=4004]="VIDEO_ENCODER",G[G.VIDEO_DECODER=4005]="VIDEO_DECODER",G))(ea||{}),mh=(d=>(d[d.UNKNOWN=0]="UNKNOWN",d[d.EXCELLENT=1]="EXCELLENT",d[d.GOOD=2]="GOOD",d[d.POOR=3]="POOR",d[d.BAD=4]="BAD",d[d.VERY_BAD=5]="VERY_BAD",d[d.DISCONNECTED=6]="DISCONNECTED",d))(mh||{}),ph=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(ph||{}),qc=(e=>(e.user="user",e.environment="environment",e))(qc||{}),Jc=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(Jc||{}),Tl=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Tl||{}),Il=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(Il||{}),Sl=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(Sl||{}),oi=1e8,Zn=class{constructor(){u(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Mo=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Mo||{}),yl=(r=>(r.H264="h264",r.H265="h265",r.VP8="vp8",r))(yl||{}),ta=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(ta||{}),zc=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(zc||{}),hh=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(hh||{}),Al=(S=>(S[S.SUCCESS=0]="SUCCESS",S[S.FAILED=1]="FAILED",S[S.WEBCODEC_INIT=2]="WEBCODEC_INIT",S[S.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",S[S.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",S[S.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",S[S.WASM_INIT=6]="WASM_INIT",S[S.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",S[S.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",S[S.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",S[S.TEST=10]="TEST",S[S.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",S))(Al||{}),ra=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(ra||{}),Oo=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(Oo||{});var ct={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"},qt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ht(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ht(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.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(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' 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:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.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(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} 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:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},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(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.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(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' 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(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.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(i){return`'${i}' 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:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.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(i){return`${i}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(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"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:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!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:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},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:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var fh=(i,t)=>t?`${Mr}/${i}/${t}`:`${Mr}/${i}/index.html`;var KE=()=>{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 i=localStorage==null?void 0:localStorage.getItem(Vu);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function dt(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",d="";Xe(qt[t])?s=qt[t](e):we(qt[t])&&(s=qt[t]);let{TRTC_ERROR_INFO:p,TRTC_ERROR_LINK:m}=KE();r?d=`${r.className}.html#${r.fnName}`:m&&m[t]&&(Xe(m[t])?d=m[t](e):we(m[t])&&(d=m[t]));let g=s;return fr()&&(p&&p[t]&&(Xe(p[t])?n=p[t](e):we(p[t])&&(n=p[t])),n&&(o?g=`${n}
|
|
5
|
-
\u8BF7\u67E5\u770B\u6587\u6863: ${fh("zh-cn",d)}
|
|
3
|
+
`}});var Ch=pi(Kt=>{"use strict";var Ar=Ih(),d_=Rh(),l_=Yn();Kt.grammar=l_;Kt.write=d_;Kt.parse=Ar.parse;Kt.parseParams=Ar.parseParams;Kt.parseFmtpConfig=Ar.parseFmtpConfig;Kt.parsePayloads=Ar.parsePayloads;Kt.parseRemoteCandidates=Ar.parseRemoteCandidates;Kt.parseImageAttributes=Ar.parseImageAttributes;Kt.parseSimulcastStreamList=Ar.parseSimulcastStreamList});var uu=pi((Bw,sp)=>{"use strict";var rp=sp.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(rp).forEach(function(s){var i=rp[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var ap=pi($i=>{"use strict";var Ps=function(s){return String(Number(s))===s?Number(s):s},MT=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]))},kT=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;MT(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},op=uu(),LT=RegExp.prototype.test.bind(/^([a-z])=(.*)/);$i.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(LT).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<(op[o]||[]).length;a+=1){var c=op[o][a];if(c.reg.test(n))return kT(c,t,n)}}),i.media=e,i};var np=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};$i.parseParams=function(s){return s.split(/;\s?/).reduce(np,{})};$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(Ps),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(np,{})})};$i.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 dp=pi(($w,cp)=>{"use strict";var hu=uu(),PT=/%[sdv%]/g,wT=function(s){var i=1,e=arguments,t=e.length;return s.replace(PT,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""}})},Ko=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 wT.apply(null,r)},xT=["v","o","s","i","u","e","p","c","b","t","r","z","a"],UT=["i","c","b","a"];cp.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||xT,t=i.innerOrder||UT,r=[];return e.forEach(function(o){hu[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Ko(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Ko(o,n,a))})})}),s.media.forEach(function(o){r.push(Ko("m",hu.m[0],o)),t.forEach(function(n){hu[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Ko(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(Ko(n,a,c))})})})}),r.join(`\r
|
|
4
|
+
`)+`\r
|
|
5
|
+
`}});var mu=pi(Hi=>{"use strict";var Br=ap(),VT=dp();Hi.write=VT;Hi.parse=Br.parse;Hi.parseParams=Br.parseParams;Hi.parseFmtpConfig=Br.parseFmtpConfig;Hi.parsePayloads=Br.parsePayloads;Hi.parseRemoteCandidates=Br.parseRemoteCandidates;Hi.parseImageAttributes=Br.parseImageAttributes;Hi.parseSimulcastStreamList=Br.parseSimulcastStreamList});import D1 from"webrtc-adapter";var zm=Be(Qe());var Lu=(V=>(V[V.INVALID_PARAMETER=4096]="INVALID_PARAMETER",V[V.INVALID_OPERATION=4097]="INVALID_OPERATION",V[V.NOT_SUPPORTED=4098]="NOT_SUPPORTED",V[V.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",V[V.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",V[V.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",V[V.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",V[V.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",V[V.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",V[V.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",V[V.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",V[V.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",V[V.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",V[V.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",V[V.CLIENT_BANNED=16448]="CLIENT_BANNED",V[V.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",V[V.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",V[V.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",V[V.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",V[V.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",V[V.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",V[V.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",V[V.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",V[V.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",V[V.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",V[V.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",V[V.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",V[V.API_CALL_ABORTED=16461]="API_CALL_ABORTED",V[V.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",V[V.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",V[V.UNKNOWN=65535]="UNKNOWN",V))(Lu||{}),S=Lu;var nf=function(s){for(let i in S)if(S[i]===s)return i;return"UNKNOWN"},Rc=class extends Error{constructor({name:e="RtcError",message:t,code:r=S.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${nf(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);d(this,"code");d(this,"extraCode");d(this,"message");d(this,"originMessage");d(this,"name");d(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=Rc;var Pu=new Date().getTime(),Cc=0,wu=function(s){Pu=s,Cc=Pu-new Date().getTime();let i=new Date;i.setTime(s),R.info(`baseTime from server: ${i} offset: ${Cc}`)},Gs=function(){return new Date().getTime()+Cc},cn=function(){let s=new Date;return s.setTime(Gs()),s.toLocaleString()},dn=function(s){let i=String(s.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${s.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var dt={};fi(dt,{bytes2ms:()=>Gu,convertObjectNumberToInt:()=>to,copyProperties:()=>Hu,deepClone:()=>mr,deepMerge:()=>Wt,delay:()=>Ii,fibonacci:()=>fr,formatedTime:()=>Yu,getConstructorName:()=>zr,getContainerFromElement:()=>Qu,getEnv:()=>Fu,getInternalVersion:()=>Xu,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>bn,getMuteStateFromFlag:()=>Si,getNetworkType:()=>Bc,getNumNetworkType:()=>pr,getReconnectionTimeout:()=>vt,getStringByteLength:()=>eo,getTurnServer:()=>zu,getUint32Version:()=>Rn,getValueType:()=>Ee,getViewListFromView:()=>Kr,glog:()=>Hc,ipv4ToUint32:()=>Yr,isArray:()=>_e,isAudioWorkletSupported:()=>ju,isBoolean:()=>ge,isConstructor:()=>_r,isEmpty:()=>Qr,isFunction:()=>se,isLangChinese:()=>Nt,isMediaStreamTrack:()=>Ju,isNumber:()=>Q,isObject:()=>bt,isOverseaSdkAppId:()=>Zs,isPlainObject:()=>He,isPortrait:()=>An,isPromise:()=>ji,isRemoteTrack:()=>qu,isString:()=>K,isUndefined:()=>E,loadImage:()=>Zr,ms2bytes:()=>Wu,ms2samples:()=>$c,normalizeUrl:()=>yn,performanceNow:()=>x,promiseAny:()=>gr,samples2ms:()=>Fc,setNetworkType:()=>Sn,stringify:()=>Tt,stringifyIncludeValue:()=>In,throttlePromise:()=>Cn});var Vc={};fi(Vc,{AUDIO_MUTE_BIT:()=>_n,AUDIO_STAT_BIT:()=>Ji,AUX_STAT_BIT:()=>lr,AUX_STREAM_MSID:()=>Oc,BACKEND_ENV:()=>fn,BASE_DOC_URL:()=>Ht,BASE_HOST:()=>xu,CAPABILITIES_KEYS:()=>En,CLASS_NAME:()=>vf,CLOUD_CONSOLE_URL:()=>lf,CROSS_ROOM_BIT:()=>Dc,DATA_FREEZE_TIMING:()=>Tn,DEFAULT_ASSETS_URL:()=>ln,DOC_URL:()=>uf,DTLS_STATE_UNKNOWN:()=>yt,ENV_NAME:()=>_i,EXCHANGE_SDP_TIMEOUT:()=>wc,IS_WORKER:()=>Jr,IS_WORKLET:()=>Js,KIBANA_EVENT:()=>rt,LOCAL_STREAM_PUBLISH_STATE:()=>Vu,LOGGER_CMD_TYPE:()=>Gi,LOGGER_DOMAIN:()=>bc,LOGGER_DOMAIN_OVERSEA:()=>Nc,LOG_LEVEL:()=>Ct,LOG_LEVEL_NAME:()=>Of,MAIN_STREAM_MSID:()=>Xs,MAX_RTT:()=>Ys,MICROPHONE_COMMUNICATIONS:()=>Df,MICROPHONE_DEFAULT:()=>hr,MUTE_ALL_BIT:()=>pf,NAME:()=>m,NETWORK_TYPE:()=>un,NOT_SUPPORTED_H264:()=>ur,PAUSED_RETRY_COUNT:()=>xc,PEERCONNECTION_CONNECTING_TIMEOUT:()=>zs,PEER_CONNECTION_STATE:()=>me,PEER_LEAVE_REASON:()=>Uc,RECOVER_CAPTURE_INTERVAL:()=>Xr,REMOTE_STREAM_TYPE_AUX:()=>kc,REMOTE_STREAM_TYPE_MAIN:()=>Mc,RENDER_FREEZE_TIMING:()=>Cf,SCHEDULE_DOMAIN:()=>Ti,SCHEDULE_TIMEOUT:()=>Nf,SDP_SEMANTICS_PLAN_B:()=>qr,SDP_SEMANTICS_UNIFIED_PLAN:()=>qi,SECOND_HOST:()=>cf,SIGNAL_PING_PONG_INTERVAL:()=>mf,SIGNAL_PING_TIMEOUT:()=>hf,SIGNAL_RECONNECTION_COUNT:()=>Af,SMALL_STAT_BIT:()=>js,SPEAKER_DEFAULT:()=>Qs,STORAGE_EXPIRES_TIME:()=>hn,STREAM_TYPE_BIG:()=>yf,STREAM_TYPE_SMALL:()=>bf,SUBSCRIBE_SMALL_RETRY_COUNT:()=>jr,SYNC_USER_LIST_INTERVAL:()=>Rf,Scene:()=>Gt,THIRD_HOST:()=>df,TRANSPORT_DIRECTION:()=>Z,TRTC_ERROR_ASSISTANCE:()=>vc,TRTC_QUALITY_BAD:()=>Ef,TRTC_QUALITY_DISCONNECTED:()=>If,TRTC_QUALITY_EXCELLENT:()=>_f,TRTC_QUALITY_GOOD:()=>gf,TRTC_QUALITY_POOR:()=>Tf,TRTC_QUALITY_UNKNOWN:()=>ff,TRTC_QUALITY_VERY_BAD:()=>Sf,UPDATE_OFFER_TIMEOUT:()=>Pc,VIDEO_MUTE_BIT:()=>gn,VIDEO_STAT_BIT:()=>Wi,audioProfileMap:()=>mn,getRetryCount:()=>gi,getScriptDir:()=>af,innerVersion:()=>Ws,loggerProxy:()=>qs,screenProfileMap:()=>pn,setLoggerProxy:()=>dr,setRetryCount:()=>Lc,setVersion:()=>yc,version:()=>Me,videoProfileMap:()=>gt});var Ws="4.15.00.1600",Me="5.0.0";function yc(s){Me=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Ws=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Jr=typeof importScripts!="undefined",Js=typeof registerProcessor!="undefined",af=()=>{let s=Jr?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},qs="",dr=s=>qs=s,xu="web.sdk.qcloud.com",cf="web.sdk.tencent.cn",df="web.sdk.cloud.tencent.cn",lf="https://console.cloud.tencent.com/trtc",Ht=`https://${xu}/trtc/webrtc/v5/doc`,ln="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",uf=`${Ht}/zh-cn/`,bc="https://yun.tim.qq.com",Nc="https://apisgp.my-imcloud.com",vc="trtc_error_assistance",Gi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},_i={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Ct=(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))(Ct||{}),hf=18e3,mf=2e3,un={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},hn=7*24*3600*1e3,mn={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}},gt={"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}},pn={"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",LOADEDMETADATA:"loadedmetadata",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"},Z={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},fn={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Gt=(e=>(e.LIVE="live",e.RTC="rtc",e))(Gt||{}),Wi=1,js=2,lr=4,Ji=8,_n=64,gn=16,pf=112,Dc=128,Xs="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Oc="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Mc=m.MAIN,kc=m.AUXILIARY,ff=0,_f=1,gf=2,Tf=3,Ef=4,Sf=5,If=6,yt="unknown",me={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Uu=1/0;function Lc(s){Uu=s}function gi(){return Uu}var Af=30,rt={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"},Rf=1e4,Pc=1e4,wc=1e4,qi="unified-plan",qr="plan-b",ur=1028,Vu=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Vu||{}),Tn=500,Cf=1e3,yf=m.BIG,bf=m.SMALL,zs=10*1e3,Ti={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"},Nf=2e3,vf={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},xc=5,hr="default",Qs=hr,Df="communications",Of=Object.keys(Ct),Uc=["normal leave","timeout leave","kick","role change"],jr=10,Xr=2e3,En=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Ys=10*1e3;var Fu=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Zs=s=>Number(s)<14e8,Ei=function(s,i){let e;qs?e=qs:e=Zs(s)?Nc:bc;let t=Math.floor(Math.random()*$s(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},Ks="unknown";function Bc(){if(Ks!=="unknown")return Ks;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&&(Ks=$u(t,r)),Ks}function $u(s,i){if(un[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Sn(s){Ks=$u(s)}function pr(){return un[Bc()]}function Hu(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 Gu(s,i=48e3){return Fc(s/4,i)}function Fc(s,i=48e3){return s*1e3/i}function Wu(s,i=48e3){return $c(s,i)*4}function $c(s,i=48e3){return s*i/1e3}var Hc=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Nt=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},He=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 vt(s){return s>8?30*1e3:fr(s)*1e3}function Ee(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var se=s=>typeof s=="function",E=s=>typeof s=="undefined",K=s=>typeof s=="string",Q=s=>typeof s=="number",ge=s=>typeof s=="boolean",bt=s=>Ee(s)==="object",_e=s=>Ee(s)==="array",Ju=s=>Ee(s)==="MediaStreamTrack".toLowerCase(),qu=s=>s.isRemote,ji=s=>Ee(s)==="promise",_r=s=>se(s)&&s.prototype.constructor===s,zr=s=>_r(s)?s.prototype.constructor.name:"",ju=typeof AudioWorkletNode!="undefined";function gr(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 x(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Bu=s=>+s<10?`0${s}`:s,Xu=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=Bu(e[1])+Bu(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},Mf=Object.prototype.hasOwnProperty,{toString:_E}=Object.prototype;function Qr(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(He(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(Mf.call(s,i))return!1;return!0}}return!1}function Si(s,i){return{userId:i,hasAudio:!!(s&Ji),hasVideo:!!(s&Wi),hasAuxiliary:!!(s&lr),hasSmall:!!(s&js),audioMuted:!!(s&_n),videoMuted:!!(s&gn),audioAvailable:!!(s&Ji)&&!(s&_n),videoAvailable:!!(s&Wi)&&!(s&gn)}}function zu(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 Yr(s,i=!0){if(!K(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 Wt=function(s,i,e,t){if(!(bt(s)&&bt(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(bt(s[n])&&bt(i[n]))r+=Wt(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=mr(i[n]),r+=1)}return r};function mr(s){if(_e(s)){let i=[];return s.forEach((e,t)=>{i[t]=mr(e)}),i}if(bt(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=mr(s[e])}),i}return s}var Kr=s=>{let i=[];if(_e(s))i=[...s];else if(K(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Qu=s=>K(s)?document.getElementById(s):s,kf=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}`},Yu=()=>kf(new Date);function Tt(s,{keysToInclude:i,keysToExclude:e}){try{if(_e(s))return`[${s.map(n=>Tt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!He(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]=He(s[n])||_e(s[n])?JSON.parse(Tt(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function In(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),Tt(s,{keysToInclude:e})}function eo(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var An=()=>{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},Zr=s=>p(void 0,null,function*(){return new Promise((i,e)=>{let t;if(K(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}`}))}})}),Rn=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},to=s=>(Object.keys(s).forEach(i=>{Q(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(He(s[i])||_e(s[i]))&&to(s[i])}),s);function Ii(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function Cn(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function yn(s){return s.replace(/(^|[^:])\/{2,}/g,"$1/")}function bn(s){var i;try{let{width:e,height:t,frameRate:r,sampleRate:o,sampleSize:n,channelCount:a}=(i=s.getSettings)==null?void 0:i.call(s),c=s.kind===m.AUDIO?`${o}x${n}@${a}`:`${e}x${t}@${r}`,l=s.stats?` stats: ${JSON.stringify(s.stats).replaceAll('"',"")}`:"";return`${s.id} ${s.readyState} muted:${s.muted} ${s.kind} ${s.label} ${c}${l}`}catch(e){return""}}function Ai({url:s,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((o,n)=>{if("fetch"in window)return fetch(s,{method:e,body:i,priority:r}).then(c=>c.text()).then(c=>{try{o({data:JSON.parse(c)})}catch(l){o({data:c})}},n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let c=JSON.parse(a.response);o({data:c})}catch(c){o({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,s,!0),a.send(i)})}function Gc(s){return p(this,null,function*(){let i=x(),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} ${x()-i}ms`),a}catch(t){return e}})}var Lf=Object.prototype.hasOwnProperty;var Jt=s=>typeof s=="function",Ri=s=>typeof s=="undefined";var Nn=s=>typeof s=="boolean";var Wc=s=>s.isRemote;var Pf=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 Ku(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(Pf(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(Lf.call(s,i))return!1;return!0}}return!1}var wf=0,xf=1,Zu=2;function Uf({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,h=0,u=-1,f=wf,g=(D,_)=>p(this,null,function*(){let C=n||this;try{let M=yield s.apply(C,a);h>0&&o&&o.call(this,h),h=0,D(M)}catch(M){let ne=()=>{clearTimeout(u),h=0,f=Zu,_(M)},F=()=>{f!==Zu&&h<(Jt(c)?c():c)?(h++,f=xf,Jt(t)&&t.call(this,h,ne),u=window.setTimeout(()=>{u=-1,g(D,_)},Jt(l)?l(h):l)):(ne(),Jt(r)&&r.call(this,M))};Jt(e)?e.call(this,{error:M,retry:F,reject:_,retryFuncArgs:a,retriedCount:h}):F()}});return new Promise(g)}}var qt=Uf;var es=class{constructor(i){d(this,"userId");d(this,"remoteUserId");d(this,"id");d(this,"sdkAppId");d(this,"type");d(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Nn(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,Ri(this.userId)||Ku(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 us={};fi(us,{ANDROID_VERSION:()=>jc,CHROME_MAJOR_VERSION:()=>lt,CHROME_VERSION:()=>Wn,EDGE_VERSION:()=>Dn,EDG_MAJOR_VERSION:()=>Xc,EDG_VERSION:()=>On,FIREFOX_MAJOR_VERSION:()=>io,FIREFOX_VERSION:()=>vn,HUAWEI_VERSION:()=>Fn,IE_VERSION:()=>Hf,IOS_MAIN_VERSION:()=>ut,IOS_VERSION:()=>Xt,IPADQQB_VERSION:()=>Vn,IS_ANDROID:()=>he,IS_ANDROID_WEBVIEW:()=>qf,IS_ANY_SAFARI:()=>zi,IS_CHROME:()=>ls,IS_CHROME_OS:()=>zc,IS_CHROMIUM_BASE:()=>Ye,IS_DESKTOP_IOS_CHROME:()=>sd,IS_EDG:()=>ss,IS_EDGE:()=>rs,IS_ELECTRON:()=>Wf,IS_FIREFOX:()=>oe,IS_HEADLESS_CHROME:()=>ed,IS_HONOR:()=>Kc,IS_HUAWEI:()=>Yc,IS_HUAWEIBROWSER:()=>uo,IS_IE:()=>rh,IS_IE8:()=>$f,IS_IOS:()=>Se,IS_IOS_13_OR_14:()=>rd,IS_IOS_15_1:()=>id,IS_IOS_CHROME:()=>sh,IS_IPAD:()=>is,IS_IPADQQB:()=>ao,IS_IPAD_PRO:()=>qc,IS_IPHONE:()=>Xi,IS_IPOD:()=>ih,IS_LINUX:()=>co,IS_LOCAL:()=>Lt,IS_MAC:()=>kt,IS_MACQQB:()=>no,IS_MIBROWSER:()=>lo,IS_MQQB:()=>cs,IS_NATIVE_ANDROID:()=>Ff,IS_OLD_ANDROID:()=>Bf,IS_OPENHARMONY:()=>Zc,IS_OPPOBROWSER:()=>mo,IS_SAFARI:()=>Le,IS_SAFARI_15_1:()=>jf,IS_SAMSUNGBROWSER:()=>ho,IS_SOGOU:()=>so,IS_SOGOUM:()=>ro,IS_TBS:()=>Mt,IS_UCBROWSER:()=>Qc,IS_VIVOBROWSER:()=>po,IS_WECHAT:()=>ns,IS_WIN:()=>Tr,IS_WQQB:()=>oo,IS_WX:()=>Gf,IS_X5MQQB:()=>as,IS_XWEB:()=>os,MACQQB_VERSION:()=>Un,MI_VERSION:()=>Bn,MQQB_VERSION:()=>ts,OPENHARMONY_VERSION:()=>Jf,OPPO_VERSION:()=>Hn,SAFARI_VERSION:()=>Ci,SAMSUNG_VERSION:()=>$n,SOGOUM_VERSION:()=>Mn,SOGOU_VERSION:()=>kn,TBS_VERSION:()=>Ln,UA_DATA_STRING:()=>Dt,USER_AGENT:()=>Ot,VIVO_VERSION:()=>Gn,WECHAT_VERSION:()=>wn,WQQB_VERSION:()=>xn,XWEB_VERSION:()=>Pn,browserInfo:()=>jt,getBrowserInfo:()=>oh,getChromeMajorVersion:()=>ds,getDeviceModel:()=>Er,getGPUInfo:()=>nd,getOSName:()=>Jn,getOSNumber:()=>_o,getOSString:()=>bi,getOSType:()=>Xf,getTerminalType:()=>ad,getUserAgentData:()=>fo,isLocalStorageEnabled:()=>yi,isMobile:()=>od,isVersionSmallerThan:()=>td});var Ot=typeof navigator=="undefined"?"":navigator.userAgent,X=s=>new RegExp(s,"i").test(Ot),Ne=s=>{if(X(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=Ot.match(i);if(e&&e[1])return e[1]}return""},Jc=s=>{if(X(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=Ot.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},eh=/AppleWebKit\/([\d.]+)/i.exec(Ot),Vf=eh?parseFloat(eh[1]):NaN,is=X("iPad"),qc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&X("Macintosh"),Xi=X("iPhone")&&!is,ih=X("iPod"),Se=Xi||is||ih||qc,he=X("Android"),jc=function(){if(he){let s=Ot.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}(),Bf=he&&X("webkit")&&jc<2.3,Ff=he&&jc<5&&Vf<537,oe=X("Firefox"),vn=Ne("Firefox"),io=Jc("Firefox"),rs=X("Edge"),Dn=Ne("Edge"),ss=X("Edg"),On=Ne("Edg"),Xc=Jc("Edg"),ro=X("SogouMobileBrowser"),Mn=Ne("SogouMobileBrowser"),so=X("MetaSr\\s"),kn=Ne("MetaSr\\s"),Mt=X("TBS"),Ln=Ne("TBS"),os=X("XWEB"),Pn=Ne("XWEB"),$f=X("MSIE\\s8\\.0"),rh=X("MSIE\\/\\d+"),Hf=function(){if(rh){let s=/MSIE\s(\d+)\.\d/.exec(Ot),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(Ot)&&/rv:11.0/.test(Ot)&&(i=11),i}return NaN}(),ns=X("(micromessenger|webbrowser)"),wn=Ne("MicroMessenger"),as=!Mt&&X("MQQBrowser")&&X("COVC"),cs=!Mt&&X("MQQBrowser")&&!X("COVC"),ts=cs||as?Ne("MQQBrowser"):"",oo=!Mt&&X(" QQBrowser"),xn=Ne(" QQBrowser"),no=!Mt&&X("QQBrowserLite"),Un=Ne("QQBrowserLite"),ao=!Mt&&X("MQBHD"),Vn=Ne("MQBHD"),Tr=X("Windows"),kt=!Se&&X("MAC OS X"),co=!he&&X("Linux"),zc=X("CrOS"),Gf=X("MicroMessenger"),Qc=X("UCBrowser"),Wf=X("Electron"),lo=X("MiuiBrowser"),Bn=Ne("MiuiBrowser"),uo=X("HuaweiBrowser"),Yc=X("Huawei")||X("HUAWEI"),Kc=X("Honor")||X("HONOR"),Fn=Ne("HuaweiBrowser"),ho=X("SamsungBrowser"),$n=Ne("SamsungBrowser"),mo=X("HeyTapBrowser"),Hn=Ne("HeyTapBrowser"),po=X("VivoBrowser"),Gn=Ne("VivoBrowser"),Zc=X("OpenHarmony"),Jf=Ne("OpenHarmony"),ds=()=>Jc("Chrome"),Ye=X("Chrome"),ls=!rs&&!so&&!ro&&!Mt&&!os&&!ss&&!oo&&!lo&&!uo&&!ho&&!mo&&!po&&Ye,ed=X("HeadlessChrome"),lt=ds(),Wn=Ne("Chrome"),Le=!Ye&&!cs&&!as&&!no&&!ao&&X("Safari"),zi=Le||Se,Ci=Ne("Version"),qf=/Android.*(wv|.0.0.0)/.test(Ot),Xt=(()=>{if(qc)return Ci;if(Se){let s=Ot.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})();function td(s,i){let e=s.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let o=e[r]||0,n=t[r]||0;if(o<n)return!0;if(o>n)return!1}return!1}var ut=Number(Xt.split(".")[0]),jf=Ci==="15.1",id=Xt==="15.1",rd=(()=>{let s=Number(Xt.split(".")[0]);return s===14||s===13})(),sh=X("CriOS"),sd=sh&&Ci==="11.1.1",Lt=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",yi=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),jt=oh();function oh(){let s=new Map([[oe,["Firefox",vn]],[ss,["Edg",On]],[ls,["Chrome",Wn]],[Le,["Safari",Ci]],[Mt,["TBS",Ln]],[os,["XWEB",Pn]],[ns&&Xi,["WeChat",wn]],[oo,["QQ(Win)",xn]],[cs,["QQ(Mobile)",ts]],[as,["QQ(Mobile X5)",ts]],[no,["QQ(Mac)",Un]],[ao,["QQ(iPad)",Vn]],[lo,["MI",Bn]],[uo,["HW",Fn]],[ho,["Samsung",$n]],[mo,["OPPO",Hn]],[po,["VIVO",Gn]],[rs,["EDGE",Dn]],[ro,["SogouMobile",Mn]],[so,["Sogou",kn]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var ae=null;function od(){return ae&&typeof ae.mobile=="boolean"?ae.mobile:he||Se||Xi||is||Zc}var Dt="";function fo(){return p(this,null,function*(){if(ae)return ae;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ae=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ae&&!Dt&&(Dt=`UAData: ${ae.platform}/${ae.platformVersion}`,ae.architecture&&ae.bitness&&(Dt+=` ${ae.architecture}/${ae.bitness}`),ae.mobile&&(Dt+=" mobile"),ae.model&&(Dt+=` model: ${ae.model.replace(/\s+/g,"/")}`),ae.fullVersionList&&(Dt+=` ${ae.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),ae}catch(s){return null}})}function nd(){try{let s=document.createElement("canvas"),i=s.getContext("webgl")||s.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(s){return""}}function Er(){return(ae==null?void 0:ae.model)||""}var th=new Map([[he,"Android"],[Se,"iOS"],[Tr,"Windows"],[kt,"MacOS"],[co,"Linux"],[zc,"ChromeOS"]]),Jn=function(){return th.get(!0)?th.get(!0):ae?ae.platform:"unknown"};function _o(){return Tr?1:he?2:kt?3:Se?4:co?5:zc?6:0}var bi=()=>{let s=Jn();return s+=`/${jt.name}/${Le?jt.version:jt.version.split(".")[0]}`,ae!=null&&ae.platformVersion&&(s+=`/${ae.platformVersion}`),ae!=null&&ae.architecture&&(s+=`/${ae.architecture}`),s};function ad(){return he?4:Xi?2:is?3:kt?12:Tr?5:co?13:Zc?22:1}function Xf(){return he?"Android":Xi?"iPhone":is?"iPad":kt?"Mac":Tr?"Windows":co?"Linux":"unknown"}var nh=Be(Qe(),1),zf=new nh.default,T=zf;var zt=(J=>(J.ROOM_DESTROY="1",J.JOIN_START="21",J.JOIN_SCHEDULE_SUCCESS="22",J.JOIN_SIGNAL_CONNECTION_START="23",J.JOIN_SIGNAL_CONNECTION_END="24",J.JOIN_SEND_CMD="25",J.JOIN_RECEIVED_CMD_RES="26",J.JOIN_SUCCESS="27",J.JOIN_FAILED="28",J.LEAVE_START="51",J.LEAVE_SEND_CMD="52",J.LEAVE_SUCCESS="53",J.PUBLISH_START="61",J.SEND_FIRST_VIDEO_FRAME="62",J.PUBLISH_FAILED="63",J.SUBSCRIBE_START="81",J.SUBSCRIBE_SUCCESS="82",J.SUBSCRIBE_FAILED="84",J.UNSUBSCRIBE_SUCCESS="83",J.LOCAL_TRACK_CAPTURE_START="101",J.LOCAL_TRACK_CAPTURE_SUCCESS="102",J.LOCAL_TRACK_CAPTURE_FAILED="103",J.LOCAL_TRACK_PUBLISHED="104",J.LOCAL_TRACK_UNPUBLISHED="105",J.LOCAL_TRACK_REPLACED="106",J.SWITCH_DEVICE_SUCCESS="107",J.TRACK_MUTED="108",J.TRACK_UNMUTED="109",J.REMOTE_TRACK_SUBSCRIBED="110",J.REMOTE_TRACK_UNSUBSCRIBED="111",J.LOCAL_TRACK_RECAPTURE="112",J.LOCAL_AUDIO_STARTED="113",J.LOCAL_AUDIO_STOPPED="114",J.REMOTE_AUDIO_STARTED="115",J.REMOTE_AUDIO_STOPPED="116",J.PLAY_TRACK_START="151",J.PLAYER_STATE_CHANGED="152",J.VIDEO_LOADED_DATA="153",J.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",J.SIGNAL_CONNECTION_STATE_CHANGED="201",J.PEER_CONNECTION_STATE_CHANGED="202",J.SINGLE_CONNECTION_STAT="203",J.SPC_RECONNECTED="204",J.HEARTBEAT_REPORT="251",J.RECEIVED_PUBLISHED_USER_LIST="252",J.REMOTE_PUBLISH_STATE_CHANGED="253",J.AUDIO_LEVEL_INTERVAL="260",J.NETWORK_QUALITY="261",J.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",J.QUALITY_LIMITATION_CHANGED="263",J.LOG="264",J))(zt||{});var I=zt;var Qf="%cTRTC%c%s",Yf="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Kf="display: inline",qn=class qn{constructor(){d(this,"_isEnableUploadLog",!0);d(this,"_localJoinedUser",new Map);d(this,"_queue",[]);d(this,"_timeoutId",-1);d(this,"_logLevel",1);d(this,"_logLevelToUpload",2);!Jr&&!Js&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){T.on(I.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&Ct[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),T.on(I.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),T.once(I.JOIN_FAILED,()=>{this.startUpload()}),T.on(I.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(),5e3)}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(K(t.userId)&&Q(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 p(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:cn(),sdkAppId:String(a),userId:n,version:Me,log:c.map(l=>l.log).join(`
|
|
6
|
+
`)}),a),c.forEach(l=>l.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return qt({retryFunction:()=>Ai({url:Ei(e,Gi.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;return e.setTime(Gs()),`[${dn(e)}] <${Ct[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){E(Ct[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(K(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((l,h)=>`${l} ${this.logChunkToString(h)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(T.emit(I.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=Ct[i])==null?void 0:c.toLowerCase())||"info";qn.PRINT_LOG_TAG?console[a](Qf,Yf,Kf,...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 es(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;Ct[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(qn,"PRINT_LOG_TAG",!(Se||he||ed));var cd=qn,R=new cd;var Zf=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)})},go=Zf;var dd=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!yi())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(yi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){R.warn(i)}}getItem(i){if(!yi())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(yi())try{let t={expiresIn:Date.now()+hn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){R.warn(t)}}deleteItem(i){if(!yi())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(yi())try{localStorage.clear()}catch(i){R.warn(i)}}},hs=new dd;var ti={};fi(ti,{HTTPS_API:()=>T_,IS_GET_CAPABILITIES_SUPPORTED:()=>kd,IS_GET_SETTINGS_SUPPORTED:()=>ei,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Md,IS_INSERTABLE_STREAM_SUPPORTED:()=>Oi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>oa,IS_RTC_RTP_SENDER_SUPPORTED:()=>Co,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>sa,IS_SEI_SUPPORTED:()=>bo,IS_SPC_SUPPORTED:()=>fs,basis:()=>A_,capabilityCheck:()=>Pd,checkSystemRequirementsInternal:()=>ra,decodeSupportStatus:()=>ia,encodeSupportStatus:()=>Nd,getBrowserInfo:()=>f_,getDisplayResolution:()=>Nh,isAddTransceiverSupported:()=>mt,isBrowserSupported:()=>vd,isGetReceiversSupported:()=>Cr,isGetSendersSupported:()=>Zi,isGetTransceiversSupported:()=>Zt,isGetUserMediaSupported:()=>vh,isMediaDevicesSupported:()=>ta,isMediaSessionSupported:()=>kh,isMediaStreamTrackProcessorSupported:()=>Dd,isReplaceTrackSupported:()=>Od,isRequestVideoFrameCallbackSupported:()=>yr,isSIMDSupported:()=>I_,isScreenCaptureApiAvailable:()=>Ao,isSelectedCandidatePair:()=>Ki,isSetParametersSupported:()=>yo,isSmallStreamAPISupported:()=>Oh,isSmallStreamSupported:()=>Ro,isStopTransceiverSupported:()=>S_,isTRTCSupported:()=>__,isUnifiedPlanDefault:()=>E_,isUsedInHttpProtocol:()=>Di,isWebAudioSupported:()=>Dh,isWebCodecSupported:()=>Mh,isWebCodecsSupported:()=>bh,isWebRTCSupported:()=>Ld,isWebTransportSupported:()=>Lh});var Id={};fi(Id,{AUDIO_LEVEL_SCALE:()=>Et,AudioCodecPipelineType:()=>Ed,AudioDecoderDowngradeState:()=>md,AudioPlayerMode:()=>gd,AudioType:()=>lh,BASIC_TYPE:()=>Qi,BannedReason:()=>Td,CONNECTION_CLOSED_REASON:()=>ud,ClientEvent:()=>ah,CodecType:()=>fh,ConnectionEvent:()=>Pt,ConnectionState:()=>ht,DECODE_FAILED_ERROR_CODE:()=>Sd,FacingMode:()=>Xn,LeaveReason:()=>ph,LocalTrackEvent:()=>To,MULTI_VIDEO_DATA_TYPE:()=>wt,MediaType:()=>Pe,MediaTypeLabel:()=>e_,MonitorEventId:()=>So,MutedFlag:()=>dh,NetworkQualityValue:()=>_d,PlayerState:()=>Sr,ReceiveMode:()=>mh,RemoteStreamType:()=>st,RemoteTrackEvent:()=>Eo,RoomEvent:()=>Ni,SceneNumber:()=>hd,StreamEvent:()=>ch,StreamType:()=>hh,SubscribeMediaType:()=>ld,TIMER_TYPE:()=>Yt,TRACK_ACTION:()=>fd,TRACK_KIND:()=>pd,TrackEvent:()=>Qt,UserRole:()=>Ke,UserRoleNumber:()=>Ir,VideoCodec:()=>Yi,VideoCodecPipelineType:()=>Qn,VideoContentHint:()=>ms,VideoDecoderDowngradeState:()=>jn,VideoPlayerMode:()=>zn,VideoType:()=>uh});var Pt=(_=>(_.TRACK_ADDED="track-added",_.TRACK_UPDATED="track-updated",_.TRACK_SUBSCRIBED="track-subscribed",_.STREAM_ADDED="stream-added",_.STREAM_REMOVED="stream-removed",_.STREAM_UPDATED="stream-updated",_.STREAM_PUBLISHED="stream-published",_.STREAM_SUBSCRIBED="stream-subscribed",_.STREAM_UNSUBSCRIBED="stream-unsubscribed",_.STATE_CHANGED="state-changed",_.ERROR="error",_.CONNECTION_STATE_CHANGED="connection-state-changed",_.FIREWALL_RESTRICTION="firewall-restriction",_.SEI_MESSAGE="sei-message",_.CLOSED="closed",_))(Pt||{}),ud=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(ud||{}),ah=(C=>(C.STREAM_ADDED="stream-added",C.STREAM_REMOVED="stream-removed",C.STREAM_UPDATED="stream-updated",C.STREAM_SUBSCRIBED="stream-subscribed",C.CONNECTION_STATE_CHANGED="connection-state-changed",C.PEER_JOIN="peer-join",C.PEER_LEAVE="peer-leave",C.MUTE_AUDIO="mute-audio",C.MUTE_VIDEO="mute-video",C.UNMUTE_AUDIO="unmute-audio",C.UNMUTE_VIDEO="unmute-video",C.CLIENT_BANNED="client-banned",C.NETWORK_QUALITY="network-quality",C.AUDIO_VOLUME="audio-volume",C.SEI_MESSAGE="sei-message",C.ERROR="error",C))(ah||{}),ch=(o=>(o.PLAYER_STATE_CHANGED="player-state-changed",o.SCREEN_SHARING_STOPPED="screen-sharing-stopped",o.CONNECTION_STATE_CHANGED="connection-state-changed",o.DEVICE_AUTO_RECOVERED="device-auto-recovered",o.ERROR="error",o))(ch||{}),To=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(To||{}),Sr=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(Sr||{}),Ni=(F=>(F.PEER_JOIN="peer-join",F.PEER_LEAVE="peer-leave",F.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",F.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",F.BANNED="banned",F.NETWORK_QUALITY="network-quality",F.AUDIO_VOLUME="audio-volume",F.SEI_MESSAGE="sei-message",F.ERROR="error",F.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",F.REMOTE_PUBLISHED="remote-published",F.REMOTE_UNPUBLISHED="remote-unpublished",F.FIREWALL_RESTRICTION="firewall-restriction",F.HEARTBEAT_REPORT="heartbeat-report",F.CUSTOM_MESSAGE="custom-message",F.LAYER_DATA="layerData",F.FIRST_VIDEO_FRAME="first-video-frame",F.DUMP="dump",F.AUDIO_FRAME="audio-frame",F))(Ni||{}),Qt=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(Qt||{}),Eo=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Eo||{}),dh=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(dh||{}),hd=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(hd||{}),Ir=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Ir||{}),Ke=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Ke||{}),ht=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(ht||{}),md=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(md||{}),jn=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(jn||{}),pd=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(pd||{}),fd=(e=>(e.ADD="add",e.REMOVE="remove",e))(fd||{}),Pe=(o=>(o[o.NULL=0]="NULL",o[o.AUDIO=1]="AUDIO",o[o.AUX_VIDEO=2]="AUX_VIDEO",o[o.BIG_VIDEO=4]="BIG_VIDEO",o[o.SMALL_VIDEO=8]="SMALL_VIDEO",o))(Pe||{}),e_={1:"audio",2:"auxVideo",4:"video"},lh=(i=>(i[i.opus=111]="opus",i))(lh||{}),uh=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(uh||{}),hh=(e=>(e.Big="big",e.Small="small",e))(hh||{}),st=(e=>(e.Main="main",e.Aux="auxiliary",e))(st||{}),wt=(o=>(o[o.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",o[o.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",o[o.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",o[o.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",o[o.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",o))(wt||{}),So=(O=>(O[O.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",O[O.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",O[O.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",O[O.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",O[O.MUTE_AUDIO=32772]="MUTE_AUDIO",O[O.MUTE_VIDEO=32773]="MUTE_VIDEO",O[O.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",O[O.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",O[O.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",O[O.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",O[O.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",O[O.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",O[O.SWITCH_CAMERA=32780]="SWITCH_CAMERA",O[O.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",O[O.REPLACE_VIDEO=32782]="REPLACE_VIDEO",O[O.REPLACE_AUDIO=32783]="REPLACE_AUDIO",O[O.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",O[O.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",O[O.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",O[O.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",O[O.JOIN=32788]="JOIN",O[O.LEAVE=32789]="LEAVE",O[O.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",O[O.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",O[O.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",O[O.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",O[O.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",O[O.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",O[O.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",O[O.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",O[O.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",O[O.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",O[O.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",O[O.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",O[O.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",O[O.PUBLISH_AUX=32805]="PUBLISH_AUX",O[O.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",O[O.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",O[O.VIDEO_ENCODER=4004]="VIDEO_ENCODER",O[O.VIDEO_DECODER=4005]="VIDEO_DECODER",O))(So||{}),_d=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(_d||{}),mh=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(mh||{}),Xn=(e=>(e.user="user",e.environment="environment",e))(Xn||{}),zn=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(zn||{}),gd=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(gd||{}),Td=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(Td||{}),ph=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(ph||{}),Et=1e8,ld=class{constructor(){d(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Qi=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(Qi||{}),Yi=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(Yi||{}),Qn=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Qn||{}),Ed=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Ed||{}),fh=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(fh||{}),Sd=(f=>(f[f.SUCCESS=0]="SUCCESS",f[f.FAILED=1]="FAILED",f[f.WEBCODEC_INIT=2]="WEBCODEC_INIT",f[f.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",f[f.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",f[f.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",f[f.WASM_INIT=6]="WASM_INIT",f[f.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",f[f.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",f[f.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",f[f.TEST=10]="TEST",f[f.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",f))(Sd||{}),ms=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(ms||{}),Yt=(o=>(o.INTERVAL="interval",o.TIMEOUT="timeout",o.RAF="raf",o.RIC="ric",o.INTERVAL_IN_WORKER="intervalInWorker",o))(Yt||{});var k={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"},we={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: ${Ee(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: ${Ee(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, browser 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 _h=(s,i)=>i?`${Ht}/${s}/${i}`:`${Ht}/${s}/index.html`;var t_=()=>{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(vc);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 L(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";se(we[i])?o=we[i](e):K(we[i])&&(o=we[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=t_();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(se(l[i])?a=l[i](e):K(l[i])&&(a=l[i]));let h=o;return Nt()&&(c&&c[i]&&(se(c[i])?n=c[i](e):K(c[i])&&(n=c[i])),n&&(r?h=`${n}
|
|
7
|
+
\u8BF7\u67E5\u770B\u6587\u6863: ${_h("zh-cn",a)}
|
|
6
8
|
|
|
7
|
-
`:
|
|
9
|
+
`:h=`${n}
|
|
8
10
|
|
|
9
|
-
`,
|
|
10
|
-
Refer to: ${
|
|
11
|
-
`),g}var wl=Oi(Ah(),1);var c_=1,d_=0,Xc=class{constructor(t=!0){u(this,"countMap",new Map);u(this,"distributionMap",new Map);u(this,"version");u(this,"log",$.createLogger({id:"kv"}));t&&(H.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===D.AUDIO?501700:511700,cost:r})}),H.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===D.AUDIO?501700:511700,error:r})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:yc(this.version||rt),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1}){var d;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let s=((d=this.distributionMap)==null?void 0:d.get(t))||new Map,n=0;if(je(r))n=Math.floor(e/r);else for(let p=r.length-1;p>0;p--)if(e>r[p]){n=p;break}s.set(n,(s.get(n)||0)+1),this.distributionMap.set(t,s)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:c_,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=te.UNKNOWN;e&&(je(e)?r=e:(!V(e.extraCode)||!V(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:d_,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},Qc=(le=>(le[le.enterRoom=500700]="enterRoom",le[le.exitRoom=500701]="exitRoom",le[le.switchRole=500702]="switchRole",le[le.destroy=500703]="destroy",le[le.startLocalAudio=500704]="startLocalAudio",le[le.updateLocalAudio=500705]="updateLocalAudio",le[le.stopLocalAudio=500706]="stopLocalAudio",le[le.startLocalVideo=500707]="startLocalVideo",le[le.updateLocalVideo=500708]="updateLocalVideo",le[le.stopLocalVideo=500709]="stopLocalVideo",le[le.startScreenShare=500710]="startScreenShare",le[le.updateScreenShare=500711]="updateScreenShare",le[le.stopScreenShare=500712]="stopScreenShare",le[le.startRemoteVideo=500713]="startRemoteVideo",le[le.updateRemoteVideo=500714]="updateRemoteVideo",le[le.stopRemoteVideo=500715]="stopRemoteVideo",le[le.muteRemoteAudio=500716]="muteRemoteAudio",le[le.setRemoteAudioVolume=500717]="setRemoteAudioVolume",le[le.use=500718]="use",le[le.sendSEIMessage=5e5]="sendSEIMessage",le[le.sendCustomMessage=500001]="sendCustomMessage",le))(Qc||{}),Cl=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m))(Cl||{}),Dl=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m))(Dl||{}),Nl=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m))(Nl||{});var u_=new Xc(!0),Po=new Xc(!1);var Y=u_;var Pe={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},l_=new Map([[Qt,["Firefox",bc]],[vs,["Edg",vc]],[Ms,["Chrome",Bc]],[Mt,["Safari",Fi]],[Er,["TBS",Nc]],[Cs,["XWEB",wc]],[Ds&&Ui,["WeChat",Mc]],[Vn,["QQ(Win)",Oc]],[ws,["QQ(Mobile)",As]],[Ns,["QQ(Mobile X5)",As]],[Fn,["QQ(Mac)",xc]],[$n,["QQ(iPad)",Pc]],[Hn,["MI",kc]],[Wn,["HW",Lc]],[Gn,["Samsung",Uc]],[jn,["OPPO",Vc]],[qn,["VIVO",Fc]],[Rs,["EDGE",Rc]],[Ln,["SogouMobile",Cc]],[Un,["Sogou",Dc]]]);function Zc(){let i=l_.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var Ol=function(){return!(el||Rs||vs&&Zu<80||Qt&&Yu<56)},Rh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(t=>t in window)},Kc=function(){if(!navigator.mediaDevices)return ai()||$.error(qt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},bh=!1;function ai(){return location.protocol==="http:"&&!Tr?(bh||$.error(dt({key:ct.NOT_SUPPORTED_HTTP})),bh=!0,!0):!1}var xl=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Ml=function(){return A(this,null,function*(){if(Pe.detail.isH264EncodeSupported&&Pe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Pe.detail.isH264EncodeSupported,isVp8EncodeSupported:Pe.detail.isVp8EncodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection,o=document.createElement(D.CANVAS);o.getContext("2d");let s=o.captureStream(0);return r.addTrack(s.getVideoTracks()[0],s),i=yield r.createOffer(),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),Pe.detail.isH264EncodeSupported=t,Pe.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:Pe.detail.isH264EncodeSupported,isVp8EncodeSupported:Pe.detail.isVp8EncodeSupported}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},vh=function(){return A(this,null,function*(){if(Pe.detail.isH264DecodeSupported&&Pe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Pe.detail.isH264DecodeSupported,isVp8DecodeSupported:Pe.detail.isVp8DecodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection;return i=yield r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},ed=Ac(()=>A(void 0,null,function*(){if(Pe.result&&Pe.detail.isH264EncodeSupported&&Pe.detail.isVp8EncodeSupported&&Pe.detail.isH264DecodeSupported&&Pe.detail.isVp8DecodeSupported)return Pe;let i=Date.now(),t=Ol(),e=kl(),r=Rh(),o=Kc(),{isH264EncodeSupported:s,isVp8EncodeSupported:n}=yield Ml(),{isH264DecodeSupported:d,isVp8DecodeSupported:p}=yield vh();if(!s||!n){let m=yield Ml();$.warn(`detect encode again h264:${s} vp8:${n} result: ${JSON.stringify(m)}`),s=m.isH264EncodeSupported,n=m.isVp8EncodeSupported}if(s&&d&&at&&Kr&&!Cs&&!Er){let{encode:m,decode:g}=yield p_();s=m,d=g}return Pe.result=t&&e&&o&&(s||n)&&(d||p),Pe.detail.isBrowserSupported=t,Pe.detail.isWebRTCSupported=e,Pe.detail.isWebCodecsSupported=r,Pe.detail.isMediaDevicesSupported=o,Pe.detail.isScreenShareSupported=oa(),Pe.detail.isSmallStreamSupported=sa(),Pe.detail.isH264EncodeSupported=s,Pe.detail.isVp8EncodeSupported=n,Pe.detail.isH264DecodeSupported=d,Pe.detail.isVp8DecodeSupported=p,Pe.result||$.error(`${navigator.userAgent} ${Ic(Pe.detail,!1)}`),v_(),Y.addNumber({key:523800,value:Date.now()-i}),Pe})),m_=function(){return Pe.result},oa=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},Yc=null;function p_(){return A(this,null,function*(){return Yc||(Yc=new Promise(i=>A(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,d=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(d),m.close(),g.close(),p.getTracks().forEach(P=>P.stop())},d=setTimeout(()=>{e(),i(t)},2*1e3);let p=r.captureStream(),m=new RTCPeerConnection({}),g=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",P=>g.addIceCandidate(P.candidate)),g.addEventListener("icecandidate",P=>m.addIceCandidate(P.candidate)),m.addTrack(p.getVideoTracks()[0],p);let I=yield m.createOffer();yield m.setLocalDescription(I),yield g.setRemoteDescription(I);let S=yield g.createAnswer(),N=wl.default.parse(S.sdp),k=N.media[0].rtp.findIndex(P=>P.codec==="H264");N.media[0].rtp=[N.media[0].rtp[k]],N.media[0].fmtp=N.media[0].fmtp.filter(P=>P.payload===N.media[0].rtp[0].payload),N.media[0].rtcpFb&&(N.media[0].rtcpFb=N.media[0].rtcpFb.filter(P=>P.payload===N.media[0].rtp[0].payload)),S.sdp=wl.default.write(N),yield g.setLocalDescription(S),yield m.setRemoteDescription(S),n=setInterval(()=>A(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let[P,x]=yield Promise.all([m.getSenders()[0].getStats(),g.getReceivers()[0].getStats()]);t.encode||P.forEach(J=>{J.type==="outbound-rtp"&&J.mediaType===D.VIDEO&&J.bytesSent>0&&(t.encode=!0)}),t.decode||x.forEach(J=>{J.type==="inbound-rtp"&&J.mediaType===D.VIDEO&&J.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),$.warn("detectH264Supported failed",r),i({encode:!0,decode:!0})}})).then(i=>(i.encode||(i.decode=!0),(!i.encode||!i.decode)&&$.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${gr}`),i)),Yc)})}var h_=(i,t,e)=>{location.protocol==="http:"&&!Tr&&(i[t]=()=>{throw new he({code:te.INVALID_OPERATION,message:qt.NOT_SUPPORTED_HTTP})})},f_=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(nt(i.selected)&&!i.selected):!1};function Ch(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function Dh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Nh(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function wh(){return"captureStream"in HTMLCanvasElement.prototype}function sa(){return Ds||lt||ei&&ei<63?!1:!!(Ol()&&wh())}var g_=function(){if(V(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Bu}),i.addTransceiver(D.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function E_(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Mh(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function __(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Oh(){return Yt===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var T_=!(!Oh()||Kr&&ei<86);function I_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var na="RTCRtpSender"in window;function S_(){return na&&"replaceTrack"in window.RTCRtpSender.prototype}function y_(){return na&&"setParameters"in window.RTCRtpSender.prototype&&Mh()}var A_="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Vs=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Pl=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,aa=na&&"createEncodedStreams"in window.RTCRtpSender.prototype&&$c()>=86,xh="RTCRtpScriptTransform"in window,ca=na&&(aa||xh),kl=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function Ph(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return V(window.AudioDecoder)||(i.AudioDecoder=!0),V(window.AudioEncoder)||(i.AudioEncoder=!0),V(window.VideoDecoder)||(i.VideoDecoder=!0),V(window.VideoEncoder)||(i.VideoEncoder=!0),V(window.ImageDecoder)||(i.ImageDecoder=!0),i}function kh(){return"mediaSession"in navigator&&!V(navigator.mediaSession.setActionHandler)}function Lh(){return!V(window.WebTransport)}function b_(){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 R_(){let i={browser:`${Ur.name}/${Ur.version}`,os:Os(),displayResolution:Ch(),isScreenShareSupported:oa(),isWebRTCSupported:kl(),isGetUserMediaSupported:Dh(),isWebAudioSupported:Nh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Ph(),isMediaSessionSupported:kh(),isWebTransportSupported:Lh()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var Uh="checkResult";function v_(){Ps.setItem(Uh,{ua:navigator.userAgent,checkResult:Pe})}function Ll(){ai();let i=Ps.getItem(Uh);i&&i.ua===navigator.userAgent&&(Pe=i.checkResult),ed()}function ci(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var C_="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var Fh=Oi(Bi(),1);var Vh=Symbol("instance"),tA=Symbol("abortCtrl"),td=Symbol("cacheResult"),da=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,ma.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},ua=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function D_(i){return typeof i=="object"&&i&&"then"in i}var la=new Map;function qe(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let p=la.get(r)||[];la.has(r)||la.set(r,p),p.push({from:i,to:t,action:n})}let d=s.value;s.value=function(...p){let m=this;if(e.context&&(m=ne.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),m.state===t)return e.sync?m[td]:Promise.resolve(m[td]);m.state instanceof da&&m.state.action==e.abortAction&&m.state.abort(m);let g=null;Array.isArray(i)?i.length==0?m.state instanceof da&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(g=new ua(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(g=new ua(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let I=x=>{if(e.fail&&e.fail.call(this,x),e.sync){if(e.ignoreError)return x;throw x}else return e.ignoreError?Promise.resolve(x):Promise.reject(x)};if(g)return I(g);let S=m.state,N=new da(S,t,n);ma.call(m,N);let k=x=>{var J;return m[td]=x,N.aborted||(ma.call(m,t),(J=e.success)===null||J===void 0||J.call(this,m[td])),x},P=x=>(ma.call(m,S,x),I(x));try{let x=d.apply(this,p);return D_(x)?x.then(k).catch(P):e.sync?k(x):Promise.resolve(k(x))}catch(x){return P(new ua(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${x}`,x instanceof Error?x:new Error(String(x))))}}}}var N_=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function ma(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(ne.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var ne=class i extends Fh.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Vh];o?this.name=o.name+"-"+o.count++:r[Vh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=la.get(t)||[],r=new Set,o=[],s=[],n=new Set,d=Object.getPrototypeOf(t);la.has(d)&&(d.stateDiagram.forEach(m=>r.add(m)),d.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:g,action:I})=>{typeof m=="string"?o.push({from:m,to:g,action:I}):m.length?m.forEach(S=>{o.push({from:S,to:g,action:I})}):s.push({to:g,action:I})}),o.forEach(({from:m,to:g,action:I})=>{n.add(m),n.add(g),n.add(I+"ing"),r.add(`${m} --> ${I}ing : ${I}`),r.add(`${I}ing --> ${g} : ${I} \u{1F7E2}`),r.add(`${I}ing --> ${m} : ${I} \u{1F534}`)}),s.forEach(({to:m,action:g})=>{r.add(`${g}ing --> ${m} : ${g} \u{1F7E2}`),n.forEach(I=>{I!==m&&r.add(`${I} --> ${g}ing : ${g}`)})});let p=[...r];return Object.defineProperties(t,{stateDiagram:{value:p},allStates:{value:n}}),p}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){N_(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){ma.call(this,t)}};ne.STATECHANGED="stateChanged";ne.UPDATEAFSM="updateAFSM";ne.INIT="[*]";ne.ON="on";ne.OFF="off";ne.instances=new Map;ne.instances2=new WeakMap;var Vl=typeof window!="undefined",$h=Vl&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},w_=Vl&&window.cancelIdleCallback||function(i){clearTimeout(i)},Bh=Vl&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),gt=class gt{static generateTaskID(){return this.currentTaskID++}static run(t,e,r){r!=null&&r.fps&&(r.delay=r.delay||Number((1e3/r.fps).toFixed(2))),t==="interval"?r=ee({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=ee({delay:1e4,count:0},r):t==="raf"?r=ee({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=ee({delay:2e3,count:0,backgroundTask:!0},r);let o=Ee(ee({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r),{delay:r.delay});return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,gt.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){gt.sharedWorker||(gt.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
11
|
+
`,h+=o)),r&&(h+=`
|
|
12
|
+
Refer to: ${_h("en",a)}
|
|
13
|
+
`),h}var bd=Be(Ch(),1);var u_=1,h_=0,Kn=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",R.createLogger({id:"kv"}));i&&(T.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===m.AUDIO?501700:511700,cost:t})}),T.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===m.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:Rn(this.version||Me),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(Q(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:u_,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&&(Q(e)?t=e:(!E(e.extraCode)||!E(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:h_,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},Zn=(U=>(U[U.enterRoom=500700]="enterRoom",U[U.exitRoom=500701]="exitRoom",U[U.switchRole=500702]="switchRole",U[U.destroy=500703]="destroy",U[U.startLocalAudio=500704]="startLocalAudio",U[U.updateLocalAudio=500705]="updateLocalAudio",U[U.stopLocalAudio=500706]="stopLocalAudio",U[U.startLocalVideo=500707]="startLocalVideo",U[U.updateLocalVideo=500708]="updateLocalVideo",U[U.stopLocalVideo=500709]="stopLocalVideo",U[U.startScreenShare=500710]="startScreenShare",U[U.updateScreenShare=500711]="updateScreenShare",U[U.stopScreenShare=500712]="stopScreenShare",U[U.startRemoteVideo=500713]="startRemoteVideo",U[U.updateRemoteVideo=500714]="updateRemoteVideo",U[U.stopRemoteVideo=500715]="stopRemoteVideo",U[U.muteRemoteAudio=500716]="muteRemoteAudio",U[U.setRemoteAudioVolume=500717]="setRemoteAudioVolume",U[U.use=500718]="use",U[U.sendSEIMessage=5e5]="sendSEIMessage",U[U.sendCustomMessage=500001]="sendCustomMessage",U))(Zn||{}),Rd=(l=>(l[l.AudioMixer=550700]="AudioMixer",l[l.AIDenoiser=551700]="AIDenoiser",l[l.VirtualBackground=570700]="VirtualBackground",l[l.Beauty=571700]="Beauty",l[l.Watermark=572700]="Watermark",l[l.BasicBeauty=574700]="BasicBeauty",l[l.CDNStreaming=590700]="CDNStreaming",l[l.DeviceDetector=591700]="DeviceDetector",l[l.Debug=592700]="Debug",l))(Rd||{}),Cd=(l=>(l[l.AudioMixer=550701]="AudioMixer",l[l.AIDenoiser=551701]="AIDenoiser",l[l.VirtualBackground=570701]="VirtualBackground",l[l.Beauty=571701]="Beauty",l[l.Watermark=572701]="Watermark",l[l.BasicBeauty=574701]="BasicBeauty",l[l.CDNStreaming=590701]="CDNStreaming",l[l.DeviceDetector=591701]="DeviceDetector",l[l.Debug=592701]="Debug",l))(Cd||{}),yd=(l=>(l[l.AudioMixer=550702]="AudioMixer",l[l.AIDenoiser=551702]="AIDenoiser",l[l.VirtualBackground=570702]="VirtualBackground",l[l.Beauty=571702]="Beauty",l[l.Watermark=572702]="Watermark",l[l.BasicBeauty=574702]="BasicBeauty",l[l.CDNStreaming=590702]="CDNStreaming",l[l.DeviceDetector=591702]="DeviceDetector",l[l.Debug=592702]="Debug",l))(yd||{});var m_=new Kn(!0),Rr=new Kn(!1);var N=m_;var ie={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},p_=new Map([[oe,["Firefox",vn]],[ss,["Edg",On]],[ls,["Chrome",Wn]],[Le,["Safari",Ci]],[Mt,["TBS",Ln]],[os,["XWEB",Pn]],[ns&&Xi,["WeChat",wn]],[oo,["QQ(Win)",xn]],[cs,["QQ(Mobile)",ts]],[as,["QQ(Mobile X5)",ts]],[no,["QQ(Mac)",Un]],[ao,["QQ(iPad)",Vn]],[lo,["MI",Bn]],[uo,["HW",Fn]],[ho,["Samsung",$n]],[mo,["OPPO",Hn]],[po,["VIVO",Gn]],[rs,["EDGE",Dn]],[ro,["SogouMobile",Mn]],[so,["Sogou",kn]]]);function f_(){let s=p_.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var vd=function(){return!(Qc||rs||ss&&Xc<80||oe&&io<56)},bh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},ta=function(){if(!navigator.mediaDevices)return Di()||R.error(we.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},yh=!1;function Di(){return location.protocol==="http:"&&!Lt?(yh||R.error(L({key:k.NOT_SUPPORTED_HTTP})),yh=!0,!0):!1}var Dd=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Nd=function(){return p(this,null,function*(){if(ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.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(),ie.detail.isH264EncodeSupported=i,ie.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},ia=function(){return p(this,null,function*(){if(ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ie.detail.isH264DecodeSupported,isVp8DecodeSupported:ie.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}}})},ra=Cn(()=>p(void 0,null,function*(){if(ie.result&&ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported&&ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return ie;let s=Date.now(),i=vd(),e=Ld(),t=bh(),r=ta(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield Nd(),{isH264DecodeSupported:a,isVp8DecodeSupported:c}=yield ia();if(!o||!n){let l=yield Nd();R.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(l)}`),o=l.isH264EncodeSupported,n=l.isVp8EncodeSupported}if(o&&a&&he&&Ye&&!os&&!Mt){let{encode:l,decode:h}=yield g_();o=l,a=h}return ie.result=i&&e&&r&&(o||n)&&(a||c),ie.detail.isBrowserSupported=i,ie.detail.isWebRTCSupported=e,ie.detail.isWebCodecsSupported=t,ie.detail.isMediaDevicesSupported=r,ie.detail.isScreenShareSupported=Ao(),ie.detail.isSmallStreamSupported=Ro(),ie.detail.isH264EncodeSupported=o,ie.detail.isVp8EncodeSupported=n,ie.detail.isH264DecodeSupported=a,ie.detail.isVp8DecodeSupported=c,ie.result||R.error(`${navigator.userAgent} ${In(ie.detail,!1)}`),R_(),N.addNumber({key:523800,value:Date.now()-s}),ie})),__=function(){return ie.result},Ao=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},ea=null;function g_(){return p(this,null,function*(){return ea||(ea=new Promise(s=>p(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{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),l.close(),h.close(),c.getTracks().forEach(_=>_.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",_=>h.addIceCandidate(_.candidate)),h.addEventListener("icecandidate",_=>l.addIceCandidate(_.candidate)),l.addTrack(c.getVideoTracks()[0],c);let u=yield l.createOffer();yield l.setLocalDescription(u),yield h.setRemoteDescription(u);let f=yield h.createAnswer(),g=bd.default.parse(f.sdp),D=g.media[0].rtp.findIndex(_=>_.codec==="H264");g.media[0].rtp=[g.media[0].rtp[D]],g.media[0].fmtp=g.media[0].fmtp.filter(_=>_.payload===g.media[0].rtp[0].payload),g.media[0].rtcpFb&&(g.media[0].rtcpFb=g.media[0].rtcpFb.filter(_=>_.payload===g.media[0].rtp[0].payload)),f.sdp=bd.default.write(g),yield h.setLocalDescription(f),yield l.setRemoteDescription(f),n=setInterval(()=>p(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let[_,C]=yield Promise.all([l.getSenders()[0].getStats(),h.getReceivers()[0].getStats()]);i.encode||_.forEach(M=>{M.type==="outbound-rtp"&&M.mediaType===m.VIDEO&&M.bytesSent>0&&(i.encode=!0)}),i.decode||C.forEach(M=>{M.type==="inbound-rtp"&&M.mediaType===m.VIDEO&&M.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),R.warn("detectH264Supported failed",t),s({encode:!0,decode:!0})}})).then(s=>(s.encode||(s.decode=!0),(!s.encode||!s.decode)&&R.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${Dt}`),s)),ea)})}var T_=(s,i,e)=>{location.protocol==="http:"&&!Lt&&(s[i]=()=>{throw new y({code:S.INVALID_OPERATION,message:we.NOT_SUPPORTED_HTTP})})},Ki=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(ge(s.selected)&&!s.selected):!1};function Nh(){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 vh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Dh(){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 Oh(){return"captureStream"in HTMLCanvasElement.prototype}function Ro(){return ns||Se||lt&<<63?!1:!!(vd()&&Oh())}var E_=function(){if(E(window.RTCRtpTransceiver)||!mt()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:qi}),s.addTransceiver(m.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function Cr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Zi(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Zt(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function mt(){return ut===11&&!sd?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var fs=!(!mt()||Ye&<<86);function S_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Co="RTCRtpSender"in window;function Od(){return Co&&"replaceTrack"in window.RTCRtpSender.prototype}function yo(){return Co&&"setParameters"in window.RTCRtpSender.prototype&&Zi()}var Md="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,ei=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,kd=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Oi=Co&&"createEncodedStreams"in window.RTCRtpSender.prototype&&ds()>=86,sa="RTCRtpScriptTransform"in window,bo=Co&&(Oi||sa),Ld=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Mh(){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 kh(){return"mediaSession"in navigator&&!E(navigator.mediaSession.setActionHandler)}function Lh(){return!E(window.WebTransport)}function I_(){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 A_(){let s={browser:`${jt.name}/${jt.version}`,os:Jn(),displayResolution:Nh(),isScreenShareSupported:Ao(),isWebRTCSupported:Ld(),isGetUserMediaSupported:vh(),isWebAudioSupported:Dh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Mh(),isMediaSessionSupported:kh(),isWebTransportSupported:Lh()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var Ph="checkResult";function R_(){hs.setItem(Ph,{ua:navigator.userAgent,checkResult:ie})}function Pd(){Di();let s=hs.getItem(Ph);s&&s.ua===navigator.userAgent&&(ie=s.checkResult),ra()}function yr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var oa="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var xh=Be(Qe(),1);var wh=Symbol("instance"),LS=Symbol("abortCtrl"),na=Symbol("cacheResult"),No=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Oo.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},vo=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function C_(s){return typeof s=="object"&&s&&"then"in s}var Do=new Map;function pe(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let c=Do.get(t)||[];Do.has(t)||Do.set(t,c),c.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...c){let l=this;if(e.context&&(l=H.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[na]:Promise.resolve(l[na]);l.state instanceof No&&l.state.action==e.abortAction&&l.state.abort(l);let h=null;Array.isArray(s)?s.length==0?l.state instanceof No&&l.state.abort(l):(typeof l.state!="string"||!s.includes(l.state))&&(h=new vo(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s.join("|")}`)):s!==l.state&&(h=new vo(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s}`));let u=C=>{if(e.fail&&e.fail.call(this,C),e.sync){if(e.ignoreError)return C;throw C}else return e.ignoreError?Promise.resolve(C):Promise.reject(C)};if(h)return u(h);let f=l.state,g=new No(f,i,n);Oo.call(l,g);let D=C=>{var M;return l[na]=C,g.aborted||(Oo.call(l,i),(M=e.success)===null||M===void 0||M.call(this,l[na])),C},_=C=>(Oo.call(l,f,C),u(C));try{let C=a.apply(this,c);return C_(C)?C.then(D).catch(_):e.sync?D(C):Promise.resolve(D(C))}catch(C){return _(new vo(l._state,`${l.name} ${n} from ${s} to ${i} failed: ${C}`,C instanceof Error?C:new Error(String(C))))}}}}var y_=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 Oo(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(H.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var H=class s extends xh.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=s.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[wh];r?this.name=r.name+"-"+r.count++:t[wh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=Do.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);Do.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:h,action:u})=>{typeof l=="string"?r.push({from:l,to:h,action:u}):l.length?l.forEach(f=>{r.push({from:f,to:h,action:u})}):o.push({to:h,action:u})}),r.forEach(({from:l,to:h,action:u})=>{n.add(l),n.add(h),n.add(u+"ing"),t.add(`${l} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${l} : ${u} \u{1F534}`)}),o.forEach(({to:l,action:h})=>{t.add(`${h}ing --> ${l} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==l&&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=s.instances.get(i),e||s.instances.set(i,e=new s(i,void 0,Object.create(s.prototype)))):(e=s.instances2.get(i),e||s.instances2.set(i,e=new s(i.constructor.name,void 0,Object.create(s.prototype)))),e}static getState(i){var e;return(e=s.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){y_(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Oo.call(this,i)}};H.STATECHANGED="stateChanged";H.UPDATEAFSM="updateAFSM";H.INIT="[*]";H.ON="on";H.OFF="off";H.instances=new Map;H.instances2=new WeakMap;var xd=typeof window!="undefined",Uh=xd&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},b_=xd&&window.cancelIdleCallback||function(s){clearTimeout(s)},Vh=xd&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ve=class ve{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=v({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=v({delay:1e4,count:0},t):i==="raf"?t=v({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=v({delay:2e3,count:0,backgroundTask:!0},t);let r=w(v({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,ve.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){ve.sharedWorker||(ve.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
12
14
|
const timers = new Map();
|
|
13
15
|
self.onmessage = function(e) {
|
|
14
16
|
const { taskId, delay, type } = e.data;
|
|
@@ -21,14 +23,14 @@ Refer to: ${fh("en",d)}
|
|
|
21
23
|
timers.delete(taskId);
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
|
-
`],{type:"application/javascript"}))),
|
|
25
|
-
${r.stack}`)),this.sendRequest(Yr(this._configs.sdkAppId,xi.LOG),o)}sendRequest(t,e){setTimeout(()=>Zr({url:t,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},Be=new Fl;var ko=new WeakMap;function Wi({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let d=Li({retryFunction:n.value,settings:i,onError({error:p,retry:m,reject:g,retryFuncArgs:I}){var S;t?t.call(this,p,()=>{var N;(N=ko.get(o))!=null&&N.has(s)?m():g(p)},g,I):(S=ko.get(o))!=null&&S.has(s)?m():g(p)},onRetrying(p,m){var g;ki(e)&&e.call(this,p,m),(g=ko.get(o))!=null&&g.has(s)&&(ko.get(o).get(s).stopRetry=m)},onRetryFailed:r});return n.value=function(...p){let m=ko.get(o);return m?m.set(s,{args:p}):ko.set(o,new Map([[s,{args:p}]])),d.apply(this,p).finally(()=>{var g;return(g=ko.get(o))==null?void 0:g.delete(s)})},n}}var $r=class extends ne{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;u(this,"id");u(this,"element",null);u(this,"track");u(this,"url");u(this,"attr");u(this,"mode");u(this,"muted");u(this,"_log");u(this,"_pausedRetryCount");u(this,"_isElementPlayingFired",!1);u(this,"_interval");u(this,"_delayDestroyTimeoutId",0);u(this,"_playSuccessResolve");u(this,"_isReplayByRecreateMediaStreamCalled",!1);u(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Hu,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-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 A(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,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=dt({key:ct.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new he({code:te.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Vi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(D.ENDED),this._interval>0&&At.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():sl?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 xt(this.element,this.element).add(D.PLAYING,e).add(D.ENDED,e).add(D.PAUSE,e).add(D.ERROR,e).add(D.LOADEDDATA,e).add(D.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);Fr==null||Fr.create(e,e).add(D.ENDED,r).add(D.MUTE,r).add(D.UNMUTE,r),e.readyState===D.ENDED&&this.handleTrackEvent({type:D.ENDED}),e.muted&&this.handleTrackEvent({type:D.MUTE})}}bindAutoPlayEvent(){H.on(L.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&mt(e)}unbindEvents(){this.element&&mt(this.element),this.unbindTrackEvents(),H.off(L.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case D.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(D.PLAYING),this._interval&&(At.clearTask(this._interval),this._interval=-1);break;case D.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(D.ENDED);break;case D.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(D.PAUSE),lt&&(this._interval=At.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case D.ERROR:if(this.element&&this.element.error){this.handlePaused(D.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),Be.uploadEvent({log:`stat-${this.kind}-${Xr.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),rl||tl?this.emit(Qe.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case D.LOADEDDATA:this.kind===D.VIDEO&&this.emit(Qe.LOADED_DATA);break;case D.LOADEDMETADATA:this.kind===D.VIDEO&&this.emit(Qe.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),Be.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Y.addSuccessEvent({key:this.kind===D.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),Be.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Y.addFailedEvent({key:this.kind===D.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(Qe.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{kn(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,d;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),o((d=this.element)==null?void 0:d.error)}),kn(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((n=this.element)==null?void 0:n.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case D.ENDED:this.handleStopped(D.ENDED);break;case D.MUTE:this.handlePaused(D.MUTE);break;case D.UNMUTE:this._isElementPlayingFired?this.handlePlaying(D.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var r;(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(Qe.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};X([Wi({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],$r.prototype,"doReplayByRecreateMediaStream",1),X([qe([],"PLAYING",{sync:!0})],$r.prototype,"handlePlaying",1),X([qe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],$r.prototype,"handlePaused",1),X([qe([],"STOPPED",{sync:!0})],$r.prototype,"handleStopped",1);var di="trtc_autoplay",$l=`${di}_mask`,Fs=`${di}_wrapper`,Hh=`${di}_header`,Bl=`${di}_content`,rd=`${di}_action_wrapper`,Hl=`${di}_question`,Wl=`${di}_collapse`,id=`${di}_action_confirm`,Wh=`${di}_detail`,Gh="#2473E8",jl="dialog",O_=`${jl}-show`,x_=`${jl}-1`,P_=`${jl}-2`,jh=!1,ql=()=>!!document.querySelector(`.${Fs}`),Jh=`${Mr}/${fr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,qh=`<br><a href='${Jh}' target='_blank'>${fr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,k_=`${fr()?`\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${qh}`:`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. ${qh}`}`,Gl=class{constructor(){u(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");u(this,"_dialogNode",null);u(this,"_bodyPosition","");u(this,"_showDetail",!1);u(this,"_isCollapseClicked",!1);u(this,"_isQuestionClicked",!1);if(fr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!jh){let t=document.createElement("style");t.innerHTML=`.${$l}{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;}.${$l} div:not(.${rd}){display:block !important;}.${Fs}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${Fs} a{color:${Gh};}.${Hh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Bl}{margin:8px 0;}.${rd}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Wl}{margin-right:auto;cursor:pointer}.${Hl}{height:100%;line-height:16px;cursor:pointer;}.${id}{margin-left:8px;color:#fff;background:${Gh};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${id}:hover{opacity:0.9;}.${Wl},.${id},.${Bl},.${Hl}{font-size:14px;}@media screen and (max-width:750px){.${Fs}{width:80vw;}}`,document.head.appendChild(t),jh=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${$l}"><div class='${Fs}'><div class='${Hh}'>${location.host}</div><div class='${Bl}'>${this.content}</div><div class='${Wh}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${k_}</div><div class='${rd}'></div></div></div>`.trim();let e=document.createElement("button");e.className=id,e.innerText=fr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=Hl,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
26
|
+
`],{type:"application/javascript"}))),ve.sharedWorker.onmessage=e=>{var t;if(e.data.type==="tick"){let r=ve.workerTasks.get(e.data.taskId);r&&(ve.isBreakLoop(r)?((t=ve.sharedWorker)==null||t.postMessage({type:"stop",taskId:r.taskID}),ve.workerTasks.delete(r.taskID)):(r.callback(),r.loopCount+=1))}}),ve.workerTasks.set(i.taskID,i),ve.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!ve.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=x(),t,r=()=>{if(t=x()-e,t>=i.delay&&(e=x()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ve.isBreakLoop(i))return i.ricID=Uh(r,{timeout:i.delay})};return i.ricID=Uh(r,{timeout:i.delay})}static raf(i){let e=x(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=x()-e,e=x(),i.callback(),i.loopCount+=1,ve.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=x()-e,t>=i.delay&&(e=x()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ve.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=x()-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}=this.taskMap.get(i);return e&&clearInterval(e),t&&clearTimeout(t),r&&Vh&&Vh(r),o&&b_(o),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.hasTask(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};d(ve,"taskMap",new Map),d(ve,"currentTaskID",1),d(ve,"sharedWorker",null),d(ve,"workerTasks",new Map);var wd=ve,re=wd;var GS={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 le={LOADED_DATA:m.LOADEDDATA,LOADED_META_DATA:m.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var ii={};fi(ii,{create:()=>Ge,remove:()=>be});var Mo=new WeakMap;function Ge(s,i){Mo.has(s)||Mo.set(s,[]);let e=Mo.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 be(s){let i=Mo.get(s);i&&(i.forEach(e=>e()),Mo.delete(s))}var Ud=class{constructor(){d(this,"_roomIdMap",new Map);d(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Me,env:_i.QCLOUD,browserVersion:jt.name+jt.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){Lt||!R.isAbleToUpload||this._configs.env===_i.QCLOUD&&this.uploadEventToKibana(w(v({},i),{result:"success"}))}logFailedEvent(i){if(Lt||!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===_i.QCLOUD&&this.uploadEventToKibana(w(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:cn(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Me,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
|
|
27
|
+
${t.stack}`)),this.sendRequest(Ei(this._configs.sdkAppId,Gi.LOG),r)}sendRequest(i,e){setTimeout(()=>Ai({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},te=new Ud;var ri=new WeakMap;function ot({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=qt({retryFunction:n.value,settings:s,onError({error:c,retry:l,reject:h,retryFuncArgs:u}){var f;i?i.call(this,c,()=>{var g;(g=ri.get(r))!=null&&g.has(o)?l():h(c)},h,u):(f=ri.get(r))!=null&&f.has(o)?l():h(c)},onRetrying(c,l){var h;Jt(e)&&e.call(this,c,l),(h=ri.get(r))!=null&&h.has(o)&&(ri.get(r).get(o).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=ri.get(r);return l?l.set(o,{args:c}):ri.set(r,new Map([[o,{args:c}]])),a.apply(this,c).finally(()=>{var h;return(h=ri.get(r))==null?void 0:h.delete(o)})},n}}function ko({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var c,l;if((c=ri.get(t))!=null&&c.has(s)){let{stopRetry:h,args:u}=ri.get(t).get(s),f=!0;if(e){for(let g of u)if(!a.find(D=>D===g)){f=!1;break}}f&&(i&&i.apply(this,a),h&&h(),(l=ri.get(t))==null||l.delete(s))}return n.apply(this,a)},o}}var si=class extends H{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;d(this,"id");d(this,"element",null);d(this,"track");d(this,"url");d(this,"attr");d(this,"mode");d(this,"muted");d(this,"_log");d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=xc,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 p(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=L({key:k.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new y({code:S.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!zi?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&&re.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():id?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 Ge(this.element,this.element).add(m.PLAYING,e).add(m.ENDED,e).add(m.PAUSE,e).add(m.ERROR,e).add(m.LOADEDDATA,e).add(m.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);ii==null||ii.create(e,e).add(m.ENDED,t).add(m.MUTE,t).add(m.UNMUTE,t),e.readyState===m.ENDED&&this.handleTrackEvent({type:m.ENDED}),e.muted&&this.handleTrackEvent({type:m.MUTE})}}bindAutoPlayEvent(){T.on(I.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&be(e)}unbindEvents(){this.element&&be(this.element),this.unbindTrackEvents(),T.off(I.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case m.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(m.PLAYING),this._interval&&(re.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),Se&&(this._interval=re.run("timeout",()=>{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}`),te.uploadEvent({log:`stat-${this.kind}-${rt.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Kc||Yc?this.emit(le.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case m.LOADEDDATA:this.kind===m.VIDEO&&this.emit(le.LOADED_DATA);break;case m.LOADEDMETADATA:this.kind===m.VIDEO&&this.emit(le.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),te.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),N.addSuccessEvent({key:this.kind===m.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),te.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(le.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Ii(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)}),Ii(5e3).then(()=>{var o,n;(!this.isPlaying||(o=this.element)!=null&&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):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(le.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};b([ot({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],si.prototype,"doReplayByRecreateMediaStream",1),b([pe([],"PLAYING",{sync:!0})],si.prototype,"handlePlaying",1),b([pe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],si.prototype,"handlePaused",1),b([pe([],"STOPPED",{sync:!0})],si.prototype,"handleStopped",1);var Mi="trtc_autoplay",Vd=`${Mi}_mask`,_s=`${Mi}_wrapper`,Bh=`${Mi}_header`,Bd=`${Mi}_content`,aa=`${Mi}_action_wrapper`,Fd=`${Mi}_question`,$d=`${Mi}_collapse`,ca=`${Mi}_action_confirm`,Fh=`${Mi}_detail`,$h="#2473E8",Gd="dialog",v_=`${Gd}-show`,D_=`${Gd}-1`,O_=`${Gd}-2`,Hh=!1,Wd=()=>!!document.querySelector(`.${_s}`),Wh=`${Ht}/${Nt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Gh=`<br><a href='${Wh}' target='_blank'>${Nt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,M_=`${Nt()?`\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${Gh}`:`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. ${Gh}`}`,Hd=class{constructor(){d(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");d(this,"_dialogNode",null);d(this,"_bodyPosition","");d(this,"_showDetail",!1);d(this,"_isCollapseClicked",!1);d(this,"_isQuestionClicked",!1);if(Nt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Hh){let i=document.createElement("style");i.innerHTML=`.${Vd}{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;}.${Vd} div:not(.${aa}){display:block !important;}.${_s}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${_s} a{color:${$h};}.${Bh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Bd}{margin:8px 0;}.${aa}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${$d}{margin-right:auto;cursor:pointer}.${Fd}{height:100%;line-height:16px;cursor:pointer;}.${ca}{margin-left:8px;color:#fff;background:${$h};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${ca}:hover{opacity:0.9;}.${$d},.${ca},.${Bd},.${Fd}{font-size:14px;}@media screen and (max-width:750px){.${_s}{width:80vw;}}`,document.head.appendChild(i),Hh=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${Vd}"><div class='${_s}'><div class='${Bh}'>${location.host}</div><div class='${Bd}'>${this.content}</div><div class='${Fh}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${M_}</div><div class='${aa}'></div></div></div>`.trim();let e=document.createElement("button");e.className=ca,e.innerText=Nt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Fd,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
26
28
|
<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">
|
|
27
29
|
<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"/>
|
|
28
30
|
<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"/>
|
|
29
31
|
<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"/>
|
|
30
32
|
</svg>
|
|
31
|
-
`,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Wl,o.innerText=`${fr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${rd}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){ql()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${Fs}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",$.info("show autoplay dialog"),Be.uploadEvent({log:O_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){$.warn("confirm clicked, try resume stream"),H.emit(L.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${Wh}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||Be.uploadEvent({log:x_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Jh,"_blank"),this._isQuestionClicked||Be.uploadEvent({log:P_}),this._isQuestionClicked=!0}},zh=Gl;var Zt=class extends $r{constructor(e){super(e,D.VIDEO);u(this,"stat",{});u(this,"_calculateTimeout",-1);u(this,"viewMirror",!1);u(this,"objectFit");u(this,"container");u(this,"canvas");u(this,"canvasTrack");this.mode=e.canvas?1:0,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 r;let e=document.createElement(D.VIDEO);this.track&&this.mode!==2&&(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,(r=this.container)==null||r.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 r;this.container=e,(this.track||this.canvasTrack)&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(D.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(D.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var r;super.handleTrackEvent(e),e.type===D.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0)}handleElementEvent(e){var o;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===D.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this._pausedRetryCount>0&&!ql()&&(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 s=this.element.style.transform;r===D.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=s.replace("scaleX(-1)",""):r===D.LEAVE_PICTURE_IN_PICTURE&&!s.includes("scaleX")&&(this.element.style.transform=`${s} scaleX(-1)`)}}setCanvas(e,r=1){var o,s,n,d;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((d=this.container)==null||d.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}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}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(Qe.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(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(ci()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,r&&(this.stat.fps=Math.round((n.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var d;return(d=this.element)==null?void 0:d.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function Lo(i,t){return A(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),$.info("worklet addModule success")}catch(e){throw $.info(`worklet addModule catch error. ${e.message}`),e}})}var ha;typeof AudioContext!="undefined"?ha=AudioContext:typeof webkitAudioContext!="undefined"?ha=webkitAudioContext:typeof mozAudioContext!="undefined"&&(ha=mozAudioContext);var Ir,Xh=-1;Qh();function Qh(){try{if(Ir)return;Ir=new ha({sampleRate:48e3}),Ir.onstatechange=()=>{$.info(`context state: ${Ir.state}${Ir.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),$s()},clearTimeout(Xh)}catch(i){$.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof ha}`),Xh=setTimeout(Qh,1e3)}}var $s=()=>{Ir.state==="suspended"?(Bs(),document.addEventListener("click",$s)):Ir.state==="interrupted"?Bs():(document.removeEventListener("visibilitychange",$s),document.removeEventListener("click",$s))},Jl=0,zl=-1;function Bs(){return new Promise((i,t)=>{if(Ir.state==="running")return i();Date.now()-Jl<1e3?(clearTimeout(zl),zl=setTimeout(()=>{Jl=Date.now(),Ir.resume().then(i,t)},1e3)):(clearTimeout(zl),Jl=Date.now(),Ir.resume().then(i,t))}).catch(i=>{$.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",$s)})}document.addEventListener("click",$s);var et=i=>Ir;var Pt=class{constructor(){u(this,"node");u(this,"node2");u(this,"pre",new Set);u(this,"next",new Set);u(this,"context");u(this,"connectedNodes",new Set)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var e;if(t!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=t,this.preNodeReconnect(),this.reconnect()}catch(r){$.error(r)}}setNode(t,e){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,e&&(this.node2=e),this.preNodeReconnect(),this.reconnect(),Y.addSuccessEvent({key:502701})}catch(o){$.error(o),Y.addFailedEvent({key:502701,error:o})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),Y.addSuccessEvent({key:502702})}catch(e){$.error(e),Y.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>{t._connect(e.node)||e.connectNext(t)})}_connect(t){return!this.node||!t?!1:((this.node2||this.node).connect(t),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...t){return t.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},od=class extends Pt{constructor(e=256){super();this.fftSize=e;u(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(),r=1,o=0,s=0,n=`M${o},${s}`;for(let d=0;d<e.length;d++)s=e[d]/128*100/2,n+=`L${o},${s}`,o+=r;return n}},fa=class{constructor(){u(this,"source",new Pt);u(this,"gain",new Pt);u(this,"destination",new Pt)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(et().createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.replaceNode(Xl(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},Hs=class extends fa{constructor(e){super();this.context=e;u(this,"denoiser",new Pt);u(this,"voiceChanger",new Pt);this.source.pipeTo(this.denoiser.pipeTo(this.voiceChanger.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.voiceChanger.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.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.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}},sd=class{constructor(){u(this,"audioContext",et("audio-mixer"));u(this,"destination",this.audioContext.createMediaStreamDestination());u(this,"inputs",new Set);u(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Yh=new WeakMap;function Xl(i){let t=Yh.get(i);if(t)return t;let e=et();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return Yh.set(i,t),t}var Kt=class Kt{constructor(t){u(this,"_volume",0);u(this,"_volumeDb",0);u(this,"_log");u(this,"_scriptProcessorNode",null);u(this,"_audioWorkletNode",null);u(this,"_interval",200);u(this,"ready",this.preload());let{log:e}=t;this._log=e,H.on(L.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Kt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Kt.workletReady){let t='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,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Kt.workletReady=Lo(Kt.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return Kt.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Kt.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{Kt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),Be.logFailedEvent({userId:this._log.userId,eventType:Xr.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=et("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{Kt.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}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,H.off(L.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};u(Kt,"lastMessageTime",0),u(Kt,"audioContext",et("volume-meter")),u(Kt,"workletReady");var nd=Kt,ad=class extends Pt{constructor(e){super();u(this,"_volumeMeter");this._volumeMeter=new nd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return A(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}},cd=nd;var tf=Oi(Bi(),1);var Kh=i=>t=>t.deviceId===i;var ga=class{constructor(t,e="Input"){u(this,"kind");u(this,"type");u(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Ws(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(Kh(o.deviceId))){let s=`${this.kind}${this.type}Added`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(Kh(o.deviceId))){let s=`${this.kind}${this.type}Removed`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},Ql=class extends tf.EventEmitter{constructor(){super();u(this,"audioInputs",new ga(D.AUDIO));u(this,"videoInputs",new ga(D.VIDEO));u(this,"audioOutputs",new ga(D.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||At.run("interval",()=>{this.update()},{delay:1e4}))}init(){dd().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return A(this,arguments,function*(e=0){let r=yield dd(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},Tt=yn||ps?null:new Ql;function Ws(i){return i.deviceId===i.groupId&&i.groupId===""}function dd(){return A(this,arguments,function*(i=0){if(ai()||!Kc())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{Ws(r)&&(r.kind===D.AUDIO_INPUT?e.audio=!0:r.kind===D.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e),e.audio&&Bs()}catch(o){$.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&Yl.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Jt(i=!1){return Tt.update(i?1:0).then(t=>t.audioInputs.devices)}function er(i=!1){return Tt.update(i?2:0).then(t=>t.videoInputs.devices)}var ef=!1;function rf(){return A(this,null,function*(){try{ef||(ef=!0,$.info(`speakers:${(yield Gi()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function Gi(i=!1){return A(this,null,function*(){return(lt||Mt)&&(i=!1),Tt.update(i?1:0).then(t=>t.audioOutputs.devices)})}var Yl=new Set;function of(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.VIDEO_INPUT}`;return!!Yl.has(r)}function sf(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.AUDIO_INPUT}`;return!!Yl.has(r)}function Zl(i,t){return A(this,null,function*(){let r=(yield Jt()).find(o=>o.deviceId===yo);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function nf(s){return A(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===D.AUDIO&&i===yo?yield Zl(e,r):!0})}var ud,Kl=class extends fa{constructor(e){super();this.log=e;u(this,"volumeMeter");u(this,"volumeDestination");u(this,"analyser",new od);this.volumeMeter=new ad({log:this.log}),this.volumeDestination=new Pt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},ld=class i extends $r{constructor(e){super(e,D.AUDIO);u(this,"_outputDeviceId");u(this,"_volume",1);u(this,"_destination",et("player").createMediaStreamDestination());u(this,"pipeline");u(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Kl(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if(($i==="15.2"||$i==="15.3"||$i==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=ud||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,je(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===ud&&(ud=void 0),this.bindElementEvents()}play(e){return A(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(et("player").createAnalyser()),rf(),Ft(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return A(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,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()}},md=class extends ld{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(Qe.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},pd=class extends ld{constructor(e){super(e);u(this,"_sourceElement");u(this,"_output",new Pt);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(et("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(Qe.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.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.element.volume=e):this._log.info("set element volume: no element"):lt||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),mt(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&Vi&&(ud=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Uo=class extends ne{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?pd:Zt}){var d;super();u(this,"id",Yn());u(this,"userId","");u(this,"isRemote");u(this,"mediaType");u(this,"room");u(this,"user");u(this,"_log");u(this,"_inputTrack");u(this,"_outputTrack");u(this,"isPlayCalled");u(this,"container",null);u(this,"player");u(this,"subVideoPlayerMap");u(this,"muted",!1);u(this,"abortCtrl");u(this,"objectFit","cover");u(this,"mirror");u(this,"isScreen",!1);u(this,"manager");u(this,"trackSettings");u(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=$.createLogger({id:`${this.kind[0]}t`,userId:(d=s||this.room)==null?void 0:d.userId,remoteUserId:this instanceof ui?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof ui}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(Qe.PLAYER_STATE_CHANGED,p=>{H.emit(L.PLAYER_STATE_CHANGED,ee({track:this},p)),this.emit("player-state-changed",p)}),this.kind===D.VIDEO&&(this.player.on(Qe.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Qe.LOADED_DATA),H.emit(L.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Qe.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Qe.LOADED_META_DATA)}),this.player.on(Qe.MEDIA_TRACK_CHANGED,p=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(g=>g.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(Qe.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||$}get kind(){return this.mediaType===1?D.AUDIO:D.VIDEO}get strMediaType(){return this.mediaType===4?D.VIDEO:this.mediaType===2?D.SCREEN:D.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,r){return A(this,null,function*(){let o=st(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!V(r.muted)&&this.setPlayerMute(r.muted),r&&!V(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Zt&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),st(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!V(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===D.VIDEO)&&this.setPlayerMute(!0),r&&!V(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Zt&&(this.player.setObjectFit(this.objectFit),r&&!V(r.poster)&&this.player.setPoster(r.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof Zt&&this.player.setContainer(o)),H.emit(L.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),st(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==D.VIDEO||V(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(nt(this.mirror)){o.setViewMirror(this.mirror),s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return A(this,null,function*(){if(!this._outputTrack||this.kind===D.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var d;e.find(p=>n===p)||(s.stop(),(d=this.subVideoPlayerMap)==null||d.delete(n))});for(let[s,n]of e.entries()){let d=this.subVideoPlayerMap.get(n);d?r&&(V(r.objectFit)||d.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new Zt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.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(Ju(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return A(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),H.emit(e?L.TRACK_MUTED:L.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){xt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){mt(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.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(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Ju(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(e){if(this.room&&this.room.enableAutoPlayDialog)new zh;else{let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof Zt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,d,p;if(this.isFirstVideoFrameEmitted)return;let r=(n=this.mediaTrack)==null?void 0:n.getSettings(),o=(r==null?void 0:r.width)||((d=this.player.element)==null?void 0:d.videoWidth)||0,s=(r==null?void 0:r.height)||((p=this.player.element)==null?void 0:p.videoHeight)||0;e===Qe.LOADED_META_DATA&&!o&&!s||(e===Qe.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,this.emit("first-video-frame",{width:o,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}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`)}};X([qe([],ne.INIT,{sync:!0})],Uo.prototype,"close",1);var L_=Object.prototype.hasOwnProperty,{toString:OR}=Object.prototype;function U_(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Gt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(L_.call(i,t))return!1;return!0}}return!1}var Ea=U_;var V_=function(i){return A(this,null,function*(){let t=$_(i);$.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Jt(),$.info(`microphones: ${ir(e.map(s=>Ee(ee({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield er(),$.info(`cameras: ${ir(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return Pl&&s.getTracks().forEach(n=>{$.info(`${n.kind} capabilities: ${ir(n.getCapabilities(),{keysToInclude:Ec})}`)}),t.audio&&Bs(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=dt({key:ct.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=dt({key:ct.MICROPHONE_NOT_FOUND}))),new he({code:te.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},F_=Li({retryFunction:V_,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!Mt||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&af(r[0].microphoneId,!1),r[0].cameraId&&af(r[0].cameraId,!0)},onRetrying:i=>{$.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{Be.logFailedEvent({eventType:Xr.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{Be.logSuccessEvent({eventType:Xr.GET_USER_MEDIA_RETRY}),Be.uploadEvent({log:`stat-${Xr.GET_USER_MEDIA_RETRY}-success-${i}`})}});function af(i,t){return A(this,null,function*(){let r=(t?yield er():yield Jt()).find(o=>o.deviceId===i);r&&Xe(r.getCapabilities)&&$.warn(ir(r.getCapabilities(),{keysToInclude:Ec}))})}function $_(i){return{audio:B_(i),video:H_(i)}}function B_(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!Ea(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(je(i.channelCount)&&(t.channelCount=i.channelCount),nt(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),nt(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),nt(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),Ea(t)?!0:t)}function H_(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!Ea(e)?e:(i.width&&(e.width={ideal:i.width},t&&!Qt&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!Qt&&(e.height.max=i.height)),Qt&&_r&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),Ea(e)?!0:e)}var cf=F_;function ji(i){return Me((t,e)=>function(...r){return A(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function df(i){return Me((t,e)=>function(...r){return A(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function Me(i){return function(t,e,r){return r.value=i(r.value,e),r}}var uf=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&$.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{$.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var W_=0,hd=class{constructor(){u(this,"log",$.createLogger({id:`fq${++W_}`}));u(this,"isRunning",!1);u(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,n;let r=ee({},t),o=new Promise((d,p)=>{r.resolve=d,r.reject=p});return r.promise=o,e?this.length<=1?this.queue.push(r):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},lf=new WeakMap,mf=new WeakMap;function pf(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=lf.get(this)||new hd;return lf.set(this,n),n.push({fn:o,args:s,context:this},i)},r}}function fd(i){return function(t,e,r){let o=r.value,s=n=>i(...n);return r.value=function(...n){let d=mf.get(this)||new Map,p=d.get(s(n))||new hd;return d.set(s(n),p),mf.set(this,d),p.push({fn:o,args:n,context:this})},r}}function gd(i,t){return Me((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),d=_e();return Pi(n)?n.then(p=>(t?Y.addSuccessEvent({key:s,cost:_e()-d}):Y.addSuccessEvent({key:s}),p)).catch(p=>{throw Y.addFailedEvent({key:s,error:p}),p}):(Y.addSuccessEvent({key:s}),n)}catch(n){throw Y.addFailedEvent({key:s,error:n}),n}})}var Vo=class Vo extends Uo{constructor(e,r){super({mediaType:e,PlayerClass:r});u(this,"isRemote",!1);u(this,"deviceId");u(this,"groupId","");u(this,"label","");u(this,"_isRecapturing",!1);u(this,"_lastRecaptureTime",0);u(this,"_onMuteTimeoutId",-1);u(this,"_encodeCheckTimeoutId",-1);u(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){xt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){mt(e)}setStateToCapture(){}capture(e){return A(this,null,function*(){var r;try{let o=_e();H.emit(L.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.mediaTrack)==null||r.stop(),s=yield cf(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),H.emit(L.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:_e()-o}),s}catch(o){throw H.emit(L.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setInputMediaStreamTrack(e){return this.state===ne.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}publish(e,r){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),r}unpublish(){this.room&&this.room.localTracks.delete(this),H.emit(L.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return A(this,null,function*(){if(this.mediaTrack&&Vs){let{deviceId:e,groupId:r}=this.mediaTrack.getSettings(),{label:o}=this.mediaTrack;(yield nf({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),dd().then(n=>{let d=n.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===D.AUDIO&&!sf(this.mediaTrack)||this.kind===D.VIDEO&&!of(this.mediaTrack)||this._isRecapturing||e&&_r&&Mt)}onTrackMuted(){if(super.onTrackMuted(),uf(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<gs){setTimeout(()=>this.onTrackMuted(),gs);return}this._onMuteTimeoutId=setTimeout(()=>A(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((lt||at)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return A(this,null,function*(){if(Ft(Vo.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<gs){setTimeout(()=>this.onTrackEnded(),gs);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return A(this,null,function*(){var o;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(o=this._inputTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Jt():yield er()).find(d=>d.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),H.emit(L.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),H.emit(L.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return A(this,null,function*(){let e=this instanceof Sr;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(_a.get(r)||0)+1;if(_a.set(r,o),o>=3){let s=e?(yield er()).find(n=>!_a.has(n.deviceId)):(yield Jt()).find(n=>!_a.has(n.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};X([qe(ne.INIT,"capture",{ignoreError:!0,sync:!0})],Vo.prototype,"setStateToCapture",1),X([pf()],Vo.prototype,"capture",1),X([qe("capture","publish",{ignoreError:!0,success(){var r,o;this.room.localTracks.add(this),H.emit(L.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,d;if(!((((d=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:d.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let p=this.kind===D.AUDIO,m=this.stat.bytesSent>0;Y[m?"addSuccessEvent":"addFailedEvent"]({key:p?503700:513702}),m||(Y.addEnum({key:p?503701:513703,value:Xn()}),Be.uploadEvent({log:`stat-encode-failed-${this.kind}-${zn()||Co()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let r="error";if(e.cause instanceof RTCError){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===te.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),gd(521714,!1)],Vo.prototype,"publish",1),X([Me(e=>function(){return A(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),qe([],"capture",{sync:!0})],Vo.prototype,"unpublish",1);var ui=Vo,_a=new Map;H.on(L.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&_a.delete(i.track.deviceId)});var li=class i extends ui{constructor(e){super(1,md);u(this,"mediaType",1);u(this,"volume",0);u(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});u(this,"playerMuted",!0);u(this,"pipeline");u(this,"earMonitorGainNode",new Pt);u(this,"_output",new Pt);u(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Hs(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode.pipeTo(this._output),this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return cd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return A(this,null,function*(){let r=this.trackSettings||{};Y.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),Y.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),Y.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.replaceSource(e),yield Ft(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!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:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return A(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===yo){if(yield Zl(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}),H.emit(L.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){Tt&&!Tt.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Tt.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),tt(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield Jt();r[0]?this.recapture(r[0].deviceId):Tt.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return A(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=!1;!V(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,n=!0),!V(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,n=!0),!V(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,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&&Y.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),lt&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(et().createGain()),this._output.setNode(et().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){if(!this._inputTrack)return;let r=this._inputTrack.getConstraints();return r.noiseSuppression=e,this._inputTrack.applyConstraints(r).catch(o=>this._log.warn(`${e?"enable":"disable"} ANS failed `,o))}addDenoiser(e){var r;if(ei<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}Y.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}close(){this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Tt.off("audioInputAdded",this.handleMicrophoneAdded,this),Tt.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Ft(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Jt()).find(s=>s.deviceId!==e);if(o)yield Ft(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Fo=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let n=t;n<=e;n++){let d=this.dataView.getInt8(n);switch(d){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),d==0?o++:o=0,r.push(d);break;default:o=0,r.push(d);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let n=t;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:o++,r.push(this.dataView.getInt8(n));break;case 3:o!==2&&r.push(this.dataView.getInt8(n)),o=0;break;default:r.push(this.dataView.getInt8(n)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)t+=255;else{t+=n;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var Ed=class{constructor(){u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let d=0;d<r;d++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Fo(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let n=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),d=n.reduce((S,N)=>S+N.dataView.byteLength,0),p=new ArrayBuffer(d+t.data.byteLength),m=new DataView(p),g=new DataView(t.data),I=0;for(let S=0;S<n.length;S++)for(let N=0;N<n[S].dataView.byteLength;N++)m.setInt8(I++,n[S].dataView.getInt8(N));for(let S=0;S<t.data.byteLength;S++)m.setInt8(I++,g.getInt8(S));return t.data=p,n.length}return 0}};var $o=class $o extends ui{constructor(e,r=4){super(r,Zt);u(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});u(this,"avoidCropping",!1);u(this,"_scaleResolutionDownBy");u(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});u(this,"small");u(this,"isNeedToSetBandwidth");u(this,"muteImage");u(this,"manager");u(this,"_seiCodec",new Ed);this.manager=e;let o=()=>{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(Ee(ee({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!Vs||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return A(this,null,function*(){var r,o,s;if(we(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Ft($o.prototype,this,"setMute").call(this,!1)}else yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0,Ft($o.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:n,customSource:s})}setProfile(e){let r=ee({},e),o=r.width>r.height;r.width*r.height<=160*120&&at&&Kr&&(this.log.warn(`resolution is ${r.width}*${r.height}, fallback to 240*180`),r.width=o?240:180,r.height=o?180:240,r.bitrate=Math.max(r.bitrate,150)),r.width*r.height>1280*720&&nl&&(r.width=o?1280:720,r.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),this.avoidCropping&&(Kr||Qt)&&!al()&&r.width*r.height<=640*360&&r.width/r.height===16/9&&(this._scaleResolutionDownBy=1280/r.width,r.width=1280,r.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(Ee(ee({},this.profile),{width:1920,height:1080})))}applyProfile(){return A(this,null,function*(){var o;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)&&(Yt===16?yield this.recapture(this.deviceId):(yield(o=this.mediaTrack)==null?void 0:o.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:D.VIDEO,videoType:D.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return Vs&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){if(this._scaleResolutionDownBy)return this._scaleResolutionDownBy;let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Sc()&&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 r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return A(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.mediaTrack.stop(),yield this.capture(r),H.emit(L.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}listenDeviceChange(){Tt&&!Tt.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Tt.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),tt(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield er();r[0]?this.recapture(r[0].deviceId):Tt.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return A(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return V(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){Tt.off("videoInputAdded",this.handleCameraAdded,this),Tt.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Ft($o.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield er()).find(s=>s.deviceId!==e);if(o)yield Ft($o.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};X([ji(function(e){this.setContentHint(e.contentHint||"motion")})],$o.prototype,"capture",1);var Sr=$o;var gf=Yn();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:gf,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var q_=function(i){return A(this,null,function*(){let t=null,e=X_(i);$.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(Ms&&ei<74||Mt||Qt)&&$.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){$.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield J_(o,i.captureElement))}if(i.audio){let s=z_(i);$.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function J_(i,t){return A(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&Xe(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===gf))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){$.warn(`cropTo target failed ${r}`)}})}function z_(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return V(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function X_(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Mt?{max:i.width}:{ideal:i.width,max:i.width},height:Mt?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var Ef=q_;var qi=class extends Sr{constructor(e){super(e,2);u(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});u(this,"objectFit","contain");u(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(g){return A(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:d,captureElement:p,preferDisplaySurface:m}){try{let I;return d||n?(I=new MediaStream,d&&I.addTrack(d),n&&I.addTrack(n)):I=yield Ef({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:p,preferDisplaySurface:m}),yield this.setInputMediaStreamTrack(I.getVideoTracks()[0]),I}catch(I){throw this.log.error(`getDisplayMedia error observed ${I}`),I instanceof he?I:new he({code:te.INITIALIZE_FAILED,name:I.name,message:I.message})}})}switchDevice(e){return A(this,null,function*(){throw new Error("Method not implemented.")})}};X([ji(function(e){this.setContentHint(e.contentHint||"detail")})],qi.prototype,"capture",1);var Bo=class extends li{constructor(t){super(t),this._log.id=`s-${this._log.id}`}};var Q_="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",tm;function Ta(i){return A(this,null,function*(){let t=et("dump");tm||(tm=Lo(t,URL.createObjectURL(new Blob([Q_],{type:"application/javascript"})))),yield tm;let e=new AudioWorkletNode(t,"dumper",{numberOfInputs:i.length,numberOfOutputs:0});return i.forEach((r,o)=>r.connect(e,0,o)),new ReadableStream({start(r){e.port.onmessage=o=>{r.enqueue(o.data)}},cancel(){i.forEach(r=>r.disconnect(e)),e.port.close()}})})}var _d=class extends sd{constructor(e){super();this.room=e;u(this,"_localAudioTrack");u(this,"_localScreenAudioTrack");u(this,"log",$.createLogger({id:"am"}));u(this,"denoiser");u(this,"voiceChanger");u(this,"mixChangedDebounce");u(this,"encodePipeline",[]);u(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 g,I;if(!this._localAudioTrack)return;let r=[],o=[];(g=this._localAudioPipline)!=null&&g.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(I=this._localAudioPipline)!=null&&I.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,n=[],d=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),p=()=>{for(let S=0;S<o.length;S++){let N=URL.createObjectURL(new Blob(n[S])),k=document.createElement("a");k.href=N,k.download=`${o[S]}.pcm`,k.style.display="none",document.body.appendChild(k),k.click(),URL.revokeObjectURL(N),k.remove()}clearTimeout(d),s.abort("download")},m=Ta(r).then(S=>S.pipeTo(new WritableStream({write(N){N.forEach((k,P)=>n[P]=n[P]?n[P].concat(k[0]):[k[0]])}}),s).catch(N=>p));return{then:m.then.bind(m),download:p}}getPCM(e){var n;if(V(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 r=new Float32Array(1920),o=0,s=new AbortController;return Ta([this._localAudioPipline.source.node]).then(d=>d.pipeTo(new WritableStream({write(p){p[0][0]&&(r.set(p[0][0],o),o+=p[0][0].length,o>=1920&&(o=0,e(r),r=new Float32Array(1920)))}}),s).catch(p=>this.log.warn(`stop getPCM reason:${p}`))),s}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!V(this._localAudioTrack)}changeInput(e){if(e instanceof Bo)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof li)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof Ho)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Bo?delete this._localScreenAudioTrack:e instanceof li?delete this._localAudioTrack:e instanceof Ho}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}removeDenoiser(e){var r;delete this.denoiser,(r=this._localAudioTrack)==null||r.removeDenoiser(e)}addVoiceChanger(e,r){var o;this.voiceChanger=[e,r],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(e,r)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}destroy(){this.close()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function _f(i=30,t=2){return Me((e,r)=>function(...o){return new Promise((s,n)=>{let d=setTimeout(()=>{let p=new he({code:te.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});$.warn(p),t===2?n(p):t===1&&s()},i*1e3);e.apply(this,o).then(s,n).finally(()=>{clearTimeout(d)})})})}var $m={};Jr($m,{Events:()=>it,Inspect:()=>or,LastSink:()=>Wo,Sink:()=>de,Subscribe:()=>Go,TimeoutError:()=>Ia,audit:()=>MT,bindCallback:()=>gT,bindNodeCallback:()=>ET,buffer:()=>sT,bufferCount:()=>oT,bufferTime:()=>QT,call:()=>Tf,catchError:()=>Lm,combineLatest:()=>Sf,concat:()=>K_,concatMap:()=>HT,concatMapTo:()=>WT,count:()=>IT,create:()=>Oe,debounce:()=>OT,debounceTime:()=>xT,defer:()=>yf,delay:()=>YT,deliver:()=>pe,dispose:()=>Td,elementAt:()=>PT,empty:()=>Aa,every:()=>FT,exhaustMap:()=>qT,exhaustMapTo:()=>JT,filter:()=>yr,find:()=>kT,findIndex:()=>LT,first:()=>UT,fromAnimationFrame:()=>hT,fromArray:()=>cT,fromEvent:()=>be,fromEventPattern:()=>dT,fromFetch:()=>uT,fromIterable:()=>lT,fromPromise:()=>Rf,fromReadableStream:()=>pT,fromReader:()=>mT,groupBy:()=>zT,identity:()=>Y_,ignoreElements:()=>bT,iif:()=>tT,inspect:()=>If,interval:()=>cm,last:()=>VT,map:()=>zi,mapTo:()=>BT,max:()=>ST,merge:()=>nm,mergeMap:()=>GT,mergeMapTo:()=>jT,min:()=>yT,never:()=>_T,nothing:()=>Fe,of:()=>aT,pairwise:()=>$T,pipe:()=>Se,race:()=>am,range:()=>fT,reduce:()=>dm,retry:()=>eI,scan:()=>km,share:()=>mi,shareReplay:()=>eT,skip:()=>vT,skipUntil:()=>CT,skipWhile:()=>bd,startWith:()=>Sa,subject:()=>It,subscribe:()=>ke,sum:()=>AT,switchMap:()=>Xi,switchMapTo:()=>pi,take:()=>Ar,takeLast:()=>RT,takeUntil:()=>Je,takeWhile:()=>vf,tap:()=>ba,throttle:()=>NT,throwError:()=>TT,timeInterval:()=>XT,timeout:()=>Fm,timer:()=>ya,toPromise:()=>ZT,toReadableStream:()=>KT,withLatestFrom:()=>iT,zip:()=>rT});function Fe(...i){}var Tf=i=>i(),Y_=i=>i;function Td(){this.dispose()}var If=()=>typeof __FASTRX_DEVTOOLS__!="undefined",Z_=1,or=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new rm(t,this,this.streamId++);return it.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Wo=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=Fe,this.error=Fe,this.next=Fe,this.dispose=Fe,this.subscribe=Fe,this.doDefer()}subscribe(t){return t instanceof or?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(Tf),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}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}},de=class extends Wo{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},Go=class extends Wo{constructor(t,e=Fe,r=Fe,o=Fe){if(super(),this._next=e,this._error=r,this._complete=o,this.then=Fe,t instanceof or){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{it.defer(s,0)}),it.create(s),it.pipe(s),this.sourceId=s.id,this.subscribe(t),it.subscribe({id:s.id,end:!0}),e==Fe?this._next=n=>it.next(s,0,n):this.next=n=>{it.next(s,0,n),e(n)},o==Fe?this._complete=()=>it.complete(s,0):this.complete=()=>{this.dispose(),it.complete(s,0),o()},r==Fe?this._error=n=>it.complete(s,0,n):this.error=n=>{this.dispose(),it.complete(s,0,n),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function Se(i,...t){return t.reduce((e,r)=>r(e),i)}function Oe(i,t,e){if(If()){let r=Object.defineProperties(Object.setPrototypeOf(i,or.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});it.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof or&&it.addSource(r,s)}return r}return i}function pe(i,t){return function(...e){return r=>{if(r instanceof or){let o=Oe(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,it.pipe(o),o}else return o=>r(new i(o,...e))}}}function Ji(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var rm=class extends de{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{it.defer(this.source,this.id)})}next(t){it.next(this.source,this.id,t),this.sink.next(t)}complete(){it.complete(this.source,this.id),this.sink.complete()}error(t){it.complete(this.source,this.id,t),this.sink.error(t)}},it={addSource(i,t){Ji("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){Ji("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){Ji("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){Ji("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){Ji("defer",{id:i.id,streamId:t})},pipe(i){Ji("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){Ji("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=Z_++),Ji("create",{name:i.toString(),id:i.id})}},Ia=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var Id=class extends Wo{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function mi(){return i=>{let t=new Id(i);if(i instanceof or){let e=Oe(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,it.pipe(e),e}return Oe(t.add.bind(t),"share",arguments)}}function nm(...i){return Oe(t=>{let e=new de(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function am(...i){return Oe(t=>{let e=new Map;i.forEach(r=>{let o=new de(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(n=>n.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function K_(...i){return Oe(t=>{let e=0,r=i.length,o=new de(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function eT(i){return t=>{let e=new Id(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},Oe(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function tT(i,t,e){return Oe(r=>i()?t(r):e(r),"iif",arguments)}function Sf(...i){return Oe(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},d=(p,m)=>{let g=new de(t);g.next=I=>{--r===0?(g.next=S=>{s[m]=S,t.next(s)},g.next(I)):s[m]=I},g.complete=n,g.subscribe(p)};i.forEach(d)},"combineLatest",arguments)}function rT(...i){return Oe(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(d,p)=>{let m=new de(t),g=[];o[p]=g,m.next=I=>{g.push(I),o.every(S=>S.length)&&t.next(o.map(S=>S.shift()))},m.complete=s,m.subscribe(d)};i.forEach(n)},"zip",arguments)}function Sa(...i){return t=>Oe((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var im=class extends de{constructor(t,...e){super(t);let r=new de(this.sink);r.next=o=>this.buffer=o,r.complete=Fe,r.subscribe(Sf(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},iT=pe(im,"withLatestFrom"),om=class extends de{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),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(t=>this.sink.next(t)),super.complete()}},oT=pe(om,"bufferCount"),sm=class extends de{constructor(t,e){super(t),this.buffer=[];let r=new de(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=Fe,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},sT=pe(sm,"buffer");var nT=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function d(g){try{m(r.next(g))}catch(I){n(I)}}function p(g){try{m(r.throw(g))}catch(I){n(I)}}function m(g){g.done?s(g.value):o(g.value).then(d,p)}m((r=r.apply(i,t||[])).next())})};function It(i){let t=arguments,e=mi()(Oe(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=Fe,e.complete=Fe,e.error=Fe,e}function yf(i){return Oe(t=>t.subscribe(i()),"defer",arguments)}var Af=i=>t=>{setTimeout(()=>i(t))},bf=i=>Af(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function aT(...i){return Oe(bf(i),"of",arguments)}function cT(i){return Oe(bf(i),"fromArray",arguments)}function cm(i){return Oe(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function ya(i,t){return Oe(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let n=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(n)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function Sd(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function dT(i,t){return Oe(Sd(i,t),"fromEventPattern",arguments)}function be(i,t){if("on"in i&&"off"in i)return Oe(Sd(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return Oe(Sd(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return Oe(Sd(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Rf(i){return Oe(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function uT(i,t){return Oe(yf(()=>Rf(fetch(i,t))),"fromFetch",arguments)}function lT(i){return Oe(Af(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function mT(i){let t=e=>nT(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return Oe(e=>{t(e)},"fromReader",arguments)}function pT(i){return Oe(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function hT(){return Oe(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function fT(i,t){return Oe((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function gT(i,t,...e){return Oe(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function ET(i,t,...e){return Oe(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function _T(){return Oe(()=>{},"never",arguments)}function TT(i){return Oe(t=>t.error(i),"throwError",arguments)}function Aa(){return Oe(i=>i.complete(),"empty",arguments)}var jo=class extends de{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},dm=pe(jo,"reduce"),IT=i=>pe(jo,"count")((t,e)=>i(e)?t+1:t,0),ST=()=>pe(jo,"max")(Math.max),yT=()=>pe(jo,"min")(Math.min),AT=()=>pe(jo,"sum")((i,t)=>i+t,0);var um=class extends de{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},yr=pe(um,"filter"),lm=class extends de{next(t){}},bT=pe(lm,"ignoreElements"),mm=class extends de{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},Ar=pe(mm,"take"),pm=class extends de{constructor(t,e){super(t);let r=new de(t);r.next=()=>t.complete(),r.complete=Td,r.subscribe(e)}},Je=pe(pm,"takeUntil"),hm=class extends de{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},vf=pe(hm,"takeWhile"),RT=i=>dm((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),fm=class extends de{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},vT=pe(fm,"skip"),gm=class extends de{constructor(t,e){super(t),t.next=Fe;let r=new de(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=Td,r.subscribe(e)}},CT=pe(gm,"skipUntil"),Em=class extends de{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},bd=pe(Em,"skipWhile"),DT={leading:!0,trailing:!1},_m=class extends de{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},yd=class extends de{constructor(t,e,r=DT){super(t),this.durationSelector=e,this.config=r,this._throttle=new _m(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=Fe,this._throttle.complete(),super.complete()}},NT=pe(yd,"throttle"),wT={leading:!1,trailing:!0},MT=i=>pe(yd,"audit")(i,wT),Tm=class extends de{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Ad=class extends de{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new Tm(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},OT=pe(Ad,"debounce"),xT=i=>pe(Ad,"debounceTime")(t=>ya(i)),Im=class extends de{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,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()}},PT=pe(Im,"elementAt"),kT=i=>t=>Ar(1)(bd(e=>!i(e))(t)),Sm=class extends de{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},LT=pe(Sm,"findIndex"),ym=class extends de{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,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()}},UT=pe(ym,"first"),Am=class extends de{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},VT=pe(Am,"last"),bm=class extends de{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,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()}},FT=pe(bm,"every");var Rm=class extends de{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},km=pe(Rm,"scan"),vm=class extends de{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},$T=pe(vm,"pairwise"),Rd=class extends de{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},zi=pe(Rd,"map"),BT=i=>pe(Rd,"mapTo")(t=>i),Gs=class extends de{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},js=class extends de{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},vd=class extends Gs{},Cd=class extends js{next(t){this.subInner(t,vd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,vd)}}},Xi=pe(Cd,"switchMap");function Md(i){return(t,e)=>i(()=>t,e)}var pi=Md(pe(Cd,"switchMapTo")),Cm=class extends Gs{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Dd=class extends js{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Cm),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},HT=pe(Dd,"concatMap"),WT=Md(pe(Dd,"concatMapTo")),Dm=class extends Gs{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Nd=class extends js{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,Dm),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},GT=pe(Nd,"mergeMap"),jT=Md(pe(Nd,"mergeMapTo")),Nm=class extends Gs{dispose(){this.context.resetNext(),super.dispose()}},wd=class extends js{next(t){this.next=Fe,this.subInner(t,Nm)}},qT=pe(wd,"exhaustMap"),JT=Md(pe(wd,"exhaustMapTo")),wm=class extends de{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=It(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},zT=pe(wm,"groupBy"),Mm=class extends de{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},XT=pe(Mm,"timeInterval"),Om=class extends de{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},QT=pe(Om,"bufferTime"),xm=class extends de{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},YT=pe(xm,"delay"),Pm=class extends de{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},Lm=pe(Pm,"catchError");var ZT=()=>i=>new Promise((t,e)=>{let r;new Go(i,o=>r=o,e,()=>t(r))}),KT=()=>i=>{let t;return new ReadableStream({start(e){t=new Go(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},ke=(i=Fe,t=Fe,e=Fe)=>r=>new Go(r,i,t,e),Um=class extends de{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},ba=pe(Um,"tap"),Vm=class extends de{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Ia(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Fm=pe(Vm,"timeout"),eI=(i=1/0)=>t=>{if(t instanceof or){let e=Oe(r=>{let o=i,s=new de(r);s.error=n=>{o-- >0?s.subscribe(t):r.error(n)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,it.pipe(e),e}else return e=>{let r=i,o=new de(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var Br=class Br extends Uo{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;u(this,"tinyId");u(this,"isRemote",!0);u(this,"jitterBufferDelay",0);u(this,"availableState");u(this,"remotePublishState");u(this,"_triggerCheckDecodeSubject",It(be(this,Br.STATE_SUBSCRIBE)));this.tinyId=r.tinyId,this.availableState=new ne(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new ne(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),Se(nm(be(this,ne.STATECHANGED),be(this.remotePublishState,ne.STATECHANGED)),zi(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),ke(p=>{this.availableState.state!==(p?ne.ON:ne.OFF)&&(this.availableState.state=p?ne.ON:ne.OFF),this.updatePlayingState(p)}));let s=Se(be(this.player,Qe.ERROR),yr(p=>p.code===MediaError.MEDIA_ERR_DECODE)),n=Se(ya(5e3),yr(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===D.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),d=Se(am(s,n),Je(be(this,ne.INIT)));Se(this._triggerCheckDecodeSubject,yr(()=>!this.ignoreDecodeError),pi(d),ke(p=>{this.reportDecodeResult(!1,p)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var r,o;return(((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Br.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===ne.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){let o=this.kind===D.AUDIO;Y[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),e||(Y.addEnum({key:o?504701:514703,value:Xn()}),Be.uploadEvent({log:`stat-decode-failed-${this.kind}-${zn()||Co()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===D.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?ne.ON:ne.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};u(Br,"STATE_SUBSCRIBE","subscribe"),X([_f(5,1)],Br.prototype,"waitHasMediaTrack",1),X([qe(ne.INIT,Br.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),H.emit(L.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),gd(521716,!1)],Br.prototype,"subscribe",1),X([qe(Br.STATE_SUBSCRIBE,ne.INIT,{sync:!0,success(){this.log.info("unsubscribed"),H.emit(L.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],Br.prototype,"unsubscribe",1);var qs=Br;var Ho=class extends qs{constructor(e,r){super(e,r,1);u(this,"volume",0);u(this,"mediaType",1);u(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return cd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var rI=[-1,-1,1,-1,-1,1,1,1],iI=[0,0,1,0,0,1,1,1];var Bt=class extends ne{constructor(e,r){super();this.context=e;u(this,"name");u(this,"input");u(this,"output");u(this,"texture");u(this,"ctx2d",null);u(this,"fbo");u(this,"width",0);u(this,"height",0);u(this,"x",0);u(this,"y",0);u(this,"program");u(this,"vertexShader");u(this,"fragmentShader");u(this,"totalFrames",0);u(this,"dropFrames",0);u(this,"matchInputSize",!0);u(this,"texCoordBuffer");u(this,"positionBuffer");u(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});u(this,"cost",0);u(this,"_canvas",null);u(this,"_image");u(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof kt){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Yt!==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 o=e.ctx;this.texCoordBuffer=this.createBuffer(iI),this.positionBuffer=this.createBuffer(rI),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof Et&&this.render(e)||this.context instanceof kt&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof Et){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.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 r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/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,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,r,o):(this.ctx2d.drawImage(e,r,o,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var I;let{totalFrames:e,x:r,y:o,width:s,height:n,name:d,cost:p}=this,m=Date.now(),g=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:m,fps:g,name:d,cost:p},ee({parent:(I=this.input)==null?void 0:I.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),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),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};X([qe(ne.INIT,"connected",{sync:!0})],Bt.prototype,"connect",1),X([qe("connected",ne.INIT,{ignoreError:!0,sync:!0})],Bt.prototype,"disconnect",1),X([qe([],"closed",{sync:!0})],Bt.prototype,"close",1);var Df=Se(cm(250),zi(()=>performance.now()),mi()),Nf=i=>t=>{let e=0,r=performance.now();Se(Df,zi(o=>(o-r)/i>>0),yr(o=>o!=e?(e=o,!0):!1))(t)},Od=i=>t=>{let e=performance.now();Se(Df,bd(r=>r-e<i),Ar(1))(t)};var sI=[0,1,1,1,0,0,1,0],qo=class extends Bt{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));u(this,"_intervalId",0);u(this,"_sequence",0);u(this,"checkGLError",!1);u(this,"checkVisibilityChange");e instanceof kt?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(sI)}start(e){this.log.info(`${this.name} start render ${e} fps`),At.clearTask(this._intervalId),this._intervalId=At.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(At.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof Et){let o=this.context.ctx.getError();o&&this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(At.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let r=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",r))};document.addEventListener("visibilitychange",r)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),At.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),At.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Js=class extends qo{constructor(e,r){super(e,r);u(this,"_videoTrack");u(this,"_muteOb");u(this,"_closedOb",be(this,"closed"));u(this,"_subscription");u(this,"_canvasContainer");Number(Fi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=be(this._videoTrack,"mute"),Se(be(this._videoTrack,"ended"),Je(this._closedOb),ke(()=>{this.context.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=Se(this._muteOb,Je(this._closedOb),pi(Od(5e3)),ke(()=>{var e;(e=this._videoTrack)!=null&&e.muted&&this.context.destroy(new he({code:te.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,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},xd=class extends Js{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var Pd=class extends Js{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?o=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Ra=class extends Bt{constructor(e,r){super(e,ee({name:"imageSource"},r));u(this,"_lastImage");u(this,"_totalFrames",0);u(this,"_autoResize",!1);u(this,"_canvasRendered");u(this,"_videoCallbackId",0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Yt===16&&(this._canvasRendered=It(),Se(this._canvasRendered,Sa(this._image),Xi(o=>o instanceof HTMLCanvasElement?be(o,"rendered"):Aa()),Je(be(this,"closed")),ke(()=>{this.update()})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),ci()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((r,o)=>{document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var d;let{width:o,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(n),{videoWidth:o,videoHeight:s}=n,!o||!s)return!1;n.width=o,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:o,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(o===this.width&&s===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:o,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=n,(d=this._lastImage)==null||d.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let p=this.context.ctx;p.texSubImage2D(p.TEXTURE_2D,0,0,0,p.RGBA,p.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let p=this.context.ctx;p.texImage2D(p.TEXTURE_2D,0,p.RGBA,p.RGBA,p.UNSIGNED_BYTE,n)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},va=class extends Ra{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",Se(be(this._player,Qe.PLAYER_STATE_CHANGED),Je(be(this,"closed")),yr(({state:s})=>s==="PLAYING"),ke(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},hi=class extends va{constructor(t,e,r){super(t,new Zt({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}};var aI=`
|
|
33
|
+
`,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=$d,r.innerText=`${Nt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${aa}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){Wd()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${_s}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",R.info("show autoplay dialog"),te.uploadEvent({log:v_}))}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(I.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${Fh}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||te.uploadEvent({log:D_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Wh,"_blank"),this._isQuestionClicked||te.uploadEvent({log:O_}),this._isQuestionClicked=!0}},Jh=Hd;var pt=class extends si{constructor(e){super(e,m.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit");d(this,"container");d(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,E(e.viewMirror)||(this.viewMirror=e.viewMirror),E(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(m.VIDEO);this.track&&this.mode!==2&&(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){var t;super.handleTrackEvent(e),e.type===m.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var r;if(this.mode===2)return;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&&!Wd()&&(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,t=1){var r,o,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((o=this.element)==null||o.remove(),(n=this.container)==null||n.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}setPoster(e){this.element&&(this.element.poster=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.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(le.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(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(yr()&&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 br(s,i){return p(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 Lo;typeof AudioContext!="undefined"?Lo=AudioContext:typeof webkitAudioContext!="undefined"?Lo=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Lo=mozAudioContext);var xt,qh=-1;jh();function jh(){try{if(xt)return;xt=new Lo({sampleRate:48e3}),xt.onstatechange=()=>{R.info(`context state: ${xt.state}${xt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),gs()},clearTimeout(qh)}catch(s){R.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof Lo}`),qh=setTimeout(jh,1e3)}}var gs=()=>{xt.state==="suspended"?(Ts(),document.addEventListener("click",gs)):xt.state==="interrupted"?Ts():(document.removeEventListener("visibilitychange",gs),document.removeEventListener("click",gs))},Jd=0,qd=-1;function Ts(){return new Promise((s,i)=>{if(xt.state==="running")return s();Date.now()-Jd<1e3?(clearTimeout(qd),qd=setTimeout(()=>{Jd=Date.now(),xt.resume().then(s,i)},1e3)):(clearTimeout(qd),Jd=Date.now(),xt.resume().then(s,i))}).catch(s=>{R.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",gs)})}document.addEventListener("click",gs);var Re=s=>xt;var We=class{constructor(){d(this,"node");d(this,"node2");d(this,"pre",new Set);d(this,"next",new Set);d(this,"context");d(this,"connectedNodes",new Set);d(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){R.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),N.addSuccessEvent({key:502701})}catch(r){R.error(r),N.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(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.node2||this.node).connect(i),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||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}},da=class extends We{constructor(e=256){super();this.fftSize=e;d(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(){d(this,"source",new We);d(this,"gain",new We);d(this,"destination",new We)}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(Re().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(jd(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}},Es=class extends Po{constructor(e){super();this.context=e;d(this,"denoiser",new We);d(this,"voiceChanger",new We);this.source.pipeTo(this.denoiser.pipeTo(this.voiceChanger.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.voiceChanger.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.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.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}},la=class{constructor(){d(this,"audioContext",Re("audio-mixer"));d(this,"destination",this.audioContext.createMediaStreamDestination());d(this,"inputs",new Set);d(this,"mixWeight",0);this.destination.channelCount=1}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]}},Xh=new WeakMap;function jd(s){let i=Xh.get(s);if(i)return i;let e=Re();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return Xh.set(s,i),i}var ft=class ft{constructor(i){d(this,"_volume",0);d(this,"_volumeDb",0);d(this,"_log");d(this,"_scriptProcessorNode",null);d(this,"_audioWorkletNode",null);d(this,"_interval",200);d(this,"ready",this.preload());let{log:e}=i;this._log=e,T.on(I.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-ft.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!ft.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,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';ft.workletReady=br(ft.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return ft.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(ft.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{ft.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||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}`),te.logFailedEvent({userId:this._log.userId,eventType:rt.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Re("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{ft.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(I.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};d(ft,"lastMessageTime",0),d(ft,"audioContext",Re("volume-meter")),d(ft,"workletReady");var ua=ft,ha=class extends We{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new ua(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return p(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}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()}}},Nr=ua;var Kh=Be(Qe(),1);var Qh=s=>i=>i.deviceId===s;var wo=class{constructor(i,e="Input"){d(this,"kind");d(this,"type");d(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&&Ss(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(Qh(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(Qh(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)}},Xd=class extends Kh.EventEmitter{constructor(){super();d(this,"audioInputs",new wo(m.AUDIO));d(this,"videoInputs",new wo(m.VIDEO));d(this,"audioOutputs",new wo(m.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||re.run("interval",()=>{this.update()},{delay:1e4}))}init(){ma().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return p(this,arguments,function*(e=0){let t=yield ma(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},ke=Js||Jr?null:new Xd;function Ss(s){return s.deviceId===s.groupId&&s.groupId===""}function ma(){return p(this,arguments,function*(s=0){if(Di()||!ta())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Ss(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),e.audio&&Ts()}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&&zd.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function nt(s=!1){return ke.update(s?1:0).then(i=>i.audioInputs.devices)}function _t(s=!1){return ke.update(s?2:0).then(i=>i.videoInputs.devices)}var Yh=!1;function Zh(){return p(this,null,function*(){try{Yh||(Yh=!0,R.info(`speakers:${(yield er()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function er(s=!1){return p(this,null,function*(){return(Se||Le)&&(s=!1),ke.update(s?1:0).then(i=>i.audioOutputs.devices)})}var zd=new Set;function em(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!!zd.has(t)}function tm(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!!zd.has(t)}function Qd(s,i){return p(this,null,function*(){let t=(yield nt()).find(r=>r.deviceId===hr);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function im(o){return p(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===m.AUDIO&&s===hr?yield Qd(e,t):!0})}var pa,Yd=class extends Po{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeDestination");d(this,"analyser",new da);this.volumeMeter=new ha({log:this.log}),this.volumeDestination=new We,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},fa=class s extends si{constructor(e){super(e,m.AUDIO);d(this,"_outputDeviceId");d(this,"_volume",1);d(this,"_destination",Re("player").createMediaStreamDestination());d(this,"pipeline");d(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Yd(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Xt==="15.2"||Xt==="15.3"||Xt==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=pa||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,Q(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===pa&&(pa=void 0),this.bindElementEvents()}play(e){return p(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(Re("player").createAnalyser()),Zh(),Fe(s.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return p(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()}},_a=class extends fa{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(le.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},ga=class extends fa{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new We);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(Re("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(le.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.element.volume=e):this._log.info("set element volume: no element"):Se||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),be(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&&zi&&(pa=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var vr=class extends H{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?ga:pt}){var a;super();d(this,"id",go());d(this,"userId","");d(this,"isRemote");d(this,"mediaType");d(this,"room");d(this,"user");d(this,"_log");d(this,"_inputTrack");d(this,"_outputTrack");d(this,"isPlayCalled");d(this,"container",null);d(this,"player");d(this,"subVideoPlayerMap");d(this,"muted",!1);d(this,"abortCtrl");d(this,"objectFit","cover");d(this,"mirror");d(this,"isScreen",!1);d(this,"manager");d(this,"trackSettings");d(this,"isFirstVideoFrameEmitted",!1);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 ki?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof ki}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(le.PLAYER_STATE_CHANGED,c=>{T.emit(I.PLAYER_STATE_CHANGED,v({track:this},c)),this.emit("player-state-changed",c)}),this.kind===m.VIDEO&&(this.player.on(le.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(le.LOADED_DATA),T.emit(I.VIDEO_LOADED_DATA,{track:this})}),this.player.on(le.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(le.LOADED_META_DATA)}),this.player.on(le.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.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(le.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 p(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 pt&&(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 pt&&(this.player.setObjectFit(this.objectFit),t&&!E(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof pt&&this.player.setContainer(r)),T.emit(I.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(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(ge(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 p(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 pt({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(Wc(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return p(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?I.TRACK_MUTED:I.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){Ge(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){be(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(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Wc(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(e){if(this.room&&this.room.enableAutoPlayDialog)new Jh;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof pt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,c;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,o=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===le.LOADED_META_DATA&&!r&&!o||(e===le.LOADED_DATA&&!r&&!o&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,this.emit("first-video-frame",{width:r,height:o,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}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([pe([],H.INIT,{sync:!0})],vr.prototype,"close",1);var k_=Object.prototype.hasOwnProperty,{toString:dR}=Object.prototype;function L_(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(He(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(k_.call(s,i))return!1;return!0}}return!1}var oi=L_;var P_=function(s){return p(this,null,function*(){let i=x_(s);R.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield nt(),R.info(`microphones: ${Tt(e.map(o=>w(v({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield _t(),R.info(`cameras: ${Tt(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return kd&&o.getTracks().forEach(n=>{R.info(`${n.kind} capabilities: ${Tt(n.getCapabilities(),{keysToInclude:En})}`)}),i.audio&&Ts(),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=L({key:k.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=L({key:k.MICROPHONE_NOT_FOUND}))),new y({code:S.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},w_=qt({retryFunction:P_,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,(!Le||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&&rm(t[0].microphoneId,!1),t[0].cameraId&&rm(t[0].cameraId,!0)},onRetrying:s=>{R.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{te.logFailedEvent({eventType:rt.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{te.logSuccessEvent({eventType:rt.GET_USER_MEDIA_RETRY}),te.uploadEvent({log:`stat-${rt.GET_USER_MEDIA_RETRY}-success-${s}`})}});function rm(s,i){return p(this,null,function*(){let t=(i?yield _t():yield nt()).find(r=>r.deviceId===s);t&&se(t.getCapabilities)&&R.warn(Tt(t.getCapabilities(),{keysToInclude:En}))})}function x_(s){return{audio:U_(s),video:V_(s)}}function U_(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!oi(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(Q(s.channelCount)&&(i.channelCount=s.channelCount),ge(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),ge(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),ge(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),oi(i)?!0:i)}function V_(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&&!oi(e)?e:(s.width&&(e.width={ideal:s.width},i&&!oe&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!oe&&(e.height.max=s.height)),oe&&kt&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),oi(e)?!0:e)}var sm=w_;function Ta(s){return z((i,e)=>function(...t){return p(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function Ze(s){return z((i,e)=>function(...t){return p(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function Ea(s){return z((i,e)=>function(...t){return p(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function z(s){return function(i,e,t){return t.value=s(t.value,e),t}}var om=(()=>{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 B_=0,Sa=class{constructor(){d(this,"log",R.createLogger({id:`fq${++B_}`}));d(this,"isRunning",!1);d(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()})}},xo=new WeakMap,Ia=new WeakMap;function ni(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=xo.get(this)||new Sa;return xo.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function nm(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=xo.get(this);if(n){let a=n.queue.filter((c,l)=>{if(l===0)return!0;let h=!0;return c.args.forEach(u=>{o.find(f=>f===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 Aa(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,c,l;let n=[];return(c=(a=xo.get(this))==null?void 0:a.queue)==null||c.forEach(h=>n.push(h)),(l=Ia.get(this))==null||l.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}))}),xo.delete(this),Ia.delete(this),r.apply(this,o)},t}}function Li(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=Ia.get(this)||new Map,c=a.get(o(n))||new Sa;return a.set(o(n),c),Ia.set(this,a),c.push({fn:r,args:n,context:this})},t}}function at(s,i){return z((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=x();return ji(n)?n.then(c=>(i?N.addSuccessEvent({key:o,cost:x()-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 Dr=class Dr extends vr{constructor(e,t){super({mediaType:e,PlayerClass:t});d(this,"isRemote",!1);d(this,"deviceId");d(this,"groupId","");d(this,"label","");d(this,"sourceTrack");d(this,"_isRecapturing",!1);d(this,"_lastRecaptureTime",0);d(this,"_onMuteTimeoutId",-1);d(this,"_encodeCheckTimeoutId",-1);d(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){Ge(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){be(e)}setStateToCapture(){}capture(e){return p(this,null,function*(){var t;try{let r=x();T.emit(I.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 sm(e));let n=o.getTracks()[0];return this.sourceTrack=n,yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),T.emit(I.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:x()-r}),o}catch(r){throw T.emit(I.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setInputMediaStreamTrack(e){return this.state===H.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(I.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return p(this,null,function*(){if(this.mediaTrack&&ei){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield im({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),ma().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&&!tm(this.mediaTrack)||this.kind===m.VIDEO&&!em(this.mediaTrack)||this._isRecapturing||e&&kt&&Le)}onTrackMuted(){if(super.onTrackMuted(),om(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Xr){setTimeout(()=>this.onTrackMuted(),Xr);return}this._onMuteTimeoutId=setTimeout(()=>p(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Se||he)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return p(this,null,function*(){if(Fe(Dr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Xr){setTimeout(()=>this.onTrackEnded(),Xr);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return p(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 nt():yield _t()).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(I.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),T.emit(I.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return p(this,null,function*(){let e=this instanceof Je;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(Uo.get(t)||0)+1;if(Uo.set(t,r),r>=3){let o=e?(yield _t()).find(n=>!Uo.has(n.deviceId)):(yield nt()).find(n=>!Uo.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)}};b([pe(H.INIT,"capture",{ignoreError:!0,sync:!0})],Dr.prototype,"setStateToCapture",1),b([ni()],Dr.prototype,"capture",1),b([pe("capture","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),T.emit(I.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let c=this.kind===m.AUDIO,l=this.stat.bytesSent>0;N[l?"addSuccessEvent":"addFailedEvent"]({key:c?503700:513702}),l||(N.addEnum({key:c?503701:513703,value:_o()}),te.uploadEvent({log:`stat-encode-failed-${this.kind}-${Er()||bi()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===S.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),at(521714,!1)],Dr.prototype,"publish",1),b([z(e=>function(){return p(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),pe([],"capture",{sync:!0})],Dr.prototype,"unpublish",1);var ki=Dr,Uo=new Map;T.on(I.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&Uo.delete(s.track.deviceId)});var St=class s extends ki{constructor(e){super(1,_a);d(this,"mediaType",1);d(this,"volume",0);d(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});d(this,"playerMuted",!0);d(this,"pipeline");d(this,"earMonitorGainNode",new We);d(this,"_output",new We);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Es(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode.pipeTo(this._output),this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return Nr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return p(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 Fe(s.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 p(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===hr){if(yield Qd(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(I.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(){ke&&!ke.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ke.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return p(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),Te(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield nt();t[0]?this.recapture(t[0].deviceId):ke.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return p(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),c=!1;!E(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,c=!0),!E(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,c=!0),!E(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,c=!0),c&&(oe||Le?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):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})}setAudioVolume(e){super.setAudioVolume(0),Se&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Re().createGain()),this._output.setNode(Re().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}addDenoiser(e){var t;if(lt<=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.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}close(){this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),ke.off("audioInputAdded",this.handleMicrophoneAdded,this),ke.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return p(this,null,function*(){try{yield Fe(s.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield nt()).find(o=>o.deviceId!==e);if(r)yield Fe(s.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Pi=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 Ra=class{constructor(){d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(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 Pi(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)}isEmpty(){return!this._seiMessageList.length}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 o=9-this.getNaluCount(i.data);if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((f,g)=>f+g.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),h=new DataView(i.data),u=0;for(let f=0;f<n.length;f++)for(let g=0;g<n[f].dataView.byteLength;g++)l.setInt8(u++,n[f].dataView.getInt8(g));for(let f=0;f<i.data.byteLength;f++)l.setInt8(u++,h.getInt8(f));return i.data=c,n.length}return 0}};var Or=class Or extends ki{constructor(e,t=4){super(t,pt);d(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new Ra);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(w(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(!(!ei||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return p(this,null,function*(){var t,r,o;if(K(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,Fe(Or.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,Fe(Or.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&&he&&Ye&&(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&&rd&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),this.avoidCropping&&(Ye||oe)&&!od()&&t.width*t.height<=640*360&&t.width/t.height===16/9&&(this._scaleResolutionDownBy=1280/t.width,t.width=1280,t.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),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(w(v({},this.profile),{width:1920,height:1080})))}applyProfile(){return p(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,o=this.settings;if(!(!(o.height!==this.profile.height||o.width!==this.profile.width||o.frameRate!==this.profile.frameRate)||!this.deviceId)&&(ut===16?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.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)){this.isNeedToSetBandwidth=!1;let{width:c=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),h=c*l;if(h&&r&&h===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return 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 ei&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){if(this._scaleResolutionDownBy)return this._scaleResolutionDownBy;let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:An()&&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 p(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(I.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(){ke&&!ke.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ke.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return p(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),Te(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield _t();t[0]?this.recapture(t[0].deviceId):ke.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return p(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.reduceRight((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 E(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){ke.off("videoInputAdded",this.handleCameraAdded,this),ke.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return p(this,null,function*(){try{yield Fe(Or.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield _t()).find(o=>o.deviceId!==e);if(r)yield Fe(Or.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};b([Ze(function(e){this.setContentHint(e.contentHint||"motion")})],Or.prototype,"capture",1);var Je=Or;var cm=go();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:cm,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var G_=function(s){return p(this,null,function*(){let i=null,e=q_(s);R.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(ls&<<74||Le||oe)&&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 W_(r,s.captureElement))}if(s.audio){let o=J_(s);R.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function W_(s,i){return p(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&se(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===cm))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){R.warn(`cropTo target failed ${t}`)}})}function J_(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 q_(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Le?{max:s.width}:{ideal:s.width,max:s.width},height:Le?{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 dm=G_;var ct=class extends Je{constructor(e){super(e,2);d(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});d(this,"objectFit","contain");d(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(h){return p(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield dm({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:l}),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 p(this,null,function*(){throw new Error("Method not implemented.")})}};b([Ze(function(e){this.setContentHint(e.contentHint||"detail")})],ct.prototype,"capture",1);var ci=class extends St{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var j_='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',Kd;function Vo(s,i=48e3,e){return p(this,null,function*(){let t=Re("dump");Kd||(Kd=br(t,URL.createObjectURL(new Blob([j_],{type:"application/javascript"})))),yield Kd;let r=t.sampleRate,o=new AudioWorkletNode(t,"dumper",{numberOfInputs:s.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:r,targetSampleRate:i}});return e&&o.port.postMessage({port:e},[e]),s.forEach((n,a)=>n.connect(o,0,a)),new ReadableStream({start(n){o.port.onmessage=a=>{n.enqueue(a.data)}},cancel(){s.forEach(n=>n.disconnect(o)),o.port.close()}})})}var Ca=class extends la{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log",R.createLogger({id:"am"}));d(this,"denoiser");d(this,"voiceChanger");d(this,"mixChangedDebounce");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"getPCMAbortCtrlMap",new Map);d(this,"audioFrameEventConfigMap",new Map);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}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 f=0;f<r.length;f++){let g=URL.createObjectURL(new Blob(n[f])),D=document.createElement("a");D.href=g,D.download=`${r[f]}.pcm`,D.style.display="none",document.body.appendChild(D),D.click(),URL.revokeObjectURL(g),D.remove()}clearTimeout(a),o.abort("download")},l=Vo(t).then(f=>f.pipeTo(new WritableStream({write(g){g.forEach((D,_)=>n[_]=n[_]?n[_].concat(D[0]):[D[0]])}}),o).catch(g=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var M,ne,F;if(E(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:o=48e3,channelCount:n=1,port:a}=(t===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(t)||this.audioFrameEventConfigMap.get("*"))||{};if(!r)return;this.log.info(`getPCM ${t||"local"}`);let c=Math.floor(o*.04),l=new Float32Array(c),h=new Float32Array(c),u,f,g=0,D=new AbortController,_=t===""?(M=this._localAudioTrack)==null?void 0:M.mediaTrack:(F=(ne=this.room)==null?void 0:ne.remotePublishedUserMap.get(t))==null?void 0:F.remoteAudioTrack.outMediaTrack;if(!_){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let C=Re().createMediaStreamSource(new MediaStream([_]));return Vo([C],o,a).then(Oe=>Oe.pipeTo(new WritableStream({write(U){U[0][0]&&(g+U[0][0].length>c?(l.set(U[0][0].subarray(0,c-g),g),u=U[0][0].subarray(c-g),h.set(U[0][1].subarray(0,c-g),g),f=U[0][1].subarray(c-g),g+=c-g):(u&&(l.set(u,g),g+=u.length,u=void 0),f&&(h.set(f,g),f=void 0),l.set(U[0][0],g),h.set(U[0][1],g),g+=U[0][0].length),g>=c&&(g=0,e({userId:t,sampleRate:o,channelCount:n,data:n===1?l:[l,h]}),l=new Float32Array(c),h=new Float32Array(c)))}}),D).catch(U=>this.log.warn(`stop getPCM reason:${U}`))),D}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!E(this._localAudioTrack)}changeInput(e){if(e instanceof ci)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof St)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof wi)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 ci?delete this._localScreenAudioTrack:e instanceof St?delete this._localAudioTrack:e instanceof wi}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)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}destroy(){this.close(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}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}handleLocalTrackStarted({room:e,userId:t}){var o;if(e!==this.room)return;let r=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(t,r),this.getPCMAbortCtrlMap.get(t)&&((o=this._localAudioTrack)==null||o.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(t);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var c;(c=this.room)==null||c.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(t,n))}))}handleLocalTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(t))}handleRemoteTrackStarted({room:e,userId:t}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(t)){let r=this.room.audioManager.getPCM(o=>{var n;(n=this.room)==null||n.emit("audio-frame",o)},t);this.getPCMAbortCtrlMap.set(t,r)}}handleRemoteTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(t))}installEvent(){this.handleLocalTrackStarted=this.handleLocalTrackStarted.bind(this),this.handleLocalTrackStopped=this.handleLocalTrackStopped.bind(this),this.handleRemoteTrackStarted=this.handleRemoteTrackStarted.bind(this),this.handleRemoteTrackStopped=this.handleRemoteTrackStopped.bind(this),T.on("113",this.handleLocalTrackStarted),T.on("114",this.handleLocalTrackStopped),T.on("115",this.handleRemoteTrackStarted),T.on("116",this.handleRemoteTrackStopped)}uninstallEvent(){T.off("113",this.handleLocalTrackStarted),T.off("114",this.handleLocalTrackStopped),T.off("115",this.handleRemoteTrackStarted),T.off("116",this.handleRemoteTrackStopped)}};function ya(s=30,i=2){return z((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 Ul={};fi(Ul,{Events:()=>Ie,Inspect:()=>It,LastSink:()=>Mr,Sink:()=>W,Subscribe:()=>kr,TimeoutError:()=>Bo,audit:()=>vg,bindCallback:()=>mg,bindNodeCallback:()=>pg,buffer:()=>ig,bufferCount:()=>tg,bufferTime:()=>jg,call:()=>lm,catchError:()=>Ll,combineLatest:()=>hm,concat:()=>Q_,concatMap:()=>Bg,concatMapTo:()=>Fg,count:()=>gg,create:()=>ee,debounce:()=>Dg,debounceTime:()=>Og,defer:()=>mm,delay:()=>Xg,deliver:()=>q,dispose:()=>ba,elementAt:()=>Mg,empty:()=>Ho,every:()=>xg,exhaustMap:()=>Gg,exhaustMapTo:()=>Wg,filter:()=>di,find:()=>kg,findIndex:()=>Lg,first:()=>Pg,fromAnimationFrame:()=>ug,fromArray:()=>og,fromEvent:()=>ue,fromEventPattern:()=>ng,fromFetch:()=>ag,fromIterable:()=>cg,fromPromise:()=>_m,fromReadableStream:()=>lg,fromReader:()=>dg,groupBy:()=>Jg,identity:()=>X_,ignoreElements:()=>Ig,iif:()=>K_,inspect:()=>um,interval:()=>ol,last:()=>wg,map:()=>Go,mapTo:()=>Vg,max:()=>Tg,merge:()=>rl,mergeMap:()=>$g,mergeMapTo:()=>Hg,min:()=>Eg,never:()=>fg,nothing:()=>ce,of:()=>sg,pairwise:()=>Ug,pipe:()=>de,race:()=>sl,range:()=>hg,reduce:()=>nl,retry:()=>Kg,scan:()=>kl,share:()=>xi,shareReplay:()=>Y_,skip:()=>Rg,skipUntil:()=>Cg,skipWhile:()=>Ma,startWith:()=>Fo,subject:()=>et,subscribe:()=>Ce,sum:()=>Sg,switchMap:()=>Rs,switchMapTo:()=>Pr,take:()=>Ui,takeLast:()=>Ag,takeUntil:()=>xe,takeWhile:()=>gm,tap:()=>xl,throttle:()=>bg,throwError:()=>_g,timeInterval:()=>qg,timeout:()=>Yg,timer:()=>$o,toPromise:()=>zg,toReadableStream:()=>Qg,withLatestFrom:()=>eg,zip:()=>Z_});function ce(...s){}var lm=s=>s(),X_=s=>s;function ba(){this.dispose()}var um=()=>typeof __FASTRX_DEVTOOLS__!="undefined",z_=1,It=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new Zd(i,this,this.streamId++);return Ie.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Mr=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=ce,this.error=ce,this.next=ce,this.dispose=ce,this.subscribe=ce,this.doDefer()}subscribe(i){return i instanceof It?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(lm),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}},W=class extends Mr{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)}},kr=class extends Mr{constructor(i,e=ce,t=ce,r=ce){if(super(),this._next=e,this._error=t,this._complete=r,this.then=ce,i instanceof It){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Ie.defer(o,0)}),Ie.create(o),Ie.pipe(o),this.sourceId=o.id,this.subscribe(i),Ie.subscribe({id:o.id,end:!0}),e==ce?this._next=n=>Ie.next(o,0,n):this.next=n=>{Ie.next(o,0,n),e(n)},r==ce?this._complete=()=>Ie.complete(o,0):this.complete=()=>{this.dispose(),Ie.complete(o,0),r()},t==ce?this._error=n=>Ie.complete(o,0,n):this.error=n=>{this.dispose(),Ie.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 de(s,...i){return i.reduce((e,t)=>t(e),s)}function ee(s,i,e){if(um()){let t=Object.defineProperties(Object.setPrototypeOf(s,It.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}});Ie.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof It&&Ie.addSource(t,o)}return t}return s}function q(s,i){return function(...e){return t=>{if(t instanceof It){let r=ee(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Ie.pipe(r),r}else return r=>t(new s(r,...e))}}}function tr(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var Zd=class extends W{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Ie.defer(this.source,this.id)})}next(i){Ie.next(this.source,this.id,i),this.sink.next(i)}complete(){Ie.complete(this.source,this.id),this.sink.complete()}error(i){Ie.complete(this.source,this.id,i),this.sink.error(i)}},Ie={addSource(s,i){tr("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){tr("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){tr("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){tr("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){tr("defer",{id:s.id,streamId:i})},pipe(s){tr("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){tr("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=z_++),tr("create",{name:s.toString(),id:s.id})}},Bo=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Na=class extends Mr{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 xi(){return s=>{let i=new Na(s);if(s instanceof It){let e=ee(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,Ie.pipe(e),e}return ee(i.add.bind(i),"share",arguments)}}function rl(...s){return ee(i=>{let e=new W(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function sl(...s){return ee(i=>{let e=new Map;s.forEach(t=>{let r=new W(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=o=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(o)}}),s.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function Q_(...s){return ee(i=>{let e=0,t=s.length,r=new W(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function Y_(s){return i=>{let e=new Na(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},ee(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function K_(s,i,e){return ee(t=>s()?i(t):e(t),"iif",arguments)}function hm(...s){return ee(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let h=new W(i);h.next=u=>{--t===0?(h.next=f=>{o[l]=f,i.next(o)},h.next(u)):o[l]=u},h.complete=n,h.subscribe(c)};s.forEach(a)},"combineLatest",arguments)}function Z_(...s){return ee(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new W(i),h=[];r[c]=h,l.next=u=>{h.push(u),r.every(f=>f.length)&&i.next(r.map(f=>f.shift()))},l.complete=o,l.subscribe(a)};s.forEach(n)},"zip",arguments)}function Fo(...s){return i=>ee((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var el=class extends W{constructor(i,...e){super(i);let t=new W(this.sink);t.next=r=>this.buffer=r,t.complete=ce,t.subscribe(hm(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},eg=q(el,"withLatestFrom"),tl=class extends W{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()}},tg=q(tl,"bufferCount"),il=class extends W{constructor(i,e){super(i),this.buffer=[];let t=new W(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=ce,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},ig=q(il,"buffer");var rg=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(h){try{l(t.next(h))}catch(u){n(u)}}function c(h){try{l(t.throw(h))}catch(u){n(u)}}function l(h){h.done?o(h.value):r(h.value).then(a,c)}l((t=t.apply(s,i||[])).next())})};function et(s){let i=arguments,e=xi()(ee(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=ce,e.complete=ce,e.error=ce,e}function mm(s){return ee(i=>i.subscribe(s()),"defer",arguments)}var pm=s=>i=>{setTimeout(()=>s(i))},fm=s=>pm(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function sg(...s){return ee(fm(s),"of",arguments)}function og(s){return ee(fm(s),"fromArray",arguments)}function ol(s){return ee(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function $o(s,i){return ee(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(o),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},s),o=()=>{clearTimeout(r)};e.defer(o)},"timer",arguments)}function va(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function ng(s,i){return ee(va(s,i),"fromEventPattern",arguments)}function ue(s,i){if("on"in s&&"off"in s)return ee(va(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return ee(va(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return ee(va(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function _m(s){return ee(i=>{s.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function ag(s,i){return ee(mm(()=>_m(fetch(s,i))),"fromFetch",arguments)}function cg(s){return ee(pm(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function dg(s){let i=e=>rg(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield s.read();if(t){e.complete();return}else e.next(r),i(e)});return ee(e=>{i(e)},"fromReader",arguments)}function lg(s){return ee(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),s.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function ug(){return ee(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function hg(s,i){return ee((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function mg(s,i,...e){return ee(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function pg(s,i,...e){return ee(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function fg(){return ee(()=>{},"never",arguments)}function _g(s){return ee(i=>i.error(s),"throwError",arguments)}function Ho(){return ee(s=>s.complete(),"empty",arguments)}var Lr=class extends W{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)}},nl=q(Lr,"reduce"),gg=s=>q(Lr,"count")((i,e)=>s(e)?i+1:i,0),Tg=()=>q(Lr,"max")(Math.max),Eg=()=>q(Lr,"min")(Math.min),Sg=()=>q(Lr,"sum")((s,i)=>s+i,0);var al=class extends W{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},di=q(al,"filter"),cl=class extends W{next(i){}},Ig=q(cl,"ignoreElements"),dl=class extends W{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Ui=q(dl,"take"),ll=class extends W{constructor(i,e){super(i);let t=new W(i);t.next=()=>i.complete(),t.complete=ba,t.subscribe(e)}},xe=q(ll,"takeUntil"),ul=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},gm=q(ul,"takeWhile"),Ag=s=>nl((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),hl=class extends W{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},Rg=q(hl,"skip"),ml=class extends W{constructor(i,e){super(i),i.next=ce;let t=new W(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=ba,t.subscribe(e)}},Cg=q(ml,"skipUntil"),pl=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Ma=q(pl,"skipWhile"),yg={leading:!0,trailing:!1},fl=class extends W{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)}},Da=class extends W{constructor(i,e,t=yg){super(i),this.durationSelector=e,this.config=t,this._throttle=new fl(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=ce,this._throttle.complete(),super.complete()}},bg=q(Da,"throttle"),Ng={leading:!1,trailing:!0},vg=s=>q(Da,"audit")(s,Ng),_l=class extends W{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Oa=class extends W{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new _l(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()}},Dg=q(Oa,"debounce"),Og=s=>q(Oa,"debounceTime")(i=>$o(s)),gl=class extends W{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()}},Mg=q(gl,"elementAt"),kg=s=>i=>Ui(1)(Ma(e=>!s(e))(i)),Tl=class extends W{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}},Lg=q(Tl,"findIndex"),El=class extends W{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()}},Pg=q(El,"first"),Sl=class extends W{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()}},wg=q(Sl,"last"),Il=class extends W{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()}},xg=q(Il,"every");var Al=class extends W{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))}},kl=q(Al,"scan"),Rl=class extends W{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},Ug=q(Rl,"pairwise"),ka=class extends W{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Go=q(ka,"map"),Vg=s=>q(ka,"mapTo")(i=>s),Is=class extends W{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()}},As=class extends W{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()}},La=class extends Is{},Pa=class extends As{next(i){this.subInner(i,La),this.next=e=>{this.currentSink.dispose(),this.subInner(e,La)}}},Rs=q(Pa,"switchMap");function Va(s){return(i,e)=>s(()=>i,e)}var Pr=Va(q(Pa,"switchMapTo")),Cl=class extends Is{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},wa=class extends As{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(),Cl),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},Bg=q(wa,"concatMap"),Fg=Va(q(wa,"concatMapTo")),yl=class extends Is{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},xa=class extends As{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,yl),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},$g=q(xa,"mergeMap"),Hg=Va(q(xa,"mergeMapTo")),bl=class extends Is{dispose(){this.context.resetNext(),super.dispose()}},Ua=class extends As{next(i){this.next=ce,this.subInner(i,bl)}},Gg=q(Ua,"exhaustMap"),Wg=Va(q(Ua,"exhaustMapTo")),Nl=class extends W{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=et(),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)}},Jg=q(Nl,"groupBy"),vl=class extends W{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}},qg=q(vl,"timeInterval"),Dl=class extends W{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()}},jg=q(Dl,"bufferTime"),Ol=class extends W{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)}},Xg=q(Ol,"delay"),Ml=class extends W{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Ll=q(Ml,"catchError");var zg=()=>s=>new Promise((i,e)=>{let t;new kr(s,r=>t=r,e,()=>i(t))}),Qg=()=>s=>{let i;return new ReadableStream({start(e){i=new kr(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},Ce=(s=ce,i=ce,e=ce)=>t=>new kr(t,s,i,e),Pl=class extends W{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)}))}},xl=q(Pl,"tap"),wl=class extends W{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Bo(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Yg=q(wl,"timeout"),Kg=(s=1/0)=>i=>{if(i instanceof It){let e=ee(t=>{let r=s,o=new W(t);o.error=n=>{r-- >0?o.subscribe(i):t.error(n)},o.sourceId=e.id,o.subscribe(i)},"retry",[s]);return e.source=i,Ie.pipe(e),e}else return e=>{let t=s,r=new W(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var li=class li extends vr{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;d(this,"tinyId");d(this,"isRemote",!0);d(this,"jitterBufferDelay",0);d(this,"availableState");d(this,"remotePublishState");d(this,"_triggerCheckDecodeSubject",et(ue(this,li.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new H(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new H(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),de(rl(ue(this,H.STATECHANGED),ue(this.remotePublishState,H.STATECHANGED)),Go(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Ce(c=>{this.availableState.state!==(c?H.ON:H.OFF)&&(this.availableState.state=c?H.ON:H.OFF),this.updatePlayingState(c)}));let o=de(ue(this.player,le.ERROR),di(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=de($o(5e3),di(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===m.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=de(sl(o,n),xe(ue(this,H.INIT)));de(this._triggerCheckDecodeSubject,di(()=>!this.ignoreDecodeError),Pr(a),Ce(c=>{this.reportDecodeResult(!1,c)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===li.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===H.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}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:_o()}),te.uploadEvent({log:`stat-decode-failed-${this.kind}-${Er()||bi()}`,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.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?H.ON:H.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(li,"STATE_SUBSCRIBE","subscribe"),b([ya(5,1)],li.prototype,"waitHasMediaTrack",1),b([pe(H.INIT,li.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),T.emit(I.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),at(521716,!1)],li.prototype,"subscribe",1),b([pe(li.STATE_SUBSCRIBE,H.INIT,{sync:!0,success(){this.log.info("unsubscribed"),T.emit(I.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],li.prototype,"unsubscribe",1);var Cs=li;var wi=class extends Cs{constructor(e,t){super(e,t,1);d(this,"volume",0);d(this,"mediaType",1);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Nr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}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 isRemotePublished(){return this.user.muteState.audioAvailable}};var eT=[-1,-1,1,-1,-1,1,1,1],tT=[0,0,1,0,0,1,1,1];var tt=class extends H{constructor(e,t){super();this.context=e;d(this,"name");d(this,"input");d(this,"output");d(this,"texture");d(this,"ctx2d",null);d(this,"fbo");d(this,"width",0);d(this,"height",0);d(this,"x",0);d(this,"y",0);d(this,"program");d(this,"vertexShader");d(this,"fragmentShader");d(this,"totalFrames",0);d(this,"dropFrames",0);d(this,"matchInputSize",!0);d(this,"texCoordBuffer");d(this,"positionBuffer");d(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});d(this,"cost",0);d(this,"_canvas",null);d(this,"_image");d(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 qe){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&ut!==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(tT),this.positionBuffer=this.createBuffer(eT),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 De&&this.render(e)||this.context instanceof qe&&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=0){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 De){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),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var u;let{totalFrames:e,x:t,y:r,width:o,height:n,name:a,cost:c}=this,l=Date.now(),h=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:l,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([pe(H.INIT,"connected",{sync:!0})],tt.prototype,"connect",1),b([pe("connected",H.INIT,{ignoreError:!0,sync:!0})],tt.prototype,"disconnect",1),b([pe([],"closed",{sync:!0})],tt.prototype,"close",1);var iT=de(ol(250),Go(()=>performance.now()),xi());var Em=s=>i=>{let e=performance.now();de(iT,Ma(t=>t-e<s),Ui(1))(i)};var sT=[0,1,1,1,0,0,1,0],wr=class extends tt{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));d(this,"_intervalId",0);d(this,"_sequence",0);d(this,"checkGLError",!1);d(this,"checkVisibilityChange");e instanceof qe?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(sT)}start(e){this.log.info(`${this.name} start render ${e} fps`),re.clearTask(this._intervalId),this._intervalId=re.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(re.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof De){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=0){if(this._intervalId&&(re.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),re.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),re.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},ys=class extends wr{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",ue(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Ci)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=ue(this._videoTrack,"mute"),de(ue(this._videoTrack,"ended"),xe(this._closedOb),Ce(()=>{this.context.destroy(new y({code:S.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=de(this._muteOb,xe(this._closedOb),Pr(Em(5e3)),di(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Ce(()=>{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()}},Ba=class extends ys{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var Fa=class extends ys{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 Wo=class extends tt{constructor(e,t){super(e,v({name:"imageSource"},t));d(this,"_lastImage");d(this,"_totalFrames",0);d(this,"_autoResize",!1);d(this,"_canvasRendered");d(this,"_videoCallbackId",0);d(this,"waitingFirstFrame",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,ut===16&&(this._canvasRendered=et(),de(this._canvasRendered,Fo(this._image),Rs(r=>r instanceof HTMLCanvasElement?ue(r,"rendered"):Ho()),xe(ue(this,"closed")),Ce(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),yr()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{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):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:o}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&this.totalFrames){if(t){this.useTexture();let c=this.context.ctx;c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let c=this.context.ctx;c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.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)}},Jo=class extends Wo{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",de(ue(this._player,le.PLAYER_STATE_CHANGED),xe(ue(this,"closed")),di(({state:o})=>o==="PLAYING"),Ce(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Vi=class extends Jo{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new pt({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var nT=`
|
|
32
34
|
// \u9876\u70B9\u7740\u8272\u5668
|
|
33
35
|
attribute vec4 a_position;
|
|
34
36
|
attribute vec2 a_texCoord;
|
|
@@ -38,7 +40,7 @@ void main() {
|
|
|
38
40
|
gl_Position = a_position;
|
|
39
41
|
v_texCoord = a_texCoord;
|
|
40
42
|
}
|
|
41
|
-
`,
|
|
43
|
+
`,aT=`
|
|
42
44
|
// \u7247\u5143\u7740\u8272\u5668
|
|
43
45
|
precision mediump float;
|
|
44
46
|
varying vec2 v_texCoord;
|
|
@@ -46,65 +48,32 @@ uniform sampler2D u_texture;
|
|
|
46
48
|
|
|
47
49
|
void main() {
|
|
48
50
|
gl_FragColor = texture2D(u_texture, v_texCoord);
|
|
49
|
-
} `;var Jo=class extends ne{constructor(e){super();u(this,"frameRate");u(this,"_canvas");u(this,"log");u(this,"hasAlpha",!1);u(this,"name");u(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,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new hi(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new Js(this,e)}createVideoImageSource(e,r){return new Ra(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new va(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};u(Jo,"_ids",0);var dI={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},zs=class zs extends Jo{constructor(){super(...arguments);u(this,"defaultProgam");u(this,"defaultVShader");u(this,"defaultFShader");u(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Jo._ids++}`),this.ctx=this._canvas.getContext("webgl2",dI),!this.ctx)throw new he({code:te.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,aI),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,cI),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let r="";return e&&(r=e.message,this.error=e,Y.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),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 r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};u(zs,"UNAVAILABLE","unavailable"),X([qe(ne.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),Y.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),Y.addSuccessEvent({key:512700})}})],zs.prototype,"create",1),X([qe("created",ne.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(zs.UNAVAILABLE,e),this.removeAllListeners()}})],zs.prototype,"destroy",1);var Et=zs,kt=class extends Jo{constructor(){super(...arguments);u(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Jo._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new he({code:te.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let r="";e&&(r=e.message,this.error=e,Y.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Y.addSuccessEvent({key:512703})}};X([qe(ne.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),Y.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),Y.addSuccessEvent({key:512701})}})],kt.prototype,"create",1),X([qe("created",ne.INIT,{ignoreError:!0,sync:!0})],kt.prototype,"destroy",1);function uI(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var Qi=class extends qs{constructor(e,r,o=4){super(e,r,o);u(this,"mediaType",4);u(this,"source");u(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(nt(r==null?void 0:r.canvasRender)?r.canvasRender:Yt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new kt({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new qo(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),ci()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=uI(r);if(!je(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(d=>d.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(d=>d.uint32_video_stream_type===r);return(o==null?void 0:o.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 r of this.manager.decodePipeline)if(r&&(e=r({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 isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},kd=class extends Qi{constructor(e,r){super(e,r,2);u(this,"mediaType",2);u(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var Xs=new Map;H.on(L.JOIN_SUCCESS,({room:i})=>{tt(i.userId,{eventId:32788})});H.on(L.LEAVE_START,({room:i})=>{tt(i.userId,{eventId:32789})});H.on(L.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),tt(i.room.userId,{eventId:t})}});H.on(L.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),tt(i.room.userId,{eventId:t})}});H.on(L.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?tt(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):tt(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});H.on(L.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?tt(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):tt(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});H.on(L.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&tt(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&tt(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&tt(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});H.on(L.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&tt(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&tt(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&tt(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});H.on(L.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&tt(i.room.userId,{eventId:i.kind===D.VIDEO?32780:32781})});H.on(L.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&tt(i.room.userId,{eventId:i.kind===D.VIDEO?32782:32783})});H.on(L.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&tt(i.userId,{eventId:r})});H.on(L.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&tt(i.userId,{eventId:s,remoteUserId:r})});H.on(L.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:n})=>{let d=o?1:0;s||(d=o?3:2);let p=r==="h264"?0:2,m={eventId:4004,param1:d,param2:p,streamType:n||2};e&&(m.remoteUserId=e,m.eventId=4005),tt(t,m),Y.addEnum({key:e?514701:513701,value:d}),Y.addEnum({key:e?514700:513700,value:p})});H.on(L.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===D.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),tt(i.userId,e)}});function tt(i,t){let e=Ee(ee({},t),{timestamp:Sn()});Xs.has(i)?Xs.get(i).push(e):Xs.set(i,[e])}function wf(i){if(Xs.has(i)){let t=Xs.get(i).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 Xs.delete(i),t}return[]}var lI=Oi(Bi(),1);var mI=Object.create,$d=Object.defineProperty,pI=Object.defineProperties,Pf=Object.getOwnPropertyDescriptor,hI=Object.getOwnPropertyDescriptors,kf=Object.getOwnPropertyNames,Mf=Object.getOwnPropertySymbols,fI=Object.getPrototypeOf,Lf=Object.prototype.hasOwnProperty,gI=Object.prototype.propertyIsEnumerable,Wm=(i,t,e)=>t in i?$d(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Ud=(i,t)=>{for(var e in t||(t={}))Lf.call(t,e)&&Wm(i,e,t[e]);if(Mf)for(var e of Mf(t))gI.call(t,e)&&Wm(i,e,t[e]);return i},Vd=(i,t)=>pI(i,hI(t)),EI=(i,t)=>function(){return t||(0,i[kf(i)[0]])((t={exports:{}}).exports,t),t.exports},_I=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kf(t))Lf.call(i,o)||o===e||$d(i,o,{get:()=>t[o],enumerable:!(r=Pf(t,o))||r.enumerable});return i},TI=(i,t,e)=>(e=i!=null?mI(fI(i)):{},_I(!t&&i&&i.__esModule?e:$d(e,"default",{value:i,enumerable:!0}),i)),fi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?Pf(t,e):t,n=i.length-1;n>=0;n--)(o=i[n])&&(s=(r?o(t,e,s):o(s))||s);return r&&s&&$d(t,e,s),s},br=(i,t,e)=>Wm(i,typeof t!="symbol"?t+"":t,e),II=EI({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(i,t){"use strict";var e=Object.prototype.hasOwnProperty,r="~";function o(){}function s(m,g,I){this.fn=m,this.context=g,this.once=I||!1}function n(m,g,I,S,N){if(typeof I!="function")throw new TypeError("The listener must be a function");var k=new s(I,S||m,N),P=r?r+g:g;return m._events[P]?m._events[P].fn?m._events[P]=[m._events[P],k]:m._events[P].push(k):(m._events[P]=k,m._eventsCount++),m}function d(m,g){--m._eventsCount==0?m._events=new o:delete m._events[g]}function p(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),p.prototype.eventNames=function(){var m,g,I=[];if(this._eventsCount===0)return I;for(g in m=this._events)e.call(m,g)&&I.push(r?g.slice(1):g);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(m)):I},p.prototype.listeners=function(m){var g=r?r+m:m,I=this._events[g];if(!I)return[];if(I.fn)return[I.fn];for(var S=0,N=I.length,k=new Array(N);S<N;S++)k[S]=I[S].fn;return k},p.prototype.listenerCount=function(m){var g=r?r+m:m,I=this._events[g];return I?I.fn?1:I.length:0},p.prototype.emit=function(m,g,I,S,N,k){var P=r?r+m:m;if(!this._events[P])return!1;var x,J,Q=this._events[P],De=arguments.length;if(Q.fn){switch(Q.once&&this.removeListener(m,Q.fn,void 0,!0),De){case 1:return Q.fn.call(Q.context),!0;case 2:return Q.fn.call(Q.context,g),!0;case 3:return Q.fn.call(Q.context,g,I),!0;case 4:return Q.fn.call(Q.context,g,I,S),!0;case 5:return Q.fn.call(Q.context,g,I,S,N),!0;case 6:return Q.fn.call(Q.context,g,I,S,N,k),!0}for(J=1,x=new Array(De-1);J<De;J++)x[J-1]=arguments[J];Q.fn.apply(Q.context,x)}else{var Re,le=Q.length;for(J=0;J<le;J++)switch(Q[J].once&&this.removeListener(m,Q[J].fn,void 0,!0),De){case 1:Q[J].fn.call(Q[J].context);break;case 2:Q[J].fn.call(Q[J].context,g);break;case 3:Q[J].fn.call(Q[J].context,g,I);break;case 4:Q[J].fn.call(Q[J].context,g,I,S);break;default:if(!x)for(Re=1,x=new Array(De-1);Re<De;Re++)x[Re-1]=arguments[Re];Q[J].fn.apply(Q[J].context,x)}}return!0},p.prototype.on=function(m,g,I){return n(this,m,g,I,!1)},p.prototype.once=function(m,g,I){return n(this,m,g,I,!0)},p.prototype.removeListener=function(m,g,I,S){var N=r?r+m:m;if(!this._events[N])return this;if(!g)return d(this,N),this;var k=this._events[N];if(k.fn)k.fn!==g||S&&!k.once||I&&k.context!==I||d(this,N);else{for(var P=0,x=[],J=k.length;P<J;P++)(k[P].fn!==g||S&&!k[P].once||I&&k[P].context!==I)&&x.push(k[P]);x.length?this._events[N]=x.length===1?x[0]:x:d(this,N)}return this},p.prototype.removeAllListeners=function(m){var g;return m?(g=r?r+m:m,this._events[g]&&d(this,g)):(this._events=new o,this._eventsCount=0),this},p.prototype.off=p.prototype.removeListener,p.prototype.addListener=p.prototype.on,p.prefixed=r,p.EventEmitter=p,t!==void 0&&(t.exports=p)}}),SI=TI(II(),1),Of=Symbol("instance"),bM=Symbol("abortCtrl"),Ld=Symbol("cacheResult"),Hm=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,Na.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Fd=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function yI(i){return typeof i=="object"&&i&&"then"in i}var Da=new Map;function Yi(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let p=Da.get(r)||[];Da.has(r)||Da.set(r,p),p.push({from:i,to:t,action:n})}let d=s.value;s.value=function(...p){let m=this;if(e.context&&(m=Ht.get(typeof e.context=="function"?e.context.call(this,...p):e.context)),m.state===t)return e.sync?m[Ld]:Promise.resolve(m[Ld]);m.state instanceof Hm&&m.state.action==e.abortAction&&m.state.abort(m);let g=null;Array.isArray(i)?i.length==0?m.state instanceof Hm&&m.state.abort(m):typeof m.state=="string"&&i.includes(m.state)||(g=new Fd(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(g=new Fd(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let I=x=>{if(e.fail&&e.fail.call(this,x),e.sync){if(e.ignoreError)return x;throw x}return e.ignoreError?Promise.resolve(x):Promise.reject(x)};if(g)return I(g);let S=m.state,N=new Hm(S,t,n);Na.call(m,N);let k=x=>{var J;return m[Ld]=x,N.aborted||(Na.call(m,t),(J=e.success)===null||J===void 0||J.call(this,m[Ld])),x},P=x=>(Na.call(m,S,x),I(x));try{let x=d.apply(this,p);return yI(x)?x.then(k).catch(P):e.sync?k(x):Promise.resolve(k(x))}catch(x){return P(new Fd(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${x}`,x instanceof Error?x:new Error(String(x))))}}}}function AI(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new Fd(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var bI=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function Na(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(Ht.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var Ht=class sr extends SI.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=sr.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Of];o?this.name=o.name+"-"+o.count++:r[Of]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=Da.get(t)||[],r=new Set,o=[],s=[],n=new Set,d=Object.getPrototypeOf(t);Da.has(d)&&(d.stateDiagram.forEach(m=>r.add(m)),d.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:g,action:I})=>{typeof m=="string"?o.push({from:m,to:g,action:I}):m.length?m.forEach(S=>{o.push({from:S,to:g,action:I})}):s.push({to:g,action:I})}),o.forEach(({from:m,to:g,action:I})=>{n.add(m),n.add(g),n.add(I+"ing"),r.add(`${m} --> ${I}ing : ${I}`),r.add(`${I}ing --> ${g} : ${I} \u{1F7E2}`),r.add(`${I}ing --> ${m} : ${I} \u{1F534}`)}),s.forEach(({to:m,action:g})=>{r.add(`${g}ing --> ${m} : ${g} \u{1F7E2}`),n.forEach(I=>{I!==m&&r.add(`${I} --> ${g}ing : ${g}`)})});let p=[...r];return Object.defineProperties(t,{stateDiagram:{value:p},allStates:{value:n}}),p}static get(t){let e;return typeof t=="string"?(e=sr.instances.get(t),e||sr.instances.set(t,e=new sr(t,void 0,Object.create(sr.prototype)))):(e=sr.instances2.get(t),e||sr.instances2.set(t,e=new sr(t.constructor.name,void 0,Object.create(sr.prototype)))),e}static getState(t){var e;return(e=sr.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){bI(sr.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){Na.call(this,t)}};Ht.STATECHANGED="stateChanged",Ht.UPDATEAFSM="updateAFSM",Ht.INIT="[*]",Ht.ON="on",Ht.OFF="off",Ht.instances=new Map,Ht.instances2=new WeakMap;var Qs=class extends Ht{constructor(){super(...arguments),br(this,"decoder"),br(this,"config")}initialize(){return A(this,null,function*(){this.decoder=new VideoDecoder({output:i=>{this.emit("videoFrame",i)},error:i=>{this.close(),this.emit("error",i)}})})}configure(i){this.config=i,this.decoder.configure(Vd(Ud({},i),{codec:this.getCodec(i)}))}getCodec(i){switch(i.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 i.codec}}decode(i){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(i))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};function RI(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),n=0,d=0,p={wasmBinary:o,postRun:()=>{i=new p.VideoDecoder({videoInfo(m,g){n=m,d=g,console.log("video info",m,g)},yuvData(m,g){let I=n*d,S=I>>2,N=p.HEAPU32[m>>2],k=p.HEAPU32[1+(m>>2)],P=p.HEAPU32[2+(m>>2)],x=p.HEAPU8.subarray(N,N+I),J=p.HEAPU8.subarray(k,k+S),Q=p.HEAPU8.subarray(P,P+S),De=new Uint8Array(I+S+S);De.set(x),De.set(J,I),De.set(Q,I+S);let Re=new VideoFrame(De,{codedWidth:n,codedHeight:d,format:"I420",timestamp:g});e?(s==null||s.drawImage(Re,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:Re},[Re])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(p)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}fi([Yi([Ht.INIT,"closed"],"initialized")],Qs.prototype,"initialize",1),fi([Yi("initialized","configured",{sync:!0})],Qs.prototype,"configure",1),fi([AI("configured")],Qs.prototype,"decode",1),fi([Yi([],Ht.INIT,{sync:!0})],Qs.prototype,"reset",1),fi([Yi([],"closed",{ignoreError:!0,sync:!0})],Qs.prototype,"close",1);var Ca=class extends Ht{constructor(i,t,e=!1,r,o=!1){super(),this.createModule=i,this.wasmBinary=t,this.workerMode=e,this.canvas=r,this.yuvMode=o,br(this,"worker"),br(this,"decoder"),br(this,"config"),br(this,"module",{}),br(this,"width",0),br(this,"height",0)}initialize(i){return A(this,null,function*(){var t;if(this.workerMode){let r=new RegExp("\\{(.+)\\}","s").exec(RI.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([r],{type:"text/javascript"})));let o=(t=this.canvas)==null?void 0:t.transferControlToOffscreen(),s=yield this.wasmBinary;return console.warn("worker mode",s),this.worker.postMessage({type:"init",canvas:o,wasmScript:this.createModule.toString(),wasmBinary:s},o?[o,s]:[s]),new Promise(n=>{this.worker.onmessage=d=>{if(d.data.type==="ready")delete this.wasmBinary,n(),console.warn("worker mode initialize success");else if(d.data.type==="yuvData"){let{videoFrame:p}=d.data;this.emit("videoFrame",p)}}})}let e=this.module;return this.wasmBinary&&(e.wasmBinary=yield this.wasmBinary),e.print=r=>console.log(r),e.printErr=r=>console.log(`[JS] ERROR: ${r}`),e.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(r=>{e.postRun=o=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),r()},i&&Object.assign(e,i),this.createModule(e)})})}configure(i){var t,e,r;this.config=i;let o=this.config.codec.startsWith("avc")?"avc":"hevc",s=this.config.description?o=="avc"?"avcc":"hvcc":"annexb";(e=this.decoder)==null||e.setCodec(o,s,(t=this.config.description)!=null?t:""),(r=this.worker)==null||r.postMessage({type:"setCodec",codec:o,format:s,description:this.config.description})}decode(i){var t,e;(t=this.decoder)==null||t.decode(i.data,i.type=="key",i.timestamp),this.state==="configured"&&((e=this.worker)==null||e.postMessage({type:"decode",packet:i}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(i,t){this.width=i,this.height=t;let e={width:i,height:t};this.emit("videoCodecInfo",e)}yuvData(i,t){if(!this.module)return;let e=this.width*this.height,r=e>>2,o=this.module.HEAPU32[i>>2],s=this.module.HEAPU32[1+(i>>2)],n=this.module.HEAPU32[2+(i>>2)],d=this.module.HEAPU8.subarray(o,o+e),p=this.module.HEAPU8.subarray(s,s+r),m=this.module.HEAPU8.subarray(n,n+r);if(this.yuvMode)return void this.emit("videoFrame",{y:d,u:p,v:m,timestamp:t});let g=new Uint8Array(e+r+r);g.set(d),g.set(p,e),g.set(m,e+r),this.emit("videoFrame",new VideoFrame(g,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(i){let t={errMsg:i};this.emit("error",t)}};fi([Yi([Ht.INIT,"closed"],"initialized")],Ca.prototype,"initialize",1),fi([Yi("initialized","configured",{sync:!0})],Ca.prototype,"configure",1),fi([Yi([],Ht.INIT,{sync:!0})],Ca.prototype,"reset",1),fi([Yi([],"closed",{sync:!0})],Ca.prototype,"close",1);var vI=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((a,c)=>{e=a,r=c});var s,n,d,p=Object.assign({},o),m="./this.program",g=typeof window=="object",I=typeof importScripts=="function",S=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(g||I)&&(I?S=self.location.href:typeof document!="undefined"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S=S.indexOf("blob:")!==0?S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.send(null),c.responseText},I&&(d=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),n=(a,c,l)=>{var h=new XMLHttpRequest;h.open("GET",a,!0),h.responseType="arraybuffer",h.onload=()=>{h.status==200||h.status==0&&h.response?c(h.response):l()},h.onerror=l,h.send(null)});var N,k=o.print||console.log.bind(console),P=o.printErr||console.error.bind(console);Object.assign(o,p),p=null,o.arguments&&o.arguments,o.thisProgram&&(m=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(N=o.wasmBinary);var x,J;o.noExitRuntime,typeof WebAssembly!="object"&&Cr("no native wasm support detected");var Q,De,Re,le,xe,Le,ao,rn,on,sn=!1,vr=[],es=[],_i=[],K=0,Wr=null,Gr=null;function nn(a){K++,o.monitorRunDependencies&&o.monitorRunDependencies(K)}function co(a){if(K--,o.monitorRunDependencies&&o.monitorRunDependencies(K),K==0&&(Wr!==null&&(clearInterval(Wr),Wr=null),Gr)){var c=Gr;Gr=null,c()}}function Cr(a){o.onAbort&&o.onAbort(a),P(a="Aborted("+a+")"),sn=!0,a+=". Build with -sASSERTIONS for more info.";var c=new WebAssembly.RuntimeError(a);throw r(c),c}var Ti,uo,ge,Ge,$a="data:application/octet-stream;base64,";function G(a){return a.startsWith($a)}function jr(a){if(a==Ti&&N)return new Uint8Array(N);if(d)return d(a);throw"both async and sync fetching of the wasm failed"}function Dr(a,c,l){return function(h){return N||!g&&!I||typeof fetch!="function"?Promise.resolve().then(()=>jr(h)):fetch(h,{credentials:"same-origin"}).then(T=>{if(!T.ok)throw"failed to load wasm binary file at '"+h+"'";return T.arrayBuffer()}).catch(()=>jr(h))}(a).then(h=>WebAssembly.instantiate(h,c)).then(h=>h).then(l,h=>{P("failed to asynchronously prepare wasm: "+h),Cr(h)})}G(Ti="videodec.wasm")||(uo=Ti,Ti=o.locateFile?o.locateFile(uo,S):S+uo);var Ii=a=>{for(;a.length>0;)a.shift()(o)};function Si(a){this.excPtr=a,this.ptr=a-24,this.set_type=function(c){Le[this.ptr+4>>2]=c},this.get_type=function(){return Le[this.ptr+4>>2]},this.set_destructor=function(c){Le[this.ptr+8>>2]=c},this.get_destructor=function(){return Le[this.ptr+8>>2]},this.set_caught=function(c){c=c?1:0,Q[this.ptr+12|0]=c},this.get_caught=function(){return Q[this.ptr+12|0]!=0},this.set_rethrown=function(c){c=c?1:0,Q[this.ptr+13|0]=c},this.get_rethrown=function(){return Q[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){Le[this.ptr+16>>2]=c},this.get_adjusted_ptr=function(){return Le[this.ptr+16>>2]},this.get_exception_ptr=function(){if(En(this.get_type()))return Le[this.excPtr>>2];var c=this.get_adjusted_ptr();return c!==0?c:this.excPtr}}var F={isAbs:a=>a.charAt(0)==="/",splitPath:a=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1),normalizeArray:(a,c)=>{for(var l=0,h=a.length-1;h>=0;h--){var T=a[h];T==="."?a.splice(h,1):T===".."?(a.splice(h,1),l++):l&&(a.splice(h,1),l--)}if(c)for(;l;l--)a.unshift("..");return a},normalize:a=>{var c=F.isAbs(a),l=a.substr(-1)==="/";return(a=F.normalizeArray(a.split("/").filter(h=>!!h),!c).join("/"))||c||(a="."),a&&l&&(a+="/"),(c?"/":"")+a},dirname:a=>{var c=F.splitPath(a),l=c[0],h=c[1];return l||h?(h&&(h=h.substr(0,h.length-1)),l+h):"."},basename:a=>{if(a==="/")return"/";var c=(a=(a=F.normalize(a)).replace(/\/$/,"")).lastIndexOf("/");return c===-1?a:a.substr(c+1)},join:function(){var a=Array.prototype.slice.call(arguments);return F.normalize(a.join("/"))},join2:(a,c)=>F.normalize(a+"/"+c)},an=a=>(an=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return c=>crypto.getRandomValues(c);Cr("initRandomDevice")})())(a),Wt={resolve:function(){for(var a="",c=!1,l=arguments.length-1;l>=-1&&!c;l--){var h=l>=0?arguments[l]:f.cwd();if(typeof h!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!h)return"";a=h+"/"+a,c=F.isAbs(h)}return(c?"/":"")+(a=F.normalizeArray(a.split("/").filter(T=>!!T),!c).join("/"))||"."},relative:(a,c)=>{function l(w){for(var z=0;z<w.length&&w[z]==="";z++);for(var ie=w.length-1;ie>=0&&w[ie]==="";ie--);return z>ie?[]:w.slice(z,ie-z+1)}a=Wt.resolve(a).substr(1),c=Wt.resolve(c).substr(1);for(var h=l(a.split("/")),T=l(c.split("/")),y=Math.min(h.length,T.length),b=y,R=0;R<y;R++)if(h[R]!==T[R]){b=R;break}var M=[];for(R=b;R<h.length;R++)M.push("..");return(M=M.concat(T.slice(b))).join("/")}},yi=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Nt=(a,c,l)=>{for(var h=c+l,T=c;a[T]&&!(T>=h);)++T;if(T-c>16&&a.buffer&&yi)return yi.decode(a.subarray(c,T));for(var y="";c<T;){var b=a[c++];if(128&b){var R=63&a[c++];if((224&b)!=192){var M=63&a[c++];if((b=(240&b)==224?(15&b)<<12|R<<6|M:(7&b)<<18|R<<12|M<<6|63&a[c++])<65536)y+=String.fromCharCode(b);else{var w=b-65536;y+=String.fromCharCode(55296|w>>10,56320|1023&w)}}else y+=String.fromCharCode((31&b)<<6|R)}else y+=String.fromCharCode(b)}return y},cn=[],lo=a=>{for(var c=0,l=0;l<a.length;++l){var h=a.charCodeAt(l);h<=127?c++:h<=2047?c+=2:h>=55296&&h<=57343?(c+=4,++l):c+=3}return c},mo=(a,c,l,h)=>{if(!(h>0))return 0;for(var T=l,y=l+h-1,b=0;b<a.length;++b){var R=a.charCodeAt(b);if(R>=55296&&R<=57343&&(R=65536+((1023&R)<<10)|1023&a.charCodeAt(++b)),R<=127){if(l>=y)break;c[l++]=R}else if(R<=2047){if(l+1>=y)break;c[l++]=192|R>>6,c[l++]=128|63&R}else if(R<=65535){if(l+2>=y)break;c[l++]=224|R>>12,c[l++]=128|R>>6&63,c[l++]=128|63&R}else{if(l+3>=y)break;c[l++]=240|R>>18,c[l++]=128|R>>12&63,c[l++]=128|R>>6&63,c[l++]=128|63&R}}return c[l]=0,l-T};function ts(a,c,l){var h=l>0?l:lo(a)+1,T=new Array(h),y=mo(a,T,0,T.length);return c&&(T.length=y),T}var ar={ttys:[],init:function(){},shutdown:function(){},register:function(a,c){ar.ttys[a]={input:[],output:[],ops:c},f.registerDevice(a,ar.stream_ops)},stream_ops:{open:function(a){var c=ar.ttys[a.node.rdev];if(!c)throw new f.ErrnoError(43);a.tty=c,a.seekable=!1},close:function(a){a.tty.ops.fsync(a.tty)},fsync:function(a){a.tty.ops.fsync(a.tty)},read:function(a,c,l,h,T){if(!a.tty||!a.tty.ops.get_char)throw new f.ErrnoError(60);for(var y=0,b=0;b<h;b++){var R;try{R=a.tty.ops.get_char(a.tty)}catch(M){throw new f.ErrnoError(29)}if(R===void 0&&y===0)throw new f.ErrnoError(6);if(R==null)break;y++,c[l+b]=R}return y&&(a.node.timestamp=Date.now()),y},write:function(a,c,l,h,T){if(!a.tty||!a.tty.ops.put_char)throw new f.ErrnoError(60);try{for(var y=0;y<h;y++)a.tty.ops.put_char(a.tty,c[l+y])}catch(b){throw new f.ErrnoError(29)}return h&&(a.node.timestamp=Date.now()),y}},default_tty_ops:{get_char:function(a){return(()=>{if(!cn.length){var c=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(c=window.prompt("Input: "))!==null&&(c+=`
|
|
50
|
-
`):typeof readline=="function"&&(c=readline())!==null&&(c+=`
|
|
51
|
-
`),!c)return null;cn=ts(c,!0)}return cn.shift()})()},put_char:function(a,c){c===null||c===10?(k(Nt(a.output,0)),a.output=[]):c!=0&&a.output.push(c)},fsync:function(a){a.output&&a.output.length>0&&(k(Nt(a.output,0)),a.output=[])},ioctl_tcgets:function(a){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(a,c,l){return 0},ioctl_tiocgwinsz:function(a){return[24,80]}},default_tty1_ops:{put_char:function(a,c){c===null||c===10?(P(Nt(a.output,0)),a.output=[]):c!=0&&a.output.push(c)},fsync:function(a){a.output&&a.output.length>0&&(P(Nt(a.output,0)),a.output=[])}}},dn=a=>{Cr()},Te={ops_table:null,mount:a=>Te.createNode(null,"/",16895,0),createNode(a,c,l,h){if(f.isBlkdev(l)||f.isFIFO(l))throw new f.ErrnoError(63);Te.ops_table||(Te.ops_table={dir:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr,lookup:Te.node_ops.lookup,mknod:Te.node_ops.mknod,rename:Te.node_ops.rename,unlink:Te.node_ops.unlink,rmdir:Te.node_ops.rmdir,readdir:Te.node_ops.readdir,symlink:Te.node_ops.symlink},stream:{llseek:Te.stream_ops.llseek}},file:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr},stream:{llseek:Te.stream_ops.llseek,read:Te.stream_ops.read,write:Te.stream_ops.write,allocate:Te.stream_ops.allocate,mmap:Te.stream_ops.mmap,msync:Te.stream_ops.msync}},link:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr,readlink:Te.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Te.node_ops.getattr,setattr:Te.node_ops.setattr},stream:f.chrdev_stream_ops}});var T=f.createNode(a,c,l,h);return f.isDir(T.mode)?(T.node_ops=Te.ops_table.dir.node,T.stream_ops=Te.ops_table.dir.stream,T.contents={}):f.isFile(T.mode)?(T.node_ops=Te.ops_table.file.node,T.stream_ops=Te.ops_table.file.stream,T.usedBytes=0,T.contents=null):f.isLink(T.mode)?(T.node_ops=Te.ops_table.link.node,T.stream_ops=Te.ops_table.link.stream):f.isChrdev(T.mode)&&(T.node_ops=Te.ops_table.chrdev.node,T.stream_ops=Te.ops_table.chrdev.stream),T.timestamp=Date.now(),a&&(a.contents[c]=T,a.timestamp=T.timestamp),T},getFileDataAsTypedArray:a=>a.contents?a.contents.subarray?a.contents.subarray(0,a.usedBytes):new Uint8Array(a.contents):new Uint8Array(0),expandFileStorage(a,c){var l=a.contents?a.contents.length:0;if(!(l>=c)){c=Math.max(c,l*(l<1048576?2:1.125)>>>0),l!=0&&(c=Math.max(c,256));var h=a.contents;a.contents=new Uint8Array(c),a.usedBytes>0&&a.contents.set(h.subarray(0,a.usedBytes),0)}},resizeFileStorage(a,c){if(a.usedBytes!=c)if(c==0)a.contents=null,a.usedBytes=0;else{var l=a.contents;a.contents=new Uint8Array(c),l&&a.contents.set(l.subarray(0,Math.min(c,a.usedBytes))),a.usedBytes=c}},node_ops:{getattr(a){var c={};return c.dev=f.isChrdev(a.mode)?a.id:1,c.ino=a.id,c.mode=a.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=a.rdev,f.isDir(a.mode)?c.size=4096:f.isFile(a.mode)?c.size=a.usedBytes:f.isLink(a.mode)?c.size=a.link.length:c.size=0,c.atime=new Date(a.timestamp),c.mtime=new Date(a.timestamp),c.ctime=new Date(a.timestamp),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},setattr(a,c){c.mode!==void 0&&(a.mode=c.mode),c.timestamp!==void 0&&(a.timestamp=c.timestamp),c.size!==void 0&&Te.resizeFileStorage(a,c.size)},lookup(a,c){throw f.genericErrors[44]},mknod:(a,c,l,h)=>Te.createNode(a,c,l,h),rename(a,c,l){if(f.isDir(a.mode)){var h;try{h=f.lookupNode(c,l)}catch(y){}if(h)for(var T in h.contents)throw new f.ErrnoError(55)}delete a.parent.contents[a.name],a.parent.timestamp=Date.now(),a.name=l,c.contents[l]=a,c.timestamp=a.parent.timestamp,a.parent=c},unlink(a,c){delete a.contents[c],a.timestamp=Date.now()},rmdir(a,c){var l=f.lookupNode(a,c);for(var h in l.contents)throw new f.ErrnoError(55);delete a.contents[c],a.timestamp=Date.now()},readdir(a){var c=[".",".."];for(var l in a.contents)a.contents.hasOwnProperty(l)&&c.push(l);return c},symlink(a,c,l){var h=Te.createNode(a,c,41471,0);return h.link=l,h},readlink(a){if(!f.isLink(a.mode))throw new f.ErrnoError(28);return a.link}},stream_ops:{read(a,c,l,h,T){var y=a.node.contents;if(T>=a.node.usedBytes)return 0;var b=Math.min(a.node.usedBytes-T,h);if(b>8&&y.subarray)c.set(y.subarray(T,T+b),l);else for(var R=0;R<b;R++)c[l+R]=y[T+R];return b},write(a,c,l,h,T,y){if(!h)return 0;var b=a.node;if(b.timestamp=Date.now(),c.subarray&&(!b.contents||b.contents.subarray)){if(y)return b.contents=c.subarray(l,l+h),b.usedBytes=h,h;if(b.usedBytes===0&&T===0)return b.contents=c.slice(l,l+h),b.usedBytes=h,h;if(T+h<=b.usedBytes)return b.contents.set(c.subarray(l,l+h),T),h}if(Te.expandFileStorage(b,T+h),b.contents.subarray&&c.subarray)b.contents.set(c.subarray(l,l+h),T);else for(var R=0;R<h;R++)b.contents[T+R]=c[l+R];return b.usedBytes=Math.max(b.usedBytes,T+h),h},llseek(a,c,l){var h=c;if(l===1?h+=a.position:l===2&&f.isFile(a.node.mode)&&(h+=a.node.usedBytes),h<0)throw new f.ErrnoError(28);return h},allocate(a,c,l){Te.expandFileStorage(a.node,c+l),a.node.usedBytes=Math.max(a.node.usedBytes,c+l)},mmap(a,c,l,h,T){if(!f.isFile(a.node.mode))throw new f.ErrnoError(43);var y,b,R=a.node.contents;if(2&T||R.buffer!==Q.buffer){if((l>0||l+c<R.length)&&(R=R.subarray?R.subarray(l,l+c):Array.prototype.slice.call(R,l,l+c)),b=!0,!(y=dn()))throw new f.ErrnoError(48);Q.set(R,y)}else b=!1,y=R.byteOffset;return{ptr:y,allocated:b}},msync:(a,c,l,h,T)=>(Te.stream_ops.write(a,c,0,h,l,!1),0)}},Su=(a,c,l,h)=>{var T=h?"":`al ${a}`;n(a,y=>{var b;b=`Loading data file "${a}" failed (no arrayBuffer).`,y||Cr(b),c(new Uint8Array(y)),T&&co()},y=>{if(!l)throw`Loading data file "${a}" failed.`;l()}),T&&nn()},yu=o.preloadPlugins||[];function O(a,c){var l=0;return a&&(l|=365),c&&(l|=146),l}var f={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(a,c={})=>{if(!(a=Wt.resolve(a)))return{path:"",node:null};if((c=Object.assign({follow_mount:!0,recurse_count:0},c)).recurse_count>8)throw new f.ErrnoError(32);for(var l=a.split("/").filter(w=>!!w),h=f.root,T="/",y=0;y<l.length;y++){var b=y===l.length-1;if(b&&c.parent)break;if(h=f.lookupNode(h,l[y]),T=F.join2(T,l[y]),f.isMountpoint(h)&&(!b||b&&c.follow_mount)&&(h=h.mounted.root),!b||c.follow)for(var R=0;f.isLink(h.mode);){var M=f.readlink(T);if(T=Wt.resolve(F.dirname(T),M),h=f.lookupPath(T,{recurse_count:c.recurse_count+1}).node,R++>40)throw new f.ErrnoError(32)}}return{path:T,node:h}},getPath:a=>{for(var c;;){if(f.isRoot(a)){var l=a.mount.mountpoint;return c?l[l.length-1]!=="/"?`${l}/${c}`:l+c:l}c=c?`${a.name}/${c}`:a.name,a=a.parent}},hashName:(a,c)=>{for(var l=0,h=0;h<c.length;h++)l=(l<<5)-l+c.charCodeAt(h)|0;return(a+l>>>0)%f.nameTable.length},hashAddNode:a=>{var c=f.hashName(a.parent.id,a.name);a.name_next=f.nameTable[c],f.nameTable[c]=a},hashRemoveNode:a=>{var c=f.hashName(a.parent.id,a.name);if(f.nameTable[c]===a)f.nameTable[c]=a.name_next;else for(var l=f.nameTable[c];l;){if(l.name_next===a){l.name_next=a.name_next;break}l=l.name_next}},lookupNode:(a,c)=>{var l=f.mayLookup(a);if(l)throw new f.ErrnoError(l,a);for(var h=f.hashName(a.id,c),T=f.nameTable[h];T;T=T.name_next){var y=T.name;if(T.parent.id===a.id&&y===c)return T}return f.lookup(a,c)},createNode:(a,c,l,h)=>{var T=new f.FSNode(a,c,l,h);return f.hashAddNode(T),T},destroyNode:a=>{f.hashRemoveNode(a)},isRoot:a=>a===a.parent,isMountpoint:a=>!!a.mounted,isFile:a=>(61440&a)==32768,isDir:a=>(61440&a)==16384,isLink:a=>(61440&a)==40960,isChrdev:a=>(61440&a)==8192,isBlkdev:a=>(61440&a)==24576,isFIFO:a=>(61440&a)==4096,isSocket:a=>!(49152&~a),flagsToPermissionString:a=>{var c=["r","w","rw"][3&a];return 512&a&&(c+="w"),c},nodePermissions:(a,c)=>f.ignorePermissions||(!c.includes("r")||292&a.mode)&&(!c.includes("w")||146&a.mode)&&(!c.includes("x")||73&a.mode)?0:2,mayLookup:a=>{var c=f.nodePermissions(a,"x");return c||(a.node_ops.lookup?0:2)},mayCreate:(a,c)=>{try{return f.lookupNode(a,c),20}catch(l){}return f.nodePermissions(a,"wx")},mayDelete:(a,c,l)=>{var h;try{h=f.lookupNode(a,c)}catch(y){return y.errno}var T=f.nodePermissions(a,"wx");if(T)return T;if(l){if(!f.isDir(h.mode))return 54;if(f.isRoot(h)||f.getPath(h)===f.cwd())return 10}else if(f.isDir(h.mode))return 31;return 0},mayOpen:(a,c)=>a?f.isLink(a.mode)?32:f.isDir(a.mode)&&(f.flagsToPermissionString(c)!=="r"||512&c)?31:f.nodePermissions(a,f.flagsToPermissionString(c)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var a=0;a<=f.MAX_OPEN_FDS;a++)if(!f.streams[a])return a;throw new f.ErrnoError(33)},getStreamChecked:a=>{var c=f.getStream(a);if(!c)throw new f.ErrnoError(8);return c},getStream:a=>f.streams[a],createStream:(a,c=-1)=>(f.FSStream||(f.FSStream=function(){this.shared={}},f.FSStream.prototype={},Object.defineProperties(f.FSStream.prototype,{object:{get(){return this.node},set(l){this.node=l}},isRead:{get(){return(2097155&this.flags)!=1}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(l){this.shared.flags=l}},position:{get(){return this.shared.position},set(l){this.shared.position=l}}})),a=Object.assign(new f.FSStream,a),c==-1&&(c=f.nextfd()),a.fd=c,f.streams[c]=a,a),closeStream:a=>{f.streams[a]=null},chrdev_stream_ops:{open:a=>{var c=f.getDevice(a.node.rdev);a.stream_ops=c.stream_ops,a.stream_ops.open&&a.stream_ops.open(a)},llseek:()=>{throw new f.ErrnoError(70)}},major:a=>a>>8,minor:a=>255&a,makedev:(a,c)=>a<<8|c,registerDevice:(a,c)=>{f.devices[a]={stream_ops:c}},getDevice:a=>f.devices[a],getMounts:a=>{for(var c=[],l=[a];l.length;){var h=l.pop();c.push(h),l.push.apply(l,h.mounts)}return c},syncfs:(a,c)=>{typeof a=="function"&&(c=a,a=!1),f.syncFSRequests++,f.syncFSRequests>1&&P(`warning: ${f.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var l=f.getMounts(f.root.mount),h=0;function T(b){return f.syncFSRequests--,c(b)}function y(b){if(b)return y.errored?void 0:(y.errored=!0,T(b));++h>=l.length&&T(null)}l.forEach(b=>{if(!b.type.syncfs)return y(null);b.type.syncfs(b,a,y)})},mount:(a,c,l)=>{var h,T=l==="/",y=!l;if(T&&f.root)throw new f.ErrnoError(10);if(!T&&!y){var b=f.lookupPath(l,{follow_mount:!1});if(l=b.path,h=b.node,f.isMountpoint(h))throw new f.ErrnoError(10);if(!f.isDir(h.mode))throw new f.ErrnoError(54)}var R={type:a,opts:c,mountpoint:l,mounts:[]},M=a.mount(R);return M.mount=R,R.root=M,T?f.root=M:h&&(h.mounted=R,h.mount&&h.mount.mounts.push(R)),M},unmount:a=>{var c=f.lookupPath(a,{follow_mount:!1});if(!f.isMountpoint(c.node))throw new f.ErrnoError(28);var l=c.node,h=l.mounted,T=f.getMounts(h);Object.keys(f.nameTable).forEach(b=>{for(var R=f.nameTable[b];R;){var M=R.name_next;T.includes(R.mount)&&f.destroyNode(R),R=M}}),l.mounted=null;var y=l.mount.mounts.indexOf(h);l.mount.mounts.splice(y,1)},lookup:(a,c)=>a.node_ops.lookup(a,c),mknod:(a,c,l)=>{var h=f.lookupPath(a,{parent:!0}).node,T=F.basename(a);if(!T||T==="."||T==="..")throw new f.ErrnoError(28);var y=f.mayCreate(h,T);if(y)throw new f.ErrnoError(y);if(!h.node_ops.mknod)throw new f.ErrnoError(63);return h.node_ops.mknod(h,T,c,l)},create:(a,c)=>(c=c!==void 0?c:438,c&=4095,c|=32768,f.mknod(a,c,0)),mkdir:(a,c)=>(c=c!==void 0?c:511,c&=1023,c|=16384,f.mknod(a,c,0)),mkdirTree:(a,c)=>{for(var l=a.split("/"),h="",T=0;T<l.length;++T)if(l[T]){h+="/"+l[T];try{f.mkdir(h,c)}catch(y){if(y.errno!=20)throw y}}},mkdev:(a,c,l)=>(l===void 0&&(l=c,c=438),c|=8192,f.mknod(a,c,l)),symlink:(a,c)=>{if(!Wt.resolve(a))throw new f.ErrnoError(44);var l=f.lookupPath(c,{parent:!0}).node;if(!l)throw new f.ErrnoError(44);var h=F.basename(c),T=f.mayCreate(l,h);if(T)throw new f.ErrnoError(T);if(!l.node_ops.symlink)throw new f.ErrnoError(63);return l.node_ops.symlink(l,h,a)},rename:(a,c)=>{var l,h,T=F.dirname(a),y=F.dirname(c),b=F.basename(a),R=F.basename(c);if(l=f.lookupPath(a,{parent:!0}).node,h=f.lookupPath(c,{parent:!0}).node,!l||!h)throw new f.ErrnoError(44);if(l.mount!==h.mount)throw new f.ErrnoError(75);var M,w=f.lookupNode(l,b),z=Wt.relative(a,y);if(z.charAt(0)!==".")throw new f.ErrnoError(28);if((z=Wt.relative(c,T)).charAt(0)!==".")throw new f.ErrnoError(55);try{M=f.lookupNode(h,R)}catch(re){}if(w!==M){var ie=f.isDir(w.mode),oe=f.mayDelete(l,b,ie);if(oe)throw new f.ErrnoError(oe);if(oe=M?f.mayDelete(h,R,ie):f.mayCreate(h,R))throw new f.ErrnoError(oe);if(!l.node_ops.rename)throw new f.ErrnoError(63);if(f.isMountpoint(w)||M&&f.isMountpoint(M))throw new f.ErrnoError(10);if(h!==l&&(oe=f.nodePermissions(l,"w")))throw new f.ErrnoError(oe);f.hashRemoveNode(w);try{l.node_ops.rename(w,h,R)}catch(re){throw re}finally{f.hashAddNode(w)}}},rmdir:a=>{var c=f.lookupPath(a,{parent:!0}).node,l=F.basename(a),h=f.lookupNode(c,l),T=f.mayDelete(c,l,!0);if(T)throw new f.ErrnoError(T);if(!c.node_ops.rmdir)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);c.node_ops.rmdir(c,l),f.destroyNode(h)},readdir:a=>{var c=f.lookupPath(a,{follow:!0}).node;if(!c.node_ops.readdir)throw new f.ErrnoError(54);return c.node_ops.readdir(c)},unlink:a=>{var c=f.lookupPath(a,{parent:!0}).node;if(!c)throw new f.ErrnoError(44);var l=F.basename(a),h=f.lookupNode(c,l),T=f.mayDelete(c,l,!1);if(T)throw new f.ErrnoError(T);if(!c.node_ops.unlink)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);c.node_ops.unlink(c,l),f.destroyNode(h)},readlink:a=>{var c=f.lookupPath(a).node;if(!c)throw new f.ErrnoError(44);if(!c.node_ops.readlink)throw new f.ErrnoError(28);return Wt.resolve(f.getPath(c.parent),c.node_ops.readlink(c))},stat:(a,c)=>{var l=f.lookupPath(a,{follow:!c}).node;if(!l)throw new f.ErrnoError(44);if(!l.node_ops.getattr)throw new f.ErrnoError(63);return l.node_ops.getattr(l)},lstat:a=>f.stat(a,!0),chmod:(a,c,l)=>{var h;if(typeof a=="string"?h=f.lookupPath(a,{follow:!l}).node:h=a,!h.node_ops.setattr)throw new f.ErrnoError(63);h.node_ops.setattr(h,{mode:4095&c|-4096&h.mode,timestamp:Date.now()})},lchmod:(a,c)=>{f.chmod(a,c,!0)},fchmod:(a,c)=>{var l=f.getStreamChecked(a);f.chmod(l.node,c)},chown:(a,c,l,h)=>{var T;if(typeof a=="string"?T=f.lookupPath(a,{follow:!h}).node:T=a,!T.node_ops.setattr)throw new f.ErrnoError(63);T.node_ops.setattr(T,{timestamp:Date.now()})},lchown:(a,c,l)=>{f.chown(a,c,l,!0)},fchown:(a,c,l)=>{var h=f.getStreamChecked(a);f.chown(h.node,c,l)},truncate:(a,c)=>{if(c<0)throw new f.ErrnoError(28);var l;if(typeof a=="string"?l=f.lookupPath(a,{follow:!0}).node:l=a,!l.node_ops.setattr)throw new f.ErrnoError(63);if(f.isDir(l.mode))throw new f.ErrnoError(31);if(!f.isFile(l.mode))throw new f.ErrnoError(28);var h=f.nodePermissions(l,"w");if(h)throw new f.ErrnoError(h);l.node_ops.setattr(l,{size:c,timestamp:Date.now()})},ftruncate:(a,c)=>{var l=f.getStreamChecked(a);if(!(2097155&l.flags))throw new f.ErrnoError(28);f.truncate(l.node,c)},utime:(a,c,l)=>{var h=f.lookupPath(a,{follow:!0}).node;h.node_ops.setattr(h,{timestamp:Math.max(c,l)})},open:(a,c,l)=>{if(a==="")throw new f.ErrnoError(44);var h;if(l=l===void 0?438:l,l=64&(c=typeof c=="string"?function(R){var M={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[R];if(M===void 0)throw new Error(`Unknown file open mode: ${R}`);return M}(c):c)?4095&l|32768:0,typeof a=="object")h=a;else{a=F.normalize(a);try{h=f.lookupPath(a,{follow:!(131072&c)}).node}catch(R){}}var T=!1;if(64&c)if(h){if(128&c)throw new f.ErrnoError(20)}else h=f.mknod(a,l,0),T=!0;if(!h)throw new f.ErrnoError(44);if(f.isChrdev(h.mode)&&(c&=-513),65536&c&&!f.isDir(h.mode))throw new f.ErrnoError(54);if(!T){var y=f.mayOpen(h,c);if(y)throw new f.ErrnoError(y)}512&c&&!T&&f.truncate(h,0),c&=-131713;var b=f.createStream({node:h,path:f.getPath(h),flags:c,seekable:!0,position:0,stream_ops:h.stream_ops,ungotten:[],error:!1});return b.stream_ops.open&&b.stream_ops.open(b),!o.logReadFiles||1&c||(f.readFiles||(f.readFiles={}),a in f.readFiles||(f.readFiles[a]=1)),b},close:a=>{if(f.isClosed(a))throw new f.ErrnoError(8);a.getdents&&(a.getdents=null);try{a.stream_ops.close&&a.stream_ops.close(a)}catch(c){throw c}finally{f.closeStream(a.fd)}a.fd=null},isClosed:a=>a.fd===null,llseek:(a,c,l)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(!a.seekable||!a.stream_ops.llseek)throw new f.ErrnoError(70);if(l!=0&&l!=1&&l!=2)throw new f.ErrnoError(28);return a.position=a.stream_ops.llseek(a,c,l),a.ungotten=[],a.position},read:(a,c,l,h,T)=>{if(h<0||T<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if((2097155&a.flags)==1)throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.read)throw new f.ErrnoError(28);var y=T!==void 0;if(y){if(!a.seekable)throw new f.ErrnoError(70)}else T=a.position;var b=a.stream_ops.read(a,c,l,h,T);return y||(a.position+=b),b},write:(a,c,l,h,T,y)=>{if(h<0||T<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.write)throw new f.ErrnoError(28);a.seekable&&1024&a.flags&&f.llseek(a,0,2);var b=T!==void 0;if(b){if(!a.seekable)throw new f.ErrnoError(70)}else T=a.position;var R=a.stream_ops.write(a,c,l,h,T,y);return b||(a.position+=R),R},allocate:(a,c,l)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(c<0||l<=0)throw new f.ErrnoError(28);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(!f.isFile(a.node.mode)&&!f.isDir(a.node.mode))throw new f.ErrnoError(43);if(!a.stream_ops.allocate)throw new f.ErrnoError(138);a.stream_ops.allocate(a,c,l)},mmap:(a,c,l,h,T)=>{if(2&h&&!(2&T)&&(2097155&a.flags)!=2)throw new f.ErrnoError(2);if((2097155&a.flags)==1)throw new f.ErrnoError(2);if(!a.stream_ops.mmap)throw new f.ErrnoError(43);return a.stream_ops.mmap(a,c,l,h,T)},msync:(a,c,l,h,T)=>a.stream_ops.msync?a.stream_ops.msync(a,c,l,h,T):0,munmap:a=>0,ioctl:(a,c,l)=>{if(!a.stream_ops.ioctl)throw new f.ErrnoError(59);return a.stream_ops.ioctl(a,c,l)},readFile:(a,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,h=f.open(a,c.flags),T=f.stat(a).size,y=new Uint8Array(T);return f.read(h,y,0,T,0),c.encoding==="utf8"?l=Nt(y,0):c.encoding==="binary"&&(l=y),f.close(h),l},writeFile:(a,c,l={})=>{l.flags=l.flags||577;var h=f.open(a,l.flags,l.mode);if(typeof c=="string"){var T=new Uint8Array(lo(c)+1),y=mo(c,T,0,T.length);f.write(h,T,0,y,void 0,l.canOwn)}else{if(!ArrayBuffer.isView(c))throw new Error("Unsupported data type");f.write(h,c,0,c.byteLength,void 0,l.canOwn)}f.close(h)},cwd:()=>f.currentPath,chdir:a=>{var c=f.lookupPath(a,{follow:!0});if(c.node===null)throw new f.ErrnoError(44);if(!f.isDir(c.node.mode))throw new f.ErrnoError(54);var l=f.nodePermissions(c.node,"x");if(l)throw new f.ErrnoError(l);f.currentPath=c.path},createDefaultDirectories:()=>{f.mkdir("/tmp"),f.mkdir("/home"),f.mkdir("/home/web_user")},createDefaultDevices:()=>{f.mkdir("/dev"),f.registerDevice(f.makedev(1,3),{read:()=>0,write:(h,T,y,b,R)=>b}),f.mkdev("/dev/null",f.makedev(1,3)),ar.register(f.makedev(5,0),ar.default_tty_ops),ar.register(f.makedev(6,0),ar.default_tty1_ops),f.mkdev("/dev/tty",f.makedev(5,0)),f.mkdev("/dev/tty1",f.makedev(6,0));var a=new Uint8Array(1024),c=0,l=()=>(c===0&&(c=an(a).byteLength),a[--c]);f.createDevice("/dev","random",l),f.createDevice("/dev","urandom",l),f.mkdir("/dev/shm"),f.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{f.mkdir("/proc");var a=f.mkdir("/proc/self");f.mkdir("/proc/self/fd"),f.mount({mount:()=>{var c=f.createNode(a,"fd",16895,73);return c.node_ops={lookup:(l,h)=>{var T=+h,y=f.getStreamChecked(T),b={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>y.path}};return b.parent=b,b}},c}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?f.createDevice("/dev","stdin",o.stdin):f.symlink("/dev/tty","/dev/stdin"),o.stdout?f.createDevice("/dev","stdout",null,o.stdout):f.symlink("/dev/tty","/dev/stdout"),o.stderr?f.createDevice("/dev","stderr",null,o.stderr):f.symlink("/dev/tty1","/dev/stderr"),f.open("/dev/stdin",0),f.open("/dev/stdout",1),f.open("/dev/stderr",1)},ensureErrnoError:()=>{f.ErrnoError||(f.ErrnoError=function(a,c){this.name="ErrnoError",this.node=c,this.setErrno=function(l){this.errno=l},this.setErrno(a),this.message="FS error"},f.ErrnoError.prototype=new Error,f.ErrnoError.prototype.constructor=f.ErrnoError,[44].forEach(a=>{f.genericErrors[a]=new f.ErrnoError(a),f.genericErrors[a].stack="<generic error, no stack>"}))},staticInit:()=>{f.ensureErrnoError(),f.nameTable=new Array(4096),f.mount(Te,{},"/"),f.createDefaultDirectories(),f.createDefaultDevices(),f.createSpecialDirectories(),f.filesystems={MEMFS:Te}},init:(a,c,l)=>{f.init.initialized=!0,f.ensureErrnoError(),o.stdin=a||o.stdin,o.stdout=c||o.stdout,o.stderr=l||o.stderr,f.createStandardStreams()},quit:()=>{f.init.initialized=!1;for(var a=0;a<f.streams.length;a++){var c=f.streams[a];c&&f.close(c)}},findObject:(a,c)=>{var l=f.analyzePath(a,c);return l.exists?l.object:null},analyzePath:(a,c)=>{try{a=(h=f.lookupPath(a,{follow:!c})).path}catch(T){}var l={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var h=f.lookupPath(a,{parent:!0});l.parentExists=!0,l.parentPath=h.path,l.parentObject=h.node,l.name=F.basename(a),h=f.lookupPath(a,{follow:!c}),l.exists=!0,l.path=h.path,l.object=h.node,l.name=h.node.name,l.isRoot=h.path==="/"}catch(T){l.error=T.errno}return l},createPath:(a,c,l,h)=>{a=typeof a=="string"?a:f.getPath(a);for(var T=c.split("/").reverse();T.length;){var y=T.pop();if(y){var b=F.join2(a,y);try{f.mkdir(b)}catch(R){}a=b}}return b},createFile:(a,c,l,h,T)=>{var y=F.join2(typeof a=="string"?a:f.getPath(a),c),b=O(h,T);return f.create(y,b)},createDataFile:(a,c,l,h,T,y)=>{var b=c;a&&(a=typeof a=="string"?a:f.getPath(a),b=c?F.join2(a,c):a);var R=O(h,T),M=f.create(b,R);if(l){if(typeof l=="string"){for(var w=new Array(l.length),z=0,ie=l.length;z<ie;++z)w[z]=l.charCodeAt(z);l=w}f.chmod(M,146|R);var oe=f.open(M,577);f.write(oe,l,0,l.length,0,y),f.close(oe),f.chmod(M,R)}return M},createDevice:(a,c,l,h)=>{var T=F.join2(typeof a=="string"?a:f.getPath(a),c),y=O(!!l,!!h);f.createDevice.major||(f.createDevice.major=64);var b=f.makedev(f.createDevice.major++,0);return f.registerDevice(b,{open:R=>{R.seekable=!1},close:R=>{h&&h.buffer&&h.buffer.length&&h(10)},read:(R,M,w,z,ie)=>{for(var oe=0,re=0;re<z;re++){var Ae;try{Ae=l()}catch(Ve){throw new f.ErrnoError(29)}if(Ae===void 0&&oe===0)throw new f.ErrnoError(6);if(Ae==null)break;oe++,M[w+re]=Ae}return oe&&(R.node.timestamp=Date.now()),oe},write:(R,M,w,z,ie)=>{for(var oe=0;oe<z;oe++)try{h(M[w+oe])}catch(re){throw new f.ErrnoError(29)}return z&&(R.node.timestamp=Date.now()),oe}}),f.mkdev(T,y,b)},forceLoadFile:a=>{if(a.isDevice||a.isFolder||a.link||a.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(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{a.contents=ts(s(a.url),!0),a.usedBytes=a.contents.length}catch(c){throw new f.ErrnoError(29)}},createLazyFile:(a,c,l,h,T)=>{function y(){this.lengthKnown=!1,this.chunks=[]}if(y.prototype.get=function(ie){if(!(ie>this.length-1||ie<0)){var oe=ie%this.chunkSize,re=ie/this.chunkSize|0;return this.getter(re)[oe]}},y.prototype.setDataGetter=function(ie){this.getter=ie},y.prototype.cacheLength=function(){var ie=new XMLHttpRequest;if(ie.open("HEAD",l,!1),ie.send(null),!(ie.status>=200&&ie.status<300||ie.status===304))throw new Error("Couldn't load "+l+". Status: "+ie.status);var oe,re=Number(ie.getResponseHeader("Content-length")),Ae=(oe=ie.getResponseHeader("Accept-Ranges"))&&oe==="bytes",Ve=(oe=ie.getResponseHeader("Content-Encoding"))&&oe==="gzip",Ne=1048576;Ae||(Ne=re);var Ke=this;Ke.setDataGetter(ze=>{var pt=ze*Ne,Mi=(ze+1)*Ne-1;if(Mi=Math.min(Mi,re-1),Ke.chunks[ze]===void 0&&(Ke.chunks[ze]=((rr,To)=>{if(rr>To)throw new Error("invalid range ("+rr+", "+To+") or no bytes requested!");if(To>re-1)throw new Error("only "+re+" bytes available! programmer error!");var ot=new XMLHttpRequest;if(ot.open("GET",l,!1),re!==Ne&&ot.setRequestHeader("Range","bytes="+rr+"-"+To),ot.responseType="arraybuffer",ot.overrideMimeType&&ot.overrideMimeType("text/plain; charset=x-user-defined"),ot.send(null),!(ot.status>=200&&ot.status<300||ot.status===304))throw new Error("Couldn't load "+l+". Status: "+ot.status);return ot.response!==void 0?new Uint8Array(ot.response||[]):ts(ot.responseText||"",!0)})(pt,Mi)),Ke.chunks[ze]===void 0)throw new Error("doXHR failed!");return Ke.chunks[ze]}),!Ve&&re||(Ne=re=1,re=this.getter(0).length,Ne=re,k("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=re,this._chunkSize=Ne,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!I)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var b=new y;Object.defineProperties(b,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var R={isDevice:!1,contents:b}}else R={isDevice:!1,url:l};var M=f.createFile(a,c,R,h,T);R.contents?M.contents=R.contents:R.url&&(M.contents=null,M.url=R.url),Object.defineProperties(M,{usedBytes:{get:function(){return this.contents.length}}});var w={};function z(ie,oe,re,Ae,Ve){var Ne=ie.node.contents;if(Ve>=Ne.length)return 0;var Ke=Math.min(Ne.length-Ve,Ae);if(Ne.slice)for(var ze=0;ze<Ke;ze++)oe[re+ze]=Ne[Ve+ze];else for(ze=0;ze<Ke;ze++)oe[re+ze]=Ne.get(Ve+ze);return Ke}return Object.keys(M.stream_ops).forEach(ie=>{var oe=M.stream_ops[ie];w[ie]=function(){return f.forceLoadFile(M),oe.apply(null,arguments)}}),w.read=(ie,oe,re,Ae,Ve)=>(f.forceLoadFile(M),z(ie,oe,re,Ae,Ve)),w.mmap=(ie,oe,re,Ae,Ve)=>{f.forceLoadFile(M);var Ne=dn();if(!Ne)throw new f.ErrnoError(48);return z(ie,Q,Ne,oe,re),{ptr:Ne,allocated:!0}},M.stream_ops=w,M}},Ai=(a,c)=>a?Nt(De,a,c):"",_t={DEFAULT_POLLMASK:5,calculateAt:function(a,c,l){if(F.isAbs(c))return c;var h;if(a===-100?h=f.cwd():h=_t.getStreamFromFD(a).path,c.length==0){if(!l)throw new f.ErrnoError(44);return h}return F.join2(h,c)},doStat:function(a,c,l){try{var h=a(c)}catch(R){if(R&&R.node&&F.normalize(c)!==F.normalize(f.getPath(R.node)))return-54;throw R}xe[l>>2]=h.dev,xe[l+4>>2]=h.mode,Le[l+8>>2]=h.nlink,xe[l+12>>2]=h.uid,xe[l+16>>2]=h.gid,xe[l+20>>2]=h.rdev,Ge=[h.size>>>0,(ge=h.size,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[l+24>>2]=Ge[0],xe[l+28>>2]=Ge[1],xe[l+32>>2]=4096,xe[l+36>>2]=h.blocks;var T=h.atime.getTime(),y=h.mtime.getTime(),b=h.ctime.getTime();return Ge=[Math.floor(T/1e3)>>>0,(ge=Math.floor(T/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[l+40>>2]=Ge[0],xe[l+44>>2]=Ge[1],Le[l+48>>2]=T%1e3*1e3,Ge=[Math.floor(y/1e3)>>>0,(ge=Math.floor(y/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[l+56>>2]=Ge[0],xe[l+60>>2]=Ge[1],Le[l+64>>2]=y%1e3*1e3,Ge=[Math.floor(b/1e3)>>>0,(ge=Math.floor(b/1e3),+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[l+72>>2]=Ge[0],xe[l+76>>2]=Ge[1],Le[l+80>>2]=b%1e3*1e3,Ge=[h.ino>>>0,(ge=h.ino,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[l+88>>2]=Ge[0],xe[l+92>>2]=Ge[1],0},doMsync:function(a,c,l,h,T){if(!f.isFile(c.node.mode))throw new f.ErrnoError(43);if(2&h)return 0;var y=De.slice(a,a+l);f.msync(c,y,T,l,h)},varargs:void 0,get:()=>(_t.varargs+=4,xe[_t.varargs-4>>2]),getStr:a=>Ai(a),getStreamFromFD:function(a){return f.getStreamChecked(a)}};function qr(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`)}}var Ba=void 0;function St(a){for(var c="",l=a;De[l];)c+=Ba[De[l++]];return c}var bi={},tr={},rs={},Ri=void 0;function Ue(a){throw new Ri(a)}var Ha=void 0;function zt(a){throw new Ha(a)}function po(a,c,l){function h(R){var M=l(R);M.length!==a.length&&zt("Mismatched type converter count");for(var w=0;w<a.length;++w)cr(a[w],M[w])}a.forEach(function(R){rs[R]=c});var T=new Array(c.length),y=[],b=0;c.forEach((R,M)=>{tr.hasOwnProperty(R)?T[M]=tr[R]:(y.push(R),bi.hasOwnProperty(R)||(bi[R]=[]),bi[R].push(()=>{T[M]=tr[R],++b===y.length&&h(T)}))}),y.length===0&&h(T)}function cr(a,c,l={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(h,T,y={}){var b=T.name;if(h||Ue(`type "${b}" must have a positive integer typeid pointer`),tr.hasOwnProperty(h)){if(y.ignoreDuplicateRegistrations)return;Ue(`Cannot register type '${b}' twice`)}if(tr[h]=T,delete rs[h],bi.hasOwnProperty(h)){var R=bi[h];delete bi[h],R.forEach(M=>M())}}(a,c,l)}function is(a){if(!(this instanceof wr)||!(a instanceof wr))return!1;for(var c=this.$$.ptrType.registeredClass,l=this.$$.ptr,h=a.$$.ptrType.registeredClass,T=a.$$.ptr;c.baseClass;)l=c.upcast(l),c=c.baseClass;for(;h.baseClass;)T=h.upcast(T),h=h.baseClass;return c===h&&l===T}function ho(a){Ue(a.$$.ptrType.registeredClass.name+" instance already deleted")}var os=!1;function Wa(a){}function ss(a){a.count.value-=1,a.count.value===0&&function(c){c.smartPtr?c.smartPtrType.rawDestructor(c.smartPtr):c.ptrType.registeredClass.rawDestructor(c.ptr)}(a)}function Ga(a,c,l){if(c===l)return a;if(l.baseClass===void 0)return null;var h=Ga(a,c,l.baseClass);return h===null?null:l.downcast(h)}var ja={};function Au(){return Object.keys(Nr).length}function ns(){var a=[];for(var c in Nr)Nr.hasOwnProperty(c)&&a.push(Nr[c]);return a}var fo=[];function un(){for(;fo.length;){var a=fo.pop();a.$$.deleteScheduled=!1,a.delete()}}var go=void 0;function dr(a){go=a,fo.length&&go&&go(un)}var Nr={};function qa(a,c){return c=function(l,h){for(h===void 0&&Ue("ptr should not be undefined");l.baseClass;)h=l.upcast(h),l=l.baseClass;return h}(a,c),Nr[c]}function as(a,c){return c.ptrType&&c.ptr||zt("makeClassHandle requires ptr and ptrType"),!!c.smartPtrType!=!!c.smartPtr&&zt("Both smartPtrType and smartPtr must be specified"),c.count={value:1},ur(Object.create(a,{$$:{value:c}}))}function bu(a){var c=this.getPointee(a);if(!c)return this.destructor(a),null;var l=qa(this.registeredClass,c);if(l!==void 0){if(l.$$.count.value===0)return l.$$.ptr=c,l.$$.smartPtr=a,l.clone();var h=l.clone();return this.destructor(a),h}function T(){return this.isSmartPointer?as(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:c,smartPtrType:this,smartPtr:a}):as(this.registeredClass.instancePrototype,{ptrType:this,ptr:a})}var y,b=this.registeredClass.getActualType(c),R=ja[b];if(!R)return T.call(this);y=this.isConst?R.constPointerType:R.pointerType;var M=Ga(c,this.registeredClass,y.registeredClass);return M===null?T.call(this):this.isSmartPointer?as(y.registeredClass.instancePrototype,{ptrType:y,ptr:M,smartPtrType:this,smartPtr:a}):as(y.registeredClass.instancePrototype,{ptrType:y,ptr:M})}var ur=function(a){return typeof FinalizationRegistry=="undefined"?(ur=c=>c,a):(os=new FinalizationRegistry(c=>{ss(c.$$)}),Wa=c=>os.unregister(c),(ur=c=>{var l=c.$$;if(l.smartPtr){var h={$$:l};os.register(c,h,c)}return c})(a))};function Ja(){if(this.$$.ptr||ho(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var a,c=ur(Object.create(Object.getPrototypeOf(this),{$$:{value:(a=this.$$,{count:a.count,deleteScheduled:a.deleteScheduled,preservePointerOnDelete:a.preservePointerOnDelete,ptr:a.ptr,ptrType:a.ptrType,smartPtr:a.smartPtr,smartPtrType:a.smartPtrType})}}));return c.$$.count.value+=1,c.$$.deleteScheduled=!1,c}function za(){this.$$.ptr||ho(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ue("Object already scheduled for deletion"),Wa(this),ss(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ln(){return!this.$$.ptr}function Xa(){return this.$$.ptr||ho(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ue("Object already scheduled for deletion"),fo.push(this),fo.length===1&&go&&go(un),this.$$.deleteScheduled=!0,this}function wr(){}var Qa=48,Ya=57;function Eo(a){if(a===void 0)return"_unknown";var c=(a=a.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return c>=Qa&&c<=Ya?`_${a}`:a}function Vt(a,c){return a=Eo(a),{[a]:function(){return c.apply(this,arguments)}}[a]}function mn(a,c,l){if(a[c].overloadTable===void 0){var h=a[c];a[c]=function(){return a[c].overloadTable.hasOwnProperty(arguments.length)||Ue(`Function '${l}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[c].overloadTable})!`),a[c].overloadTable[arguments.length].apply(this,arguments)},a[c].overloadTable=[],a[c].overloadTable[h.argCount]=h}}function Ru(a,c,l,h,T,y,b,R){this.name=a,this.constructor=c,this.instancePrototype=l,this.rawDestructor=h,this.baseClass=T,this.getActualType=y,this.upcast=b,this.downcast=R,this.pureVirtualFunctions=[]}function vi(a,c,l){for(;c!==l;)c.upcast||Ue(`Expected null or instance of ${l.name}, got an instance of ${c.name}`),a=c.upcast(a),c=c.baseClass;return a}function pn(a,c){if(c===null)return this.isReference&&Ue(`null is not a valid ${this.name}`),0;c.$$||Ue(`Cannot pass "${ls(c)}" as a ${this.name}`),c.$$.ptr||Ue(`Cannot pass deleted object as a pointer of type ${this.name}`);var l=c.$$.ptrType.registeredClass;return vi(c.$$.ptr,l,this.registeredClass)}function vu(a,c){var l;if(c===null)return this.isReference&&Ue(`null is not a valid ${this.name}`),this.isSmartPointer?(l=this.rawConstructor(),a!==null&&a.push(this.rawDestructor,l),l):0;c.$$||Ue(`Cannot pass "${ls(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 h=c.$$.ptrType.registeredClass;if(l=vi(c.$$.ptr,h,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 T=c.clone();l=this.rawShare(l,Ni.toHandle(function(){T.delete()})),a!==null&&a.push(this.rawDestructor,l)}break;default:Ue("Unsupporting sharing policy")}return l}function Cu(a,c){if(c===null)return this.isReference&&Ue(`null is not a valid ${this.name}`),0;c.$$||Ue(`Cannot pass "${ls(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;return vi(c.$$.ptr,l,this.registeredClass)}function _o(a){return this.fromWireType(xe[a>>2])}function Za(a){return this.rawGetPointee&&(a=this.rawGetPointee(a)),a}function Du(a){this.rawDestructor&&this.rawDestructor(a)}function Ka(a){a!==null&&a.delete()}function lr(a,c,l,h,T,y,b,R,M,w,z){this.name=a,this.registeredClass=c,this.isReference=l,this.isConst=h,this.isSmartPointer=T,this.pointeeType=y,this.sharingPolicy=b,this.rawGetPointee=R,this.rawConstructor=M,this.rawShare=w,this.rawDestructor=z,T||c.baseClass!==void 0?this.toWireType=vu:h?(this.toWireType=pn,this.destructorFunction=null):(this.toWireType=Cu,this.destructorFunction=null)}var cs=[],ec=a=>{var c=cs[a];return c||(a>=cs.length&&(cs.length=a+1),cs[a]=c=on.get(a)),c},Nu=(a,c,l)=>a.includes("j")?((h,T,y)=>{var b=o["dynCall_"+h];return y&&y.length?b.apply(null,[T].concat(y)):b.call(null,T)})(a,c,l):ec(c).apply(null,l),wu=(a,c)=>{var l=[];return function(){return l.length=0,Object.assign(l,arguments),Nu(a,c,l)}};function Ci(a,c){var l=(a=St(a)).includes("j")?wu(a,c):ec(c);return typeof l!="function"&&Ue(`unknown function pointer with signature ${a}: ${c}`),l}var tc=void 0;function ds(a){var c=pr(a),l=St(c);return yt(c),l}function us(a,c){var l=[],h={};throw c.forEach(function T(y){h[y]||tr[y]||(rs[y]?rs[y].forEach(T):(l.push(y),h[y]=!0))}),new tc(`${a}: `+l.map(ds).join([", "]))}function hn(a,c){for(var l=[],h=0;h<a;h++)l.push(Le[c+4*h>>2]);return l}function rc(a){for(;a.length;){var c=a.pop();a.pop()(c)}}function fn(a,c){if(!(a instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof a} which is not a function`);var l=Vt(a.name||"unknownFunctionName",function(){});l.prototype=a.prototype;var h=new l,T=a.apply(h,c);return T instanceof Object?T:h}function Di(a,c,l,h,T,y){var b=c.length;b<2&&Ue("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var R=c[1]!==null&&l!==null,M=!1,w=1;w<c.length;++w)if(c[w]!==null&&c[w].destructorFunction===void 0){M=!0;break}var z=c[0].name!=="void",ie="",oe="";for(w=0;w<b-2;++w)ie+=(w!==0?", ":"")+"arg"+w,oe+=(w!==0?", ":"")+"arg"+w+"Wired";var re=`
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
throwBindingError('function ${a} called with ${arguments.length} arguments, expected ${b-2} args!');
|
|
55
|
-
}`;M&&(re+=`var destructors = [];
|
|
56
|
-
`);var Ae=M?"destructors":"null",Ve=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Ne=[Ue,h,T,rc,c[0],c[1]];for(R&&(re+="var thisWired = classParam.toWireType("+Ae+`, this);
|
|
57
|
-
`),w=0;w<b-2;++w)re+="var arg"+w+"Wired = argType"+w+".toWireType("+Ae+", arg"+w+"); // "+c[w+2].name+`
|
|
58
|
-
`,Ve.push("argType"+w),Ne.push(c[w+2]);if(R&&(oe="thisWired"+(oe.length>0?", ":"")+oe),re+=(z||y?"var rv = ":"")+"invoker(fn"+(oe.length>0?", ":"")+oe+`);
|
|
59
|
-
`,M)re+=`runDestructors(destructors);
|
|
60
|
-
`;else for(w=R?1:2;w<c.length;++w){var Ke=w===1?"thisWired":"arg"+(w-2)+"Wired";c[w].destructorFunction!==null&&(re+=Ke+"_dtor("+Ke+"); // "+c[w].name+`
|
|
61
|
-
`,Ve.push(Ke+"_dtor"),Ne.push(c[w].destructorFunction))}return z&&(re+=`var ret = retType.fromWireType(rv);
|
|
62
|
-
return ret;
|
|
63
|
-
`),re+=`}
|
|
64
|
-
`,Ve.push(re),fn(Function,Ve).apply(null,Ne)}function ic(){this.allocated=[void 0],this.freelist=[]}var wt=new ic;function oc(a){a>=wt.reserved&&--wt.get(a).refcount==0&&wt.free(a)}function mr(){for(var a=0,c=wt.reserved;c<wt.allocated.length;++c)wt.allocated[c]!==void 0&&++a;return a}var Ni={toValue:a=>(a||Ue("Cannot use deleted val. handle = "+a),wt.get(a).value),toHandle:a=>{switch(a){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return wt.allocate({refcount:1,value:a})}}};function ls(a){if(a===null)return"null";var c=typeof a;return c==="object"||c==="array"||c==="function"?a.toString():""+a}function sc(a,c){switch(c){case 2:return function(l){return this.fromWireType(ao[l>>2])};case 3:return function(l){return this.fromWireType(rn[l>>3])};default:throw new TypeError("Unknown float type: "+a)}}function nc(a,c,l){switch(c){case 0:return l?function(h){return Q[h]}:function(h){return De[h]};case 1:return l?function(h){return Re[h>>1]}:function(h){return le[h>>1]};case 2:return l?function(h){return xe[h>>2]}:function(h){return Le[h>>2]};default:throw new TypeError("Unknown integer type: "+a)}}var _=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,E=(a,c)=>{for(var l=a,h=l>>1,T=h+c/2;!(h>=T)&&le[h];)++h;if((l=h<<1)-a>32&&_)return _.decode(De.subarray(a,l));for(var y="",b=0;!(b>=c/2);++b){var R=Re[a+2*b>>1];if(R==0)break;y+=String.fromCharCode(R)}return y},v=(a,c,l)=>{if(l===void 0&&(l=2147483647),l<2)return 0;for(var h=c,T=(l-=2)<2*a.length?l/2:a.length,y=0;y<T;++y){var b=a.charCodeAt(y);Re[c>>1]=b,c+=2}return Re[c>>1]=0,c-h},C=a=>2*a.length,U=(a,c)=>{for(var l=0,h="";!(l>=c/4);){var T=xe[a+4*l>>2];if(T==0)break;if(++l,T>=65536){var y=T-65536;h+=String.fromCharCode(55296|y>>10,56320|1023&y)}else h+=String.fromCharCode(T)}return h},W=(a,c,l)=>{if(l===void 0&&(l=2147483647),l<4)return 0;for(var h=c,T=h+l-4,y=0;y<a.length;++y){var b=a.charCodeAt(y);if(b>=55296&&b<=57343&&(b=65536+((1023&b)<<10)|1023&a.charCodeAt(++y)),xe[c>>2]=b,(c+=4)+4>T)break}return xe[c>>2]=0,c-h},j=a=>{for(var c=0,l=0;l<a.length;++l){var h=a.charCodeAt(l);h>=55296&&h<=57343&&++l,c+=4}return c},q={},Z=[],B=[],ce={},ve=()=>{if(!ve.strings){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(var c in ce)ce[c]===void 0?delete a[c]:a[c]=ce[c];var l=[];for(var c in a)l.push(`${c}=${a[c]}`);ve.strings=l}return ve.strings},ye,me,Ce,Ze=function(a,c,l,h){a||(a=this),this.parent=a,this.mount=a.mount,this.mounted=null,this.id=f.nextInode++,this.name=c,this.mode=l,this.node_ops={},this.stream_ops={},this.rdev=h},He=365,ut=146;Object.defineProperties(Ze.prototype,{read:{get:function(){return(this.mode&He)===He},set:function(a){a?this.mode|=He:this.mode&=-366}},write:{get:function(){return(this.mode&ut)===ut},set:function(a){a?this.mode|=ut:this.mode&=-147}},isFolder:{get:function(){return f.isDir(this.mode)}},isDevice:{get:function(){return f.isChrdev(this.mode)}}}),f.FSNode=Ze,f.createPreloadedFile=function(a,c,l,h,T,y,b,R,M,w){var z=c?Wt.resolve(F.join2(a,c)):a;function ie(oe){function re(Ae){w&&w(),R||f.createDataFile(a,c,Ae,h,T,M),y&&y(),co()}(function(Ae,Ve,Ne,Ke){typeof Browser!="undefined"&&Browser.init();var ze=!1;return yu.forEach(function(pt){ze||pt.canHandle(Ve)&&(pt.handle(Ae,Ve,Ne,Ke),ze=!0)}),ze})(oe,z,re,()=>{b&&b(),co()})||re(oe)}nn(),typeof l=="string"?Su(l,oe=>ie(oe),b):ie(l)},f.staticInit(),function(){for(var a=new Array(256),c=0;c<256;++c)a[c]=String.fromCharCode(c);Ba=a}(),Ri=o.BindingError=class extends Error{constructor(a){super(a),this.name="BindingError"}},Ha=o.InternalError=class extends Error{constructor(a){super(a),this.name="InternalError"}},wr.prototype.isAliasOf=is,wr.prototype.clone=Ja,wr.prototype.delete=za,wr.prototype.isDeleted=ln,wr.prototype.deleteLater=Xa,o.getInheritedInstanceCount=Au,o.getLiveInheritedInstances=ns,o.flushPendingDeletes=un,o.setDelayFunction=dr,lr.prototype.getPointee=Za,lr.prototype.destructor=Du,lr.prototype.argPackAdvance=8,lr.prototype.readValueFromPointer=_o,lr.prototype.deleteObject=Ka,lr.prototype.fromWireType=bu,tc=o.UnboundTypeError=(ye=Error,(Ce=Vt(me="UnboundTypeError",function(a){this.name=me,this.message=a;var c=new Error(a).stack;c!==void 0&&(this.stack=this.toString()+`
|
|
65
|
-
`+c.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(ye.prototype),Ce.prototype.constructor=Ce,Ce.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Ce),Object.assign(ic.prototype,{get(a){return this.allocated[a]},has(a){return this.allocated[a]!==void 0},allocate(a){var c=this.freelist.pop()||this.allocated.length;return this.allocated[c]=a,c},free(a){this.allocated[a]=void 0,this.freelist.push(a)}}),wt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),wt.reserved=wt.allocated.length,o.count_emval_handles=mr;var We,vt={p:function(a,c,l){throw new Si(a).init(c,l),a},C:function(a,c,l){_t.varargs=l;try{var h=_t.getStreamFromFD(a);switch(c){case 0:return(T=_t.get())<0?-28:f.createStream(h,T).fd;case 1:case 2:case 6:case 7:return 0;case 3:return h.flags;case 4:var T=_t.get();return h.flags|=T,0;case 5:return T=_t.get(),Re[T+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return y=28,xe[gn()>>2]=y,-1}}catch(b){if(f===void 0||b.name!=="ErrnoError")throw b;return-b.errno}var y},w:function(a,c,l,h){_t.varargs=h;try{c=_t.getStr(c),c=_t.calculateAt(a,c);var T=h?_t.get():0;return f.open(c,l,T).fd}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return-y.errno}},t:function(a,c,l,h,T){},n:function(a,c,l,h,T){var y=qr(l);cr(a,{name:c=St(c),fromWireType:function(b){return!!b},toWireType:function(b,R){return R?h:T},argPackAdvance:8,readValueFromPointer:function(b){var R;if(l===1)R=Q;else if(l===2)R=Re;else{if(l!==4)throw new TypeError("Unknown boolean type size: "+c);R=xe}return this.fromWireType(R[b>>y])},destructorFunction:null})},r:function(a,c,l,h,T,y,b,R,M,w,z,ie,oe){z=St(z),y=Ci(T,y),R&&(R=Ci(b,R)),w&&(w=Ci(M,w)),oe=Ci(ie,oe);var re=Eo(z);(function(Ae,Ve,Ne){o.hasOwnProperty(Ae)?((Ne===void 0||o[Ae].overloadTable!==void 0&&o[Ae].overloadTable[Ne]!==void 0)&&Ue(`Cannot register public name '${Ae}' twice`),mn(o,Ae,Ae),o.hasOwnProperty(Ne)&&Ue(`Cannot register multiple overloads of a function with the same number of arguments (${Ne})!`),o[Ae].overloadTable[Ne]=Ve):(o[Ae]=Ve,Ne!==void 0&&(o[Ae].numArguments=Ne))})(re,function(){us(`Cannot construct ${z} due to unbound types`,[h])}),po([a,c,l],h?[h]:[],function(Ae){var Ve,Ne;Ae=Ae[0],Ne=h?(Ve=Ae.registeredClass).instancePrototype:wr.prototype;var Ke=Vt(re,function(){if(Object.getPrototypeOf(this)!==ze)throw new Ri("Use 'new' to construct "+z);if(pt.constructor_body===void 0)throw new Ri(z+" has no accessible constructor");var ot=pt.constructor_body[arguments.length];if(ot===void 0)throw new Ri(`Tried to invoke ctor of ${z} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(pt.constructor_body).toString()}) parameters instead!`);return ot.apply(this,arguments)}),ze=Object.create(Ne,{constructor:{value:Ke}});Ke.prototype=ze;var pt=new Ru(z,Ke,ze,oe,Ve,y,R,w);pt.baseClass&&(pt.baseClass.__derivedClasses===void 0&&(pt.baseClass.__derivedClasses=[]),pt.baseClass.__derivedClasses.push(pt));var Mi=new lr(z,pt,!0,!1,!1),rr=new lr(z+"*",pt,!1,!1,!1),To=new lr(z+" const*",pt,!1,!0,!1);return ja[a]={pointerType:rr,constPointerType:To},function(ot,bp,Mu){o.hasOwnProperty(ot)||zt("Replacing nonexistant public symbol"),o[ot].overloadTable!==void 0&&Mu!==void 0?o[ot].overloadTable[Mu]=bp:(o[ot]=bp,o[ot].argCount=Mu)}(re,Ke),[Mi,rr,To]})},q:function(a,c,l,h,T,y){var b=hn(c,l);T=Ci(h,T),po([],[a],function(R){var M=`constructor ${(R=R[0]).name}`;if(R.registeredClass.constructor_body===void 0&&(R.registeredClass.constructor_body=[]),R.registeredClass.constructor_body[c-1]!==void 0)throw new Ri(`Cannot register multiple constructors with identical number of parameters (${c-1}) for class '${R.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return R.registeredClass.constructor_body[c-1]=()=>{us(`Cannot construct ${R.name} due to unbound types`,b)},po([],b,function(w){return w.splice(1,0,null),R.registeredClass.constructor_body[c-1]=Di(M,w,null,T,y),[]}),[]})},d:function(a,c,l,h,T,y,b,R,M){var w=hn(l,h);c=St(c),y=Ci(T,y),po([],[a],function(z){var ie=`${(z=z[0]).name}.${c}`;function oe(){us(`Cannot call ${ie} due to unbound types`,w)}c.startsWith("@@")&&(c=Symbol[c.substring(2)]),R&&z.registeredClass.pureVirtualFunctions.push(c);var re=z.registeredClass.instancePrototype,Ae=re[c];return Ae===void 0||Ae.overloadTable===void 0&&Ae.className!==z.name&&Ae.argCount===l-2?(oe.argCount=l-2,oe.className=z.name,re[c]=oe):(mn(re,c,ie),re[c].overloadTable[l-2]=oe),po([],w,function(Ve){var Ne=Di(ie,Ve,z,y,b,M);return re[c].overloadTable===void 0?(Ne.argCount=l-2,re[c]=Ne):re[c].overloadTable[l-2]=Ne,[]}),[]})},D:function(a,c){cr(a,{name:c=St(c),fromWireType:function(l){var h=Ni.toValue(l);return oc(l),h},toWireType:function(l,h){return Ni.toHandle(h)},argPackAdvance:8,readValueFromPointer:_o,destructorFunction:null})},k:function(a,c,l){var h=qr(l);cr(a,{name:c=St(c),fromWireType:function(T){return T},toWireType:function(T,y){return y},argPackAdvance:8,readValueFromPointer:sc(c,h),destructorFunction:null})},c:function(a,c,l,h,T){c=St(c),T===-1&&(T=4294967295);var y=qr(l),b=w=>w;if(h===0){var R=32-8*l;b=w=>w<<R>>>R}var M=c.includes("unsigned");cr(a,{name:c,fromWireType:b,toWireType:M?function(w,z){return this.name,z>>>0}:function(w,z){return this.name,z},argPackAdvance:8,readValueFromPointer:nc(c,y,h!==0),destructorFunction:null})},b:function(a,c,l){var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][c];function T(y){var b=Le,R=b[y>>=2],M=b[y+1];return new h(b.buffer,M,R)}cr(a,{name:l=St(l),fromWireType:T,argPackAdvance:8,readValueFromPointer:T},{ignoreDuplicateRegistrations:!0})},j:function(a,c){var l=(c=St(c))==="std::string";cr(a,{name:c,fromWireType:function(h){var T,y=Le[h>>2],b=h+4;if(l)for(var R=b,M=0;M<=y;++M){var w=b+M;if(M==y||De[w]==0){var z=Ai(R,w-R);T===void 0?T=z:(T+="\0",T+=z),R=w+1}}else{var ie=new Array(y);for(M=0;M<y;++M)ie[M]=String.fromCharCode(De[b+M]);T=ie.join("")}return yt(h),T},toWireType:function(h,T){var y;T instanceof ArrayBuffer&&(T=new Uint8Array(T));var b=typeof T=="string";b||T instanceof Uint8Array||T instanceof Uint8ClampedArray||T instanceof Int8Array||Ue("Cannot pass non-string to std::string"),y=l&&b?lo(T):T.length;var R=wi(4+y+1),M=R+4;if(Le[R>>2]=y,l&&b)mo(T,De,M,y+1);else if(b)for(var w=0;w<y;++w){var z=T.charCodeAt(w);z>255&&(yt(M),Ue("String has UTF-16 code units that do not fit in 8 bits")),De[M+w]=z}else for(w=0;w<y;++w)De[M+w]=T[w];return h!==null&&h.push(yt,R),R},argPackAdvance:8,readValueFromPointer:_o,destructorFunction:function(h){yt(h)}})},f:function(a,c,l){var h,T,y,b,R;l=St(l),c===2?(h=E,T=v,b=C,y=()=>le,R=1):c===4&&(h=U,T=W,b=j,y=()=>Le,R=2),cr(a,{name:l,fromWireType:function(M){for(var w,z=Le[M>>2],ie=y(),oe=M+4,re=0;re<=z;++re){var Ae=M+4+re*c;if(re==z||ie[Ae>>R]==0){var Ve=h(oe,Ae-oe);w===void 0?w=Ve:(w+="\0",w+=Ve),oe=Ae+c}}return yt(M),w},toWireType:function(M,w){typeof w!="string"&&Ue(`Cannot pass non-string to C++ string type ${l}`);var z=b(w),ie=wi(4+z+c);return Le[ie>>2]=z>>R,T(w,ie+4,z+c),M!==null&&M.push(yt,ie),ie},argPackAdvance:8,readValueFromPointer:_o,destructorFunction:function(M){yt(M)}})},o:function(a,c){cr(a,{isVoid:!0,name:c=St(c),argPackAdvance:0,fromWireType:function(){},toWireType:function(l,h){}})},g:function(a,c,l,h){var T,y;(a=Z[a])(c=Ni.toValue(c),l=(y=q[T=l])===void 0?St(T):y,null,h)},m:oc,l:function(a,c){var l=function(Ve,Ne){for(var Ke,ze,pt,Mi=new Array(Ve),rr=0;rr<Ve;++rr)Mi[rr]=(Ke=Le[Ne+4*rr>>2],ze="parameter "+rr,pt=void 0,(pt=tr[Ke])===void 0&&Ue(ze+" has unknown type "+ds(Ke)),pt);return Mi}(a,c),h=l[0],T=h.name+"_$"+l.slice(1).map(function(Ve){return Ve.name}).join("_")+"$",y=B[T];if(y!==void 0)return y;for(var b=["retType"],R=[h],M="",w=0;w<a-1;++w)M+=(w!==0?", ":"")+"arg"+w,b.push("argType"+w),R.push(l[1+w]);var z="return function "+Eo("methodCaller_"+T)+`(handle, name, destructors, args) {
|
|
66
|
-
`,ie=0;for(w=0;w<a-1;++w)z+=" var arg"+w+" = argType"+w+".readValueFromPointer(args"+(ie?"+"+ie:"")+`);
|
|
67
|
-
`,ie+=l[w+1].argPackAdvance;for(z+=" var rv = handle[name]("+M+`);
|
|
68
|
-
`,w=0;w<a-1;++w)l[w+1].deleteObject&&(z+=" argType"+w+".deleteObject(arg"+w+`);
|
|
69
|
-
`);h.isVoid||(z+=` return retType.toWireType(destructors, rv);
|
|
70
|
-
`),z+=`};
|
|
71
|
-
`,b.push(z);var oe,re,Ae=fn(Function,b).apply(null,R);return oe=Ae,re=Z.length,Z.push(oe),y=re,B[T]=y,y},a:()=>{Cr("")},e:function(){return Date.now()},v:()=>De.length,A:(a,c,l)=>De.copyWithin(a,c,c+l),u:a=>{De.length,Cr("OOM")},y:(a,c)=>{var l=0;return ve().forEach(function(h,T){var y=c+l;Le[a+4*T>>2]=y,((b,R)=>{for(var M=0;M<b.length;++M)Q[0|R++]=b.charCodeAt(M);Q[0|R]=0})(h,y),l+=h.length+1}),0},z:(a,c)=>{var l=ve();Le[a>>2]=l.length;var h=0;return l.forEach(function(T){h+=T.length+1}),Le[c>>2]=h,0},i:function(a){try{var c=_t.getStreamFromFD(a);return f.close(c),0}catch(l){if(f===void 0||l.name!=="ErrnoError")throw l;return l.errno}},x:function(a,c){try{var l=_t.getStreamFromFD(a),h=l.tty?2:f.isDir(l.mode)?3:f.isLink(l.mode)?7:4;return Q[c|0]=h,Re[c+2>>1]=0,Ge=[0,(ge=0,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[c+8>>2]=Ge[0],xe[c+12>>2]=Ge[1],Ge=[0,(ge=0,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[c+16>>2]=Ge[0],xe[c+20>>2]=Ge[1],0}catch(T){if(f===void 0||T.name!=="ErrnoError")throw T;return T.errno}},B:function(a,c,l,h){try{var T=((y,b,R,M)=>{for(var w=0,z=0;z<R;z++){var ie=Le[b>>2],oe=Le[b+4>>2];b+=8;var re=f.read(y,Q,ie,oe,M);if(re<0)return-1;if(w+=re,re<oe)break;M!==void 0&&(M+=re)}return w})(_t.getStreamFromFD(a),c,l);return Le[h>>2]=T,0}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return y.errno}},s:function(a,c,l,h,T){var y,b,R=(b=l)+2097152>>>0<4194305-!!(y=c)?(y>>>0)+4294967296*b:NaN;try{if(isNaN(R))return 61;var M=_t.getStreamFromFD(a);return f.llseek(M,R,h),Ge=[M.position>>>0,(ge=M.position,+Math.abs(ge)>=1?ge>0?+Math.floor(ge/4294967296)>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],xe[T>>2]=Ge[0],xe[T+4>>2]=Ge[1],M.getdents&&R===0&&h===0&&(M.getdents=null),0}catch(w){if(f===void 0||w.name!=="ErrnoError")throw w;return w.errno}},h:function(a,c,l,h){try{var T=((y,b,R,M)=>{for(var w=0,z=0;z<R;z++){var ie=Le[b>>2],oe=Le[b+4>>2];b+=8;var re=f.write(y,Q,ie,oe,M);if(re<0)return-1;w+=re,M!==void 0&&(M+=re)}return w})(_t.getStreamFromFD(a),c,l);return Le[h>>2]=T,0}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return y.errno}}},wi=(function(){var a,c,l,h,T={a:vt};function y(b,R){var M,w,z=b.exports;return x=(J=z).E,M=x.buffer,o.HEAP8=Q=new Int8Array(M),o.HEAP16=Re=new Int16Array(M),o.HEAP32=xe=new Int32Array(M),o.HEAPU8=De=new Uint8Array(M),o.HEAPU16=le=new Uint16Array(M),o.HEAPU32=Le=new Uint32Array(M),o.HEAPF32=ao=new Float32Array(M),o.HEAPF64=rn=new Float64Array(M),on=J.H,w=J.F,es.unshift(w),co(),z}if(nn(),o.instantiateWasm)try{return o.instantiateWasm(T,y)}catch(b){P("Module.instantiateWasm callback failed with error: "+b),r(b)}(a=N,c=Ti,l=T,h=function(b){y(b.instance)},a||typeof WebAssembly.instantiateStreaming!="function"||G(c)||typeof fetch!="function"?Dr(c,l,h):fetch(c,{credentials:"same-origin"}).then(b=>WebAssembly.instantiateStreaming(b,l).then(h,function(R){return P("wasm streaming compile failed: "+R),P("falling back to ArrayBuffer instantiation"),Dr(c,l,h)}))).catch(r)}(),a=>(wi=J.G)(a)),yt=a=>(yt=J.I)(a),gn=()=>(gn=J.J)(),pr=a=>(pr=J.K)(a),En=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=J.L)(),a=>(En=J.M)(a));o.dynCall_jiji=(a,c,l,h,T)=>(o.dynCall_jiji=J.N)(a,c,l,h,T),o._ff_h264_cabac_tables=67061;function ms(){function a(){We||(We=!0,o.calledRun=!0,sn||(o.noFSInit||f.init.initialized||f.init(),f.ignorePermissions=!1,ar.init(),Ii(es),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)c=o.postRun.shift(),_i.unshift(c);var c;Ii(_i)}()))}K>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)c=o.preRun.shift(),vr.unshift(c);var c;Ii(vr)}(),K>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),a()},1)):a()))}if(Gr=function a(){We||ms(),We||(Gr=a)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return ms(),t.ready}})(),CI=vI,DI=class extends Ca{constructor(i){super(CI,i!=null&&i.wasmPath?fetch(i==null?void 0:i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},RM=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((_,E)=>{e=_,r=E});var s,n=Object.assign({},o),d=typeof window=="object",p=typeof importScripts=="function",m=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(d||p)&&(p?m=self.location.href:typeof document!="undefined"&&document.currentScript&&(m=document.currentScript.src),i&&(m=i),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",p&&(s=_=>{var E=new XMLHttpRequest;return E.open("GET",_,!1),E.responseType="arraybuffer",E.send(null),new Uint8Array(E.response)}));var g,I=o.print||console.log.bind(console),S=o.printErr||console.error.bind(console);Object.assign(o,n),n=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(g=o.wasmBinary);var N,k;o.noExitRuntime,typeof WebAssembly!="object"&&K("no native wasm support detected");var P,x,J,Q,De,Re,le,xe,Le,ao=!1,rn=[],on=[],sn=[],vr=0,es=null,_i=null;function K(_){o.onAbort&&o.onAbort(_),S(_="Aborted("+_+")"),ao=!0,_+=". Build with -sASSERTIONS for more info.";var E=new WebAssembly.RuntimeError(_);throw r(E),E}var Wr,Gr,nn="data:application/octet-stream;base64,";function co(_){return _.startsWith(nn)}function Cr(_){if(_==Wr&&g)return new Uint8Array(g);if(s)return s(_);throw"both async and sync fetching of the wasm failed"}function Ti(_,E,v){return function(C){return g||!d&&!p||typeof fetch!="function"?Promise.resolve().then(()=>Cr(C)):fetch(C,{credentials:"same-origin"}).then(U=>{if(!U.ok)throw"failed to load wasm binary file at '"+C+"'";return U.arrayBuffer()}).catch(()=>Cr(C))}(_).then(C=>WebAssembly.instantiate(C,E)).then(C=>C).then(v,C=>{S("failed to asynchronously prepare wasm: "+C),K(C)})}co(Wr="videodec_simd.wasm")||(Gr=Wr,Wr=o.locateFile?o.locateFile(Gr,m):m+Gr);var uo=_=>{for(;_.length>0;)_.shift()(o)};function ge(_){this.excPtr=_,this.ptr=_-24,this.set_type=function(E){Re[this.ptr+4>>2]=E},this.get_type=function(){return Re[this.ptr+4>>2]},this.set_destructor=function(E){Re[this.ptr+8>>2]=E},this.get_destructor=function(){return Re[this.ptr+8>>2]},this.set_caught=function(E){E=E?1:0,P[this.ptr+12|0]=E},this.get_caught=function(){return P[this.ptr+12|0]!=0},this.set_rethrown=function(E){E=E?1:0,P[this.ptr+13|0]=E},this.get_rethrown=function(){return P[this.ptr+13|0]!=0},this.init=function(E,v){this.set_adjusted_ptr(0),this.set_type(E),this.set_destructor(v)},this.set_adjusted_ptr=function(E){Re[this.ptr+16>>2]=E},this.get_adjusted_ptr=function(){return Re[this.ptr+16>>2]},this.get_exception_ptr=function(){if(sc(this.get_type()))return Re[this.excPtr>>2];var E=this.get_adjusted_ptr();return E!==0?E:this.excPtr}}function Ge(_){switch(_){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${_}`)}}var $a=void 0;function G(_){for(var E="",v=_;x[v];)E+=$a[x[v++]];return E}var jr={},Dr={},Ii={},Si=void 0;function F(_){throw new Si(_)}var an=void 0;function Wt(_){throw new an(_)}function yi(_,E,v){function C(q){var Z=v(q);Z.length!==_.length&&Wt("Mismatched type converter count");for(var B=0;B<_.length;++B)Nt(_[B],Z[B])}_.forEach(function(q){Ii[q]=E});var U=new Array(E.length),W=[],j=0;E.forEach((q,Z)=>{Dr.hasOwnProperty(q)?U[Z]=Dr[q]:(W.push(q),jr.hasOwnProperty(q)||(jr[q]=[]),jr[q].push(()=>{U[Z]=Dr[q],++j===W.length&&C(U)}))}),W.length===0&&C(U)}function Nt(_,E,v={}){if(!("argPackAdvance"in E))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(C,U,W={}){var j=U.name;if(C||F(`type "${j}" must have a positive integer typeid pointer`),Dr.hasOwnProperty(C)){if(W.ignoreDuplicateRegistrations)return;F(`Cannot register type '${j}' twice`)}if(Dr[C]=U,delete Ii[C],jr.hasOwnProperty(C)){var q=jr[C];delete jr[C],q.forEach(Z=>Z())}}(_,E,v)}function cn(_){if(!(this instanceof zt)||!(_ instanceof zt))return!1;for(var E=this.$$.ptrType.registeredClass,v=this.$$.ptr,C=_.$$.ptrType.registeredClass,U=_.$$.ptr;E.baseClass;)v=E.upcast(v),E=E.baseClass;for(;C.baseClass;)U=C.upcast(U),C=C.baseClass;return E===C&&v===U}function lo(_){F(_.$$.ptrType.registeredClass.name+" instance already deleted")}var mo=!1;function ts(_){}function ar(_){_.count.value-=1,_.count.value===0&&function(E){E.smartPtr?E.smartPtrType.rawDestructor(E.smartPtr):E.ptrType.registeredClass.rawDestructor(E.ptr)}(_)}function dn(_,E,v){if(E===v)return _;if(v.baseClass===void 0)return null;var C=dn(_,E,v.baseClass);return C===null?null:v.downcast(C)}var Te={};function Su(){return Object.keys(qr).length}function yu(){var _=[];for(var E in qr)qr.hasOwnProperty(E)&&_.push(qr[E]);return _}var O=[];function f(){for(;O.length;){var _=O.pop();_.$$.deleteScheduled=!1,_.delete()}}var Ai=void 0;function _t(_){Ai=_,O.length&&Ai&&Ai(f)}var qr={};function Ba(_,E){return E=function(v,C){for(C===void 0&&F("ptr should not be undefined");v.baseClass;)C=v.upcast(C),v=v.baseClass;return C}(_,E),qr[E]}function St(_,E){return E.ptrType&&E.ptr||Wt("makeClassHandle requires ptr and ptrType"),!!E.smartPtrType!=!!E.smartPtr&&Wt("Both smartPtrType and smartPtr must be specified"),E.count={value:1},tr(Object.create(_,{$$:{value:E}}))}function bi(_){var E=this.getPointee(_);if(!E)return this.destructor(_),null;var v=Ba(this.registeredClass,E);if(v!==void 0){if(v.$$.count.value===0)return v.$$.ptr=E,v.$$.smartPtr=_,v.clone();var C=v.clone();return this.destructor(_),C}function U(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:E,smartPtrType:this,smartPtr:_}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:_})}var W,j=this.registeredClass.getActualType(E),q=Te[j];if(!q)return U.call(this);W=this.isConst?q.constPointerType:q.pointerType;var Z=dn(E,this.registeredClass,W.registeredClass);return Z===null?U.call(this):this.isSmartPointer?St(W.registeredClass.instancePrototype,{ptrType:W,ptr:Z,smartPtrType:this,smartPtr:_}):St(W.registeredClass.instancePrototype,{ptrType:W,ptr:Z})}var tr=function(_){return typeof FinalizationRegistry=="undefined"?(tr=E=>E,_):(mo=new FinalizationRegistry(E=>{ar(E.$$)}),ts=E=>mo.unregister(E),(tr=E=>{var v=E.$$;if(v.smartPtr){var C={$$:v};mo.register(E,C,E)}return E})(_))};function rs(){if(this.$$.ptr||lo(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var _,E=tr(Object.create(Object.getPrototypeOf(this),{$$:{value:(_=this.$$,{count:_.count,deleteScheduled:_.deleteScheduled,preservePointerOnDelete:_.preservePointerOnDelete,ptr:_.ptr,ptrType:_.ptrType,smartPtr:_.smartPtr,smartPtrType:_.smartPtrType})}}));return E.$$.count.value+=1,E.$$.deleteScheduled=!1,E}function Ri(){this.$$.ptr||lo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&F("Object already scheduled for deletion"),ts(this),ar(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ue(){return!this.$$.ptr}function Ha(){return this.$$.ptr||lo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&F("Object already scheduled for deletion"),O.push(this),O.length===1&&Ai&&Ai(f),this.$$.deleteScheduled=!0,this}function zt(){}var po=48,cr=57;function is(_){if(_===void 0)return"_unknown";var E=(_=_.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return E>=po&&E<=cr?`_${_}`:_}function ho(_,E){return _=is(_),{[_]:function(){return E.apply(this,arguments)}}[_]}function os(_,E,v){if(_[E].overloadTable===void 0){var C=_[E];_[E]=function(){return _[E].overloadTable.hasOwnProperty(arguments.length)||F(`Function '${v}' called with an invalid number of arguments (${arguments.length}) - expects one of (${_[E].overloadTable})!`),_[E].overloadTable[arguments.length].apply(this,arguments)},_[E].overloadTable=[],_[E].overloadTable[C.argCount]=C}}function Wa(_,E,v,C,U,W,j,q){this.name=_,this.constructor=E,this.instancePrototype=v,this.rawDestructor=C,this.baseClass=U,this.getActualType=W,this.upcast=j,this.downcast=q,this.pureVirtualFunctions=[]}function ss(_,E,v){for(;E!==v;)E.upcast||F(`Expected null or instance of ${v.name}, got an instance of ${E.name}`),_=E.upcast(_),E=E.baseClass;return _}function Ga(_,E){if(E===null)return this.isReference&&F(`null is not a valid ${this.name}`),0;E.$$||F(`Cannot pass "${pn(E)}" as a ${this.name}`),E.$$.ptr||F(`Cannot pass deleted object as a pointer of type ${this.name}`);var v=E.$$.ptrType.registeredClass;return ss(E.$$.ptr,v,this.registeredClass)}function ja(_,E){var v;if(E===null)return this.isReference&&F(`null is not a valid ${this.name}`),this.isSmartPointer?(v=this.rawConstructor(),_!==null&&_.push(this.rawDestructor,v),v):0;E.$$||F(`Cannot pass "${pn(E)}" as a ${this.name}`),E.$$.ptr||F(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&E.$$.ptrType.isConst&&F(`Cannot convert argument of type ${E.$$.smartPtrType?E.$$.smartPtrType.name:E.$$.ptrType.name} to parameter type ${this.name}`);var C=E.$$.ptrType.registeredClass;if(v=ss(E.$$.ptr,C,this.registeredClass),this.isSmartPointer)switch(E.$$.smartPtr===void 0&&F("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:E.$$.smartPtrType===this?v=E.$$.smartPtr:F(`Cannot convert argument of type ${E.$$.smartPtrType?E.$$.smartPtrType.name:E.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:v=E.$$.smartPtr;break;case 2:if(E.$$.smartPtrType===this)v=E.$$.smartPtr;else{var U=E.clone();v=this.rawShare(v,vi.toHandle(function(){U.delete()})),_!==null&&_.push(this.rawDestructor,v)}break;default:F("Unsupporting sharing policy")}return v}function Au(_,E){if(E===null)return this.isReference&&F(`null is not a valid ${this.name}`),0;E.$$||F(`Cannot pass "${pn(E)}" as a ${this.name}`),E.$$.ptr||F(`Cannot pass deleted object as a pointer of type ${this.name}`),E.$$.ptrType.isConst&&F(`Cannot convert argument of type ${E.$$.ptrType.name} to parameter type ${this.name}`);var v=E.$$.ptrType.registeredClass;return ss(E.$$.ptr,v,this.registeredClass)}function ns(_){return this.fromWireType(De[_>>2])}function fo(_){return this.rawGetPointee&&(_=this.rawGetPointee(_)),_}function un(_){this.rawDestructor&&this.rawDestructor(_)}function go(_){_!==null&&_.delete()}function dr(_,E,v,C,U,W,j,q,Z,B,ce){this.name=_,this.registeredClass=E,this.isReference=v,this.isConst=C,this.isSmartPointer=U,this.pointeeType=W,this.sharingPolicy=j,this.rawGetPointee=q,this.rawConstructor=Z,this.rawShare=B,this.rawDestructor=ce,U||E.baseClass!==void 0?this.toWireType=ja:C?(this.toWireType=Ga,this.destructorFunction=null):(this.toWireType=Au,this.destructorFunction=null)}var Nr=[],qa=_=>{var E=Nr[_];return E||(_>=Nr.length&&(Nr.length=_+1),Nr[_]=E=Le.get(_)),E},as=(_,E,v)=>_.includes("j")?((C,U,W)=>{var j=o["dynCall_"+C];return W&&W.length?j.apply(null,[U].concat(W)):j.call(null,U)})(_,E,v):qa(E).apply(null,v),bu=(_,E)=>{var v=[];return function(){return v.length=0,Object.assign(v,arguments),as(_,E,v)}};function ur(_,E){var v=(_=G(_)).includes("j")?bu(_,E):qa(E);return typeof v!="function"&&F(`unknown function pointer with signature ${_}: ${E}`),v}var Ja=void 0;function za(_){var E=ls(_),v=G(E);return mr(E),v}function ln(_,E){var v=[],C={};throw E.forEach(function U(W){C[W]||Dr[W]||(Ii[W]?Ii[W].forEach(U):(v.push(W),C[W]=!0))}),new Ja(`${_}: `+v.map(za).join([", "]))}function Xa(_,E){for(var v=[],C=0;C<_;C++)v.push(Re[E+4*C>>2]);return v}function wr(_){for(;_.length;){var E=_.pop();_.pop()(E)}}function Qa(_,E){if(!(_ instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof _} which is not a function`);var v=ho(_.name||"unknownFunctionName",function(){});v.prototype=_.prototype;var C=new v,U=_.apply(C,E);return U instanceof Object?U:C}function Ya(_,E,v,C,U,W){var j=E.length;j<2&&F("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var q=E[1]!==null&&v!==null,Z=!1,B=1;B<E.length;++B)if(E[B]!==null&&E[B].destructorFunction===void 0){Z=!0;break}var ce=E[0].name!=="void",ve="",ye="";for(B=0;B<j-2;++B)ve+=(B!==0?", ":"")+"arg"+B,ye+=(B!==0?", ":"")+"arg"+B+"Wired";var me=`
|
|
72
|
-
return function ${is(_)}(${ve}) {
|
|
73
|
-
if (arguments.length !== ${j-2}) {
|
|
74
|
-
throwBindingError('function ${_} called with ${arguments.length} arguments, expected ${j-2} args!');
|
|
75
|
-
}`;Z&&(me+=`var destructors = [];
|
|
76
|
-
`);var Ce=Z?"destructors":"null",Ze=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],He=[F,C,U,wr,E[0],E[1]];for(q&&(me+="var thisWired = classParam.toWireType("+Ce+`, this);
|
|
77
|
-
`),B=0;B<j-2;++B)me+="var arg"+B+"Wired = argType"+B+".toWireType("+Ce+", arg"+B+"); // "+E[B+2].name+`
|
|
78
|
-
`,Ze.push("argType"+B),He.push(E[B+2]);if(q&&(ye="thisWired"+(ye.length>0?", ":"")+ye),me+=(ce||W?"var rv = ":"")+"invoker(fn"+(ye.length>0?", ":"")+ye+`);
|
|
79
|
-
`,Z)me+=`runDestructors(destructors);
|
|
80
|
-
`;else for(B=q?1:2;B<E.length;++B){var ut=B===1?"thisWired":"arg"+(B-2)+"Wired";E[B].destructorFunction!==null&&(me+=ut+"_dtor("+ut+"); // "+E[B].name+`
|
|
81
|
-
`,Ze.push(ut+"_dtor"),He.push(E[B].destructorFunction))}return ce&&(me+=`var ret = retType.fromWireType(rv);
|
|
82
|
-
return ret;
|
|
83
|
-
`),me+=`}
|
|
84
|
-
`,Ze.push(me),Qa(Function,Ze).apply(null,He)}function Eo(){this.allocated=[void 0],this.freelist=[]}var Vt=new Eo;function mn(_){_>=Vt.reserved&&--Vt.get(_).refcount==0&&Vt.free(_)}function Ru(){for(var _=0,E=Vt.reserved;E<Vt.allocated.length;++E)Vt.allocated[E]!==void 0&&++_;return _}var vi={toValue:_=>(_||F("Cannot use deleted val. handle = "+_),Vt.get(_).value),toHandle:_=>{switch(_){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Vt.allocate({refcount:1,value:_})}}};function pn(_){if(_===null)return"null";var E=typeof _;return E==="object"||E==="array"||E==="function"?_.toString():""+_}function vu(_,E){switch(E){case 2:return function(v){return this.fromWireType(le[v>>2])};case 3:return function(v){return this.fromWireType(xe[v>>3])};default:throw new TypeError("Unknown float type: "+_)}}function Cu(_,E,v){switch(E){case 0:return v?function(C){return P[C]}:function(C){return x[C]};case 1:return v?function(C){return J[C>>1]}:function(C){return Q[C>>1]};case 2:return v?function(C){return De[C>>2]}:function(C){return Re[C>>2]};default:throw new TypeError("Unknown integer type: "+_)}}var _o=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Za=(_,E,v)=>{for(var C=E+v,U=E;_[U]&&!(U>=C);)++U;if(U-E>16&&_.buffer&&_o)return _o.decode(_.subarray(E,U));for(var W="";E<U;){var j=_[E++];if(128&j){var q=63&_[E++];if((224&j)!=192){var Z=63&_[E++];if((j=(240&j)==224?(15&j)<<12|q<<6|Z:(7&j)<<18|q<<12|Z<<6|63&_[E++])<65536)W+=String.fromCharCode(j);else{var B=j-65536;W+=String.fromCharCode(55296|B>>10,56320|1023&B)}}else W+=String.fromCharCode((31&j)<<6|q)}else W+=String.fromCharCode(j)}return W},Du=(_,E)=>_?Za(x,_,E):"",Ka=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,lr=(_,E)=>{for(var v=_,C=v>>1,U=C+E/2;!(C>=U)&&Q[C];)++C;if((v=C<<1)-_>32&&Ka)return Ka.decode(x.subarray(_,v));for(var W="",j=0;!(j>=E/2);++j){var q=J[_+2*j>>1];if(q==0)break;W+=String.fromCharCode(q)}return W},cs=(_,E,v)=>{if(v===void 0&&(v=2147483647),v<2)return 0;for(var C=E,U=(v-=2)<2*_.length?v/2:_.length,W=0;W<U;++W){var j=_.charCodeAt(W);J[E>>1]=j,E+=2}return J[E>>1]=0,E-C},ec=_=>2*_.length,Nu=(_,E)=>{for(var v=0,C="";!(v>=E/4);){var U=De[_+4*v>>2];if(U==0)break;if(++v,U>=65536){var W=U-65536;C+=String.fromCharCode(55296|W>>10,56320|1023&W)}else C+=String.fromCharCode(U)}return C},wu=(_,E,v)=>{if(v===void 0&&(v=2147483647),v<4)return 0;for(var C=E,U=C+v-4,W=0;W<_.length;++W){var j=_.charCodeAt(W);if(j>=55296&&j<=57343&&(j=65536+((1023&j)<<10)|1023&_.charCodeAt(++W)),De[E>>2]=j,(E+=4)+4>U)break}return De[E>>2]=0,E-C},Ci=_=>{for(var E=0,v=0;v<_.length;++v){var C=_.charCodeAt(v);C>=55296&&C<=57343&&++v,E+=4}return E},tc={},ds=[],us=[],hn;hn=()=>performance.now();var rc,fn,Di,ic=[null,[],[]];(function(){for(var _=new Array(256),E=0;E<256;++E)_[E]=String.fromCharCode(E);$a=_})(),Si=o.BindingError=class extends Error{constructor(_){super(_),this.name="BindingError"}},an=o.InternalError=class extends Error{constructor(_){super(_),this.name="InternalError"}},zt.prototype.isAliasOf=cn,zt.prototype.clone=rs,zt.prototype.delete=Ri,zt.prototype.isDeleted=Ue,zt.prototype.deleteLater=Ha,o.getInheritedInstanceCount=Su,o.getLiveInheritedInstances=yu,o.flushPendingDeletes=f,o.setDelayFunction=_t,dr.prototype.getPointee=fo,dr.prototype.destructor=un,dr.prototype.argPackAdvance=8,dr.prototype.readValueFromPointer=ns,dr.prototype.deleteObject=go,dr.prototype.fromWireType=bi,Ja=o.UnboundTypeError=(rc=Error,(Di=ho(fn="UnboundTypeError",function(_){this.name=fn,this.message=_;var E=new Error(_).stack;E!==void 0&&(this.stack=this.toString()+`
|
|
85
|
-
`+E.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(rc.prototype),Di.prototype.constructor=Di,Di.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Di),Object.assign(Eo.prototype,{get(_){return this.allocated[_]},has(_){return this.allocated[_]!==void 0},allocate(_){var E=this.freelist.pop()||this.allocated.length;return this.allocated[E]=_,E},free(_){this.allocated[_]=void 0,this.freelist.push(_)}}),Vt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Vt.reserved=Vt.allocated.length,o.count_emval_handles=Ru;var wt,oc={o:function(_,E,v){throw new ge(_).init(E,v),_},r:function(_,E,v,C,U){},m:function(_,E,v,C,U){var W=Ge(v);Nt(_,{name:E=G(E),fromWireType:function(j){return!!j},toWireType:function(j,q){return q?C:U},argPackAdvance:8,readValueFromPointer:function(j){var q;if(v===1)q=P;else if(v===2)q=J;else{if(v!==4)throw new TypeError("Unknown boolean type size: "+E);q=De}return this.fromWireType(q[j>>W])},destructorFunction:null})},q:function(_,E,v,C,U,W,j,q,Z,B,ce,ve,ye){ce=G(ce),W=ur(U,W),q&&(q=ur(j,q)),B&&(B=ur(Z,B)),ye=ur(ve,ye);var me=is(ce);(function(Ce,Ze,He){o.hasOwnProperty(Ce)?((He===void 0||o[Ce].overloadTable!==void 0&&o[Ce].overloadTable[He]!==void 0)&&F(`Cannot register public name '${Ce}' twice`),os(o,Ce,Ce),o.hasOwnProperty(He)&&F(`Cannot register multiple overloads of a function with the same number of arguments (${He})!`),o[Ce].overloadTable[He]=Ze):(o[Ce]=Ze,He!==void 0&&(o[Ce].numArguments=He))})(me,function(){ln(`Cannot construct ${ce} due to unbound types`,[C])}),yi([_,E,v],C?[C]:[],function(Ce){var Ze,He;Ce=Ce[0],He=C?(Ze=Ce.registeredClass).instancePrototype:zt.prototype;var ut=ho(me,function(){if(Object.getPrototypeOf(this)!==We)throw new Si("Use 'new' to construct "+ce);if(vt.constructor_body===void 0)throw new Si(ce+" has no accessible constructor");var pr=vt.constructor_body[arguments.length];if(pr===void 0)throw new Si(`Tried to invoke ctor of ${ce} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(vt.constructor_body).toString()}) parameters instead!`);return pr.apply(this,arguments)}),We=Object.create(He,{constructor:{value:ut}});ut.prototype=We;var vt=new Wa(ce,ut,We,ye,Ze,W,q,B);vt.baseClass&&(vt.baseClass.__derivedClasses===void 0&&(vt.baseClass.__derivedClasses=[]),vt.baseClass.__derivedClasses.push(vt));var wi=new dr(ce,vt,!0,!1,!1),yt=new dr(ce+"*",vt,!1,!1,!1),gn=new dr(ce+" const*",vt,!1,!0,!1);return Te[_]={pointerType:yt,constPointerType:gn},function(pr,En,ms){o.hasOwnProperty(pr)||Wt("Replacing nonexistant public symbol"),o[pr].overloadTable!==void 0&&ms!==void 0?o[pr].overloadTable[ms]=En:(o[pr]=En,o[pr].argCount=ms)}(me,ut),[wi,yt,gn]})},p:function(_,E,v,C,U,W){var j=Xa(E,v);U=ur(C,U),yi([],[_],function(q){var Z=`constructor ${(q=q[0]).name}`;if(q.registeredClass.constructor_body===void 0&&(q.registeredClass.constructor_body=[]),q.registeredClass.constructor_body[E-1]!==void 0)throw new Si(`Cannot register multiple constructors with identical number of parameters (${E-1}) for class '${q.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return q.registeredClass.constructor_body[E-1]=()=>{ln(`Cannot construct ${q.name} due to unbound types`,j)},yi([],j,function(B){return B.splice(1,0,null),q.registeredClass.constructor_body[E-1]=Ya(Z,B,null,U,W),[]}),[]})},d:function(_,E,v,C,U,W,j,q,Z){var B=Xa(v,C);E=G(E),W=ur(U,W),yi([],[_],function(ce){var ve=`${(ce=ce[0]).name}.${E}`;function ye(){ln(`Cannot call ${ve} due to unbound types`,B)}E.startsWith("@@")&&(E=Symbol[E.substring(2)]),q&&ce.registeredClass.pureVirtualFunctions.push(E);var me=ce.registeredClass.instancePrototype,Ce=me[E];return Ce===void 0||Ce.overloadTable===void 0&&Ce.className!==ce.name&&Ce.argCount===v-2?(ye.argCount=v-2,ye.className=ce.name,me[E]=ye):(os(me,E,ve),me[E].overloadTable[v-2]=ye),yi([],B,function(Ze){var He=Ya(ve,Ze,ce,W,j,Z);return me[E].overloadTable===void 0?(He.argCount=v-2,me[E]=He):me[E].overloadTable[v-2]=He,[]}),[]})},u:function(_,E){Nt(_,{name:E=G(E),fromWireType:function(v){var C=vi.toValue(v);return mn(v),C},toWireType:function(v,C){return vi.toHandle(C)},argPackAdvance:8,readValueFromPointer:ns,destructorFunction:null})},k:function(_,E,v){var C=Ge(v);Nt(_,{name:E=G(E),fromWireType:function(U){return U},toWireType:function(U,W){return W},argPackAdvance:8,readValueFromPointer:vu(E,C),destructorFunction:null})},b:function(_,E,v,C,U){E=G(E),U===-1&&(U=4294967295);var W=Ge(v),j=B=>B;if(C===0){var q=32-8*v;j=B=>B<<q>>>q}var Z=E.includes("unsigned");Nt(_,{name:E,fromWireType:j,toWireType:Z?function(B,ce){return this.name,ce>>>0}:function(B,ce){return this.name,ce},argPackAdvance:8,readValueFromPointer:Cu(E,W,C!==0),destructorFunction:null})},a:function(_,E,v){var C=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][E];function U(W){var j=Re,q=j[W>>=2],Z=j[W+1];return new C(j.buffer,Z,q)}Nt(_,{name:v=G(v),fromWireType:U,argPackAdvance:8,readValueFromPointer:U},{ignoreDuplicateRegistrations:!0})},j:function(_,E){var v=(E=G(E))==="std::string";Nt(_,{name:E,fromWireType:function(C){var U,W=Re[C>>2],j=C+4;if(v)for(var q=j,Z=0;Z<=W;++Z){var B=j+Z;if(Z==W||x[B]==0){var ce=Du(q,B-q);U===void 0?U=ce:(U+="\0",U+=ce),q=B+1}}else{var ve=new Array(W);for(Z=0;Z<W;++Z)ve[Z]=String.fromCharCode(x[j+Z]);U=ve.join("")}return mr(C),U},toWireType:function(C,U){var W;U instanceof ArrayBuffer&&(U=new Uint8Array(U));var j=typeof U=="string";j||U instanceof Uint8Array||U instanceof Uint8ClampedArray||U instanceof Int8Array||F("Cannot pass non-string to std::string"),W=v&&j?(ve=>{for(var ye=0,me=0;me<ve.length;++me){var Ce=ve.charCodeAt(me);Ce<=127?ye++:Ce<=2047?ye+=2:Ce>=55296&&Ce<=57343?(ye+=4,++me):ye+=3}return ye})(U):U.length;var q=Ni(4+W+1),Z=q+4;if(Re[q>>2]=W,v&&j)((ve,ye,me,Ce)=>{if(!(Ce>0))return 0;for(var Ze=me,He=me+Ce-1,ut=0;ut<ve.length;++ut){var We=ve.charCodeAt(ut);if(We>=55296&&We<=57343&&(We=65536+((1023&We)<<10)|1023&ve.charCodeAt(++ut)),We<=127){if(me>=He)break;ye[me++]=We}else if(We<=2047){if(me+1>=He)break;ye[me++]=192|We>>6,ye[me++]=128|63&We}else if(We<=65535){if(me+2>=He)break;ye[me++]=224|We>>12,ye[me++]=128|We>>6&63,ye[me++]=128|63&We}else{if(me+3>=He)break;ye[me++]=240|We>>18,ye[me++]=128|We>>12&63,ye[me++]=128|We>>6&63,ye[me++]=128|63&We}}ye[me]=0})(U,x,Z,W+1);else if(j)for(var B=0;B<W;++B){var ce=U.charCodeAt(B);ce>255&&(mr(Z),F("String has UTF-16 code units that do not fit in 8 bits")),x[Z+B]=ce}else for(B=0;B<W;++B)x[Z+B]=U[B];return C!==null&&C.push(mr,q),q},argPackAdvance:8,readValueFromPointer:ns,destructorFunction:function(C){mr(C)}})},g:function(_,E,v){var C,U,W,j,q;v=G(v),E===2?(C=lr,U=cs,j=ec,W=()=>Q,q=1):E===4&&(C=Nu,U=wu,j=Ci,W=()=>Re,q=2),Nt(_,{name:v,fromWireType:function(Z){for(var B,ce=Re[Z>>2],ve=W(),ye=Z+4,me=0;me<=ce;++me){var Ce=Z+4+me*E;if(me==ce||ve[Ce>>q]==0){var Ze=C(ye,Ce-ye);B===void 0?B=Ze:(B+="\0",B+=Ze),ye=Ce+E}}return mr(Z),B},toWireType:function(Z,B){typeof B!="string"&&F(`Cannot pass non-string to C++ string type ${v}`);var ce=j(B),ve=Ni(4+ce+E);return Re[ve>>2]=ce>>q,U(B,ve+4,ce+E),Z!==null&&Z.push(mr,ve),ve},argPackAdvance:8,readValueFromPointer:ns,destructorFunction:function(Z){mr(Z)}})},n:function(_,E){Nt(_,{isVoid:!0,name:E=G(E),argPackAdvance:0,fromWireType:function(){},toWireType:function(v,C){}})},e:function(_,E,v,C){var U,W;(_=ds[_])(E=vi.toValue(E),v=(W=tc[U=v])===void 0?G(U):W,null,C)},l:mn,h:function(_,E){var v=function(Ze,He){for(var ut,We,vt,wi=new Array(Ze),yt=0;yt<Ze;++yt)wi[yt]=(ut=Re[He+4*yt>>2],We="parameter "+yt,vt=void 0,(vt=Dr[ut])===void 0&&F(We+" has unknown type "+za(ut)),vt);return wi}(_,E),C=v[0],U=C.name+"_$"+v.slice(1).map(function(Ze){return Ze.name}).join("_")+"$",W=us[U];if(W!==void 0)return W;for(var j=["retType"],q=[C],Z="",B=0;B<_-1;++B)Z+=(B!==0?", ":"")+"arg"+B,j.push("argType"+B),q.push(v[1+B]);var ce="return function "+is("methodCaller_"+U)+`(handle, name, destructors, args) {
|
|
86
|
-
`,ve=0;for(B=0;B<_-1;++B)ce+=" var arg"+B+" = argType"+B+".readValueFromPointer(args"+(ve?"+"+ve:"")+`);
|
|
87
|
-
`,ve+=v[B+1].argPackAdvance;for(ce+=" var rv = handle[name]("+Z+`);
|
|
88
|
-
`,B=0;B<_-1;++B)v[B+1].deleteObject&&(ce+=" argType"+B+".deleteObject(arg"+B+`);
|
|
89
|
-
`);C.isVoid||(ce+=` return retType.toWireType(destructors, rv);
|
|
90
|
-
`),ce+=`};
|
|
91
|
-
`,j.push(ce);var ye,me,Ce=Qa(Function,j).apply(null,q);return ye=Ce,me=ds.length,ds.push(ye),W=me,us[U]=W,W},f:()=>{K("")},c:hn,t:(_,E,v)=>x.copyWithin(_,E,E+v),s:_=>{x.length,K("OOM")},i:(_,E,v,C)=>{for(var U,W,j,q=0,Z=0;Z<v;Z++){var B=Re[E>>2],ce=Re[E+4>>2];E+=8;for(var ve=0;ve<ce;ve++)U=_,W=x[B+ve],j=void 0,j=ic[U],W===0||W===10?((U===1?I:S)(Za(j,0)),j.length=0):j.push(W);q+=ce}return Re[C>>2]=q,0}},mr=(function(){var _,E,v,C,U={a:oc};function W(j,q){var Z,B,ce=j.exports;return N=(k=ce).v,Z=N.buffer,o.HEAP8=P=new Int8Array(Z),o.HEAP16=J=new Int16Array(Z),o.HEAP32=De=new Int32Array(Z),o.HEAPU8=x=new Uint8Array(Z),o.HEAPU16=Q=new Uint16Array(Z),o.HEAPU32=Re=new Uint32Array(Z),o.HEAPF32=le=new Float32Array(Z),o.HEAPF64=xe=new Float64Array(Z),Le=k.z,B=k.w,on.unshift(B),function(){if(vr--,o.monitorRunDependencies&&o.monitorRunDependencies(vr),vr==0&&(es!==null&&(clearInterval(es),es=null),_i)){var ve=_i;_i=null,ve()}}(),ce}if(vr++,o.monitorRunDependencies&&o.monitorRunDependencies(vr),o.instantiateWasm)try{return o.instantiateWasm(U,W)}catch(j){S("Module.instantiateWasm callback failed with error: "+j),r(j)}(_=g,E=Wr,v=U,C=function(j){W(j.instance)},_||typeof WebAssembly.instantiateStreaming!="function"||co(E)||typeof fetch!="function"?Ti(E,v,C):fetch(E,{credentials:"same-origin"}).then(j=>WebAssembly.instantiateStreaming(j,v).then(C,function(q){return S("wasm streaming compile failed: "+q),S("falling back to ArrayBuffer instantiation"),Ti(E,v,C)}))).catch(r)}(),_=>(mr=k.x)(_)),Ni=_=>(Ni=k.y)(_),ls=_=>(ls=k.A)(_),sc=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=k.B)(),_=>(sc=k.C)(_));o.dynCall_jiji=(_,E,v,C,U)=>(o.dynCall_jiji=k.D)(_,E,v,C,U);function nc(){function _(){wt||(wt=!0,o.calledRun=!0,ao||(uo(on),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)E=o.postRun.shift(),sn.unshift(E);var E;uo(sn)}()))}vr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)E=o.preRun.shift(),rn.unshift(E);var E;uo(rn)}(),vr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),_()},1)):_()))}if(_i=function _(){wt||nc(),wt||(_i=_)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return nc(),t.ready}})();var NI="web.sdk.qcloud.com",wI=`https://${NI}/trtc/webrtc/v5/doc`,vM=`${wI}/zh-cn/`,Uf=(i=>(i[i.TRACE=0]="TRACE",i[i.DEBUG=1]="DEBUG",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.NONE=5]="NONE",i))(Uf||{});var Bd={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",LOADEDMETADATA:"loadedmetadata",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"},CM=Bd.MAIN,DM=Bd.AUXILIARY,NM=Bd.BIG,wM=Bd.SMALL;var MM=Object.keys(Uf);var OM=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{};function xf(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:xM}=Object.prototype,Vf=class Ff{constructor(t){this.core=t,br(this,"contextMap",new Map),br(this,"decodeProcessorMap",new WeakMap),this.addKVReportBeforeExitRoom=this.addKVReportBeforeExitRoom.bind(this),this.createDecoder=this.createDecoder.bind(this),this.core.innerEmitter.on("51",this.addKVReportBeforeExitRoom)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return Ff.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return new DI(Vd(Ud({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new Qs;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:n})=>{if(n!==t.track||s.type==="empty")return s;if(this.contextMap.has(n))return this.contextMap.get(n).decode(s);let d=this.core.room.videoManager.createDecodeContext(Vd(Ud({},t),{createDecoder:this.createDecoder}));return e(d.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:n})})),this.contextMap.set(n,d),d.decode(s)}}stop(t){if(t!=null&&t.track){let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.report(e,t.track),this.contextMap.delete(t.track))}else this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}report(t,e){if(t.isReported)return;t.isReported=!0;let r=xf()-t.startPerformanceTime,{renderFreezeTotal:o,dataFreezeTotal:s}=this.getRemoteTrackFreezeDuration(e,t);r&&this.core.kvStatManager.addNumber({key:514850,value:Math.floor(o/r*100),split:1}),r&&this.core.kvStatManager.addNumber({key:514851,value:Math.floor(s/r*100),split:1}),t.inputFrameCount&&this.core.kvStatManager.addNumber({key:514852,value:Math.floor(t.decodedFrameCount/t.inputFrameCount*100),split:1})}addKVReportBeforeExitRoom({room:t}){t===this.core.room&&this.contextMap.forEach((e,r)=>{this.report(e,r)})}update(t){let e=this.contextMap.get(t.track);e&&(t.type!=="mock"?(e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(Vd(Ud({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getRenderFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),s=0;r&&r.freezeTimeline.forEach(({startTime:d,endTime:p})=>{d>e.startPerformanceTime&&(s+=p===0?xf()-d:p-d)});let n=0;return o&&o.durationItemList.forEach(d=>{d.startTime>e.startPerformanceTime&&(n+=d.getDuration())}),{renderFreezeTotal:s,dataFreezeTotal:n}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}};br(Vf,"Name","TRTCVideoDecoder");var Gm=Vf;var lg=Oi(Bi());function jm({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return Me((r,o)=>{let s=new WeakMap;return H.on(L.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let d=s.get(this);if(d||(d={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.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(...n)),d.timestamp!==0&&Date.now()-d.timestamp<1e3&&(d.callCountInSecond>=i||d.totalSizeInSecond>t))throw new he({code:te.INVALID_OPERATION,message:dt({key:ct.CALL_FREQUENCY_LIMIT,data:{isTimes:d.callCountInSecond>=i,isSize:d.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});d.callCountInSecond++,r.call(this,...n)}})}var MI="2025-04-25 17:35:59",$f=!0,Bf=function(){var i;$f&&($f=!1,$.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Mr}/en/index.html`),console.info(`* Changelog: ${Mr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),$.info("TRTC Web SDK Version:",rt),Tr||$.debug("Build Time:",MI),$.info("UA:",navigator.userAgent),$.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),Jn().then(t=>{t&&$.info(gr)}))};var nr={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",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var ue={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},Rr=(O=>(O[O.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",O[O.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",O[O.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",O[O.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",O[O.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",O[O.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",O[O.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",O[O.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",O[O.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",O[O.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",O[O.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",O[O.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",O[O.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",O[O.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",O[O.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",O[O.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",O[O.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",O[O.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",O[O.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",O[O.INVALID_OPERATION=5100]="INVALID_OPERATION",O[O.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",O[O.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",O[O.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",O[O.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",O[O.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",O[O.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",O[O.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",O[O.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",O[O.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",O[O.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",O[O.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",O[O.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",O[O.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",O[O.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",O[O.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",O[O.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",O[O.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",O[O.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",O[O.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",O[O.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",O[O.DEVICE_ERROR=5300]="DEVICE_ERROR",O[O.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",O[O.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",O[O.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",O[O.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",O[O.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",O[O.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",O[O.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",O[O.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",O[O.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",O[O.SERVER_ERROR=5400]="SERVER_ERROR",O[O.NEED_TO_BUY=5401]="NEED_TO_BUY",O[O.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",O[O.OPERATION_FAILED=5500]="OPERATION_FAILED",O[O.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",O[O.REJOIN_FAILED=5502]="REJOIN_FAILED",O[O.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",O[O.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",O[O.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",O[O.OPERATION_ABORT=5998]="OPERATION_ABORT",O[O.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",O))(Rr||{});function Wf({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=Rr[i];try{o=Hf[s]}catch(n){o=Hf.UNKNOWN_ERROR}return Xe(o)?r=o(t):we(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var Hf=Ee(ee({},qt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ht(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ht(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' 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:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' 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:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' 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:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=zo(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=zo(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=zo(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=zo(i),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:i,deviceType:t=zo(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=zo(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=zo(i),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:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function zo(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var qm=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:d}){var m;let p;o?p=o:p=Wf({code:e===ue.SERVER_ERROR?e:r||e,params:ee({fnName:n,error:d},s)});super(p);u(this,"name","RtcError");u(this,"code");u(this,"extraCode");u(this,"functionName");u(this,"message");u(this,"handler");u(this,"originError");this.name=Rr[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=d,this.message=p,this.extraCode===5302&&((m=this.originError)!=null&&m.message.includes("system"))&&(this.handler=()=>{let g={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},I={startLocalVideo:"webcam",startLocalAudio:"microphone"},S=document.createElement("a");vo?S.href=`ms-settings:privacy-${I[this.functionName]}`:_r&&(S.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${g[this.functionName]}`),S.href.length>0&&S.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof he){let{stack:n}=e,d={code:ue.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case te.INVALID_PARAMETER:d.code=ue.INVALID_PARAMETER,d.message=e.message;break;case te.INVALID_OPERATION:d.code=ue.INVALID_OPERATION;break;case te.NOT_SUPPORTED:case te.NOT_SUPPORTED_H264:d.code=ue.ENV_NOT_SUPPORTED,e.getCode()===te.NOT_SUPPORTED_H264&&(d.extraCode=e.message.includes(qt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case te.JOIN_ROOM_FAILED:d.messageParams={fnParams:o};case te.SERVER_TIMEOUT:case te.SWITCH_ROLE_FAILED:d.code=ue.SERVER_ERROR,d.extraCode=e.getExtraCode();break;case te.API_CALL_ABORTED:d.code=ue.OPERATION_ABORT;break;case te.DEVICE_NOT_FOUND:case te.DEVICE_AUTO_RECOVER_FAILED:case te.INITIALIZE_FAILED:d.code=5300,e.name&&(d.extraCode=OI(e.name));break;case te.UNKNOWN:break;default:d.code=ue.OPERATION_FAILED}s=new i(d),n&&(s.stack+=n.substr(n.indexOf(`
|
|
92
|
-
`)))}else{if(e instanceof i)return e;s=new i({code:ue.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function OI(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var ae=qm;var Gf={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}}},jf={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}}},Ys={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(we(i)&&!document.getElementById(i))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},qf={name:"userId",required:!0,type:"string"},Jf={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[nr.AUDIO_PROFILE_STANDARD,nr.AUDIO_PROFILE_STANDARD_STEREO,nr.AUDIO_PROFILE_HIGH,nr.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function wa(i,t){if(!i)throw new ae({code:ue.INVALID_OPERATION,extraCode:5101,fnName:t})}function zf(i,t,e){if(!i)throw new ae({code:ue.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}var WO={type:"number",notLessThanZero:!0},xI={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new ae({code:ue.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(we(i.roomId))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});if(!(/^[1-9]\d*$/.test(String(i.roomId))&&i.roomId<4294967295))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:t}})}else if(i.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i.strRoomId))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:t}})}else throw new ae({code:ue.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"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Ys,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:Gf},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&ai())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Ee(ee({},Ys),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:Gf}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Jf},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&ai())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Jf}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Ys,publish:{type:"boolean"},option:jf},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(ai())throw new ae({code:ue.ENV_NOT_SUPPORTED,extraCode:5201});if(!oa())throw new ae({code:ue.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Ys,publish:{type:"boolean"},option:jf}},muteRemoteAudio:[qf,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[qf,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Ys,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(i,t,e){wa(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(zf(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ae({code:ue.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Ee(ee({},Ys),{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(i,t,e){wa(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(zf(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ae({code:ue.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&V(i.streamType))throw new ae({code:ue.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){wa(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!ca)throw new ae({code:ue.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ae({code:ue.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});wa(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new ae({code:ue.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},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(i,t,e,r){if(i.byteLength>1e3)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(wa(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ae({code:ue.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}}},bt={TRTC:xI};var Lt=class extends Error{};function PI(i,t){let e=Ao(i);for(let r=0;r<t.length;r++)kr(e[r],t[r]);return e}function kI(i){this._resolve=Promise.resolve(i)}function LI(i){this._reject=Promise.reject(i)}var Zi=class Zi{constructor(t,e){this.instance=t;this.group=e;u(this,"started",!1);u(this,"ops",[]);u(this,"startSame",()=>!0);u(this,"mergeUpdate",PI);let r=Zi.instances.get(t);r?r.set(e,this):Zi.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=Zi.instances.get(t);return r&&r.get(e)||new Zi(t,e)}static gets(t,e){let r=Zi.instances.get(t),o=[];return r&&r.forEach((s,n)=>{e.test(n)&&o.push(s)}),o}action(t,e,r){let o=d=>{var p;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(p=this.currentOp)==null||p.action(),d},s=d=>{var p,m;throw this.ops.shift(),t===0&&((p=this.currentOp)==null?void 0:p.type)===2&&this.ops.shift().reject(new Lt("start failed")),(m=this.currentOp)==null||m.action(),d},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:kI,reject:LI};try{switch(this.state){case 1:if(t===0)throw new Lt("already started");break;case 4:if(t===2)throw new Lt("not started");break;default:return this.cacheOp(n)}}catch(d){return Promise.reject(d)}return this.ops.push(n),n.promise=e(...n.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new Lt("already start");break;case 3:switch(t.type){case 2:throw new Lt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Lt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Lt("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),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,t.args),this.lastOp.promise;case 3:throw new Lt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Lt("start not allowed after update");case 0:throw new Lt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Lt("keep start")),new Lt("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.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}};u(Zi,"instances",new WeakMap);var gi=Zi;var Hd=new WeakMap,Wd=(i,t)=>{if(t instanceof Lt){let{stack:e}=t;t=new ae({code:ue.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
|
|
93
|
-
`)))}throw t};function Ki(i,t){return Me((e,r)=>function(...o){let s=gi.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch(Wd.bind(null,r))):e.apply(this,o)})}function Xo(i,t){let{merge:e,debounce:r}=t||{};return Me((o,s)=>function(...n){let d=gi.get(this,typeof i=="string"?i:i.call(this,...n));if(!d)return o.apply(this,n);if(e&&(d.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,n)){let{delay:p,getKey:m}=r;return new Promise((g,I)=>{var k,P;let S=(k=Hd.get(this))==null?void 0:k.get(m(...n));if(S){let{timeoutId:x,resolve:J}=S;clearTimeout(x),J()}let N=setTimeout(()=>{if(d.state===3||d.state===4)return g();d.action(2,o.bind(this),n).catch(Wd.bind(null,s)).then(g,I)},p);Hd.has(this)?(P=Hd.get(this))==null||P.set(m(...n),{timeoutId:N,resolve:g}):Hd.set(this,new Map([[m(...n),{timeoutId:N,resolve:g}]]))})}return d.action(2,o.bind(this),n).catch(Wd.bind(null,s))})}function eo(i){return Me((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(gi.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=gi.get(this,o);return s?s.action(3,t.bind(this),r).catch(Wd.bind(null,e)):t.apply(this,r)})}var se={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",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},Xf=new Set([se.ERROR,se.AUTOPLAY_FAILED,se.KICKED_OUT,se.REMOTE_USER_ENTER,se.REMOTE_USER_EXIT,se.REMOTE_AUDIO_AVAILABLE,se.REMOTE_AUDIO_UNAVAILABLE,se.REMOTE_VIDEO_AVAILABLE,se.REMOTE_VIDEO_UNAVAILABLE,se.CONNECTION_STATE_CHANGED,se.PUBLISH_STATE_CHANGED,se.SCREEN_SHARE_STOPPED,se.DEVICE_CHANGED,se.FIRST_VIDEO_FRAME]);function to(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function Ma(i){return i===nr.QOS_PREFERENCE_CLEAR?"detail":i===nr.QOS_PREFERENCE_SMOOTH?"motion":""}var zm={};Jr(zm,{bytes2ms:()=>Fp,convertObjectNumberToInt:()=>Pn,copyProperties:()=>Vp,deepClone:()=>Ao,deepMerge:()=>kr,delay:()=>kn,fibonacci:()=>bo,formatedTime:()=>Tc,getConstructorName:()=>Mn,getContainerFromElement:()=>Jp,getEnv:()=>kp,getInternalVersion:()=>jp,getLoggerUrl:()=>Yr,getMuteStateFromFlag:()=>xn,getNetworkType:()=>Nn,getNumNetworkType:()=>_c,getReconnectionTimeout:()=>Bp,getStringByteLength:()=>zp,getTurnServer:()=>qp,getUint32Version:()=>yc,getValueType:()=>ht,getViewListFromView:()=>Is,glog:()=>wn,ipv4ToUint32:()=>Ts,isArray:()=>st,isAudioWorkletSupported:()=>Gp,isBoolean:()=>nt,isConstructor:()=>Es,isEmpty:()=>_s,isFunction:()=>Xe,isLangChinese:()=>fr,isMediaStreamTrack:()=>Hp,isNumber:()=>je,isObject:()=>Pr,isOverseaSdkAppId:()=>Dn,isPlainObject:()=>Gt,isPortrait:()=>Sc,isPromise:()=>Pi,isRemoteTrack:()=>Wp,isString:()=>we,isUndefined:()=>V,loadImage:()=>Ss,ms2bytes:()=>$p,ms2samples:()=>ju,normalizeUrl:()=>Ro,performanceNow:()=>_e,promiseAny:()=>On,samples2ms:()=>Gu,setNetworkType:()=>Up,stringify:()=>ir,stringifyIncludeValue:()=>Ic,throttlePromise:()=>Ac});var Ym={};Jr(Ym,{ScheduleRequestType:()=>Yf,getAbilityConfig:()=>VI,getScheduleDomain:()=>Zf,isNeedToSchedule:()=>Gd,scheduleProxy:()=>io,sendScheduleRequest:()=>Qm,setIsNeedToSchedule:()=>Qo,setScheduleProxy:()=>jd});var Xm=null,Gd=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Qr).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
|
|
94
|
-
`));function Qo(i){nt(i)&&i!==Gd&&(Gd=i,$.info(`setIsNeedToSchedule ${i}`))}H.on("28",()=>Qo(!0));H.on("63",()=>Qo(!0));H.on("84",()=>Qo(!0));H.on("201",i=>{i.state==="RECONNECTING"&&Qo(!0)});H.on("202",i=>{i.state==="RECONNECTING"&&Qo(!0)});function UI(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=ro(i,"config",D.MAIN),n=ro(i,"config",D.BACKUP);for(let d of o)if(d.startTime>=e&&(d.name===s||d.name===n)&&d.transferSize>0){let p=d.name===s?D.MAIN:D.BACKUP,m=Math.round(d.duration),g=Math.round(d.domainLookupStart-d.startTime),I=d.redirectStart>0?Math.round(d.redirectEnd-d.redirectStart):0,S=d.fetchStart>0?Math.round(d.domainLookupStart-d.fetchStart):0,N=Math.round(d.domainLookupEnd-d.domainLookupStart),k=Math.round(d.requestStart-d.secureConnectionStart),P=Math.round(d.secureConnectionStart-d.connectStart),x=Math.round(d.responseStart-d.requestStart),J=Math.round(d.responseEnd-d.responseStart),Q=[N,k,P,x,J];Be.uploadEvent({log:`stat-schedule-net:${m}(${g}(${I}->${S})->${Q.join("->")}) ${p}`,userId:t}),r=Ee(ee({},r),{totalCost:m,local:g,dns:N,tcp:P,tls:k,request:x,response:J});break}}catch(o){$.error("getScheduleDetailCost error",o)}return r}function Qm(m){return A(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:d,latencyLevel:p}){if(!Gd&&Xm)return{isCached:!0,result:Xm};let g={delta:0,count:[1,1],msg:[],detail:[]};try{let I=new FormData;I.append("userId",String(i)),I.append("sdkAppId",String(t)),I.append("isStrGroupId",String(e)),I.append("groupId",String(r)),I.append("sdkVersion",s),I.append("userSig",String(o)),d&&I.append("role",String(d)),p&&I.append("latencyLevel",String(p)),n&&I.append("frameWorkType",String(n));let S=_e(),N=yield $I(I,g,t);N.config&&(N.config.loggerDomain&&Io(N.config.loggerDomain),nt(N.config.scheduleCache)&&Qo(!N.config.scheduleCache)),g.delta=_e()-S;let k=UI(Number(t),i,S);return Xm=N,{isCached:!1,result:N,detailCost:k}}catch(I){let S=st(I)?I[0]:I,N=je(S.code)?S.code:0,k=`schedule failed${S.message?`: ${S.message}`:""}`,P=new he({code:te.SCHEDULE_FAILED,extraCode:N,message:dt({key:ct.JOIN_ROOM_FAILED,data:{error:k,code:N}})});throw $.error(k,N),P}})}var io={main:"",backup:""};function jd(i){st(i)?(io.main=i[0],io.backup=i[1]):io.main=i}var Yf=(r=>(r.CONFIG="config",r.TRTC_AUTO_CONF="trtcAutoConf",r.AUDIO_AI_AUTH="audioAiAuth",r))(Yf||{});function ro(i,t,e=D.MAIN,r=!1){return`https://${io[e]||Zf(i,e,r)}/api/v1/${t}`}function VI(i,t,e){let r=ro(i,t),o=ro(i,t,D.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${r}?${s}`).then(p=>p.json()),d=fetch(`${o}?${s}`).then(p=>p.json());return On([n,d])}function Zf(i,t=D.MAIN,e=!1){let r;return Dn(i)?e?r=t===D.MAIN?Qr.MAIN_OVERSEA_BACKUP:Qr.BACKUP_OVERSEA:r=t===D.MAIN?Qr.MAIN_OVERSEA:Qr.BACKUP_OVERSEA:r=t===D.MAIN?Qr.MAIN:Qr.BACKUP,r}function FI(i,t,e){return new Promise((r,o)=>{Zr({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var Qf=(i,t)=>Li({retryFunction:FI,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function $I(i,t,e){return new Promise((r,o)=>{let s=null;On([Qf(n=>t.count[0]=n+1,({error:n,retry:d,retriedCount:p,retryFuncArgs:m})=>{t.msg[0]=n.message,s||(p>=1&&(m[0]=ro(e,"config",D.MAIN,!0)),d())})(ro(e,"config",D.MAIN),i,{get timeout(){return bo(2+t.count[0])*1e3}}),Qf(n=>t.count[1]=n+1,({error:n,retry:d,retriedCount:p,retryFuncArgs:m})=>{t.msg[1]=n.message,s||(p>=2&&(m[0]=ro(e,"config",D.BACKUP,!0)),d())})(ro(e,"config",D.BACKUP),i,{get timeout(){return bo(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var BI=i=>i.startsWith("data:application/octet-stream;base64,"),HI=i=>i.startsWith("file://"),qd=class{constructor(){u(this,"_log");this._log=$.createLogger({id:"fd"})}download(t,e){return A(this,null,function*(){let{type:r="blob"}=e||{};t=Ro(t);try{let o=_e(),s;if(Xe(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=_e()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),Y.addSuccessEvent({key:522700,cost:_e()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),Y.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return A(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok)throw new Error("network response was not ok");let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{s.status===200||s.status===0&&s.response?r({data:s.response}):o(new Error("XHR failed"))},s.onerror=o,s.send(null)})}loadWasm(t,e){return A(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=_e(),o=null,s=null;if(Xe(WebAssembly.instantiateStreaming)&&!BI(t)&&!HI(t)&&Xe(fetch))try{let n=fetch(t);o=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!o)try{let n=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(o){let n=_e()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),Y.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),Y.addFailedEvent({key:522701,error:s}),s})}};X([Wi({settings:{timeout:0,retries:3},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],qd.prototype,"download",1);var Kf=new qd;function eg({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,room:t,assetsPath:r,fileDownloader:Kf,innerEmitter:H,constants:Wu,environment:xs,utils:zm,eventLogger:Be,log:this.room.getLogger(),loggerManager:$,errorModule:e,kvStatManager:Y,rtcDectection:Hi,trtc:this,rx:$m,enums:bl,schedule:Ym,clearStarted:(o,s)=>{let n=o.getAlias(),d=gi.instances.get(this);if(d)if(s){let p=d.get(n+s);if(!p)return;p.started=!1}else d.forEach((p,m)=>{m.startsWith(n)&&(p.started=!1)})},startGetPCM:Ta,createAudioNode:Xl}}var tg=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=dt({key:ct.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return $.warn(`${s}
|
|
51
|
+
} `;var xr=class extends H{constructor(e){super();d(this,"frameRate");d(this,"_canvas");d(this,"log");d(this,"hasAlpha",!1);d(this,"name");d(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 Vi(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new ys(this,e)}createVideoImageSource(e,t){return new Wo(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Jo(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(xr,"_ids",0);var cT={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},bs=class bs extends xr{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${xr._ids++}`),this.ctx=this._canvas.getContext("webgl2",cT),!this.ctx)throw new y({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,nT),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,aT),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"}))})}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}};d(bs,"UNAVAILABLE","unavailable"),b([pe(H.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),N.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),N.addSuccessEvent({key:512700})}})],bs.prototype,"create",1),b([pe("created",H.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(bs.UNAVAILABLE,e),this.removeAllListeners()}})],bs.prototype,"destroy",1);var De=bs,qe=class extends xr{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${xr._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._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}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([pe(H.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),N.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),N.addSuccessEvent({key:512701})}})],qe.prototype,"create",1),b([pe("created",H.INIT,{ignoreError:!0,sync:!0})],qe.prototype,"destroy",1);function dT(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var ui=class extends Cs{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",o=>{this.room.emit("first-video-frame",o)})}play(e,t){return(ge(t==null?void 0:t.canvasRender)?t.canvasRender:ut===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new qe({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new wr(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),yr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=dT(t);if(!Q(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){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 isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},Ns=class extends ui{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var vs=new Map;T.on(I.JOIN_SUCCESS,({room:s})=>{Te(s.userId,{eventId:32788})});T.on(I.LEAVE_START,({room:s})=>{Te(s.userId,{eventId:32789})});T.on(I.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),Te(s.room.userId,{eventId:i})}});T.on(I.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),Te(s.room.userId,{eventId:i})}});T.on(I.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?Te(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):Te(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});T.on(I.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===m.AUDIO?Te(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):Te(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});T.on(I.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Te(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&Te(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&Te(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});T.on(I.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Te(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&Te(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&Te(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});T.on(I.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&Te(s.room.userId,{eventId:s.kind===m.VIDEO?32780:32781})});T.on(I.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&Te(s.room.userId,{eventId:s.kind===m.VIDEO?32782:32783})});T.on(I.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&&Te(s.userId,{eventId:t})});T.on(I.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&&Te(s.userId,{eventId:o,remoteUserId:t})});T.on(I.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:s,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:o,streamType:n})=>{let a=r?1:0;o||(a=r?3:2);let c=t==="h264"?0:2,l={eventId:4004,param1:a,param2:c,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),Te(i,l),N.addEnum({key:e?514701:513701,value:a}),N.addEnum({key:e?514700:513700,value:c})});T.on(I.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)),Te(s.userId,e)}});function Te(s,i){let e=w(v({},i),{timestamp:Gs()});vs.has(s)?vs.get(s).push(e):vs.set(s,[e])}function Sm(s){if(vs.has(s)){let i=vs.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 vs.delete(s),i}return[]}function Im(...s){return z((i,e)=>function(...t){return lT.call(this,s,t,e,this._name),i.apply(this,t)})}function lT(s,i,e,t){try{if(_e(s))for(let r=0;r<s.length;r++)$a.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else $a.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}catch(r){throw R.error(r),r}}function $a({rule:s,value:i,key:e,fnName:t,className:r}){if(E(i)){if(s.required)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(E(s.defaultValue))return;i=s.defaultValue}if(Array.isArray(s.type)){let a=!1;for(let c=0;c<s.type.length;c++)s.type[c]===null&&i===null&&(a=!0),se(s.type[c])&&i instanceof s.type[c]&&(a=!0),K(s.type[c])&&Ee(i)===s.type[c].toLowerCase()&&(a=!0);if(!a)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:s.type.map(c=>_r(c)?zr(c):K(c)?c:Ee(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!E(s.type)&&Ee(i)!==s.type)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_TYPE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.allowEmpty===!1){let a=Q(i)&&(i===0||Number.isNaN(i)),c=K(i)&&i.trim()==="";if(a||c)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_EMPTY,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}if(s.notLessThanZero&&Q(i)&&i<0)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!E(s.min)&&Q(i)&&i<s.min)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_MIN,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!E(s.max)&&Q(i)&&i>s.max)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_MAX,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(se(s.instanceOf)&&!(i instanceof s.instanceOf))throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.values&&!s.values.includes(i))throw new y({code:S.INVALID_PARAMETER,message:L({key:k.INVALID_PARAMETER_RANGE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:o}=s;He(o)&&bt(i)&&Object.keys(o).forEach(a=>{$a.call(this,{rule:o[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=s;He(n)&&_e(i)&&i.forEach((a,c)=>{$a.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),se(s.validate)&&s.validate.call(this,i,e,t,r,this)}var Am=Be(Qe(),1);var Ha=class extends Am.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;d(this,"userMap",new Map);d(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+=`:${Uc[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=Si(o,n),l=(h=this.remotePublishedUserMap.get(r))==null?void 0:h.muteState;if(l){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:l,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:Si(0,n),muteState:c,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Bl({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return z((t,r)=>{let o=new WeakMap;return T.on(I.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:L({key:k.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 uT="2025-05-21 20:33:32",Rm=!0,Cm=function(){var s;if(Rm){Rm=!1,R.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Ht}/en/index.html`),console.info(`* Changelog: ${Ht}/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:",Me),Lt||R.debug("Build Time:",uT);let i=`UA: ${navigator.userAgent}
|
|
52
|
+
CPU core: ${navigator.hardwareConcurrency}, GPU: ${nd()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),R.info(i),R.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),fo().then(t=>{t&&R.info(Dt)})}};var At={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",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var $={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},Ut=(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.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",A[A.OPERATION_ABORT=5998]="OPERATION_ABORT",A[A.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",A))(Ut||{});function bm({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=Ut[s];try{r=ym[o]}catch(n){r=ym.UNKNOWN_ERROR}return se(r)?t=r(i):K(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var ym=w(v({},we),{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: ${Ee(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: ${Ee(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=Ur(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=Ur(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=Ur(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=Ur(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=Ur(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=Ur(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=Ur(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 Ur(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var Fl=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var l;let c;r?c=r:c=bm({code:e===$.SERVER_ERROR?e:t||e,params:v({fnName:n,error:a},o)});super(c);d(this,"name","RtcError");d(this,"code");d(this,"extraCode");d(this,"functionName");d(this,"message");d(this,"handler");d(this,"originError");this.name=Ut[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=c,this.extraCode===5302&&((l=this.originError)!=null&&l.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},f=document.createElement("a");Tr?f.href=`ms-settings:privacy-${u[this.functionName]}`:kt&&(f.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),f.href.length>0&&f.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof y){let{stack:n}=e,a={code:$.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case S.INVALID_PARAMETER:a.code=$.INVALID_PARAMETER,a.message=e.message;break;case S.INVALID_OPERATION:a.code=$.INVALID_OPERATION;break;case S.NOT_SUPPORTED:case S.NOT_SUPPORTED_H264:a.code=$.ENV_NOT_SUPPORTED,e.getCode()===S.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(we.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=$.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case S.API_CALL_ABORTED:a.code=$.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=hT(e.name));break;case S.UNKNOWN:break;default:a.code=$.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
|
|
53
|
+
`)))}else{if(e instanceof s)return e;o=new s({code:$.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function hT(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 B=Fl;var Nm={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}}},vm={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}}},Ds={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(K(s)&&!document.getElementById(s))throw new B({code:$.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},Dm={name:"userId",required:!0,type:"string"},Om={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[At.AUDIO_PROFILE_STANDARD,At.AUDIO_PROFILE_STANDARD_STEREO,At.AUDIO_PROFILE_HIGH,At.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function qo(s,i){if(!s)throw new B({code:$.INVALID_OPERATION,extraCode:5101,fnName:i})}function Mm(s,i,e){if(!s)throw new B({code:$.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var oO={type:"number",notLessThanZero:!0},mT={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 B({code:$.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(K(s.roomId))throw new B({code:$.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new B({code:$.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 B({code:$.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new B({code:$.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"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Ds,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:Nm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:w(v({},Ds),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:Nm}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Om},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Om}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Ds,publish:{type:"boolean"},option:vm},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)){if(Di())throw new B({code:$.ENV_NOT_SUPPORTED,extraCode:5201});if(!Ao())throw new B({code:$.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Ds,publish:{type:"boolean"},option:vm}},muteRemoteAudio:[Dm,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[Dm,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Ds,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){qo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Mm(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new B({code:$.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:w(v({},Ds),{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){qo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Mm(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new B({code:$.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 B({code:$.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){qo(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(!bo)throw new B({code:$.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new B({code:$.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new B({code:$.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:$.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});qo(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 B({code:$.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 B({code:$.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:$.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(qo(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new B({code:$.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},Ue={TRTC:mT};var je=class extends Error{};function pT(s,i){let e=mr(s);for(let t=0;t<i.length;t++)Wt(e[t],i[t]);return e}function fT(s){this._resolve=Promise.resolve(s)}function _T(s){this._reject=Promise.reject(s)}var ir=class ir{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",pT);let t=ir.instances.get(i);t?t.set(e,this):ir.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=ir.instances.get(i);return t&&t.get(e)||new ir(i,e)}static gets(i,e){let t=ir.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,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new je("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:fT,reject:_T};try{switch(this.state){case 1:if(i===0)throw new je("already started");break;case 4:if(i===2)throw new je("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 je("already start");break;case 3:switch(i.type){case 2:throw new je("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new je("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new je("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 je("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new je("start not allowed after update");case 0:throw new je("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new je("keep start")),new je("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}};d(ir,"instances",new WeakMap);var Bi=ir;var Ga=new WeakMap,Wa=(s,i)=>{if(i instanceof je){let{stack:e}=i;i=new B({code:$.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
|
|
54
|
+
`)))}throw i};function rr(s,i){return z((e,t)=>function(...r){let o=Bi.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(Wa.bind(null,t))):e.apply(this,r)})}function Vr(s,i){let{merge:e,debounce:t}=i||{};return z((r,o)=>function(...n){let a=Bi.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:l}=t;return new Promise((h,u)=>{var D,_;let f=(D=Ga.get(this))==null?void 0:D.get(l(...n));if(f){let{timeoutId:C,resolve:M}=f;clearTimeout(C),M()}let g=setTimeout(()=>{if(a.state===3||a.state===4)return h();a.action(2,r.bind(this),n).catch(Wa.bind(null,o)).then(h,u)},c);Ga.has(this)?(_=Ga.get(this))==null||_.set(l(...n),{timeoutId:g,resolve:h}):Ga.set(this,new Map([[l(...n),{timeoutId:g,resolve:h}]]))})}return a.action(2,r.bind(this),n).catch(Wa.bind(null,o))})}function sr(s){return z((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(Bi.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=Bi.get(this,r);return o?o.action(3,i.bind(this),t).catch(Wa.bind(null,e)):i.apply(this,t)})}var P={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",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},km=new Set([P.ERROR,P.AUTOPLAY_FAILED,P.KICKED_OUT,P.REMOTE_USER_ENTER,P.REMOTE_USER_EXIT,P.REMOTE_AUDIO_AVAILABLE,P.REMOTE_AUDIO_UNAVAILABLE,P.REMOTE_VIDEO_AVAILABLE,P.REMOTE_VIDEO_UNAVAILABLE,P.CONNECTION_STATE_CHANGED,P.PUBLISH_STATE_CHANGED,P.SCREEN_SHARE_STOPPED,P.DEVICE_CHANGED,P.FIRST_VIDEO_FRAME]);function or(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function jo(s){return s===At.QOS_PREFERENCE_CLEAR?"detail":s===At.QOS_PREFERENCE_SMOOTH?"motion":""}var Hl={};fi(Hl,{bytes2ms:()=>Gu,convertObjectNumberToInt:()=>to,copyProperties:()=>Hu,deepClone:()=>mr,deepMerge:()=>Wt,delay:()=>Ii,fibonacci:()=>fr,formatedTime:()=>Yu,getConstructorName:()=>zr,getContainerFromElement:()=>Qu,getEnv:()=>Fu,getInternalVersion:()=>Xu,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>bn,getMuteStateFromFlag:()=>Si,getNetworkType:()=>Bc,getNumNetworkType:()=>pr,getReconnectionTimeout:()=>vt,getStringByteLength:()=>eo,getTurnServer:()=>zu,getUint32Version:()=>Rn,getValueType:()=>Ee,getViewListFromView:()=>Kr,glog:()=>Hc,ipv4ToUint32:()=>Yr,isArray:()=>_e,isAudioWorkletSupported:()=>ju,isBoolean:()=>ge,isConstructor:()=>_r,isEmpty:()=>Qr,isFunction:()=>se,isLangChinese:()=>Nt,isMediaStreamTrack:()=>Ju,isNumber:()=>Q,isObject:()=>bt,isOverseaSdkAppId:()=>Zs,isPlainObject:()=>He,isPortrait:()=>An,isPromise:()=>ji,isRemoteTrack:()=>qu,isString:()=>K,isUndefined:()=>E,loadImage:()=>Zr,ms2bytes:()=>Wu,ms2samples:()=>$c,normalizeUrl:()=>yn,performanceNow:()=>x,promiseAny:()=>gr,samples2ms:()=>Fc,setNetworkType:()=>Sn,stringify:()=>Tt,stringifyIncludeValue:()=>In,throttlePromise:()=>Cn});var Jl={};fi(Jl,{ScheduleRequestType:()=>Pm,getAbilityConfig:()=>TT,getScheduleDomain:()=>wm,isNeedToSchedule:()=>Ja,scheduleProxy:()=>ar,sendScheduleRequest:()=>Wl,setIsNeedToSchedule:()=>Vt,setScheduleProxy:()=>qa});var Gl=null,Ja=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Ti).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
|
|
55
|
+
`));function Vt(s){ge(s)&&s!==Ja&&(Ja=s,R.info(`setIsNeedToSchedule ${s}`))}T.on("28",()=>Vt(!0));T.on("63",()=>Vt(!0));T.on("84",()=>Vt(!0));T.on("201",s=>{s.state==="RECONNECTING"&&Vt(!0)});T.on("202",s=>{s.state==="RECONNECTING"&&Vt(!0)});function gT(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=nr(s,"config",m.MAIN),n=nr(s,"config",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,l=Math.round(a.duration),h=Math.round(a.domainLookupStart-a.startTime),u=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,f=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,g=Math.round(a.domainLookupEnd-a.domainLookupStart),D=Math.round(a.requestStart-a.secureConnectionStart),_=Math.round(a.secureConnectionStart-a.connectStart),C=Math.round(a.responseStart-a.requestStart),M=Math.round(a.responseEnd-a.responseStart),ne=[g,D,_,C,M];te.uploadEvent({log:`stat-schedule-net:${l}(${h}(${u}->${f})->${ne.join("->")}) ${c}`,userId:i}),t=w(v({},t),{totalCost:l,local:h,dns:g,tcp:_,tls:D,request:C,response:M});break}}catch(r){R.error("getScheduleDetailCost error",r)}return t}function Wl(l){return p(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:c}){if(!Ja&&Gl)return{isCached:!0,result:Gl};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 f=x(),g=yield ST(u,h,i);g.config&&(g.config.loggerDomain&&dr(g.config.loggerDomain),ge(g.config.scheduleCache)&&Vt(!g.config.scheduleCache)),h.delta=x()-f;let D=gT(Number(i),s,f);return Gl=g,{isCached:!1,result:g,detailCost:D}}catch(u){let f=_e(u)?u[0]:u,g=Q(f.code)?f.code:0,D=`schedule failed${f.message?`: ${f.message}`:""}`,_=new y({code:S.SCHEDULE_FAILED,extraCode:g,message:L({key:k.JOIN_ROOM_FAILED,data:{error:D,code:g}})});throw R.error(D,g),_}})}var ar={main:"",backup:""};function qa(s){_e(s)?(ar.main=s[0],ar.backup=s[1]):ar.main=s}var Pm=(t=>(t.CONFIG="config",t.TRTC_AUTO_CONF="trtcAutoConf",t.AUDIO_AI_AUTH="audioAiAuth",t))(Pm||{});function nr(s,i,e=m.MAIN,t=!1){return`https://${ar[e]||wm(s,e,t)}/api/v1/${i}`}function TT(s,i,e){let t=nr(s,i),r=nr(s,i,m.BACKUP),o=new URLSearchParams(e).toString(),n=fetch(`${t}?${o}`).then(c=>c.json()),a=fetch(`${r}?${o}`).then(c=>c.json());return gr([n,a])}function wm(s,i=m.MAIN,e=!1){let t;return Zs(s)?e?t=i===m.MAIN?Ti.MAIN_OVERSEA_BACKUP:Ti.BACKUP_OVERSEA:t=i===m.MAIN?Ti.MAIN_OVERSEA:Ti.BACKUP_OVERSEA:t=i===m.MAIN?Ti.MAIN:Ti.BACKUP,t}function ET(s,i,e){return new Promise((t,r)=>{Ai({url:s,body:i,timeout:e.timeout,priority:"high"}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var Lm=(s,i)=>qt({retryFunction:ET,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function ST(s,i,e){return new Promise((t,r)=>{let o=null;gr([Lm(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[0]=n.message,o||(c>=1&&(l[0]=nr(e,"config",m.MAIN,!0)),a())})(nr(e,"config",m.MAIN),s,{get timeout(){return fr(2+i.count[0])*1e3}}),Lm(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[1]=n.message,o||(c>=2&&(l[0]=nr(e,"config",m.BACKUP,!0)),a())})(nr(e,"config",m.BACKUP),s,{get timeout(){return fr(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var IT=s=>s.startsWith("data:application/octet-stream;base64,"),AT=s=>s.startsWith("file://"),ja=class{constructor(){d(this,"_log");this._log=R.createLogger({id:"fd"})}download(i,e){return p(this,null,function*(){let{type:t="blob"}=e||{};i=yn(i);try{let r=x(),o;if(se(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=x()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),N.addSuccessEvent({key:522700,cost:x()-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 p(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 p(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=x(),r=null,o=null;if(se(WebAssembly.instantiateStreaming)&&!IT(i)&&!AT(i)&&se(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=x()-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([ot({settings:{timeout:0,retries:3},onRetrying(i){this._log.warn(`download retrying: ${i}`)}})],ja.prototype,"download",1);var xm=new ja;function Um({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,room:i,assetsPath:t,fileDownloader:xm,innerEmitter:T,constants:Vc,environment:us,utils:Hl,eventLogger:te,log:this.room.getLogger(),loggerManager:R,errorModule:e,kvStatManager:N,rtcDectection:ti,trtc:this,rx:Ul,enums:Id,schedule:Jl,clearStarted:(r,o)=>{let n=r.getAlias(),a=Bi.instances.get(this);if(a)if(o){let c=a.get(n+o);if(!c)return;c.started=!1}else a.forEach((c,l)=>{l.startsWith(n)&&(c.started=!1)})},startGetPCM:Vo,createAudioNode:jd}}var Vm=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=L({key:k.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return R.warn(`${o}
|
|
95
56
|
|
|
96
|
-
${o.stack}`),!1}},i};var Zs=new WeakMap;function rg(i){let t=Zs.get(i);t&&(t.forEach(e=>clearTimeout(e)),Zs.delete(i))}function ig(i,t){return Me((e,r)=>function(...o){let s=Zs.get(this);s||(s=new Map,Zs.set(this,s));let n=t(...o),d=s.get(n);if(!d||d<=0){e.apply(this,o);let p=setTimeout(()=>{var m;(m=Zs.get(this))==null||m.delete(n)},i);s.set(n,p)}else{clearTimeout(d);let p=window.setTimeout(()=>{var m;e.apply(this,o),(m=Zs.get(this))==null||m.delete(n)},i);s.set(n,p)}})}var sg="trtc-sdk-v5",ng="5.10.1-wasm.5";function Ut(...i){return Me((t,e)=>function(...r){try{zd.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function Zm(...i){return Me((t,e)=>function(...r){try{zd.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function zd(i,t,e,r){if(st(i))for(let o=0;o<i.length;o++)Jd.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else Jd.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function Jd({rule:i,value:t,key:e,fnName:r,className:o}){function s(p){return{code:ue.INVALID_PARAMETER,extraCode:p,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(V(t)){if(i.required)throw new ae(s(5001));if(V(i.defaultValue)){Xe(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let p=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(p=!0),Xe(i.type[m])&&t instanceof i.type[m]&&(p=!0),we(i.type[m])&&ht(t)===i.type[m].toLowerCase()&&(p=!0);if(!p)throw new ae({code:ue.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>Es(m)?Mn(m):we(m)?m:ht(m))},value:t}})}else if(!V(i.type)&&ht(t)!==i.type)throw new ae(s(5002));if(i.allowEmpty===!1){let p=je(t)&&(t===0||Number.isNaN(t)),m=we(t)&&t.trim()==="";if(p||m)throw new ae(s(5003))}if(i.notLessThanZero&&je(t)&&t<0)throw new ae(s(5006));if(!V(i.min)&&je(t)&&t<i.min)throw new ae(s(5007));if(!V(i.max)&&je(t)&&t>i.max)throw new ae(s(5008));if(we(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ae(s(5004))}else if(Xe(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ae(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new ae(s(5005));let{properties:n}=i;Gt(n)&&Pr(t)&&Object.keys(n).forEach(p=>{Jd.call(this,{rule:n[p],value:t&&t[p],key:`${p}`,fnName:r,className:o})});let{arrayItem:d}=i;Gt(d)&&st(t)&&t.forEach((p,m)=>{Jd.call(this,{rule:d,value:p,key:`${e}[${m}]`,fnName:r,className:o})}),Xe(i.validate)&&i.validate.call(this,t,e,r,o,this)}function Ye(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o}=i;return Me((s,n)=>function(...d){var I;function p(S,N,k){if(k&&k.includes(S))return"hided";if(e){let P=e(...d);if(d[P.argIndex]===N)return P.value}if(N===d||S in d)return N;try{return N instanceof HTMLElement?`id: ${N.id} type:${ht(N)}`:(JSON.stringify(N),N)}catch(P){return`type:${ht(N)}`}}let m=this._log||$;if(o!=null&&o(...d))return s.apply(this,d);d.length>0?m.info(`${n}() ${JSON.stringify(d,(S,N)=>p(S,N,["userSig","privateMapKey"]))}`):m.info(`${n}()`);let g=r?r(...d):Qc[n];try{let S=s.apply(this,d),N=_e();return Pi(S)?S.then(k=>(m.info(`${n}() success ${t.call(this,...d)}`),Y.addSuccessEvent({key:g,cost:_e()-N}),k)).catch(k=>{var J;k=ae.convertFrom.call(this,k,n,d.length===1?d[0]:d);let P=k.extraCode||k.code,x=(J=k.message)!=null&&J.includes(P)?"":` code:${P}`;throw m.error(`${n}() failed ${t.call(this,...d)} ${k}${x} params: ${JSON.stringify(d,p)}`),Y.addFailedEvent({key:g,error:k}),k}):(Y.addSuccessEvent({key:g}),S)}catch(S){S=ae.convertFrom.call(this,S,n);let N=S.extraCode||S.code,k=(I=S.message)!=null&&I.includes(N)?"":` code:${N}`;throw m.error(`${n}() failed ${S}${k} params: ${JSON.stringify(d,p)}`),Y.addFailedEvent({key:g,error:S}),S}})}var Xd=i=>Me((t,e)=>function(r,o){return A(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new ae({code:ue.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(Xe(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new ae({code:ue.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return zd.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var Qd=0,Km=class{constructor(t,e){u(this,"player");u(this,"publisher");u(this,"mixInput");this.mixInput=new Hs(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&(V(t.volume)||(this.volume=t.volume),V(t.loop)||(this.loop=t.loop),V(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function Ks(i,t){if(t&&typeof t!="function")throw new ae({code:ue.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var Hr=class Hr{constructor(t){this.core=t;u(this,"log");u(this,"mixedMusicMap",new Map);u(this,"cacheMusicMap",new Map);Qd=Qd+1,this.log=t.log.createChild({id:`${this.getAlias()}${Qd}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Qd}`),this.core=t}getName(){return Hr.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return Hr.startValidateRule;case"update":return Hr.updateValidateRule;case"stop":return Hr.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new Km(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),this.log.info(`start mix audio track ${r} success.`),Y.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return A(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(t),n.updateListener(t),V(r)||n.setOperation(r),V(o)||n.seek(o),this.kvUpload(t)})}stop(e){return A(this,arguments,function*({id:t}){var r;this.mixedMusicMap.has(t)&&(this.log.info(`remove music source, music id: ${t}`),(r=this.mixedMusicMap.get(t))==null||r.stop(),this.mixedMusicMap.delete(t)),t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:n,seekFrom:d,onTimeUpdate:p,onDurationChange:m,onEnded:g}=t;e&&Y.addCount({key:502711}),r&&Y.addCount({key:502703}),o&&Y.addCount({key:502704}),s&&Y.addCount({key:502705}),n&&Y.addCount({key:502706}),d&&Y.addCount({key:502707}),typeof p!="function"&&Y.addCount({key:502709}),typeof g!="function"&&Y.addCount({key:502710}),typeof m!="function"&&Y.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,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()}};u(Hr,"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(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=o.split(".").pop(),d=s.indexOf(n)>=0,p=o.startsWith("blob"),m=o.startsWith("data");if(!(d||p||m))throw new ae({code:ue.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new ae({code:ue.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});Ks("onTimeUpdate",t.onTimeUpdate),Ks("onEnded",t.onEnded),Ks("onDurationChange",t.onDurationChange)}}),u(Hr,"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(t,e,r){Ks("onTimeUpdate",t.onTimeUpdate),Ks("onEnded",t.onEnded),Ks("onDurationChange",t.onDurationChange)}}),u(Hr,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),u(Hr,"Name","AudioMixer");var Yd=Hr;var Zd=0,ep,Ei=class Ei{constructor(t){this.core=t;u(this,"log");u(this,"audioContext",et("denoiser"));u(this,"workletNode");Zd=Zd+1,this.log=t.log.createChild({id:`${this.getAlias()}${Zd}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Zd}`),t.assetsPath&&this.preload(`${t.assetsPath}/denoiser-wasm.js`).catch(e=>{})}static startValidateRule(t){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,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new ae({code:ue.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return ep||(ep=this.doPreload(t)),ep}doPreload(t){return A(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Lo(this.audioContext,r)}catch(o){throw this.log.error("load worklet failed",o),o}finally{URL.revokeObjectURL(r)}})}getName(){return Ei.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return Ei.startValidateRule(this.core);case"update":return Ei.updateValidateRule;case"stop":return Ei.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e,schedule:r}=this.core;if(yield this.preload(`${t.assetsPath}/denoiser-wasm.js`),!this.workletNode){let o=String(Date.now()).slice(0,-3),{auth:s,sign:n,status:d,message:p}=yield WI(r,Ee(ee({},t),{timestamp:o}));if(!s)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${s}. Message: ${p}`),new ae({code:ue.INVALID_PARAMETER,message:p});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t.sdkAppId),userId:t.userId,timestamp:o,sign:n,status:d}}),this.workletNode.port.onmessage=m=>{var I;let{data:g}=m;if(g.type==="cost"){let S=(g==null?void 0:g.max)>20?"warn":(g==null?void 0:g.max)>10?"info":"debug";this.log[S](`avg cost: ${g.value} max: ${g==null?void 0:g.max}(${cc(new Date(g==null?void 0:g.maxCostTimestamp))}) hist: ${(I=g==null?void 0:g.hist)==null?void 0:I.join(" ")}`)}else g.type==="log"&&this.log[g.logLevel](`${g.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return A(this,null,function*(){})}stop(){return A(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};u(Ei,"updateValidateRule",{type:"object"}),u(Ei,"stopValidateRule",{type:"object"}),u(Ei,"Name","AIDenoiser");var Kd=Ei;function WI(s,n){return A(this,arguments,function*(i,{sdkAppId:t,userId:e,userSig:r,timestamp:o}){try{let{data:{errCode:d,errMsg:p,sign:m,status:g}}=yield i.getAbilityConfig(t,i.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:t,userId:e,userSig:r,timestamp:o});if(g==="1")return{auth:!0,sign:m,status:g,message:p};let I="Init RTCAIDenoiser failed.",S="";switch(d){case 1:S="Please check your params.";break;case 2:S="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:S="Server is invalid. Please contact our engineer. ";break;case 4:S="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:S="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:S="Your version is not supported.";break}return{auth:!1,status:g,message:p?`${I} Reason: ${p}. ${S}`:`${I}, ${S}`}}catch(d){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${d}`}}})}var ag=Oi(Bi(),1);var tp=class extends ag.EventEmitter{constructor(){super();u(this,"observer");u(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 A(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!at&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){Be.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&$.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){Be.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},GI=new tp,rp=GI;function jI([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let d=0;d<r;d++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Fo(new DataView(new Uint8Array(s).buffer),!0)}function qI(i){return i.type==="empty"||i.data.byteLength===0}function JI(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function zI(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function ip({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-zI(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(jI),s=o.reduce((g,I)=>g+I.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),d=new DataView(n),p=new DataView(i.data),m=0;for(let g=0;g<o.length;g++)for(let I=0;I<o[g].dataView.byteLength;I++)d.setInt8(m++,o[g].dataView.getInt8(I));for(let g=0;g<i.data.byteLength;g++)d.setInt8(m++,p.getInt8(g));return i.data=n,i}function op({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(qI(i)||!JI(e))return i;let r=[],o=0,s=-1,n=-1;for(let d=0;d<i.data.byteLength;d++){let p=e.getUint8(d);if(p===0)o++;else if(p===1){if(o===2||o===3){let m=d-o;if(s===-1?s=m:n===-1&&(n=m,r.push(new Fo(new DataView(e.buffer.slice(s,n)))),s=m,n=-1),!(e.getUint8(d+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var sp=0,Oa=class Oa{constructor(t){this.core=t;u(this,"log");u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_subStreamSeiMessageList",[]);sp++,this.log=t.log.createChild({id:`${this.getAlias()}${sp}`}),this.log.info(`[sei] created id=${this.getAlias()}${sp}`),this.core=t,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return ip({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return op({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(se.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:aa?this.encode:ip,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:aa?this.decode:op,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return Oa.Name}getAlias(){return"sei"}getGroup(){return"sei"}};u(Oa,"autoStart",!0),u(Oa,"Name","SEI");var eu=Oa;function np({frame:i,onDump:t}){return t==null||t(),i}function ap({frame:i,onDump:t}){return t==null||t(),i}var cg={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
57
|
+
${r.stack}`),!1}},s};var Os=new WeakMap;function Bm(s){let i=Os.get(s);i&&(i.forEach(e=>clearTimeout(e)),Os.delete(s))}function Fm(s,i){return z((e,t)=>function(...r){let o=Os.get(this);o||(o=new Map,Os.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=Os.get(this))==null||l.delete(n)},s);o.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=Os.get(this))==null||l.delete(n)},s);o.set(n,c)}})}var Hm="trtc-sdk-v5",Gm="5.10.2-beta.1";function Xe(...s){return z((i,e)=>function(...t){try{za.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function ql(...s){return z((i,e)=>function(...t){try{za.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function za(s,i,e,t){if(_e(s))for(let r=0;r<s.length;r++)Xa.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Xa.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function Xa({rule:s,value:i,key:e,fnName:t,className:r}){function o(c){return{code:$.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(E(i)){if(s.required)throw new B(o(5001));if(E(s.defaultValue)){se(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 l=0;l<s.type.length;l++)s.type[l]===null&&i===null&&(c=!0),se(s.type[l])&&i instanceof s.type[l]&&(c=!0),K(s.type[l])&&Ee(i)===s.type[l].toLowerCase()&&(c=!0);if(!c)throw new B({code:$.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(l=>_r(l)?zr(l):K(l)?l:Ee(l))},value:i}})}else if(!E(s.type)&&Ee(i)!==s.type)throw new B(o(5002));if(s.allowEmpty===!1){let c=Q(i)&&(i===0||Number.isNaN(i)),l=K(i)&&i.trim()==="";if(c||l)throw new B(o(5003))}if(s.notLessThanZero&&Q(i)&&i<0)throw new B(o(5006));if(!E(s.min)&&Q(i)&&i<s.min)throw new B(o(5007));if(!E(s.max)&&Q(i)&&i>s.max)throw new B(o(5008));if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new B(o(5004))}else if(se(s.instanceOf)&&!(i instanceof s.instanceOf))throw new B(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new B(o(5005));let{properties:n}=s;He(n)&&bt(i)&&Object.keys(n).forEach(c=>{Xa.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=s;He(a)&&_e(i)&&i.forEach((c,l)=>{Xa.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),se(s.validate)&&s.validate.call(this,i,e,t,r,this)}function fe(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return z((o,n)=>function(...a){var u;function c(f,g,D){if(D&&D.includes(f))return"hided";if(e){let _=e(...a);if(a[_.argIndex]===g)return _.value}if(g===a||f in a)return g;try{return g instanceof HTMLElement?`id: ${g.id} type:${Ee(g)}`:g instanceof MediaStreamTrack?bn(g):(JSON.stringify(g),g)}catch(_){return`type:${Ee(g)}`}}let l=this._log||R;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?l.info(`${n}() ${JSON.stringify(a,(f,g)=>c(f,g,["userSig","privateMapKey"]))}`):l.info(`${n}()`);let h=t?t(...a):Zn[n];try{let f=o.apply(this,a),g=x();return ji(f)?f.then(D=>(l.info(`${n}() success ${i.call(this,...a)}`),N.addSuccessEvent({key:h,cost:x()-g}),D)).catch(D=>{var M;D=B.convertFrom.call(this,D,n,a.length===1?a[0]:a);let _=D.extraCode||D.code,C=(M=D.message)!=null&&M.includes(_)?"":` code:${_}`;throw l.error(`${n}() failed ${i.call(this,...a)} ${D}${C} params: ${JSON.stringify(a,c)}`),N.addFailedEvent({key:h,error:D}),D}):(N.addSuccessEvent({key:h}),f)}catch(f){f=B.convertFrom.call(this,f,n);let g=f.extraCode||f.code,D=(u=f.message)!=null&&u.includes(g)?"":` code:${g}`;throw l.error(`${n}() failed ${f}${D} params: ${JSON.stringify(a,c)}`),N.addFailedEvent({key:h,error:f}),f}})}var Qa=s=>z((i,e)=>function(t,r){return p(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new B({code:$.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(se(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new B({code:$.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return za.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var Ya=0,jl=class{constructor(i,e){d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new Es(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 Ms(s,i){if(i&&typeof i!="function")throw new B({code:$.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var hi=class hi{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);Ya=Ya+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ya}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Ya}`),this.core=i}getName(){return hi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return hi.startValidateRule;case"update":return hi.updateValidateRule;case"stop":return hi.stopValidateRule}}start(i){return p(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 jl(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 p(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 p(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:l,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 l!="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()}};d(hi,"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"),l=r.startsWith("data");if(!(a||c||l))throw new B({code:$.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new B({code:$.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});Ms("onTimeUpdate",i.onTimeUpdate),Ms("onEnded",i.onEnded),Ms("onDurationChange",i.onDurationChange)}}),d(hi,"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){Ms("onTimeUpdate",i.onTimeUpdate),Ms("onEnded",i.onEnded),Ms("onDurationChange",i.onDurationChange)}}),d(hi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(hi,"Name","AudioMixer");var Ka=hi;var Za=0,Xl,Fi=class Fi{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Re("denoiser"));d(this,"workletNode");Za=Za+1,this.log=i.log.createChild({id:`${this.getAlias()}${Za}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Za}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-wasm.js`).catch(e=>{})}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 B({code:$.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return Xl||(Xl=this.doPreload(i)),Xl}doPreload(i){return p(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield br(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return Fi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return Fi.startValidateRule(this.core);case"update":return Fi.updateValidateRule;case"stop":return Fi.stopValidateRule}}start(i){return p(this,null,function*(){let{room:e,schedule:t}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let r=String(Date.now()).slice(0,-3),{auth:o,sign:n,status:a,message:c}=yield RT(t,w(v({},i),{timestamp:r}));if(!o)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${o}. Message: ${c}`),new B({code:$.INVALID_PARAMETER,message:c});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:r,sign:n,status:a}}),this.workletNode.port.onmessage=l=>{var u;let{data:h}=l;if(h.type==="cost"){let f=(h==null?void 0:h.max)>20?"warn":(h==null?void 0:h.max)>10?"info":"debug";this.log[f](`avg cost: ${h.value} max: ${h==null?void 0:h.max}(${dn(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(u=h==null?void 0:h.hist)==null?void 0:u.join(" ")}`)}else h.type==="log"&&this.log[h.logLevel](`${h.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return p(this,null,function*(){})}stop(){return p(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)}};d(Fi,"updateValidateRule",{type:"object"}),d(Fi,"stopValidateRule",{type:"object"}),d(Fi,"Name","AIDenoiser");var ec=Fi;function RT(o,n){return p(this,arguments,function*(s,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:h}}=yield s.getAbilityConfig(i,s.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(h==="1")return{auth:!0,sign:l,status:h,message:c};let u="Init RTCAIDenoiser failed.",f="";switch(a){case 1:f="Please check your params.";break;case 2:f="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:f="Server is invalid. Please contact our engineer. ";break;case 4:f="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:f="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:f="Your version is not supported.";break}return{auth:!1,status:h,message:c?`${u} Reason: ${c}. ${f}`:`${u}, ${f}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var Wm=Be(Qe(),1);var zl=class extends Wm.EventEmitter{constructor(){super();d(this,"observer");d(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 p(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!he&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){te.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){te.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},CT=new zl,Ql=CT;function Yl([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 Pi(new DataView(new Uint8Array(o).buffer),!0)}function Kl(s){return s.type==="empty"||s.data.byteLength===0}function Zl(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function eu(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 tu({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-eu(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(Yl),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),l=0;for(let h=0;h<r.length;h++)for(let u=0;u<r[h].dataView.byteLength;u++)a.setInt8(l++,r[h].dataView.getInt8(u));for(let h=0;h<s.data.byteLength;h++)a.setInt8(l++,c.getInt8(h));return s.data=n,s}function iu({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(Kl(s)||!Zl(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 l=a-r;if(o===-1?o=l:n===-1&&(n=l,t.push(new Pi(new DataView(e.buffer.slice(o,n)))),o=l,n=-1),!(e.getUint8(a+1)===6)){s.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return s}var ru=0,Xo=class Xo{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);ru++,this.log=i.log.createChild({id:`${this.getAlias()}${ru}`}),this.log.info(`[sei] created id=${this.getAlias()}${ru}`),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 tu({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return iu({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(P.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:Oi?this.encode:tu,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Oi?this.decode:iu,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}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 Xo.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(Xo,"autoStart",!0),d(Xo,"Name","SEI");var tc=Xo;function su({frame:s,onDump:i}){return i==null||i(),s}function ou({frame:s,onDump:i}){return i==null||i(),s}var Jm={"play() error: NotAllowedError:":{tips:s=>s.includes("main <video>")||s.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
97
58
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
98
59
|
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
|
|
99
60
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
100
|
-
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(i=>{cg[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var iP=Object.keys(cg);var XI=0,tu,en=class en{constructor(t){this.core=t;u(this,"_core");u(this,"log");u(this,"dumpLocalVideoMap",{});u(this,"dumpRemoteVideoMap",{});u(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++XI}`}),this.log.info("created")}getName(){return en.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return A(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return A(this,null,function*(){var t;try{if(tu)yield tu;else{let e=Date.now(),r=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${sg}@${rt}/assets/debug-dialog.js`;tu=this.loadScript(r),yield tu,this.log.info(`download debug dialog script cost: ${Date.now()-e}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){var t;(t=this.dialog)==null||t.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):np,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):ap,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return np({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return ap({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}loadScript(t){return new Promise((e,r)=>{this.log.info(`loading debug dialog from ${t}`);let o=document.createElement("script");o.type="text/javascript",o.onload=e,o.onerror=r,o.crossOrigin="anonymous",o.src=t,document.head.append?document.head.append(o):document.getElementsByTagName("head")[0].appendChild(o)})}};u(en,"Name","Debug"),u(en,"autoStart",!0),X([Wi({settings:{timeout:3e3,retries:3},onError(t,e,r){var o;(o=t==null?void 0:t.message)!=null&&o.includes("timeout")?e():r(t)}})],en.prototype,"loadScript",1);var ru=en;var dg=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},iu=class{constructor(t,e,r){u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"type","auto");u(this,"config");u(this,"decoder");u(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=be(e,ne.INIT),this.stopOB=It(),this.startOB=It(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=It(),d=p=>{let m=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),Se(m,Je(this.stopOB),ke(()=>{},g=>{e.log.error(g),o.addFailedEvent({key:dg(this.type),error:g}),p>4?this.startOB.error(g):this.startOB.next(p+1)})),Se(m,Ar(1),Lm(Aa))};Se(this.startOB,Sa(0),Xi(d),Je(this.stopOB),ke(()=>{e.player.setOutput(),n.next("STARTED")},p=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:dg(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return mi()(e=>A(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},QI={type:"object"},xa=class xa{constructor(t){this.core=t;u(this,"log");u(this,"contextMap",new Map);u(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return xa.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return xa.Name}getValidateRule(t){return QI}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new iu(this.core,r,t);return Se(o.trackDoneOB,Ar(1),ke(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new iu(this.core,t.track,t))}}};u(xa,"Name","TRTCAudioDecoder");var Pa=xa;var ug=0,ka=new Set,Rt=null;ku(ng);Ps.checkStorage();Ll();var YI={RtcError:ae,ErrorCode:ue,ErrorCodeDictionary:Rr},fe=class fe extends lg.EventEmitter{constructor(e,r){super();u(this,"_room");u(this,"_eventListened",new Set);u(this,"_localVideoTrack",null);u(this,"_localAudioTrack",null);u(this,"_localScreenTrack",null);u(this,"_localScreenAudioTrack",null);u(this,"_localVideoConfig",null);u(this,"_localScreenConfig",null);u(this,"_localAudioConfig",null);u(this,"_remoteVideoConfigMap",new Map);u(this,"_remoteAudioConfigMap",new Map);u(this,"_remoteAudioVolumeMap",new Map);u(this,"_remoteAudioMuteMap",new Map);u(this,"_mediaTrackMap",new WeakMap);u(this,"_log",$.createLogger({id:`t${++ug}`}));u(this,"_plugins",new Map);u(this,"_networkQuality",null);u(this,"_speakerId");u(this,"_getPCMAbortCtrl");this._room=new e(ee({logger:this._log,frameWorkType:fe.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(Yd,r.assetsPath),this._use(Kd,r.assetsPath),this._use(Pa,r.assetsPath||dc),this._use(ru),r.enableSEI&&ca&&this._use(eu),this._room.on("audio-volume",o=>{!o.find(s=>s.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),r.volumeType===1&&o.forEach(s=>{var d;let n=s.userId===""?this._localAudioTrack:(d=this.room.remotePublishedUserMap.get(s.userId))==null?void 0:d.remoteAudioTrack;n&&(s.volume=n.dbVolume)}),this.emit(se.AUDIO_VOLUME,{result:o.sort((s,n)=>n.volume-s.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new ae({code:ue.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),tg(this,"trtc")}static create(e){}static _create(e,r){Bf();let o=new fe(e,r||{});return ka.add(o),o}get room(){return this._room}_listenEvents(){xt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(se.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(se.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(se.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(se.ERROR,ae.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(se.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=Ee(ee({},e),{uplinkRTT:Math.min(e.uplinkRTT,vn),downlinkRTT:Math.min(e.downlinkRTT,vn)});this.emit(se.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{xt(o,o).add("player-state-changed",s=>{let n=Ee(ee({},s),{userId:e.userId});o.kind===D.VIDEO&&(n.streamType=to(o.streamType)),this.emit(o.kind===D.AUDIO?se.AUDIO_PLAY_STATE_CHANGED:se.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===te.PLAY_NOT_ALLOWED&&this.emit(se.AUTOPLAY_FAILED,{userId:o.userId,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{mt(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:d,videoAvailable:p}=r;d||this._remoteAudioConfigMap.delete(o),p||this._remoteVideoConfigMap.delete(`${o}_main`),r.hasAuxiliary||this._remoteVideoConfigMap.delete(`${o}_sub`),n!==p&&(p?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(p?se.REMOTE_VIDEO_AVAILABLE:se.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==d&&(d?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(d?se.REMOTE_AUDIO_AVAILABLE:se.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?se.REMOTE_VIDEO_AVAILABLE:se.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(se.SEI_MESSAGE,Ee(ee({},e),{streamType:to(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(se.ERROR,new ae({code:ue.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,d,p,m,g,I;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((d=this._networkQuality)==null?void 0:d.downlinkRTT)||0,vn),upLoss:((p=this._networkQuality)==null?void 0:p.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((g=e.msg_up_stream_info.msg_audio_status)==null?void 0:g.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((I=e.msg_up_stream_info.msg_audio_status)==null?void 0:I.uint32_audio_level)||0)/oi},video:e.msg_up_stream_info.msg_video_status.filter(S=>r[S.uint32_video_stream_type]).map(S=>({bitrate:(S.uint32_video_codec_bitrate||0)/1e3,width:S.uint32_video_width,height:S.uint32_video_height,frameRate:S.uint32_video_enc_fps,videoType:r[S.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(S=>({userId:S.msg_user_info.str_identifier,audio:{bitrate:(S.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(S.msg_audio_status.uint32_audio_level||0)/oi},video:S.msg_video_status.map(N=>({bitrate:(N.uint32_video_codec_bitrate||0)/1e3,width:N.uint32_video_width,height:N.uint32_video_height,frameRate:N.uint32_video_dec_fps,videoType:r[N.uint32_video_stream_type]}))}))};this.emit(se.STATISTICS,o)}).add("custom-message",e=>{this.emit(se.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(se.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(ee({},e),{streamType:to(e.streamType)}))}),xt(this,Tt).add("audioInputAdded",e=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>A(this,null,function*(){if(this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Rt&&Rt.deviceId===Rn){let r=(yield Gi()).find(o=>o.deviceId===Rn);r&&Rt.groupId!==r.groupId&&(Rt=r,this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>A(this,null,function*(){this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield Gi())[0];if(!r||!Rt||Rt.groupId===r.groupId)return;let o=Rt.deviceId===e.deviceId,s=Rt.deviceId===Rn&&Rt.deviceId===r.deviceId;(o||s)&&(Rt=r,this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}))}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o||dc)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(eg.call(this,{TRTC:fe,room:this._room,errorModule:YI,assetsPath:r}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return A(this,null,function*(){var p,m;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!we(e.proxy)&&e.proxy.turnServer&&((m=(p=this._room).setTurnServer)==null||m.call(p,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,nt(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);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,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(d,r,fe.frameWorkType),this._checkTrackToPublish(),rp.start()})}exitRoom(){return A(this,null,function*(){return yield this._exitRoom()})}switchRole(e,r){return A(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){mt(this),this.removeAllListeners(),this._room.destroy(),ka.delete(this),ka.size===0&&rp.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),H.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return A(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,n=new li(this._room.audioManager),d={},p={muted:!0};s&&(V(s.microphoneId)?V(s.audioTrack)||(d.customSource=s.audioTrack):d.deviceId=s.microphoneId,s&&je(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),V(s.profile)||(we(s.profile)?lc[s.profile]&&n.setProfile(lc[s.profile]):n.setProfile(s.profile)),je(s.earMonitorVolume)&&(p.muted=!(s.earMonitorVolume>0),p.volume=s.earMonitorVolume),V(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),V(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),V(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl)),n.on("5",m=>{this.emit(se.ERROR,new ae({code:ue.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),n.on("2",m=>{this.emit(se.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),n.on("4",m=>{let g;m.error&&(g=ae.convertFrom(m.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(ee({},m),{error:g}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(d),V(o)||n.setMute(o),xt(n,n).add("player-state-changed",m=>{this.emit(se.AUDIO_PLAY_STATE_CHANGED,Ee(ee({},m),{userId:""}))}),this.listeners(se.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:m})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:m})}))}),r&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=Ee(ee({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:p,track:n})})}updateLocalAudio(e){return A(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):V(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),V(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),V(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!V(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),V(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),kr(this._localAudioConfig,e)})}stopLocalAudio(){return A(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),mt(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return A(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,mute:s,option:n}=e,d=new Sr(this._room.videoManager),p={},m={};nt(n==null?void 0:n.avoidCropping)&&(d.avoidCropping=n.avoidCropping),n&&(n.cameraId?p.deviceId=n.cameraId:V(n.useFrontCamera)?V(n.videoTrack)||(p.customSource=n.videoTrack):p.facingMode=n.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT,n.qosPreference&&(p.contentHint=Ma(n.qosPreference)),V(n.profile)||(we(n.profile)?Or[n.profile]&&d.setProfile(Or[n.profile]):d.setProfile(n.profile)),V(n.fillMode)||(m.objectFit=n.fillMode),V(n.mirror)||(m.mirror=n.mirror),V(n.small)||(sa()?we(n.small)?d.small=Or[n.small]:n.small===!0?d.small=Or["120p"]:d.small=n.small:this._log.warn("small stream is not supported"))),d.once("first-video-frame",g=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(ee({},g),{streamType:to(g.streamType)}))}),d.on("5",g=>{this.emit(se.ERROR,new ae({code:ue.DEVICE_ERROR,extraCode:5308,messageParams:{error:g}}))}),d.on("2",g=>{this.emit(se.DEVICE_CHANGED,{type:"camera",action:"active",device:g})}),d.on("4",g=>{let I;g.error&&(I=ae.convertFrom(g.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(ee({},g),{error:I}))}),this._listenOutputTrackChanged(d),yield d.capture(p),V(s)||(yield d.setMute(s)),xt(d,d).add("player-state-changed",g=>{this.emit(se.VIDEO_PLAY_STATE_CHANGED,Ee(ee({},g),{userId:"",streamType:"main"}))}),o&&this._room.isJoined&&this._room.publish(d).catch(()=>{}),this._localVideoTrack=d,this._localVideoConfig=Ee(ee({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:d})})}updateLocalVideo(e){return A(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,option:n}=e,d={};if(n)if(V(n.profile)||(we(n.profile)?Or[n.profile]&&this._localVideoTrack.setProfile(Or[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&V(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):V(n.useFrontCamera)?V(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT),V(n.fillMode)||(d.objectFit=n.fillMode),V(n.mirror)||(d.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Ma(n.qosPreference)),n.small){let p=!this._localVideoTrack.small;sa()?(n.small===!0?this._localVideoTrack.small=Or["120p"]:we(n.small)?this._localVideoTrack.small=Or[n.small]:this._localVideoTrack.small=n.small,this._room.videoManager.update(),p&&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&&!V(o)&&(o&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!o&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),V(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:d,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),kr(this._localVideoConfig,e)})}stopLocalVideo(){return A(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),mt(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return A(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,option:s}=e,n=new qi(this._room.videoManager);n.on("4",I=>{let S;I.error&&(S=ae.convertFrom(I.error)),this.emit(se.PUBLISH_STATE_CHANGED,Ee(ee({},I),{error:S}))}),n.once("first-video-frame",I=>{this.emit(se.FIRST_VIDEO_FRAME,Ee(ee({},I),{streamType:to(I.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let d=null,p={},m={};s&&(V(s.profile)||(we(s.profile)?mc[s.profile]&&n.setProfile(mc[s.profile]):n.setProfile(s.profile)),s.systemAudio&&(p.systemAudio=!0,p.echoCancellation=s.echoCancellation,p.noiseSuppression=s.noiseSuppression,p.autoGainControl=s.autoGainControl),V(s.fillMode)||(m.objectFit=s.fillMode),s.videoTrack&&(p.videoTrack=s.videoTrack),s.audioTrack&&(p.audioTrack=s.audioTrack),s.captureElement&&(p.captureElement=s.captureElement),s.preferDisplaySurface&&(p.preferDisplaySurface=s.preferDisplaySurface),s.qosPreference&&(p.contentHint=Ma(s.qosPreference)));let g=yield n.capture(p);if(n.mediaTrack.addEventListener(D.ENDED,()=>{this._stopScreenShare(),this.emit(se.SCREEN_SHARE_STOPPED)}),g.getAudioTracks()[0]&&(d=new Bo(this._room.audioManager),yield d.setInputMediaStreamTrack(g.getAudioTracks()[0]),this._speakerId&&d.setAudioOutput(this._speakerId)),xt(n,n).add("player-state-changed",I=>{this.emit(se.VIDEO_PLAY_STATE_CHANGED,Ee(ee({},I),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let I=[n];d&&I.push(d),this._room.publish(...I).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=d,this._localScreenConfig=Ee(ee({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:n})})}updateScreenShare(e){return A(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,option:s}=e,n={};if(s&&(V(s.fillMode)||(n.objectFit=s.fillMode),s.qosPreference)){let d=Ma(s.qosPreference);this._localScreenTrack.setContentHint(d)}this._room.isJoined&&!V(o)&&(o&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!o&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:r,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),kr(this._localScreenConfig,e)})}stopScreenShare(){return A(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return A(this,null,function*(){let{view:r,userId:o,streamType:s,option:n}=e,d=`${o}_${s}`;if(this._remoteVideoConfigMap.has(d)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let p=this._room.remotePublishedUserMap.get(o);if(!p)return;let m={},g=s==="main"?p.remoteVideoTrack:p.remoteAuxiliaryTrack;this._listenOutputTrackChanged(g),n&&(V(n.fillMode)||(m.objectFit=n.fillMode),V(n.mirror)||(m.mirror=n.mirror),V(n.poster)||(m.poster=n.poster),m.canvasRender=n.canvasRender,s==="main"&&!V(n.small)&&(!p.remoteVideoTrack.isSubscribing&&!p.remoteVideoTrack.isSubscribed&&p.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,g.user))),yield this._room.subscribe(g),yield this._enableVideoDecodeFallback(g,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:g}),this._emitTrackEvent(g),this._remoteVideoConfigMap.set(d,{config:e}),n&&!V(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:g,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return A(this,null,function*(){var x,J;let{view:r,userId:o,streamType:s,option:n}=e,d=`${o}_${s}`,p=this._remoteVideoConfigMap.get(d);if(!p||!this._room.remotePublishedUserMap.has(o))return;let m={};n&&(V(n.fillMode)||(m.objectFit=n.fillMode),V(n.mirror)||(m.mirror=n.mirror));let g=null,I=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(I!=null&&I.muteState.hasVideo)&&(g=I.remoteVideoTrack),s==="sub"&&(I!=null&&I.muteState.hasAuxiliary)&&(g=I.remoteAuxiliaryTrack),!g)return;let{config:S}=p;s==="main"&&n&&!V(n.small)&&this._room.changeType(n.small,g.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:g,prevConfig:S}),kr(S,e);let N=V(n==null?void 0:n.receiveWhenViewVisible)?(x=S.option)==null?void 0:x.receiveWhenViewVisible:n.receiveWhenViewVisible,k=V(r)?S.view:r,P=V(n==null?void 0:n.viewRoot)?(J=S.option)==null?void 0:J.viewRoot:n.viewRoot;this._observeView({remoteTrack:g,view:k,receiveWhenViewVisible:N,viewRoot:P})})}stopRemoteVideo(e){return A(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return A(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:d,remoteVideoTrack:p,remoteAuxiliaryTrack:m}=s;e.streamType==="main"&&(p.stop(),d.hasVideo&&o.push(p)),e.streamType==="sub"&&(m.stop(),d.hasAuxiliary&&o.push(m))}for(let d of o)r&&(yield this._room.unsubscribe(d),this._mediaTrackMap.delete(d.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,r){return A(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return A(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return A(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return A(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){return this.listeners(e).includes(r)?this:(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),e===fe.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:s})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(fe.EVENT.AUDIO_FRAME,{data:s})}))})),this)}emit(e,...r){try{Xf.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){var s,n;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(s=this._getPCMAbortCtrl)==null||s.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,r,o),e===fe.EVENT.AUDIO_FRAME&&((n=this._getPCMAbortCtrl)==null||n.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",n=!1;if(we(e)?r=e:(r=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),r){let d=this._room.remotePublishedUserMap.get(r);d&&(o=d.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?n&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,n=null;if(r==="")o==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let d=this._room.remotePublishedUserMap.get(r);d&&(n=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return A(this,null,function*(){(yield Gi()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),Rt=o)}),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 A(this,null,function*(){let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},n=o.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let d=this._remoteAudioVolumeMap.get(r),p=je(d)?d:100;s.volume=p,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),Se(be(n,"decode-failed"),Je(be(n,ne.INIT)),ke(()=>{this.startPlugin(Pa.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n})}catch(d){throw this._remoteAudioConfigMap.delete(r),d}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return A(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;if(!o||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;Se(be(e,"decode-failed"),Je(be(e,ne.INIT)),ba(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),pi(be(e,"decode-downgrade-state-changed")),ke(n=>{s=n.state,this.emit(se.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Ee(ee({},n),{streamType:r,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return A(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),V(e)&&s&&s.view&&!_s(r)){let d=Is(s.view);d.length>0&&(yield o.play(d,r))}if(!V(e)){let d=Is(e);d.length>0?yield o.play(d,r):o.stop()}})}_updateAudioPlayOption(s){return A(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}V(e.muted)||r.setPlayerMute(e.muted),V(e.volume)||r.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,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(se.TRACK,{userId:o,streamType:to(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.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:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if(V(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${to(e.streamType)}`);if(!n)return;let d=n.observer||void 0;if(r===null||st(r)&&r.length===0||!o){d==null||d.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=n.visibleViewMap||new Map,g=-1;(!d||d.root!==s)&&(d==null||d.disconnect(),m.clear(),d=new IntersectionObserver(S=>{S.forEach(N=>{m.set(N.target,N.isIntersecting)}),clearTimeout(g),g=window.setTimeout(()=>{let N=[...m.values()].find(k=>k);e.log.info(`view is${N?"":" not"} visible`),N?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let I=new Set(Is(r));m.forEach((S,N)=>{I.has(N)||(d.unobserve(N),m.delete(N))}),I.forEach(S=>{m.set(S,!0),d.observe(S)}),d.takeRecords().forEach(S=>{m.set(S.target,S.isIntersecting)}),n.visibleViewMap=m,n.observer=d}_exitRoom(){return A(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 r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),rg(this),this._room.remotePublishedUserMap.forEach(e=>{mt(e.remoteAudioTrack),mt(e.remoteVideoTrack),mt(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return A(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),mt(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Rt||Ws(Rt))&&(this._initActiveSpeaker(),H.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return A(this,null,function*(){if(Rt&&!Ws(Rt))this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:Rt});else{let e=yield Gi();e[0]&&!Ws(e[0])?(Rt=e[0],this.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):H.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&o.remoteAudioTrack.isAvailable&&n.push(o.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:Ee(ee({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),Y.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),Y.addCount({key:500001,useUV:!0})}static setLogLevel(e,r){$.setLogLevel(e),V(r)||(r?$.enableUploadLog():$.disableUploadLog())}static isSupported(){return ed()}static getCameraList(e=!0){return er(e)}static getMicrophoneList(e=!0){return Jt(e)}static getSpeakerList(e=!0){return Gi(e)}static setCurrentSpeaker(e){return A(this,null,function*(){if(at&&(e===nr.SPEAKER||e===nr.HEADSET)){let o=yield fe.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;ka.forEach(n=>A(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield Gi()).forEach(o=>{o.deviceId===e&&(ka.forEach(s=>{s._setCurrentSpeaker(e),s.emit(se.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),Rt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:d}){switch(d&&(Po.version=d),e){case"count":Po.addCount({key:r,useUV:n});break;case"enum":Po.addEnum({key:r,value:o,useUV:n});break;case"number":Po.addNumber({key:r,value:o,split:s});break}}};u(fe,"_loggerManager",$),u(fe,"EVENT",se),u(fe,"ERROR_CODE",ue),u(fe,"TYPE",nr),u(fe,"frameWorkType",30),X([Ye({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],fe.prototype,"use",1),X([Ut(bt.TRTC.enterRoom),Ki("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),Me(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),Ye()],fe.prototype,"enterRoom",1),X([Ye()],fe.prototype,"exitRoom",1),X([Ut(bt.TRTC.switchRole),Xo("room",{merge:(e,r)=>r}),Ye()],fe.prototype,"switchRole",1),X([Ye()],fe.prototype,"destroy",1),X([Ut(bt.TRTC.startLocalAudio),Ki("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),Ye()],fe.prototype,"startLocalAudio",1),X([Ut(bt.TRTC.updateLocalAudio),Xo("audio",{debounce:{delay:200,getKey:()=>`${ug}-localAudio`,isNeedToDebounce:e=>{var r;return!V((r=e.option)==null?void 0:r.captureVolume)}}}),Ye()],fe.prototype,"updateLocalAudio",1),X([eo("audio"),Ye()],fe.prototype,"stopLocalAudio",1),X([Ut(bt.TRTC.startLocalVideo),Ki("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),Ye()],fe.prototype,"startLocalVideo",1),X([Ut(bt.TRTC.updateLocalVideo),Xo("video"),Ye()],fe.prototype,"updateLocalVideo",1),X([eo("video"),Ye()],fe.prototype,"stopLocalVideo",1),X([Ut(bt.TRTC.startScreenShare),Ki("screen",()=>!0),Ye()],fe.prototype,"startScreenShare",1),X([Ut(bt.TRTC.updateScreenShare),Xo("screen"),Ye()],fe.prototype,"updateScreenShare",1),X([Ye()],fe.prototype,"stopScreenShare",1),X([Ut(bt.TRTC.startRemoteVideo),Ki(e=>`v${e.userId}${e.streamType}`,()=>!0),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"startRemoteVideo",1),X([Ut(bt.TRTC.updateRemoteVideo),Xo(e=>`v${e.userId}${e.streamType}`),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"updateRemoteVideo",1),X([Ut(bt.TRTC.stopRemoteVideo),Me(e=>function(r){return A(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),Ye({getRemoteId:e=>`${e.userId}_${e.streamType}`})],fe.prototype,"stopRemoteVideo",1),X([eo(e=>`v${e.userId}${e.streamType}`)],fe.prototype,"_stopRemoteVideo",1),X([Ut(...bt.TRTC.muteRemoteAudio),Ye({getRemoteId:e=>e})],fe.prototype,"muteRemoteAudio",1),X([Zm(...bt.TRTC.setRemoteAudioVolume),ig(200,e=>e),Ye({getRemoteId:e=>e})],fe.prototype,"setRemoteAudioVolume",1),X([Xd("start"),ji(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),Ki((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Cl[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],fe.prototype,"startPlugin",1),X([Xd("update"),Xo((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Dl[e.getName()]})],fe.prototype,"updatePlugin",1),X([Xd("stop"),eo((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),Ye({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Nl[e.getName()]})],fe.prototype,"stopPlugin",1),X([Zm(...bt.TRTC.enableAudioVolumeEvaluation)],fe.prototype,"enableAudioVolumeEvaluation",1),X([Ye()],fe.prototype,"getVideoSnapshot",1),X([Ye()],fe.prototype,"_setCurrentSpeaker",1),X([Ki(e=>`a${e.userId}`,()=>!0)],fe.prototype,"_startRemoteAudio",1),X([Me(e=>function(r){return A(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Ee(ee({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),eo(e=>`a${e.userId}`)],fe.prototype,"_stopRemoteAudio",1),X([eo("room")],fe.prototype,"_exitRoom",1),X([eo("screen")],fe.prototype,"_stopScreenShare",1),X([Ut(...bt.TRTC.sendSEIMessage),jm({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],fe.prototype,"sendSEIMessage",1),X([Ut(bt.TRTC.sendCustomMessage),jm({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],fe.prototype,"sendCustomMessage",1),X([Ut(bt.TRTC.create)],fe,"_create",1);var cp=fe,tn=cp;var ou=class{constructor(t,e){u(this,"_flag");u(this,"terminalType");u(this,"userId");u(this,"tinyId");u(this,"role");u(this,"remoteAudioTrack");u(this,"remoteVideoTrack");u(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Ho(t,this),this.remoteVideoTrack=new Qi(t,this),this.remoteAuxiliaryTrack=new kd(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return xn(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var dp=class{constructor(){u(this,"_set",new Set);H.on(L.LEAVE_SUCCESS,this.delete,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}};function ZI(){return A(this,null,function*(){let i,t;try{let I=yield Jt();i=I&&I.length}catch(I){}try{let I=yield er();t=I&&I.length}catch(I){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n}=this.checkSystemResult.detail,d=Hi.basis(),p={webRTC:d.isWebRTCSupported,getUserMedia:d.isGetUserMediaSupported,webSocket:d.isWebSocketsSupported,screenShare:d.isScreenShareSupported,webAudio:d.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n},m={browser:d.browser,os:d.os,trtc:p,devices:e},g={isWebCodecSupported:d.isWebCodecSupported,isMediaSessionSupported:d.isMediaSessionSupported,isWebTransportSupported:d.isWebTransportSupported};Be.uploadEvent({log:`trtcstats-${JSON.stringify(m)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(m)}`),Be.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(g)}`,userId:this.userId})})}function mg(){return Me(i=>{let t=new dp;return function(e,r,o){return A(this,null,function*(){let s=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=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new he({code:te.INVALID_OPERATION,message:dt({key:ct.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new he({code:te.INVALID_OPERATION,message:dt({key:ct.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),H.emit(L.JOIN_START,{room:this,roomId:s,params:e});let n=Lr.getEnv();n||(n=zr.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(pc.OLD_CLOUD_LADDER)?n=zr.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(pc.WEBRTC)&&(n=zr.WEBRTC))),Be.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Hi.checkSystemRequirementsInternal().then(d=>{this.checkSystemResult=d,ZI.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Lr.getEnv()&&(yield this.schedule(e,o));let d=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=Lr.performanceNow(),H.emit(L.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&Be.uploadEvent({log:`stat-conv-${Number(Tr)}-${location.hostname}`,userId:this.userId}),d}catch(d){throw t.delete({room:this,roomId:s}),H.emit(L.JOIN_FAILED,{room:this,error:d}),d}})}})}var pg=()=>Me(i=>function(...t){return A(this,null,function*(){H.emit(L.LEAVE_START,{room:this}),yield i.call(this,...t),H.emit(L.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function hg(){return Me(i=>function(...t){return A(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="capture"),!t.length))return;H.emit("61",{room:this});let e=i.apply(this,t);return t.forEach(r=>r.publish(this,e)),e})})}function fg(){return Me(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function gg(){return Me(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function KI({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return Pi(r)?r.catch(o=>$.error(`${i.name}() error observed ${o}`)):r}catch(r){$.error(`${i.name}() error observed ${r}`)}}}var su=class{constructor(t){u(this,"_frameWorkType");u(this,"_component");u(this,"_language");u(this,"connectionType");u(this,"_room");u(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});u(this,"_keyPrefix");u(this,"_log");u(this,"_intervalId");u(this,"_firstPublishedUserList");u(this,"_networkQuality");u(this,"_basicInfo");u(this,"_pathJoinRoom");u(this,"_pathLeaveRoom");u(this,"_pathMainVideoMap");u(this,"_pathMainAudioMap");u(this,"_pathAuxiliaryMap");u(this,"_remoteStreamStatMap");u(this,"_localStreamStat");u(this,"_eventMap",new Map);u(this,"_captureCostSum",0);u(this,"_captureCostCount",0);u(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=$.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Xe(this[e])&&(this[e]=KI({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:rt,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,Jn().then(t=>{this._basicInfo.string_os_version=Co(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),H.on(t,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(L.JOIN_START,this.handleJoinStart).addEvent(L.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(L.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(L.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(L.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(L.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(L.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(L.JOIN_FAILED,this.handleJoinFailed).addEvent(L.LEAVE_START,this.handleLeaveStart).addEvent(L.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(L.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(L.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(L.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(L.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(L.PUBLISH_START,this.handlePublishStart).addEvent(L.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(L.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(L.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(L.PLAY_TRACK_START,this.handlePlayStart).addEvent(L.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(L.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===D.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(L.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(L.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(L.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=r.hasAudio||r.hasVideo||r.hasSmall,d=r.hasAuxiliary;!o&&n&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&d&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(L.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(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("pagehide",this.handleUnload),this._eventMap.forEach((t,e)=>H.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),At.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(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&(V(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),V(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),V(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:n,tls:d,request:p,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=d,this._pathJoinRoom.int32_schedule_request=p,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&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:t,error:e}){this.hitTest(t)&&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 he?Number(e.getExtraCode()||e.getCode()):te.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.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(t){this.hitTest(t.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=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(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(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&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(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.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(t){this.hitTest(t.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(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,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:Ee(ee({},eS),{msg_user_info:new La({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:n,role:d}=e,p=new La({userId:s,tinyId:n,role:d==="anchor"?20:21}),m=Date.now(),g=`${s}_${r}`,I=this._remoteStreamStatMap.get(g);I&&I.subscribeStartTime===0&&(I.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(g)&&this._pathMainVideoMap.set(g,{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:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(g)&&this._pathMainAudioMap.set(g,{statsToReport:{msg_user_info:p,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(g)&&this._pathAuxiliaryMap.set(g,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&t.streamType==="main"?this.hasVideoFlag(t.userId):this.hasAuxFlag(t.userId)){let d=r-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=d,Y.addNumber({key:516820,value:d})}}(o==null?void 0:o.statsToReport.uint64_render_first_frame_time)===0&&(o.statsToReport.uint64_render_first_frame_time=r)}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:n})=>{let d=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(d)d.totalRTT+=e,d.totalLoss+=r,s&&(d.totalVideoDelay=(d.totalVideoDelay||0)+s,d.videoDelayCount=(d.videoDelayCount||0)+1),n&&(d.totalAudioDelay=(d.totalAudioDelay||0)+n,d.audioDelayCount=(d.audioDelayCount||0)+1),d.count++;else{let p,m,g,I;s&&(m=s,g=1),n&&(p=n,I=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:p,totalVideoDelay:m,audioDelayCount:I,videoDelayCount:g})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:d,uint32_video_height:p}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=d,this._localStreamStat.totalVideoHeight+=p,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/oi*100)>0&&(this._localStreamStat.totalAudioLevel+=s/oi,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:n,msg_audio_status:d,msg_video_status:p}=s,m=n.str_identifier,g=this._room.remotePublishedUserMap.get(m);if(p.forEach(I=>{let S=I.uint32_video_stream_type===2,N=I.uint32_video_stream_type===7,k=`${m}_${S?"main":"auxiliary"}`,P=this._remoteStreamStatMap.get(k);if(P&&(S&&(g!=null&&g.remoteVideoTrack.isSubscribed)||N&&(g!=null&&g.remoteAuxiliaryTrack))){P.totalVideoFPS+=I.uint32_video_receive_fps,P.totalVideoBitrate+=I.uint32_video_codec_bitrate,P.videoCount++,P.statsToReport.uint32_video_width===0&&(P.statsToReport.uint32_video_width=I.uint32_video_width),P.statsToReport.uint32_video_height===0&&(P.statsToReport.uint32_video_height=I.uint32_video_height);let x=S?g.remoteVideoTrack:g.remoteAuxiliaryTrack;x.stat.jitterBufferDelay&&(P.videoJitterBufferDelay=x.stat.jitterBufferDelay),x.stat.framesReceived&&(P.statsToReport.uint32_video_consume_render_rate=Math.floor(x.stat.framesDecoded/x.stat.framesReceived*Tn(10,6)))}}),!_s(d)){let I=`${m}_main`,S=this._remoteStreamStatMap.get(I);this._remoteStreamStatMap.has(I)&&S&&g!=null&&g.remoteAudioTrack.isSubscribed&&(S.totalAudioBitrate+=d.uint32_audio_codec_bitrate,S.audioCount++,g.remoteAudioTrack.stat.jitterBufferDelay&&(S.audioJitterBufferDelay=g.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(d.uint32_audio_level/oi*100)>0&&(S.totalAudioLevel+=d.uint32_audio_level/oi,S.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:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.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()),t.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:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof he?e.getExtraCode()||e.getCode():te.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&hs)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&fs)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&bn)>=0}hitTest(t){return t===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 t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<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((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:g,count:I,audioDelayCount:S,videoDelayCount:N,totalAudioDelay:k,totalVideoDelay:P}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(g/I),S&&k&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(k/S),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),N&&P&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(P/N))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,D.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,D.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,Yo));let{badCaseDetector:n}=this._room,{dataFreeze:d,count:p}=n.getDataFreezeDuration(e),{renderFreeze:m}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=p,t.statsToReport.uint32_video_block_time=Math.min(d,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>Yo&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+Yo)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>Yo&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+Yo)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Yo&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Yo)}getReportData(){this._basicInfo.uint32_networkType=_c();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new La({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Ts(this._signalInfo.relayIp),uint32_client_ip:Ts(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Tn(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:Ts(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Pn(t),t}report(){return A(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return A(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=yield qu(t),o=r instanceof ArrayBuffer,s=`${Yr(e,xi.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let d=[this.uploadKVStat(Y),this.uploadKVStat(Po)];n||d.push(Zr({url:s,body:r,priority:"low"})),yield Promise.all(d)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return A(this,null,function*(){let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=Ee(ee({},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 r=yield qu(e),o=`${Yr(+this._room.sdkAppId,xi.KV_STAT)}&gzip=${+(r instanceof ArrayBuffer)}`,s=!1;navigator.sendBeacon&&(s=navigator.sendBeacon(o,r)),s||Zr({url:o,body:r})})}};X([Wi({settings:{timeout:500,retries:3}})],su.prototype,"upload",1);var Yo=5e3,eS={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_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},La=class{constructor(t){u(this,"str_identifier");u(this,"str_tinyid");u(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},Eg=su;var up=class{constructor(){u(this,"_startTime");u(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=_e())}stop(){this._endTime===0&&(this._endTime=_e())}getDuration(){return this._endTime===0?_e()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},nu=up;var lp=class{constructor(t){u(this,"_room",null);u(this,"_durationMap");u(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(L.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(L.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var n;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,D.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,D.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,D.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,D.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>H.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>H.off(e,t,this)),this._eventMap.clear()}handleSubscribed({track:t}){if(!this.hitTest(t.room))return;let{userId:e,streamType:r,kind:o}=t;t.isSubscribed?this.addDuractionItem(e,o,r):this.stopDurationItem(`${e}_${r}`,o)}handleUnsubscribed({track:t}){this.hitTest(t.room)&&this.stopDurationItem(`${t.userId}_${t.streamType}`,t.kind)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new nu,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===D.AUDIO?[s]:[],video:e===D.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},_g=lp;var mp=class{constructor(t){u(this,"_room");u(this,"_renderFreezeMap",new Map);u(this,"_isVideoPlayingEventFiredMap",new Map);u(this,"_dataFreezeMap",new Map);u(this,"_monitorFreezeData",new Map);u(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(L.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(L.PLAY_TRACK_START,this.onPlayTrackStart).set(L.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(L.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}}).set(L.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==D.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===D.MUTE?this.onVideoTrackMuted(t):r===D.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(L.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>H.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>H.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),n=new nu;s?s.durationItemList.push(n):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[n],isFreezing(){let d=this.durationItemList[this.durationItemList.length-1];return d&&d.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:n}=o;r.msg_video_status.forEach(d=>{d.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"main"}),d.uint32_video_stream_type===7&&n.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let n=s.getDuration();n>gc?this._monitorFreezeData.set(t,{userId:e,type:r,duration:n}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return A(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,n=this._renderFreezeMap.get(s);if(e<=2){let d=_e();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:d,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:d,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let d=n.freezeTimeline.pop();if(d){d.endTime=_e();let p=d.endTime-d.startTime;n.freezeTimeline.push(d),n.renderFreezeTotal+=Math.min(5e3,p)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==D.VIDEO||!t.isRemotePublished)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<gc&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=_e(),n=e.freezeTimeline[e.freezeTimeline.length-1],d=s-n.startTime;r=e.renderFreezeTotal+Math.min(d,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},Tg=mp;var Sg=Oi(Bi(),1);var tS=[1,0,0,0,1,1,0,1],au=class extends Bt{constructor(t,e){if(super(t,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),t instanceof Et)try{this.setTexBuffer(tS)}catch(r){t.destroy(new he({code:te.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}draw2d(t,e,r,o,s){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(t,e,r,o,s);return this.ctx2d.restore(),n}return!1}render(t){var e;return(e=this.input)!=null&&e.requestFrame(t)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var pp=class{constructor(t,e){this.node=t;this.layout=e;u(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}},cu=class extends Bt{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});u(this,"inputs",[])}addInput(e,r){if(this.inputs[r.zIndex])throw new Error("input already exists");let o=new pp(e,r);this.inputs[r.zIndex]=o}resize(e,r){let o=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof Et&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...r){return super.connect(e,...r),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(r=>(r==null?void 0:r.node)===e)]=void 0}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),!this.inputs.reduce((s,n)=>(!n||!n.node.requestFrame(e))&&s,!0)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((o,s)=>(!s||!s.node.requestFrame(e))&&o,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let o=0;o<this.inputs.length;o++){let s=this.inputs[o];s&&this.draw2d(s.node.image,s.x,s.y,s.width,s.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:n,name:d}=this,p=Date.now(),m=(e-this.lastInfo.totalFrames)/((p-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:p,fps:m,name:d},ee({parent:this.inputs.filter(g=>g).map(g=>g.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var r,o;if(e&&((r=e.node)==null||r.disconnect(),e.positionBuffer&&this.context instanceof Et))try{(o=this.context.ctx)==null||o.deleteBuffer(e.positionBuffer)}catch(s){}})}};var rS=`#version 300 es
|
|
61
|
+
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(s=>{Jm[`${s}()`]={tips:`Call trtc.${s}`,color:"blue",class:"blue",textColor:"#fff"}});var Ek=Object.keys(Jm);var yT=0,ic,ks=class ks{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dumpLocalVideoMap",{});d(this,"dumpRemoteVideoMap",{});d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++yT}`}),this.log.info("created")}getName(){return ks.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 p(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return p(this,null,function*(){var i;try{if(ic)yield ic;else{let e=Date.now(),t=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${Hm}@${Me}/assets/debug-dialog.js`;ic=this.loadScript(t),yield ic,this.log.info(`download debug dialog script cost: ${Date.now()-e}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}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):su,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):ou,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return su({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return ou({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}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)})}};d(ks,"Name","Debug"),d(ks,"autoStart",!0),b([ot({settings:{timeout:3e3,retries:3},onError(i,e,t){var r;(r=i==null?void 0:i.message)!=null&&r.includes("timeout")?e():t(i)}})],ks.prototype,"loadScript",1);var rc=ks;var qm=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},sc=class{constructor(i,e,t){d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"type","auto");d(this,"config");d(this,"decoder");d(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=ue(e,H.INIT),this.stopOB=et(),this.startOB=et(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=et(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),de(l,xe(this.stopOB),Ce(()=>{},h=>{e.log.error(h),r.addFailedEvent({key:qm(this.type),error:h}),c>4?this.startOB.error(h):this.startOB.next(c+1)})),de(l,Ui(1),Ll(Ho))};de(this.startOB,Fo(0),Rs(a),xe(this.stopOB),Ce(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:qm(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 xi()(e=>p(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"}))}},bT={type:"object"},zo=class zo{constructor(i){this.core=i;d(this,"log");d(this,"contextMap",new Map);d(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return zo.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return zo.Name}getValidateRule(i){return bT}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 sc(this.core,t,i);return de(r.trackDoneOB,Ui(1),Ce(()=>{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 sc(this.core,i.track,i))}}};d(zo,"Name","TRTCAudioDecoder");var Qo=zo;var oc=class{constructor(){d(this,"log");this.log=R.createLogger({id:"exp"})}call(i,e){return se(this[i])?this[i](e):Promise.reject(new y({code:S.INVALID_PARAMETER,message:L({key:k.API_NOT_EXIST,data:{name:i}})}))}enableAudioFrameEvent(i){let{trtcInstance:e,enable:t,userId:r,sampleRate:o=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:h}=c;if(h.set(r,{enable:t,sampleRate:o,channelCount:n}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(u=>{if(u.remoteAudioTrack.isAvailable){if(l.get(u.userId))return;let f=c.getPCM(g=>{e.emit(cr.EVENT.AUDIO_FRAME,g)},u.userId);l.set(u.userId,f)}});else{if(l.get(r))return;let u=c.getPCM(f=>{e.emit(cr.EVENT.AUDIO_FRAME,f)},r);l.set(r,u)}else if(r==="*")e.room.remotePublishedUserMap.forEach(u=>{if(u.remoteAudioTrack.isSubscribed){let{userId:f}=u,g=l.get(f);g==null||g.abort("disable"),l.delete(f)}});else{let u=l.get(r);u==null||u.abort("disable"),l.delete(r)}}};b([Im({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],oc.prototype,"enableAudioFrameEvent",1);var jm=new oc;var Xm=0,Yo=new Set,Ve=null;yc(Gm);hs.checkStorage();Pd();var NT={RtcError:B,ErrorCode:$,ErrorCodeDictionary:Ut},j=class j extends zm.EventEmitter{constructor(e,t){super();d(this,"_room");d(this,"_eventListened",new Set);d(this,"_localVideoTrack",null);d(this,"_localAudioTrack",null);d(this,"_localScreenTrack",null);d(this,"_localScreenAudioTrack",null);d(this,"_localVideoConfig",null);d(this,"_localScreenConfig",null);d(this,"_localAudioConfig",null);d(this,"_remoteVideoConfigMap",new Map);d(this,"_remoteAudioConfigMap",new Map);d(this,"_remoteAudioVolumeMap",new Map);d(this,"_remoteAudioMuteMap",new Map);d(this,"_mediaTrackMap",new WeakMap);d(this,"_log",R.createLogger({id:`t${++Xm}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");this._room=new e(v({logger:this._log,frameWorkType:j.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.info(`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(Ka,t.assetsPath),this._use(ec,t.assetsPath),this._use(Qo,t.assetsPath||ln),this._use(rc),t.enableSEI&&bo&&this._use(tc),this._room.on("audio-volume",r=>{!r.find(o=>o.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),t.volumeType===1&&r.forEach(o=>{var a;let n=o.userId===""?this._localAudioTrack:(a=this.room.remotePublishedUserMap.get(o.userId))==null?void 0:a.remoteAudioTrack;n&&(o.volume=n.dbVolume)}),this.emit(P.AUDIO_VOLUME,{result:r.sort((o,n)=>n.volume-o.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new B({code:$.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Vm(this,"trtc")}static create(e){}static _create(e,t){Cm();let r=new j(e,t||{});return Yo.add(r),r}get room(){return this._room}_listenEvents(){Ge(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(P.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(P.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(P.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(P.ERROR,B.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(P.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=w(v({},e),{uplinkRTT:Math.min(e.uplinkRTT,Ys),downlinkRTT:Math.min(e.downlinkRTT,Ys)});this.emit(P.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ge(r,r).add("player-state-changed",o=>{let n=w(v({},o),{userId:e.userId});r.kind===m.VIDEO&&(n.streamType=or(r.streamType)),this.emit(r.kind===m.AUDIO?P.AUDIO_PLAY_STATE_CHANGED:P.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===S.PLAY_NOT_ALLOWED&&this.emit(P.AUTOPLAY_FAILED,{userId:r.userId,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{be(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._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==c&&(c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(c?P.REMOTE_VIDEO_AVAILABLE:P.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),o!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?P.REMOTE_AUDIO_AVAILABLE:P.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?P.REMOTE_VIDEO_AVAILABLE:P.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(P.SEI_MESSAGE,w(v({},e),{streamType:or(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(P.ERROR,new B({code:$.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,c,l,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,Ys),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.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)/Et},video:e.msg_up_stream_info.msg_video_status.filter(f=>t[f.uint32_video_stream_type]).map(f=>({bitrate:(f.uint32_video_codec_bitrate||0)/1e3,width:f.uint32_video_width,height:f.uint32_video_height,frameRate:f.uint32_video_enc_fps,videoType:t[f.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(f=>({userId:f.msg_user_info.str_identifier,audio:{bitrate:(f.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(f.msg_audio_status.uint32_audio_level||0)/Et},video:f.msg_video_status.map(g=>({bitrate:(g.uint32_video_codec_bitrate||0)/1e3,width:g.uint32_video_width,height:g.uint32_video_height,frameRate:g.uint32_video_dec_fps,videoType:t[g.uint32_video_stream_type]}))}))};this.emit(P.STATISTICS,r)}).add("custom-message",e=>{this.emit(P.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(P.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(P.FIRST_VIDEO_FRAME,w(v({},e),{streamType:or(e.streamType)}))}).add("audio-frame",e=>{this.emit(P.AUDIO_FRAME,e)}),Ge(this,ke).add("audioInputAdded",e=>{this.emit(P.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(P.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(P.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(P.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>p(this,null,function*(){if(this.emit(P.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Ve&&Ve.deviceId===Qs){let t=(yield er()).find(r=>r.deviceId===Qs);t&&Ve.groupId!==t.groupId&&(Ve=t,this.emit(P.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>p(this,null,function*(){this.emit(P.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield er())[0];if(!t||!Ve||Ve.groupId===t.groupId)return;let r=Ve.deviceId===e.deviceId,o=Ve.deviceId===Qs&&Ve.deviceId===t.deviceId;(r||o)&&(Ve=t,this.emit(P.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||ln)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Um.call(this,{TRTC:j,room:this._room,errorModule:NT,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return p(this,null,function*(){var c,l;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!K(e.proxy)&&e.proxy.turnServer&&((l=(c=this._room).setTurnServer)==null||l.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,ge(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);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,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,j.frameWorkType),this._checkTrackToPublish(),Ql.start()})}exitRoom(){return p(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return p(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(){be(this),this.removeAllListeners(),this._room.destroy(),Yo.delete(this),Yo.size===0&&Ql.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)}),this._plugins.clear(),T.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return p(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 St(this._room.audioManager),a={},c={muted:!0};o&&(E(o.microphoneId)?E(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&Q(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),E(o.profile)||(K(o.profile)?mn[o.profile]&&n.setProfile(mn[o.profile]):n.setProfile(o.profile)),Q(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",l=>{this.emit(P.ERROR,new B({code:$.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(P.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let h;l.error&&(h=B.convertFrom(l.error)),this.emit(P.PUBLISH_STATE_CHANGED,w(v({},l),{error:h}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),E(r)||n.setMute(r),Ge(n,n).add("player-state-changed",l=>{this.emit(P.AUDIO_PLAY_STATE_CHANGED,w(v({},l),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=w(v({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n}),T.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return p(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}),Wt(this._localAudioConfig,e)})}stopLocalAudio(){return p(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),T.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),be(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return p(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 Je(this._room.videoManager),c={},l={};ge(n==null?void 0:n.avoidCropping)&&(a.avoidCropping=n.avoidCropping),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,n.qosPreference&&(c.contentHint=jo(n.qosPreference)),E(n.profile)||(K(n.profile)?gt[n.profile]&&a.setProfile(gt[n.profile]):a.setProfile(n.profile)),E(n.fillMode)||(l.objectFit=n.fillMode),E(n.mirror)||(l.mirror=n.mirror),E(n.small)||(Ro()?K(n.small)?a.small=gt[n.small]:n.small===!0?a.small=gt["120p"]:a.small=n.small:this._log.warn("small stream is not supported"))),a.once("first-video-frame",h=>{this.emit(P.FIRST_VIDEO_FRAME,w(v({},h),{streamType:or(h.streamType)}))}),a.on("5",h=>{this.emit(P.ERROR,new B({code:$.DEVICE_ERROR,extraCode:5308,messageParams:{error:h}}))}),a.on("2",h=>{this.emit(P.DEVICE_CHANGED,{type:"camera",action:"active",device:h})}),a.on("4",h=>{let u;h.error&&(u=B.convertFrom(h.error)),this.emit(P.PUBLISH_STATE_CHANGED,w(v({},h),{error:u}))}),this._listenOutputTrackChanged(a),yield a.capture(c),E(o)||(yield a.setMute(o)),Ge(a,a).add("player-state-changed",h=>{this.emit(P.VIDEO_PLAY_STATE_CHANGED,w(v({},h),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localVideoTrack=a,this._localVideoConfig=w(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:a})})}updateLocalVideo(e){return p(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)||(K(n.profile)?gt[n.profile]&&this._localVideoTrack.setProfile(gt[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&&this._localVideoTrack.setContentHint(jo(n.qosPreference)),n.small){let c=!this._localVideoTrack.small;Ro()?(n.small===!0?this._localVideoTrack.small=gt["120p"]:K(n.small)?this._localVideoTrack.small=gt[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}),Wt(this._localVideoConfig,e)})}stopLocalVideo(){return p(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),be(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return p(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 ct(this._room.videoManager);n.on("4",u=>{let f;u.error&&(f=B.convertFrom(u.error)),this.emit(P.PUBLISH_STATE_CHANGED,w(v({},u),{error:f}))}),n.once("first-video-frame",u=>{this.emit(P.FIRST_VIDEO_FRAME,w(v({},u),{streamType:or(u.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,c={},l={};o&&(E(o.profile)||(K(o.profile)?pn[o.profile]&&n.setProfile(pn[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)||(l.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),o.qosPreference&&(c.contentHint=jo(o.qosPreference)));let h=yield n.capture(c);if(n.mediaTrack.addEventListener(m.ENDED,()=>{this._stopScreenShare(),this.emit(P.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]&&(a=new ci(this._room.audioManager),yield a.setInputMediaStreamTrack(h.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),Ge(n,n).add("player-state-changed",u=>{this.emit(P.VIDEO_PLAY_STATE_CHANGED,w(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=w(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:n})})}updateScreenShare(e){return p(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=jo(o.qosPreference);this._localScreenTrack.setContentHint(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}),Wt(this._localScreenConfig,e)})}stopScreenShare(){return p(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return p(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 l={},h=o==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;this._listenOutputTrackChanged(h),n&&(E(n.fillMode)||(l.objectFit=n.fillMode),E(n.mirror)||(l.mirror=n.mirror),E(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,o==="main"&&!E(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._enableVideoDecodeFallback(h,o),yield this._updateVideoPlayOption({view:t,playOption:l,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 p(this,null,function*(){var C,M;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 l={};n&&(E(n.fillMode)||(l.objectFit=n.fillMode),E(n.mirror)||(l.mirror=n.mirror));let h=null,u=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(u!=null&&u.muteState.hasVideo)&&(h=u.remoteVideoTrack),o==="sub"&&(u!=null&&u.muteState.hasAuxiliary)&&(h=u.remoteAuxiliaryTrack),!h)return;let{config:f}=c;o==="main"&&n&&!E(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:h,prevConfig:f}),Wt(f,e);let g=E(n==null?void 0:n.receiveWhenViewVisible)?(C=f.option)==null?void 0:C.receiveWhenViewVisible:n.receiveWhenViewVisible,D=E(t)?f.view:t,_=E(n==null?void 0:n.viewRoot)?(M=f.option)==null?void 0:M.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:D,receiveWhenViewVisible:g,viewRoot:_})})}stopRemoteVideo(e){return p(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return p(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=o;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(c.stop(),n.hasAuxiliary&&r.push(c))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,o=this._remoteVideoConfigMap.get(r);o&&o.observer&&o.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return p(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{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}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}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 p(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return p(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return p(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){if(this.listeners(e).includes(t))return this;if(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),this.listeners(P.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:o}=this.room.audioManager;o.get("")||o.set("",{enable:!0}),this._localAudioTrack&&T.emit("113",{userId:"",room:this.room})}return this}emit(e,...t){try{km.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,t,r),(e===j.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(j.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:o}=this.room.audioManager;o.forEach((n,a)=>{n==null||n.abort("off"),o.delete(a)})}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(K(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&&o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o!=null&&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 p(this,null,function*(){(yield er()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(P.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 p(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=Q(a)?a:100;o.volume=c,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),de(ue(n,"decode-failed"),xe(ue(n,H.INIT)),Ce(()=>{this.startPlugin(Qo.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n}),T.emit("115",{userId:t,room:this.room})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return p(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.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),T.emit("116",{userId:e.userId,room:this.room})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let o;de(ue(e,"decode-failed"),xe(ue(e,H.INIT)),xl(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Pr(ue(e,"decode-downgrade-state-changed")),Ce(n=>{o=n.state,this.emit(P.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,w(v({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{o==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return p(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),E(e)&&o&&o.view&&!Qr(t)){let a=Kr(o.view);a.length>0&&(yield r.play(a,t))}if(!E(e)){let a=Kr(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return p(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(P.TRACK,{userId:r,streamType:or(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,o;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&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}_${or(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 l=n.visibleViewMap||new Map,h=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(f=>{f.forEach(g=>{l.set(g.target,g.isIntersecting),e.log.info(`view ${g.target.id} is${g.isIntersecting?"":" not"} visible`)}),clearTimeout(h),h=window.setTimeout(()=>{[...l.values()].find(D=>D)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let u=new Set(Kr(t));l.forEach((f,g)=>{u.has(g)||(a.unobserve(g),l.delete(g))}),u.forEach(f=>{l.set(f,!0),a.observe(f)}),a.takeRecords().forEach(f=>{l.set(f.target,f.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return p(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(),Bm(this),this._room.remotePublishedUserMap.forEach(e=>{be(e.remoteAudioTrack),be(e.remoteVideoTrack),be(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return p(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),be(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Ve||Ss(Ve))&&(this._initActiveSpeaker(),T.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return p(this,null,function*(){if(Ve&&!Ss(Ve))this.emit(P.DEVICE_CHANGED,{type:"speaker",action:"active",device:Ve});else{let e=yield er();e[0]&&!Ss(e[0])?(Ve=e[0],this.emit(P.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):T.on("102",this._onLocalTrackCaptured,this)}})}_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,n=[o];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).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:w(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})}callExperimentalAPI(e,t){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),jm.call(e,v({trtcInstance:this},t))}static setLogLevel(e,t){R.setLogLevel(e),E(t)||(t?R.enableUploadLog():R.disableUploadLog())}static isSupported(){return ra()}static getCameraList(e=!0){return _t(e)}static getMicrophoneList(e=!0){return nt(e)}static getSpeakerList(e=!0){return er(e)}static setCurrentSpeaker(e){return p(this,null,function*(){if(he&&(e===At.SPEAKER||e===At.HEADSET)){let r=yield j.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;Yo.forEach(n=>p(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield er()).forEach(r=>{r.deviceId===e&&(Yo.forEach(o=>{o._setCurrentSpeaker(e),o.emit(P.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&&(Rr.version=a),e){case"count":Rr.addCount({key:t,useUV:n});break;case"enum":Rr.addEnum({key:t,value:r,useUV:n});break;case"number":Rr.addNumber({key:t,value:r,split:o});break}}};d(j,"_loggerManager",R),d(j,"EVENT",P),d(j,"ERROR_CODE",$),d(j,"TYPE",At),d(j,"frameWorkType",30),b([fe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],j.prototype,"use",1),b([Xe(Ue.TRTC.enterRoom),rr("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),z(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),fe()],j.prototype,"enterRoom",1),b([fe()],j.prototype,"exitRoom",1),b([Xe(Ue.TRTC.switchRole),Vr("room",{merge:(e,t)=>t}),fe()],j.prototype,"switchRole",1),b([fe()],j.prototype,"destroy",1),b([Xe(Ue.TRTC.startLocalAudio),rr("audio",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((o=t==null?void 0:t.option)==null?void 0:o.microphoneId)}),fe()],j.prototype,"startLocalAudio",1),b([Xe(Ue.TRTC.updateLocalAudio),Vr("audio",{debounce:{delay:200,getKey:()=>`${Xm}-localAudio`,isNeedToDebounce:e=>{var t;return!E((t=e.option)==null?void 0:t.captureVolume)}}}),fe()],j.prototype,"updateLocalAudio",1),b([sr("audio"),fe()],j.prototype,"stopLocalAudio",1),b([Xe(Ue.TRTC.startLocalVideo),rr("video",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((o=t==null?void 0:t.option)==null?void 0:o.cameraId)}),fe()],j.prototype,"startLocalVideo",1),b([Xe(Ue.TRTC.updateLocalVideo),Vr("video"),fe()],j.prototype,"updateLocalVideo",1),b([sr("video"),fe()],j.prototype,"stopLocalVideo",1),b([Xe(Ue.TRTC.startScreenShare),rr("screen",()=>!0),fe()],j.prototype,"startScreenShare",1),b([Xe(Ue.TRTC.updateScreenShare),Vr("screen"),fe()],j.prototype,"updateScreenShare",1),b([fe()],j.prototype,"stopScreenShare",1),b([Xe(Ue.TRTC.startRemoteVideo),rr(e=>`v${e.userId}${e.streamType}`,()=>!0),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],j.prototype,"startRemoteVideo",1),b([Xe(Ue.TRTC.updateRemoteVideo),Vr(e=>`v${e.userId}${e.streamType}`),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],j.prototype,"updateRemoteVideo",1),b([Xe(Ue.TRTC.stopRemoteVideo),z(e=>function(t){return p(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(o=>{this._remoteVideoConfigMap.has(`${o.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:o.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${o.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:o.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],j.prototype,"stopRemoteVideo",1),b([sr(e=>`v${e.userId}${e.streamType}`)],j.prototype,"_stopRemoteVideo",1),b([Xe(...Ue.TRTC.muteRemoteAudio),fe({getRemoteId:e=>e})],j.prototype,"muteRemoteAudio",1),b([ql(...Ue.TRTC.setRemoteAudioVolume),Fm(200,e=>e),fe({getRemoteId:e=>e})],j.prototype,"setRemoteAudioVolume",1),b([Qa("start"),Ze(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),rr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Rd[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],j.prototype,"startPlugin",1),b([Qa("update"),Vr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Cd[e.getName()]})],j.prototype,"updatePlugin",1),b([Qa("stop"),sr((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>yd[e.getName()]})],j.prototype,"stopPlugin",1),b([ql(...Ue.TRTC.enableAudioVolumeEvaluation)],j.prototype,"enableAudioVolumeEvaluation",1),b([fe()],j.prototype,"getVideoSnapshot",1),b([fe()],j.prototype,"_setCurrentSpeaker",1),b([rr(e=>`a${e.userId}`,()=>!0)],j.prototype,"_startRemoteAudio",1),b([z(e=>function(t){return p(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(w(v({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),sr(e=>`a${e.userId}`)],j.prototype,"_stopRemoteAudio",1),b([sr("room")],j.prototype,"_exitRoom",1),b([sr("screen")],j.prototype,"_stopScreenShare",1),b([Xe(...Ue.TRTC.sendSEIMessage),Bl({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],j.prototype,"sendSEIMessage",1),b([Xe(Ue.TRTC.sendCustomMessage),Bl({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],j.prototype,"sendCustomMessage",1),b([Xe(Ue.TRTC.create)],j,"_create",1);var nu=j,cr=nu;var au=class{constructor(){d(this,"_set",new Set);T.on(I.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 vT(){return p(this,null,function*(){let s,i;try{let u=yield nt();s=u&&u.length}catch(u){}try{let u=yield _t();i=u&&u.length}catch(u){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=ti.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},l={browser:a.browser,os:a.os,trtc:c,devices:e},h={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};te.uploadEvent({log:`trtcstats-${JSON.stringify(l)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(l)}`),te.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(h)}`,userId:this.userId})})}function Qm(){return z(s=>{let i=new au;return function(e,t,r){return p(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:L({key:k.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:L({key:k.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(I.JOIN_START,{room:this,roomId:o,params:e});let n=dt.getEnv();n||(n=_i.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(fn.OLD_CLOUD_LADDER)?n=_i.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(fn.WEBRTC)&&(n=_i.WEBRTC))),te.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),ti.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,vT.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!dt.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=dt.performanceNow(),T.emit(I.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&te.uploadEvent({log:`stat-conv-${Number(Lt)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),T.emit(I.JOIN_FAILED,{room:this,error:a}),a}})}})}var Ym=()=>z(s=>function(...i){return p(this,null,function*(){T.emit(I.LEAVE_START,{room:this}),yield s.call(this,...i),T.emit(I.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Km(){return z(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var ep=Be(Qe());var ye={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Bt={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},Zm=[Bt.UPDATE_REMOTE_MUTE_STAT,Bt.UPLINK_NETWORK_STATS,Bt.USER_LIST_RES,Bt.MUTE_RESULT,Bt.SERVER_FIRST_PACKAGE_RECEIVED,Bt.RECEIVE_CUSTOM_MSG],G={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"},Y={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 nc=new Set;function tp(s){let i=[...nc.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var Ls=class extends ep.default{constructor(e){var r,o,n;super();d(this,"room");d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"url");d(this,"backupUrl");d(this,"destroyed",!1);d(this,"_socketInUse");d(this,"_socket");d(this,"_backupSocket");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_seq",0);d(this,"_log");d(this,"_lastMessageTime",-1);d(this,"_connectStartTime",-1);d(this,"_stopConnectRetry");d(this,"bytesSent",0);d(this,"bytesReceived",0);d(this,"keepAlive",!1);d(this,"signalDomainWhenUnifiedProxy");d(this,"stopKeepAliveTimeout");d(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-nc.size>0&&this.room.enableSPC&&(this.keepAlive=!0,nc.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 race(){return this.room.enableSPC&&!this.room.proxy_ws}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 isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return p(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=x();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 gr(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(ye.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(ye.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+=eo(e.data);let t=JSON.parse(e.data),{cmd:r,data:o}=t,n=Object.values(Bt),c=Object.keys(Bt)[n.indexOf(r)],l=G[c]||r;switch(Zm.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case Bt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&wu(o.svrTime),this._log.info(`ChannelSetup Success ${x()-this._connectStartTime}`),N.addSuccessEvent({key:521701,cost:x()-this._connectStartTime}),this._connectStartTime=-1,this.emit(ye.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let h=new y({code:S.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:L({key:k.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(ye.SETUP_FAILED,h)}break}case Bt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.bakRelayIps=o.bakRelayIps,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(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return p(this,null,function*(){try{if(!this.room.joinParams)return;Vt(!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 p(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:Y.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:G.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),N.addSuccessEvent({key:521702,cost:x()-this._connectStartTime}),this._connectStartTime=-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+=eo(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,h)=>{let u=setTimeout(()=>{this.off(o,g);let _=new y({code:S.API_CALL_TIMEOUT,message:L({key:k.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(_),h(_)},r),f=Date.now(),g=_=>{_.data.seq===D&&(clearTimeout(u),this.off(o,g),c&&(_.data.receiveTime=Date.now()),l(_))};this.on(o,g);let D=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return qt({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(ye.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),nc.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],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}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}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(G.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(G.JOIN_ROOM_RESULT,t))};this.on(G.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(ye.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(ye.CONNECTED):e==="DISCONNECTED"&&this.emit(ye.DISCONNECTED))}};b([ot({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],Ls.prototype,"connect",1);var ip=Be(Qe());var cu=0,du=!1,ac=new Set,OT=s=>cu>2&&!du&&ac.size===0&&s,lu=!1,it=class{constructor(i){d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_signalChannel");d(this,"_isErrorObserved",!1);d(this,"_waitForPeerConnectionConnectedPromise");d(this,"_waitForPeerConnectionConnectedPromiseReject",null);d(this,"_peerConnection",null);d(this,"_emitter",new ip.default);d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_reconnectionCount",0);d(this,"_reconnectionTimer",-1);d(this,"_isFirstConnection",!0);d(this,"_prevTime",-1);d(this,"_localAddress");d(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=x())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,N.addSuccessEvent({key:521705,cost:Math.min(x()-this._prevTime,30*1e3)})):this._isReconnecting&&N.addSuccessEvent({key:521706,cost:x()-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(),ac.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 yt;let i=null;if(this._isUplink){if(!Zi()||this._peerConnection.getSenders().length===0)return yt;i=this._peerConnection.getSenders()[0].transport}else{if(!Cr()||this._peerConnection.getReceivers().length===0)return yt;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:yt}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===me.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===me.FAILED||i.target.connectionState===me.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===me.CONNECTED||i.target.connectionState===me.COMPLETED)&&(this.logSelectedCandidate(),te.logSuccessEvent({userId:this._room.userId,eventType:rt.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(cu=0,du=!1,lu=!0,ac.add(this)):ac.delete(this),T.emit(I.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 p(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(Ki(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:L({key:k.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{T.off(I.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"});cu+=1,OT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),du=!0,this._emitter.emit("firewall-restriction")),e(a)},zs);T.on(I.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(ye.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=gi()){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:L({key:this._isUplink?k.UPLINK_RECONNECTION_FAILED:k.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(ye.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([at(521712,!1)],it.prototype,"setOffer",1),b([at(521713,!1)],it.prototype,"setAnswer",1);var pu=Be(mu());var Ae=function(s){return pu.default.parse(s)},Rt=function(s){return pu.default.write(s)},lp=function(s){let i=Ae(s);return i.media.forEach(e=>{e.type===m.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),Rt(i)};function up(s){let i=Ae(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 l=c.match(/apt=(\d+)/);l&&l[1]&&o.has(Number(l[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(" ")}}),Rt(i)}function cc(s){return Object.keys(s).filter(i=>s[i])}var ws=class ws extends it{constructor(e){super(w(v({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new wi(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new ui(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new Ns(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 Si(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===Xs?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
|
|
62
|
+
`),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
|
|
63
|
+
`)}addSPSDescription(e){let t=Ae(e);return t.media.forEach(r=>{r.type===m.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),Rt(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=Ae(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),Rt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return p(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===me.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===me.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 p(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} [${cc(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=Y.UNSUBSCRIBE,n=G.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Y.SUBSCRIBE_CHANGE,n=G.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:L({key:k.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return p(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return p(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:Y.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:G.SUBSCRIBE_RESULT,timeout:wc});if(!this._peerConnection){let a=new y({code:S.INVALID_OPERATION,message:L({key:k.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return p(this,null,function*(){let e={voiceActivityDetection:!1};mt()&&this._sdpSemantics===qi?(this._peerConnection.addTransceiver(m.AUDIO,{direction:Z.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Z.RECVONLY}),this._peerConnection.addTransceiver(m.VIDEO,{direction:Z.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield ia();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=up(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=lp(t.sdp),this._sdpSemantics===qi&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return p(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===ur)throw new y({code:S.NOT_SUPPORTED_H264,message:L({key:k.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new y({code:t,message:L({key:k.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{Ae(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(Xs)});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(Xs)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(Oc)});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 p(this,null,function*(){if(!(Fe(ws.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=vt(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}};b([z(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:L({key:k.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],ws.prototype,"subscribe",1),b([at(521717,!1)],ws.prototype,"unsubscribe",1),b([Ze(it.prototype.afterConnect),Ta(it.prototype.beforeConnect)],ws.prototype,"connect",1);var fu=ws,_u=fu;var mp={voiceActivityDetection:!1},xs=class xs extends it{constructor(e){super(w(v({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(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});d(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&&(Zt()?(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 p(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(),mt()?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 p(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,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),c&&a.addTrack(c);let h=this._peerConnection.getTransceivers();if(h.length===0)this._peerConnection.addTransceiver(l||m.AUDIO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?m.VIDEO:c||m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?c||m.VIDEO:m.VIDEO,{direction:Z.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(l&&(h[0].sender.track||u.push(0),yield h[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:m.AUDIO})),c){let f=o?3:1;yield h[f].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:m.VIDEO,videoType:o?m.AUXILIARY:m.BIG}),u.push(f),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(Z.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 p(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 l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return p(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(Z.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(Z.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 p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Zt()){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=w(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=w(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(Z.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 p(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:G.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:G.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),ei){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:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:G.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return p(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`),mt()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return p(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&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Z.INACTIVE&&(yield this.setTransceiverDirection(Z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return p(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Zt()&&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 Je&&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===qr||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=Ae(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;Zt()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&se(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return p(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`),mt()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return p(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(Z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return p(this,null,function*(){if(!oe)return;let r=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
|
|
64
|
+
`).map(l=>{if(l.match(new RegExp(`a=(${Z.INACTIVE}|${Z.RECVONLY}|${Z.SENDONLY})`))&&a++,t.includes(a)){if(e===Z.INACTIVE&&l.includes(`a=${Z.RECVONLY}`))return o=!0,`a=${e}`;if(e===Z.SENDONLY&&l.includes(`a=${Z.INACTIVE}`))return o=!0,`a=${Z.RECVONLY}`}return l}).join(`\r
|
|
65
|
+
`);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return p(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 p(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(mt()?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 p(this,null,function*(){try{let r=yield this._peerConnection.createOffer(mp);oe&&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:Y.PUBLISH_CHANGE,data:n,responseCommand:G.UPDATE_OFFER_RESULT,timeout:Pc,commandDesc:"update offer"}),{code:c,message:l}=a.data;c!==0&&this.checkPublishResultCode(c,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return p(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!yo())return o?t===m.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,c=this._peerConnection.getSenders();if(mt()){let l=0;t===m.VIDEO&&(r===m.SMALL?l=2:r===m.AUXILIARY?l=3:l=1),a=c[l]}else a=c.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),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";oe&&(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
|
|
66
|
+
`:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return oe&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
|
|
67
|
+
c=IN $2\r
|
|
68
|
+
b=${r}:${t}\r
|
|
69
|
+
`),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 p(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return p(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 p(this,null,function*(){try{let e=yield this._peerConnection.createOffer(mp);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Y.PUBLISH,responseCommand:G.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof ct||this.localAuxVideoTrack instanceof ct,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=Ae(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),Rt(o)}acceptAnswer(e){return p(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),f=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let g=this._isPublishingAux?m.AUXILIARY:m.BIG;c=yield this.setBandwidth({bandwidth:u,type:m.VIDEO,sdp:c,videoType:g})}f&&(c=yield this.setBandwidth({bandwidth:f,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(Y.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return p(this,null,function*(){if(!(Fe(xs.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,responseCommand:G.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=vt(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(I.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{Ae(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===qr&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let l=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=l:c===1&&(this.ssrc.small=l)});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===ur?(this._log.error(we.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:L({key:k.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:L({key:k.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.PUBLISH_RESULT,code:e,message:t}})})}};b([z(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:L({key:k.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],xs.prototype,"publish",1),b([at(521715,!1)],xs.prototype,"unpublish",1),b([Ze(it.prototype.afterConnect),Ta(it.prototype.beforeConnect)],xs.prototype,"connect",1);var gu=xs,Zo=gu;var en=class{constructor(i,e){this.room=i;d(this,"_log");d(this,"_prevReportTime",0);d(this,"_prevReport",{});d(this,"_prevStats",null);d(this,"_prevEncoderImplementation","");d(this,"_prevAuxEncoderImpl","");d(this,"_prevQualityLimitationReason","");d(this,"_prevAuxQualityLimitationReason","");d(this,"_prevDecoderImplementationMap",new Map);d(this,"totalBytesSent",0);d(this,"totalBytesReceived",0);d(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return p(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,f;let c,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===m.VIDEO){if(a.ssrc===r.video?(c=m.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?c=m.SMALL:a.ssrc===r.auxiliary&&(l=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 D=2,_=this._prevEncoderImplementation;c===m.AUXILIARY&&(D=7,_=this._prevAuxEncoderImpl),T.emit("262",{userId:i.userId,streamType:D,prevImplementation:_,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"?Ki(a)&&(this.totalBytesSent=a.bytesSent,Q(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)&&((f=i.localMainAudioTrack)!=null&&f.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!E(a.frameWidth)){let g=m.SMALL;a.trackIdentifier===i.getVideoTrackId(m.VIDEO)||a.ssrc===r.video?g=m.VIDEO:(a.trackIdentifier===i.getVideoTrackId(m.AUXILIARY)||a.ssrc===r.auxiliary)&&(g=m.AUXILIARY),e[g].frameWidth=a.frameWidth,e[g].frameHeight=a.frameHeight,e[g].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 p(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:l}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let f=(u.mediaType||u.kind)===m.AUDIO;if(f){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:g}=i;g.stat.packetsReceived=u.packetsReceived,g.stat.bytesReceived=u.bytesReceived,g.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=g.stat.end2EndDelay,e.hasAudio=!0}else{if(oe&&u.bytesReceived===0)return;let g;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,g=i.remoteVideoTrack,c.hasSmall&&l.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,g=i.remoteAuxiliaryTrack,e.hasAuxiliary=!0),g&&(g.stat.packetsReceived=u.packetsReceived,g.stat.bytesReceived=u.bytesReceived,g.stat.packetsLost=u.packetsLost,g.stat.framesReceived=u.framesReceived,g.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(g.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)))}u.jitterBufferDelay&&(f?(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"&&Ki(u)&&(this.totalBytesReceived=u.bytesReceived,Q(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 p(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=x(),a=yield o.getStats(),c=x();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let l=[],h=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>h.has(u.type)&&l.push(u)),this._spcStats=l}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(oi(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var f,g,D;if(!oi(i.senderStats)){let _={uint32_audio_level:i.senderStats.audio.audioLevel*Et,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(_.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*Et),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let C=[];if(i.senderStats.video.bytesSent){let ne={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};C.push(ne)}if(i.senderStats.small.bytesSent){let ne={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};C.push(ne)}if(i.senderStats.auxiliary.bytesSent){let ne={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};C.push(ne)}let M={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:_,msg_video_status:C,msg_network_status:M}}let r=(f=Re())==null?void 0:f.playoutStats;r&&(e.msg_device_info.uint32_audio_play_cost=r.totalFramesDuration);let{statInterval:o}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(_=>{let C={msg_user_info:{str_identifier:_.userId,uint64_tinyid:_.tinyId},msg_network_status:{uint32_rtt:_.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(_.hasAudio){let M={uint32_audio_p2p_delay:_.audio.p2pDelay,uint32_audio_cache_ms:_.audio.totalJitter,uint32_audio_cache_ms_count:_.audio.totalJitterCount,uint32_audio_codec_bitrate:_.audio.bytesReceived,uint32_audio_total_bitrate:_.audio.bytesReceived,uint32_audio_level:_.audio.audioLevel*1e8,uint32_audio_energy:_.audio.totalAudioEnergy*1e6,uint32_audio_receive:_.audio.packetsReceived,uint32_audio_origin_lost:_.audio.packetsLost};C.msg_audio_status=M}if(_.hasVideo){let M=t.get(`${_.userId}_${Mc}`),ne=M?M.duration:0,F={uint32_video_stream_type:_.isSmallSubscribed?3:2,uint32_video_receive_fps:_.video.framesReceived,uint32_video_width:_.video.frameWidth,uint32_video_height:_.video.frameHeight,uint32_video_codec_bitrate:_.video.bytesReceived,uint32_video_receive:_.video.packetsReceived,uint32_video_origin_lost:_.video.packetsLost,uint32_video_block_time:ne,uint32_video_dec_fps:_.video.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.video.totalJitter,uint32_video_cache_ms_count:_.video.totalJitterCount};C.msg_video_status.push(F)}if(_.hasAuxiliary){let M=t.get(`${_.userId}_${kc}`),ne=M?M.duration:0,F={uint32_video_stream_type:7,uint32_video_receive_fps:_.auxiliary.framesReceived,uint32_video_width:_.auxiliary.frameWidth,uint32_video_height:_.auxiliary.frameHeight,uint32_video_codec_bitrate:_.auxiliary.bytesReceived,uint32_video_receive:_.auxiliary.packetsReceived+_.auxiliary.packetsLost,uint32_video_origin_lost:_.auxiliary.packetsLost,uint32_video_block_time:ne,uint32_video_dec_fps:_.auxiliary.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.auxiliary.totalJitter,uint32_video_cache_ms_count:_.auxiliary.totalJitterCount};C.msg_video_status.push(F)}e.msg_down_stream_info.push(C)});let n=this._prevReport,a=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&&n.msg_up_stream_info.msg_audio_status){let _=n.msg_up_stream_info.msg_audio_status,C=e.msg_up_stream_info.msg_audio_status;if(_.uint32_audio_codec_bitrate===0)C.uint32_audio_codec_bitrate=0;else{let M=this.getDifferenceValue(_.uint32_audio_codec_bitrate,C.uint32_audio_codec_bitrate);C.uint32_audio_codec_bitrate=Math.round(M*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=C.uint32_audio_codec_bitrate}(g=n.msg_device_info)!=null&&g.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/o):delete e.msg_device_info.uint32_audio_capture_cost}let c=n.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(_=>{let C=c.find(U=>U.uint32_video_stream_type===_.uint32_video_stream_type);if(!C||C.uint32_video_codec_bitrate===0){_.uint32_video_codec_bitrate=0,_.uint32_video_enc_fps=0,_.uint32_video_codec_fps=0;return}let M=0,ne=0,F=0;C&&_.uint32_video_codec_bitrate>=C.uint32_video_codec_bitrate&&(M=C.uint32_video_codec_bitrate,ne=C.uint32_video_enc_fps,F=C.uint32_video_codec_fps);let Oe=this.getDifferenceValue(M,_.uint32_video_codec_bitrate);_.uint32_video_codec_bitrate=Math.round(Oe*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_video_codec_bitrate,_.uint32_video_enc_fps=Math.round(this.getDifferenceValue(ne,_.uint32_video_enc_fps)/o),_.uint32_video_codec_fps=Math.round(this.getDifferenceValue(F,_.uint32_video_codec_fps)/o),C.uint32_video_width===0&&C.uint32_video_height===0&&C.uint32_video_codec_fps===0&&(_.uint32_video_codec_fps=_.uint32_video_enc_fps),E(C.uint32_key_frame_count)||(_.uint32_key_frame_count=Math.round(this.getDifferenceValue(C.uint32_key_frame_count,_.uint32_key_frame_count))),E(C.uint32_nack_count)||(_.uint32_nack_count=Math.round(this.getDifferenceValue(C.uint32_nack_count,_.uint32_nack_count))),E(C.uint32_pli_count)||(_.uint32_pli_count=Math.round(this.getDifferenceValue(C.uint32_pli_count,_.uint32_pli_count))),E(C.uint32_video_arq_packets)||(_.uint32_video_arq_packets=Math.round(this.getDifferenceValue(C.uint32_video_arq_packets,_.uint32_video_arq_packets))),E(C.uint32_encode_cost)||(_.uint32_encode_cost=Math.round(this.getDifferenceValue(C.uint32_encode_cost,_.uint32_encode_cost)/o)),E(C.uint32_send_packet_cost)||(_.uint32_send_packet_cost=Math.round(this.getDifferenceValue(C.uint32_send_packet_cost,_.uint32_send_packet_cost)/o))});let h=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(_=>h.find(C=>C.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid));let u=e.msg_down_stream_info;return u.forEach(_=>{let C=h.find(M=>M.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid);if(!oi(_.msg_audio_status)&&!oi(C.msg_audio_status)){let M=_.msg_audio_status,ne=C.msg_audio_status,F=this.getDifferenceValue(ne.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(ne.uint32_audio_cache_ms,M.uint32_audio_cache_ms)/F)||0;let Oe=this.room.remotePublishedUserMap.get(_.msg_user_info.str_identifier);Oe&&(Oe.remoteAudioTrack.stat.jitterBufferDelay=M.uint32_audio_cache_ms),M.uint32_audio_origin_lost=this.getDifferenceValue(ne.uint32_audio_origin_lost,M.uint32_audio_origin_lost),M.uint32_audio_receive=this.getDifferenceValue(ne.uint32_audio_receive,M.uint32_audio_receive),M.uint32_audio_receive+=M.uint32_audio_origin_lost;let U=this.getDifferenceValue(ne.uint32_audio_codec_bitrate,M.uint32_audio_codec_bitrate);M.uint32_audio_codec_bitrate=Math.round(U*8/o),M.uint32_audio_total_bitrate=Math.round(U*8/o)}else _.msg_audio_status={};if(_.msg_video_status&&C.msg_video_status){let M=C.msg_video_status;_.msg_video_status=_.msg_video_status.filter(F=>M.find(Oe=>Oe.uint32_video_stream_type===F.uint32_video_stream_type)),_.msg_video_status.forEach(F=>{let Oe=M.find(Qp=>Qp.uint32_video_stream_type===F.uint32_video_stream_type),U=Oe.uint32_video_receive,Gp=Oe.uint32_video_origin_lost,Wp=Oe.uint32_video_codec_bitrate,Jp=Oe.uint32_video_receive_fps,qp=Oe.uint32_video_dec_fps;F.uint32_video_origin_lost=this.getDifferenceValue(Gp,F.uint32_video_origin_lost),F.uint32_video_receive=this.getDifferenceValue(U,F.uint32_video_receive)+F.uint32_video_origin_lost;let jp=this.getDifferenceValue(Wp,F.uint32_video_codec_bitrate);F.uint32_video_codec_bitrate=Math.round(jp*8/o);let Xp=this.getDifferenceValue(Jp,F.uint32_video_receive_fps);F.uint32_video_receive_fps=Math.round(Xp/o),F.uint32_video_dec_fps=Math.round(this.getDifferenceValue(qp,F.uint32_video_dec_fps)/o);let zp=this.getDifferenceValue(Oe.uint32_video_cache_ms_count,F.uint32_video_cache_ms_count);delete F.uint32_video_cache_ms_count,F.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Oe.uint32_video_cache_ms,F.uint32_video_cache_ms)/zp)||0})}}),(D=n.msg_device_info)!=null&&D.uint32_audio_play_cost?e.msg_device_info.uint32_audio_play_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_play_cost,e.msg_device_info.uint32_audio_play_cost)/o):delete e.msg_device_info.uint32_audio_play_cost,a&&i.receiverStats.forEach(_=>{if(_.audio.concealedSamples&&_.audio.totalSamplesReceived){let C=a.receiverStats.find(M=>M.userId===_.userId);if(C&&C.audio.concealedSamples&&C.audio.totalSamplesReceived){let M=_.audio.concealedSamples-C.audio.concealedSamples,ne=_.audio.totalSamplesReceived-C.audio.totalSamplesReceived,F=Math.floor(M/ne*1e3*o);if(F>o*1e3/5){let Oe=u.find(U=>U.msg_user_info.str_identifier===_.userId);Oe&&(Oe.msg_audio_status.uint32_audio_block_time=F)}}}}),e}getStatsReport(r){return p(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 _p=Be(Qe());function pp(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),l=Math.round(t.requestStart-t.secureConnectionStart),h=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),f=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=w(v({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:c,tcp:h,tls:l,request:u,response:f});break}}catch(e){}return i}function fp(s){return new Promise(i=>p(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=pp(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var FT=700,Fr=class Fr extends _p.default{constructor({signalChannel:e,room:t}){super();d(this,"_room");d(this,"_signalChannel");d(this,"_log");d(this,"uplinkRTT",0);d(this,"uplinkLoss",0);d(this,"downlinkRTT",0);d(this,"downlinkLoss",0);d(this,"pingResults",{});d(this,"_downlinkPrevStatMap",new Map);d(this,"_downlinkLossAndRTTMap",new Map);d(this,"_interval",-1);d(this,"_uplinkNetworkQuality",0);d(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(G.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(ye.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,l;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=(l=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:l.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 p(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)===me.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:l,totalPacketsLost:h,totalPacketsReceived:u}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u});continue}let f=0,g=this._downlinkPrevStatMap.get(c),D=h-g.totalPacketsLost,_=u-g.totalPacketsReceived;D<=0||_<0?f=0:f=Math.round(D/(D+_)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:f,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 p(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Cr())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"&&Q(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===me.DISCONNECTED||e.connectionState===me.FAILED||e.connectionState===me.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=re.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];T.emit(I.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=w(v({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Fr.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-Fr.lastPingTime>t.interval*1e3){Fr.lastPingTime=Date.now();let a=t.domain.map(c=>fp(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>FT),this.pingResults.timestamp=o,this.pingResults.data=c,c.forEach(l=>{N.addSuccessEvent({key:521718,cost:l.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&&(re.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})}})}};d(Fr,"EVENT_NETWORK_QUALITY","0"),d(Fr,"lastPingTime",0);var Us=Fr;function $T({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return ji(t)?t.catch(r=>R.error(`${s.name}() error observed ${r}`)):t}catch(t){R.error(`${s.name}() error observed ${t}`)}}}var dc=class{constructor(i){d(this,"_frameWorkType");d(this,"_component");d(this,"_language");d(this,"connectionType");d(this,"_room");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});d(this,"_keyPrefix");d(this,"_log");d(this,"_intervalId");d(this,"_firstPublishedUserList");d(this,"_networkQuality");d(this,"_basicInfo");d(this,"_pathJoinRoom");d(this,"_pathLeaveRoom");d(this,"_pathMainVideoMap");d(this,"_pathMainAudioMap");d(this,"_pathAuxiliaryMap");d(this,"_remoteStreamStatMap");d(this,"_localStreamStat");d(this,"_eventMap",new Map);d(this,"_captureCostSum",0);d(this,"_captureCostCount",0);d(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")&&se(this[e])&&(this[e]=$T({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:Me,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,fo().then(i=>{this._basicInfo.string_os_version=bi(),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(I.JOIN_START,this.handleJoinStart).addEvent(I.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(I.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(I.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(I.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(I.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(I.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(I.JOIN_FAILED,this.handleJoinFailed).addEvent(I.LEAVE_START,this.handleLeaveStart).addEvent(I.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(I.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(I.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(I.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(I.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(I.PUBLISH_START,this.handlePublishStart).addEvent(I.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(I.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(I.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(I.PLAY_TRACK_START,this.handlePlayStart).addEvent(I.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(I.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===m.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(I.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(I.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(I.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(I.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(I.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("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>T.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),re.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:l}=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=l}}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:w(v({},HT),{msg_user_info:new tn({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 tn({userId:o,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),h=`${o}_${t}`,u=this._remoteStreamStatMap.get(h);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=l),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:l}),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:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:l})}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(!i.isRemote||!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(!i.isRemote||!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(o){let{statsToReport:n}=o;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,N.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}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,l,h,u;o&&(l=o,h=1),n&&(c=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,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/Et*100)>0&&(this._localStreamStat.totalAudioLevel+=o/Et,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=o,l=n.str_identifier,h=this._room.remotePublishedUserMap.get(l);if(c.forEach(u=>{let f=u.uint32_video_stream_type===2,g=u.uint32_video_stream_type===7,D=`${l}_${f?"main":"auxiliary"}`,_=this._remoteStreamStatMap.get(D);if(_&&(f&&(h!=null&&h.remoteVideoTrack.isSubscribed)||g&&(h!=null&&h.remoteAuxiliaryTrack))){_.totalVideoFPS+=u.uint32_video_receive_fps,_.totalVideoBitrate+=u.uint32_video_codec_bitrate,_.videoCount++,_.statsToReport.uint32_video_width===0&&(_.statsToReport.uint32_video_width=u.uint32_video_width),_.statsToReport.uint32_video_height===0&&(_.statsToReport.uint32_video_height=u.uint32_video_height);let C=f?h.remoteVideoTrack:h.remoteAuxiliaryTrack;C.stat.jitterBufferDelay&&(_.videoJitterBufferDelay=C.stat.jitterBufferDelay),C.stat.framesReceived&&(_.statsToReport.uint32_video_consume_render_rate=Math.floor(C.stat.framesDecoded/C.stat.framesReceived*$s(10,6)))}}),!Qr(a)){let u=`${l}_main`,f=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&f&&h!=null&&h.remoteAudioTrack.isSubscribed&&(f.totalAudioBitrate+=a.uint32_audio_codec_bitrate,f.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(f.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Et*100)>0&&(f.totalAudioLevel+=a.uint32_audio_level/Et,f.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&Wi)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Ji)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&lr)>=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:f,videoDelayCount:g,totalAudioDelay:D,totalVideoDelay:_}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(h/u),f&&D&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(D/f),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),g&&_&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(_/g))}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&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,$r));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:l}=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(l,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}),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>$r&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+$r)}),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>$r&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+$r)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>$r&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+$r)}getReportData(){this._basicInfo.uint32_networkType=pr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new tn({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Yr(this._signalInfo.relayIp),uint32_client_ip:Yr(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*$s(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:Yr(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return to(i),i}report(){return p(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 p(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Gc(i),r=t instanceof ArrayBuffer,o=`${Ei(e,Gi.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(N),this.uploadKVStat(Rr)];n||a.push(Ai({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return p(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=w(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 Gc(e),r=`${Ei(+this._room.sdkAppId,Gi.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||Ai({url:r,body:t})})}};b([ot({settings:{timeout:500,retries:3}})],dc.prototype,"upload",1);var $r=5e3,HT={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_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},tn=class{constructor(i){d(this,"str_identifier");d(this,"str_tinyid");d(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},gp=dc;var Tu=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=x())}stop(){this._endTime===0&&(this._endTime=x())}getDuration(){return this._endTime===0?x()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},lc=Tu;var Eu=class{constructor(i){d(this,"_room",null);d(this,"_durationMap");d(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(I.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(I.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(I.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({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,o=new lc,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()}},Tp=Eu;var Su=class{constructor(i){d(this,"_room");d(this,"_renderFreezeMap",new Map);d(this,"_isVideoPlayingEventFiredMap",new Map);d(this,"_dataFreezeMap",new Map);d(this,"_monitorFreezeData",new Map);d(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(I.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(I.PLAY_TRACK_START,this.onPlayTrackStart).set(I.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(I.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(I.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!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(I.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 lc;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>Tn?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 p(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=x();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=x();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==m.VIDEO||!i.isRemotePublished)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()<Tn&&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=x(),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()}},Ep=Su;var Ip=Be(Qe(),1);var GT=[1,0,0,0,1,1,0,1],uc=class extends tt{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof De)try{this.setTexBuffer(GT)}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 Iu=class{constructor(i,e){this.node=i;this.layout=e;d(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}},hc=class extends tt{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});d(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new Iu(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 De&&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(),l=(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:l,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 De))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var WT=`#version 300 es
|
|
101
70
|
in vec2 a_position;
|
|
102
71
|
in vec2 a_texCoord;
|
|
103
72
|
out vec2 v_texCoord;
|
|
104
73
|
void main() {
|
|
105
74
|
gl_Position = vec4(a_position.x, a_position.y, 0, 1);
|
|
106
75
|
v_texCoord = a_texCoord;
|
|
107
|
-
}`,
|
|
76
|
+
}`,JT=`#version 300 es
|
|
108
77
|
precision highp float;
|
|
109
78
|
uniform sampler2D u_texture;
|
|
110
79
|
uniform sampler2D mask;
|
|
@@ -113,7 +82,7 @@ in vec2 v_texCoord;
|
|
|
113
82
|
out vec4 outColor;
|
|
114
83
|
void main() {
|
|
115
84
|
outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
|
|
116
|
-
}`,
|
|
85
|
+
}`,mc=class extends Vi{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:t.width,height:t.height,logger:e.log});d(this,"_bgTexture");d(this,"_waterMarkTexture");d(this,"_lastMaskTexture");d(this,"_lastMaskFbo");d(this,"_textureValid",!1);d(this,"_selfieTextureValid",!1);d(this,"_selfieSegmentation");d(this,"wasm");d(this,"_prePrograme");d(this,"_segmentationMask");d(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){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:o,y:n,width:a,height:c}=e.waterMark;this.wasm.setWaterMark(o,n,a,c)}if(e.beautyParams){let{beauty:o,brightness:n,ruddy:a}=e.beautyParams;this.wasm.setBeauty(o,n,a,e==null?void 0:e.width,e==null?void 0:e.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 o=this.context.createShader(r.FRAGMENT_SHADER,JT),n=this.context.createShader(r.VERTEX_SHADER,WT);this._prePrograme=this.context.createProgram(n,o),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++}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){var c,l,h,u;let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback();let{videoWidth:o,videoHeight:n}=r;if(o===0||n===0||!this.available)return!1;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),(l=this._selfieSegmentation)==null||l.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)),this.wasm.vbMode&&((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 pc=class extends tt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
|
|
117
86
|
precision highp float;
|
|
118
87
|
uniform sampler2D ySampler;
|
|
119
88
|
uniform sampler2D uSampler;
|
|
@@ -138,4 +107,13 @@ void main() {
|
|
|
138
107
|
void main() {
|
|
139
108
|
gl_Position = vertexPos;
|
|
140
109
|
textureCoord = texturePos;
|
|
141
|
-
}`});u(this,"yTextureRef");u(this,"uTextureRef");u(this,"vTextureRef");u(this,"Y");u(this,"U");u(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.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,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var Zo=[i=>{i.codec="avc1.420028"},i=>{delete i.hardwareAcceleration}],Ig=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function oS(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===1}var sS=0,lu=class{constructor(t){u(this,"id",sS++);u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"decoder");u(this,"videoContext");u(this,"gop",0);u(this,"gop_helper",0);u(this,"waitFirstKeyFrame",!0);u(this,"startTimestamp",0);u(this,"startTime",0);u(this,"startPerformanceTime",0);u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"decodeFrameCount",0);u(this,"downgradeLevel",0);u(this,"lastDowngradeTime",0);u(this,"lastFrameDiff",0);u(this,"lastDecodeFrameTimestamp",0);u(this,"config");u(this,"gop_before_configure",[]);u(this,"videoElement");u(this,"type","wasm");u(this,"goodType");u(this,"renderer","2d");u(this,"wasmOption");u(this,"createDecoder");u(this,"_decodeSink");u(this,"isReported",!1);u(this,"track");u(this,"stateChangeOB");u(this,"failedReason");let{track:e,createDecoder:r}=t;if(this.stateChangeOB=It(),this.track=e,this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=be(e.availableState,ne.OFF),this.stopOB=It(),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"}else this.type=t.type;this.changeRenderer(this.renderer),Se(this.stateChangeOB,km((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),Je(this.stopOB),ke()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=Se(this.pipe(this.track),Je(this.stopOB),mi());Se(e,ke(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),Y.addFailedEvent({key:Ig(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(t);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(t+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),Y.addSuccessEvent({key:Ig(this.type,this.renderer)}),Y.addSuccessEvent({key:514704})})),Se(e,Ar(1),ke(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.start()}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!xl()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var d,p;if(this.failedReason)return;this.inputFrameCount++;let r=new Uint8Array(t.data);if(!oS(r)||r.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${r.subarray(0,5)}`),t;let o=r[4]&31,s=!1;switch(o){case 5:case 7:s=!0;break}if(((d=this.decoder)==null?void 0:d.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:t.data,timestamp:t.timestamp,type:t.type}),t;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(m=>this.decode(m,!0)),this.gop_before_configure=[]);let{timestamp:n}=t;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=_e();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${r.subarray(0,5).join(" ")}`);return}switch(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.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(p=t.getMetadata)==null?void 0:p.call(t).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:t.data,type:t.type,timestamp:this.lastDecodeFrameTimestamp});return}return t}checkDowngradeByFrameDiff(){let t=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==t&&this.track.log.debug(`downgrade level ${t} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(t){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-t>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(t){return e=>A(this,null,function*(){this._decodeSink=e;let r,o=t.mediaTrack;e.defer(()=>{var d;o&&(t.player.setCanvas(),t.setInputMediaStreamTrack(o)),r==null||r.close(),(d=this.videoContext)==null||d.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;t.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":r=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let p=0;p<=Zo.length;p++){let{supported:m}=yield VideoDecoder.isConfigSupported(this.config);if(m)break;if(p===Zo.length){e.error(3);return}Zo[p](this.config)}r=this.createDecoder(n);break;default:throw new Error("not supported yet")}let d=0;if(r.on("videoFrame",p=>{this.decodedFrameCount++,d++,(d<=10||d%500===0)&&t.log.debug(`frame ${d} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${p.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(p.timestamp)),e.next(p)}),r.on("error",p=>{t.log.error(p),e.error(n==="webCodecs"?4:8)}),yield r.initialize(this.videoElement),!this._decodeSink)return;if(r.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new Et({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(Et.UNAVAILABLE,m=>{t.log.error(m),e.error(7)});let p=new uu(this.videoContext);r.on("videoCodecInfo",m=>p.resize(m.width,m.height)),r.on("videoFrame",m=>{({y:p.Y,u:p.U,v:p.V}=m),this.downgradeLevel===1?this.decodedFrameCount%2===0&&p.render(this.decodedFrameCount):p.render(this.decodedFrameCount)}),t.source=p,t.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){t.player.setCanvas();let p=new MediaStreamTrackGenerator({kind:"video"}),m=p.writable.getWriter();t.setInputMediaStreamTrack(p),r.on("videoFrame",g=>m.write(g))}else{this.videoContext=new kt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let p=this.videoContext.createVideoImageSource();r.on("videoFrame",g=>{try{p.image=g,p.update()}catch(I){delete this.goodType,t.log.error(I),e.error(11)}});let m=new qo(this.videoContext,{name:"remotePlayer",logger:t.log});p.connect(m),t.source=p,t.player.setCanvas(this.videoContext._canvas,2)}this.decoder=r}catch(d){t.log.error(d),e.error(n==="webCodecs"?2:6)}})}};var Ua=class extends Sg.EventEmitter{constructor(e){super();this.room=e;u(this,"videoContext");u(this,"_glVideoContext");u(this,"_2dVideoContext");u(this,"destination");u(this,"smallVideoContext");u(this,"smallDestination");u(this,"smallTrackSource");u(this,"smallImageSource");u(this,"_isMirror",!1);u(this,"cameraTrack");u(this,"cameraNode");u(this,"mirrorNode");u(this,"mixNode");u(this,"screenTrack");u(this,"screenNode");u(this,"selfModel",!1);u(this,"blurRadius",3);u(this,"arTrack");u(this,"Wasm");u(this,"waterMarkNode");u(this,"_waterMarkOption");u(this,"watermarkImageList",[]);u(this,"_beautyParams");u(this,"isUsingArTrack",!1);u(this,"_isMixScreen",!1);u(this,"_virtualBackground");u(this,"_virtualBackgroundAbortCallback");u(this,"virtualBackgroundInstance");u(this,"_bgAssetPath");u(this,"log",$.createLogger({id:"vm"}));u(this,"_checkId",0);u(this,"_use2d",!1);u(this,"_autoSwitchRenderMode",!0);u(this,"_selfieSegmentation");u(this,"encodePipeline",[]);u(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new kt({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 r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new kt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new Et({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(Et.UNAVAILABLE,e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=At.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),At.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Vi||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?Y.addFailedEvent({key:o,error:r}):Y.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new Et({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()}setSmallVideo(e,r){if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new Pd(this.smallVideoContext,e,this.log),this.smallVideoContext.on(Et.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,r?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=r:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(r),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.connect(this.smallDestination)))}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,player:n}=o;this.setSmallVideo(s,e),Vi&&n.setCanvas(e);let d=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),d=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${d?d.label:"no output track"}`),o.setOutputMediaStreamTrack(d)}catch(o){this.log.error("set main output failed",o)}}update(){return A(this,null,function*(){var o,s;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Yt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof hi?(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 hi?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 xd(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new du(this.videoContext,{input:this.cameraTrack.mediaTrack,width:e.width,height:e.height,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=r.frameRate,this._use2d){let n=this.cameraNode;n.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new au(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 cu(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),(o=this.waterMarkNode)==null||o.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(s=this.screenNode)==null||s.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 r,o,s,n;if(e instanceof qi)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof Sr)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof Qi){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let d=e.mediaTrack;return e.setOutputMediaStreamTrack(d)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var r;e instanceof qi?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Sr?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof Qi&&e.source&&e.source.context.destroy()}setCameraTrack(e){return A(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,r){return A(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new he({code:te.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,d)=>n.zIndex-d.zIndex),this.watermarkImageList.forEach(({image:n,x:d,y:p,width:m,height:g})=>{s.drawImage(n,d,p,m,g)}),Ss(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return A(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return A(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return A(this,null,function*(){var I,S;let r;try{r=yield Ss((e==null?void 0:e.imageElement)||e.imageUrl)}catch(N){throw new he({code:te.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:n=r.width,height:d=r.height,type:p="watermark",zIndex:m=2}=e;this.watermarkImageList.some(N=>N.type===p)?(this.watermarkImageList=this.watermarkImageList.filter(N=>N.type!==p),this.pushWaterMarkImageList({x:o,y:s,width:n,height:d,image:r,zIndex:m,type:p,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage((I=this.cameraTrack)==null?void 0:I.settings.width,(S=this.cameraTrack)==null?void 0:S.settings.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:n,height:d,image:r,zIndex:m,type:p,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(N,k)=>N==="imageUrl"?void 0:k))})}deleteWatermark(e="watermark"){return A(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return A(this,null,function*(){var r,o,s;(r=this.waterMarkNode)==null||r.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((o=this.cameraTrack)==null?void 0:o.settings.width,(s=this.cameraTrack)==null?void 0:s.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return A(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 Ss(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 he({code:te.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((r=this.mirrorNode)==null||r.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return A(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()}createDecodeContext(e){return new lu(e)}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:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};X([df(function(e){this.log.error("update failed",e)})],Ua.prototype,"update",1);var nS=0;var mu=class extends ne{constructor(e){super("room");u(this,"seq",++nS);u(this,"sdkAppId");u(this,"userId");u(this,"userSig");u(this,"privateMapKey");u(this,"latencyLevel");u(this,"tinyId");u(this,"scene");u(this,"roomId");u(this,"useStringRoomId");u(this,"role","anchor");u(this,"joinParams",null);u(this,"localTracks",new Set);u(this,"enableAutoPlayDialog",!0);u(this,"autoReceiveAudio",!0);u(this,"autoReceiveVideo",!0);u(this,"proxy_ws");u(this,"proxy_wt");u(this,"proxy_unified");u(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}});u(this,"keyPointManager");u(this,"audioManager");u(this,"videoManager");u(this,"callDurationCalculator");u(this,"badCaseDetector");u(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});u(this,"videoDecodeFallbackType");u(this,"_isUsingCachedSchedule",!1);u(this,"_log",$.createLogger({id:`r${this.seq}`}));u(this,"_joinedTimestamp",0);u(this,"_sdkType");u(this,"heartbeatReport");u(this,"quality");u(this,"enableSEI");u(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,nt(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),nt(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),nt(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Eg({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new _g({room:this}),this.badCaseDetector=new Tg({room:this}),this.audioManager=new _d(this),this.videoManager=new Ua(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 A(this,null,function*(){return this.publish(e)})}removeTrack(e){return A(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return A(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(we(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Gt(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:n,unifiedProxy:d}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=d,d?(jd([d,d]),Io(`https://${d}`)):(s&&Io(s),n&&jd(n))}H.once(L.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:io.main,sched_back_domain:io.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return A(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return A(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return A(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new he({code:te.INVALID_OPERATION,message:dt({key:ct.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(qt.INVALID_DESTROY),new he({code:te.INVALID_OPERATION,message:dt({key:ct.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,H.emit(L.ROOM_DESTROY,{room:this})}schedule(e,r){return A(this,null,function*(){var s,n,d;let o=_e();try{let{isCached:p,result:m,detailCost:g}=yield Qm({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:rt,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=p,this._log.info(`schedule cache:${+p} ${ir(m,{keysToExclude:["username","credential"]})}`),p&&H.once(L.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=ee(ee({},this.scheduleResult),m),je((s=m.config)==null?void 0:s.retryCount)&&$u(m.config.retryCount),we((n=m.config)==null?void 0:n.loggerDomain)&&Io(m.config.loggerDomain),this.videoDecodeFallbackType=((d=m.config)==null?void 0:d.videoDecodeFallback)||this.videoDecodeFallbackType,H.emit(L.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:g}),Y.addSuccessEvent({key:521700,cost:_e()-o,split:50})}catch(p){throw Y.addFailedEvent({key:521700,error:p}),p}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};function yg(i,t=!1){let e=Object.defineProperties(It(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=Fe,i.onmessageerror=Fe,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var hp=class extends de{constructor(t,e){super(t);let r=new de(t);r.next=Fe,e(r)}},z2=pe(hp,"takeUntilComplete");var Dt={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},Ag="__INLINE__WORKER__",bg="__INLINE__WASM__",{debug:Rg}=console;Dt.debug||(console.debug=()=>{});var aS=!Ag.startsWith("__"),cS=!bg.startsWith("__");function pu(){let i=Ro(`${Dt.assetsPath?`${Dt.assetsPath}/`:""}worker.js`);return aS?URL.createObjectURL(new Blob([atob(Ag)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var Va;function hu(){return A(this,null,function*(){let i=Dt.assetsPath?`${Dt.assetsPath}/`:"";return Va||(cS?Va=new TextEncoder().encode(atob(bg)).buffer:Va=yield fetch(Ro(`${i}av_processing.wasm`)).then(t=>t.arrayBuffer()),Va)})}var fp=class{constructor(){u(this,"playPort");u(this,"playPortSent",!1);u(this,"worklet");u(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return A(this,null,function*(){let t=et("player"),e=pu();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),$.info("global audio player worklet addModule success",e)}catch(r){throw $.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield hu(),flag:Dt},numberOfInputs:2}),$.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return A(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},fu=new fp;var gp=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),r1=gp?Promise.resolve().then(function(){return mS}):Promise.resolve().then(function(){return _S});var i1=gp?Promise.resolve().then(function(){return hS}):Promise.resolve().then(function(){return IS});var dS=gp?Promise.resolve().then(function(){return gS}):Promise.resolve().then(function(){return yS});function Ep(...i){return A(this,null,function*(){return(yield dS).default(...i)})}var uS=i=>A(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),lS=(...t)=>A(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,n)=>{e[n]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(d=>{e[n].accept[d]=s.extensions||[]}):e[n].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(uS));return i[0].multiple?o:o[0]}),mS={__proto__:null,default:lS};function gu(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return gu=function(e){this.s=e,this.n=e.next},gu.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new gu(i)}var vg=(o,s,...n)=>A(void 0,[o,s,...n],function*(i,t,e=i.name,r){let d=[],p=[];var m,g=!1,I=!1;try{for(var S,N=function(k){var P,x,J,Q=2;for(typeof Symbol!="undefined"&&(x=Symbol.asyncIterator,J=Symbol.iterator);Q--;){if(x&&(P=k[x])!=null)return P.call(k);if(J&&(P=k[J])!=null)return new gu(P.call(k));x="@@asyncIterator",J="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());g=!(S=yield N.next()).done;g=!1){let k=S.value,P=`${e}/${k.name}`;k.kind==="file"?p.push(k.getFile().then(x=>(x.directoryHandle=i,x.handle=k,Object.defineProperty(x,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>P})))):k.kind!=="directory"||!t||r&&r(k)||d.push(vg(k,t,P,r))}}catch(k){I=!0,m=k}finally{try{g&&N.return!=null&&(yield N.return())}finally{if(I)throw m}}return[...(yield Promise.all(d)).flat(),...yield Promise.all(p)]}),pS=(...t)=>A(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return vg(e,i.recursive,void 0,i.skipDirectory)}),hS={__proto__:null,default:pS},fS=(s,...n)=>A(void 0,[s,...n],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let d=[],p=null;if(i instanceof Blob&&i.type?p=i.type:i.headers&&i.headers.get("content-type")&&(p=i.headers.get("content-type")),t.forEach((I,S)=>{d[S]={description:I.description||"Files",accept:{}},I.mimeTypes?(S===0&&p&&I.mimeTypes.push(p),I.mimeTypes.map(N=>{d[S].accept[N]=I.extensions||[]})):p?d[S].accept[p]=I.extensions||[]:d[S].accept["*/*"]=I.extensions||[]}),e)try{yield e.getFile()}catch(I){if(e=null,r)throw I}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:d,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let g=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(g),m):"body"in i?(yield i.body.pipeTo(g),m):(yield g.write(yield i),yield g.close(),m)}),gS={__proto__:null,default:fS},ES=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=m=>{typeof d=="function"&&d(),e(m)},d=i[0].legacySetup&&i[0].legacySetup(n,()=>d(r),o),p=()=>{window.removeEventListener("focus",p),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",p)}),o.addEventListener("change",()=>{window.removeEventListener("focus",p),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),_S={__proto__:null,default:ES},TS=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=d=>{typeof n=="function"&&n(),e(d)},n=i[0].legacySetup&&i[0].legacySetup(s,()=>n(r),o);o.addEventListener("change",()=>{let d=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(d=d.filter(p=>p.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):d=d.filter(p=>p.webkitRelativePath.split("/").length===2),s(d)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),IS={__proto__:null,default:TS},SS=(e,...r)=>A(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(p,m){return A(this,null,function*(){let g=p.getReader(),I=new ReadableStream({start:k=>function P(){return A(this,null,function*(){return g.read().then(({done:x,value:J})=>{if(!x)return k.enqueue(J),P();k.close()})})}()}),S=new Response(I),N=yield S.blob();return g.releaseLock(),new Blob([N],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let n=()=>{typeof d=="function"&&d()},d=t.legacySetup&&t.legacySetup(n,()=>d(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),n()}),o.click(),null}),yS={__proto__:null,default:SS};var _p=class{constructor(t){this.name=t;u(this,"ready");u(this,"worker");u(this,"ports");u(this,"ids",1);u(this,"transactions",new Map);u(this,"log");u(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){return A(this,null,function*(){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=pu(),r=new Worker(typeof e=="string"?e:yield e,{name:t});return this.worker=r,this.ready=new Promise((o,s)=>A(this,null,function*(){r.onmessage=({data:{id:n,type:d,payload:p}})=>{var m;if(n)(m=this.transactions.get(n))==null||m(p),this.transactions.delete(n);else switch(d){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",p),s(p);break;case"ready":console.timeEnd(`createWorker_${t}`),o(this);break;case"updateAFSM":if(p.value){let g=typeof p.old=="string"?p.old:`${p.old.action}ing`,I=typeof p.value=="string"?p.value:`${p.value.action}ing`;console.log(Tc(),p.group,p.name,g,"\u{1F449}",I)}break;case"log":console.log(p);break;case"glog":window.dispatchEvent(new CustomEvent(d,{detail:p}));break}},r.postMessage({wasm:yield hu(),flag:Dt},this.ports)}))})}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Tp=class{constructor(t,e,r){this.worker=t;u(this,"channel",new MessageChannel);u(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},Ip=class i extends _p{constructor(){super("main");u(this,"switchValue",new Map);u(this,"extendChannel");u(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return A(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Ft(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},oo=new Ip,Ko,AS=-1;function Cg(i){return console.log(i),Ko.push(i.slice()),Ko.length>1e3&&Ko.shift(),i}function Dg(i){return A(this,null,function*(){switch(AS){case 0:this.edpl.willDecodeAudio=Cg;break;case 2:this.edpl.didEncodeAudio=Cg;break}yield oo.create(),H.emit(L.JOIN_SEND_CMD,{room:this});let t=new Tp(oo,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:n,payload:d}=s;this.onWorkerEvent(n,d)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(H.emit(L.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new he({code:te.JOIN_ROOM_FAILED,extraCode:Number(e),message:dt({key:ct.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:Sp},useWt:{set:bS},enableDebug:{set(i){console.debug=i?Rg:()=>{},oo.setSwitchValue("enableDebug",i)}},useV2:{set:yp},dump:{value(){if(Ko||(console.warn("dump audio will be activated at next time join room"),Ko=[]),!Ko.length){console.warn("no audio data to dump,try it later");return}let i=[];return Ko.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),Ep(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;oo.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:n})=>{console.log(n),e.push(n),e.length>t&&(s.port2.onmessage=null,oo.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return Ep(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:Dt.useHardDecoder="prefer-hardware";break;case!1:Dt.useHardDecoder="prefer-software";break;default:Dt.useHardDecoder="no-preference"}}}});function Sp(i){return A(this,null,function*(){oo.setSwitchValue("useAINS",i)})}function yp(i){return A(this,null,function*(){oo.setSwitchValue("useV2",i)})}function bS(i){return A(this,null,function*(){oo.setSwitchValue("useWt",i)})}function Ng(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function wg(i){return A(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),Se(yg(r.port2),Je(be(i,ne.INIT)),ke(s=>{let{data:n,packetsReceived:d}=s;i.stat.packetsReceived=d,i.stat.framesReceived++,e++;let p=n[4]&31;if(e<=10){let g=Array.from(n.slice(0,10)).map(I=>I.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${p}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${g}`)}let m;switch(p){case 5:case 7:m="key";break;default:m="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:m,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var Eu=[];function Og(i){var p;let t=It();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=Eu.length;m++)if(!Eu[m]){Eu[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(p=this.session)==null||p.postMessage({cmd:"pushAudio",payload:ee({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(Ee(ee({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,n,d=m=>{let g=s.getAudioTracks()[0];g&&(n.disconnect(),s.removeTrack(g)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),n=et("player").createMediaStreamSource(s),n.connect(fu.worklet,0,this.index)};Se(be(i,"output-media-track-changed"),Je(be(i,"capture")),ke(d,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),Eu[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),Se(t,ba(m=>i.volume=m),pi(Od(1e3)),ke(()=>{i.volume=0})),d(i.outMediaTrack)}var U1=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Ap=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;u(this,"track");u(this,"label");u(this,"insertKeyFrame",!0);u(this,"encoder");u(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){return A(this,null,function*(){let o=yield this.recreate(r);e.signal.addEventListener("abort",()=>{o.close()});let s=0;return t.pipeThrough(new TransformStream({transform:(n,d)=>{o.state==="configured"&&(this.tsMap.set(s,Date.now()),this.encode(n),s++,d.enqueue(n))}}),e)})}encode(t){this.encoder.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){return A(this,null,function*(){let o=yield this.recreate(r),s=0;t.pipeTo(new WritableStream({write:n=>{o.state==="configured"&&(s<10&&this.localTrack.log.info(`capture ${this.label} track frame:`,s,Date.now(),n.timestamp,n.displayWidth,n.displayHeight),(n.displayWidth!==this.config.width||n.displayHeight!==this.config.height)&&(this.localTrack.log.info("resize video track frame:",n.displayWidth,n.displayHeight,this.config.width,this.config.height),this.configure({width:n.displayWidth,height:n.displayHeight})),this.tsMap.set(s,Date.now()),this.encode(n),s<10&&this.localTrack.log.info(`encode ${this.label} track frame:`,s),s++,n.close())}}),e).catch(n=>{this.localTrack.log.warn(n),o.close()})})}recreate(t,e=0){return A(this,null,function*(){let r=0,o=new VideoEncoder({output:s=>{let n=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e===0&&H.emit(L.SEND_FIRST_VIDEO_FRAME,{room:t}),this.localTrack.log.info(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,this.track.enabled===!1)return;let d=null;if(this.localTrack.enableEncodeFrame){d=new Uint8Array(s.byteLength),s.copyTo(d);let p=this.localTrack.encodeFrame({data:d.buffer},this.type===3);d=new Uint8Array(p.data)}d?(this.localTrack.stat.bytesSent+=d.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:d,duration:s.duration},timestamp:n},[d.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:n}))},error:s=>{this.localTrack.log.warn(s,this.config),setTimeout(()=>this.recreate(t,e+1),100)}});return this.encoder=o,yield this.configure({}),o})}configure(t){return A(this,null,function*(){var e;Object.assign(this.config,t);for(let r=0;r<=Zo.length;r++){let{supported:o}=yield VideoDecoder.isConfigSupported(this.config);if(o)break;if(r===Zo.length)return;Zo[r](this.config)}(e=this.encoder)==null||e.configure(this.config)})}close(){this.port.postMessage(null),this.port.close()}};function _u(i,t){return A(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.640028",latencyMode:"realtime",avc:{format:"annexb"},hardwareAcceleration:Dt.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let n=new Ap(i,t.type,o,s.port2);return s.port2.onmessage=d=>{if(d.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:p}=d.data;wn({configureBr:[d.data.bitrate,p]}),n.configure({bitrate:p})}},this._log.info("start push",r,t),n})}function xg(i){return A(this,null,function*(){var g;let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera",crypto:!!((g=i.manager)!=null&&g.encodePipeline[0])};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:n}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=n;let d=yield _u.call(this,i,r);this._log.info("VideoEncoder created",r);let p,m=I=>A(this,null,function*(){if(p==null||p.abort("track changed"),!I)return;p=new AbortController;let{width:S,height:N,displaySurface:k}=I.getSettings();S&&(d.config.width=S),N&&(d.config.height=N);let P=Xt.match(/Chrome\/(\d+)/);(P==null?void 0:P[1])==="114"&&k==="browser"&&delete d.config.hardwareAcceleration,this._log.info("push",e,"track:",I.readyState,I.getSettings());let x;if(typeof MediaStreamTrackProcessor!="undefined")x=new MediaStreamTrackProcessor({track:I}).readable;else{let Q;x=new ReadableStream({pull(De){return A(this,null,function*(){if(ci())return new Promise(Re=>{var le;(le=i.player.element)==null||le.requestVideoFrameCallback((xe,Le)=>{let ao=new VideoFrame(i.player.element);De.enqueue(ao),Re()})})})}})}let J="small"in i&&i.small;return J?(this.smallEncoder||(this.smallEncoder=yield _u.call(this,i,{profile:J,type:3,trackType:o})),this.smallEncoder.track=I,this.smallEncoder.label="small",x=yield this.smallEncoder.trans(x,p,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),d.track=I,d.label=e,d.start(x,p,this)});return Se(be(i,"output-media-track-changed"),Je(be(i,"capture")),ke(m,console.error,()=>{var I;this._log.info("stop push",e,r),p.abort("unpublish"),d.close(),(I=this.smallEncoder)==null||I.close()})),m(i.outMediaTrack)})}var so=class so extends ne{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;u(this,"enableInBackground",!1);u(this,"interval",400);e.on("joined",()=>{this.emit(so.INTERVALCHANGED,this.interval)}),Se(be(this,so.INTERVALCHANGED),Xi(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):Se(Nf(s),zi(()=>[]))),ke(s=>{s.forEach(n=>{this.room.remotePublishedUserMap.has(n.userId)&&(this.room.remotePublishedUserMap.get(n.userId).remoteAudioTrack.volume=n.volume)}),(!document.hidden||this.enableInBackground)&&this.state==ne.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(so.INTERVALCHANGED,this.interval)}stop(){}};u(so,"INTERVALCHANGED","intervalChanged"),X([qe([ne.INIT,ne.OFF],ne.ON)],so.prototype,"start",1),X([qe([],ne.OFF)],so.prototype,"stop",1);var Tu=so;var no=class no extends mu{constructor(e){super(e);u(this,"index",0);u(this,"session");u(this,"tinyid");u(this,"roomid");u(this,"openid");u(this,"socketid");u(this,"relayip");u(this,"clientip");u(this,"remotePublishedUserMap",new Map);u(this,"bussinessInfo");u(this,"token");u(this,"audioVolumeEvalution",new Tu(this));u(this,"enableAIVoice",Sp);u(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:cl(),uint32_device_type:0,str_os_verion:dl(),uint32_link_type:1,str_client_version:rt,uint32_net_type:So[Lr.getNetworkType()],ua:navigator.userAgent,version:""}});u(this,"joinAbortController",new AbortController);u(this,"smallAbortCtrl");u(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,yp(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return A(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let n=new MessageChannel;this.postMessage({cmd:e,payload:r},[n.port1]),n.port2.onmessageerror=s,n.port2.onmessage=d=>{n.port2.close(),o(d.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var n;let s=new MessageChannel;s.port2.onmessage=d=>{d.data?o.next(d.data):o.complete()},s.port2.onmessageerror=d=>o.error(d),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(n=this.session)==null||n.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return A(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return A(this,null,function*(){var p,m,g;let s=Lr.getEnv(),n=Zc(),d={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(p=this.proxy_wt)==null?void 0:p.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(g=this.scheduleResult.iceServers)!=null&&g.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:Os(),browserInfo:Zc(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:rt,browserVersion:n.browserName+n.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield Dg.call(this,d),console.log(this),fu.playAudio(I=>this.postMessage({cmd:"setAudioWorkletPort"},[I])),this.checkDestroy()})}leave(){return A(this,null,function*(){this.remotePublishedUserMap.forEach(e=>{e.remoteAudioTrack.close(),e.remoteAuxiliaryTrack.close(),e.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((e,r)=>r.unpublish())})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return A(this,null,function*(){let e=Je(be(this,"left"));Se(r=>A(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,ke(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.data.buffer}});o.postMessage(Ee(ee({},r),{data:new Uint8Array(s.data)}),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case L.RECEIVED_PUBLISHED_USER_LIST:H.emit(e,ee({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new ou(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let I=r,S=this.remotePublishedUserMap.get(I);S&&(S.remoteVideoTrack.close(),S.remoteAuxiliaryTrack.close(),S.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(I),this.emit("remote-unpublished",S))}return;case"banned":switch(r){case 8:this.emit("banned",{reason:"kick",message:""});return;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});return;case 7:case 5:this.emit("banned",{reason:"room_disband",message:""});return}break;case"6":{let{prevMuteState:I,muteState:S,flag:N}=r,k=this.remotePublishedUserMap.get(S.userId);if(!k){this.emit("remote-publish-state-changed",r);return}k.flag=N}H.emit(L.REMOTE_PUBLISH_STATE_CHANGED,ee({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=ee({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:d,downlinkInfo:p,msg_down_stream_info:m}=r,g={str_sdk_version:rt,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:So[Nn()]},msg_event_msg:wf(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:d,msg_down_stream_info:m};H.emit(L.HEARTBEAT_REPORT,{room:this,report:g}),this.emit("heartbeat-report",g),H.emit(L.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:p}),delete r.downlinkInfo;break;case"signal-connection-state-changed":H.emit(L.SIGNAL_CONNECTION_STATE_CHANGED,ee({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return A(this,null,function*(){let r=e.reduce((d,p)=>p.mediaType|d,0),o=this.sendMessage("publish",r).then(d=>d.err!==0?Promise.reject(d.err):d),s=0,n=d=>A(this,null,function*(){switch(yield o,d.muted&&(s|=d.mediaType),xt(d,d).add("mute",()=>{this.postMessage("mute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),d.mediaType){case 1:Og.call(this,d);break;default:yield xg.call(this,d)}});yield Promise.all(e.map(n)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return A(this,null,function*(){e.forEach(mt)})}subscribe(...e){return A(this,null,function*(){let r=e.reduce((I,S)=>S.mediaType|I,0),{userId:o,tinyId:s,streamType:n}=e[0],d=this.remotePublishedUserMap.get(o),p=ee({},d.subscribeState),m=Object.assign(new Zn,p);m.mediaType|=r,H.emit(L.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:d,subscribeState:m});let g=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(I=>m.mediaType&I).map(I=>({mediaType:I,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",g),yield Promise.all(e.filter(I=>!I.isSubscribed).map(I=>{switch(I.mediaType){case 1:return Ng.call(this,I);default:return wg.call(this,I)}})),H.emit(L.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:d})})}unsubscribe(...e){return A(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType;if(e.length){let{userId:o,streamType:s,tinyId:n}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:n,userId:o});for(let d of e)d.unsubscribe();H.emit(L.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return A(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield _u.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId),s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let n={srctinyid:r.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(d=>s&d).map(d=>({mediaType:d,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=n.mediaType,this.postMessage("changetype",n)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};X([ji(no.prototype.afterJoin),qe(["left",ne.INIT],"joined"),mg()],no.prototype,"join",1),X([qe("joined","left",{ignoreError:!0}),pg()],no.prototype,"leave",1),X([fd((...e)=>0),hg()],no.prototype,"publish",1),X([fd((...e)=>0),fg()],no.prototype,"unpublish",1),X([fd((...e)=>e[0].userId),gg()],no.prototype,"subscribe",1);var Iu=no;tn.frameWorkType=37;tn.create=function(i){let t=tn._create.call(this,Iu,i);return t._use(Gm,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(Dt.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",rt,"created",Dt),t};Object.assign(tn.prototype,{_setCurrentSpeaker(i){let t=et("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return A(this,null,function*(){return this.startPlugin(Gm.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{Se(be(i,"decode-downgrade-state-changed"),yr(o=>o.state==="STARTED"),Ar(1),Fm(1e4),Je(be(i,ne.INIT)),ke(e,r))})})}});var c$=tn;export{c$ as default};
|
|
110
|
+
}`});d(this,"yTextureRef");d(this,"uTextureRef");d(this,"vTextureRef");d(this,"Y");d(this,"U");d(this,"V");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 r=this.context.ctx,o=r.createTexture();return r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_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.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),o}render(e){let t=this.context.ctx,r=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,r,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,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,r/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,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var Au=[s=>{s.codec="avc1.420028"},s=>{delete s.hardwareAcceleration}],Sp=(s,i)=>{switch(s){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function qT(s){return s[0]===0&&s[1]===0&&s[2]===0&&s[3]===1}var jT=0,fc=class{constructor(i){d(this,"id",jT++);d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"decoder");d(this,"videoContext");d(this,"gop",0);d(this,"gop_helper",0);d(this,"waitFirstKeyFrame",!0);d(this,"startTimestamp",0);d(this,"startTime",0);d(this,"startPerformanceTime",0);d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"decodeFrameCount",0);d(this,"downgradeLevel",0);d(this,"lastDowngradeTime",0);d(this,"lastFrameDiff",0);d(this,"lastDecodeFrameTimestamp",0);d(this,"config");d(this,"gop_before_configure",[]);d(this,"videoElement");d(this,"type","wasm");d(this,"goodType");d(this,"renderer","2d");d(this,"wasmOption");d(this,"createDecoder");d(this,"_decodeSink");d(this,"isReported",!1);d(this,"track");d(this,"stateChangeOB");d(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=et(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=ue(e.availableState,H.OFF),this.stopOB=et(),i.type==="auto"){switch(i.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"}else this.type=i.type;this.changeRenderer(this.renderer),de(this.stateChangeOB,kl((r,o)=>(r!==o&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:o}),o),"INITIALIZED"),xe(this.stopOB),Ce()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=de(this.pipe(this.track),xe(this.stopOB),xi());de(e,Ce(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),N.addFailedEvent({key:Sp(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),N.addSuccessEvent({key:Sp(this.type,this.renderer)}),N.addSuccessEvent({key:514704})})),de(e,Ui(1),Ce(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!Dd()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,c;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!qT(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,o=!1;switch(r){case 5:case 7:o=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),o&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(l=>this.decode(l,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(o?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(o)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=x();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(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.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(c=i.getMetadata)==null?void 0:c.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>p(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:o,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let c=0;c<=Au.length;c++){let{supported:l}=yield VideoDecoder.isConfigSupported(this.config);if(l)break;if(c===Au.length){e.error(3);return}Au[c](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",c=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${c.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(c.timestamp)),e.next(c)}),t.on("error",c=>{i.log.error(c),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&o==="webgl"){this.videoContext=new De({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(De.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new pc(this.videoContext);t.on("videoCodecInfo",l=>c.resize(l.width,l.height)),t.on("videoFrame",l=>{({y:c.Y,u:c.U,v:c.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&c.render(this.decodedFrameCount):c.render(this.decodedFrameCount)}),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}else if(o==="videoFrame"){i.player.setCanvas();let c=new MediaStreamTrackGenerator({kind:"video"}),l=c.writable.getWriter();i.setInputMediaStreamTrack(c),t.on("videoFrame",h=>l.write(h))}else{this.videoContext=new qe({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let c=this.videoContext.createVideoImageSource();t.on("videoFrame",h=>{try{c.image=h,c.update()}catch(u){delete this.goodType,i.log.error(u),e.error(11)}});let l=new wr(this.videoContext,{name:"remotePlayer",logger:i.log});c.connect(l),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var rn=class extends Ip.EventEmitter{constructor(e){super();this.room=e;d(this,"videoContext");d(this,"_glVideoContext");d(this,"_2dVideoContext");d(this,"destination");d(this,"smallVideoContext");d(this,"smallDestination");d(this,"smallTrackSource");d(this,"smallImageSource");d(this,"_isMirror",!1);d(this,"cameraTrack");d(this,"cameraNode");d(this,"mirrorNode");d(this,"mixNode");d(this,"screenTrack");d(this,"screenNode");d(this,"selfModel",!1);d(this,"blurRadius",3);d(this,"arTrack");d(this,"Wasm");d(this,"waterMarkNode");d(this,"_waterMarkOption");d(this,"watermarkImageList",[]);d(this,"_beautyParams");d(this,"isUsingArTrack",!1);d(this,"_isMixScreen",!1);d(this,"_virtualBackground");d(this,"_virtualBackgroundAbortCallback");d(this,"virtualBackgroundInstance");d(this,"_bgAssetPath");d(this,"log",R.createLogger({id:"vm"}));d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"_selfieSegmentation");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new qe({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 qe({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new De({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(De.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(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=re.run("interval",()=>{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(),re.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(zi||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 De({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()}setSmallVideo(e,t){if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new Fa(this.smallVideoContext,e,this.log),this.smallVideoContext.on(De.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:o}=this.cameraTrack.settings;this.smallTrackSource.resize(r,o),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,player:n}=r;this.setSmallVideo(o,e),zi&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${a?a.label:"no output track"}`),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return p(this,null,function*(){var o,n,a;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),ut===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Vi?(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 Vi?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(t.width,t.height)):e&&this.cameraNode&&this.destination?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Ba(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new mc(this.videoContext,{input:this.initialTrack,width:t.width,height:t.height,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=r.frameRate,this._use2d){let c=this.cameraNode;c.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new uc(this.videoContext,this.log)),c=c.connect(this.mirrorNode),c.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new hc(this.videoContext,this.log),c.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):(o=this.waterMarkNode)==null||o.resize(t.width,t.height),(n=this.waterMarkNode)==null||n.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(a=this.screenNode)==null||a.connect(this.mixNode,{zIndex:0}),c=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),c.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 ct)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Je)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof ui){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 ct?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Je?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof ui&&e.source&&e.source.context.destroy()}setCameraTrack(e){return p(this,null,function*(){this.cameraTrack=e,this.update(!0)})}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 p(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:l,height:h})=>{o.drawImage(n,a,c,l,h)}),Zr(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 p(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return p(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return p(this,null,function*(){var u,f;let t;try{t=yield Zr((e==null?void 0:e.imageElement)||e.imageUrl)}catch(g){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:l=2}=e;this.watermarkImageList.some(g=>g.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(g=>g.type!==c),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((u=this.cameraTrack)==null?void 0:u.settings.width,(f=this.cameraTrack)==null?void 0:f.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:l,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(g,D)=>g==="imageUrl"?void 0:D))})}deleteWatermark(e="watermark"){return p(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 p(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 p(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 Zr(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 p(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()}createDecodeContext(e){return new fc(e)}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}};b([Ea(function(e){this.log.error("update failed",e)})],rn.prototype,"update",1);var XT=0;var _c=class extends H{constructor(e){super("room");d(this,"seq",++XT);d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"privateMapKey");d(this,"latencyLevel");d(this,"tinyId");d(this,"scene");d(this,"roomId");d(this,"useStringRoomId");d(this,"role","anchor");d(this,"joinParams",null);d(this,"localTracks",new Set);d(this,"enableAutoPlayDialog",!0);d(this,"autoReceiveAudio",!0);d(this,"autoReceiveVideo",!0);d(this,"proxy_ws");d(this,"proxy_wt");d(this,"proxy_unified");d(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}});d(this,"keyPointManager");d(this,"audioManager");d(this,"videoManager");d(this,"callDurationCalculator");d(this,"badCaseDetector");d(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});d(this,"videoDecodeFallbackType");d(this,"_isUsingCachedSchedule",!1);d(this,"_log",R.createLogger({id:`r${this.seq}`}));d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,ge(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),ge(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),ge(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new gp({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Tp({room:this}),this.badCaseDetector=new Ep({room:this}),this.audioManager=new Ca(this),this.videoManager=new rn(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 p(this,null,function*(){return this.publish(e)})}removeTrack(e){return p(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return p(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(K(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(He(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?(qa([a,a]),dr(`https://${a}`)):(o&&dr(o),n&&qa(n))}T.once(I.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:ar.main,sched_back_domain:ar.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return p(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return p(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 p(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:L({key:k.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(we.INVALID_DESTROY),new y({code:S.INVALID_OPERATION,message:L({key:k.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(I.ROOM_DESTROY,{room:this})}schedule(e,t){return p(this,null,function*(){var o,n,a;let r=x();try{let{isCached:c,result:l,detailCost:h}=yield Wl({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Me,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=c,this._log.info(`schedule cache:${+c} ${Tt(l,{keysToExclude:["username","credential"]})}`),c&&T.once(I.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=v(v({},this.scheduleResult),l),Q((o=l.config)==null?void 0:o.retryCount)&&Lc(l.config.retryCount),K((n=l.config)==null?void 0:n.loggerDomain)&&dr(l.config.loggerDomain),this.videoDecodeFallbackType=((a=l.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,T.emit(I.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:h}),N.addSuccessEvent({key:521700,cost:x()-r,split:50})}catch(c){throw N.addFailedEvent({key:521700,error:c}),c}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};var Lp=Be(Qe());var Ru=Be(mu());var Ap=s=>{let i=Ae(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 Rp(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 zT(){return p(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=Ae(i.sdp),t=Rp(e.media[0]);return s.close(),t})}var Cp=(s,i)=>p(void 0,null,function*(){var c;let e=Ae(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(l=>({id:l.value,uri:l.uri}))),o.ext&&(t.video.extensions=o.ext.map(l=>({id:l.value,uri:l.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channels:r.rtp[0].encoding,rtcpfb:[],rtx:0};(c=r.rtcpFb)==null||c.forEach(({payload:l,type:h,subtype:u})=>{if(l===n.payload){let f={id:h,params:[]};u&&f.params.push(u),n.rtcpfb.push(f)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...Rp(o)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),t.video.decoders=(yield zT()).filter(l=>["h264","vp8"].includes(l.codec.toLocaleLowerCase())),t}),yp=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=Ae(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(Cu({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),Rt(o)},Cu=({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){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{Hr(o,a)})}else{let n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Hr(o,a)}return o},Hr=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.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 QT(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 YT(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 KT(s){s.type===m.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function ZT(s){s.type===m.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var bp=(s,i,e)=>{let t=Ru.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===m.AUDIO||r.type===m.VIDEO)&&(YT(r),KT(r),ZT(r),QT(r),r.type===m.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Hr(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(c=>Hr(r,c))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),Ru.default.write(t)};var Np=Be(Qe());var gc=class extends Np.EventEmitter{constructor(e){super();this.room=e;d(this,"mainFpsHealth",1);d(this,"mainBitrateHealth",1);d(this,"badMainBitrateHealthCount",0);d(this,"lastEmitBadHealthTime",0);d(this,"log");!he&&Ye&&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)}};d(gc,"EVENT_BAD_HEALTH","bad_health");var vp=gc;function Dp({seiMessageList:s,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let o=t;i?audioEncodePipeline.forEach(n=>{o=n({frame:o})}):videoEncodePipeline.forEach(n=>{o=n({frame:o,seiMessageList:s,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:o.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(o)}})}function Op(s,i,e){return new TransformStream({transform(t,r){let o=t;videoDecodePipeline.forEach(n=>{o=n({frame:o,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:s,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s,streamType:i})}})}),r.enqueue(o)}})}function Mp(s){let i=[Pi],e=[eu,Kl,Zl,Yl,Dp,Op],t=()=>{let l=[],h=[],u=[];self.onmessage=f=>{f.data.type==="sei"&&(f.data.isMain?(l.push(f.data.data),f.data.small&&u.push(f.data.data)):h.push(f.data.data))},self.onrtctransform=f=>{let{options:g}=f.transformer,D=g.isReceiver?Op(g.userId,g.streamType,g.isAudio):Dp({isAudio:g.isAudio,seiMessageList:g.isMain?g.small?u:l:h,isMain:g.isMain});f.transformer.readable.pipeThrough(D).pipeTo(f.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
|
|
111
|
+
const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
|
|
112
|
+
const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
|
|
113
|
+
const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
114
|
+
`)}
|
|
115
|
+
${e.map(l=>l.toString()).join(`
|
|
116
|
+
`)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var mi=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(mi||{}),Pp=0,wp=!1,eE=new Set,tE=s=>Pp>2&&!wp&&eE.size===0&&s,iE=1,Ft=class extends Lp.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableCustomMessage");d(this,"_log");d(this,"_downlinkMIDMap",new Map);d(this,"_downlinkMIDUserIDMap",new Map);d(this,"_reconnectionTimer",-1);d(this,"reconnectionCount",0);d(this,"clientAbility");d(this,"_serverAbility",null);d(this,"addDownlinkQueue",new Set);d(this,"removeDownlinkQueue",new Set);d(this,"_parsedAnswer",null);d(this,"_updateSDPPromise",null);d(this,"_waitForPCConnectedPromise");d(this,"clearConnectTimeout");d(this,"_isSDPLogged",!1);d(this,"enableInsertableStreams",!1);d(this,"insertableStreamsAbortMap",new Map);d(this,"receiverRemoteTrackMap",new WeakMap);d(this,"scriptTransformWorker");d(this,"_isRelayTried",!1);d(this,"_rttOverCount",0);d(this,"originOffer",null);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=R.createLogger({id:`spc${iE++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Oi?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?Ap(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(){sa&&(this.scriptTransformWorker=Mp({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),e.data.type==="dump"&&this.emit("dump",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}getPeerConnectionConfig(e){var o;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(o=this._peerConnection)==null?void 0:o.getConfiguration().encodedInsertableStreams;return Nn(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return p(this,null,function*(){var r;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let o=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${o}`),o==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():o==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),N.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):o==="failed"&&N.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var n;let o=((n=this._peerConnection)==null?void 0:n.signalingState)||"";this._log[o==="closed"?"debug":"info"](`signaling state: ${o}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=o=>this.emit("track",o),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=o=>{let n=new bu(o.data);this.emit("data_channel_msg",{data:n})},this._datachannel.onerror=o=>{this._log.warn("datachannel error",o)}),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}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield Cp(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:o}=this;o&&(this._log.debug(`dtls state: ${o.state}`),o.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():o.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),N.addSuccessEvent({key:521707}),this.clientAbility}catch(o){throw N.addFailedEvent({key:521707,error:o}),this._log.error(`initialize failed ${o}
|
|
117
|
+
offer: ${t==null?void 0:t.sdp}`),o}})}setIceServers(e){return p(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",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 p(this,null,function*(){var r,o,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=x(),c={type:"answer",sdp:yp({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(c),yield this.waitForPeerConnectionConnected();let l=((o=this._room.scheduleResult.config)==null?void 0:o.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");l&&this.setPriority(l),t||N.addSuccessEvent({key:521703,cost:x()-a})}catch(a){let c=a instanceof y&&a.code===S.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&(N.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return p(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(ye.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=v({ability:t},e),o=yield this._signalChannel.sendWaitForResponse({command:Y.REBUILD_PEER_CONNECTION,responseCommand:G.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(o.data.code!==0)throw new y({code:o.data.code,message:o.data.message});yield this.connect(o.data.data.ability,!0),N.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),T.emit(I.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=vt(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Ii(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>=gi()&&this._log.warn(`SDK has tried reconnect for ${gi()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return p(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(ye.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===me.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var o;let t=((o=this._peerConnection)==null?void 0:o.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===me.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===me.FAILED||e.target.connectionState===me.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===me.CONNECTED||e.target.connectionState===me.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),T.emit(I.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 yt;let e=null;return!Zi()||this._peerConnection.getSenders().length===0?yt:(e=this._peerConnection.getSenders()[0].transport,!Cr()||this._peerConnection.getReceivers().length===0?yt:e?e.state:yt)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(mi.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return p(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(Ki(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&&Sn(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:L({key:k.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{T.off(I.LEAVE_SUCCESS,o,this),this.off(mi.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new y({code:S.API_CALL_TIMEOUT,message:"connection timeout"});Pp+=1,tE(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),wp=!0,this.emit(mi.FIREWALL_RESTRICTION)),t(c)},zs);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},T.on(I.LEAVE_SUCCESS,o,this),this.on(mi.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 p(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(f=>f.direction==="inactive").slice(0,3).map(f=>(f.direction=m.TRANSCEIVER_DIRECTION_RECVONLY,Number(f.mid)));this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(f=>{var g;return(g=f.ssrcs)==null?void 0:g.find(D=>{var _;return(_=D.value)==null?void 0:_.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(f=>Number(f.mid)===Number(o[0])),c=this._parsedAnswer.media.find(f=>Number(f.mid)===Number(o[1])),l=this._parsedAnswer.media.find(f=>Number(f.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 f=Cu({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:Ae(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(f)),l=JSON.parse(JSON.stringify(f)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}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}`}],l.direction=m.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${h}-aux`;l.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}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(f=>f.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return p(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=Ae(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 p(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(yo()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let h=a[l],u;l===0&&t?u=t:l===1&&r?u=r:l===2&&o?u=o:l===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=Ae(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=Ae(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=Ae(this._peerConnection.remoteDescription.sdp));let a=oe?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:oe?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:oe?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:oe?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:oe?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:oe?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:oe?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:oe?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:oe?o*1e3:o}]);let c={type:"offer",sdp:Rt(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)}setDegradationPreference(e,t,r){if(Ye&<<83||Se&&td(Xt,"12.1")||oe&&io<138)return;let o=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),o.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),o.degradationPreference=n,e.setParameters(o).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=Rt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>p(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)}
|
|
118
|
+
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)}
|
|
119
|
+
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:l,currentDirection:h,direction:u,stopped:f})=>({mid:l,currentDirection:h,direction:u,stopped:f})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return p(this,null,function*(){if(!oe||!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===Z.INACTIVE&&n===Z.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===Z.SENDONLY&&n===Z.INACTIVE&&(this._parsedAnswer.media[o].direction=Z.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return Ae(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=bp(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return p(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=[],Hr(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return p(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(l=>l.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(l=>l.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=[],Hr(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(){this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._waitForPCConnectedPromise=null,this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Jt(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),l=(this._isRelayTried||c>n)&&o>a;if(!l){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: ${l} 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 p(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.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};b([Aa("reconnect")],Ft.prototype,"startReconnection",1),b([Li(e=>e.userId)],Ft.prototype,"addDownlink",1),b([Li(e=>e)],Ft.prototype,"removeDownlink",1),b([ni(!0)],Ft.prototype,"updateSDP",1),b([at(521712,!1)],Ft.prototype,"setOffer",1),b([at(521713,!1)],Ft.prototype,"setAnswer",1);var yu=class{constructor(i){d(this,"tag");d(this,"len");d(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},bu=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new yu(new Uint8Array(i).slice(t,t+2+2+o).buffer);r.push(n),t+=4+o}r.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},kp=new Set;function Gr(){let s=Math.floor(Math.random()*4294967296);return kp.has(s)?Gr():(kp.add(s),s)}var xp=Be(Qe());var Wr=class extends xp.default{constructor(e){super();d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_currentState","DISCONNECTED");d(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(I.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 sn=class extends Wr{constructor(e){super(w(v({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(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});d(this,"_flag",0);d(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]} ${bi()} ${Er()}`),N.addCount({key:521e3});else{this._checkPublishStateTimeoutId=re.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}re.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&&(Zt()?(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 publishingState(){let{publishState:e}=this,t=v({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&Ji),bigVideo:!!(this.flag&Wi),smallVideo:!!(this.flag&js),auxVideo:!!(this.flag&lr)}}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;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"),this.singlePC.switchVideoEncoder("vp8")))}publish(o){return p(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,h,u,f,g,D,_;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:L({key:k.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),he&&ds()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(gt["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:Y.SPC_PUBLISH,responseCommand:G.SPC_PUBLISH_RESULT,data:w(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,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:C}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],C,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((h=this.localAuxAudioTrack)==null?void 0:h.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(g=(f=this.localMainVideoTrack)==null?void 0:f.small)==null?void 0:g.bitrate,auxVideo:(D=this.localAuxVideoTrack)==null?void 0:D.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(_=this._room.scheduleResult.config)!=null&&_.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!mt())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(),l=[],h=[],u=(g,D,_)=>{var M,ne;let C=c[D].sender.replaceTrack(_);h.push(D),(M=this.singlePC)!=null&&M.enableInsertableStreams&&C.then(()=>this.createEncodedStreams(c[D].sender,g)),(ne=this.singlePC)!=null&&ne.scriptTransformWorker&&this.initSenderTransfrom(c[D].sender,g),l.push(C)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,o?3:1,n),r&&u(8,2,r);let f=this.singlePC.setTransceiverDirection(Z.SENDONLY,h);return l.push(f),Promise.all(l)}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:(l,h)=>{var f;let u=this.getTrackByMediaType(t);h.enqueue((f=this.singlePC)!=null&&f.isUsingH264&&u?u.encodeFrame(l,t===8):l)}}),o):r.readable).pipeTo(r.writable,o).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}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 p(this,null,function*(){var r;if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();if(e){if(this._room.videoManager.smallTrack){let{sender:o}=t[2];(r=this.singlePC)!=null&&r.enableInsertableStreams&&this.createEncodedStreams(o,8),yield o.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(Z.SENDONLY,[2])}}else yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(Z.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 p(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=w(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=w(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(Z.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 p(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:G.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:G.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){var o;this._mediaSettings.videoCodec=((o=this.singlePC)==null?void 0:o.videoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),ei){if(e&&e.outMediaTrack){let n=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=n.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=n.sampleRate||0}if(t&&t.outMediaTrack){let n=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=t;this._mediaSettings.videoWidth=n.width/a||0,this._mediaSettings.videoHeight=n.height/a||0,this._mediaSettings.videoFps=n.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let n=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=r;this._mediaSettings.auxVideoWidth=n.width/a||0,this._mediaSettings.auxVideoHeight=n.height/a||0,this._mediaSettings.auxVideoFps=n.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:G.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return p(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`),Zt()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return p(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&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===Z.INACTIVE&&(yield this.singlePC.setTransceiverDirection(Z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return p(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`),Zt()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return p(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(Z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return p(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 p(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:Y.UPDATE_MUTE_STAT,responseCommand:G.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&T.emit(I.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===ur?(this._log.error(we.NOT_SUPPORTED_H264ENCODE),new y({code:S.NOT_SUPPORTED_H264,message:L({key:k.NOT_SUPPORTED_H264ENCODE})})):new y({code:S.UNKNOWN,message:L({key:k.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return p(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([Ze(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],sn.prototype,"publish",1),b([Ze(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],sn.prototype,"unpublish",1);var Nu=sn;function Up(s){return Object.keys(s).filter(i=>s[i])}var Vs=class extends Wr{constructor(e){super(w(v({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});d(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new wi(this._room,this),this.remoteVideoTrack=new ui(this._room,this),this.remoteAuxiliaryTrack=new Ns(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 Si(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,u;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 l=this.remoteAudioTrack;c===m.VIDEO?l=this.remoteVideoTrack:c===m.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(h=this.singlePC)==null||h.receiverRemoteTrackMap.set(o,l),(u=this.singlePC)!=null&&u.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===m.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(o),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,o={abortController:r,enqueue:n=>{var c,l;let a=(c=this.singlePC)==null?void 0:c.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let c=o.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}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 p(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${Up(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"),Ye&<<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return p(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} [${Up(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=Y.UNSUBSCRIBE,n=G.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Y.SUBSCRIBE_CHANGE,n=G.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:L({key:k.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(){return p(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return p(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:Gr(),bigVideoSsrc:Gr(),bigVideoRtxSsrc:Gr(),auxVideoSsrc:Gr(),auxVideoRtxSsrc:Gr()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:l}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:l},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:Y.SPC_SUBSCRIBE,responseCommand:G.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{if(!oa)return;let{main:r,aux:o}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=o}=this._room.scheduleResult.config||{};(Q(n)||Q(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return p(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&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!oa||!this.singlePC||!this._peerConnection||Ri(e)&&Ri(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return Q(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),Q(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Ri(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||Ri(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&Ri(t)||!c&&Ri(e))return;let l=c?t||0:e,h=(a.jitterBufferTarget||0)+100;h>l||(a.jitterBufferTarget=h,this._log.debug(`set ${c?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${h} -> ${l}`))}),!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([ni(),z(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new y({code:S.API_CALL_ABORTED,message:L({key:k.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],Vs.prototype,"subscribe",1),b([ni()],Vs.prototype,"unsubscribe",1),b([Li(()=>"jitter")],Vs.prototype,"setJitterBufferDelay",1);var Vp=Vs;function Bp(){return z(s=>function(...i){return p(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 Fp(){return z(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var $p=Be(Qe());function rE(){return Math.floor(Math.random()*16383)}var Ec=class Ec extends $p.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;d(this,"log");d(this,"cmdIdSeqMap",new Map);d(this,"messageMap",new Map);this.log=R.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(G.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)||rE(),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(Y.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)>Ec.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),Ii(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((l,h)=>l.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)}};d(Ec,"SEQ_INTERVAL",300);var Tc=Ec;var{isString:Hp,isUndefined:Bs,getNetworkType:sE,isEmpty:on}=dt,$t=class extends _c{constructor(e){super(e);d(this,"_businessInfo");d(this,"userManager");d(this,"_version");d(this,"_heartbeat",-1);d(this,"_lastHeartBeatTime",-1);d(this,"_stats");d(this,"_joinTimeout",-1);d(this,"_firstPublishedList",null);d(this,"_joinReject",null);d(this,"_isRelayChanged",!1);d(this,"sdpSemantics");d(this,"signalChannel",null);d(this,"uplinkConnection",null);d(this,"singlePC",null);d(this,"enableSPC",fs);d(this,"_changeBigSmallRecords",new Map);d(this,"networkQuality");d(this,"_iceTransportPolicy");d(this,"forceRelay",!1);d(this,"_turnServers",[]);d(this,"_iceServersFromJoin");d(this,"_syncUserListInterval",-1);d(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});d(this,"enableSEI",!1);d(this,"_enableAudioVolumeEvaluation",!1);d(this,"_audioVolumeIntervalId",0);d(this,"_enableMultiAuxStream",!1);d(this,"_pureAudioPushMode",!1);d(this,"_customMessageManager");d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);this._stats=new en(this,this._log),this.userManager=new Ha(this.userId,this._log),this._version=Me,this.sdpSemantics=qr,Bs(e.sdpSemantics)?ti.isUnifiedPlanDefault()&&(this.sdpSemantics=qi):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${sE()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Bs(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&fs,!Bs(e.enableSPC)&&fs&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new vp(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 p(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=Mu(n,[]);T.emit(I.REMOTE_PUBLISH_STATE_CHANGED,v({room:this},o)),this.emit("remote-publish-state-changed",v({},o))}),this.joinParams=e,new Promise((o,n)=>p(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 l=x();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),N.addSuccessEvent({key:521708,cost:x()-l}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){N.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return p(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Ft({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",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)=>p(this,null,function*(){var c,l,h;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(ye.SETUP_FAILED,u=>{this.clearJoinTimeout(),T.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),o(u)}),ge((l=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:l.singlePC)&&fs&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);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:ad(),netType:pr(),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&&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:L({key:k.JOIN_ROOM_TIMEOUT})}))},a),T.emit(I.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Y.SPC_JOIN_ROOM:Y.JOIN_ROOM,n),this.signalChannel.once(G.JOIN_ROOM_RESULT,u=>p(this,null,function*(){this.clearJoinTimeout();let{code:f,message:g,data:D,tinyId:_}=u.data;T.emit(I.JOIN_RECEIVED_CMD_RES,{room:this,code:f}),f===0?(this._log.info("Join room success, start heartbeat"),_&&(this.tinyId=_),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=D.publishers,this._iceServersFromJoin=D.iceServer?[D.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var C;(C=this.singlePC)==null||C.connect(w(v({},D.ability),{useVp8:D.ability.useVp8||!!e.useVp8})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${f} error: ${g}`),o(new y({code:S.JOIN_ROOM_FAILED,extraCode:f,message:L({key:k.JOIN_ROOM_FAILED,data:{error:g,code:f}})})))}))}))}reJoin(){return p(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(w(v({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),te.logSuccessEvent({userId:this.userId,eventType:rt.REJOIN}),this.singlePC){let r=o=>{var n;o.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(mi.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof Nu&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(mi.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Zo&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),te.logFailedEvent({userId:this.userId,eventType:rt.REJOIN,error:e}),this.emit("error",new y({code:S.JOIN_ROOM_FAILED,message:L({key:k.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return p(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||tp(this.userId),o=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId),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):(r&&r.close(),this.signalChannel=new Ls({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new Tc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Us({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Us.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),Ge(this,this.signalChannel).add(ye.CONNECTION_STATE_CHANGED,a=>{T.emit(I.SIGNAL_CONNECTION_STATE_CHANGED,v({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(ye.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(G.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:h}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:h})}).add(G.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(G.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(G.CLIENT_BANNED,a=>{let c=a.data.data,{reason:l}=c;if(te.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}),this.signalChannel.once(ye.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,T.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this})}),T.emit(I.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&T.emit(I.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||be(this)}leave(){return p(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),T.emit(I.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Y.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=re.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),re.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return p(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?Sm(this.userId):[],o=w(v({str_sdk_version:Ws,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:pr()},t.msg_device_info)});if(this.heartbeatReport=o,T.emit(I.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Y.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",w(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!==Dc).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(I.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 Zo&&(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?Vp:_u)({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",w(v({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=re.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){re.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:Y.GET_USER_LIST,responseCommand:G.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:l})=>({userId:a,tinyId:c,role:l}));throw L({key:k.SIGNAL_RESPONSE_FAILED,data:{signalResponse:G.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||!lu)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)===me.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof it&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===me.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return p(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),te.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Zo({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 _u({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:L({key:k.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),re.clearTask(this._audioVolumeIntervalId))}switchRole(e){return p(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:Y.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:G.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:L({key:k.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:L({key:k.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return p(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof St&&(c instanceof ci?r.audio=c:t.audio=c),c instanceof Je&&(c instanceof ct&&c.mediaType===2?r.video=c:t.video=c)});let o=on(t),n=on(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new Nu({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Zo({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",w(v({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let l=c.getCode();l!==S.ICE_TRANSPORT_ERROR&&(l===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 p(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 St&&(o instanceof ci?r.audio=o:t.audio=o),o instanceof Je&&(o instanceof ct&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");on(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),on(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||!Od()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&T.emit(I.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return p(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return p(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 p(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(I.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${cc(n)}] prev: [${cc(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(I.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:L({key:k.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(c)):(c=new y({code:a,message:L({key:k.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(c)),c}})}unsubscribe(...e){return p(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(I.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,re.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),T.emit(I.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&re.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=re.run("intervalInWorker",()=>{var o;Nr.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!Nr.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)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return p(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=re.run("intervalInWorker",()=>p(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:c}=this.uplinkConnection;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(c.volume=l.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),re.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(!Md||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;Q(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&Q(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return p(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 p(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 p(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 p(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 p(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(dt.getTurnServer(o))):dt.isPlainObject(e)&&r.push(dt.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:G.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:G.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.START_PUBLISH_TENCENT_CDN:Y.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?G.START_PUBLISH_TENCENT_CDN_RES:G.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.STOP_PUBLISH_TENCENT_CDN:Y.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?G.STOP_PUBLISH_TENCENT_CDN_RES:G.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:G.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Y.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:G.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}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=dt.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 p(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:l}=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=l-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 ${jr-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=jr}catch(u){this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video failed. count ${jr-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:jr};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`);let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(Hp(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Bs(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new y({code:S.INVALID_PARAMETER,message:L({key:k.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(!Bs(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:L({key:k.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Bs(e.userDefinePushArgs))if(Hp(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:L({key:k.INVALID_USER_DEFINE_PUSH_ARGS})});on(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return p(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Oi)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield 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([pe(["left",H.INIT],"joined"),ot({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),Vt(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),Qm()],$t.prototype,"join",1),b([pe("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Ym(),Aa("leave room"),ko({fnName:"publish",validateArgs:!1}),ko({fnName:"unsubscribe",validateArgs:!1})],$t.prototype,"leave",1),b([ni(),Bp(),ot({settings:{retries:gi,timeout:e=>vt(e)},onError(e,t,r){var o;(o=e.message)!=null&&o.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),T.emit(I.PUBLISH_FAILED,{room:this}))}})],$t.prototype,"publish",1),b([ko({fnName:"publish"}),nm("api-call"),ni(),Fp(),Ze(function(){var e,t;this.localTracks.size===0&&Zi()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],$t.prototype,"unpublish",1),b([Ea(e=>{if(e.code!==S.API_CALL_ABORTED)throw e}),Li(e=>e.userId)],$t.prototype,"replaceTrack",1),b([Li((...e)=>e[0].userId),ya(),Km(),ot({settings:{retries:gi,timeout:e=>vt(e)},onError(e,t,r,o){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),T.emit(I.SUBSCRIBE_FAILED,{room:this,remoteTracks:o}))}})],$t.prototype,"subscribe",1),b([ko({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),Li((...e)=>e[0].userId)],$t.prototype,"unsubscribe",1);cr.create=cr._create.bind(cr,$t);var k1=cr;export{k1 as default};
|